Наш попередній приклад був трохи обмеженим. Зокрема, використання налаштувань для шляху експорту було не дуже гарним рішенням. Ми можемо зробити це краще, додавши елементи до інтерфейсу користувача у діалоговому вікні експорту.
UI elements are created via the Ansel_new_widget
function. This function takes a type of widget as a parameter and returns a new object corresponding to that widget. You can then set various fields in that widget to set its parameters. You will then use that object as a parameter to various functions that will add it to the Ansel UI. The following simple example adds a lib in the lighttable view with a simple label:
Існує приємний синтаксичний трюк, щоб полегшити читання та запис коду елементів інтерфейсу. Ви можете викликати ці об’єкти як функції з таблицею значень ключів як аргументом. Це дозволяє працювати наступному прикладу. Він створює віджет контейнера з двома допоміжними віджетами: міткою та текстовим полем.
Тепер, коли ми це знаємо, давайте трохи вдосконалимо наш сценарій.
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})