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 07/07/2019, 12:40]
zococo [--notebook]
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 49: Ligne 49:
  <​note>​  <​note>​
 L'​auteur fourni une petite application qui permet de lister les icônes 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 76: 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 ​ |
Ligne 90: 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^
Ligne 123: Ligne 123:
 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 icône 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 150: 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====
Ligne 169: 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 177: 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 195: Ligne 197:
 <​code>​yad --notification</​code>​ <​code>​yad --notification</​code>​
  
-On peux changer l’icône 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 une 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|}}
  
Ligne 234: 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 255: 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 302: Ligne 305:
 else 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"​)   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)+  ​cat "$(echo "​$retour"​ | cut -d'​|'​ -f2)"
 fi fi
-exit 0; 
 </​code>​ </​code>​
-===== Trucs et astuces ​===== +{{ :​yad_disco_00_radiolist.png?​direct&​800 |}} 
-==== États de sorties==== +Et pour pourvoir sélectionner plusieurs lignes à la fois : 
-0 L'​utilisateur a appuyé sur le bouton OK+<​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>​.
  
 +Quelques balises inspirées du html existent aussi (sans balise <​span>​) : <b> pour gras, <u> pour souligné ...
  
-1 L'utilisateur a appuyé sur le bouton Annuler+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é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+**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 340: 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 388: Ligne 416:
  
 ===Fermer la fenêtre et lancer une action=== ===Fermer la fenêtre et lancer une action===
-Il est possible d'​affecter une action à un bouton yad. +Il est possible d'​affecter une action à un bouton yad.
 <​code>​ <​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é'"​ 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é'"​
Ligne 426: 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 449: Ligne 490:
   * **(en)** [[http://​www.thelinuxrain.com/​articles/​multiple-item-data-entry-with-yad|Exemples sur les items multiples]]   * **(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é)]]
- +
 ---- ----
-//​Contributeurs principaux : [[sergeG75018]],​ LukePerp.//+//​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.1562496052.txt.gz
  • Dernière modification: Le 07/07/2019, 12:40
  • par zococo