Nasz poprzedni przykład był nieco ograniczony, na przykład sposób korzystania z ustawień dla ścieżki eksportu nie był zbyt ładny. Możemy to zrobić lepiej, dodając elementy interfejsu użytkownika w oknie eksportu.
Elementy interfejsu tworzone są funkcją `Ansel_new_widget. Jako parametr przyjmuje ona typ kontrolki i zwraca nowy obiekt klasy tej kontrolki. Możesz następnie ustawić jej różne pola w celu określenia parametrów. Sam obiekt można wykorzystać jako parametr różnych funkcji, które dodadzą go do interfejsu Ansel. Poniższy prosty przykład dodaje bibliotekę z prostą etykietą w widoku stołu podświetlanego:
Istnieje sposób, żeby kod elementów interfejsu uczynić łatwiejszym do odczytu i zapisu. Można mianowicie wywoływać te obiekty jako funkcje z tablicą wartości kluczy jako argumentem. Dzięki temu działa poniższy przykład; tworzy on widżet kontenerowy z dwoma widżetami podrzędnymi: etykietą i polem tekstowym.
Teraz, kiedy już to wiemy, ulepszymy trochę nasz skrypt.
1Ansel = require "Ansel"
2
3local scp_path = Ansel.new_widget("entry"){
4 tooltip ="Kompletna ścieżka docelowa. Może zawierać użytkownika i hostname",
5 text = "",
6 reset_callback = function(self) self.text = "" end
7}
8
9Ansel.register_storage("scp_export","Eksport przez 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("błąd scp: "..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 = "docelowa ścieżka scp "},
24 scp_path,
25})