#!/bin/bash
#**********************************#
# NOM :         
# FONCTION :    
VERSION="alpha"
# NOTES DE VERSIONS
#
#**********************************#
function msgbox {
    zenity --info --text="$@"
}

#**********************************#
# function XXXXXXX {}
# echo "$(XXXXXXX)"

# exit

#**********************************#
function PROGRESSAVANCEMENT {
# ZENITY PROGRESS  POURCENTAGE
read -p "Question 1"
echo "25"
read -p "Question 2"
echo "50"
read -p "Question 3"
echo "75"
read -p "Question 4"
echo "100"
}
PROGRESSAVANCEMENT | zenity --progress --auto-close

# exit

#**********************************#
function ListColonnesEtCaseACocher {
    # 2 colonnes et case à cocher
# zenity --list --checklist --separator="\n" \
# --text "Choisir une couleur et un véhicule" \
# --column="" \
# --column="Couleur" \
# --column="Véhicule" \
# --print-column="2,3" FALSE Noir Vélo FALSE Blanc Voiture FALSE Gris Avion > >(
# while read ; do
# [ "${REPLY}" == "Vélo" ] && zenity --info --text "Vous avez choisi vélo."
# [ "${REPLY}" == "Noir" ] && zenity --info --text "Vous avez choisi noir."
# done )

zenity --list \
--checklist --separator="\n" \
--text "Choisir une couleur et un véhicule" \
--column="" --column="fichier" \
--print-column="2,3" FALSE Noir FALSE Blanc FALSE Gris > >(
while read ; do
echo "${REPLY}"
done )
exit

}
echo "$(ListColonnesEtCaseACocher)"


# exit 0

#**********************************#
function PoliceDeCaractere {
zenity --info --text "
<b>gras</b>
<big>grand</big>
<i>italique</i>
<s>barré</s>
<sub>indice</sub>
<sup>exposant</sup>
<small>petit</small>
<tt>espace entre les lettres</tt>
<u>souligné</u>"
}
echo "$(PoliceDeCaractere)"

#**********************************#
function Entry {
zenity --entry --title="Nom du logiciel à utiliser" \
--width=350 --height=80 \
--text="Merci d'indiquer le nom du logiciel à utiliser pour editer le fichier de config" \
--entry-text="geany" kate gedit ;
}
echo "$(Entry)"
#**********************************#
function EntryTextArray {
# A VOIR
# https://help.gnome.org/users/zenity/stable/usage.html.en
# -------------------------------------

#~ http://askubuntu.com/questions/50988/wheres-documented-combo-box-usage-with-zenity
array=(a b c d e)
zenity --entry --title "Window title" --text "Insert your choice." --entry-text "${array[@]}"
}
echo "$(EntryTextArray)"
#**********************************#
function ListCheckList {
zenity --list \
           --checklist \
           --text="What is you favorite pet?" \
           --column=Favorite --column=Pet \
           TRUE cat FALSE dog TRUE fish TRUE bird FALSE mouse
}
echo "$(ListCheckList)"
#**********************************#
function ListRadioList {
zenity --list \
           --radiolist \
           --title="Choisir la recherche" \
           --text="Comment voulez vous cette recherche ?" \
           --column=Favorite --column=Pet \
           TRUE exacte FALSE commence_par FALSE fini_par FALSE contient
}
echo "$(ListRadioList)"
#**********************************#
function ListCheckListArray {
array=(FALSE unchamp FALSE unautre FALSE encore)
zenity --list --checklist --separator="," \
--title="Choisir la recherche" \
--text "Choisir des champs" \
--column="" \
--column="valeur" \
--print-column="2" "${array[@]}"
}
echo "$(ListCheckListArray)"
#**********************************#
function ListCheckListREPLY {
zenity --list --checklist --separator="\n" \
--text "Choisir une couleur et un véhicule" \
--column="" \
--column="Couleur" \
--column="Véhicule" \
--print-column="2,3" FALSE Noir Vélo FALSE Blanc Voiture FALSE Gris Avion > >(
while read ; do
[ "${REPLY}" == "Vélo" ] && zenity --info --text "Vous avez choisi vélo."
[ "${REPLY}" == "Voiture" ] && zenity --info --text "Vous avez choisi Voiture."
[ "${REPLY}" == "Avion" ] && zenity --info --text "Vous avez choisi Avion."
[ "${REPLY}" == "Noir" ] && zenity --info --text "Vous avez choisi noir."
[ "${REPLY}" == "Blanc" ] && zenity --info --text "Vous avez choisi Blanc."
[ "${REPLY}" == "Gris" ] && zenity --info --text "Vous avez choisi Gris."
done )
}
echo "$(ListCheckListREPLY)"


#**********************************#
function listVoir {
zenity --list \
    --title="Choose the Bugs You Wish to View" \
    --column="Bug Number" --column="Severity" --column="Description" \
        992383 Normal "GtkTreeView crashes on multiple selections" \
        293823 High "GNOME Dictionary does not handle proxy" \
        393823 Critical "Menu editing does not work in GNOME 2.0"
}
echo "$(listVoir)"
#**********************************#
function ListEditable {
zenity --list \
    --title="Choisir les lignes à sortir" \
    --text "Ctrl +a pour sélectionner toutes les lignes à sortir avant de valider" \
    --print-column=2 --multiple --editable \
    --column "title" --column "value" \
    "name" "(double clic ici)" \
    "host" "" \
    "ip" "" ;
}
echo "$(ListEditable)"
#**********************************#
function FormsAdressFriends {
zenity --forms --title="Add Friend" \
    --text="Enter information about your friend." \
    --separator="," \
    --add-entry="First Name" \
    --add-entry="Family Name" \
    --add-entry="Email" \
    --add-calendar="Birthday" >> addr.csv

case $? in
    0)
        echo "Friend added.";;
    1)
        echo "No friend added."
    ;;
    -1)
        echo "An unexpected error has occurred."
    ;;
esac
}
echo "$(FormsAdressFriends)"
#**********************************#
function FormsIP2OUTs {
zenity --forms --title="remplir les champs" \
                        --text="Enter Multicast address" \
                        --separator="," \
                        --add-entry="IP address" \
                        --add-entry="PORT"
}
OUTPUT="$(FormsIP2OUTs)"
if (($? != 0)); then
    echo "something went wrong"
    exit 1
fi
echo "ip=$(awk -F, '{print $1}' <<<$OUTPUT)"
echo "port=$(awk -F, '{print $2}' <<<$OUTPUT)"
#**********************************#
function formulaire_motdepasse {
    #On crée le formulaire en stockant les valeurs de sortie dans $cfgpass :/
    cfgpass=`zenity --forms \
        --title="Exemple qui tue la mort" \
        --text="Définir un nouveau mot de passe" \
        --add-entry="Nom de l'utilisateur" \
        --add-password="Ancien mot de passe" \
        --add-password="Nouveau mot de passe" \
        --add-password="Confirmer le nouveau mot de passe" \
        --separator="|"`

    #Si on clique sur le bouton Annuler
    if [ "$?" -eq 1 ]; then
        #On quitte le script
        exit
    fi
    #Sinon on continue
    #On peut récupérer les valeurs des différents champs de cette façon :
    echo "$cfgpass" | cut -d "|" -f1 #Nom de l'utilisateur
    echo "$cfgpass" | cut -d "|" -f2 | md5sum #Ancien Mot de passe
    echo "$cfgpass" | cut -d "|" -f3 | md5sum #Nouveau Mot de passe
    echo "$cfgpass" | cut -d "|" -f4 | md5sum #Confirmation du nouveau mot de passe

    echo "Franchement la classe cette nouvelle fonction Zenity :P"
}
echo "$(formulaire_motdepasse)"
# ****************************************
function BoiteDeDialogue() {
    # array=(a b c d e)
    # echo ${array[@]}

    zenity --forms --title "Select Flash Drives" --text  "Select Flash Drives" \
    --add-entry="IP address (leave empty to use 8.8.8.8)" \
    --add-list "Insert your choice (leave empty to use C)" --list-values 'a|b|c' ;

    # --add-list "Insert your choice " --list-values '${array[@]}' \
    # --add-entry="${array[@]}"

}
RETURNVALUE="$(BoiteDeDialogue)"
    # extract the IP and DRIVE values
    une_ip=$(awk -F'|' '{print $1}' <<<$RETURNVALUE);    
    un_lecteur=$(awk -F'|' '{print $2}' <<<$RETURNVALUE);

    # [[ -z $var ]] is true if the length of $var is zero
    # the second element in && is evaluated only if the first one is true
    [[ -z $une_ip ]] && une_ip="8.8.8.8";                    
    [[ -z $un_lecteur ]] && un_lecteur="C";
    
    # on sort le résultat par écho
    # pour le récupèrer hors de la fonction
    echo     "
une_ip        $une_ip
un_lecteur    $un_lecteur"
#**********************************#
function DoubleClicDansZenity {
# gérer le double clic dans zenity
    zenity --list --column Pet Chien Chat
}
menuchoice=$(DoubleClicDansZenity);
echo "avant traitement le résultat est : $menuchoice"
menuchoicecleaned=${menuchoice%|*}
echo "après traitement le résultat est $menuchoicecleaned"


exit 0