In questa terza puntata vediamo come Zenity ci può aiutare con i file.
L’opzione è --file-selection, ed accetta l’opzione generale --title per dare il titolo alla finestra che appare:
$ zenity --file-selection --title="Prendi un file"
Questo il risultato:

Al solito il valore di ritorno è true, ossia zero, se si preme il pulsante OK, false, diverso da zero, se si preme il pulsante Annulla o si chiude la finestra. Il file scelto viene stampato sullo standard output con il path completo. Se dalla finestra mostrata in figura scelgo il file avatar.png all’uscita di Zenity con la pressione del tasto OK viene stampato:
$ zenity --file-selection --title="Prendi un file"
/home/mario/Desktop/avatar.png
Ecco un breve script shell che mostra come usare la selezione file di Zenity:
#!/bin/bash
# mostra la finestra di selezione file e assegna il file scelto
# che zenity manda allo standard output alla variabile "filescelto"
# notare i "backtick" -> ` `
filescelto=`zenity --file-selection --title="Zenity: seleziona un file"`
# prende il valore di ritorno del comando precedente
ritorno=$?
# controlla se si è premuto OK o Annulla
if [ "$ritorno" -ne 0 ]; then
# è stato premuto annulla o chiusa la finestra
zenity –warning –title=”Test di Zenity” –text=”Hai annullato”
exit 1
else
# è stato premuto OK
zenity –info –title=”Test di Zenity” –text=”Hai scelto il file: ‘$filescelto’”
fi
Lo script è disponibile qui.
La directory di partenza è quella attuale, ma è possibile cambiarla a piacimento usando l’opzione --filename=FILE, mettendo al posto di FILE il percorso voluto, completo di barra finale se è una directory:
$ zenity --file-selection --title="Prendi un file" --filename=/usr/share/doc/
Mostra questa finestra:

Usato in questo modo permette di scegliere un solo file. Se vogliamo selezionare più file possiamo usare le due opzioni --multiple e --separator=C dove C è il carattere che vogliamo venga utilizzato per separare i file fra loro nell’output, quello predefinito è la barra verticale (il pipe, ‘|‘). Per selezionare più file basta tenere premuto il tasto Control (Ctrl) mentre si puntano i file con un clic del mouse.
Se invece vogliamo restringere la selezione solo alle directory, si usa l’opzione --directory. In questo caso i file saranno visualizzati in grigio e non saranno selezionabili. Vale anche per le directory l’opzione --multiple.
Se intendiamo salvare un file, le finestre di dialogo mostrare non aiutano, perché non permettono di digitare il nome di un file. Basta però utilizzare l’opzione --save, ed appare la consueta finestra di dialogo del salvataggio file. Il file non viene creato, e si può controllare l’esistenza di un file con lo stesso nome includendo l’opzione --confirm-overwrite. In questo caso se viene scelto un file già esistente viene proposto un messaggio di avvertimento:

Se si risponde Annulla si rimane nella finestra di selezione e si può scegliere un altro nome, mentre se si preme Sostituisci, Zenity ritorna con il nome del file scelto. Il file non viene comunque toccato, sta a noi decidere il suo destino nel resto dello script shell.
Combinando invece le due opzioni --save e --directory, il comportamento cambia: il nome che viene scritto è inteso come nome di directory, che viene creata immediatamente alla pressione del tasto OK.
Invece l’opzione --multiple è incompatibile con la modalità salvataggio, ed è ignorata con l’emissione di un messaggio di avvertimento.
Se ti piace quello che scrivo registrati al feed RSS














BlogoSquare