Difference: TWikiBarZenity (1 vs. 7)

Revision 723 Mar 2010 - JulioNeves

Line: 1 to 1
 
META TOPICPARENT name="BatePapos"

Papo de Botequim 2.0 (um livro completo de ZENITY)

Line: 92 to 92
 --height
    Especifica em pixels a altura das caixas de diálogo.
Changed:
<
<

Opção --calendar

>
>

Caixa de diálogo --calendar

 
Line: 145 to 145
 
Widget Calendar
Changed:
<
<

Opção --warning

>
>

Caixa de diálogo --warning

 
Line: 167 to 167
 
  • Inserir widget warnig aqui
Changed:
<
<

Opção --question

>
>

Caixa de diálogo --question

 
Line: 197 to 197
  Temos ainda o parâmetro --no-wrap que pode ser usado caso o texto definido por --text seja grande e você não queira dividi-lo em mais de uma linha.
Changed:
<
<

Opção --entry

>
>

Caixa de diálogo --entry

 

Revision 621 Mar 2010 - JulioNeves

Line: 1 to 1
 
META TOPICPARENT name="BatePapos"
Changed:
<
<

Papo de Botequim 2.0

>
>

Papo de Botequim 2.0 (um livro completo de ZENITY)


ALERT! Em Construção: Mas já dá para começar a estudar, mesmo faltando as figuras dos diálogos!
 


Changed:
<
<

Papo de Botequim 2.0.1

>
>

Papo de Botequim 2.0.1 (ZENITY 1a. parte)

 Há alguns dias estava andando no calçadão e eis que encontro o Chico, o meu garçom preferido... Conversamos um pouco, quando contou-me que estava trabalhando, vejam só, no "Pinguim Carioca". Como já sou mesmo chegado a um boteco e muito mais a um pinguim, no primeiro sábado que passaria em casa, convidei um amigo para tomar um chope.

Lá chegando, logo após a primeira rodada de canecas, o amigo me fala na maior cara de pau:

Changed:
<
<
- Pô mermão (com sotaque carioca), você tem de se modernizar... Porque insistir em desenvolver programas com interfaces arcaicas orientadas a caractere? Porque você não parte para algo mais atual?
>
>
    - Pô mermão (com sotaque carioca), você tem de se modernizar... Porque insistir em desenvolver programas com interfaces arcaicas orientadas a caractere? Porque você não parte para algo mais atual?
  Fiquei indignado com aquilo e respondi:
Changed:
<
<
- Cara, você que tem de se modernizar e largar esta porcaria que você chama de sistema operacional e que lhe deixa na mão a toda hora, sem falar nos custos, vírus e nas telas azuis que você ganha pelo menos uma vez ao dia.
>
>
    - Cara, você que tem de se modernizar e largar esta porcaria que você chama de sistema operacional e que lhe deixa na mão a toda hora, sem falar nos custos, vírus e nas telas azuis que você ganha pelo menos uma vez ao dia.
 
Changed:
<
<
A partir de hoje e nas próximas vezes que viermos aqui, vou lhe mostrar as interfaces gráfica que foram desenvolvidas para serem usadas diretamente do Shell e verá que são muito mais concisas e fáceis de usar que as que você conhece.
>
>
    A partir de hoje e nas próximas vezes que viermos aqui, vou lhe mostrar as interfaces gráfica que foram desenvolvidas para serem usadas diretamente do Shell e verá que são muito mais concisas e fáceis de usar que as que você conhece.
 
Changed:
<
<
É necessário no entanto, ter um bom conhecimento de Shell, o que você consegue nos Papos de Botequim que estão lá em http://www.julioneves.com
>
>
    É necessário no entanto, ter um bom conhecimento de Shell, o que você consegue nos Papos de Botequim que estão lá em http://www.julioneves.com
 
Changed:
<
<
- Chico, traz mais dois chopes! Você não esqueceu que o meu é sem colarinho, né?
>
>
    - Chico, traz mais dois chopes! Você não esqueceu que o meu é sem colarinho, né?
 
Changed:
<
<
Agora, e nos nossos próximos encontros, vou lhe dar um curso sobre os programas que fazem interface gráfica para o Shell, começando pelo zenity, que é completo e extenso o suficiente para que este nosso papo se estique por mais uns três encontros.
>
>
    Agora, e nos nossos próximos encontros, vou lhe dar um curso sobre os programas que fazem interface gráfica para o Shell, começando pelo zenity, que é completo e extenso o suficiente para que este nosso papo se estique por mais uns três encontros.
 

Como tudo começou

Line: 103 to 109
 until data=$(zenity --calendar --title "Datas dos vôos" --text "Escolha uma data para o vôo de ida"
Changed:
<
<
--day $(date +%d) --month $(date +%m)
>
>
--day $(date +%_d) --month $(date +%_m)
  --year $(date +%Y)) do :
Line: 128 to 136
 Como você viu, a saída padrão (default) é no formato dd-mm-aaaa para alterar este formato podemos usar os mesmos caracteres de formatação do comando date. Experimente o seguinte:

Changed:
<
<
zenity --calendar --date-format="%Y/%m/%d"
>
>
zenity --calendar --date-format="%Y/%m/%d"
 2008/07/19
Line: 148 to 156
  O diálogo de warning (atenção) serve para você fazer uma advertência ao operador. Vejamos um fragmento de programa que é melhor ser executado por um usuário root, pois terá restrições de uso para um usuário comum.
Added:
>
>
 [ $UID -eq 0 ] || zenity --warning --title="Você não é root" --text="Você não terá acesso a todas as opções"
Added:
>
>

Na primeira linha, comparamos a variável do interna $UID, do operador, e comparamos com zero (qualquer usuário root tem UID=0). Caso seja diferente, um diálogo de atenção será disparado.

  • Inserir widget warnig aqui

Opção --question

Opção Efeito
--no-wrap Não permite quebra automática do texto
--text=TEXTO Define o texto da pergunta

O diálogo de pergunta (--question) irá lhe fazer uma pergunta e oferecer como resposta 2 botões: OK e CANCEL. Caso seja pressionado o OK, o código de retorno ($?) será igual a zero, caso contrário será diferente de zero.

 
Changed:
<
<
Na primeira linha, comparamos a variável do interna $UID, do operador, e comparamos com zero (qualquer usuário root tem UID=0). Caso seja diferente, um diálogo de atenção será disparado. Opção --question Opção Efeito --text=TEXTO Define o texto da pergunta --no-wrap Não permite quebra automática do texto O diálogo de pergunta (--question) irá lhe fazer uma pergunta e oferecer como resposta 2 botões: OK e CANCEL. Caso seja pressionado o OK, o código de retorno ($?) será igual a zero, caso contrário será diferente de zero. Aproveitando isso, após o diálogo de advertência mostrado no exemplo anterior, poderíamos perguntar ao operador se ele deseja mudar para root. Para isso fazemos:
>
>
Aproveitando isso, após o diálogo de advertência mostrado no exemplo anterior, poderíamos perguntar ao operador se ele deseja mudar para root. Para isso fazemos:

 Resp=n zenity --question --title "Responda" --text "Deseja mudar para root?" && Resp=s
Changed:
<
<
E ao fim da execução a variável $Resp teria obrigatoriamente s ou n. As man pages, por incrível que pareça, têm um exemplo bastante engraçado do uso desta opção. Veja: Temos ainda o parâmetro --no-wrap que pode ser usado caso o texto definido por --text seja grande e você não queira dividi-lo em mais de uma linha. Opção --entry Opção Efeito --text=TEXTO Define o texto da caixa --entry-text=TEXTO Valor padrão (default) --hide-text Esconde o valor digitado (senhas) Esta opção abre uma janela de diálogo, requisitando uma entrada de dados ao operador. Vamos continuar nos exemplos em que o cara deveria ser root para aproveitar todas as facilidades oferecidas por um determinado aplicativo, mas primeiramente vamos pegar o exemplo anterior e inseri-lo neste contexto:
>
>

  • Inserir figura do dialogo question

E ao fim da execução a variável $Resp teria obrigatoriamente s ou n.

As man pages, por incrível que pareça, têm um exemplo bastante engraçado do uso desta opção. Veja:

  • Inserir figura do dialogo question do exemplo das man pages

Temos ainda o parâmetro --no-wrap que pode ser usado caso o texto definido por --text seja grande e você não queira dividi-lo em mais de uma linha.

Opção --entry

Opção Efeito
--hide-text Esconde o valor digitado (senhas)
--text=TEXTO Define o texto da caixa
--entry-text=TEXTO Valor padrão (default)

Esta opção abre uma janela de diálogo, requisitando uma entrada de dados ao operador. Vamos continuar nos exemplos em que o cara deveria ser root para aproveitar todas as facilidades oferecidas por um determinado aplicativo, mas primeiramente vamos pegar o exemplo anterior e inseri-lo neste contexto:

 if zenity --question --title "Responda" --text "Deseja mudar para root?"
Line: 189 to 219
  --text "Informe a senha de root:" --hide-text) fi
Changed:
<
<
echo $Senha 123456 O comando if testou o diálogo de pergunta e caso o botão clicado seja OK, o programa lançará a caixa de entrada de dados a seguir para capturar a senha. Repare que a opção --hide-text não deixa o texto que está sendo digitado aparecer na tela.
>
>
echo $Senha 123456

  • Inserir figura do diálogo question

O comando if testou o diálogo de pergunta e caso o botão clicado seja OK, o programa lançará a caixa de entrada de dados a seguir para capturar a senha. Repare que a opção --hide-text não deixa o texto que está sendo digitado aparecer na tela.

 Poderíamos oferecer um valor padrão (default), para isso fazemos:
Added:
>
>
 Usuário=$(zenity --entry --title "Captura nome de usuário" --text "Informe o nome do usuário na máquina remota:" --entry-text $LOGNAME)
Changed:
<
<
Pois é, amigo, está gostando? É por enquanto o negócio parece ser bom e conciso como você falou... Então, de brincadeira, vamos desenvolver um "sistemeco" para nos lembrar dos aniversários dos amigos. Desta vez vou te deixar a incumbência de fazer um script para montar o arquivo de aniversariantes, que tem o lay-out a seguir: Campo Data de Nascimento Nome Endereço de e-mail Telefone Formato AAAAMMDD Xxxx Xxxx Usuário@dominio (DD) NNNN-NNNN
>
>

  • Inserir caixa de diálogo com entry-text

    - Pois é, amigo, está gostando?

    - É por enquanto o negócio parece ser bom e conciso como você falou...

    - Então, de brincadeira, vamos desenvolver um "sistemeco" para nos lembrar dos aniversários dos amigos. Desta vez vou te deixar a incumbência de fazer um script para montar o arquivo de aniversariantes, que tem o lay-out a seguir:

Campo Data de Nascimento Nome Endereço de e-mail Telefone
Formato AAAAMMDD Xxxx Xxxx Usuário@dominio (DD) NNNN-NNNN
 Repare que o campo Data de Nascimento é o primeiro e está no formato ano, mês, dia sem barras separadoras. Isso foi feito porque o arquivo deverá estar sempre ordenado por data e este formato facilita esta classificação. O separador entre os quatro campos será o dois-pontos (:) O script será feito em Shell, porém todas as interações com o usuários, isto é, leitura dos dados, avisos de erros e advertências, serão feitas via caixas de diálogo zenity.
Changed:
<
<
- Chico, fecha a conta que eu vou nessa, mas não demoro a voltar...
>
>
    - Chico, fecha a conta que eu vou nessa, mas não demoro a voltar...
 
Added:
>
>
Pinguim com placa de atenção
 
Changed:
<
<
album 1^Artista1~Musica1:Artista2~Musica2
>
>
Aulas de ZENITY ou SHELL mande um e-mail para o Julio Neves para informar-se.
 
Deleted:
<
<
Pinguim com placa de atenção Texto a ser mostrado para chamar atenção
 
Added:
>
>
 -- JulioNeves - 20 Mar 2010

META FILEATTACHMENT attachment="Captura_da_tela-Exemplo_de_Progress.png" attr="" comment="Caixa de Diálogos Calendar" date="1269059648" name="Captura_da_tela-Exemplo_de_Progress.png" path="Captura_da_tela-Exemplo de Progress.png" size="14212" stream="IO::File=GLOB(0x971f7d4)" tmpFilename="/var/tmp/CGItemp28724" user="JulioNeves" version="1"

Revision 521 Mar 2010 - JulioNeves

Line: 1 to 1
 
META TOPICPARENT name="BatePapos"

Papo de Botequim 2.0


Line: 133 to 133
 2008/07/19
Added:
>
>
  • Inserir outro widget calendar aqui
 
Added:
>
>
Widget Calendar
 

Opção --warning

Revision 420 Mar 2010 - JulioNeves

Line: 1 to 1
 
META TOPICPARENT name="BatePapos"

Papo de Botequim 2.0



Deleted:
<
<

EM CONSTRUÇÃO (20/Mar/2010)

Título de Nível 2

Título de Nível 3

 

Papo de Botequim 2.0.1

Line: 77 to 75
 

--title

Changed:
<
<
    Especifica o título que fica na borda superior da caixa.
>
>

    Especifica o título que fica na borda superior da caixa.
 --window-icon
Changed:
<
<
    Permite alterar os ícone padrão (default) das caixas de diálogo.
>
>

    Permite alterar os ícone padrão (default) das caixas de diálogo.
 --width
Changed:
<
<
    Especifica em pixels a largura das caixas de diálogo.
>
>

    Especifica em pixels a largura das caixas de diálogo.
 --height
Changed:
<
<
    Especifica em pixels a altura das caixas de diálogo.
>
>

    Especifica em pixels a altura das caixas de diálogo.
 

Opção --calendar

Line: 127 to 128
 Como você viu, a saída padrão (default) é no formato dd-mm-aaaa para alterar este formato podemos usar os mesmos caracteres de formatação do comando date. Experimente o seguinte:

Changed:
<
<
zenity --calendar --date-format="%Y/%m/%d"
>
>
zenity --calendar --date-format="%Y/%m/%d"
 2008/07/19
Line: 132 to 133
 2008/07/19
Added:
>
>
 

Opção --warning

Added:
>
>
 
Opção Efeito
=--no-wrap = Não permite quebra automática do texto
--text=TEXTO Define o texto da advertência
Added:
>
>

O diálogo de warning (atenção) serve para você fazer uma advertência ao operador. Vejamos um fragmento de programa que é melhor ser executado por um usuário root, pois terá restrições de uso para um usuário comum.

 
Deleted:
<
<
O diálogo de warning (atenção) serve para você fazer uma advertência ao operador. Vejamos um fragmento de programa que é melhor ser executado por um usuário root, pois terá restrições de uso para um usuário comum.
 [ $UID -eq 0 ] || zenity --warning --title="Você não é root"

Revision 320 Mar 2010 - JulioNeves

Line: 1 to 1
 
META TOPICPARENT name="BatePapos"

Papo de Botequim 2.0


Line: 65 to 65
  A partir de agora esmiuçaremos todos os parâmetros aceitos em cada uma destas opções descritas. No entanto, alguns argumentos podem ser utilizados por qualquer uma das opções e é por eles que começaremos nossa aprendizagem.
Changed:
<
<

Parâmetros genéricos

>
>

Parâmetros genéricos

 
Line: 85 to 85
 --height     Especifica em pixels a altura das caixas de diálogo.
Changed:
<
<

Opção --calendar

>
>

Opção --calendar

 
Line: 98 to 98
  O diálogo calendar serve para você escolher uma data. As opções --day, --month e --year, servem para você especificar respectivamente o dia padrão (default), o mês e o ano do calendário que será exibido. Veja este fragmento de script:
Changed:
<
<
>
>
 until data=$(zenity --calendar --title "Datas dos vôos" --text "Escolha uma data para o vôo de ida"
Line: 107 to 107
  --year $(date +%Y)) do :
Changed:
<
<
done
>
>
done
 echo $data
Changed:
<
<
20-03-2010
>
>
20-03-2010
  Neste exemplo, me aproveitei da facilidade do botão CANCEL devolver um código de retorno ($?) diferente de zero para permanecer no loop do until, que não faz nada (comando :), porém só termina quando uma data for escolhida. O resultado da escolha foi para a variável $data.
Line: 118 to 118
 
Widget Calendar
Changed:
<
<
Neste exemplo não foi necessário informar os parâmetros --day, --month e --year, pois seus valores padrão (default) são os da data de hoje, e foram justamente estes os valores informados. Como você viu, a saída padrão (default) é no formato dd-mm-aaaa para alterar este formato podemos usar os mesmos caracteres de formatação do comando date. Experimente o seguinte:
>
>
Neste exemplo não seria necessário informar os parâmetros --day, --month e --year, pois seus valores padrão (default) são os da data de hoje, e foram justamente estes os valores informados.

Pinguim com placa de dica Vale ressaltar o uso dos caracteres sublinha (_) na formatação do dia e do mês. Caso não o puséssemos, os números gerados, se menores que 10, viriam precedidos de zero, e o zenity interpretaria isso como um octal, produzindo resultados indesejáveis.

Como você viu, a saída padrão (default) é no formato dd-mm-aaaa para alterar este formato podemos usar os mesmos caracteres de formatação do comando date. Experimente o seguinte:

 zenity --calendar
Changed:
<
<
--date-format="%Y/%m/%d" 2008/07/19 Opção --warning Opção Efeito --text=TEXTO Define o texto da advertência --no-wrap Não permite quebra automática do texto
>
>
--date-format="%Y/%m/%d" 2008/07/19

Opção --warning

Opção Efeito
=--no-wrap = Não permite quebra automática do texto
--text=TEXTO Define o texto da advertência
 O diálogo de warning (atenção) serve para você fazer uma advertência ao operador. Vejamos um fragmento de programa que é melhor ser executado por um usuário root, pois terá restrições de uso para um usuário comum. [ $UID -eq 0 ] || zenity --warning

Revision 220 Mar 2010 - JulioNeves

Line: 1 to 1
 
META TOPICPARENT name="BatePapos"

Papo de Botequim 2.0


Line: 114 to 114
  Neste exemplo, me aproveitei da facilidade do botão CANCEL devolver um código de retorno ($?) diferente de zero para permanecer no loop do until, que não faz nada (comando :), porém só termina quando uma data for escolhida. O resultado da escolha foi para a variável $data.
Changed:
<
<
>
>
  • Inserir widget calendar aqui

Widget Calendar
  Neste exemplo não foi necessário informar os parâmetros --day, --month e --year, pois seus valores padrão (default) são os da data de hoje, e foram justamente estes os valores informados. Como você viu, a saída padrão (default) é no formato dd-mm-aaaa para alterar este formato podemos usar os mesmos caracteres de formatação do comando date. Experimente o seguinte:

Revision 120 Mar 2010 - JulioNeves

Line: 1 to 1
Added:
>
>
META TOPICPARENT name="BatePapos"

Papo de Botequim 2.0



EM CONSTRUÇÃO (20/Mar/2010)

Título de Nível 2

Título de Nível 3


Papo de Botequim 2.0.1

Há alguns dias estava andando no calçadão e eis que encontro o Chico, o meu garçom preferido... Conversamos um pouco, quando contou-me que estava trabalhando, vejam só, no "Pinguim Carioca". Como já sou mesmo chegado a um boteco e muito mais a um pinguim, no primeiro sábado que passaria em casa, convidei um amigo para tomar um chope.

Lá chegando, logo após a primeira rodada de canecas, o amigo me fala na maior cara de pau:

- Pô mermão (com sotaque carioca), você tem de se modernizar... Porque insistir em desenvolver programas com interfaces arcaicas orientadas a caractere? Porque você não parte para algo mais atual?

Fiquei indignado com aquilo e respondi:

- Cara, você que tem de se modernizar e largar esta porcaria que você chama de sistema operacional e que lhe deixa na mão a toda hora, sem falar nos custos, vírus e nas telas azuis que você ganha pelo menos uma vez ao dia.

A partir de hoje e nas próximas vezes que viermos aqui, vou lhe mostrar as interfaces gráfica que foram desenvolvidas para serem usadas diretamente do Shell e verá que são muito mais concisas e fáceis de usar que as que você conhece.

É necessário no entanto, ter um bom conhecimento de Shell, o que você consegue nos Papos de Botequim que estão lá em http://www.julioneves.com

- Chico, traz mais dois chopes! Você não esqueceu que o meu é sem colarinho, né?

Agora, e nos nossos próximos encontros, vou lhe dar um curso sobre os programas que fazem interface gráfica para o Shell, começando pelo zenity, que é completo e extenso o suficiente para que este nosso papo se estique por mais uns três encontros.

Como tudo começou

Um dia, o Tujal me pediu para dar um acabamento legal em uns scripts que que ele desenvolveu para o CVS (Current Version System - ou seja, um gerenciador de fontes) e fui procurar na internet como fazê-lo usando o zenity, do qual já tinha ouvido falar muito bem.

Considero este software muito importante, pois dominando Shell e zenity, você poderá desenvolver seus scripts em Shell – que como você já viu (ou verá na página que passei) é uma linguagem simples e concisa – e dar-lhes um excelente acabamento gráfico com zenity.

O zenity é a cara do Shell, facílimo de usar e super conciso. Estas duas ferramentas se complementam, de forma a facilitar sua vida em programas curtíssimos e poderosos.

Afinal de contas, quem é esse cara?

zenity é um programa que se utiliza de ferramentas do GTK+ para produzir interfaces gráficas muito bem acabadas que atuarão entre scripts em Shell (e outras linguagem orientadas a caractere) e os usuários, provendo entre ambos uma correlação amigável e bonita.

O zenity é um executável, que recebe todos os parâmetros via linha de comando e retorna – no código de retorno ($?) e/ou na saída primária (stdout) a escolha do usuário. Isso permite apresentar, pedir e trocar informações com o operador. Por exemplo o comando zenity --question irá apresentar uma janela com uma pergunta e 2 botões (um de OK e outro de CANCEL). O código de retorno ($?) será 0 ou 1 dependendo se você clicou no OK ou CANCEL. O comando zenity -–entry pedirá uma entrada de dados e os mesmos 2 botões. Você obterá da mesma forma um código de retorno ($?) igual a 0 ou 1 e a saída primária (stdout) receberá o que foi digitado. Experimente!

Síntese das opções de diálogo

As principais opções de diálogo e suas descrições resumidas são as seguintes:

Opção Efeito
--scale Mostra um escala para opções
--calendar Mostra um calendário
--entry Mostra uma caixa para inserir textos
--error Mostra uma janela de erros
--file-selection Mostra uma janela para selecionar arquivos
--info Mostra uma janela com informações
--list Mostra uma caixa com lista
--notification Mostra uma janela de notificação
--progress Mostra uma barra de progresso
--question Mostra uma janela para fazer uma pergunta
--text-info Mostra uma janela de texto
--warning Mostra uma janela de advertência

A partir de agora esmiuçaremos todos os parâmetros aceitos em cada uma destas opções descritas. No entanto, alguns argumentos podem ser utilizados por qualquer uma das opções e é por eles que começaremos nossa aprendizagem.

Parâmetros genéricos

Opção Efeito
--height=ALTURA Define a altura das caixas
----title=TITULO Define um título para as caixas
--window-icon=ICONE Define um ícone para as caixas
--width=LARGURA Define a largura das caixas

--title     Especifica o título que fica na borda superior da caixa. --window-icon     Permite alterar os ícone padrão (default) das caixas de diálogo. --width     Especifica em pixels a largura das caixas de diálogo. --height     Especifica em pixels a altura das caixas de diálogo.

Opção --calendar

Opção Efeito
--date-format=PATTERN Define formato da data (mesmo formato do date)
--day=INT Define o dia padrão (default)
--month=INT Define o mês inicial
--year=INT Define o ano inicial

O diálogo calendar serve para você escolher uma data. As opções --day, --month e --year, servem para você especificar respectivamente o dia padrão (default), o mês e o ano do calendário que será exibido. Veja este fragmento de script:

until data=$(zenity --calendar                  \
    --title "Datas dos vôos"                    \
    --text "Escolha uma data para o vôo de ida" \
    --day $(date +%d)                           \
    --month $(date +%m)                         \
    --year $(date +%Y))
do
    :
done
echo $data 
20-03-2010

Neste exemplo, me aproveitei da facilidade do botão CANCEL devolver um código de retorno ($?) diferente de zero para permanecer no loop do until, que não faz nada (comando :), porém só termina quando uma data for escolhida. O resultado da escolha foi para a variável $data.

Neste exemplo não foi necessário informar os parâmetros --day, --month e --year, pois seus valores padrão (default) são os da data de hoje, e foram justamente estes os valores informados. Como você viu, a saída padrão (default) é no formato dd-mm-aaaa para alterar este formato podemos usar os mesmos caracteres de formatação do comando date. Experimente o seguinte: zenity --calendar --date-format="%Y/%m/%d" 2008/07/19 Opção --warning Opção Efeito --text=TEXTO Define o texto da advertência --no-wrap Não permite quebra automática do texto O diálogo de warning (atenção) serve para você fazer uma advertência ao operador. Vejamos um fragmento de programa que é melhor ser executado por um usuário root, pois terá restrições de uso para um usuário comum. [ $UID -eq 0 ] || zenity --warning --title="Você não é root" --text="Você não terá acesso a todas as opções"

Na primeira linha, comparamos a variável do interna $UID, do operador, e comparamos com zero (qualquer usuário root tem UID=0). Caso seja diferente, um diálogo de atenção será disparado. Opção --question Opção Efeito --text=TEXTO Define o texto da pergunta --no-wrap Não permite quebra automática do texto O diálogo de pergunta (--question) irá lhe fazer uma pergunta e oferecer como resposta 2 botões: OK e CANCEL. Caso seja pressionado o OK, o código de retorno ($?) será igual a zero, caso contrário será diferente de zero. Aproveitando isso, após o diálogo de advertência mostrado no exemplo anterior, poderíamos perguntar ao operador se ele deseja mudar para root. Para isso fazemos: Resp=n zenity --question --title "Responda" --text "Deseja mudar para root?" && Resp=s E ao fim da execução a variável $Resp teria obrigatoriamente s ou n. As man pages, por incrível que pareça, têm um exemplo bastante engraçado do uso desta opção. Veja: Temos ainda o parâmetro --no-wrap que pode ser usado caso o texto definido por --text seja grande e você não queira dividi-lo em mais de uma linha. Opção --entry Opção Efeito --text=TEXTO Define o texto da caixa --entry-text=TEXTO Valor padrão (default) --hide-text Esconde o valor digitado (senhas) Esta opção abre uma janela de diálogo, requisitando uma entrada de dados ao operador. Vamos continuar nos exemplos em que o cara deveria ser root para aproveitar todas as facilidades oferecidas por um determinado aplicativo, mas primeiramente vamos pegar o exemplo anterior e inseri-lo neste contexto: if zenity --question --title "Responda" --text "Deseja mudar para root?" then Senha=$(zenity --entry --title "Captura de Senha" --text "Informe a senha de root:" --hide-text) fi echo $Senha 123456 O comando if testou o diálogo de pergunta e caso o botão clicado seja OK, o programa lançará a caixa de entrada de dados a seguir para capturar a senha. Repare que a opção --hide-text não deixa o texto que está sendo digitado aparecer na tela. Poderíamos oferecer um valor padrão (default), para isso fazemos: Usuário=$(zenity --entry --title "Captura nome de usuário" --text "Informe o nome do usuário na máquina remota:" --entry-text $LOGNAME) Pois é, amigo, está gostando? É por enquanto o negócio parece ser bom e conciso como você falou... Então, de brincadeira, vamos desenvolver um "sistemeco" para nos lembrar dos aniversários dos amigos. Desta vez vou te deixar a incumbência de fazer um script para montar o arquivo de aniversariantes, que tem o lay-out a seguir: Campo Data de Nascimento Nome Endereço de e-mail Telefone Formato AAAAMMDD Xxxx Xxxx Usuário@dominio (DD) NNNN-NNNN Repare que o campo Data de Nascimento é o primeiro e está no formato ano, mês, dia sem barras separadoras. Isso foi feito porque o arquivo deverá estar sempre ordenado por data e este formato facilita esta classificação. O separador entre os quatro campos será o dois-pontos (:) O script será feito em Shell, porém todas as interações com o usuários, isto é, leitura dos dados, avisos de erros e advertências, serão feitas via caixas de diálogo zenity.

- Chico, fecha a conta que eu vou nessa, mas não demoro a voltar...


album 1^Artista1~Musica1:Artista2~Musica2

Pinguim com placa de atenção Texto a ser mostrado para chamar atenção

-- JulioNeves - 20 Mar 2010

META FILEATTACHMENT attachment="Captura_da_tela-Exemplo_de_Progress.png" attr="" comment="Caixa de Diálogos Calendar" date="1269059648" name="Captura_da_tela-Exemplo_de_Progress.png" path="Captura_da_tela-Exemplo de Progress.png" size="14212" stream="IO::File=GLOB(0x971f7d4)" tmpFilename="/var/tmp/CGItemp28724" user="JulioNeves" version="1"
 
This site is powered by FoswikiCopyright © by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding Wiki-SL? Send feedback