ການສ້າງອົງປະກອບອິນເຕີເຟດຜູ້ໃຊ້

ຕົວຢ່າງກ່ອນໜ້ານີ້ຂອງພວກເຮົາຍັງມີຂໍ້ຈຳກັດ. ໂດຍສະເພາະການໃຊ້ການຕັ້ງຄ່າສຳລັບເສັ້ນທາງການສົ່ງອອກນັ້ນບໍ່ສະດວກປານໃດ. ພວກເຮົາສາມາດເຮັດໃຫ້ດີກວ່ານັ້ນໄດ້ໂດຍການເພີ່ມອົງປະກອບເຂົ້າໃນອິນເຕີເຟດຜູ້ໃຊ້ໃນໜ້າຕ່າງການສົ່ງອອກ.

ອົງປະກອບ 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,
})

translations