Dialog Lezione 2 – Le Input Box

Eccoci dopo un po di attesa alla seconda lezione del nostro minicorso sulle interfaccie basate su Dialog.

Dopo aver introdotto le finestre che ci consentono di mostrare dei messaggi di testo, in questa lezione vedremo  come prendere input dall’utente mediante l’utilizzo delle input box. Vediamo prima di tutto come compare una inputbox con le dialog:

 

Esempio di inputbox

Come potete vedere la input box contiene un titolo, un messaggio, una casella nel quale inserire il nostro valore e i pulsanti “Ok” e “Annulla”.  Creare questo tipo di finestre e’ estremamente facile, ora vedremo  il comando per mostrarla e lo spiegheremo  in ogni sua componente, dopo di che spiegheremo come utilizzare il testo inserito come input.

Il comando utilizzato e’:

dialog --backtitle "Italialinux dialog course" --title "Second Dialog" \
--inputbox "Insert your text" 0 0

–backtitle e –title le avevamo gia incontrate la volta scorsa.  Brevemente vi ricordo a cosa servono: la prima specifica il titolo sullo sfondo sfondo (quello in alto a sinistra), mentre la seconda viene usata in tutte le dialog, per dare il titolo alla finestra.

L’opzione –inputbox prende dai 3 ai quattro  parametri, il primo indica il messaggio da inserire nella finestra mostrata, il secondo e il terzo indicano invece la larghezza e la lunghezza della finestra di dialogo, passando 0 per entrambi la dimensione viene decisa in maniera automatica. L’ultimo parametro invecc, opzionale, indica il valore iniziale se previsto.

Questo e’ quanto basta per creare la nostra inputbox. Ora dobbiamo cercare di capire come poter leggere utilizzare questi dati. Purtroppo il dato letto non viene messo come valore di ritorno dell’applicazione ma in STDERR, quindi dobbiamo leggere il valore inserito da li. Per far quello basta ridirezionarlo su di un file. Quindi il nostro comando diventera’:

dialog --backtitle "Italialinux dialog course" --title "Second Dialog" \
--inputbox "Insert your text" 0 0 2>tmpfile

In questo modo abbiamo indicato che il contenuto di stderr deve andare a finire sul file “tmpfile”. Ma quindi cosa contiene il valore di ritorno del comando?

Semplicemente contiene lo stato di uscita del programma. Se premiamo Ok il valore di retval sara’ 0, mentre se premiamo annulla il valore sara’ 1. Ora per leggere il quanto inserito dall’utente ci basta usare il comando cat:

TEXT=`cat tmpfile`

Ora visto che ci stiamo esercitando con le dialog, invece di usare una semplice echo per mostrare il valore inserito dall’utente, utilizzeremo una messagebox giusto per ripassare:

dialog --backtitle "Italialinux dialog course" --title "Valore inserito" \
--msgbox $TEXT  0 0

 

(in questo caso, avremo potuto usar anche una textbox visto che leggeva direttamente dal file).

Ecco quindi uno script di esempio:

#/bin/bash
dialog --backtitle "Italialinux dialog course" --title "Second Dialog" \
--inputbox "Insert your text" 0 0 $1 2>tmpfile
retval=$?
TEXT=`cat tmpfile`
echo $TEXT
dialog --backtitle "Italialinux dialog course" --title "Valore inserito" \
--msgbox $TEXT 0 0

Come vedete lavorare con le dialog e’ molto semplice, per oggi ci fermiamo qua, la prossima volta vedremo le checklist e radiolist.

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.