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
yad_yet_another_dialog [Le 14/07/2018, 11:17]
80.215.113.109 [Configuration]
yad_yet_another_dialog [Le 28/09/2022, 21:04] (Version actuelle)
Amiralgaby correction de certain script shell repéré grâce à wiki-corrector
Ligne 7: Ligne 7:
 //​Traduction de la description sur le site officiel de Yad.// ((YAD (yet another dialog) is a tool for create graphical dialogs from shell scripts)) //​Traduction de la description sur le site officiel de Yad.// ((YAD (yet another dialog) is a tool for create graphical dialogs from shell scripts))
  
-**Yad** (encore une boîte de dialogue) est un outil pour créer des boîtes de dialogue graphiques à partir de scripts shell.+**Yad** (« Yet Another Dialog », « encore une boîte de dialogue ​») est un outil pour créer des boîtes de dialogue graphiques à partir de scripts shell.
  
-**Yad** est un fork de [[:​Zenity|Zenity]] +**Yad** est un fork de [[:​Zenity|Zenity]] 
-Ses avantages par rapport à Zenity sont l'​intégration de plusieurs contrôles sur une même fenêtre (voir le paramètre --form)+Ses avantages par rapport à Zenity sont l'​intégration de plusieurs contrôles sur une même fenêtre (voir le paramètre ​%%--%%form)
  
 ===== Auteurs ===== ===== Auteurs =====
Ligne 24: Ligne 24:
 ===== Installation ===== ===== Installation =====
 ==== Version des dépôts ==== ==== Version des dépôts ====
-YAD est dans les dépôts à partir d'​Ubuntu 16.04. 
 Pour installer ce logiciel, il suffit d'​[[:​tutoriel:​comment_installer_un_paquet|installer les paquets]] **[[apt>​yad]]**. Pour installer ce logiciel, il suffit d'​[[:​tutoriel:​comment_installer_un_paquet|installer les paquets]] **[[apt>​yad]]**.
-Pour les versions d'​Ubuntu antérieur à 16.04, tel que 14.04, vous pouvez installer YAD avec le PPA (voir ci-dessous).+
 ==== Avec un ppa ==== ==== Avec un ppa ====
-Pour installer une version récente de YAD, ou si vous avez une version Ubuntu antérieur à 16.04, alors vous pouvez installer YAD avec le PPA de webupd8, en une ligne :+Pour installer une version récente de YAD, vous pouvez installer YAD avec le PPA de webupd8, en une ligne :
 <​code>​sudo add-apt-repository ppa:​nilarimogard/​webupd8 -y && sudo apt update && sudo apt install yad -y</​code>​ <​code>​sudo add-apt-repository ppa:​nilarimogard/​webupd8 -y && sudo apt update && sudo apt install yad -y</​code>​
- 
- 
  
 ==== Par compilation ==== ==== Par compilation ====
Ligne 51: Ligne 48:
 </​code> ​ </​code> ​
  <​note>​  <​note>​
-L'​auteur fourni une petite application qui permet de lister les icones ​pouvant être utilisées. +L'​auteur fourni une petite application qui permet de lister les icônes ​pouvant être utilisées. 
-Il vous faut également activer le widget --html.+Il vous faut également activer le widget ​%%--%%html.
 Procèder comme suit pour les installer. Procèder comme suit pour les installer.
 </​note>​ </​note>​
Ligne 79: Ligne 76:
 | Affichage ​             |''​%%--html%%'' ​  | Affiche un navigateur| | Affichage ​             |''​%%--html%%'' ​  | Affiche un navigateur|
 | Affichage ​           |''​%%--list%%'' ​  | Affiche une liste| | Affichage ​           |''​%%--list%%'' ​  | Affiche une liste|
-| Affichage ​        ​|''​%%--multi-progress%%'' ​    | Affiche plusieurs barres de progresion ​      |+| Affichage ​        ​|''​%%--multi-progress%%'' ​    | Affiche plusieurs barres de progression ​      |
 | Affichage ​                ​|''​%%--notification%%'' ​      | Affiche une icone dans la zone de notification ​    | | Affichage ​                ​|''​%%--notification%%'' ​      | Affiche une icone dans la zone de notification ​    |
 | Affichage ​               |''​%%--progress%%'' ​     | Affiche une barre de progression ​ | | Affichage ​               |''​%%--progress%%'' ​     | Affiche une barre de progression ​ |
 | Affichage ​              ​|''​%%--text-info%%'' ​     | Affiche le contenu d'un fichier texte     | | Affichage ​              ​|''​%%--text-info%%'' ​     | Affiche le contenu d'un fichier texte     |
 | Affichage ​              ​|''​%%--picture%%'' ​     | Un simple visionneur d'​images ​    | | Affichage ​              ​|''​%%--picture%%'' ​     | Un simple visionneur d'​images ​    |
-| Multiples ​             |''​%%--form%%'' ​  | Affiche une multitude de boîte ​|+| Multiples ​             |''​%%--form%%'' ​  | Affiche une multitude de champs ​|
 | Multiples ​                ​|''​%%--notebook%%'' ​      | Affiche une boîte avec des onglets | | Multiples ​                ​|''​%%--notebook%%'' ​      | Affiche une boîte avec des onglets |
 | Multiple |''​%%--paned%%''​| Affiche une boîte en deux parties| | Multiple |''​%%--paned%%''​| Affiche une boîte en deux parties|
Ligne 93: Ligne 90:
 ==== Types de champs de la fenêtre form (formulaire) ==== ==== Types de champs de la fenêtre form (formulaire) ====
 Les formulaires permettent de décliner les différentes options de yad dans la même fenêtre. Les formulaires permettent de décliner les différentes options de yad dans la même fenêtre.
-Les types de champs de formulaire sont saisis sous la forme  +Les types de champs de formulaire sont saisis sous la forme 
---field=LABEL[:​TYPE]+%%--%%field="LABEL"[:TYPE]
 Les types de champs sont les suivants : H, RO, NUM, CHK, CB, CBE, CE, FL, SFL, DIR, CDIR, FN, MFL, MDIR, DT, SCL, CLR, BTN, FBTN, LBL, TXT.            || Les types de champs sont les suivants : H, RO, NUM, CHK, CB, CBE, CE, FL, SFL, DIR, CDIR, FN, MFL, MDIR, DT, SCL, CLR, BTN, FBTN, LBL, TXT.            ||
 ^Type de champ^ Utilisation^ ^Type de champ^ Utilisation^
-|            |Les entrée ​de formulaire non typées sont traitées comme des entrées texte simple (Type CE).| +|            |Les entrées ​de formulaire non typées sont traitées comme des entrées texte simple (Type CE).| 
-|BTN            |Champ bouton libre. L’étiquette du bouton est un texte saisi selon la convent d’écriture suivante : Etiquette[!Icone[!Infobulle]]. Le séparateur est le caractère !. (point d’exclamation). L’étiquette est un texte ou un identifiant gtk. Icône est un fichier icône (identifiant ou nom de fichier). L’infobulle est un paramètre optionnel correspondant à une fenêtre surgissante d’aide qui apparaît au survol du bouton. Il est possible d’affecter une commande au bouton. Dans ce cas, le symbole spécial%N d’une commande est remplacé par la valeur du champ N. Si la commande débute par le caractère @ (arobase), la sortie de la commande sera parsé ​et les lignes qui débutent par des nombres et des colonnes seront traitées comme les valeurs de nouveaux champs.|+|BTN            |Champ bouton libre. L’étiquette du bouton est un texte saisi selon la convent d’écriture suivante : Etiquette[!Icone[!Infobulle]]. Le séparateur est le caractère !. (point d’exclamation). L’étiquette est un texte ou un identifiant gtk. Icône est un fichier icône (identifiant ou nom de fichier). L’infobulle est un paramètre optionnel correspondant à une fenêtre surgissante d’aide qui apparaît au survol du bouton. Il est possible d’affecter une commande au bouton. Dans ce cas, le symbole spécial%N d’une commande est remplacé par la valeur du champ N. Si la commande débute par le caractère @ (arobase), la sortie de la commande sera parsée ​et les lignes qui débutent par des nombres et des colonnes seront traitées comme les valeurs de nouveaux champs.|
 |CB            |Boîte déroulante. Les valeurs possibles sont saisies sous la forme VAL1!VAL2 !… Le séparateur est identique au séparateur des champs numériques. La valeur précédée du caractère ∧ correspond à la valeur par défaut.| |CB            |Boîte déroulante. Les valeurs possibles sont saisies sous la forme VAL1!VAL2 !… Le séparateur est identique au séparateur des champs numériques. La valeur précédée du caractère ∧ correspond à la valeur par défaut.|
 |CBE            |Boîte déroulante éditable. Valeurs initiales saisies selon les mêmes règles que pour la boîte déroulante standard. D'​autres valeurs que les valeurs proposées peuvent être saisies.| |CBE            |Boîte déroulante éditable. Valeurs initiales saisies selon les mêmes règles que pour la boîte déroulante standard. D'​autres valeurs que les valeurs proposées peuvent être saisies.|
Ligne 105: Ligne 102:
 |CHK            |Case à cocher. La valeur initiale est une constante insensible à la casse (TRUE ou FALSE)| |CHK            |Case à cocher. La valeur initiale est une constante insensible à la casse (TRUE ou FALSE)|
 |CLR            |Boîte de sélection de couleur. La valeur par défaut de la couleur peut être saisie au format hexadécimal (#FF0000 par exemple). La boîte de dialogue est moins sophistiquée que le champ yad –color qui affiche une roue des couleurs et des champs de saisie numérique.| |CLR            |Boîte de sélection de couleur. La valeur par défaut de la couleur peut être saisie au format hexadécimal (#FF0000 par exemple). La boîte de dialogue est moins sophistiquée que le champ yad –color qui affiche une roue des couleurs et des champs de saisie numérique.|
-|DIR            |Bouton de sélection de répertoire dans l’arborescence. Ne permet pas la saise d’un nom de répertoire qui ne figure pas dans l’arborescence (voir option CDIR).|+|DIR            |Bouton de sélection de répertoire dans l’arborescence. Ne permet pas la saisie ​d’un nom de répertoire qui ne figure pas dans l’arborescence (voir option CDIR).|
 |DT            |Champ date.| |DT            |Champ date.|
 |FBTN            |Identique au champ BTN, le bouton étant en relief.| |FBTN            |Identique au champ BTN, le bouton étant en relief.|
-|FL            |Bouton de sélection de fichier dans l’arborescence. Ne permet pas la saise d’un nom de fichier qui ne figure pas dans l’arborescence (voir option SFL).|+|FL            |Bouton de sélection de fichier dans l’arborescence. Ne permet pas la saisie ​d’un nom de fichier qui ne figure pas dans l’arborescence (voir option SFL).|
 |FN            |Boîte de sélection de police de caractère. Les polices de caractère sont saisies sous la forme Famille Style Taille (exemple : Sans Bold 13). La boîte de dialogue est moins sophistiquée que le champ yad –font.| |FN            |Boîte de sélection de police de caractère. Les polices de caractère sont saisies sous la forme Famille Style Taille (exemple : Sans Bold 13). La boîte de dialogue est moins sophistiquée que le champ yad –font.|
 |H            |Champ caché. Tous les caractères saisis apparaissent sous la forme d’un caractère invisible (souvent un point). Permet la saisie discrète d’un mot de passe.| |H            |Champ caché. Tous les caractères saisis apparaissent sous la forme d’un caractère invisible (souvent un point). Permet la saisie discrète d’un mot de passe.|
Ligne 114: Ligne 111:
 |MDIR            |Bouton de sélection de plusieurs répertoires dans l’arborescence. Les noms de répertoires apparaîtront séparés par des virgules. Ne permet pas la saisie d’un nom de répertoires qui ne figure pas dans l’arborescence.| |MDIR            |Bouton de sélection de plusieurs répertoires dans l’arborescence. Les noms de répertoires apparaîtront séparés par des virgules. Ne permet pas la saisie d’un nom de répertoires qui ne figure pas dans l’arborescence.|
 |MFL            |Bouton de sélection de plusieurs fichiers dans l’arborescence. Les noms de fichiers apparaîtront séparés par des virgules. Ne permet pas la saisie d’un nom de fichier qui ne figure pas dans l’arborescence.| |MFL            |Bouton de sélection de plusieurs fichiers dans l’arborescence. Les noms de fichiers apparaîtront séparés par des virgules. Ne permet pas la saisie d’un nom de fichier qui ne figure pas dans l’arborescence.|
-|NUM            |Valeur numérique. Formatage possible : Valeur[!Echelle[!Pas[!Précision]]]. L’échelle des valeurs se présente sous la forme Min..Max. La précision ​cocnerne ​les décimales.|+|NUM            |Valeur numérique. Formatage possible : Valeur[!Echelle[!Pas[!Précision]]]. L’échelle des valeurs se présente sous la forme Min..Max. La précision ​concerne ​les décimales.|
 |RO            |Champ en mode lecture seule.| |RO            |Champ en mode lecture seule.|
 |SCL            |Échelle (réglette). Valeur comprise entre 0 et 100.| |SCL            |Échelle (réglette). Valeur comprise entre 0 et 100.|
Ligne 120: Ligne 117:
 |TXT            |Entrée texte multiligne. Occupe l’ensemble de la surface du formulaire.| |TXT            |Entrée texte multiligne. Occupe l’ensemble de la surface du formulaire.|
 ===== Exemples ===== ===== Exemples =====
-[[https://​code.google.com/​archive/​p/​yad/​wikis|Quelques exemples sur cette page]]+Avant de vous lancer dans la lecture, notez que vous trouverez de nombreux exemples, simples et complexes avec ces liens : 
 +  * [[http://​smokey01.com/​yad|Apprendre par l'​exemple]] ([[https://​www.dropbox.com/​s/​56k5ta6j52r9inu/​yad.pdf|copie en PDF]]) 
 +  * [[https://​code.google.com/​archive/​p/​yad/​wikis|Applications simples]]
 ====--calendar==== ====--calendar====
 Dans cet exemple le calendrier s'​ouvrira à la date du jour et la sortie sera de format sam./​27/​juil./​2019/​ Dans cet exemple le calendrier s'​ouvrira à la date du jour et la sortie sera de format sam./​27/​juil./​2019/​
  
---title="​Titre de la fenêtre":​ Indique le titre de votre fenêtre.+%%--%%title="​Titre de la fenêtre":​ Indique le titre de votre fenêtre.
  
---window-icon="​yad":​ Affiche une icone dans la barre du titre (Selon votre thème.) et sur le bouton de la liste des fenêtres.+%%--%%window-icon="​yad":​ Affiche une icône ​dans la barre du titre (Selon votre thème.) et sur le bouton de la liste des fenêtres.
 <​code>​ <​code>​
 jour=$(date +%d) jour=$(date +%d)
Ligne 151: Ligne 150:
 #!/bin/bash #!/bin/bash
 recherche=$(yad --entry --title='​Recherche web' --text='​Tapez votre recherche'​ --text-align="​center"​ --no-escape --mouse --undecorated --skip-taskbar --on-top) recherche=$(yad --entry --title='​Recherche web' --text='​Tapez votre recherche'​ --text-align="​center"​ --no-escape --mouse --undecorated --skip-taskbar --on-top)
-recherche=$(echo "$recherche" | sed 's/ /+/g') +recherche=${recherche// /+} 
-xdg-open https://​www.google.fr/​search?​q="$recherche"\&​site=webhp\&​source=lnt\&​tbs=lr:​lang_1fr\&​lr=lang_fr+xdg-open ​"https://​www.google.fr/​search?​q=$recherche&​site=webhp&​source=lnt&​tbs=lr:​lang_1fr&​lr=lang_fr"
 </​code>​ </​code>​
 ====--form==== ====--form====
-C'est ici que Yad devient ​intêressant ​car il permet de cumuler plusieurs types de boîtes dans une seule fenêtre.+C'est ici que Yad devient ​intéressant ​car il permet de cumuler plusieurs types de boîtes dans une seule fenêtre.
  
 Deux exemples récapitulatifs : Deux exemples récapitulatifs :
Ligne 164: Ligne 163:
 {{::​yad.1.png?​300|}} {{::​yad.1.png?​300|}}
  
-et (un seul formulaireavec ​toutes les options risque de dépasser les dimensions de votre écrann) :+et (un seul formulaire avec toutes les options risque de dépasser les dimensions de votre écran) :
 <​code>​ <​code>​
 retour=$(yad --form ​ --field="​LBL":​LBL ​ --field=:​LBL ​ --field="​MDIR":​MDIR ​ --field="​MFL":​MFL ​ --field="​NUM":​NUM ​ --field="​RO":​RO ​ --field="​SCL":​SCL ​ --field="​SFL":​SFL ​ --field="​TXT":​TXT ​ --field="​Champ dépourvu d'​option : '"​ "Une étiquette"​ ""​ "/​home/​user/​Documents/,/​home/​user/​Musique"​ "/​home/​user/​Documents/​fichierun.txt,/​home/​user/​Documents/​fichierdeux.txt"​ "​10.00\!0..1000\!0.05\!2"​ "​Lecture seule" "​27"​ "/​home/​user/​NouveauFichier.txt"​ "Texte multiligne"​ "​Valeur par défaut : texte simple"​) retour=$(yad --form ​ --field="​LBL":​LBL ​ --field=:​LBL ​ --field="​MDIR":​MDIR ​ --field="​MFL":​MFL ​ --field="​NUM":​NUM ​ --field="​RO":​RO ​ --field="​SCL":​SCL ​ --field="​SFL":​SFL ​ --field="​TXT":​TXT ​ --field="​Champ dépourvu d'​option : '"​ "Une étiquette"​ ""​ "/​home/​user/​Documents/,/​home/​user/​Musique"​ "/​home/​user/​Documents/​fichierun.txt,/​home/​user/​Documents/​fichierdeux.txt"​ "​10.00\!0..1000\!0.05\!2"​ "​Lecture seule" "​27"​ "/​home/​user/​NouveauFichier.txt"​ "Texte multiligne"​ "​Valeur par défaut : texte simple"​)
Ligne 170: Ligne 169:
 </​code>​ </​code>​
 {{::​yad2.png?​500|}} {{::​yad2.png?​500|}}
 +
 +<note tip>Voir [[https://​doc.ubuntu-fr.org/​yad_yet_another_dialog#​recuperer_les_sorties_dans_les_boites_multiples|Récupérer les sorties dans les boites multiples]] ci dessous pour récupérer les valeurs des différents champs du formulaire dans un tableau.</​note>​
  
 Si l'on reprend l'​exemple précédent vous pouvez entrer votre recherche et choisir le moteur le plus approprié : Si l'on reprend l'​exemple précédent vous pouvez entrer votre recherche et choisir le moteur le plus approprié :
Ligne 178: Ligne 179:
 --field="​recherche:"​ ''​ \ --field="​recherche:"​ ''​ \
 --field="​Moteur:​CB"​ 'Forum ubuntu!^Google fr') --field="​Moteur:​CB"​ 'Forum ubuntu!^Google fr')
-rech=$(echo $search | awk 'BEGIN {FS="​|"​ } { print $1 }') +rech=$(echo ​"$search" ​| awk 'BEGIN {FS="​|"​ } { print $1 }') 
-moteur=$(echo $search | awk 'BEGIN {FS="​|"​ } { print $2 }')+moteur=$(echo ​"$search" ​| awk 'BEGIN {FS="​|"​ } { print $2 }')
 if [ "​$moteur"​ = "Forum ubuntu"​ ] if [ "​$moteur"​ = "Forum ubuntu"​ ]
 then then
Ligne 193: Ligne 194:
 Affiche une icône dans la zone de notification du panel (le systray). Affiche une icône dans la zone de notification du panel (le systray).
  
-Un exemple concret tout simple, qui affiche une icône et quitte lorsqu'​on ​clic gauche dessus :+Un exemple concret tout simple, qui affiche une icône et quitte lorsqu'​on ​clique ​gauche dessus :
 <​code>​yad --notification</​code>​ <​code>​yad --notification</​code>​
  
-On peux changer l'​icone ​avec le paramètre **--image**+On peux changer l’icône ​avec le paramètre **%%--%%image**
 <​code>​yad --notification --image="​gtk-help"</​code>​ <​code>​yad --notification --image="​gtk-help"</​code>​
 <​code>​yad --notification --image="​system-software-update"</​code>​ <​code>​yad --notification --image="​system-software-update"</​code>​
  
-Exemple avec un script faisant les mises à jour et affichant avec un icône dans la zone de notification pour le signaler : +Exemple avec un script faisant les mises à jour et affichant avec une icône dans la zone de notification pour le signaler : 
-<​code>#​!/​bin/​bash+<​code>​ 
 +#!/bin/bash
 MSG="​Mise à jour du système en cours, n'​éteignez pas l'​ordinateur..."​ MSG="​Mise à jour du système en cours, n'​éteignez pas l'​ordinateur..."​
 notify-send "​$MSG"​ notify-send "​$MSG"​
-faireMaJ () { (sudo apt update ; sudo apt full-upgrade) > /dev/null; quit ; }+faireMaJ () { (sudo apt update ; sudo apt full-upgrade) > /dev/null; }
 faireMaJ | yad --notification --no-middle --text="​$MSG"​ --image="​system-software-update"​ --command="​zenity --info --text \"​$MSG\""​ --listen faireMaJ | yad --notification --no-middle --text="​$MSG"​ --image="​system-software-update"​ --command="​zenity --info --text \"​$MSG\""​ --listen
-exit 0</​code>​+</​code>​
 {{::​yad.3.png?​400|}} {{::​yad.3.png?​400|}}
  
-La liste des noms d'​icones ​standard sont là : [[https://​wiki.gnome.org/​Attic/​GnomeArt/​Tutorials/​IconThemes#​Step_3._Icon_naming_.26_organization|LIEN]]+La liste des noms d’icônes ​standard sont là : [[https://​wiki.gnome.org/​Attic/​GnomeArt/​Tutorials/​IconThemes#​Step_3._Icon_naming_.26_organization|LIEN]]
  
 Quelques exemples du site officiel : [[https://​sourceforge.net/​p/​yad-dialog/​wiki/​NotificationIcon/​|LIEN]] Quelques exemples du site officiel : [[https://​sourceforge.net/​p/​yad-dialog/​wiki/​NotificationIcon/​|LIEN]]
  
-Reprenons l'​exemple d'​avant et mettons-le dans une icone.+Reprenons l'​exemple d'​avant et mettons-le dans une icône.
 <​code>​ <​code>​
 #!/bin/bash #!/bin/bash
Ligne 235: Ligne 237:
 --field="​recherche:"​ ''​ \ --field="​recherche:"​ ''​ \
 --field="​Moteur:​CB"​ 'Forum ubuntu!^Google fr') --field="​Moteur:​CB"​ 'Forum ubuntu!^Google fr')
-rech=$(echo $search | awk 'BEGIN {FS="​|"​ } { print $1 }') +rech=$(echo ​"$search" ​| awk 'BEGIN {FS="​|"​ } { print $1 }') 
-moteur=$(echo $search | awk 'BEGIN {FS="​|"​ } { print $2 }')+moteur=$(echo ​"$search" ​| awk 'BEGIN {FS="​|"​ } { print $2 }')
 if [ "​$moteur"​ = "Forum ubuntu"​ ] if [ "​$moteur"​ = "Forum ubuntu"​ ]
 then then
Ligne 256: Ligne 258:
 #!/bin/bash #!/bin/bash
 #####ID --KEY Création aléatoire de l'​id ​ #####ID --KEY Création aléatoire de l'​id ​
-id=$(echo $[($RANDOM % ($[10000 - 32000+ 1)) + 10000)+id=$(($RANDOM % ($((10000 - 32000)) + 1) + 10000))
 ##########​Onglet 1########## ##########​Onglet 1##########
 #####Avec une colonne#######​ #####Avec une colonne#######​
Ligne 287: Ligne 289:
 fi fi
 </​code>​ </​code>​
-===== Trucs et astuces ===== 
-==== États de sorties==== 
-0 L'​utilisateur a appuyé sur le bouton OK 
  
 +====--list====
 +Des cases à cocher.
 +Choisir un item dans une liste :
 +<​code>​
 +#!/bin/bash
 +# Affichage du contenu du fichier sélectionné
 +function usage {
 +echo "​Affichage du contenu du fichier sélectionné"​
 +echo "Un unique fichier sélectionné"​
 +echo "​affichage par cat"
 +}
 +if [[ "​$1"​ == "​-h"​ ]] || [[ "​$1"​ == "​-help"​ ]] || [[ "​$1"​ == "​-aide"​ ]]; then 
 +  usage
 +else
 +  retour=$(yad --title="​Fichier à afficher"​ --width 800 --height 200 --text-align="​center"​ --list --radiolist --column="​Sélectionné"​ --column="​Fichier"​ --column="​Mis à jour" --column="​Utillisé"​ False "​$HOME/​Documents/​FichierUn"​ "​Non"​ "​Non"​ False "​$HOME/​Documents/​FichierDEux"​ "​Oui"​ "​Non"​ True "​$HOME/​Documents/​FichierTrois"​ "​Oui"​ "​Non"​)
 +  cat "​$(echo "​$retour"​ | cut -d'​|'​ -f2)"
 +fi
 +</​code>​
 +{{ :​yad_disco_00_radiolist.png?​direct&​800 |}}
 +Et pour pourvoir sélectionner plusieurs lignes à la fois :
 +<​code>​
 +retour=$(yad --title="​Fichier à afficher"​ --width 800 --height 200 --text-align="​center"​ --list --checklist --column="​Sélectionné"​ --column="​Fichier"​ --column="​Mis à jour" --column="​Utillisé"​ False "/​home/​usr/​Documents/​FichierUn"​ "​Non"​ "​Non"​ False "/​home/​usr/​Documents/​FichierDEux"​ "​Oui"​ "​Non"​ True "/​home/​usr/​Documents/​FichierTrois"​ "​Oui"​ "​Non"​)
 +lesFichiers=$(echo "​$retour"​ | cut -d'​|'​ -f2)
 +for i in $lesFichiers;​ do 
 +  cat "​$i"; ​
 +done
 +</​code>​
 +{{ :​yad_disco_01_checklist.png?​direct&​800 |}}
 +<note tip>Bien qu'​étant qualifiée d'​obsolète par certains sites, l'​option --radiolist permet donc de limiter la sélection à un seul choix quand --checklist permet d'en faire plusieurs. Une autre manière de pouvoir sélectionner plusieurs items sans afficher de case à cocher consite à utiliser l'​option --multiple avec --list.</​note>​
 +===== Pango Markup Language - mettre en forme un texte =====
 +Le langage de Markup Pango est un langage de mise en forme très simple qui est supporté par Yad. Il permet de mettre en forme le texte via des balises <​span></​span>​.
  
-1 L'utilisateur a appuyé sur le bouton Annuler+Quelques balises inspirées du html existent aussi (sans balise <​span>​) : <b> pour gras, <u> pour souligné ... 
 + 
 +La liste des balises autorisées se trouvent ici : [[https://​developer.gnome.org/​pygtk/​stable/​pango-markup-language.html]] 
 + 
 +Exemples : 
 + 
 +**font_desc** : ''​%%--%%text="​une <span font_desc='​Sans italic 10'>​Maison</​span>​ neuve"''​ affiche ​le mot **maison** dans une police ''​sans'',​ en italique, avec une taille de 10.  
 + 
 +**font_desc** : ''​%%--%%text="​une <span font_desc='​Sans italic 10' strikethrough='​true'>​Maison</​span>​ neuve"''​ affiche le mot **maison** dans une police ''​sans'',​ en italique, avec une taille de 10 et barrée (strikethrough) 
 + 
 +**souligné** : ''​%%--%%text="​une <​u>​Maison</​u>​ neuve"''​ affiche le mot **maison** en souligné. 
 + 
 + 
 +===== Trucs et astuces ===== 
 +==== États de sorties==== 
 +Voilà le code (testable) renvoyé par **yad** quand on appuie sur certains boutons pour quitter une boite de dialogue :
  
 +**0** : L'​utilisateur a appuyé sur le bouton OK
  
-70 La boîte de dialogue a été fermée parce que le délai d'attente ​été atteint. (Dans le cas d'un timeout)+**1** : L'utilisateur ​appuyé sur le bouton Annuler
  
 +**70** : La boîte de dialogue a été fermée parce que le délai d'​attente a été atteint. (Dans le cas d'un timeout)
  
-252 La boîte de dialogue a été fermé ​en appuyant sur la touche Echap ou en cliquant sur le bouton de fermeture de la barre du titre de la boîte de dialogue+**252** : La boîte de dialogue a été fermée ​en appuyant sur la touche Echap ou en cliquant sur le bouton de fermeture de la barre du titre de la boîte de dialogue
  
  
Ligne 321: Ligne 368:
 echo "​$?"​ echo "​$?"​
 </​code>​ </​code>​
-Comme vous le constaté ​la fenêtre se ferme mais le script continu.+Comme vous le constatez ​la fenêtre se ferme mais le script continu.
  
 Personnellement lorsque je clique sur le bouton de fermeture, le bouton Annuler ou la touche Echap je veux arrêter le script. Personnellement lorsque je clique sur le bouton de fermeture, le bouton Annuler ou la touche Echap je veux arrêter le script.
Ligne 327: Ligne 374:
 Pour ce faire nous allons utiliser la [[:​tutoriel/​script_shell#​les_variables|variable bash]] $? qui contient le code de retour de la dernière opération. Pour ce faire nous allons utiliser la [[:​tutoriel/​script_shell#​les_variables|variable bash]] $? qui contient le code de retour de la dernière opération.
  
-Je me sert de [[:​tutoriel/​script_shell#​la_structure_case|la structure case]] mais Il existe d'autre méthodes.+Je me sers de [[:​tutoriel/​script_shell#​la_structure_case|la structure case]] mais Il existe d'autres ​méthodes.
 <​code>​ <​code>​
 #!/bin/bash #!/bin/bash
Ligne 347: Ligne 394:
 ====Les boutons.==== ====Les boutons.====
 ===Comportements=== ===Comportements===
-Il y-a deux types de comportements:​+Il y a deux types de comportements:​
  
 Si la sortie est numérique, la fenêtre se ferme. Si la sortie est numérique, la fenêtre se ferme.
Ligne 366: Ligne 413:
 yad --width="​300"​ --height="​300"​ --text="​Bouton personnalisé avec LABEL[!ICON[!TOOLTIP]]."​ --button='​Mon bouton!search!Ceci est mon bouton personnalisé:​0"'​ yad --width="​300"​ --height="​300"​ --text="​Bouton personnalisé avec LABEL[!ICON[!TOOLTIP]]."​ --button='​Mon bouton!search!Ceci est mon bouton personnalisé:​0"'​
 </​code>​ </​code>​
-L'​icone ​peut-être définie par son chemin complet ou par une icone système (Dans mon exemple "​search"​.).+L’icône ​peut être définie par son chemin complet ou par une icône ​système (Dans mon exemple "​search"​.). 
 + 
 +===Fermer la fenêtre et lancer une action=== 
 +Il est possible d'​affecter une action à un bouton yad. 
 +<​code>​ 
 +yad --form --field "​Bouton 1:btn" --field "​Bouton 2:btn" --field "​Bouton 3:btn" "echo '​bouton n°1 cliqué'"​ "echo '​bouton n°2 cliqué'"​ "echo '​bouton n°3 cliqué'"​ 
 +</​code>​ 
 +Dans cet exemple simple, l'​appui sur un bouton déclenche l'​affichage d'un message simple. Il est possible d'​aller un peu plus loin en activant une fonction personnalisée ou un script bash. 
 +<​code>​ 
 +function bonjour () { echo "​Bonjour ""​$USER""​.";​ PidYad=$(pgrep yad); echo "Le pid de Yad est ""​$PidYad";​ } 
 +export -f bonjour 
 +yad --form --field "​bonjour:​btn"​ "bash -c bonjour"​ 
 +</​code>​ 
 +Dans cet autre exemple, on crée une fonction toute simple qui affiche le nom de l'​utilisateur ainsi que le numéro d'​identification du processus affecté à yad. Cette fonction est ensuite appelée par le bouton personnalisé yad. 
 + 
 +Ce numéro pid (process identification digit) peut être utilisé pour fermer la fenêtre yad si le bouton appelle un script. En effet, comme indiqué ci-dessus, si la sortie du bouton n'est pas numérique, l'​appui sur le bouton ne permet pas de fermer la fenêtre. Avec cette astuce, il est possible de combiner les deux actions. Exemple : 
 +<​code>​ 
 +function ferme_yad () { bonjour ; PidYad=$(pgrep yad); kill -s SIGUSR1 "​$PidYad";​} 
 +export -f ferme_yad 
 +yad --form --field "​bonjour:​btn"​ "bash -c ferme_yad"​ 
 +</​code>​
 ====Récupérer les sorties dans les boîtes multiples.==== ====Récupérer les sorties dans les boîtes multiples.====
 Dans les boîtes multiples la sortie standard sera de type champ1|champ2|champ3| où "​|"​ est le séparateur par défaut. Dans les boîtes multiples la sortie standard sera de type champ1|champ2|champ3| où "​|"​ est le séparateur par défaut.
Ligne 387: Ligne 454:
 echo "​$champ3"​ echo "​$champ3"​
 </​code>​ </​code>​
 +Une autre méthode consiste à éclater l'​ensemble des valeurs dans un tableau en modifiant **temporairement** la valeur de la variable interne bash $IFS qui détermine le séparateur par défaut (en général l'​espace).
 +<​code>​
 +usr@pc:~$ ANC_IFS="​$IFS";​ IFS='​|'​ read -ra LesParametres <<<​ "​$retour"​ ; IFS="​$ANC_IFS"​
 +usr@pc:~$ echo "​Champs 1 : ""​${LesParametres[0]}"​
 +usr@pc:~$ echo "​Champs 2 : ""​${LesParametres[1]}"​
 +usr@pc:~$ echo "​Champs 3 : ""​${LesParametres[2]}"​
 +</​code>​
 +Explications :
 +  * ANC_IFS="​$IFS"​ : stockage de la valeur initiale de $IFS dans une nouvelle variable $ANC_IFS
 +  * IFS='​|'​ : la valeur de $IFS est fixée à |, le caractère de séparation des champs à la sortie de yad
 +  * read -ra LesParametres <<<​ "​$retour" ​ : affecte l'​ensemble des champs dans le tableau $LesParametres. La valeur du premier champ de $retour est insérée dans la case d'​indice 0 de $LesParametres,​ celle du deuxième champ dans la case d'​indice 1 et ainsi de suite
 +  * IFS="​$ANC_IFS"​ : la valeur initiale de $IFS est rétablie
 +  * Pour accéder à la valeur de chaque champ, il suffit d'​accéder à la case d'​indice correspondant dans le tableau $LesParametres qui est affichée par ${LesParametres[i]} ou i est l'​indice de la case.
 ==== Gestion d'​erreur : Gtk-Message ==== ==== Gestion d'​erreur : Gtk-Message ====
-L'​utilisation de fenêtres gtk génère l'​affichage d'un message d'​erreur dans la console. ​+L'​utilisation de fenêtres gtk génère l'​affichage d'un message d'​erreur dans la console.
 <​code>​ <​code>​
 usr@pc:​~/​Rep$ Gtk-Message:​ GtkDialog mapped without a transient parent. This is discouraged. usr@pc:​~/​Rep$ Gtk-Message:​ GtkDialog mapped without a transient parent. This is discouraged.
Ligne 403: Ligne 483:
 ===== Voir aussi ===== ===== Voir aussi =====
    
-  * **(en)** [[https://​sourceforge.net/​projects/​yad-dialog|Site officiel ​du logiciel]] +  ​* **(en)** [[http://​manpages.ubuntu.com/​manpages/​wily/​man1/​yad.1.html|Manuel des fonctions]] 
-  * **(en)** [[https://​groups.google.com/​forum/#​!forum/​yad-common|Forum de discution du logiciel. L'​auteur ​participe ​souvent.]] +  * **(en)** [[http://​smokey01.com/​yad/​|Exemples simples de toutes les fonctions de base (Recommandé)]] 
-  * **(en)** [[https://​www.thelinuxrain.com/​articles/​multiple-item-data-entry-with-yad|Exemples ​illustrés pour les formulaires à items multiples]]+  ​* **(en)** [[https://​sourceforge.net/​p/yad-dialog/​wiki/​browse_pages/​|Site officiel ​avec exemples d'​applications]] 
 +  * **(en)** [[https://​groups.google.com/​forum/#​!forum/​yad-common|Forum de discussion. L'​auteur participe.]] 
 +  * **(en)** [[http://​www.thelinuxrain.com/​articles/​the-buttons-of-yad|Exemples sur les boutons]] 
 +  * **(en)** [[http://​www.thelinuxrain.com/​articles/​multiple-item-data-entry-with-yad|Exemples ​sur les items multiples]]
   * **(en)** [[https://​pypi.python.org/​pypi?​name=yad&​version=0.9.3&:​action=display|Ajouter Yad à vos scripts Python (non testé)]]   * **(en)** [[https://​pypi.python.org/​pypi?​name=yad&​version=0.9.3&:​action=display|Ajouter Yad à vos scripts Python (non testé)]]
-  * **(en)** [[https://​www.thelinuxrain.com/​articles/​the-buttons-of-yad|Les boutons avec Yad]] +
-  * **(en)** [[http://​smokey01.com/​yad/​|Bien utile liste détaillée d'​exemples]] +
- +
 ---- ----
-//​Contributeurs principaux : [[sergeG75018]].//​+//​Contributeurs principaux : [[sergeG75018]], LukePerp., [[utilisateurs:​amiralgaby]]//
    
 //Basé sur [[http://​manpages.ubuntu.com/​manpages/​wily/​man1/​yad.1.html|« les pages du manuel »]].// //Basé sur [[http://​manpages.ubuntu.com/​manpages/​wily/​man1/​yad.1.html|« les pages du manuel »]].//
- 
- 
- 
- 
- 
- 
- 
- 
- 
- 
  • yad_yet_another_dialog.1531559864.txt.gz
  • Dernière modification: Le 14/07/2018, 11:17
  • par 80.215.113.109