#!/bin/bash
# script de gestion de configuration pour Qsynth
#	Daniel Génon 04 11 2012  Revin
#
#	Ce script sauvegarde ou recharge une config personnelle pour QSynth
#
#	J'ai placé le script dans mon répertoire perso etj'ai créé un lanceur dans le menu
#			Applications>son&video : avec comme type "application dans un terminal "
#	
#	Pour utiliser ce script :
#
#		si vous tapez sur Enter, la dernière config est chargée (ce qui est inutile actuellement)
#		si vous tapez L les fichiers sont listés et retour à la saisie
#		si vous taper C vous enregistrer la dernière config (copie sous le nom que vous donnerez)
#		si vous tapez S vous sortez
#		sinon tapez le nom du fichier config souhaité ( sans le suffixe .cgq ) est il sera chargé
#
#	le message d'attente  --entrez pour sortir : -- sert à lire les messages s'il y a un problème
#
#	Ensuite vous démarrez Qsynth
#

echo "Ce script permet d'activer une configuration pour Qsynth"
##########################################################
# Déclaration des variables modifiables par l'utilisateur
##########################################################
# chemin où sont stockés les fichier config perso de Qsynth
	chemin_config=~/musique/qsynth/

##########################################################
# Déclaration des variables pour info
##########################################################
# chemin où est stocké le fichier configuration de Qsynth
	chemin_qsynth=~/.config/rncbc.org/
	nom_config_qs=Qsynth.conf
	nom_config_qs_svd=Qsynth.cvix
	ancien_config=N
	fictest=$chemin_qsynthtoto.txt
	conforigine=$chemin_qsynth$nom_config_qs
	confcopie=
	confindexee=
	declare -i indexfic=0

##########################################################
#
# ZONE des Fonctions (voir plus bas le démarrage du shell)
#
##########################################################
Lister_Les_Configurations()
{
	declare -i lgc=${#chemin_config}
	declare -i lgf=0
	declare -i nofic=0

	valaffiche=
	echo
	echo liste des fichiers configurations musique
	echo
	for k in $( ls -1 $chemin_config*.cgq )
		do
			nofic+=1
			valaffiche=${k:lgc}
			lgf=${#valaffiche}-4
			echo $nofic : ${valaffiche:0:lgf}
		done
	echo
	echo entrez le chiffre ou le nom
	echo
}

Recuperer_Config_par_index()
{
	declare -i lgc=${#chemin_config}
	declare -i lgf=0
	declare -i nofic=0
	valaffiche=
	confindexee=
	for k in $( ls -1 $chemin_config*.cgq )
		do
			nofic+=1
			if [ $nofic = $indexfic ];
				then
				valaffiche=${k:lgc}
				lgf=${#valaffiche}-4
				confindexee=${valaffiche:0:lgf}
			fi
		done
	if [ "$confindexee" = "" ];
		then
			echo "pas de fichier associé a "$indexfic
		else
			echo "le fichier "$confindexee" est choisi"
	fi

}

CopierConfiguration()
{
# saisir le nom de la config
	Lister_Les_Configurations
	echo "Entrez le nom de la copie à créer (rien=sortir) : "
	echo -n "ou le numero index de la liste pour modifier un existant : "
	read nomconfig
	case $nomconfig in
 		 [0-9])
		indexfic=nomconfig
		Recuperer_Config_par_index
		nomconfig=$confindexee
		;;
	esac
	if [ $nomconfig != "" ];
		then
		confcopie=$chemin_config$nomconfig.cgq
		cp -T $conforigine $confcopie
	fi
}

#####################################
#
#	Démarrage du shell Qsynth
#
#####################################

nomconfig=
# saisir le nom de la config
while [ "$nomconfig" = "" ];
do
	echo "Entrez le nom de la config a utiliser"
	echo -n "(rien=dernière, l=lister, c=copier la dernière, s=sortir) : "
	read nomconfig
		case "$nomconfig" in 
		  "C" | "c"  )
			CopierConfiguration
			exit 0
			;;
		  "S" | "s"  )
			exit 0
			;;
		  "L" | "l"  )
			Lister_Les_Configurations
			nomconfig=
			;;
		  "" )
			ancien_config=O
			nomconfig=O
			;;
		[0-9] )
			indexfic=nomconfig
			Recuperer_Config_par_index
			nomconfig=$confindexee
			;;
		   * )
			echo
			;;
		esac
done

#test qsynth en cours de process
ps -C qsynth >fictest
{
	read nomtest
	read nomtest
}<fictest

if [ "$nomtest" != "" ];
	then
		echo "Qsynth est déjà lancé"
		echo -n "Détruire le process Qsynth"
		echo -n "(la config en cours ne sera pas sauvée) O/N : "
		read nomtest
		if [ "$nomtest" = "O" ];
			then
				killall qsynth
			else
				exit 0
		fi
fi

rm -f fictest

if [ $ancien_config != "O" ];
	then
# composer le nom du fichier config
		nom_fichier_config=$chemin_config$nomconfig.cgq
#tester l'existence du fichier
		if [ -e "$nom_fichier_config" ];			
			then
#sauvegarde de la config de la dernière sortie de qsynth
				confcopie=$chemin_qsynth$nom_config_qs_svd
				cp -T $conforigine $confcopie
#copie de la config perso en config qsynth
				confcopie=$chemin_config$nomconfig.cgq
				cp -T $confcopie $conforigine
			else
				echo "La configuration personnelle n'est pas trouvée"
		fi
	else
		echo "Démarrer ancienne config"
fi
# 2 lignes pour tester le script
#echo "entrez pour sortir : "
#read dehors
exit 0

