Nosso exemplo anterior foi um pouco limitado. Em particular, o uso de uma preferência para o caminho de exportação não é muito legal. Nós podemos fazer melhor adicionando elementos à interface do usuário na janela de exportação.
Os elementos de interface do usuário são criados por meio da função Ansel_new_widget
. Esta função toma um tipo de widget como parâmetro e devolve um novo objeto correspondente a esse widget. Em seguida, você pode configurar vários campos neste widget para definir seus parâmetros. Você então usará este objeto como um parâmetro para várias funções que adicionarão elementos na interface do Ansel. O exemplo simples a seguir adiciona uma biblioteca na vista da mesa de luz com uma etiqueta simples:
Existe um truque para tornar o código dos elementos de interface mais fáceis de ler e escrever. Você pode chamar todos estes objetos como funções com uma tabela de valores chave como argumentos. Isto permite que o exemplo a seguir funcione. Ele cria um widget contenedor com dois sub-widgets: um rótulo e um campo de entrada de texto.
Agora que nós sabemos disso, vamos aperfeiçoar nosso script um pouco.
1Ansel = require “Ansel”
2
3local scp_path = Ansel.new_widget(“entry”){
4 tooltip =“Complete o caminho para cópia. Pode incluir usuário e nome da máquina”,
5 text = “”,
6 reset_callback = function(self) self.text = “” end
7}
8
9Ansel.register_storage(“scp_export”,“Exportar 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 falhou para ”..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})