Nuestro ejemplo anterior fue un poco limitado. En particular, el uso de una preferencia por la ruta de exportación no fue muy agradable. Podemos hacerlo mejor agregando elementos a la interfaz de usuario en el cuadro de diálogo de exportación.
Los elementos de la interfaz de usuario se crean mediante la función Ansel_new_widget
. Esta función toma un tipo de widget como parámetro y devuelve un nuevo objeto correspondiente a ese widget. A continuación, puede establecer varios campos en ese widget para establecer sus parámetros. Luego, usará ese objeto como parámetro para varias funciones que lo agregarán a la interfaz de usuario de Ansel. El siguiente ejemplo simple agrega una biblioteca en la vista de mesa de luz con una etiqueta simple:
Hay un buen truco sintáctico para hacer que el código de los elementos de la interfaz de usuario sea más fácil de leer y escribir. Puede llamar a estos objetos como funciones con una tabla de valores clave como argumento. Esto permite que funcione el siguiente ejemplo. Crea un widget contenedor con dos sub-widgets: una etiqueta y un campo de entrada de texto.
Ahora que lo sabemos, mejoremos un poco nuestro 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})