4 votes

Comment modifier les étiquettes des questions YAD (exemple) ?

YAD est une fourche de Zenity.

J'ai ceci yad script :

#!/bin/bash

yad --text="Execute the file? (press 'Cancel' to open in text editor)" 

case $? in
    0)thunar "$1"
    ;;
    1)gedit $1
    ;;
esac

Associé à un fichier du bureau comme lanceur d'application, il peut être utilisé pour afficher une fenêtre lors d'un clic sur un fichier (par exemple un script, etc).

enter image description here

Dans zenity, le nom des étiquettes peut être modifié :

Le même script avec Zenity devrait ressembler à ceci :

#!/bin/bash

zenity --question --text="What to do?" \
       --ok-label=Run \
       --cancel-label=Edit

case $? in
    0)thunar "$1"
    ;;
    1)gedit $1
    ;;
esac

Et Run y Edit peut être modifié.

Je pense que aquí il est dit que yad dispose de moyens pour éditer les étiquettes :

--button=BUTTON:ID

Add the dialog button. May be used multiply times. ID is an exit code or a command. BUTTON may be gtk stock item name for predefined

des boutons (comme gtk-close ou gtk-ok) ou du texte dans un formulaire LABEL[!ICON[!TOOLTIP]] où `!' est un séparateur d'éléments. La liste complète des éléments de stock peut être trouvée dans le programme gtk-demo, dans le snippet appelé "Stock Items and Icon Browser". Si aucun bouton n'est spécifié, les boutons OK et Annuler sont utilisés. Voir la section Statut de sortie pour plus d'informations. Si l'ID a une valeur non numérique il est traité comme une commande et un clic sur un tel bouton ne ferme pas la boîte de dialogue.

Mais je ne suis pas sûr. Et je ne sais pas quoi faire de cette info. J'ai besoin d'un exemple sur la façon dont les boutons de mon site Web peuvent être utilisés. yad script ci-dessus peuvent avoir leurs noms modifiés.

J'ai raisons à utiliser yad au lieu de zenity - le script de zenity ne peut pas être rejeté avec close ou Esc.

5voto

jarleih Points 666

Je ne suis pas totalement sûr de ce que vous voulez dire, mais si je comprends bien, vous voulez quelque chose comme ceci :

#!/bin/bash

yad --text="Execute the file?" --button="Execute" --button="Edit"

case $? in
    0)thunar "$1"
    ;;
    1)gedit $1
    ;;
esac

J'ai trouvé un lien ( ubuntuusers.de ), mais il est en allemand. Il y a cependant quelques exemples de code et des images qui pourraient vous aider. Et vous pouvez toujours le traduire avec Google.

J'aurais écrit ceci en tant que commentaire si j'avais pu, mais je n'en ai pas encore le droit. J'espère que cela vous aidera.

2voto

WinEunuuchs2Unix Points 91128

J'ai écrit ceci il y a quelques jours pour une question que je me posais moi-même ( Modèle Bash pour utiliser zenity (ou yad) pour insérer / modifier / supprimer des enregistrements dans un fichier ou une base de données ) et j'ai pensé que cela valait la peine d'être partagé :

websync 1

Remarquez les six boutons à l'écran et la façon dont ils sont traités dans le code ci-dessous (désolé, c'est encore un travail en cours). Il est important de noter que lors de l'utilisation de boutons personnalisés, il faut toujours capturer les codes de retour par défaut comme 252 pour Escape et la fermeture de Windows (en cliquant sur X).

while true ; do

Record=(`yad \
    --title "websync - Compare local scripts to those published on internet." --list \
        --text '<span foreground="blue" font="14">Toggle select next to file then click action button</span>' \
        --width=900 --height=600 --center --radiolist -separator="$IFS" --no-click \
        --button="Insert before":1 --button=Edit:2 --button=Delete:3 --button=Run:4 \
        --button="Cancel ALL":5 --button=Save:6 --search-column=3 \
        --column "Select" --column "Record number" --hide-column=2 --column "File Name" \
        --column "Status" --column " Website Address" \
        "${choices[@]}"`)
Action=$?

RecSelected=false
RecArr=()
i=0

# With radio list only one choice is possible
for Field in "${Record[@]}" ; do
    RecSelected=true
    RecArr[i]=$Field
# echo "RecArr $i ${RecArr[$i]}"
    ((i++))
done

echo "button: $Action"# 
# Note: When X closes window or Escape pressed 252 is returned.

# Insert before || or Edit ?
if [[ $Action == 1 ]] || [[ $Action == 2 ]] ; then
    RecArr[3]="New"
    # --text="Set fields and click OK to update" 
    # Note if there is a space at end of line, next line generates invalid command error from yad
    yad --width=600 --height=400 --title="Link file to Website Address" \
        --form --center \
        --field="Record Number":RO --field="File name":FL --field="Status":RO \
        --field="Website Address":TXT \
        ${RecArr[1]} ${RecArr[2]} ${RecArr[3]} ${RecArr[4]}
    ret=$?

    # Cancel =252, OK = 0
    if [[ $ret == 0 ]] ; then
        # Update array and renumber
        : # noop
    else
        continue # cancel changes.
    fi

elif [[ $Action == 3 ]] ; then
    : # Delete
elif [[ $Action == 4 ]] ; then
    : # Run
elif [[ $Action == 5 ]] || [[ $Action == 252 ]] ; then
    # Cancel ALL || or X the window or Escape
    exit
elif [[ $Action == 6 ]] ; then
    # Save
    exit
else
    zenity --error --text "~/bin/websync - Unknown button return code: $Action"
fi

done # End of while loop

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X