#!/bin/bash

# Script d'assistance à la modification des images du thème Clearlooks-Phénix
# dans le but de créer une variante de couleurs.
#
# Placer ce script à la racine du thème (c'est-à-dire au même emplacement que
# le fichier «index.theme»), personnaliser la section «Variables à modifier.»
# et lancer le script dans une console:
#
# $ bash images.sh

########################################################################
##
## Variables à modifier.
##
########################################################################

# Variation de la luminosité, de la saturation et de la teinte des fichiers PNG
# pour le style «hover». Pour plus de détails, voir le lien suivant:
# <http://www.imagemagick.org/script/command-line-options.php#modulate>.
pngVariation=100,100,300

# Liste des fichiers SVG.

# Fichiers SVG à modifier pour une variante de couleurs.

# Fichier «border-focused.svg».
svgBfCouleurBordure=4b6e99
svgBfCouleurBordureInterne=c8daef
svgBfCouleurBordureExterneBas=ffffff

# Fichier «border-focused-ptb.svg».
svgBfPtbCouleurBordure=869bb7
svgBfPtbCouleurBordureInterne=cccccc

# Fichier «border-focused-switch.svg».
svgBfScouleurBordure=4b6e99
svgBfScouleurBordureExterneBas=ffffff

# Fichiers SVG ne devant pas nécessairement être modifiés pour une variante
# de couleurs.

# Fichier «border.svg».
svgBcouleurBordure=918e8c
svgBcouleurBordureExterneBas=ffffff

# Fichier «border-error.svg».
svgBeCouleurBordure=9b3636
svgBeCouleurBordureExterneBas=ffffff

# Fichier «border-gnome-panel-button.svg».
svgBgPbCouleurBordure=918e8c

# Fichier «border-inline-button.svg».
svgBiBcouleurBordure=918e8c
svgBiBcouleurBordureExterneBas=ffffff

# Fichier «border-insensitive.svg».
svgBiCouleurBordure=a9a5a2
svgBiCouleurBordureExterneBas=ffffff

########################################################################
##
## Code principal. Ne pas modifier.
##
########################################################################

# Dépendances.

if ! type convert > /dev/null 2>&1; then
	echo "Veuillez installer le paquet «imagemagick»" >&2
	exit 1
fi

if ! type sed > /dev/null 2>&1; then
	echo "Veuillez installer le paquet «sed»" >&2
	exit 1
fi

# Dossier de sauvegarde des images modifiées.

dossierSauv=gtk-3.0/img/modif
i=0

while ! mkdir "$dossierSauv" > /dev/null 2>&1 && ((i < 100)); do
	((++i))
	dossierSauv=gtk-3.0/img/modif-$i
done

if [[ ! -d $dossierSauv ]]; then
	echo "Impossible de créer un dossier de sauvegarde pour y déplacer les images modifiées." >&2
	exit 1
fi

# Modification des images PNG.

png=(
	gtk-3.0/img/checkbox-checked-hover.png
	gtk-3.0/img/checkbox-mixed-hover.png
	gtk-3.0/img/checkbox-unchecked-hover.png
	gtk-3.0/img/menuitem-checkbox-checked-hover.png
	gtk-3.0/img/menuitem-checkbox-hover.png
	gtk-3.0/img/menuitem-checkbox-mixed-hover.png
	gtk-3.0/img/menuitem-radio-checked-hover.png
	gtk-3.0/img/menuitem-radio-hover.png
	gtk-3.0/img/radio-checked-hover.png
	gtk-3.0/img/radio-mixed-hover.png
	gtk-3.0/img/radio-unchecked-hover.png
)

for image in "${png[@]}"; do
	convert "$image" -modulate "$pngVariation" "$dossierSauv/${image##*/}"
done

# Modification des images SVG.

couleur1=918e8c
couleur2=ffffff

if [[ $svgBcouleurBordure != $couleur1 \
   || $svgBcouleurBordureExterneBas != $couleur2 ]]; then
	fichier=gtk-3.0/img/border.svg
	cp "$fichier" "$dossierSauv"
	sed -i "s/#$couleur1;/#$svgBcouleurBordure;/" "$dossierSauv/${fichier##*/}"
	sed -i "s/#$couleur2;/#$svgBcouleurBordureExterneBas;/" "$dossierSauv/${fichier##*/}"
fi

couleur1=9b3636
couleur2=ffffff

if [[ $svgBeCouleurBordure != $couleur1 \
   || $svgBeCouleurBordureExterneBas != $couleur2 ]]; then
	fichier=gtk-3.0/img/border-error.svg
	cp "$fichier" "$dossierSauv"
	sed -i "s/#$couleur1;/#$svgBeCouleurBordure;/" "$dossierSauv/${fichier##*/}"
	sed -i "s/#$couleur2;/#$svgBeCouleurBordureExterneBas;/" "$dossierSauv/${fichier##*/}"
fi

couleur1=4b6e99
couleur2=c8daef
couleur3=ffffff

if [[ $svgBfCouleurBordure != $couleur1 || $svgBfCouleurBordureInterne != $couleur2 \
   || $svgBfCouleurBordureExterneBas != $couleur3 ]]; then
	fichier=gtk-3.0/img/border-focused.svg
	cp "$fichier" "$dossierSauv"
	sed -i "s/#$couleur1;/#$svgBfCouleurBordure;/" "$dossierSauv/${fichier##*/}"
	sed -i "s/#$couleur2;/#$svgBfCouleurBordureInterne;/" "$dossierSauv/${fichier##*/}"
	sed -i "s/#$couleur3;/#$svgBfCouleurBordureExterneBas;/" "$dossierSauv/${fichier##*/}"
fi

couleur1=869bb7
couleur2=cccccc

if [[ $svgBfPtbCouleurBordure != $couleur1 \
   || $svgBfPtbCouleurBordureInterne != $couleur2 ]]; then
	fichier=gtk-3.0/img/border-focused-ptb.svg
	cp "$fichier" "$dossierSauv"
	sed -i "s/#$couleur1;/#$svgBfPtbCouleurBordure;/" "$dossierSauv/${fichier##*/}"
	sed -i "s/#$couleur2;/#$svgBfPtbCouleurBordureInterne;/" "$dossierSauv/${fichier##*/}"
fi

couleur1=4b6e99
couleur2=ffffff

if [[ $svgBfScouleurBordure != $couleur1 \
   || $svgBfScouleurBordureExterneBas != $couleur2 ]]; then
	fichier=gtk-3.0/img/border-focused-switch.svg
	cp "$fichier" "$dossierSauv"
	sed -i "s/#$couleur1;/#$svgBfScouleurBordure;/" "$dossierSauv/${fichier##*/}"
	sed -i "s/#$couleur2;/#$svgBfScouleurBordureExterneBas;/" "$dossierSauv/${fichier##*/}"
fi

couleur1=918e8c

if [[ $svgBgPbCouleurBordure != $couleur1 ]]; then
	fichier=gtk-3.0/img/border-gnome-panel-button.svg
	cp "$fichier" "$dossierSauv"
	sed -i "s/#$couleur1;/#$svgBgPbCouleurBordure;/" "$dossierSauv/${fichier##*/}"
fi

couleur1=918e8c
couleur2=ffffff

if [[ $svgBiBcouleurBordure != $couleur1 \
   || $svgBiBcouleurBordureExterneBas != $couleur2 ]]; then
	fichier=gtk-3.0/img/border-inline-button.svg
	cp "$fichier" "$dossierSauv"
	sed -i "s/#$couleur1;/#$svgBiBcouleurBordure;/" "$dossierSauv/${fichier##*/}"
	sed -i "s/#$couleur2;/#$svgBiBcouleurBordureExterneBas;/" "$dossierSauv/${fichier##*/}"
fi

couleur1=a9a5a2
couleur2=ffffff

if [[ $svgBiCouleurBordure != $couleur1 \
   || $svgBiCouleurBordureExterneBas != $couleur2 ]]; then
	fichier=gtk-3.0/img/border-insensitive.svg
	cp "$fichier" "$dossierSauv"
	sed -i "s/#$couleur1;/#$svgBiCouleurBordure;/" "$dossierSauv/${fichier##*/}"
	sed -i "s/#$couleur2;/#$svgBiCouleurBordureExterneBas;/" "$dossierSauv/${fichier##*/}"
fi

# Fin du script.

echo "Les images ont été modifiées."

