[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [shell-script] Zenity + Lista de opções e sem botão de Cancel
From: |
Julio C. Neves |
Subject: |
Re: [shell-script] Zenity + Lista de opções e sem botão de Cancel |
Date: |
Tue, 16 Apr 2013 22:17:05 -0300 |
Fala Leslie,
vc ficará totalmente espantado quando conecer o YAD. Tem todos os dílogos
do zenity (com absolutamente a mesma sintaxe) e muitos outros, tendo
inclusive o form, que gera formulários bastante complexos. Tem tb o
notebook que te permite criar um formulário com diversas abas.
Tem muito mais coisas. Publiquei um livro chamado Bombando o Shell, no qual
dediquei quase uma centena de páginas ao yad. Veja só o que falo do uso de
botões:
=======================================
*Definindo um botão em uma caixa de diálogo:*
*--button=BOTAO:ID*
*Para** ID **numérico:*
Adiciona o botão BOTAO à caixa. Se este botão for clicado, o diálogo
produzirá o código de retorno ($?) definido por ID. Há duas maneiras de
definir estes botões:
1.
Simplesmente criando o seu nome e ID. Ex: --button OK:0
2.
Usando botões padrão do GTK+. Ex: --button gtk-ok
Em ambos os casos, o código de retorno será zero e no botão terá escritoOK. A
diferença é que no botão padrão GTK+ a letra O (de OK) virá sublinhada,
para dizer que a combinação de teclas <ALT>+O equivale ao clique do botão.
Você também pode reproduzir este efeito colocando um sublinha (_) antes da
letra que você queira que apareça sublinhada. Por exemplo:
fazendo-se--button="_Botão:0" criamos
um botão onde estará escrito *B*otão e seu código de retorno ($?) será zero.
A lista completa de botões pode ser encontrada na documentação do GTK. E
para consultá-la execute o programa /usr/bin/gtk-demo e procure o item *"Stock
Items and Icon Browser"*. Caso não esteja instalado, faça:
$ sudo apt-get install gtk2.0-examples
O nome do botão, é o que se encontra na terceira coluna.
*Para** ID **não numérico:*
Se ID for não numérico, será tratado como um comando e um clique nesse
botão não encerrará o diálogo, executará a instrução e voltará ao ponto em
que estava. Se no escopo deste comando aparecer a cadeia %d o YAD irá
substituí-la pelo seu PID.
*--buttons-layout=TIPO *
Além do que já vimos sobre botões, ainda tem mais essa opção, com a qual
especificamos a forma (TIPO) de situar os botões na parte inferior do
diálogo. TIPO pode receber os seguintes valores:
spread Espalha os botões no diálogo, abrangendo o máximo possível da linha,
isto é, se o diálogo tiver, por exemplo, 2 botões, o espaço que sobrar na
linha será dividido por 3, ficando uma parte antes do 1º botão, outra entre
os 2 botões, e a 3ª entre o último botão e a borda direita do formulário;
edge Colocará o 1º e o último bem próximos às bordas do diálogo. Os outros
serão uniformemente distribuidos;
start Colocará os botões próximos à borda esquerda do diálogo;
end Colocará os botões próximos à borda direita do diálogo. Se nada for
especificado, este será o valor tomado por padrão (*default*);
center Agrupará os botões no centro do formulário.
*Uso de botões como campo de um form:*
--field ROTULO[!DICA]:BTN CMD
Onde:
ROTULO é o texto que estará escrito no botão (pode usar um caractere
sublinha (_) antes de uma letra para que ela apareça sublinhada e você
possa usar <ALT>+<letra> para substituir o clique do botão);
DICA é um texto opcional que aparecerá quando o ponteiro do *mouse* estiver
sobre o botão;
CMD Comando que será executado quando o botão for clicado.
Em CMD, o YAD dá tratamento especial a 2 caracteres :
Em campos no formato @CMD N:TEXTO, onde N é um número, o conteúdo de TEXTO será
enviado para o eNésimo campo;
Em CMD que ocorra uma cadeia do tipo %N, onde N é um número, %N será
substituído pelo valor do eNésimo campo;
=======================================
Repare que no diálogo abaixo, só troquei zenity por yad e defini somente o
botão OK. Se não tivesse definido este botão, ele, assim como o zenity,
teria criado os 2.
CODIFICACAO=$(yad --list --text \
"Qual a Codificação de Caracteres que seu projeto irá usar:" \
--button gtk-ok --radiolist --column "Escolha" \
--column "Codificação" TRUE "UTF-8" FALSE "ISO-8859-1")
Olhe o que essa linha criou:
[image: Imagem inline 1]
Tirei as bordas para facilitar a visualização. Esse yad é o cão chupando
manga.
Abcs,
Julio
*@juliobash
*
Em 15 de abril de 2013 16:41, Leslie Watter <address@hidden> escreveu:
> **
>
>
> Salve Amigos,
>
> Estou à procura de alguma opção no Zenity que remova o botão cancel de uma
> lista de opções.
>
> tenho o seguinte:
>
> CODIFICACAO=$(zenity --list --text "Qual a Codificação de Caracteres que
> seu projeto irá usar:" --radiolist --column "Escolha" --column
> "Codificação" TRUE "UTF-8" FALSE "ISO-8859-1");
>
> Ele mostra a opção no zenity, mas tem o dito do botão cancel.
>
> no Xdialog eu faria:
>
> ----------------------------------------------------------
>
> function escolhe_codificacao(){
> Xdialog --no-cancel --backtitle "Codificação de Caracteres Padrão do
> Eclipse" \
> --title "Escolha a Codificação de Caracteres Padrão do Eclipse" \
> --no-tags --radiolist "Escolha a Codificação de Caracteres Padrão
> do Eclipse\n\
> Projetos novos => UTF8 \n\
> Projetos em desenvolvimento => ISO-8859-1\n" 0 0 5 \
> "8" "UTF-8 - Projetos novos" off \
> "1" "ISO-8859-1 - Projetos em Desenvolvimento" ON
> 2>/tmp/checklist.tmp.$$
>
> retval=$?
> choice=`cat /tmp/checklist.tmp.$$`
> rm -f /tmp/checklist.tmp.$$
>
> case $retval in
> 0)
> return $choice
> ;;
> 1)
> echo "Cancel pressed.";
> ;;
> 255)
> echo "Box closed.";
> ;;
> esac
> return 0;
> }
> ----------------------------------------------------------
>
> e pronto, só que no ubuntu eles fizeram o favor de tirar o Xdialog da
> distro :( ....
>
> alguém ai tem alguma idéia de como fazer o diálogo gráfico sem o botão de
> cancel usando o zenity ou algum outro equivalente ?
>
> []s
>
> LEslie
>
> --
> Leslie H. Watter
>
> [As partes desta mensagem que não continham texto foram removidas]
>
>
>
[As partes desta mensagem que não continham texto foram removidas]