construir elementos de interface do usuário
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 darktable_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 darktable. O exemplo simples a seguir adiciona uma biblioteca na vista da mesa de luz com uma etiqueta simples:
local my_label = darktable.new_widget(“label”)
my_label.label = “Olá, mundo!”
dt.register_lib(“test”,“test”,false,{
[dt.gui.views.lighttable] = {“DT_UI_CONTAINER_PANEL_LEFT_CENTER”,20},
},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.
local my_widget = darktable.new_widget(“box”){
orientation = “horizontal”,
darktable.new_widget(“label”){ label = “aqui => ” },
darktable.new_widget(“entry”){ tooltip = “por favor, insira o texto aqui” }
}
Agora que nós sabemos disso, vamos aperfeiçoar nosso script um pouco.
darktable = require “darktable”
local scp_path = darktable.new_widget(“entry”){
tooltip =“Complete o caminho para cópia. Pode incluir usuário e nome da máquina”,
text = “”,
reset_callback = function(self) self.text = “” end
}
darktable.register_storage(“scp_export”,“Exportar via scp”,
function( storage, image, format, filename,
number, total, high_quality, extra_data)
if not darktable.control.execute(scp “..filename..” “..
scp_path.text
) then
darktable.print_error(“scp falhou para ”..tostring(image))
end
end,
nil, --finalize
nil, --supported
nil, --initialize
darktable.new_widget(“box”) {
orientation =“horizontal”,
darktable.new_widget(“label”){label = “target SCP PATH ”},
scp_path,
})
translations
- English: building user interface elements
- German (translation incomplete): Der Bau von Schnittstellen Elementen
- Polish (translation incomplete): tworzenie elementów interfejsu użytkownika
- Ukrainian (translation incomplete): побудова елементів інтерфейсу користувача
- Dutch (translation incomplete): gebruikersinterface-elementen bouwen