Dialog Lezione 3: Le Checklist (e le radiolist)

Questa volta dopo aver visto nelle prime due lezioni le input box e le messagebox, vediamo come realizzare delle checklist (e le radiolist, anche se l’articolo userá come esempio solo la checklist, dato che la sintassi é identica vi basterá sostituire il parametro –checklist con –radiolist) utilizzando le dialog.

La checklist viene utilizzata quando si vuole presentare all’utente una serie di opzioni da attivare (anche piú di una). Graficamente si presenta cosí:

(la radiolist ha un funzionamento simile, con la sola differenza che questa permetta la selezione di un solo parametro).

Come possiamo vedere anche in questo caso la struttura della finestra é molto simile a quella delle lezioni precedenti, abbiamo un titolo della finestra, una label che serve per la nostra richiesta, le opzioni della checklist, e infine i tasti Ok e cancel. Il tutto contornato dal classico titolo della schermata (quello in alto a sinistra).

Il comando utilizzato per mostrare questa finestra é il seguente:

dialog --backtitle "Italialinux dialog course"  --title "Lezione 3" \
--checklist "Mi piace italialinux?:" 0 0 4 \
1 Tanto off \
2 Tantissimo on \
3 Abbastanza off \
4 Sí off

Dove, come abbiamo visto dalle lezioni precedenti –backtitle indica il titolo che compare in alto a sinistra. Per il resto abbiamo:

  • –checklist “blablabla” – Indica appunto al comando dialog di visualizzare una checklist e il testo fra i doppi apici indica la domanda che vogliamo mostrare.
  • –title –  per il titolo della finestra della checklist
  • 0 0 – Indicano la larghezza e l’altezza (con 0 gli diciamo di impostarla automaticamente)
  • 4  – Indica il numero di righe/elementi della checklist (possiamo anche mettere un numero maggiore rispetto agli elementi, in questo caso verranno visualizzate delle linee vuote).
  • 1 testo off – Da qui iniziamo a specificare i singoli elementi della lista, dove abbiamo nell’ordine id testo valore di default (off/on ovvero deselezionato se messo a off e selezionato se messo a on). Mentre l’id é quello che viene visualizzato in rosso.

Ora l’applicazione come return value puó avere i valori 0 e 1. 0 se é stato premuto ok e 1 é stato premuto cancel. Il valore di ritorno si trova leggendo il contenuto  $?. Quindi se $? é uguale a 0 allora é stato premuto ok, e dobbiamo capire quali valori sono stati selezionati. Questi vengono stampati su STDERR quindi per leggerli dobbiamo redirezionare il contenuto di stderr, per seempio su un file. Quindi, come abbiamo fatto per le input box,  possiamo modificare il comando precedente aggiungendo appunto la redirezione su di un file:

 dialog --backtitle "Italialinux dialog course"  --title "Lezione 3" \
--checklist "Mi piace italialinux?:" 0 0 4 \
1 Tanto off \
2 Tantissimo on \
3 Abbastanza off \
4 Sí off  2> nomefile

Cosí le voci selezionate le troveremo all’interno del file nomefile . A questo punto lo leggiamo con cat:

INPUT=`cat nomefile`

E il gioco é fatto. Ora se facciamo una echo ottrremo gli elementi selezionati:

echo $INPUT

Nel caso della checkbox, puó tornare utile navigare uno alla volta gli elementi selezionati, lo si fá tramite un semplice for:

for option in $INPUT
do
        echo $option
done

Come potete vedere anche in questo caso fare una interfaccia con dialog é risultato estremamente semplice.

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.