shell-script-pt
[Top][All Lists]
Advanced

[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]



reply via email to

[Prev in Thread] Current Thread [Next in Thread]