Обмін сценаріями
Наразі весь наш код 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_versionwill 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.
Після заповнення всіх полів, перевірки коду, ви можете завантажити його на нашу сторінку сценаріїв тут.