Il nostro esempio precedente era un po’ limitato. In particolare, l’uso della preferenza per il percorso di esportazione non era molto carino. Possiamo fare di meglio aggiungendo un’elemento all’interfaccia utente nella finestra di dialogo dell’esportazione.
Gli elementi UI vengono create attraverso la funzione Ansel_new_widget
. Questa riceve il tipo di widget come parametro e restituisce un nuovo oggetto corrispondente a quel widget. Puoi quindi impostare i vari campi in quel widget con i loro parametri. Potrai usare quell’oggetto come parametro per varie funzioni che verranno aggiunge alla UI di Ansel. Il seguente esempio aggiunge una libreria nel Tavolo Luminoso con una semplice etichetta:
C’è un simpatico trucco sintattico per avere il codice degli elementi di UI più facile da leggere e scrivere. Puoi chiamare questi oggetti come funzioni con una tabella di valori chiavi come argomento. Questo permette al prossimo esempio di funzionare. Crea un widget container con due sotto-widget: un’etichetta e un campo di testo.
Ora che lo sappiamo, miglioriamo un po’ il nostro script.
1Ansel = require "Ansel"
2
3local scp_path = Ansel.new_widget("entry"){
4 tooltip ="Complete path to copy to. Can include user and hostname",
5 text = "",
6 reset_callback = function(self) self.text = "" end
7}
8
9Ansel.register_storage("scp_export","Export via scp",
10 function( storage, image, format, filename,
11 number, total, high_quality, extra_data)
12 if not Ansel.control.execute(scp "..filename.." "..
13 scp_path.text
14 ) then
15 Ansel.print_error("scp failed for "..tostring(image))
16 end
17 end,
18 nil, --finalize
19 nil, --supported
20 nil, --initialize
21 Ansel.new_widget("box") {
22 orientation ="horizontal",
23 Ansel.new_widget("label"){label = "target SCP PATH "},
24 scp_path,
25})