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:

1local my_label = Ansel.new_widget(“label”)
2my_label.label = “Olá, mundo!”
3
4dt.register_lib(“test”,“test”,false,{
5    [dt.gui.views.lighttable] = {“DT_UI_CONTAINER_PANEL_LEFT_CENTER”,20},
6    },my_label)

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.

1   local my_widget = Ansel.new_widget(box){
2      orientation = horizontal,
3      Ansel.new_widget(label){ label = aqui =>  },
4      Ansel.new_widget(entry){ tooltip = por favor, insira o texto aqui }
5   }

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})