Finestre di dialogo¶
Le finestre di dialogo permettono di mostrare avvisi all’utente e di richiedere l’inserimento di parametri utili per l’esecuzione dello script. Sono disponibili in tutto lo script, sia all’interno del blocco del report, sia all’esterno.
Le finestre di dialogo vengono mandate in esecuzione nel punto dello script in cui sono state dichiarare. L’esecuzione dello script viene sospesa per poi riprendere alla chiusura della finestra.
Messaggi¶
message, warning e error generano una finestra con un messaggio. Si differenziano unicamente per l’icona mostrata.
Il parametro :title permette di aggiungere un titolo alla finestra.
Input utente¶
yesno e ask restituiscono dei valori corrispondenti alle scelte e ai dati inseriti dall’utente.
yesno¶
yesno genera una finestra di dialogo con i pulsanti Sì e No. Restituisce true se viene premuto il pulsante Sì e false nel caso sia stato premuto No.
Il parametro :title permette di aggiungere un titolo alla finestra.
if yesno("Vuoi produrre anche le tavole di dettaglio per Country?")
panels.add :_t, :country
end

ask¶
ask genera una finestra di dialogo contenente un numero arbitrario di controlli. Restituisce un vettore contenente i dati inseriti dall’utente. Premendo il pulsante Cancel si arresta l’esecuzione dello script.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | n = get_base
reportname, pdf, countries, day, nn = ask(
[
["Nome file output", "A1234"],
["Salva PDF", false],
["Selezionare i paesi", get_codes_and_levels(:country), :type => :multi],
["Data report", :type => :calendar],
["Numerosità campionaria", 100..n, :type => :slider, :initial => (n/2)],
],
:message => "Inserire i parametri richiesti per eseguire il report"
)
debug reportname, pdf, countries, day, nn
pt.defvar :pdf => pdf
name reportname
|

+ [0] Nome file output => A1234b
+ [1] Salva PDF => true
+ [2] Selezionare i paesi => [2, 3, 5]
+ [3] Data report => 2013-11-04
+ [4] Numerosità campionaria => 250
<String> "A1234b"
<TrueClass> true
<Array> [2, 3, 5]
<Date> #<Date: 2013-11-04 (4913201/2,0,2299161)>
<Fixnum> 250
Il primo argomento di ask è un vettore contenete i controlli che si desidera inserire nel form.
Il parametro :title permette di aggiungere un titolo alla finestra.
Il parametro :message permette di inserire un messaggio all’interno della finestra.
ask(controls=[], options={})
Ciascun controllo è costituito da un vettore contenete un messaggio di prompt, il valore con cui inizializzare il controllo (opzionale), un hash di parametri (opzionale). Il tipo di dato del valore di inizializzazione viene utilizzato per decidere quale controllo generare. Il parametro :type permette di modificare il tipo di controllo generato per default. Il parametro :initial permette di specificare il valore di default.
Sono disponibili dieci tipi di controllo:
- casella di testo: [prompt, String]: un box in cui inserire il testo
- checkbox: [prompt, true/false]: un checkbox
- spin: [prompt, Range]: un controllo con due pulsanti per incrementare/decrementare un valore numerico
- slider: [prompt, Range, :type => :slider]: un cursore per impostare un valore numerico
- lista singola: [prompt, Array]: una lista combinata per selezionare una voce da una lista
- lista multipla: [prompt, Array, :type => :multi]: una lista di checkbox per selezionare uno o più voci da una lista
- lista singola con codici: [prompt, Hash]: una lista combinata per selezionare una voce da una lista; restituisce il codice corrispondente
- lista multipla con codici: [prompt, Hash, :type => :multi]: una lista di checkbox per selezionare uno o più voci da una lista; restituisce i codici corrispondenti
- calendario: [prompt, Date, :type => :calendar]: un calendario per selezionare una data
- data: [prompt, Date, :type => :date]: una casella con una data e i pulsanti per incrementarla/decrementarla
Per generare una finestra di dialogo con semplicemente una casella di testo è possibile utilizzare la sintassi:
ask(prompt, default)
spss.open ask("Nome del file di dati", "demo_data")
