Dialog PROGRAMAÇÃO Adicionando elementos … · Linux Magazine #67 | Junho de 2010 O Dialog...

10
68 http://www.linuxmagazine.com.br PROGRAMAÇÃO Dialog Adicionando elementos gráficos a scripts com Dialog e Xdialog Não é necessário se afundar em livros de programação gráfica para adicionar simples elementos gráficos a scripts. por Ankur Kumar Sharma N a era dos coloridos e conve- nientes aplicativos dotados de interfaces gráficas, os ve- lhos programas de linha de comando ficam parecendo meio monótonos e pouco amigáveis. Não seria inte- ressante acrescentar recursos grá- ficos a seus scripts sem precisar da chateação da programação gráfica? Duas ferramentas chamadas Dialog [1] e Xdialog [2] adicionam widgets de desktop em estilo gráfico a seus programas. É possível usar Dialog e Xdialog com C, C++, Python, Ruby, Perl e Bash. Figura 1 Ajuda do Dialog e do Xdialog. Figura 2 Um simples widget de informação.

Transcript of Dialog PROGRAMAÇÃO Adicionando elementos … · Linux Magazine #67 | Junho de 2010 O Dialog...

Page 1: Dialog PROGRAMAÇÃO Adicionando elementos … · Linux Magazine #67 | Junho de 2010 O Dialog emprega as bibliotecas curses/ncurses [3] para criar controles ou widgets interativos.

68

Dialog

http://www.linuxmagazine.com.br

DialogP

RO

GR

AM

ÃO

Dialog

Adicionando elementos gráficos a scripts com Dialog e Xdialog

Não é necessário se afundar em livros de programação gráfica para adicionar simples elementos gráficos a scripts.por Ankur Kumar Sharma

Na era dos coloridos e conve-nientes aplicativos dotados de interfaces gráficas, os ve-

lhos programas de linha de comando ficam parecendo meio monótonos e pouco amigáveis. Não seria inte-

ressante acrescentar recursos grá-ficos a seus scripts sem precisar da chateação da programação gráfica? Duas ferramentas chamadas Dialog [1] e Xdialog [2] adicionam widgets de desktop em estilo gráfico a seus programas. É possível usar Dialog e Xdialog com C, C++, Python, Ruby, Perl e Bash.

Figura 1 Ajuda do Dialog e do Xdialog.Figura 2 Um simples widget de

informação.

Page 2: Dialog PROGRAMAÇÃO Adicionando elementos … · Linux Magazine #67 | Junho de 2010 O Dialog emprega as bibliotecas curses/ncurses [3] para criar controles ou widgets interativos.

Dialog

69

| PROGRAMAÇÃODialog

Linux Magazine #67 | Junho de 2010

O Dialog emprega as bibliotecas curses/ncurses [3] para criar controles ou widgets interativos. Como mos-tra este artigo, é possível adicionar esses widgets a aplicativos de linha de comando sem grandes esforços de programação.

O Xdialog é um parceiro do Dia-log que produz vários widgets em um ambiente X Window. O Xdialog usa a biblioteca Gtk+, por isso, in-terage facilmente com o ambiente desktop Gnome.

Mais adiante, este artigo descre-verá algumas ferramentas alternati-vas para adicionar widgets a scripts, tais como Gtkdialog [4], Whiptail e Zenity. Caso você utilize o KDE, é possível considerar o Kdialog [5], que funciona da mesma maneira nesse ambiente desktop.

ComeçoO Dialog e o Xdialog já vêm pré ins-talados em diversas distribuições. Para montar o Dialog a partir do código-fonte, é necessário, primeiramente, compilar a biblioteca ncurses, pois o Dialog precisa dos seus cabeçalhos.Instalar o Xdialog é um pouco mais trabalhoso. Para a instalação a partir do código-fonte, baixe e instale os seguintes pacotes .deb nesta ordem:

libgtk1.2-common_1.2.10-18_all.deblibglib1.2_1.2.10-10.1build1_amd64.deb

libgtk1.2_1.2.10-18_amd64.deblibglib1.2-dev_1.2.10-10.1build1_amd64.deb

libgtk1.2-dev_1.2.10-18_amd64.deb

Note que o Xdialog precisa da série 1.2 da biblioteca Gtk. Após instalar os pacotes de dependências mencio-nados, baixe o último código-fonte no site do Xdialog [2], descompac-te o arquivo tar e entre no diretório dos fontes:

tar -jxvf Xdialog-2.3.1.tar.bz2 cd

Xdialog-2.3.1

Para finalmente completar a ins-talação do Xdialog, basta usar os co-mandos tradicionais:

./configuremakesudo make install

Agora, quando você digitar Xdialog na linha de comando, aparecerá um widget Xdialog com informações de ajuda, como mostrado na figura 1.

Como usarPense no Dialog como um comando de shell. O comando seleciona um widget do Dialog e especifica algu-mas opções. A forma seria:

dialog <opções comuns> widget \ <opções do widget>

As opções comuns são configu-rações opcionais que modificam a aparência e o comportamento dos widgets. As widget optionssão uma combinação de configurações míni-mas e opcionais para criar widgets. Nas páginas do manual, as opções do widget são chamadas de box options.

O comando man dialog exibe a tela de ajuda mostrada na figura 1. Algu-mas das opções mais importantes são:

➧ backtitle título: a tela de fundo da janela de diálogo dos wid-

gets normalmente não contém nenhum texto, mas esta opção permite mostrar algum texto na tela de fundo;

➧ title título: adicionar um título em formato de texto ao widget;

➧ stdout: alguns dos elementos que retornam algo escrevem na tela por padrão. Se quiser consultar essa saída sem escrever na tela, use esta opção;

➧ begin posição_y posição_x: Por padrão, todos os widgets são po-sicionados no centro da janela

Quadro 1: Widgets do Dialog

O Dialog permite acrescentar um “tempero” aos seus scripts com qualquer um dos seguintes widgets:

Calendar checklist dselect editbox

form fselect gauge infobox

inputbox menu mixedform mixedgauge

msgbox passwordbox passwordform pause

progressbox radiolist tailbox tailboxbg

textbox timebox yesno

Figura 3 Widget msgbox com título e opção title.

Figura 4 Widget de pausa com a opção color.

Page 3: Dialog PROGRAMAÇÃO Adicionando elementos … · Linux Magazine #67 | Junho de 2010 O Dialog emprega as bibliotecas curses/ncurses [3] para criar controles ou widgets interativos.

70

Dialog

http://www.linuxmagazine.com.br

PROGRAMAÇÃO | Dialog

do terminal, mas é possível alte-rar esse comportamento usando essa opção para especificar as distâncias xe ydo canto superior esquerdo;

➧ timeout segundos: especifica o intervalo, em segundos, em que o widget retornará;

➧ sleep segundos: inclui um inter-valo com a duração dos segundos especificados;

➧ no-shadow: por padrão, e exibida uma sombra à direita e abaixo do widget para criar a ilusão de pro-fundidade. É possível desabilitar isso com esta opção;

➧ colors: muda os atributos de ví-deo no texto do título.

A última versão do Dialog ofere-ce uma grande coleção de widgets (veja o quadro 1).

Para uasr o widget infoboxdo Dia-log, digite a seguinte linha:

dialog --infobox \

Texto de teste infoboxComo mostra a figura 2, foi criado um widget de informação. Após criar o widget infobox, o Dialog re-torna imediatamente ao prompt de comando, que é o comportamento padrão desse tipo de widget. O úni-co propósito do widget é mostrar um texto informativo.

O comando anterior inclui dois zeropara a altura e a largura do wid-get. Se os parâmetros forem zeros, o Dialog define a altura e a largura. Portanto, 0 e 0 são valores seguros na maioria das vezes.

O widget infobox foi criado sem nenhum título ou tela de fundo. Para criar esses dois, acrescente:

dialog --backtitle “Mensagem” \

--title msgbox --msgbox \ “Sou um widget msgbox.” 0 0

Agora, é possível ver um título de fundo e um título de widget no wid-get msgbox(figura 3). Além disso, ao usar as teclas [Esc]e [Enter] (ou clicar em OK), a caixa de diálogo retorna.

Até agora, foram apresentadas apenas as cores padrão para dife-rentes textos de widgets de diálogo. Para alterar esses atributos passados ao Dialog, basta embutir sequências \Z nos diferentes textos que são pas-sados ao Dialog, juntamente com a opção --colors, da seguinte maneira:

dialog --colors --backtitle \ “\Zr\Z1Pausa\Zn” --title \ “\Zu\Z5pausa\Zn” --pause \

Listagem 1: Uso de and-widget

01 dialog ‐‐backtitle “Várias caixas de diálogo” ‐‐begin 4 4 ‐‐title msgbox1 ‐‐msgbox Primeira 0 0 \

02 ‐‐and‐widget ‐‐begin 10 10 ‐‐title msgbox2 ‐‐msgbox Segunda 0 0 \

03 ‐‐and‐widget ‐‐begin 16 16 ‐‐title msgbox3 ‐‐msgbox Terceira 0 0 \

04 ‐‐and‐widget -‐begin 20 40 ‐‐title infobox1 ‐‐infobox “Há múltiplos widgets.” 0 0 \

05 ‐‐and‐widget -‐begin 30 35 ‐‐tile infobox2 ‐‐infobox “Também estou aqui.” 0 0

Figura 5 Widget de calendário com um botão extra.

Figura 6 Widget de entrada com as opções begin e noshadow.

Figura 7 Vários widgets de diálogo.

Page 4: Dialog PROGRAMAÇÃO Adicionando elementos … · Linux Magazine #67 | Junho de 2010 O Dialog emprega as bibliotecas curses/ncurses [3] para criar controles ou widgets interativos.

71

| PROGRAMAÇÃO

Linux Magazine #67 | Junho de 2010

DialogDialog

“\Zb\Z6Sou um widget de pausa” \ 10 20 15

Agora já é possível ver o texto colorido no widget pause mostrado na figura 4. O widget pause mostra uma barra que vai diminuindo a cada segundo.

Caso a tecla [Esc] não seja pressio-nada, nem os botões OK ou Cancel, durante os segundos restantes, o wid-get pause retorna ao fim do tempo estipulado. Os atributos de texto e os valores de cores de sequências \Z nas strings de texto são os seguintes:

r : reversob : negrito (bold)u : sublinhado (underline)n : restaura o padrão (restore normal settings)0 : preto1 : vermelho2 : verde3 : amarelo4 : azul5 : magenta6 : ciano7 : branco

Também é possível alterar os títu-los padrão dos botões OK e Cancel ou mostrar um botão extra com texto adicional. Use o seguinte comando para conferir estes recursos em ação:

dialog --backtitle Calendário \ title calendar –-extra-button

\ --extra-label “Passo extra” \ --ok-label “Ok computador” \ --exit-label “Tchau” \ --calendar “Escolha uma data” 0 0

A figura 5 contém a imagem des-se widget. É possível movimentar-se entre as diferentes subjanelas do widget calendarusando a tecla [Tab]. Caso o usuário selecione, aperte ou clique qualquer botão com exceção da tecla [Esc] ou do botão Cancel, verá que a data selecionada é im-pressa no próprio widget. Esse é o comportamento padrão de todos os

widgets de diálogo que devolvem al-gum valor. Isso pode ser modificado usando a opção --stdout.

Também é possível especificar a localização do widget e desligar sua sombra:

dialog --no-shadow --begin 4 4 \ --backtitle “Caixa de texto” \ --title entrada --inputbox \ “Digite alguma coisa” 0 0 \ “dialog é demais...”

O widget resultante (figura 6) é exibido no local especificado com a opção --begin e sem sombras (como manda a opção --no-shadow). O wid-

Figura 8 Widget de menu mostrado por um script shell.

Figura 9 Widget de texto mostrando o conteúdo de um arquivo selecionado.

Figura 10 Alguns widgets extras do Xdialog.juda do Dialog e do Xdialog.

Page 5: Dialog PROGRAMAÇÃO Adicionando elementos … · Linux Magazine #67 | Junho de 2010 O Dialog emprega as bibliotecas curses/ncurses [3] para criar controles ou widgets interativos.

72

Dialog

http://www.linuxmagazine.com.br

PROGRAMAÇÃO | Dialog

get inputbox mostra uma string pa-drão oferecida pelo comando, mas é possível alterar essa string usando as teclas [Del] ou [Backspace]e digi-tando o texto desejado.Em vez de digitar os comandos completos na linha de comando, é possível especificar uma opção para ler parâmetros do Dialog a partir de um arquivo. A opção --file especi-fica o nome do arquivo:

dialog --file arquivo

onde arquivo contém outros parâme-tros do dialog. Também é possível unir vários widgets usando a opção --and-widget. Os comandos da lista-gem 1 produzem o widget mostrado na figura 7.

Dialog com shellPara incorporar widgets do Dialog a scripts de shell, basta adicionar co-mandos do Dialog a seus scripts. O widget devolve um valor para futuro processamento, além de um status que permite determinar a ação do teclado ou do mouse a ser executa-da no widget.

Para obter o valor retornado pelo widget, adicione a opção --stdout ao comando dialog e use o meca-nismo de substituição de comandos do shell. Para determinar o tipo de ação a ser executada em um widget, é necessário examinar a variável $?do shell, que devolve o status de saída do comando anterior.

O script na listagem 2 combina esses conceitos para incorporar al-guns widgets do Dialog. O script apresenta um menu com várias opções, e as informações são apre-sentadas com base na opção esco-lhida. Veja as figuras 8 e 9 com as imagens dos widgets referenciados na listagem 2.

Os widgets do Dialog transfor-maram o antes entediante shell script baseado em texto em um belo script com interface gráfica,

Listagem 2: Widget no seu script

01 #! /usr/bin/env bash0203 # variáveis com o comando e opções comuns.04 dlg=dialog05 stdo=--stdout06 titl=--title07 titlbg=--backtitle0809 # função para tratar a escolha do arquivo a abrir.10 fileselect() {1112 file=$($dlg $stdo $titlbg “A escolha do menu foi o diálogo de seleção de arquivo” $titl “Selecione um arquivo” \

13 --fselect ~ 0 014 )1516 if [ $? -eq 0 ]17 then18 $dlg $titlbg “Conteúdo do arquivo selecionado” $titl $file -textbox $file 0 0

19 fi2021 }2223 # função para tratar a escolha de diretório.24 dirselect() {2526 directory=$($dlg $stdo $titlbg “A escolha do menu foi o diálogo de seleção de diretório” $titl “Selecione um diretório” \

27 --dselect ~ 0 028 )2930 if [ $? -eq 0 ]31 then32 $dlg $titlbg “Informações do diretório selecionado” $titl “Informações do diretório” \

33 --infobox “O diretório escolhido foi: $directory” 0 034 fi3536 }3738 # função para tratar a escolha de timebox.39 timebox() {4041 ti me=$($dlg $stdo $titlbg “A escolha do menu foi Time Box.” $titl “Hora escolhida” \

42 --timebox “Escolha sua hora preferida” 0 043 )44

Page 6: Dialog PROGRAMAÇÃO Adicionando elementos … · Linux Magazine #67 | Junho de 2010 O Dialog emprega as bibliotecas curses/ncurses [3] para criar controles ou widgets interativos.

73

| PROGRAMAÇÃO

Linux Magazine #67 | Junho de 2010

DialogDialog

sem nenhuma programação espe-cificamente gráfica.

XdialogO Xdialog oferece uma ampla varie-dade de opções gráficas e se integra facilmente ao ambiente desktop Gnome. O Xdialog e o Dialog são muito semelhantes, e é possível apli-car o conhecimento de um ao outro. O formato básico de um comando do Xdialog é:

Xdialog \ <opções comuns> \ <opções transientes> \ widget <opções do widget>

Nesse comando, opções transientes refere-se a algumas opções do Dialog, além de algumas opções adicionais associadas ao Xdialog.

Se o Xdialog estiver instalado em seu sistema, é possível explo-rar alguns de seus widgets com o seguinte comando:

Xdialog --backtitle “colorsel” --title “Widget de cor” --colorsel “Sua cor preferida” 0 0 123 234 89Xdialog --backtitle “fontsel” --title “Font Selection Widget” --fontsel “times 12” 0 0 Xdialog --backtitle “caixa com 3” --title “Widget para seleção de 3 itens” --3rangesbox “Escolha

Listagem 2: Continuação

45 if [ $? -eq 0 ]46 then47 $dlg $titlbg “Selecionou informações de hora” $titl “Informações de hora” \

48 --infobox “Sua hora preferida é : $time” 0 049 fi5051 }5253 # widget de menu para mostrar várias escolhas.54 choice=$($dlg $stdo $titlbg “Uso do Dialog em scripts de shell” $titl “Menu de ações” \

55 --menu “Escolha uma opção para continuar” 0 0 0 \56 1 “Abrir arquivo” \57 2 “Escolher diretório” \58 3 “Exibir timebox” \59 )6061 # só estamos interessados no evento de botão OK.62 If [ $? -eq 0]63 then6465 # agora trate a opção escolhida.66 if [ “$choice” = “1” ]67 then68 fileselect69 elif [ “$choice” = “2” ]70 then71 dirselect72 elif [ “$choice” = “3” ]73 then74 timebox75 fi7677 <fim do código do script de shell>

Figura 11 Widgets de caixa de senha do Dialog e de caixa de digitação do Xdialog em um script Python.

Figura 12 Widgets de tempo do Dialog e de mensagem do Xdialog em um script Python.

Page 7: Dialog PROGRAMAÇÃO Adicionando elementos … · Linux Magazine #67 | Junho de 2010 O Dialog emprega as bibliotecas curses/ncurses [3] para criar controles ou widgets interativos.

74 http://www.linuxmagazine.com.br

PROGRAMAÇÃO | DialogDialog

seus valores” 0 0 primeiro 10 5634

segundo 3 89 56 terceiro 4 67 45

Alguns widgets novos oferecidos pelo Xdialog são mostrados na figura 10. Note que esses widgets são mais pa-recidos com o verdadeiro elemento gráfico encontrado nos ambientes desktop.

Além do shellCaso você esteja usando alguma lin-guagem de programação com suporte à chamada de executáveis externos, é possível usar o Dialog e o Xdialog. Isso significa que é possível utilizar seus widgets com C, C++, Python, Perl, Ruby e outras linguagens.

Ao usar o Dialog e o Xdialog com essas linguagens, é possível evitar a complicada e trabalhosa programação gráfica associada à manutenção de versões em texto e gráfica do programa. É possível usá-los também para rapidamente projetar um aplicativo gráfico.

O script em Python na listagem 3 usa vários widgets do Dialog e do Xdialog. Primeiro, ele pede a senha (lpmrockz, neste caso) e, após solici-tar outras informações, retorna uma mensagem no final.

Repare que, no dicionário de co-mandos do Dialog e do Xdialog, os vários parâmetros são separados pelo caractere pipe (|) para permitir espa-ços nas várias strings passadas. Copie e cole esse código Python em um arquivo e execute-o com o comando python arquivo.py. Também é possí-vel executar o arquivo digitando ./arquivo.pyapós transformar o arqui-vo em executável com o comando chmod u+x arquivo.py.

O resultado exibido após a execu-ção do código da listagem 3 é mos-trado nas figuras 11 e 12. Repare a coexistência de widgets do Dialog e do Xdialog nas imagens.

Listagem 3: Widgets em Python

01 <início do código Python>0203 #! /usr/bin/env python2.60405 from subprocess import Popen, PIPE, STDOUT0607 # dicionário com vários comandos dialog e Xdialog.08 dwdgtsatrb = {09 ‘dlgpswd’ : ‘dialog|--stdout|--insecure|-- backtitle|PasswordBoxWidget|--title|passwordbox|-- passwordbox|Digite a chave|0|0’,

10 ‘xdlgnme’ : ‘Xdialog|--title|Xinputbox|--inputbox|Digite seu nome|0|0’,

11 ‘xdlgdob’ : ‘Xdialog|--title|Xcalendar|--calendar|Digite seu DOB|0|0’,

12 ‘dlgtme’ : ‘dialog|--stdout|--backtitle|TimeBoxWidget|-- title|timebox|--timebox|Selecione a sua data de nascimento|0|0’,

13 ‘xmsg’ : ‘Xdialog|--title|XmsgBox|--msgbox|message|0|0’,14 }151617 def execute(scommand):18 ‘’’19 Rotina para executar um comando e retornar (saída, erro, status) do comando.

20 ‘’’2122 l = scommand.split(‘|’)23 p = Popen(l, stdout=PIPE, stderr=STDOUT)24 toe = p.communicate()2526 return (toe[0], toe[1], p.returncode)2728 def main():29 ‘’’30 Rotina do driver de aplicativo.31 ‘’’32 tpswd = execute(dwdgtsatrb[‘dlgpswd’])3334 tnme = ()35 tdob = ()36 ttme = ()3738 if ‘lpmrockz’ == tpswd[0].strip():3940 if not tpswd[2]:41 tnme = execute(dwdgtsatrb[‘xdlgnme’])4243 if not tnme[2]:

Page 8: Dialog PROGRAMAÇÃO Adicionando elementos … · Linux Magazine #67 | Junho de 2010 O Dialog emprega as bibliotecas curses/ncurses [3] para criar controles ou widgets interativos.

DialogDialog

75

| PROGRAMAÇÃO

Linux Magazine #67 | Junho de 2010

Whiptail, Zenity, X Message e GtkdialogVários outros aplicativos Linux ofe-recem recursos similares aos do Dialog e do Xdialog. O Ubuntu traz o utilitário chamado Whiptail, baseado na biblioteca Newt. Porém, o Whiptail é um tanto limitado com relação aos widgets e opções de configuração oferecidos.

Mesmo oferecendo menos opções e widgets que o Dialog, os widgets disponíveis incluem caixas sim/não, de menu, de entrada, de mensagem, de informação, checklist, radiolist, de medida e de senha.

Para ver o widget de senha do Whiptail, digite o seguinte comando:

whiptail --fb --title \ “Widget de senha” \ --passwordbox \ “Digite sua senha” 10 0

O utilitário Zenity [6] também vem pré-instalado no Ubuntu. A ideia do Zenity é mostrar caixas de diálogo Gtk+ em linhas de coman-do e scripts shell. O Zenity oferece alguns widgets Gtk+ bem úteis. Os seguintes comandos mostram um pouco do Zenity em ação:

zenity --info -text=”Informação do Zenity.”

zenity --warning -text=”Alerta do Zenity.”

zenity --question -text=”Pergunta do Zenity.”

Os widgets criados com o Whip-tail e o Zenity são mostrados na figura 13.

O número de widgets e opções de configuração oferecidos pelo Zenity é mais limitado que o do Xdialog, mas o Zenity é bem mais útil que o Whiptail.

Outras ferramentas que oferecem recursos gráficos rápidos para scripts são o X Message e o Gtkdialog.

Listagem 3: Continuação

44 tdob = execute(dwdgtsatrb[‘xdlgdob’])4546 if not tdob[2]:47 ttme = execute(dwdgtsatrb[‘dlgtme’])4849 if not ttme[2]:50 smsg = (‘Hi ‘ + tnme[0].strip() + ‘\n’ +51 ‘Seu DOB é : ‘ + tdob[0].strip() + ‘\n’ +52 ‘Dia do nascimento é : ‘ + ttme[0].strip() + ‘\n’ +

53 ‘A LM lhe deseja tudo de bom.’)54 execute( dwdgtsatrb[‘xmsg’].replace(‘message’, smsg))

5556 else:57 smsg = ‘Senha incorreta, boa sorte da próxima vez.’58 execute(dwdgtsatrb[‘xmsg’].replace(‘message’, smsg))5960 if ‘__main__’ == __name__:6162 main()6364 <fim do código Python>

Figura 13 Saída de comando do Whiptail e do Zenity.

Figura 14 Saída de comando do Gtkdialog e do X Message.

Page 9: Dialog PROGRAMAÇÃO Adicionando elementos … · Linux Magazine #67 | Junho de 2010 O Dialog emprega as bibliotecas curses/ncurses [3] para criar controles ou widgets interativos.

76 http://www.linuxmagazine.com.br

PROGRAMAÇÃO | Dialog

Na verdade, o X Message é um comando que gera widgets gráficas bem limitadas, pois apenas apresen-ta mensagens com botões definidos pelo usuário. O seguinte comando mostra o X Message em ação:

xmessage -file ~/.bashrc \ -buttons “Ok:1, Cancela:2, \ Ajuda:3” -print -nearmouse

A opção -file usada aqui lê uma mensagem de um arquivo especifi-cado. Ao clicar no botão, o código de retorno correspondente é devolvido pelo comando xmessage.

O Gtkdialog [4] é bem dife-rente dos outros utilitários vistos até agora. Esta ferramenta cria vários widgets com o uso de uma descrição do tipo XML, conheci-da como linguagem de descrição de diálogo. Com essa linguagem de descrição, é possível criar vá-rias caixas de diálogos complexas contendo outros widgets e caixas. O ponto fraco é que o Gtkdialog é bem mais trabalhoso que outros utilitários que criam widgets gráficos para desktop, mas, mesmo assim, é mais fácil do que a programação de interfaces gráficas.

A listagem 4 mostra um exemplo de script com Gtkdialog. A saída desse script de shell com Gtkdialog (além do exemplo da ferramenta alternativa X Message) é mostrada na figura 14.

ConclusãoAs ferramentas Dialog, Xdialog, Whiptail, Zenity, Gtkdialog e X Mes-sage podem transformar qualquer utilitário de linha de comando em um aplicativo amigável com inter-face gráfica.

Sem nenhuma programação grá-fica, é possível adicionar sofisticados recursos a seus aplicativos. n

Listagem 4: Uso do Gtkdialog

01 <início do script shell>0203 #! /usr/bin/env bash0405 # descrição do diálogo atribuída a uma variável de ambiente.06 Export MAIN_DIALOG=’07 <vbox>08 <text wrap=”true” width-chars=”10” >09 <label> O tempo passou, a festa acabou, achei que eu tivesse algo mais a dizer.</label>

10 </text>11 <text use-markup=”true”>12 <label>”<b>O Software Livre é demais, meu amigo!!!</ b>”</label>

13 </text>14 <hbox>15 <button ok></button>16 <button cancel></button>17 </hbox>18 </vbox>19 ‘20 gtkdialog3 --program=MAIN_DIALOG2122 <fim do script shell>

Gostou do artigo?Queremos ouvir sua opinião. Fale conosco em [email protected]

Este artigo no nosso site: http://lnm.com.br/article/3540

Mais informações

[1] Site do Dialog: http://invisible-.net/dialog/

[2] Site do Xdialog: http://xdialog.dyns.net/

[3] ncurses: http://www.gnu.org/software/ncurses/ncurses.html

[4] Site do Ggtkdialog: http://linux.pte.hu/~pipas/gtkdialog/index.html

[5] Tutorial do Kdialog: http://techbase.kde.org/Development/Tutorials/ Shell_Scripting_with_KDE_Dialogs#Introduction_and_Scope

[6] Zenity: http://live.gnome.org/Zenity

[7] X Message: http://sourceforge.net/projects/xmsgd/

Page 10: Dialog PROGRAMAÇÃO Adicionando elementos … · Linux Magazine #67 | Junho de 2010 O Dialog emprega as bibliotecas curses/ncurses [3] para criar controles ou widgets interativos.

Dialog