Você está na página 1de 17

interface_grafica_usuario

Interface de menus e caixas de dilogos grficos Abaixo segue um exemplo onde voc pode criar menus para interagir com o usurio, primeiro mostrado opes com menus, em seguida o usurio escolhe um dos itens dos menus, e depois de acordo com a escolha apropriada do item do menu exibido o resultado da escolha.

$ nano

menus

#!/bin/bash # script com menus while true do clear echo "-----------------------" echo " Escolha a opo " echo "-----------------------" echo "[1] Exibe a data" echo "[2] Exibe os arquivos do diretrio atual" echo "[3] Exibe o calendrio" echo "[4] Exibe o editor de texto nano" echo "[5] Sair" echo "======================" echo -n "Escolha uma das opes entre [1-5]" read OPCAO case $OPCAO in 1) echo "Hoje `date` , Pressione uma tecla" ; read ;; 2) echo "Os arquivos em `pwd` so `ls`" ; echo "Pressione uma tecla..." ; read ;; 3) cal ; echo "Pressione uma tecla..." ; read ;; 4) nano ;; 5) exit 0 ;; *) echo "Ateno!!! Por favor selecione 1,2,3,4 ou 5" ; echo "Pressione uma tecla..." ; read ;; esac done

Torne o arquivo executvel e execute o script $ chmod +x menus $ ./menus


----------------------Escolha a opo

interface_grafica_usuario

----------------------[1] Exibe a data [2] Exibe os arquivos do diretrio atual [3] Exibe o calendrio [4] Exibe o editor de texto nano [5] Sair ====================== Escolha uma das opes entre [1-5]

Abaixo segue a descrio dos comandos do programa na tabela: Comandos Explicao Inicia o loop infinito, e somente finalizado quando for escolhido a opo 5 (Sair) no menu Inicia o loop Limpa a tela toda vez que escolhido uma opo do menu

while true

do

clear echo "-----------------------"


echo " Escolha a opo " echo "-----------------------" echo "[1] Exibe a data" echo "[2] Exibe os arquivos do diretrio atual" echo "[3] Exibe o calendrio" echo "[4] Exibe o editor de texto nano" echo "[5] Sair" echo "======================" echo -n "Escolha uma das opes entre [1-5]" read OPCAO

Mostra os itens do menu

Pergunta para o usurio o nmero do item do menu L o nmero do item do menu Executa a ao apropriada de acordo com o item escolhido no menu entre 1 e 5, e quando exibir a mensagem de erro ser solicitado para o usurio escolher um valor entre 1 e 5 novamente

case $OPCAO in
1) echo "Hoje `date` , Pressione uma tecla" ; read ;; 2) echo "Os arquivos em `pwd` so `ls`" ; echo "Pressione uma tecla..." ; read ;; 3) cal ; echo "Pressione uma tecla..." ; read ;; 4) nano ;; 5) exit 0 ;; *) echo "Ateno!!! Por favor selecione 1,2,3,4 ou 5" ; echo "Pressione uma tecla..." ; read ;;

interface_grafica_usuario

esac

Encerra o loop, se o item 5 (Sair) do menu for escolhido Para interagir com usurio, podemos criar interfaces com menus em modo texto ou em modo grfico, onde antigamente em verses antigas do Linux eram usados os programas dialog e xdialog onde era necessrio instala-los a partir do CD-ROM da sua distribuio Linux ou atravs do repositrio de pacotes.
done

# apt-get install dialog xdialog Atualmente esses programas foram substitudos pelo programa zenity que corresponde ao gdialog (Gnome), que j vem instalado por padro e utiliza a biblioteca GTK+ da interface grfica do Gnome para interagir com usurio exibindo caixas de dilogo usando um cdigo de sada para um script.

Sintaxe:
zenity opes Opes: Opo --calendar --entry --error --file-selection --info --list --notification --progress --question --text-info --warning --scale Exemplo: O exemplo abaixo exibe uma caixa de pergunta, onde o usurio pode escolher Sim ou Cancelar e feito um teste lgico comparando com a varivel especial $? que armazena a sada do comando zenity, onde Sim 0 e Cancelar 1. Descrio Exibe um calendrio Exibe uma caixa de texto de entrada Exibe uma caixa de dilogo de erro Exibe uma caixa de dilogo para selecionar um arquivo Exibe uma caixa de dilogo de informao Exibe uma caixa de dilogo de listagem Exibe um cone de notificao Exibe uma barra de progresso Exibe uma caixa de dilogo de pergunta Exibe uma caixa de dilogo de texto de informao Exibe uma caixa de dilogo de aviso Exibe uma caixa de dilogo de escala

interface_grafica_usuario

#!/bin/bash zenity --question if [ $? -eq 0 ] then echo "Voc escolheu Sim" elif [ $? -eq 1 ] then echo "Voc escolheu Cancelar" fi

Executando o script $ chmod +x dilogo1 $ ./dilogo1

Opes de ajuda:
zenity --help Exemplo: $ zenity --help-entry
Uso: zenity [OPES...]

Opes de entrada texto --entry Mostrar dilogo de entrada de texto --text=TEXTO Definir o texto do dilogo --entry-text=TEXTO Definir o texto introduzido

interface_grafica_usuario

--hide-text=TEXTO Esconder o texto introduzido

Opes gerais: Opo geral --title=TITULO Descrio Define um ttulo para a caixa de dilogo

--window-icon=Caminho_do_cone Define um cone na janela --width=LARGURA --height=ALTURA Exemplo: $ zenity --title "Titulo" --window-icon=icone.jpg --width=400 --height=200 --text-info --filename=/etc/passwd Define a largura da caixa de dilogo Define a altura da caixa de dilogo

Opes de calendrio (--calendar) : Opo --text=TEXTO --day=DIA --month=MS --year=ANO Exemplo: Descrio Define o texto da caixa de dilogo Define o dia do calendrio Define o ms do calendrio Define o ano do calendrio

interface_grafica_usuario

$ zenity --calendar --day=20 --month=3 --year=2008

Opes de caixa de texto (--entry): Opo --text=TEXTO --entry-text=TEXTO --hide-text=TEXTO Exemplo: $ zenity --entry --text="Digite seu nome" --entry-text="Digite aqui" Descrio Define o texto do dilogo Define o texto que ser exibido inicialmente Esconde o texto digitado na caixa de texto

interface_grafica_usuario

$ zenity --entry --text="Digite sua senha" --hide-text

Opes de erro (--error): Opo --text=TEXTO --no-wrap Exemplo: $ zenity --error --text="Mensagem de erro" --no-wrap Descrio Define o texto do dilogo No habilita quebra de linha no texto

Opes de seleo de arquivo (--file-selection):

Opo

Descrio

--filename=NOMEARQUIVO Define o nome do arquivo --multiple --directory Permite seleo de mltiplos arquivos Ativa apenas seleo de diretrios

interface_grafica_usuario

--save --confirm-overwrite --separator=SEPARADOR Exemplo:

Ativa o modo salvar Confirma seleo do arquivo se o nome do arquivo j existe Define qualquer caractere separador de sada (Exemplo , : - ; |/)

$ zenity --file-selection --multiple --directory --separator=,

interface_grafica_usuario

Opes de informao (--info): Opo --text=TEXTO --no-wrap Exemplo: $ zenity --info --text="Mensagem de informao..." --no-wrap Descrio Define o texto do dilogo No habilitar quebra de linha no texto

Opes de listagem (--list): Opo --text=TEXTO --column=COLUNA --checklist --radiolist --separator=SEPARADOR --multiple --editable --print-column=NMERO --hide-column=NMERO Exemplo 1: $ zenity --list --text="Listagem" --checklist --column="Escolha" --column="Produto" TRUE DVD FALSE Livro Descrio Define o texto do dilogo Define o cabealho da coluna Usa caixas de seleo para primeira coluna Usa botes de seleo para primeira coluna Define qualquer caractere separador de sada (Exemplo , : - ; |/) Permite a seleo de mltiplas linhas Permite alteraes no texto Imprime uma coluna especfica (O padro 1. 'ALL' pode ser usado para imprimir todas as colunas) Esconde uma coluna especfica

interface_grafica_usuario

Exemplo 2: $ zenity --list --text="Listagem" --radiolist --column="Escolha" --column="Sexo" FALSE Masculino FALSE Feminino

Exemplo 3: $ find /etc/ -name *.conf | zenity --list --title "Procurando arquivos" --text "Localizando arquivos .conf" --multiple
--column "Arquivos"

10

interface_grafica_usuario

Opes de notificao (--notification): Opo --notification --text=TEXTO --listen Exemplo: $ zenity --notification --text="Mensagem de notifcao..." Descrio Exibe notificao Define o texto da notificao Espera por comandos em stdin (entrada)

Opes de barra de progresso (--progress): Opo --text=TEXTO Descrio Define o texto do dilogo

--percentage=PORCENTAGEM Define percentagem inicial --pulsate --auto-close --auto-kill Exemplo 1: Pulsa a barra de progresso Fechar o dilogo quando atingir 100% Mata o processo principal se a tecla cancelar for pressionada

11

interface_grafica_usuario

$ zenity --progress --text="Porcentagem..." --percentage=10 --pulsate

Exemplo 2: $ ls -R / | zenity --progress --pulsate

Opes de perguntas (--question): Opo --text=TEXTO --no-wrap Exemplo : $ zenity --question --text="Deseja prosseguir ?" Descrio Define o texto do dilogo No habilita quebra de linha no texto

12

interface_grafica_usuario

Opes de texto (--text-info): Opo Descrio

--filename=NOMEDOARQUIVO Abre um arquivo --editable Exemplo : $ zenity --text-info --filename=arquivo --editable Permite alteraes no texto

Opes de aviso (--warning): Opo --text=TEXTO --no-wrap Exemplo : Descrio Define o texto do dilogo No habilita quebra de linha no texto

13

interface_grafica_usuario

$ zenity --warning --text="Mensagem de aviso"

Opes de escala (--scale): Opo --text=TEXTO --value=VALOR --min-value=VALOR --max-value=VALOR --step=VALOR --print-partial --hide-value Exemplo : $ zenity --scale --text="Texto" --value=10 --min-value=0 --max-value=100 Descrio Define o texto do dilogo Define o valor inicial Define o valor mnimo Define o valor mximo Define o tamanho de cada passo Imprime valores parciais Esconde o valor

Exemplos de scripts Criando um caixa de dilogo sim ou cancelar

14

interface_grafica_usuario

No exemplo abaixo, criado um script onde solicitado o nome do usurio e armazenado na varivel $NOME e feito uma pergunta para o usurio se deseja criar o arquivo com seu nome /tmp/$NOME.txt, caso escolha sim, armazenado o valor 0 na varivel $SEL e o arquivo criado, caso contrrio a operao cancelada e o valor 1 armazenado na varivel $SEL. $ nano script1
#!/bin/bash NOME=`zenity --entry --text="Digite seu nome:"` zenity --question --text="Deseja criar o arquivo /tmp/$NOME.txt ?" SEL=$? case $SEL in 0) touch /tmp/$NOME.txt ; zenity --info --text="Arquivo criado $NOME.txt" ; ls -l /tmp/$NOME.txt ;; 1) zenity --warning --text="Operao cancelada" ;; esac

Executando o script $ chmod +x script1 $ ./script1 Criando um caixa de dilogo com menu grfico $ nano menus1
#!/bin/bash # script com menus grficos while true do clear OPCAO=`zenity --list --text="Script com menus" --width=400 --height=300 --radiolist --column="Escolha" --column="Escolha a ao" FALSE "Localizar todos arquivos *.conf em /etc" FALSE "Abrir Arquivos" FALSE "Exibir Calendrio" FALSE "Abrir navegador Firefox" FALSE SAIR`

case $OPCAO in "Localizar todos arquivos *.conf em /etc") find /etc -name *.conf | zenity --progress --pulsate; echo "Pressione uma tecla" ; read ;; "Abrir Arquivos") zenity --file-selection --multiple ; echo "Pressione uma tecla..." ; read ;; "Exibir Calendrio") zenity --calendar ; echo "Pressione uma tecla..." ; read ;; "Abrir navegador Firefox") firefox ;; SAIR) exit 0 ;; *) echo "Ateno!!! Por favor selecione uma das opes" ; echo "Pressione uma tecla..." ; read ;; esac

15

interface_grafica_usuario

done

Abaixo segue a descrio dos comandos do programa na tabela: Comandos Explicao Inicia o loop infinito, e somente finalizado quando for escolhido a opo 5 (Sair) no menu Inicia o loop Limpa a tela toda vez que escolhido uma opo do menu Mostra os itens do menu Executa a ao apropriada de acordo com o item escolhido no menu, e quando clicar em Cancelar ou no e s c o l h e r nenhuma opo, exibido uma mensagem de erro, onde ser solicitado para o usurio escolher uma das opes Encerra o loop, se o item 5 (Sair) do menu for escolhido

while true

do

clear

OPCAO=`zenity --list --text="Script com menus" --width=400 --height=300 --radiolist --column="Escolha" --column="Escolha a ao" FALSE "Localizar todos arquivos *.conf em /etc" FALSE "Abrir Arquivos" FALSE "Exibir Calendrio" FALSE "Abrir navegador Firefox" FALSE SAIR`

case $OPCAO in
"Localizar todos arquivos *.conf em /etc") find /etc -name *.conf | zenity --progress --pulsate; "Pressione echo uma tecla" ; read ;; "Abrir Arquivos") zenity --file-selection --multiple ; echo "Pressione uma tecla..." ; read ;; "Exibir Calendrio") zenity --calendar ; echo "Pressione uma tecla..." ; read ;; "Abrir navegador Firefox") firefox ;; SAIR) exit 0 ;; *) echo "Ateno!!! Por favor selecione uma das opes " ; echo "Pressione uma tecla..." ; read ;; esac

done

Executando o script $ chmod +x menus1

16

interface_grafica_usuario

$ ./menus

17

Você também pode gostar