Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
utilisateurs:kamui57:guimp3report [Le 25/08/2010, 13:07]
kamui57
utilisateurs:kamui57:guimp3report [Le 25/08/2010, 14:40] (Version actuelle)
kamui57
Ligne 1: Ligne 1:
 ====== GUI pour mp3report ====== ====== GUI pour mp3report ======
 +
 +
 +<note warning>
 +Ce script ne fonctionne pas encore, merci de ne pas l'​utiliser.
 +</​note>​
 +
 +===== Captures d'​écran =====
 +     * Le script commence par vérifier les dépendances (zenity et mp3report). Si au moins l'une d'​elles manque, il affiche une fenêtre d'​erreur et s'​arrête.
 +
 +{{http://​nsm04.casimages.com/​img/​2010/​08/​25//​10082501585425326627787.jpg|Dépendance manquante}}
 +
 +    * Ensuite, la boîte de dialogue permettant de choisir les options grâce à des cases à cocher s'​affiche. Les options "​title",​ "​outfile"​ et "​template"​ ont besoin d'un paramètre, les autres non.
 +    ​
 +{{http://​nsm04.casimages.com/​img/​2010/​08/​25/​10082501585325326627786.jpg|Boîte de dialogue de choix des options}}
 +
 +    * Si l'on a choisi l'​option "​title",​ qui nécessite l'​entrée du titre, une boîte de dialogue s'​affiche nous invitant à le rentrer.
 +    ​
 +{{http://​nsm04.casimages.com/​img/​2010/​08/​25/​10082501585125326627783.jpg|Boîte de dialogue d'​entrée du titre}}
 +
 +    * Dans ce cas, si l'on rentre un titre vide, on est averti que cette option ne sera finalement pas prise en compte.
 +    ​
 +{{http://​nsm04.casimages.com/​img/​2010/​08/​25/​10082501585125326627784.jpg|Titre vide donc option "​title"​ ignorée}}
 +
 +    * Si l'on a choisi l'​option "​outfile",​ qui nécessite l'​entrée du fichier de sortie, une boîte de dialogue s'​affiche nous demandant si l'on veut le rapport sur la sortie standard ou dans un fichier.
 +    ​
 +{{http://​nsm04.casimages.com/​img/​2010/​08/​25/​10082501585025326627781.jpg|Sortie standard ou fichier ?}}
 +
 +    * Dans ce dernier cas (fichier), une boîte de dialogue nous invite alors à le choisir.
 +    ​
 +{{http://​nsm04.casimages.com/​img/​2010/​08/​25/​10082502374925326627965.jpg|Choix du fichier de sortie}}
 +
 +    * Si l'on clique sur "​Annuler",​ on est prévenu que l'​option ne sera pas retenue.
 +    ​
 +{{http://​nsm04.casimages.com/​img/​2010/​08/​25/​10082501584725326627779.jpg|Fichier de sortie vide donc option "​outfile"​ ignorée}}
 +
 +    * Si l'on a choisi l'​option "​template",​ qui nécessite l'​entrée du fichier template, une boîte de dialogue s'​affiche nous prévenant que l'on va devoir le choisir.
 +    ​
 +{{http://​nsm04.casimages.com/​img/​2010/​08/​25/​10082501584425326627776.jpg|Choix du template imminent}}
 +
 +    * C'est ce que la fenêtre suivante propose. C'est une fenêtre de même type que celle pour le fichier de sortie.
 +
 +    * Si l'on clique sur "​Annuler",​ on est prévenu que l'​option ne sera pas retenue.
 +    ​
 +{{http://​nsm04.casimages.com/​img/​2010/​08/​25/​10082501584525326627777.jpg|Fichier vide donc option "​template"​ ignorée}}
 +
 +    * Dernière étape, le choix du/des répertoires à scanner, précédé encore une fois par une fenêtre d'​information.
 +    ​
 +{{http://​nsm04.casimages.com/​img/​2010/​08/​25/​10082501584125326627773.jpg|Choix des répertoires imminent}}
 +
 +    * Le choix des répertoires est proposé.
 +    ​
 +{{http://​nsm04.casimages.com/​img/​2010/​08/​25/​10082502374825326627964.jpg|Choix des répertoires}}
 +
 +    * Si l'​utilisateur clique sur "​annuler",​ le script s'​arrête.
 +    ​
 +{{http://​nsm04.casimages.com/​img/​2010/​08/​25/​10082501584225326627774.jpg|Aucun répertoire choisi, fin du script}}
 +
 ===== Fichiers ===== ===== Fichiers =====
 Ce script a pour but de donner une interface graphique à mp3report. Il est composé de plusieurs fichiers : Ce script a pour but de donner une interface graphique à mp3report. Il est composé de plusieurs fichiers :
-     ​* ​GUImp3report_v3.bash : script principal+     ​* ​GUImp3report.bash : script principal
      * controldependencies.bash : contrôle de la présence de zenity et mp3report      * controldependencies.bash : contrôle de la présence de zenity et mp3report
      * init.bash : initialisation des variables      * init.bash : initialisation des variables
Ligne 10: Ligne 67:
      * buildcommandline.bash : construction de la commande à exécuter      * buildcommandline.bash : construction de la commande à exécuter
      * executecommand.bash : confirmation de l'​exactitude de la commande par l'​utilisateur et exécution      * executecommand.bash : confirmation de l'​exactitude de la commande par l'​utilisateur et exécution
 +
 +==== GUImp3report.bash ====
 +<code bash>#​!/​bin/​bash
 +
 +################################################################​
 +# Asks for the options and parameters for the "​mp3report ​      #
 +# command and executes it, all this in a gui (zenity) ​         #
 +#                                                              #
 +# Auteur : kamui57 < kamui_57 AT yahoo DOT fr >                #
 +#                                                              #
 +# Licence : Ce script est un logiciel libre ; vous pouvez le   #
 +# redistribuer et/ou le modifier selon les termes de la        #
 +# Licence Publique Générale GNU ( GNU GPL ) publiée par la Free#
 +# Software Foundation. ​                                        #
 +################################################################​
 +
 +source $HOME/​controldependencies.bash
 +
 +source $HOME/​init.bash
 +
 +source $HOME/​chooseoptions.bash
 +
 +if [ "​$chosen"​ != ""​ ]
 +then
 +    source $HOME/​chooseparameters.bash
 +fi
 +
 +source $HOME/​choosedirectories.bash
 +
 +source $HOME/​buildcommandline.bash
 +
 +source $HOME/​executecommand.bash
 +# help for zenity found here
 +# http://​linux.byexamples.com/​archives/​259/​a-complete-zenity-dialog-examples-1/​
 +
 +</​code>​
 +
 +==== controldependencies.bash ====
 +<code bash>#​!/​bin/​bash
 +
 +################################################################​
 +# Control that the required dependencies zenity and mp3report ​ #
 +#  are present. ​                                               #
 +#                                                              #
 +# Auteur : kamui57 < kamui_57 AT yahoo DOT fr >                #
 +#                                                              #
 +# Licence : Ce script est un logiciel libre ; vous pouvez le   #
 +# redistribuer et/ou le modifier selon les termes de la        #
 +# Licence Publique Générale GNU ( GNU GPL ) publiée par la Free#
 +# Software Foundation. ​                                        #
 +#                                                              #
 +################################################################​
 +
 +error=""​
 +missing=0
 +#​zenitymissing=0
 +#​mp3reportmissing=0
 +# control if the required dependencies are present
 +if [[ !  `which zenity` ]]
 +then 
 +    missing=1
 +    error="​${error}The required dependency \"​zenity\"​ is missing.\n"​
 +fi
 +
 +if [[ !  `which mp3report` ]]
 +then 
 +    missing=1
 +    error="​${error}The required dependency \"​mp3report\"​ is missing.\n"​
 +fi
 +
 +# if not display an error message and exit
 +if [ $missing -eq 1 ]
 +then
 +  zenity --error --text "​${error}\nPlease install the required dependencies and run the script again. "
 +  exit
 +fi</​code>​
 +
 +==== init.bash ====
 +<code bash>#​!/​bin/​bash
 +
 +################################################################​
 +# Initialises some variables for the script :                  #
 +# - the list of available options ​                             #
 +# - the titles of the columns for the "​choose options"​ box     #
 +# - the text for the "​choose options"​ box                      #
 +# - the separator for the list of the chosen options ​          #
 +# - the chosen state of each option ​                           #
 +#                                                              #
 +# Auteur : kamui57 < kamui_57 AT yahoo DOT fr >                #
 +#                                                              #
 +# Licence : Ce script est un logiciel libre ; vous pouvez le   #
 +# redistribuer et/ou le modifier selon les termes de la        #
 +# Licence Publique Générale GNU ( GNU GPL ) publiée par la Free#
 +# Software Foundation. ​                                        #
 +#                                                              #
 +################################################################​
 +
 +# Variables for the options checkboxes
 +# titles
 +titre[0]="​Pick"​
 +titre[1]="​Options"​
 +titre[2]="​Explanation"​
 +# names of the options and brief explanation
 +options[0]="​help"​
 +explanation[0]="​shows the help screen"​
 +options[1]="​printmode"​
 +explanation[1]="​uses a smaller font for printing"​
 +options[2]="​title"​
 +explanation[2]="​sets the title used in the report"​
 +options[3]="​outfile"​
 +explanation[3]="​file to write report to, '​-'​ for STDOUT"​
 +options[4]="​template"​
 +explanation[4]="​file to use as report template"​
 +options[5]="​stdgenres"​
 +explanation[5]="​use standard genres instead of winamp genres"​
 +options[6]="​id3v2"​
 +explanation[6]="​enable id3v2 support (experimental)"​
 +
 +# separator of the checked options'​ list
 +separator=":"​
 +# text displayed in the box to choose options
 +texte="​Neon Goat MP3 Report Generator v1.0.2
 +Copyright (C) 2000, David Parker, Neon Goat Productions.
 +www.neongoat.com - david@neongoat.com
 +
 +This script lets you choose the options, the parameters and the directories
 +Please choose the options you want to use."
 +
 +# initialisation of the chosen state of each option
 +# default : no option is chosen
 +for index in "​${!options[@]}"​
 + do
 +    picked[$index]=FALSE;​
 +done  ​
 +</​code>​
 +
 +==== chooseoptions.bash ====
 +<code bash>#​!/​bin/​bash
 +
 +################################################################​
 +# Displays a zenity box to choose the options to use for       #
 +# mp3report and stores the obtained list in the string named   #
 +# "​chosen" ​                                                    #
 +#                                                              #
 +# Auteur : kamui57 < kamui_57 AT yahoo DOT fr >                #
 +#                                                              #
 +# Licence : Ce script est un logiciel libre ; vous pouvez le   #
 +# redistribuer et/ou le modifier selon les termes de la        #
 +# Licence Publique Générale GNU ( GNU GPL ) publiée par la Free#
 +# Software Foundation. ​                                        #
 +################################################################​
 +
 +# dialog box
 +ans=$(zenity ​ --list ​ --text "​$texte"​ --checklist\
 + ​--height=400 \
 + ​--column "​${titre[0]}"​ \
 + ​--column "​${titre[1]}"​ \
 + ​--column "​${titre[2]}"​ \
 +FALSE "​help"​ "shows the help screen"​ \
 +FALSE "​printmode"​ "uses a smaller font for printing"​ \
 +FALSE "​title"​ "​=TITLE sets the title used in the report"​ \
 +FALSE "​outfile"​ "​=OUTFILE file to write report to, '​-'​ for STDOUT"​ \
 +FALSE "​template"​ "=FILE file to use as report template"​ \
 +FALSE "​stdgenres"​ "use standard genres instead of winamp genres"​ \
 +FALSE "​id3v2"​ "​enable id3v2 support (experimental)"​ \
 +--separator=$separator); ​
 +
 +if [ "​$ans"​ = ""​ ]
 +then
 +    chosen=""​
 +else
 +# splitting options'​ list
 +    OLD_IFS="​$IFS"​
 +    IFS="​$separator"​
 +    chosen=( $ans )
 +    IFS=$OLD_IFS
 +fi
 +
 +</​code>​
 +
 +==== chooseparameters.bash ====
 +<code bash>#​!/​bin/​bash
 +
 +################################################################​
 +# For each chosen option, if this option requires a parameter, #
 +# prompts the user to choose the corresponding parameter. ​     #
 +#                                                              #
 +# - For the option "​title",​ asks for the title in an input     #
 +#   text box.                                                  #
 +# - For the option "​outputfile",​ asks first if the output must #
 +#   be on the standard output, if not open a filedialog window #
 +#   to pick the output file.                                   #
 +# - For the option "​template",​ open a file dialog window to    #
 +#   pick the template file.                                    #
 +#                                                              #
 +# Auteur : kamui57 < kamui_57 AT yahoo DOT fr >                #
 +#                                                              #
 +# Licence : Ce script est un logiciel libre ; vous pouvez le   #
 +# redistribuer et/ou le modifier selon les termes de la        #
 +# Licence Publique Générale GNU ( GNU GPL ) publiée par la Free#
 +# Software Foundation. ​                                        #
 +#                                                              #
 +################################################################​
 +
 +indexOptions=0
 +for indexChosen in ${!chosen[@]};​ do
 +    chosenFound=0
 +    while [ $chosenFound = 0 ]
 +    do
 +    if [ ${options[$indexOptions]} = ${chosen[$indexChosen]} ]
 +    then
 +        break
 +    else
 +        indexOptions=$(($indexOptions+1))
 +    fi
 +    done
 +    picked[$indexOptions]=TRUE;​
 +done  ​
 +
 +########### option "​title"​ picked ##############​
 +if [ ${picked[2]} = "​TRUE"​ ]
 +then
 +    titleInput=$(zenity --entry --text "You have picked the option \"​title\"​. This options requires an argument : the title used in the report. Please enter it here." --entry-text ""​); ​
 +    if [ "​$titleInput"​ = ""​ ]
 +    then
 +    zenity --warning \
 +        --text="​You have not chosen any title. This option will be ignored."​
 +    fi
 +    ​
 +fi
 +
 +########### option "​outputfile"​ picked ##############​
 +if [ ${picked[3]} = "​TRUE"​ ] 
 +then
 +    zenity --title "​Choice of the output file" --question --text ​ "You have picked the option \"​outputfile\"​. Do you want to write on the standard output (yes) or on a file (no)?";​
 +    if [ "​$?"​ -eq "​0"​ ] # standard input chosen
 +    then
 +    outfileInput='​-';​
 +    else #  not to standard input, therefore to a file, which must be chosen
 +    zenity --info \
 +        --text="​You have chosen to write report to a file. Please choose the file you want to write the report to."
 +    outfileInput=$(zenity --file-selection --save --confirm-overwrite);​
 +    fi
 +    if [ "​$outputfileInput"​ = ""​ ]
 +    then
 +    zenity --warning \
 +        --text="​You have not chosen any output file. This option will be ignored."​
 +    fi
 +    ​
 +fi
 +
 +########### option "​template"​ picked ##############​
 +if [ ${picked[4]} = "​TRUE"​ ]
 +then
 +    zenity --info \
 +    --text="​You have chosen to specify the template to use. Please choose this file."
 +    templateInput=$(zenity --file-selection);​
 +
 +    if [ "​$templateInput"​ = ""​ ]
 +    then
 +    zenity --warning \
 +        --text="​You have not chosen any template. This option will be ignored."​
 +    fi
 +fi
 +</​code>​
 +
 +==== choosedirectories.bash ====
 +<code bash>#​!/​bin/​bash
 +
 +################################################################​
 +# Displays a directories selection box to choose the scanned ​  #
 +# directories. ​                                                #
 +# - Multiple selection is allowed ​                             #
 +# - The subdirectories are included too                        #
 +#                                                              #
 +# Auteur : kamui57 < kamui_57 AT yahoo DOT fr >                #
 +#                                                              #
 +# Licence : Ce script est un logiciel libre ; vous pouvez le   #
 +# redistribuer et/ou le modifier selon les termes de la        #
 +# Licence Publique Générale GNU ( GNU GPL ) publiée par la Free#
 +# Software Foundation. ​                                        #
 +#                                                              #
 +################################################################​
 +
 + ​zenity --info \
 +    --text="​Please choose now the directories to scan. The subdirectories will be included."​
 +
 +directoriesInput=$(zenity --file-selection --directory --multiple --separator=$separator);​
 +
 +if [ "​$directoriesInput"​ = ""​ ]
 +then
 +    zenity --error --text "No directory given! The script will abort."​
 +    exit
 +fi</​code>​
 +
 +==== buildcommandline.bash ====
 +<code bash>#​!/​bin/​bash
 +
 +################################################################​
 +# Builds the command line to execute from the chosen options ​  #
 +# and parameters. ​                                             #
 +#                                                              #
 +# Auteur : kamui57 < kamui_57 AT yahoo DOT fr >                #
 +#                                                              #
 +# Licence : Ce script est un logiciel libre ; vous pouvez le   #
 +# redistribuer et/ou le modifier selon les termes de la        #
 +# Licence Publique Générale GNU ( GNU GPL ) publiée par la Free#
 +# Software Foundation. ​                                        #
 +#                                                              #
 +################################################################​
 +
 +commande="​mp3report "
 +for indexOptions in ${!options[@]};​ do
 +    if [ ${picked[$indexOptions]} = TRUE ]
 +    then
 +    ligne="​--${options[$indexOptions]}"​
 +    case $indexOptions in
 +        2)  # title
 +        if [ "​$titleInput"​ != ""​ ]
 +        then
 +            ligne="​${ligne}=\"​$titleInput\""​
 +        else
 +            ligne=""​
 +        fi
 +        ;;
 +        3)  # outfile
 +        if [ "​$outfileInput"​ != ""​ ]
 +        then
 +            ligne="​${ligne}=\"​$outfileInput\""​
 +        else
 +            ligne=""​
 +        fi
 +        ;;
 +        4)  # template
 +        if [ "​$templateInput"​ != ""​ ]
 +        then
 +            ligne="​${ligne}=\"​$templateInput\""​
 +        else
 +            ligne=""​
 +        fi
 +        ;;
 +        *);;
 +    esac
 +    commande="​${commande} ${ligne}"​
 +    fi
 +done
 +
 +commande="​${commande} \"​${directoriesInput}\""​
 +</​code>​
 +
 +==== executecommand.bash ====
 +<code bash>#​!/​bin/​bash
 +
 +################################################################​
 +# Prompts if the command is the good command and launches it   #
 +#                                                              #
 +# Auteur : kamui57 < kamui_57 AT yahoo DOT fr >                #
 +#                                                              #
 +# Licence : Ce script est un logiciel libre ; vous pouvez le   #
 +# redistribuer et/ou le modifier selon les termes de la        #
 +# Licence Publique Générale GNU ( GNU GPL ) publiée par la Free#
 +# Software Foundation. ​                                        #
 +################################################################​
 +
 +zenity --title "​Execution"​ --question --text ​ "The command you have built is : $commande, do you agree?";​
 +    if [ "​$?"​ -eq "​0"​ ] # standard input chosen
 +    then
 +    echo ok
 +    else #  not to standard input, therefore to a file, which must be chosen
 +    echo "pas ok"
 +    fi
 +
 +#gksudo lsof | zenity --text-info --width 530
 +echo $commande
 +echo "​sortie"​
 +$commande</​code>​
  
 ---- ----
  • utilisateurs/kamui57/guimp3report.1282734433.txt.gz
  • Dernière modification: Le 18/04/2011, 14:43
  • (modification externe)