web-dev-qa-db-fra.com

Comment éditer les étiquettes de questions YAD (exemple)?

YAD est un fork de Zenity.

J'ai ce script yad:

#!/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 de bureau en tant que lanceur d’applications, il peut être utilisé pour afficher une fenêtre lorsque vous cliquez sur un fichier (par exemple, un script, etc.).

enter image description here

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

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 et Edit peuvent être modifiés.

Je pense que ici il dit que yad a les moyens d'éditer les étiquettes:

--button = BOUTON: 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 sous la forme LABEL [! ICON [! TOOLTIP]] où `! ' est un séparateur d'objets. La liste complète des articles en stock se trouve dans le programme gtk-demo, dans un extrait 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 ID a une valeur non numérique, il est traité comme une commande et un clic sur ce bouton ne ferme pas la boîte de dialogue.

Mais je ne suis pas sur. Et je ne sais pas quoi faire de cette information. J'ai besoin d'un exemple sur la manière dont les noms des boutons de mon script yad peuvent être modifiés.

J'ai raisons utiliser yad à la place de zenity - le script zenity ne peut pas être renvoyé avec close ou Esc.

4
user47206

Je ne suis pas tout à fait sûr de ce que vous voulez dire, mais si je comprends bien, vous voulez quelque chose comme ça:

#!/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 ( buntuusers.de ), mais c'est en allemand. Il existe cependant quelques exemples de code et d’images qui pourraient vous aider. Et vous pouvez toujours le traduire avec Google.

J'aurais écrit cela comme un commentaire si je le pouvais, mais je ne suis pas encore autorisé à le faire. J'espère que ça aide.

5
jarleih

Il m'est arrivé d'écrire ceci il y a quelques jours pour une question personnelle ( n modèle Bash permettant d'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 partage:

websync 1

Notez les six boutons à l’écran et leur traitement dans le code ci-dessous (désolé, il reste un travail en cours). Une remarque importante concerne l'utilisation de boutons personnalisés pour toujours intercepter les codes de retour par défaut, tels que 252 pour Échap et 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
2
WinEunuuchs2Unix