Como editar rótulos de pergunta YAD (exemplo)?

4

YAD é um fork do Zenity.

Eu tenho este script yad :

#!/bin/bash

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

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

Associado a um arquivo da área de trabalho como inicializador de aplicativos, ele pode ser usado para exibir uma janela ao clicar em um arquivo (por exemplo, um script etc.).

No zenity, o nome dos marcadores pode ser editado:

O mesmo script com o Zenity deve ser assim:

#!/bin/bash

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

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

E Run e Edit podem ser alterados.

Acho que aqui diz que yad tem meios para editar os marcadores:

  

- botão = BOTÃO: 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
     

botões (como gtk-close ou gtk-ok) ou texto em um formulário   LABEL [! ICON [! TOOLTIP]] onde '!' é um separador de itens. Lista completa de   itens de estoque podem ser encontrados no programa gtk-demo, em snippet chamado "Stock   Itens e Navegador de Ícones ". Se nenhum botão tiver especificado os botões OK e Cancelar   usava. Veja a seção Sair do Status para mais. Se o ID tiver um valor não numérico   trata como um comando e clica em tal botão não fecha o   diálogo.

Mas não tenho certeza. E eu não sei o que fazer com essa informação. Preciso de um exemplo de como os botões do meu script yad acima podem ter seus nomes alterados.

Eu tenho motivos para usar yad em vez de zenity - o script zenity não pode ser descartado com fechamento ou Esc.

    
por cipricus 07.03.2017 / 10:55

2 respostas

4

Eu não tenho certeza do que você quer dizer, mas se eu entendi corretamente, você quer algo assim:

#!/bin/bash

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

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

Eu encontrei um link ( ubuntuusers.de ), mas é em alemão. No entanto, existem alguns exemplos de código e imagens que podem ajudar. E você sempre pode traduzi-lo com o google.

Eu teria escrito isso como um comentário, se pudesse, mas ainda não tenho permissão para isso. Espero que ajude.

    
por jarleih 15.03.2017 / 16:55
1

Por acaso escrevi isso alguns dias atrás para uma pergunta minha ( Modelo de Bash para usar zenity (ou yad) para inserir / editar / apagar registros em um arquivo ou banco de dados ) e achou que valesse a pena compartilhar:

Observe os seis botões na tela e como eles são tratados no código abaixo (desculpe ainda um trabalho em andamento). Uma observação importante é quando usamos botões personalizados para sempre capturar os códigos de retorno padrão, como 252 para Escape e fechar o Windows (clicando em 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
    
por WinEunuuchs2Unix 22.03.2017 / 00:11