ການສ້າງອົງປະກອບອິນເຕີເຟດຜູ້ໃຊ້
ຕົວຢ່າງກ່ອນໜ້ານີ້ຂອງພວກເຮົາຍັງມີຂໍ້ຈຳກັດ. ໂດຍສະເພາະການໃຊ້ການຕັ້ງຄ່າສຳລັບເສັ້ນທາງການສົ່ງອອກນັ້ນບໍ່ສະດວກປານໃດ. ພວກເຮົາສາມາດເຮັດໃຫ້ດີກວ່ານັ້ນໄດ້ໂດຍການເພີ່ມອົງປະກອບເຂົ້າໃນອິນເຕີເຟດຜູ້ໃຊ້ໃນໜ້າຕ່າງການສົ່ງອອກ.
ອົງປະກອບ UI ຖືກສ້າງຂຶ້ນຜ່ານຟັງຊັນ darktable.new_widget. ຟັງຊັນນີ້ຮັບຄ່າປະເພດຂອງ widget ເປັນພາຣາມິເຕີ ແລະ ສົ່ງຄືນວັດຖຸໃໝ່ທີ່ກົງກັບ widget ນັ້ນ. ຈາກນັ້ນທ່ານສາມາດຕັ້ງຄ່າຟີວຕ່າງໆໃນ widget ນັ້ນເພື່ອຕັ້ງຄ່າພາຣາມິເຕີຂອງມັນ. ທ່ານຈະໃຊ້ວັດຖຸນັ້ນເປັນພາຣາມິເຕີໃຫ້ກັບຟັງຊັນຕ່າງໆທີ່ຈະເພີ່ມມັນເຂົ້າໃນ UI ຂອງ darktable. ຕົວຢ່າງງ່າຍໆຕໍ່ໄປນີ້ຈະເພີ່ມ lib ໃນມຸມມອງແຜງແສງພ້ອມກັບປ້າຍຂໍ້ຄວາມງ່າຍໆ:
darktable = require "darktable"
local my_label = darktable.new_widget("label")
my_label.label = "Hello, world !"
darktable.register_lib("test","test",false,false,{
[darktable.gui.views.lighttable] = {"DT_UI_CONTAINER_PANEL_LEFT_CENTER",20},
},my_label)
ມີເຕັກນິກທາງໄວຍາກອນທີ່ຊ່ວຍໃຫ້ລະຫັດອົງປະກອບ UI ອ່ານ ແລະ ຂຽນໄດ້ງ່າຍຂຶ້ນ. ທ່ານສາມາດເອີ້ນວັດຖຸເຫຼົ່ານີ້ເປັນຟັງຊັນໂດຍໃຊ້ຕາຕະລາງຂອງຄ່າ key ເປັນອາກິວເມນ. ອັນນີ້ຊ່ວຍໃຫ້ຕົວຢ່າງຕໍ່ໄປນີ້ເຮັດວຽກໄດ້. ມັນສ້າງ widget ທີ່ເປັນຕົວບັນຈຸ (container) ພ້ອມກັບ widget ຍ່ອຍສອງອັນ: ປ້າຍຂໍ້ຄວາມ ແລະ ຊ່ອງປ້ອນຂໍ້ຄວາມ.
local my_widget = darktable.new_widget("box"){
orientation = "horizontal",
darktable.new_widget("label"){ label = "ທີ່ນີ້ => " },
darktable.new_widget("entry"){ tooltip = "ກະລຸນາປ້ອນຂໍ້ຄວາມໃສ່ບ່ອນນີ້" }
}
ຕອນນີ້ພວກເຮົາຮູ້ແລ້ວ, ມາປັບປຸງສະຄຣິບຂອງພວກເຮົາອີກໜ້ອຍໜຶ່ງ.
darktable = require "darktable"
local scp_path = darktable.new_widget("entry"){
tooltip = "ເສັ້ນທາງເຕັມທີ່ຈະສຳເນົາໄປຫາ. ສາມາດລວມເອົາຊື່ຜູ້ໃຊ້ ແລະ ຊື່ໂຮສ (hostname)",
text = "",
reset_callback = function(self) self.text = "" end
}
darktable.register_storage("scp_export","ສົ່ງອອກຜ່ານ 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 ຫຼົ້ມເຫຼວສຳລັບ "..tostring(image))
end
end,
nil, --finalize
nil, --supported
nil, --initialize
darktable.new_widget("box") {
orientation = "horizontal",
darktable.new_widget("label"){ label = "ເສັ້ນທາງ SCP ປາຍທາງ " },
scp_path,
})