Janela CHECKLIST
A janela Checklist é usada quando o usuário pode escolher mais de uma opção.
Exemplo: Quais cores ele gosta
Quais bandas prefere
Quais estilos musicais mais ouve

O comando para criar um CHECKLIST é:
Xdialog --checklist TEXTO ALTURA LARGURA ALTURA_LISTA TAG1 ITEM1 STATUS1
Onde:
TEXTO: É o texto que aparece na janela
ALTURA: É a altura da janela
LARGURA: É a largura da janela
ALTURA_LISTA: São quantas opções que serão mostradas na janela
TAG1: É o que o Xdialog retorna quando o usuário escolher a opção 1
ITEM1: É o texto que aparece para o usuário na opção 1
STATUS1: Pode ser "on" ou "off". Quando usado "on" a opção fica selecionada assim que abrir a janela, quando usado "off" a opção fica deselecionada.
Vamos a um exemplo
| cores.sh |
Xdialog --stdout --checklist "Quais cores vocês gosta?" 0 0 7 \
"Vermelho" "Vermelho" off \
"Azul" "Azul" off \
"Amarelo" "Amarelo" off \
"Verde" "Verde" off
|
Trabalhei só com o Xdialog para ficar claro uma coisa.
Todo conteúdo retorna em uma única linha.
Selecionando todas opção o Shell Script retorna:
Vermelho/Azul/Amarelo/Verde
Você deve estar pensando então em como pode trabalhar com esse resultado.
Uma das formas é não trabalhar com esse resultado e pedir para o Xdialog colocar cada resultado em uma linha
Para isso usamos a opção --separate-output
Veja o script com essa opção ativada
| cores_separadas.sh |
Xdialog --stdout --separate-output --checklist "Quais cores vocês gosta?" 0 0 7 \
"Vermelho" "Vermelho" off \
"Azul" "Azul" off \
"Amarelo" "Amarelo" off \
"Verde" "Verde" off
|
Agora o Xdialog retorna:
Vermelho
Azul
Amarelo
Verde
Você deve estar pensando:
- Beleza, ele coloca cada resposta em uma linha diferente, mas como vou trabalhar com os dados?
Uma opção é usar o WHILE, lembra-se dele?
Veja um script que escreve: "Você gosta de COR_SELECIONADA"
| cores_separadas.sh |
resposta=$(Xdialog --stdout --separate-output --checklist "Quais cores vocês gosta?" 0 0 7 \
"Vermelho" "Vermelho" off \
"Azul" "Azul" off \
"Amarelo" "Amarelo" off \
"Verde" "Verde" off)
echo "$resposta" | while read LINHA; do
echo Você gosta de $LINHA;
done
|
Na variável "resposta" é guardado as opções selecionadas pelo usuário
O WHILE lê cada uma das respostas e armazena na variável "LINHA"
E por fim o comando ECHO imprime o texto "Você gosta de COR_SELECIONA"
O resultado é:
Você gosta de Vermelho
Você gosta de Azul
Você gosta de Amarelo
Você gosta de Verde
Nota: 10
Postado em: 2008-08-16