Unser voriges Beispiel war etwas limitiert. Insbesondere der Gebrauch einer Präferenz für den Export-Pfad war nicht wirklich sehr gut. Das können wir besser mit dem Hinzufügen von Schnittstellenelementen im Export-Dialog.
UI Elemente werden mit der Ansel_new_widget
Funktion kreiert. Diese Funktion nimmt einen Typ von Grafikobjekt als Parameter und gibt ein neues Objekt zurück, das mit diesem Grafikobjekt korrespondiert. Du kannst dann verschiedene Felder in dieses Grafikobjekt setzen, um dessen Parameter zu setzen. Dann wirst du dieses Objekt als Parameter zu verschiedenen Funktionen zuweisen und es dem Ansel UI zuteilen. Das folgende einfache Beispiel fügt einen lib der Ansicht Leuchttisch hinzu mit einem einfachen Label:
Es gibt einen netten syntaktischen Trick, um das Lesen und Schreiben von UI-Element-Code zu erleichtern. Sie können diese Objekte als Funktionen mit einer Tabelle von Schlüsselwerten als Argument aufrufen. Damit kann das folgende Beispiel funktionieren. Es erstellt ein Container-Widget mit zwei Sub-Widgets. Ein Label und ein Texteingabefeld.
Da wir das jetzt wissen, verbessern wir unser Skript ein wenig.
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})