headermask image

header image

Aggiungere interfacce grafiche agli script shell #3

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:

Zenity File Selection 1

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:

Zenity File Selection 2

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:

Zenity File Selection 3

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

Post a Comment

Your email is never published nor shared. Required fields are marked *

*
*
  • Licenza

    Creative Commons License
    Questo sito e tutti i suoi contenuti sono pubblicati sotto una Licenza Creative Commons, quando non diversamente specificato.

    Per altri usi, basta contattarmi.

  • Argomenti

  • Archivio mensile

  • Spazio offerto da

  • Alzate d'ingegno

    D: invece di usare il solito software pirata, hai provato OpenOffice?

    R: ho provato più volte a scaricarlo da Emule, ma ha sempre problemi.

  • Amici

  • Buonumore

  • Da leggere

  • Sicurezza e computer

  • Adesivi