Обмін сценаріями

Наразі весь наш код Lua був у luarc. Це хороший спосіб розробити свій сценарій, але не дуже практичний для розповсюдження. Нам потрібно зробити це належним модулем Lua. Для цього ми зберігаємо код в окремому файлі (в цьому випадку scp-storage.lua):

--[[
SCP STORAGE
a simple storage to export images via scp

AUTHOR
Jérémy Rosen (jeremy.rosen@enst-bretagne.fr)

INSTALLATION
* copy this file in $CONFIGDIR/lua/
* add the following line in the file $CONFIGDIR/luarc
  require "scp-storage"

USAGE
* select "Export via SCP" in the storage selection menu
* set the target directory 
* export your images

LICENSE
GPLv2

]]

darktable = require "darktable"
dtutils = require "lib/dtutils"

dtutils.check_min_api_version("7.0.0", ...)

local scp_path = darktable.new_widget("entry"){
  tooltip = "Complete path to copy to. Can include user and hostname",
  text = "",
  reset_callback = function(self) self.text = "" end
}

darktable.register_storage("scp_export","Export via 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 failed for "..tostring(image))
    end
  end,
  nil, --finalize
  nil, --supported
  nil, --initialize
  darktable.new_widget("box") {
    orientation = "horizontal",
    darktable.new_widget("label"){ label = "target SCP PATH " },
    scp_path,
})

Darktable шукатиме сценарії (дотримуючись звичайних правил Lua) у стандартних каталогах плюс $CONFIGDIR/lua/*.lua. Отже, наш сценарій можна викликати, просто додавши require "scp-storage" у файл luarc. Пара додаткових приміток…

  • $CONFIGDIR представляє каталог конфігурації Darktable.

  • The function dtutils.check_min_api_version will check compatibility for you. "7.0.0" is the API version you have tested your script with and the “...” will turn into your script’s name.

  • Обов’язково оголосіть усі свої функції як local (“локальні”), щоб не забруднювати загальний простір імен.

  • Переконайтеся, що ви не залишаєте налагоджувальний друк у своєму коді – зокрема, “darktable.print_error” дозволяє залишати налагоджувальний друк у остаточному коді, не заважаючи консолі.

  • Ви можете вибрати будь-яку ліцензію для свого сценарію, але сценарії, які завантажуються на веб-сайт Darktable, мають бути GPLv2.

Після заповнення всіх полів, перевірки коду, ви можете завантажити його на нашу сторінку сценаріїв тут.

translations