57 Commits

Author SHA1 Message Date
wpferguson
d609823491 Merge pull request #368 from wpferguson/fix_rename_sequence_leading_zeros
Fix rename_images sequence substitution
2021-10-22 11:15:19 -04:00
Bill Ferguson
8f414f783a [Changelog] Updated with latest changes 2021-10-22 11:12:24 -04:00
Bill Ferguson
2e521553bf [rename_images] Added changed suggested by Volker Bödker to make sure
sequence was 4 digits with leading zeros.
2021-10-22 11:09:01 -04:00
wpferguson
e93f5fc812 Merge pull request #365 from MarcusGama/devel
Update pt_BR translation
2021-10-04 13:48:37 -04:00
Marcus Gama
3dbbb7dfd5 Update pt_BR translation 2021-10-02 05:52:20 -03:00
supertobi
fbb92e1023 Initial pt_BR translation - Merge pull request #364 from MarcusGama/devel
Initial pt_BR translation
2021-09-29 09:54:15 +02:00
Marcus Gama
ea4c6373f9 Initial pt_BR translation 2021-09-28 20:08:30 -03:00
supertobi
40b2569a21 Merge pull request #363 from lbschenkel - Fix URL of Finnish police document
Fix URL of Finnish police document
2021-09-14 09:49:15 +02:00
Leonardo Brondani Schenkel
ef6e4d8f0b Fix URL of Finnish police document
The old URL returns a 404, this is the current replacement.
2021-09-13 17:23:10 +02:00
wpferguson
657407c7a0 Merge pull request #361 from chrisaga/master
Minor errors in dtutils_log.libdoc.Example : error levels are log.xxxx
2021-09-02 14:40:09 -04:00
chrisaga
b254577bc8 Merge branch 'master' of github.com:chrisaga/lua-scripts 2021-09-02 11:26:57 +02:00
chrisaga
63763bedc8 Minor errors in dtutils_log.libdoc.Example : error levels are log.xxxx 2021-09-02 11:23:36 +02:00
wpferguson
3d50d0fdb4 Merge pull request #360 from wpferguson/fix_AutoGroup_style_hide
Remove styles hiding from AutoGrouper.lua
2021-08-31 12:32:10 -04:00
Bill Ferguson
1ca6b18f5e Remove styles hiding from AutoGrouper.lua 2021-08-31 12:31:04 -04:00
wpferguson
b82ffc2af3 Merge pull request #359 from johnny-bit/dt3139_moar_guidez
add new script harmonic armature guide
2021-08-15 17:09:59 -04:00
Hubert Kowalski
d142151055 fix lines and contrib require 2021-08-15 22:43:13 +02:00
wpferguson
91b78529fe Merge pull request #341 from wpferguson/color_profile_manager
Add new script color_profile_manager
2021-08-15 16:35:19 -04:00
wpferguson
7aec6884f4 Merge pull request #351 from wpferguson/add_rename_script
[contrib/rename] Add rename_images script
2021-08-15 16:34:41 -04:00
Hubert Kowalski
7f140828bb add harmonic armature guide 2021-08-14 13:01:00 +02:00
supertobi
4f13a56814 Merge pull request #358 from chrisaga/master
Add french translation for photils.lua
2021-08-13 10:36:54 +02:00
chrisaga
27d3ea253d Add simple file header 2021-08-13 10:15:38 +02:00
chrisaga
5209b9899d Add french translation for photils 2021-08-13 10:06:58 +02:00
wpferguson
6a40c836c0 Merge pull request #355 from wpferguson/fix_geoToolbox
geoToolbox 5.4 compatibility
2021-08-05 18:55:08 -04:00
Bill Ferguson
c4df81bdef [contrib/geoToolbox] changed atan2 call to atan for lua 5.4 compatibility 2021-08-05 18:53:05 -04:00
wpferguson
e99827d237 Merge pull request #354 from wpferguson/fix_quicktag_entry
Fix quicktag tag entry
2021-08-04 11:30:44 -04:00
Bill Ferguson
a0cbe8efd5 [contrib/quicktag] changed is_password to false on entry so user can
see what they typed.
2021-08-04 11:28:12 -04:00
Bill Ferguson
b4ee97a768 got register_lib arguments in the correct order 2021-08-02 23:44:05 -04:00
Bill Ferguson
4bdaaaf1ce renamed rename to rename_images to better reflect the purpose 2021-08-02 23:26:22 -04:00
Bill Ferguson
3cf0fea092 [contrib/rename] Rename files including moving them into new or other
film rolls.
2021-07-28 01:18:51 -04:00
wpferguson
97e1451dc6 Merge pull request #348 from wpferguson/fix_script_manager_register_event
[script_manager] updated register_event syntax to API 7.0.0
2021-07-14 11:45:54 -04:00
Bill Ferguson
4cbb7724f2 [script_manager] updated register_event syntax to API 7.0.0 2021-07-14 11:44:27 -04:00
wpferguson
8f6c2c82d3 Merge pull request #345 from wpferguson/sm_git_branch_pattern_matching
Solution to pattern matching current git directory
2021-07-06 00:49:04 -04:00
Bill Ferguson
a6d5001e84 [script_manager] set logging to error 2021-07-06 00:46:21 -04:00
Bill Ferguson
6af180a313 [script_manager] after numerous attempts to solve this with just pattern
matching I realized the lack of conditionals made it
                 impossible to solve in that manner, so I resorted to
                 splitting the output into lines and testing each line.
2021-07-06 00:42:55 -04:00
wpferguson
86cc22d943 Merge pull request #344 from wpferguson/sm_fix_current_branch_not_detected
[script_manager] fix current branch not detected
2021-07-05 23:25:00 -04:00
Bill Ferguson
c1fbfd80d4 [script_manager] fix current branch not detected 2021-07-05 23:24:19 -04:00
wpferguson
040a83fb17 Merge pull request #343 from wpferguson/sm_i18n_git_fix
script_manager: fix i18n git integration
2021-07-05 23:05:46 -04:00
Bill Ferguson
2bc23a1446 [script_manager] fixed log message and reset log level for production 2021-07-05 23:01:30 -04:00
Bill Ferguson
97f4c911ed [script_manager] modified dirty repo test 2021-07-05 22:55:30 -04:00
Bill Ferguson
53d9a42a1a [script_manager] modified git interface to not rely on locale 2021-07-05 22:49:39 -04:00
wpferguson
c96c5234c4 Merge pull request #342 from wpferguson/sm_fix_no_current_branch
Script Manager crash on no current branch
2021-07-05 15:15:25 -04:00
Bill Ferguson
9a3eb7bc3e [script_manager] added check for nil current branch and dumped repo_data 2021-07-05 15:13:56 -04:00
Bill Ferguson
53f15ba8b8 [color_profile_manager] created color_profile_manager to manage the
darktable input and output color profiles
2021-07-02 21:51:20 -04:00
wpferguson
ecdc74b5a6 Merge pull request #340 from wpferguson/script_manager_final_bug_fix
Script manager final bug fix
2021-07-02 21:35:16 -04:00
Bill Ferguson
422fdbe2cf [script_manager] make sure we have branches before comparing 2021-07-02 21:33:50 -04:00
Bill Ferguson
887bc03f32 bug 2021-07-02 21:29:36 -04:00
Bill Ferguson
e32c0c70a8 bug 2021-07-02 21:28:26 -04:00
Bill Ferguson
440dfcadfd bug 2021-07-02 21:26:45 -04:00
Bill Ferguson
93cc0adb39 bug 2021-07-02 21:25:36 -04:00
Bill Ferguson
f8ec85ddae bug 2021-07-02 21:22:43 -04:00
wpferguson
688333f756 Merge pull request #339 from wpferguson/script_manager_no_branch_bugfix
[script_manager] handle the case where no branches are detected
2021-07-02 21:14:50 -04:00
Bill Ferguson
8f314059e4 [script_manager] handle the case where no branches are detected 2021-07-02 21:13:33 -04:00
wpferguson
9386a08af0 Merge pull request #338 from wpferguson/script_manager_noise
Stop script_manager "noise"
2021-07-02 20:30:32 -04:00
Bill Ferguson
19cd118f8f [script_manager] converted dt.print_log statements to log.msg with the appropriate level 2021-07-02 20:28:48 -04:00
Bill Ferguson
c196f98bc6 [ChangeLog.md] fixed formatting 2021-07-01 21:51:26 -04:00
Bill Ferguson
56ec258cc7 [script_manager] Added API awareness so that the correct version of
scripts that match the API version of darktable are
                 used.

[Changelog.md]   Updated the change log with the latest changes.
2021-07-01 21:45:38 -04:00
Bill Ferguson
5da64a7da0 [API 7.0.0 compatibility] Made changes to take advantage of the latest API changes
including the ability to start and stop most scripts.
2021-06-19 23:34:14 -04:00
101 changed files with 6532 additions and 459 deletions

View File

@@ -1,21 +1,43 @@
## Changes from most recent to oldest
**22 Oct 2021 - wpferguson for Volker Bödker - make sure sequence is 4 digits in rename_images.lua**
**31 Aug 2021 - wpferguson - remove styles hiding from AutoGrouper.lua**
**02 Jul 2021 - wpferguson - merged API-7.0.0-dev branch to master**
* API-7.0.0 is darktable 3.6
* breaking changes
* register_event argments changed
* register_action arguments changed
* register_selection arguments changed
* register_event arguments changed
* scripts updated to API-7.0.0 compatibility
* script_manger updated to be API aware and check out the proper branch
based on darktable API version
** 19 Jun 2021 - wpferguson - fix issue 312, image_path_in_ui**
**01 Jul 2021 - wpferguson - created branch for API-6.1.0 - darktable 3.4**
** 02 Jun 2021 - wpferguson - fix contrib/quicktag**
**20 Jun 2021 - wpferguson - created branches for older API versions**
* API-6.0.0 - darktable 3.2.1
* API-5.0.2 - darktable 3.0
* API-5.0.1 - darktable 2.6.1
* API-5.0.0 - darktable 2.4
* API-4.0.0 - darktable 2.2
* API-3.0.0 - darktable 2.0
**19 Jun 2021 - wpferguson - fix issue 312, image_path_in_ui**
**02 Jun 2021 - wpferguson - fix contrib/quicktag**
* set new entry field is_password to false so entry
is visible to user while typing.
** 19 Mar 2021 - wpferguson - fixed crash in contrib/HDRmerge.lua**
**19 Mar 2021 - wpferguson - fixed crash in contrib/HDRmerge.lua**
* Made generated filename routine gracefully handle names that
are not in the expected format.
** 15 Mar 2021 - scheckmedia - updated contrib/photils.lua**
**15 Mar 2021 - scheckmedia - updated contrib/photils.lua**
* refactor print method
* add option to apply selected tags from a single image to multiple images
* add setting parameter to enable/disable the export of an image before tag suggestion
** 25 Feb 2021 - wpferguson - added detached mode to contrib/gimp.lua**
**25 Feb 2021 - wpferguson - added detached mode to contrib/gimp.lua**
* Added run_detached checkbox to the exporter GUI. Selecting run_detached
let's GIMP keep running and accepting additional images. It does not return

View File

@@ -37,14 +37,26 @@ selected images, the other button performs grouping on the entire active collect
]]
local dt = require "darktable"
local du = require "lib/dtutils"
du.check_min_api_version("7.0.0", "AutoGrouper")
local MOD = 'autogrouper'
-- return data structure for script_manager
local script_data = {}
script_data.destroy = nil -- function to destory the script
script_data.destroy_method = nil -- set to hide for libs since we can't destroy them commpletely yet, otherwise leave as nil
script_data.restart = nil -- how to restart the (lib) script after it's been hidden - i.e. make it visible again
local gettext = dt.gettext
-- Tell gettext where to find the .mo file translating messages for a particular domain
local CURR_API_STRING = dt.configuration_api_version_string
gettext.bindtextdomain("AutoGrouper",dt.configuration.config_dir.."/lua/locale/")
local function _(msgid)
return gettext.dgettext("AutoGrouper", msgid)
return gettext.dgettext("AutoGrouper", msgid)
end
local Ag = {}
@@ -52,123 +64,134 @@ Ag.module_installed = false
Ag.event_registered = false
local GUI = {
gap = {},
selected = {},
collection = {}
gap = {},
selected = {},
collection = {}
}
local function InRange(test, low, high) --tests if test value is within range of low and high (inclusive)
if test >= low and test <= high then
return true
else
return false
end
if test >= low and test <= high then
return true
else
return false
end
end
local function CompTime(first, second) --compares the timestamps and returns true if first was taken before second
first_time = first.exif_datetime_taken
if string.match(first_time, '[0-9]') == nil then first_time = '9999:99:99 99:99:99' end
first_time = tonumber(string.gsub(first_time, '[^0-9]*',''))
second_time = second.exif_datetime_taken
if string.match(second_time, '[0-9]') == nil then second_time = '9999:99:99 99:99:99' end
second_time = tonumber(string.gsub(second_time, '[^0-9]*',''))
return first_time < second_time
first_time = first.exif_datetime_taken
if string.match(first_time, '[0-9]') == nil then first_time = '9999:99:99 99:99:99' end
first_time = tonumber(string.gsub(first_time, '[^0-9]*',''))
second_time = second.exif_datetime_taken
if string.match(second_time, '[0-9]') == nil then second_time = '9999:99:99 99:99:99' end
second_time = tonumber(string.gsub(second_time, '[^0-9]*',''))
return first_time < second_time
end
local function SeperateTime(str) --seperates the timestamp into individual components for used with OS.time operations
local cleaned = string.gsub(str, '[^%d]',':')
cleaned = string.gsub(cleaned, '::*',':') --YYYY:MM:DD:hh:mm:ss
local year = string.sub(cleaned,1,4)
local month = string.sub(cleaned,6,7)
local day = string.sub(cleaned,9,10)
local hour = string.sub(cleaned,12,13)
local min = string.sub(cleaned,15,16)
local sec = string.sub(cleaned,18,19)
return {year = year, month = month, day = day, hour = hour, min = min, sec = sec}
local cleaned = string.gsub(str, '[^%d]',':')
cleaned = string.gsub(cleaned, '::*',':') --YYYY:MM:DD:hh:mm:ss
local year = string.sub(cleaned,1,4)
local month = string.sub(cleaned,6,7)
local day = string.sub(cleaned,9,10)
local hour = string.sub(cleaned,12,13)
local min = string.sub(cleaned,15,16)
local sec = string.sub(cleaned,18,19)
return {year = year, month = month, day = day, hour = hour, min = min, sec = sec}
end
local function GetTimeDiff(curr_image, prev_image) --returns the time difference (in sec.) from current image and the previous image
local curr_time = SeperateTime(curr_image.exif_datetime_taken)
local prev_time = SeperateTime(prev_image.exif_datetime_taken)
return os.time(curr_time)-os.time(prev_time)
local curr_time = SeperateTime(curr_image.exif_datetime_taken)
local prev_time = SeperateTime(prev_image.exif_datetime_taken)
return os.time(curr_time)-os.time(prev_time)
end
local function main(on_collection)
local images = {}
if on_collection then
local col_images = dt.collection
for i,image in ipairs(col_images) do --copy images to a standard table, table.sort barfs on type dt_lua_singleton_image_collection
table.insert(images,i,image)
end
else
images = dt.gui.selection()
local images = {}
if on_collection then
local col_images = dt.collection
for i,image in ipairs(col_images) do --copy images to a standard table, table.sort barfs on type dt_lua_singleton_image_collection
table.insert(images,i,image)
end
dt.preferences.write(MOD, 'active_gap', 'integer', GUI.gap.value)
if #images < 2 then
dt.print('please select at least 2 images')
return
end
table.sort(images, function(first, second) return CompTime(first,second) end) --sort images by timestamp
for i, image in ipairs(images) do
if i == 1 then
prev_image = image
elseif string.match(image.exif_datetime_taken, '[%d]') ~= nil then --make sure current image has a timestamp, if so check if it is within the user specified gap value and add to group
local curr_image = image
if GetTimeDiff(curr_image, prev_image) <= GUI.gap.value then
images[i]:group_with(images[i-1])
end
prev_image = curr_image
end
else
images = dt.gui.selection()
end
dt.preferences.write(MOD, 'active_gap', 'integer', GUI.gap.value)
if #images < 2 then
dt.print('please select at least 2 images')
return
end
table.sort(images, function(first, second) return CompTime(first,second) end) --sort images by timestamp
for i, image in ipairs(images) do
if i == 1 then
prev_image = image
elseif string.match(image.exif_datetime_taken, '[%d]') ~= nil then --make sure current image has a timestamp, if so check if it is within the user specified gap value and add to group
local curr_image = image
if GetTimeDiff(curr_image, prev_image) <= GUI.gap.value then
images[i]:group_with(images[i-1])
end
prev_image = curr_image
end
end
end
local function install_module()
if not Ag.module_installed then
dt.print_log("installing module")
dt.register_lib(
'AutoGroup_Lib', -- Module name
_('auto group'), -- name
true, -- expandable
true, -- resetable
{[dt.gui.views.lighttable] = {"DT_UI_CONTAINER_PANEL_RIGHT_CENTER", 99}}, -- containers
dt.new_widget("box"){
orientation = "vertical",
GUI.gap,
GUI.selected,
GUI.collection
}
MOD, -- Module name
_('auto group'), -- name
true, -- expandable
true, -- resetable
{[dt.gui.views.lighttable] = {"DT_UI_CONTAINER_PANEL_RIGHT_CENTER", 99}}, -- containers
dt.new_widget("box"){
orientation = "vertical",
GUI.gap,
GUI.selected,
GUI.collection
}
)
Ag.module_installed = true
dt.print_log("module installed")
dt.print_log("styles module visibility is " .. tostring(dt.gui.libs["styles"].visible))
end
end
local function destroy()
dt.gui.libs[MOD].visible = false
end
local function restart()
dt.gui.libs[MOD].visible = true
end
-- GUI --
temp = dt.preferences.read(MOD, 'active_gap', 'integer')
if not InRange(temp, 1, 86400) then temp = 3 end
GUI.gap = dt.new_widget('slider'){
label = _('group gap [sec.]'),
tooltip = _('minimum gap, in seconds, between groups'),
soft_min = 1,
soft_max = 60,
hard_min = 1,
hard_max = 86400,
step = 1,
digits = 0,
value = temp,
reset_callback = function(self)
self.value = 3
end
label = _('group gap [sec.]'),
tooltip = _('minimum gap, in seconds, between groups'),
soft_min = 1,
soft_max = 60,
hard_min = 1,
hard_max = 86400,
step = 1,
digits = 0,
value = temp,
reset_callback = function(self)
self.value = 3
end
}
GUI.selected = dt.new_widget("button"){
label = _('auto group: selected'),
tooltip =_('auto group selected images'),
clicked_callback = function() main(false) end
label = _('auto group: selected'),
tooltip =_('auto group selected images'),
clicked_callback = function() main(false) end
}
GUI.collection = dt.new_widget("button"){
label = _('auto group: collection'),
tooltip =_('auto group the entire collection'),
clicked_callback = function() main(true) end
label = _('auto group: collection'),
tooltip =_('auto group the entire collection'),
clicked_callback = function() main(true) end
}
if dt.gui.current_view().id == "lighttable" then
@@ -176,14 +199,20 @@ if dt.gui.current_view().id == "lighttable" then
else
if not Ag.event_registered then
dt.register_event(
"view-changed",
function(event, old_view, new_view)
if new_view.name == "lighttable" and old_view.name == "darkroom" then
install_module()
end
end
)
Ag.event_registered = true
"AutoGrouper", "view-changed",
function(event, old_view, new_view)
if new_view.name == "lighttable" and old_view.name == "darkroom" then
install_module()
end
end
)
Ag.event_registered = true
end
end
script_data.destroy = destroy
script_data.destroy_method = "hide"
script_data.restart = restart
script_data.show = restart
return script_data

View File

@@ -46,6 +46,7 @@ In the "Selected Images" module click on "Collect on this Image"
]]
local dt = require "darktable"
local du = require "lib/dtutils"
local gettext = dt.gettext
local previous = nil
local all_active = false
@@ -53,7 +54,15 @@ local all_active = false
-- Tell gettext where to find the .mo file translating messages for a particular domain
gettext.bindtextdomain("CollectHelper",dt.configuration.config_dir.."/lua/locale/")
local CURR_API_STRING = dt.configuration.api_version_string
du.check_min_api_version("7.0.0", "CollectHelper")
-- return data structure for script_manager
local script_data = {}
script_data.destroy = nil -- function to destory the script
script_data.destroy_method = nil -- set to hide for libs since we can't destroy them commpletely yet, otherwise leave as nil
script_data.restart = nil -- how to restart the (lib) script after it's been hidden - i.e. make it visible again
local function _(msgid)
return gettext.dgettext("CollectHelper", msgid)
@@ -67,6 +76,7 @@ local function CheckSingleImage(selection)
end
return false
end
local function CheckHasColorLabel(selection)
local ret = false
for _,image in pairs(selection) do
@@ -83,6 +93,7 @@ local function PreviousCollection()
previous = dt.gui.libs.collect.filter(previous)
end
end
local function CollectOnFolder(all_rules, all_active)
local images = dt.gui.selection()
if CheckSingleImage(images) then
@@ -103,6 +114,7 @@ local function CollectOnFolder(all_rules, all_active)
previous = dt.gui.libs.collect.filter(rules)
end
end
local function CollectOnColors(all_rules, all_active)
local images = dt.gui.selection()
if CheckSingleImage(images) then
@@ -159,6 +171,7 @@ local function CollectOnColors(all_rules, all_active)
end
end
end
local function CollectOnAll_AND()
local images = dt.gui.selection()
if CheckSingleImage(images) then
@@ -174,29 +187,42 @@ local function CollectOnAll_AND()
previous = dt.gui.libs.collect.filter(rules)
end
local function destroy()
dt.gui.libs.image.destroy_action("CollectHelper_prev")
if dt.preferences.read('module_CollectHelper','folder','bool') then
dt.gui.libs.image.destroy_action("CollectHelper_folder")
end
if dt.preferences.read('module_CollectHelper','colors','bool') then
dt.gui.libs.image.destroy_action("CollectHelper_labels")
end
if dt.preferences.read('module_CollectHelper','all_and','bool') then
dt.gui.libs.image.destroy_action("CollectHelper_and")
end
end
-- GUI --
dt.gui.libs.image.register_action(
_("collect: previous"),
"CollectHelper_prev", _("collect: previous"),
function() PreviousCollection() end,
_("Sets the Collect parameters to be the previously active parameters")
)
if dt.preferences.read('module_CollectHelper','folder','bool') then
dt.gui.libs.image.register_action(
_("collect: folder"),
dt.gui.libs.image.register_action(
"CollectHelper_folder", _("collect: folder"),
function() CollectOnFolder(_ , false) end,
_("Sets the Collect parameters to be the selected images's folder")
)
end
if dt.preferences.read('module_CollectHelper','colors','bool') then
dt.gui.libs.image.register_action(
_("collect: color label(s)"),
dt.gui.libs.image.register_action(
"CollectHelper_labels", _("collect: color label(s)"),
function() CollectOnColors(_ , false) end,
_("Sets the Collect parameters to be the selected images's color label(s)")
)
end
if dt.preferences.read('module_CollectHelper','all_and','bool') then
dt.gui.libs.image.register_action(
_("collect: all (AND)"),
dt.gui.libs.image.register_action(
"CollectHelper_and", _("collect: all (AND)"),
function() CollectOnAll_AND() end,
_("Sets the Collect parameters based on all activated CollectHelper options")
)
@@ -206,7 +232,7 @@ end
dt.preferences.register("module_CollectHelper", "all_and", -- name
"bool", -- type
_('CollectHelper: All'), -- label
_('Will create a collect parameter set that utelizes all enabled CollectHelper types (AND)'), -- tooltip
_('Will create a collect parameter set that utilizes all enabled CollectHelper types (AND)'), -- tooltip
true -- default
)
dt.preferences.register("module_CollectHelper", "colors", -- name
@@ -221,3 +247,7 @@ dt.preferences.register("module_CollectHelper", "folder", -- name
_('Enable the button that allows you to swap to a collection based on selected image\'s FOLDER location'), -- tooltip
true -- default
)
script_data.destroy = destroy
return script_data

View File

@@ -45,9 +45,21 @@ Select a style, whether you want tags to be copied from the original, and any ad
]]
local dt = require 'darktable'
local du = require "lib/dtutils"
local df = require 'lib/dtutils.file'
local dsys = require 'lib/dtutils.system'
du.check_min_api_version("7.0.0", "HDRmerge")
-- return data structure for script_manager
local script_data = {}
script_data.destroy = nil -- function to destory the script
script_data.destroy_method = nil -- set to hide for libs since we can't destroy them commpletely yet, otherwise leave as nil
script_data.restart = nil -- how to restart the (lib) script after it's been hidden - i.e. make it visible again
local mod = 'module_HDRMerge'
local os_path_seperator = '/'
if dt.configuration.running_os == 'windows' then os_path_seperator = '\\' end
@@ -287,6 +299,14 @@ local function install_module()
end
end
local function destroy()
dt.gui.libs["HDRMerge_Lib"].visible = false
end
local function restart()
dt.gui.libs["HDRMerge_Lib"].visible = true
end
-- GUI Elements --
local lbl_hdr = dt.new_widget('section_label'){
label = _('HDRMerge options')
@@ -439,7 +459,7 @@ if dt.gui.current_view().id == "lighttable" then
else
if not HDRM.event_registered then
dt.register_event(
"view-changed",
"HDRmerge", "view-changed",
function(event, old_view, new_view)
if new_view.name == "lighttable" and old_view.name == "darkroom" then
install_module()
@@ -449,3 +469,10 @@ else
HDRM.event_registered = true
end
end
script_data.destroy = destroy
script_data.restart = restart
script_data.destroy_method = "hide"
script_data.show = restart
return script_data

View File

@@ -50,7 +50,15 @@
local darktable = require("darktable")
local du = require "lib/dtutils"
du.check_min_api_version("3.0.0", "LabelsToTags")
du.check_min_api_version("7.0.0", "LabelsToTags")
-- return data structure for script_manager
local script_data = {}
script_data.destroy = nil -- function to destory the script
script_data.destroy_method = nil -- set to hide for libs since we can't destroy them commpletely yet, otherwise leave as nil
script_data.restart = nil -- how to restart the (lib) script after it's been hidden - i.e. make it visible again
-- Lua 5.3 no longer has "unpack" but "table.unpack"
unpack = unpack or table.unpack
@@ -60,7 +68,6 @@ ltt.module_installed = false
ltt.event_registered = false
local LIB_ID = "LabelsToTags"
local CURR_API_STRING = darktable.configuration.api_version_string
-- Helper functions: BEGIN
@@ -144,16 +151,16 @@ local mappingComboBox = darktable.new_widget("combobox"){
tooltip = getComboboxTooltip(),
reset_callback = function(selfC)
if selfC == nil then
return
return
end
i = 1
for _,m in pairs(keySet(getAvailableMappings())) do
selfC[i] = m
i = i+1
selfC[i] = m
i = i+1
end
n = #selfC
for j = i,n do
selfC[i] = nil
selfC[i] = nil
end
selfC.value = 1
selfC.tooltip = getComboboxTooltip()
@@ -172,17 +179,17 @@ local function doTagging(selfC)
local tagsToApply = {}
local hash = generateLabelHash(img)
for k,v in pairs(availableMappings[mappingComboBox.value]) do
if hashMatch(hash,k) then
for _,tag in ipairs(v) do
tagsToApply[tag] = true
end
end
if hashMatch(hash,k) then
for _,tag in ipairs(v) do
tagsToApply[tag] = true
end
end
end
for k,_ in pairs(tagsToApply) do
if memoizedTags[k] == nil then
memoizedTags[k] = darktable.tags.create(k)
end
darktable.tags.attach(memoizedTags[k],img)
if memoizedTags[k] == nil then
memoizedTags[k] = darktable.tags.create(k)
end
darktable.tags.attach(memoizedTags[k],img)
end
job.percent = job.percent + pctIncrement
end
@@ -208,14 +215,14 @@ darktable.register_tag_mapping = function(name, mapping)
end
for pattern,tags in pairs(mapping) do
if string.match(pattern,PATTERN_PATTERN) == nil then
darktable.print_error("In tag mapping '" .. name .. "': Pattern '" .. pattern .. "' invalid")
return
darktable.print_error("In tag mapping '" .. name .. "': Pattern '" .. pattern .. "' invalid")
return
end
for _,tag in ipairs(tags) do
if type(tag) ~= "string" then
darktable.print_error("In tag mapping '" .. name .. "': All tag mappings must be lists of strings")
return
end
if type(tag) ~= "string" then
darktable.print_error("In tag mapping '" .. name .. "': All tag mappings must be lists of strings")
return
end
end
end
availableMappings[name] = mapping
@@ -231,6 +238,14 @@ local function install_module()
end
end
local function destroy()
darktable.gui.libs[LIB_ID].visible = false
end
local function restart()
darktable.gui.libs[LIB_ID].visible = true
end
--[[
darktable.register_tag_mapping("Example",
{ ["+----*"] = { "Red", "Only red" },
@@ -248,7 +263,7 @@ if darktable.gui.current_view().id == "lighttable" then
else
if not ltt.event_registered then
darktable.register_event(
"view-changed",
LIB_ID, "view-changed",
function(event, old_view, new_view)
if new_view.name == "lighttable" and old_view.name == "darkroom" then
install_module()
@@ -259,3 +274,9 @@ else
end
end
script_data.destroy = destroy
script_data.restart = restart
script_data.destroy_method = "hide"
script_data.show = restart
return script_data

View File

@@ -54,7 +54,15 @@ local dsys = require "lib/dtutils.system"
local gettext = dt.gettext
--Check API version
du.check_min_api_version("5.0.0", "OpenInExplorer")
du.check_min_api_version("7.0.0", "OpenInExplorer")
-- return data structure for script_manager
local script_data = {}
script_data.destroy = nil -- function to destory the script
script_data.destroy_method = nil -- set to hide for libs since we can't destroy them commpletely yet, otherwise leave as nil
script_data.restart = nil -- how to restart the (lib) script after it's been hidden - i.e. make it visible again
-- Tell gettext where to find the .mo file translating messages for a particular domain
gettext.bindtextdomain("OpenInExplorer",dt.configuration.config_dir.."/lua/locale/")
@@ -65,7 +73,6 @@ end
local act_os = dt.configuration.running_os
local PS = act_os == "windows" and "\\" or "/"
local CURR_API_STRING = dt.configuration.api_version_string
--Detect OS and quit if it is not supported.
if act_os ~= "macos" and act_os ~= "windows" and act_os ~= "linux" then
@@ -181,13 +188,23 @@ local function open_in_fmanager()
end
end
local function destroy()
dt.gui.libs.image.destroy_action("OpenInExplorer")
dt.destroy_event("OpenInExplorer", "shortcut")
if act_os ~= "windows" then
dt.preferences.destroy("OpenInExplorer", "linked_image_files_dir")
end
dt.preferences.destroy("OpenInExplorer", "use_links")
end
-- GUI --
dt.gui.libs.image.register_action(
_("show in file explorer"),
"OpenInExplorer", _("show in file explorer"),
function() open_in_fmanager() end,
_("Open the file manager at the selected image's location")
)
)
if act_os ~= "windows" then
dt.preferences.register("OpenInExplorer", "linked_image_files_dir", -- name
@@ -210,8 +227,11 @@ if act_os ~= "windows" then
end
dt.register_event(
"shortcut",
"OpenInExplorer", "shortcut",
function(event, shortcut) open_in_fmanager() end,
"OpenInExplorer"
)
script_data.destroy = destroy
return script_data

View File

@@ -63,7 +63,15 @@ local dtsys = require "lib/dtutils.system"
local MODULE_NAME = "RL_out_sharp"
-- check API version
du.check_min_api_version("5.0.0", MODULE_NAME)
du.check_min_api_version("7.0.0", MODULE_NAME)
-- return data structure for script_manager
local script_data = {}
script_data.destroy = nil -- function to destory the script
script_data.destroy_method = nil -- set to hide for libs since we can't destroy them commpletely yet, otherwise leave as nil
script_data.restart = nil -- how to restart the (lib) script after it's been hidden - i.e. make it visible again
-- OS compatibility
local PS = dt.configuration.running_os == "windows" and "\\" or "/"
@@ -155,6 +163,12 @@ local function export2RL(storage, image_table, extra_data)
dt.print(_("finished exporting"))
end
-- script_manager integration
local function destroy()
dt.destroy_storage("exp2RL")
end
-- new widgets ----------------------------------------------------------------
output_folder_selector = dt.new_widget("file_chooser_button"){
@@ -224,6 +238,12 @@ sigma_slider.value = dt.preferences.read(MODULE_NAME, "sigma", "float")
iterations_slider.value = dt.preferences.read(MODULE_NAME, "iterations", "float")
jpg_quality_slider.value = dt.preferences.read(MODULE_NAME, "jpg_quality", "float")
-- script_manager integration
script_data.destroy = destroy
return script_data
-- end of script --------------------------------------------------------------
-- vim: shiftwidth=2 expandtab tabstop=2 cindent syntax=lua

View File

@@ -40,101 +40,18 @@ local darktable = require "darktable"
local du = require "lib/dtutils"
local filelib = require "lib/dtutils.file"
-- Forward declare the functions
local autostyle_apply_one_image,autostyle_apply_one_image_event,autostyle_apply,exiftool_attribute,capture
local CURR_API_STRING = darktable.configuration.api_version_string
du.check_min_api_version("7.0.0", "autostyle")
-- Tested it with darktable 1.6.1 and darktable git from 2014-01-25
du.check_min_api_version("2.0.2", "autostyle")
-- return data structure for script_manager
-- Receive the event triggered
function autostyle_apply_one_image_event(event,image)
autostyle_apply_one_image(image)
end
local script_data = {}
-- Apply the style to an image, if it matches the tag condition
function autostyle_apply_one_image (image)
-- We need the tag, the value and the style_name provided from the configuration string
local tag,value,style_name=string.match(darktable.preferences.read("autostyle","exif_tag","string"),"(%g+)%s*=%s*(%g+)%s*=>%s*(%g+)")
-- check they all exist (correct syntax)
if (not tag) then
darktable.print("EXIF TAG not found in " .. darktable.preferences.read("autostyle","exif_tag","string"))
return 0
end
if (not value) then
darktable.print("value to match not found in " .. darktable.preferences.read("autostyle","exif_tag","string"))
return 0
end
if (not style_name) then
darktable.print("style name not found in " .. darktable.preferences.read("autostyle","exif_tag","string"))
return 0
end
if not filelib.check_if_bin_exists("exiftool") then
darktable.print("Can't find exiftool")
return 0
end
-- First find the style (we have its name)
local styles= darktable.styles
local style
for _,s in ipairs(styles) do
if s.name == style_name then
style=s
end
end
if (not style) then
darktable.print("style not found for autostyle: " .. style_name)
return 0
end
-- Apply the style to image, if it is tagged
local ok,auto_dr_attr= pcall(exiftool_attribute,image.path .. '/' .. image.filename,tag)
--darktable.print_error("dr_attr:" .. auto_dr_attr)
-- If the lookup fails, stop here
if (not ok) then
darktable.print("Couldn't get attribute " .. auto_dr_attr .. " from exiftool's output")
return 0
end
if auto_dr_attr==value then
darktable.print_log("Image " .. image.filename .. ": autostyle automatically applied " .. darktable.preferences.read("autostyle","exif_tag","string") )
darktable.styles.apply(style,image)
return 1
else
darktable.print_log("Image " .. image.filename .. ": autostyle not applied, exif tag " .. darktable.preferences.read("autostyle","exif_tag","string") .. " not matched: " .. auto_dr_attr)
return 0
end
end
function autostyle_apply( shortcut)
local images = darktable.gui.action_images
local images_processed =0
local images_submitted =0
for _,image in pairs(images) do
images_submitted = images_submitted +1
images_processed = images_processed + autostyle_apply_one_image(image)
end
darktable.print("Applied auto style to " .. images_processed .. " out of " .. images_submitted .. " image(s)")
end
-- Retrieve the attribute through exiftool
function exiftool_attribute(path,attr)
local cmd="exiftool -" .. attr .. " '" .. path .. "'";
local exifresult=get_stdout(cmd)
local attribute=string.match(exifresult,": (.*)")
if (attribute == nil) then
darktable.print_error( "Could not find the attribute " .. attr .. " using the command: <" .. cmd .. ">")
-- Raise an error to the caller
error( "Could not find the attribute " .. attr .. " using the command: <" .. cmd .. ">");
end
-- darktable.print_error("Returning attribute: " .. attribute)
return attribute
end
script_data.destroy = nil -- function to destory the script
script_data.destroy_method = nil -- set to hide for libs since we can't destroy them commpletely yet, otherwise leave as nil
script_data.restart = nil -- how to restart the (lib) script after it's been hidden - i.e. make it visible again
-- run command and retrieve stdout
function get_stdout(cmd)
local function get_stdout(cmd)
-- Open the command, for reading
local fd = assert(io.popen(cmd, 'r'))
darktable.control.read(fd)
@@ -151,13 +68,108 @@ function get_stdout(cmd)
return data
end
-- Retrieve the attribute through exiftool
local function exiftool_attribute(path, attr)
local cmd = "exiftool -" .. attr .. " '" .. path .. "'";
local exifresult = get_stdout(cmd)
local attribute = string.match(exifresult, ": (.*)")
if (attribute == nil) then
darktable.print_error( "Could not find the attribute " .. attr .. " using the command: <" .. cmd .. ">")
-- Raise an error to the caller
error( "Could not find the attribute " .. attr .. " using the command: <" .. cmd .. ">");
end
-- darktable.print_error("Returning attribute: " .. attribute)
return attribute
end
-- Apply the style to an image, if it matches the tag condition
local function autostyle_apply_one_image (image)
local pref = darktable.preferences.read("autostyle", "exif_tag", "string")
-- We need the tag, the value and the style_name provided from the configuration string
local tag, value, style_name = string.match(pref, "(%g+)%s*=%s*(%g+)%s*=>%s*(%g+)")
-- check they all exist (correct syntax)
if (not tag) then
darktable.print("EXIF TAG not found in " .. pref)
return 0
end
if (not value) then
darktable.print("value to match not found in " .. pref)
return 0
end
if (not style_name) then
darktable.print("style name not found in " .. pref)
return 0
end
if not filelib.check_if_bin_exists("exiftool") then
darktable.print("Can't find exiftool")
return 0
end
-- First find the style (we have its name)
local styles = darktable.styles
local style
for _, s in ipairs(styles) do
if s.name == style_name then
style = s
end
end
if (not style) then
darktable.print("style not found for autostyle: " .. style_name)
return 0
end
-- Apply the style to image, if it is tagged
local ok, auto_dr_attr = pcall(exiftool_attribute, image.path .. '/' .. image.filename,tag)
--darktable.print_error("dr_attr:" .. auto_dr_attr)
-- If the lookup fails, stop here
if (not ok) then
darktable.print("Couldn't get attribute " .. auto_dr_attr .. " from exiftool's output")
return 0
end
if auto_dr_attr == value then
darktable.print_log("Image " .. image.filename .. ": autostyle automatically applied " .. pref)
darktable.styles.apply(style,image)
return 1
else
darktable.print_log("Image " .. image.filename .. ": autostyle not applied, exif tag " .. pref .. " not matched: " .. auto_dr_attr)
return 0
end
end
-- Receive the event triggered
local function autostyle_apply_one_image_event(event,image)
autostyle_apply_one_image(image)
end
local function autostyle_apply(shortcut)
local images = darktable.gui.action_images
local images_processed = 0
local images_submitted = 0
for _,image in pairs(images) do
images_submitted = images_submitted + 1
images_processed = images_processed + autostyle_apply_one_image(image)
end
darktable.print("Applied auto style to " .. images_processed .. " out of " .. images_submitted .. " image(s)")
end
local function destroy()
darktable.destroy_event("autostyle", "shortcut")
darktable.destroy_event("autostyle", "post-import-image")
end
-- Registering events
darktable.register_event("shortcut", autostyle_apply,
darktable.register_event("autostyle", "shortcut", autostyle_apply,
"Apply your chosen style from exiftool tags")
darktable.preferences.register("autostyle","exif_tag","string","Autostyle: EXIF_tag=value=>style","apply a style automatically if an EXIF_tag matches value. Find the tag with exiftool","")
darktable.preferences.register("autostyle", "exif_tag", "string", "Autostyle: EXIF_tag=value=>style", "apply a style automatically if an EXIF_tag matches value. Find the tag with exiftool", "")
darktable.register_event("post-import-image",
darktable.register_event("autostyle", "post-import-image",
autostyle_apply_one_image_event)
script_data.destroy = destroy
return script_data

View File

@@ -39,14 +39,20 @@
local dt = require "darktable"
local du = require "lib/dtutils"
-- return data structure for script_manager
local script_data = {}
script_data.destroy = nil -- function to destory the script
script_data.destroy_method = nil -- set to hide for libs since we can't destroy them commpletely yet
script_data.restart = nil -- how to restart the (lib) script after it's been hidden - i.e. make it visible again
local gettext = dt.gettext
-- not a number
local NaN = 0/0
du.check_min_api_version("3.0.0", "clear_GPS")
local CURR_API_STRING = dt.configuration.api_version_string
du.check_min_api_version("7.0.0", "clear_GPS")
-- Tell gettext where to find the .mo file translating messages for a particular domain
gettext.bindtextdomain("clear_GPS",dt.configuration.config_dir.."/lua/locale/")
@@ -64,14 +70,23 @@ local function clear_GPS(images)
end
end
local function destroy()
dt.destroy_event("clear_GPS", "shortcut")
dt.gui.libs.image.destroy_action("clear_GPS")
end
script_data.destroy = destroy
dt.gui.libs.image.register_action(
_("clear GPS data"),
"clear_GPS", _("clear GPS data"),
function(event, images) clear_GPS(images) end,
_("Clear GPS data from selected images")
)
dt.register_event(
"shortcut",
"clear_GPS", "shortcut",
function(event, shortcut) clear_GPS(dt.gui.action_images) end,
_("Clear GPS data")
)
return script_data

View File

@@ -0,0 +1,372 @@
--[[
color_profile_manager.lua - manage external darktable color profiles
Copyright (C) 2021 Bill Ferguson <wpferguson@gmail.com>.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
]]
--[[
color_profile_manager - manage external darktable color profiles
This script provides a tool to manage input and output external color
profiles used by darktable. Color profiles can be added or removed
to/from the correct directories so that darktable can find and use
them.
ADDITIONAL SOFTWARE NEEDED FOR THIS SCRIPT
* None
USAGE
* require this script from your main lua file
* select the input or output set of color profiles
* a list of profiles is displayed. Click the check box beside the
profile name to select it for removal. Click the "remove profile"
button to remove the profile.
* use the file selector to select a color profile to add to the currently
selected set (input or output)
* click the "add profile" button to add the profile to the selected set
BUGS, COMMENTS, SUGGESTIONS
* Send to Bill Ferguson, wpferguson@gmail.com or raise an issue on
https://github.com/dakrtable-org/lua-scripts
]]
local dt = require "darktable"
local du = require "lib/dtutils"
local df = require "lib/dtutils.file"
du.check_min_api_version("7.0.0", "color_profile_manager")
-- - - - - - - - - - - - - - - - - - - - - - - -
-- L O C A L I Z A T I O N
-- - - - - - - - - - - - - - - - - - - - - - - -
local gettext = dt.gettext
-- Tell gettext where to find the .mo file translating messages for a particular domain
gettext.bindtextdomain("color_profile_manager", dt.configuration.config_dir .. "/lua/locale/")
local function _(msgid)
return gettext.dgettext("color_profile_manager", msgid)
end
-- - - - - - - - - - - - - - - - - - - - - - - -
-- C O N S T A N T S
-- - - - - - - - - - - - - - - - - - - - - - - -
local MODULE_NAME = "color_profile_manager"
local PS = dt.configuration.running_os == "windows" and "\\" or "/"
local CS = dt.configuration.running_os == "windows" and "&" or ";"
local DIR_CMD = dt.configuration.running_os == "windows" and "dir /b" or "ls"
local COLOR_IN_DIR = dt.configuration.config_dir .. PS .. "color" .. PS .. "in"
local COLOR_OUT_DIR = dt.configuration.config_dir .. PS .. "color" .. PS .. "out"
-- - - - - - - - - - - - - - - - - - - - - - - -
-- N A M E S P A C E
-- - - - - - - - - - - - - - - - - - - - - - - -
local cpm = {}
cpm.widgets = {}
cpm.widgets.profile_box = dt.new_widget("box"){
orientation = "vertical",
}
cpm.module_installed = false
cpm.event_registered = false
-- - - - - - - - - - - - - - - - - - - - - - - -
-- F U N C T I O N S
-- - - - - - - - - - - - - - - - - - - - - - - -
local function check_for_directories()
if not df.test_file(COLOR_IN_DIR, "d") then
dt.print_log("didn't find " .. COLOR_IN_DIR)
return false
elseif not df.test_file(COLOR_OUT_DIR, "d") then
dt.print_log("didn't find " .. COLOR_OUT_DIR)
return false
else
dt.print_log("both directories exist")
return true
end
end
local function add_directories()
df.mkdir(COLOR_IN_DIR)
df.mkdir(COLOR_OUT_DIR)
end
local function list_profiles(dir)
local files = {}
local p = io.popen(DIR_CMD .. " " .. dir)
if p then
for line in p:lines() do
table.insert(files, line)
end
end
p:close()
return files
end
local function add_profile(file, dir)
df.file_copy(file, dir)
dt.print(_("added color profile " .. file .. " to " .. dir))
dt.print_log("color profile " .. file .. " added to " .. dir)
end
local function remove_profile(file, dir)
os.remove(dir .. PS .. file)
dt.print(_("removed color profile " .. file .. " from " .. dir))
dt.print_log("color profile " .. file .. " removed from " .. dir)
end
local function clear_profile_box()
for i = #cpm.widgets.profile_box, 1, -1 do
cpm.widgets.profile_box[i] = nil
end
end
local function add_profile_callback()
local profile_dir = COLOR_IN_DIR
if cpm.widgets.profile_set.selected == 2 then
profile_dir = COLOR_OUT_DIR
end
local new_profile = cpm.widgets.profile_selector.value
if string.lower(df.get_filetype(new_profile)) ~= "icm" and string.lower(df.get_filetype(new_profile)) ~= "icc" then
dt.print(_("ERROR: color profile must be an icc or icm file"))
dt.print_error(new_profile .. " selected and isn't an icc or icm file")
return
end
-- set selector value to directory that new profile came from
-- in case there are more
cpm.widgets.profile_selector.value = df.get_path(cpm.widgets.profile_selector.value)
add_profile(new_profile, profile_dir)
local files = list_profiles(profile_dir)
local widgets = {}
local profile_ptr = 1
for i, file in ipairs(files) do
if #cpm.widgets.profile_box == 0 or cpm.widgets.profile_box[profile_ptr].label ~= file then
table.insert(widgets, dt.new_widget("check_button"){value = false, label = file})
else
table.insert(widgets, cpm.widgets.profile_box[profile_ptr])
profile_ptr = profile_ptr + 1
if profile_ptr > #cpm.widgets.profile_box then
profile_ptr = #cpm.widgets.profile_box
end
end
end
clear_profile_box()
for _, widget in ipairs(widgets) do
table.insert(cpm.widgets.profile_box, widget)
end
if not cpm.widgets.remove_box.visible then
cpm.widgets.remove_box.visible = true
end
end
local function remove_profile_callback()
local widgets_to_keep = {}
local profile_dir = COLOR_IN_DIR
if cpm.widgets.profile_set.selected == 2 then
profile_dir = COLOR_OUT_DIR
end
for _, widget in ipairs(cpm.widgets.profile_box) do
if widget.value == true then
remove_profile(widget.label, profile_dir)
else
table.insert(widgets_to_keep, widget)
end
end
clear_profile_box()
for _, widget in ipairs(widgets_to_keep) do
table.insert(cpm.widgets.profile_box, widget)
end
if #cpm.widgets.profile_box == 0 then
cpm.widgets.remove_box.visible = false
else
cpm.widgets.remove_box.visible = true
end
end
local function list_profile_callback(choice)
local list_dir = COLOR_IN_DIR
if choice == 2 then
list_dir = COLOR_OUT_DIR
end
local files = list_profiles(list_dir)
if #files == 0 then
cpm.widgets.remove_box.visible = false
else
cpm.widgets.remove_box.visible = true
end
clear_profile_box()
for i, file in ipairs(files) do
cpm.widgets.profile_box[i] = dt.new_widget("check_button"){value = false, label = file}
end
end
local function install_module()
if not cpm.module_installed then
dt.register_lib(
MODULE_NAME, -- Module name
_("color profile manager"), -- Visible name
true, -- expandable
false, -- resetable
{[dt.gui.views.lighttable] = {"DT_UI_CONTAINER_PANEL_LEFT_CENTER", 0}}, -- containers
cpm.widgets.main_widget,
nil,-- view_enter
nil -- view_leave
)
cpm.module_installed = true
dt.control.sleep(500)
if not cpm.initialized then
cpm.widgets.profile_set.visible = false
cpm.widgets.add_box.visible = false
cpm.widgets.remove_box.visible = false
else
cpm.widgets.profile_set.selected = 1
end
end
end
local function destroy()
dt.gui.libs[MODULE_NAME].visible = false
return
end
local function restart()
dt.gui.libs[MODULE_NAME].visible = true
return
end
-- - - - - - - - - - - - - - - - - - - - - - - -
-- W I D G E T S
-- - - - - - - - - - - - - - - - - - - - - - - -
cpm.initialized = check_for_directories()
dt.print_log("cpm.initialized is " .. tostring(cpm.initialized))
if not cpm.initialized then
dt.print_log("creating init_box")
cpm.widgets.init_box = dt.new_widget("box"){
orientation = "vertical",
dt.new_widget("button"){
label = _("initialize color profiles"),
tooltip = _("create the directory structure to contain the color profiles"),
clicked_callback = function(this)
add_directories()
cpm.initialized = true
cpm.widgets.profile_set.visible = true
cpm.widgets.add_box.visible = true
cpm.widgets.remove_box.visible = false
cpm.widgets.init_box.visible = false
cpm.widgets.profile_set.selected = 1
end
}
}
end
cpm.widgets.profile_set = dt.new_widget("combobox"){
label = _("select profile set"),
tooltip = _("select input or output profiles"),
visible = cpm.initialized and false or true,
changed_callback = function(this)
if cpm.initialized then
list_profile_callback(this.selected)
end
end,
_("input"), _("output"),
}
cpm.widgets.profile_selector = dt.new_widget("file_chooser_button"){
title = _("select color profile to add"),
tooltip = _("select the .icc or .icm file to add"),
is_directory = false
}
cpm.widgets.add_box = dt.new_widget("box"){
orientation = "vertical",
visible = cpm.initialized and true or false,
dt.new_widget("section_label"){label = _("add profile")},
cpm.widgets.profile_selector,
dt.new_widget("button"){
label = _("add selected color profile"),
tooltip = _("add selected file to profiles"),
clicked_callback = function(this)
add_profile_callback()
end
}
}
cpm.widgets.remove_box = dt.new_widget("box"){
orientation = "vertical",
visible = cpm.initialized and true or false,
dt.new_widget("section_label"){label = _("remove profile")},
cpm.widgets.profile_box,
dt.new_widget("button"){
label = _("remove selected profile(s)"),
tooltip = _("remove the checked profile(s)"),
clicked_callback = function(this)
remove_profile_callback()
end
}
}
local main_widgets = {}
if not cpm.initialized then
table.insert(main_widgets, cpm.widgets.init_box)
end
table.insert(main_widgets, cpm.widgets.profile_set)
table.insert(main_widgets, cpm.widgets.remove_box)
table.insert(main_widgets, cpm.widgets.add_box)
cpm.widgets.main_widget = dt.new_widget("box"){
orientation = "vertical",
table.unpack(main_widgets)
}
-- - - - - - - - - - - - - - - - - - - - - - - -
-- M A I N
-- - - - - - - - - - - - - - - - - - - - - - - -
if dt.gui.current_view().id == "lighttable" then
install_module()
else
if not cpm.event_registered then
dt.register_event(
MODULE_NAME, "view-changed",
function(event, old_view, new_view)
if new_view.name == "lighttable" and old_view.name == "darkroom" then
install_module()
end
end
)
cpm.event_registered = true
end
end
local script_data = {}
script_data.destroy = destroy
script_data.restart = restart
script_data.destroy_method = "hide"
script_data.show = restart
return script_data

View File

@@ -42,8 +42,15 @@ local debug = require "darktable.debug"
local gettext = dt.gettext
du.check_min_api_version("3.0.0", "copy_attach_detach_tags")
local CURR_API_STRING = dt.configuration.api_version_string
du.check_min_api_version("7.0.0", "copy_attach_detach_tags")
-- return data structure for script_manager
local script_data = {}
script_data.destroy = nil -- function to destory the script
script_data.destroy_method = nil -- set to hide for libs since we can't destroy them commpletely yet, otherwise leave as nil
script_data.restart = nil -- how to restart the (lib) script after it's been hidden - i.e. make it visible again
-- Tell gettext where to find the .mo file translating messages for a particular domain
gettext.bindtextdomain("copy_attach_detach_tags",dt.configuration.config_dir.."/lua/locale/")
@@ -182,6 +189,41 @@ local function install_module()
end
end
local function destroy()
dt.destroy_event("cadt_ct", "shortcut")
dt.destroy_event("cadt_at", "shortcut")
dt.destroy_event("cadt_dt", "shortcut")
dt.destroy_event("cadt_rt", "shortcut")
dt.gui.libs["tagging_addon"].visible = false
end
local function restart()
-- shortcut for copy
dt.register_event("cadt_ct", "shortcut",
mcopy_tags,
_('copy tags from selected image(s)'))
-- shortcut for attach
dt.register_event("cadt_at", "shortcut",
attach_tags,
_('paste tags to selected image(s)'))
-- shortcut for detaching tags
dt.register_event("cadt_dt", "shortcut",
detach_tags,
_('remove tags from selected image(s)'))
-- shortcut for replace tags
dt.register_event("cadt_rt", "shortcut",
replace_tags,
_('replace tags from selected image(s)'))
dt.gui.libs["tagging_addon"].visible = true
end
local function show()
dt.gui.libs["tagging_addon"].visible = true
end
-- create modul Tagging addons
taglist_label.reset_callback = mcopy_tags
@@ -234,7 +276,7 @@ if dt.gui.current_view().id == "lighttable" then
else
if not cadt.event_registered then
dt.register_event(
"view-changed",
"cadt", "view-changed",
function(event, old_view, new_view)
if new_view.name == "lighttable" and old_view.name == "darkroom" then
install_module()
@@ -247,24 +289,30 @@ end
-- shortcut for copy
dt.register_event("shortcut",
dt.register_event("cadt_ct", "shortcut",
mcopy_tags,
_('copy tags from selected image(s)'))
-- shortcut for attach
dt.register_event("shortcut",
dt.register_event("cadt_at", "shortcut",
attach_tags,
_('paste tags to selected image(s)'))
-- shortcut for detaching tags
dt.register_event("shortcut",
dt.register_event("cadt_dt", "shortcut",
detach_tags,
_('remove tags from selected image(s)'))
-- shortcut for replace tags
dt.register_event("shortcut",
dt.register_event("cadt_rt", "shortcut",
replace_tags,
_('replace tags from selected image(s)'))
script_data.destroy = destroy
script_data.restart = restart
script_data.destroy_method = "hide"
script_data.show = show
return script_data
-- vim: shiftwidth=2 expandtab tabstop=2 cindent syntax=lua
-- kate: tab-indents: off; indent-width 2; replace-tabs on; remove-trailing-space on;

View File

@@ -35,9 +35,15 @@ USAGE
local darktable = require "darktable"
local du = require "lib/dtutils"
-- Tested with darktable 2.0.1
du.check_min_api_version("2.0.0", "cr2hdr")
local CURR_API_STRING = darktable.configuration.api_version_string
du.check_min_api_version("7.0.0", "cr2hdr")
-- return data structure for script_manager
local script_data = {}
script_data.destroy = nil -- function to destory the script
script_data.destroy_method = nil -- set to hide for libs since we can't destroy them commpletely yet, otherwise leave as nil
script_data.restart = nil -- how to restart the (lib) script after it's been hidden - i.e. make it visible again
local queue = {}
local processed_files = {}
@@ -108,11 +114,21 @@ local function convert_action_images(shortcut)
convert_images()
end
darktable.register_event("shortcut",
local function destroy()
darktable.destroy_event("cr2hdr", "shortcut")
darktable.destroy_event("cr2hdr", "post-import-image")
darktable.destroy_event("cr2hdr", "post-import-film")
end
darktable.register_event("cr2hdr", "shortcut",
convert_action_images, "Run cr2hdr (Magic Lantern DualISO converter) on selected images")
darktable.register_event("post-import-image",
darktable.register_event("cr2hdr", "post-import-image",
file_imported)
darktable.register_event("post-import-film",
darktable.register_event("cr2hdr", "post-import-film",
film_imported)
darktable.preferences.register("cr2hdr", "onimport", "bool", "Invoke on import", "If true then cr2hdr will try to proccess every file during importing. Warning: cr2hdr is quite slow even in figuring out on whether the file is Dual ISO or not.", false)
script_data.destroy = destroy
return script_data

View File

@@ -65,7 +65,15 @@ local mod = 'module_enfuseAdvanced'
local os_path_seperator = '/'
if dt.configuration.running_os == 'windows' then os_path_seperator = '\\' end
du.check_min_api_version('5.0.0', 'enfuseAdvanced')
du.check_min_api_version("7.0.0", "enfuseAdvanced")
-- return data structure for script_manager
local script_data = {}
script_data.destroy = nil -- function to destory the script
script_data.destroy_method = nil -- set to hide for libs since we can't destroy them commpletely yet, otherwise leave as nil
script_data.restart = nil -- how to restart the (lib) script after it's been hidden - i.e. make it visible again
-- Tell gettext where to find the .mo file translating messages for a particular domain
local gettext = dt.gettext
@@ -516,6 +524,10 @@ local function main(storage, image_table, extra_data)
dt.print('image fusion process complete')
end
local function destroy()
dt.destroy_storage('module_enfuseAdvanced')
end
--GUI--
stack_compression = dt.new_widget('stack'){}
local label_AIS_options= dt.new_widget('section_label'){
@@ -1142,3 +1154,7 @@ else
GUI.options_contain.active = 4
GUI.show_options.sensitive = false
end
script_data.destroy = destroy
return script_data

View File

@@ -31,10 +31,19 @@ local du = require "lib/dtutils"
local df = require("lib/dtutils.file")
local ds = require("lib/dtutils.system")
du.check_min_api_version("7.0.0", "exportLUT")
-- return data structure for script_manager
local script_data = {}
script_data.destroy = nil -- function to destory the script
script_data.destroy_method = nil -- set to hide for libs since we can't destroy them commpletely yet, otherwise leave as nil
script_data.restart = nil -- how to restart the (lib) script after it's been hidden - i.e. make it visible again
local gettext = dt.gettext
gettext.bindtextdomain("exportLUT",dt.configuration.config_dir.."/lua/locale/")
local CURR_API_STRING = dt.configuration.api_version_string
local function _(msgid)
return gettext.dgettext("exportLUT", msgid)
@@ -128,7 +137,7 @@ end
local function install_module()
if not eL.module_installed then
dt.register_lib(
_("export haldclut"),
"export haldclut",
_("export haldclut"),
true,
false,
@@ -145,6 +154,14 @@ local function install_module()
end
end
local function destroy()
dt.gui.libs["export haldclut"].visible = false
end
local function restart()
dt.gui.libs["export haldclut"].visible = true
end
local export_button = dt.new_widget("button"){
label = _("export"),
clicked_callback = export_luts
@@ -162,7 +179,7 @@ if dt.gui.current_view().id == "lighttable" then
else
if not eL.event_registered then
dt.register_event(
"view-changed",
"exportLUT", "view-changed",
function(event, old_view, new_view)
if new_view.name == "lighttable" and old_view.name == "darkroom" then
install_module()
@@ -173,3 +190,9 @@ else
end
end
script_data.destroy = destroy
script_data.restart = restart
script_data.destroy_method = "hide"
script_data.show = restart
return script_data

View File

@@ -73,12 +73,15 @@ local dtsys = require "lib/dtutils.system"
-- module name
local MODULE_NAME = "ext_editor"
local CURR_API_STRING = dt.configuration.api_version_string
du.check_min_api_version("7.0.0", MODULE_NAME)
-- return data structure for script_manager
-- check API version
du.check_min_api_version("5.0.2", MODULE_NAME) -- darktable 3.x
local script_data = {}
script_data.destroy = nil -- function to destory the script
script_data.destroy_method = nil -- set to hide for libs since we can't destroy them commpletely yet, otherwise leave as nil
script_data.restart = nil -- how to restart the (lib) script after it's been hidden - i.e. make it visible again
-- OS compatibility
local PS = dt.configuration.running_os == "windows" and "\\" or "/"
@@ -95,7 +98,7 @@ local gettext = dt.gettext
gettext.bindtextdomain(MODULE_NAME, dt.configuration.config_dir..PS.."lua"..PS.."locale"..PS)
local function _(msgid)
return gettext.dgettext(MODULE_NAME, msgid)
end
end
-- maximum number of external programs, can be increased to necessity
local MAX_EDITORS = 9
@@ -112,7 +115,7 @@ local allowed_file_types = {"JPG", "jpg", "JPEG", "jpeg", "TIF", "tif", "TIFF",
if not dt.preferences.read(MODULE_NAME, "initialized", "bool") then
dt.preferences.write(MODULE_NAME, "lastchoice", "integer", 0)
dt.preferences.write(MODULE_NAME, "initialized", "bool", true)
end
end
local lastchoice = 0
@@ -137,23 +140,23 @@ local function UpdateProgramList(combobox, button_edit, button_edit_copy, update
program_names[i] = name
program_paths[i] = df.sanitize_filename(dt.preferences.read(MODULE_NAME, "program_path_"..i, "string"))
n_entries = i
end
end
end
end
lastchoice = dt.preferences.read(MODULE_NAME, "lastchoice", "integer")
if lastchoice == 0 and n_entries > 0 then lastchoice = 1 end
if lastchoice > n_entries then lastchoice = n_entries end
dt.preferences.write(MODULE_NAME, "lastchoice", "integer", lastchoice)
lastchoice = dt.preferences.read(MODULE_NAME, "lastchoice", "integer")
if lastchoice == 0 and n_entries > 0 then lastchoice = 1 end
if lastchoice > n_entries then lastchoice = n_entries end
dt.preferences.write(MODULE_NAME, "lastchoice", "integer", lastchoice)
-- widgets enabled if there is at least one program configured
combobox.selected = lastchoice
local active = n_entries > 0
combobox.sensitive = active
button_edit.sensitive = active
button_edit_copy.sensitive = active
-- widgets enabled if there is at least one program configured
combobox.selected = lastchoice
local active = n_entries > 0
combobox.sensitive = active
button_edit.sensitive = active
button_edit_copy.sensitive = active
if update_button_pressed then dt.print(n_entries.._(" editors configured")) end
end
if update_button_pressed then dt.print(n_entries.._(" editors configured")) end
end
-- callback for buttons "edit" and "edit a copy" ------------------------------
@@ -163,13 +166,13 @@ local function OpenWith(images, choice, copy)
if choice > n_entries then
dt.print(_("not a valid choice"))
return
end
end
-- check if one image is selected, return if not
if #images ~= 1 then
dt.print(_("please select one image"))
return
end
end
local bin = program_paths[choice]
local friendly_name = program_names[choice]
@@ -188,18 +191,18 @@ local function OpenWith(images, choice, copy)
if v == file_ext then
allowed = true
break
end
end
end
end
if not allowed then
dt.print(_("file type not allowed"))
return
end
end
-- save image tags, rating and color
local tags = {}
for i, tag in ipairs(dt.tags.get_tags(image)) do
for i, tag in ipairs(dt.tags.get_tags(image)) do
if not (string.sub(tag.name, 1, 9) == "darktable") then table.insert(tags, tag) end
end
end
local rating = image.rating
local red = image.red
local blue = image.blue
@@ -221,8 +224,8 @@ local function OpenWith(images, choice, copy)
if not copy_success then
dt.print(_("error copying file ")..name)
return
end
end
end
end
-- launch the external editor, check result, return if error
local run_cmd = bin.." "..df.sanitize_filename(new_name)
@@ -231,7 +234,7 @@ local function OpenWith(images, choice, copy)
if result ~= 0 then
dt.print(_("error launching ")..friendly_name)
return
end
end
if copy then
-- import in database and group
@@ -256,7 +259,7 @@ local function OpenWith(images, choice, copy)
while not found do
index, new_leader = next(group_members, index)
if new_leader ~= image_leader then found = true end
end
end
new_leader:make_group_leader()
image:delete()
if image.local_copy then image:drop_cache() end -- to fix fail to allocate cache error
@@ -269,15 +272,15 @@ local function OpenWith(images, choice, copy)
if image.local_copy then image:drop_cache() end -- to fix fail to allocate cache error
new_image = dt.database.import(name)
new_image:group_with()
end
end
else
-- case 3: image is in a group but is not leader
image:delete()
if image.local_copy then image:drop_cache() end -- to fix fail to allocate cache error
new_image = dt.database.import(name)
new_image:group_with(image_leader)
end
end
end
end
-- restore image tags, rating and color
for i, tag in ipairs(tags) do dt.tags.attach(tag, new_image) end
@@ -296,14 +299,14 @@ local function OpenWith(images, choice, copy)
-- refresh darkroom view
if dt.gui.current_view().id == "darkroom" then
dt.gui.views.darkroom.display_image(new_image)
end
end
end
-- callback function for shortcuts --------------------------------------------
local function program_shortcut(event, shortcut)
OpenWith(dt.gui.action_images, tonumber(string.sub(shortcut, -2)), false)
end
end
-- export images and reimport in collection -----------------------------------
@@ -324,23 +327,23 @@ local function export2collection(storage, image_table, extra_data)
if not move_success then
dt.print(_("error moving file ")..temp_name)
return
end
end
-- import in database and group
new_image = dt.database.import(new_name)
new_image:group_with(image.group_leader)
end
end
dt.print(_("finished exporting"))
end
end
-- install the module in the UI -----------------------------------------------
local function install_module(dr)
local views = {[dt.gui.views.lighttable] = {"DT_UI_CONTAINER_PANEL_RIGHT_CENTER", 100}}
local views = {[dt.gui.views.lighttable] = {"DT_UI_CONTAINER_PANEL_RIGHT_CENTER", 90}}
if dr then
views = {[dt.gui.views.lighttable] = {"DT_UI_CONTAINER_PANEL_RIGHT_CENTER", 100},
views = {[dt.gui.views.lighttable] = {"DT_UI_CONTAINER_PANEL_RIGHT_CENTER", 90},
[dt.gui.views.darkroom] = {"DT_UI_CONTAINER_PANEL_LEFT_CENTER", 100}}
end
@@ -363,6 +366,27 @@ local function install_module(dr)
end
end
local function destroy()
for i = 1, MAX_EDITORS do
dt.destroy_event(MODULE_NAME .. i, "shortcut")
end
dt.destroy_storage("exp2coll")
dt.gui.libs[MODULE_NAME].visible = false
end
local function restart()
for i = 1, MAX_EDITORS do
dt.register_event(MODULE_NAME .. i, "shortcut",
program_shortcut, _("edit with program ")..string.format("%02d", i))
end
dt.register_storage("exp2coll", _("collection"), nil, export2collection)
dt.gui.libs[MODULE_NAME].visible = true
end
local function show()
dt.gui.libs[MODULE_NAME].visible = true
end
-- combobox, with variable number of entries ----------------------------------
local combobox = dt.new_widget("combobox") {
@@ -372,7 +396,7 @@ local combobox = dt.new_widget("combobox") {
dt.preferences.write(MODULE_NAME, "lastchoice", "integer", self.selected)
end,
""
}
}
-- button edit ----------------------------------------------------------------
@@ -382,8 +406,8 @@ local button_edit = dt.new_widget("button") {
--sensitive = false,
clicked_callback = function()
OpenWith(dt.gui.action_images, combobox.selected, false)
end
}
end
}
-- button edit a copy ---------------------------------------------------------
@@ -392,8 +416,8 @@ local button_edit_copy = dt.new_widget("button") {
tooltip = _("create a copy of the selected image and open it in external editor"),
clicked_callback = function()
OpenWith(dt.gui.action_images, combobox.selected, true)
end
}
end
}
-- button update list ---------------------------------------------------------
@@ -402,18 +426,18 @@ local button_update_list = dt.new_widget("button") {
tooltip = _("update list of programs if lua preferences are changed"),
clicked_callback = function()
UpdateProgramList(combobox, button_edit, button_edit_copy, true)
end
}
end
}
-- box for the buttons --------------------------------------------------------
-- it doesn't seem there is a way to make the buttons equal in size
local box1 = dt.new_widget("box") {
orientation = "horizontal",
orientation = "horizontal",
button_edit,
button_edit_copy,
button_update_list
}
}
-- table with all the widgets --------------------------------------------------
@@ -428,7 +452,7 @@ if dt.gui.current_view().id == "lighttable" then
else
if not ee.event_registered then
dt.register_event(
"view-changed",
MODULE_NAME, "view-changed",
function(event, old_view, new_view)
if new_view.name == "lighttable" and old_view.name == "darkroom" then
install_module(show_dr)
@@ -457,7 +481,7 @@ for i = MAX_EDITORS, 1, -1 do
dt.preferences.register(MODULE_NAME, "program_name_"..i, "string",
_("name of external editor ")..i,
_("friendly name of external editor"), "")
end
end
dt.preferences.register(MODULE_NAME, "show_in_darkrooom", "bool",
_("show external editors in darkroom"),
_("check to show external editors module also in darkroom (requires restart)"), false)
@@ -465,11 +489,18 @@ dt.preferences.register(MODULE_NAME, "show_in_darkrooom", "bool",
-- register the new shortcuts -------------------------------------------------
for i = 1, MAX_EDITORS do
dt.register_event("shortcut",
dt.register_event(MODULE_NAME .. i, "shortcut",
program_shortcut, _("edit with program ")..string.format("%02d", i))
end
end
script_data.destroy = destroy
script_data.restart = restart
script_data.destroy_method = "hide"
script_data.show = show
return script_data
-- end of script --------------------------------------------------------------
-- vim: shiftwidth=2 expandtab tabstop=2 cindent syntax=lua

View File

@@ -44,7 +44,6 @@ local dt = require "darktable"
local du = require "lib/dtutils"
local df = require "lib/dtutils.file"
local dtsys = require "lib/dtutils.system"
local gettext = dt.gettext
-- constants
@@ -52,7 +51,16 @@ local gettext = dt.gettext
local MODULE = "face_recognition"
local PS = dt.configuration.running_os == "windows" and '\\' or '/'
local OUTPUT = dt.configuration.tmp_dir .. PS .. "facerecognition.txt"
local CURR_API_STRING = dt.configuration.api_version_string
du.check_min_api_version("7.0.0", MODULE)
-- return data structure for script_manager
local script_data = {}
script_data.destroy = nil -- function to destory the script
script_data.destroy_method = nil -- set to hide for libs since we can't destroy them commpletely yet, otherwise leave as nil
script_data.restart = nil -- how to restart the (lib) script after it's been hidden - i.e. make it visible again
-- namespace
@@ -60,9 +68,6 @@ local fc = {}
fc.module_installed = false
fc.event_registered = false
-- ensure we meet the minimum api
du.check_min_api_version("5.0.0", "face_recognition")
-- Tell gettext where to find the .mo file translating messages for a particular domain
gettext.bindtextdomain("face_recognition", dt.configuration.config_dir.."/lua/locale/")
@@ -344,7 +349,7 @@ end
local function install_module()
if not fc.module_installed then
dt.register_lib(
"face_recognition", -- Module name
MODULE, -- Module name
_("face recognition"), -- Visible name
true, -- expandable
true, -- resetable
@@ -357,6 +362,14 @@ local function install_module()
end
end
local function destroy()
dt.gui.libs[MODULE].visible = false
end
local function restart()
dt.gui.libs[MODULE].visible = true
end
-- build the interface
fc.unknown_tag = dt.new_widget("entry"){
@@ -491,7 +504,7 @@ if dt.gui.current_view().id == "lighttable" then
else
if not fc.event_registered then
dt.register_event(
"view-changed",
MODULE, "view-changed",
function(event, old_view, new_view)
if new_view.name == "lighttable" and old_view.name == "darkroom" then
install_module()
@@ -512,5 +525,11 @@ if not dt.preferences.read(MODULE, "initialized", "bool") then
dt.preferences.write(MODULE, "initialized", "bool", true)
end
script_data.destroy = destroy
script_data.restart = restart
script_data.destroy_method = "hide"
script_data.show = restart
return script_data
--
-- vim: shiftwidth=2 expandtab tabstop=2 cindent syntax=lua

View File

@@ -61,8 +61,15 @@ local dt = require "darktable"
local du = require "lib/dtutils"
local df = require "lib/dtutils.file"
du.check_min_api_version("4.0.0", "fujifilm_dynamic_range")
local CURR_API_STRING = dt.configuration.api_version_string
du.check_min_api_version("7.0.0", "fujifilm_dynamic_range")
-- return data structure for script_manager
local script_data = {}
script_data.destroy = nil -- function to destory the script
script_data.destroy_method = nil -- set to hide for libs since we can't destroy them commpletely yet, otherwise leave as nil
script_data.restart = nil -- how to restart the (lib) script after it's been hidden - i.e. make it visible again
local function detect_dynamic_range(event, image)
if image.exif_maker ~= "FUJIFILM" then
@@ -105,7 +112,15 @@ local function detect_dynamic_range(event, image)
dt.print_log("[fujifilm_dynamic_range] raw exposure bias " .. tostring(raf_result))
end
dt.register_event("post-import-image",
local function destroy()
dt.destroy_event("fujifilm_dr", "post-import-image")
end
dt.register_event("fujifilm_dr", "post-import-image",
detect_dynamic_range)
dt.print_log("[fujifilm_dynamic_range] loaded")
script_data.destroy = destroy
return script_data

View File

@@ -26,11 +26,17 @@ Dependencies:
local dt = require "darktable"
local du = require "lib/dtutils"
local df = require "lib/dtutils.file"
local gettext = dt.gettext
du.check_min_api_version("4.0.0", "fujifilm_ratings")
local CURR_API_STRING = dt.configuration.api_version_string
du.check_min_api_version("7.0.0", "fujifilm_ratings")
-- return data structure for script_manager
local script_data = {}
script_data.destroy = nil -- function to destory the script
script_data.destroy_method = nil -- set to hide for libs since we can't destroy them commpletely yet, otherwise leave as nil
script_data.restart = nil -- how to restart the (lib) script after it's been hidden - i.e. make it visible again
gettext.bindtextdomain("fujifilm_ratings", dt.configuration.config_dir.."/lua/locale/")
@@ -68,7 +74,12 @@ local function detect_rating(event, image)
end
end
dt.register_event("post-import-image",
local function destroy()
dt.destroy_event("fujifilm_rat", "post-import-image")
end
dt.register_event("fujifilm_rat", "post-import-image",
detect_rating)
print(_("fujifilm_ratings loaded."))
script_data.destroy = destroy
return script_data

View File

@@ -37,7 +37,15 @@ local du = require "lib/dtutils"
local df = require "lib/dtutils.file"
local gettext = dt.gettext
du.check_min_api_version("3.0.0", "geoJSON_export")
du.check_min_api_version("7.0.0", "geoJSON_export")
-- return data structure for script_manager
local script_data = {}
script_data.destroy = nil -- function to destory the script
script_data.destroy_method = nil -- set to hide for libs since we can't destroy them commpletely yet, otherwise leave as nil
script_data.restart = nil -- how to restart the (lib) script after it's been hidden - i.e. make it visible again
-- Tell gettext where to find the .mo file translating messages for a particular domain
gettext.bindtextdomain("geoJSON_export",dt.configuration.config_dir.."/lua/locale/")
@@ -291,6 +299,10 @@ local function create_geoJSON_file(storage, image_table, extra_data)
end
local function destroy()
dt.destroy_storage("geoJSON_export")
end
-- Preferences
dt.preferences.register("geoJSON_export",
"CreateMapBoxHTMLFile",
@@ -326,3 +338,7 @@ dt.preferences.register("geoJSON_export",
-- Register
dt.register_storage("geoJSON_export", "geoJSON Export", nil, create_geoJSON_file)
script_data.destroy = destroy
return script_data

View File

@@ -28,11 +28,17 @@ require "geoToolbox"
local dt = require "darktable"
local du = require "lib/dtutils"
local df = require "lib/dtutils.file"
local gettext = dt.gettext
du.check_min_api_version("3.0.0", "geoToolbox")
local CURR_API_STRING = dt.configuration.api_version_string
du.check_min_api_version("7.0.0", "geoToolbox")
-- return data structure for script_manager
local script_data = {}
script_data.destroy = nil -- function to destory the script
script_data.destroy_method = nil -- set to hide for libs since we can't destroy them commpletely yet, otherwise leave as nil
script_data.restart = nil -- how to restart the (lib) script after it's been hidden - i.e. make it visible again
-- Tell gettext where to find the .mo file translating messages for a particular domain
gettext.bindtextdomain("geoToolbox",dt.configuration.config_dir.."/lua/locale/")
@@ -424,7 +430,7 @@ local function get_distance(lat1, lon1, ele1, lat2, lon2, ele2)
math.cos(math.rad(lat1)) * math.cos(math.rad(lat2)) *
math.sin(dLon/2) * math.sin(dLon/2)
;
local angle = 2 * math.atan2(math.sqrt(a), math.sqrt(1-a));
local angle = 2 * math.atan(math.sqrt(a), math.sqrt(1-a));
local distance = earthRadius * angle; -- Distance in km
-- Add the elevation to the calculation
@@ -595,6 +601,33 @@ local function install_module()
end
end
local function destroy()
dt.gui.libs["geoToolbox"].visible = false
dt.destroy_event("geoToolbox_cd", "shortcut")
dt.destroy_event("geoToolbox", "mouse-over-image-changed")
dt.destroy_event("geoToolbox_wg", "shortcut")
dt.destroy_event("geoToolbox_ng", "shortcut")
end
local function restart()
dt.register_event("geoToolbox_cd", "shortcut",
print_calc_distance, _("Calculate the distance from latitude and longitude in km"))
dt.register_event("geoToolbox", "mouse-over-image-changed",
toolbox_calc_distance)
dt.register_event("geoToolbox_wg", "shortcut",
select_with_gps, _("Select all images with GPS information"))
dt.register_event("geoToolbox_ng", "shortcut",
select_without_gps, _("Select all images without GPS information"))
dt.gui.libs["geoToolbox"].visible = true
end
local function show()
dt.gui.libs["geoToolbox"].visible = true
end
local separator = dt.new_widget("separator"){}
local separator2 = dt.new_widget("separator"){}
@@ -689,7 +722,7 @@ if dt.gui.current_view().id == "lighttable" then
else
if not gT.event_registered then
dt.register_event(
"view-changed",
"geoToolbox", "view-changed",
function(event, old_view, new_view)
if new_view.name == "lighttable" and old_view.name == "darkroom" then
install_module()
@@ -709,15 +742,21 @@ dt.preferences.register("geoToolbox",
'' )
-- Register
dt.register_event("shortcut",
dt.register_event("geoToolbox_cd", "shortcut",
print_calc_distance, _("Calculate the distance from latitude and longitude in km"))
dt.register_event("mouse-over-image-changed",
dt.register_event("geoToolbox", "mouse-over-image-changed",
toolbox_calc_distance)
dt.register_event("shortcut",
dt.register_event("geoToolbox_wg", "shortcut",
select_with_gps, _("Select all images with GPS information"))
dt.register_event("shortcut",
dt.register_event("geoToolbox_ng", "shortcut",
select_without_gps, _("Select all images without GPS information"))
script_data.destroy = destroy
script_data.restart = restart
script_data.destroy_method = "hide"
script_data.show = show
return script_data
-- vim: shiftwidth=2 expandtab tabstop=2 cindent syntax=lua
-- kate: hl Lua;

View File

@@ -72,7 +72,15 @@ local dtsys = require "lib/dtutils.system"
local gettext = dt.gettext
local gimp_widget = nil
du.check_min_api_version("5.0.0", "gimp")
du.check_min_api_version("7.0.0", "gimp")
-- return data structure for script_manager
local script_data = {}
script_data.destroy = nil -- function to destory the script
script_data.destroy_method = nil -- set to hide for libs since we can't destroy them commpletely yet, otherwise leave as nil
script_data.restart = nil -- how to restart the (lib) script after it's been hidden - i.e. make it visible again
-- Tell gettext where to find the .mo file translating messages for a particular domain
gettext.bindtextdomain("gimp",dt.configuration.config_dir.."/lua/locale/")
@@ -189,6 +197,10 @@ local function gimp_edit(storage, image_table, extra_data) --finalize
end
end
local function destroy()
dt.destroy_storage("module_gimp")
end
-- Register
gimp_widget = dt.new_widget("check_button"){
@@ -203,3 +215,6 @@ gimp_widget = dt.new_widget("check_button"){
dt.register_storage("module_gimp", _("Edit with GIMP"), show_status, gimp_edit, nil, nil, gimp_widget)
--
script_data.destroy = destroy
return script_data

View File

@@ -25,11 +25,17 @@ For each source folder, a separate <trk> is generated in the gpx file.
local dt = require "darktable"
local df = require "lib/dtutils.file"
local dl = require "lib/dtutils"
local gettext = dt.gettext
dl.check_min_api_version("3.0.0", "gpx-export")
local CURR_API_STRING = dt.configuration.api_version_string
dl.check_min_api_version("7.0.0", "gpx_export")
-- return data structure for script_manager
local script_data = {}
script_data.destroy = nil -- function to destory the script
script_data.destroy_method = nil -- set to hide for libs since we can't destroy them commpletely yet, otherwise leave as nil
script_data.restart = nil -- how to restart the (lib) script after it's been hidden - i.e. make it visible again
-- Tell gettext where to find the .mo file translating messages for a particular domain
gettext.bindtextdomain("gpx_export",dt.configuration.config_dir.."/lua/locale/")
@@ -149,6 +155,14 @@ local function install_module()
end
end
local function destroy()
dt.gui.libs["gpx_exporter"].visible = false
end
local function restart()
dt.gui.libs["gpx_exporter"].visible = true
end
gpx.widget = dt.new_widget("box")
{
orientation = "vertical",
@@ -175,7 +189,7 @@ if dt.gui.current_view().id == "lighttable" then
else
if not gpx.event_registered then
dt.register_event(
"view-changed",
"gpx_export", "view-changed",
function(event, old_view, new_view)
if new_view.name == "lighttable" and old_view.name == "darkroom" then
install_module()
@@ -185,3 +199,9 @@ else
gpx.event_registered = true
end
end
script_data.destroy = destroy
script_data.restart = restart
script_data.destroy_method = "hide"
return script_data

View File

@@ -0,0 +1,78 @@
--[[
harmonic artmature guide for darktable
copyright (c) 2021 Hubert Kowalski
darktable is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
darktable is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with darktable. If not, see <http://www.gnu.org/licenses/>.
]]
--[[
HARMONIC ARMATURE GUIDE
Harmonic Armature (also known as 14 line armature)
INSTALLATION
* copy this file in $CONFIGDIR/lua/contrib where CONFIGDIR is your darktable configuration directory
* add the following line in the file $CONFIGDIR/luarc
require "contrib/harmonic_armature_guide"
USAGE
* when using guides, select "harmonic armature" as guide
]]
local dt = require "darktable"
local du = require "lib/dtutils"
local gettext = dt.gettext
du.check_min_api_version("2.0.0", "harmonic_armature_guide")
-- Tell gettext where to find the .mo file translating messages for a particular domain
gettext.bindtextdomain("harmonic_armature_guide",dt.configuration.config_dir.."/lua/locale/")
local function _(msgid)
return gettext.dgettext("harmonic_armature_guide", msgid)
end
dt.guides.register_guide("harmonic armature",
-- draw
function(cairo, x, y, width, height, zoom_scale)
cairo:save()
cairo:translate(x, y)
cairo:scale(width, height)
cairo:move_to(0,0)
cairo:line_to(1, 0.5)
cairo:line_to(0.5, 1)
cairo:line_to(0,0)
cairo:line_to(1, 1)
cairo:line_to(0.5, 0)
cairo:line_to(0, 0.5)
cairo:line_to(1, 1)
cairo:move_to(1, 0)
cairo:line_to(0, 0.5)
cairo:line_to(0.5, 1)
cairo:line_to(1, 0)
cairo:line_to(0, 1)
cairo:line_to(0.5, 0)
cairo:line_to(1, 0.5)
cairo:line_to(0, 1)
cairo:restore()
end,
-- gui
function()
return dt.new_widget("label"){label = _("harmonic armature"), halign = "start"}
end
)

View File

@@ -54,7 +54,15 @@ local executable_table = {"hugin", "hugin_executor", "pto_gen"}
local PQ = dt.configuration.running_os == "windows" and '"' or "'"
-- works with darktable API version from 5.0.0 on
du.check_min_api_version("5.0.0", "hugin")
du.check_min_api_version("7.0.0", "hugin")
-- return data structure for script_manager
local script_data = {}
script_data.destroy = nil -- function to destory the script
script_data.destroy_method = nil -- set to hide for libs since we can't destroy them commpletely yet, otherwise leave as nil
script_data.restart = nil -- how to restart the (lib) script after it's been hidden - i.e. make it visible again
-- Tell gettext where to find the .mo file translating messages for a particular domain
gettext.bindtextdomain("hugin",dt.configuration.config_dir.."/lua/locale/")
@@ -205,6 +213,10 @@ local function create_panorama(storage, image_table, extra_data) --finalize
end
end
local function destroy()
dt.destroy_storage(namespace)
end
-- Register
if dt.configuration.running_os ~= "linux" then
exec_widget = df.executable_path_widget(executable_table)
@@ -224,6 +236,8 @@ hugin_widget = dt.new_widget("box") {
dt.register_storage(namespace, _("hugin panorama"), show_status, create_panorama, nil, nil, hugin_widget)
script_data.destroy = destroy
return script_data
--
-- vim: shiftwidth=2 expandtab tabstop=2 cindent syntax=lua

View File

@@ -71,7 +71,15 @@ local job = nil
local PS = dt.configuration.running_os == "windows" and "\\" or "/"
-- works with LUA API version 5.0.0
du.check_min_api_version("5.0.0", "image_stack")
du.check_min_api_version("7.0.0", "image_stack")
-- return data structure for script_manager
local script_data = {}
script_data.destroy = nil -- function to destory the script
script_data.destroy_method = nil -- set to hide for libs since we can't destroy them commpletely yet, otherwise leave as nil
script_data.restart = nil -- how to restart the (lib) script after it's been hidden - i.e. make it visible again
-- Tell gettext where to find the .mo file translating messages for a particular domain
gettext.bindtextdomain("image_stack",dt.configuration.config_dir.."/lua/locale/")
@@ -452,6 +460,10 @@ local function stop_job()
job.valid = false
end
local function destroy()
dt.destroy_storage("module_image_stack")
end
-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-- main program
-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
@@ -585,3 +597,6 @@ dt.preferences.register("align_image_stack", "align_use_gpu", -- name
dt.register_storage("module_image_stack", _("image stack"), show_status, image_stack, nil, nil, image_stack_widget)
script_data.destroy = destroy
return script_data

View File

@@ -107,15 +107,21 @@ local dt = require "darktable"
local du = require "lib/dtutils"
local df = require "lib/dtutils.file"
local ds = require "lib/dtutils.string"
local gettext = dt.gettext
local img_time = {}
img_time.module_installed = false
img_time.event_registered = false
du.check_min_api_version("3.0.0", "image_time")
local CURR_API_STRING = dt.configuration.api_version_string
du.check_min_api_version("7.0.0", "image_time")
-- return data structure for script_manager
local script_data = {}
script_data.destroy = nil -- function to destory the script
script_data.destroy_method = nil -- set to hide for libs since we can't destroy them commpletely yet, otherwise leave as nil
script_data.restart = nil -- how to restart the (lib) script after it's been hidden - i.e. make it visible again
-- Tell gettext where to find the .mo file translating messages for a particular domain
@@ -410,6 +416,14 @@ local function install_module()
end
end
local function destroy()
dt.gui.libs["image_time"].visible = false
end
local function restart()
dt.gui.libs["image_time"].visible = true
end
-- widgets
img_time.widgets = {
@@ -553,7 +567,7 @@ if dt.gui.current_view().id == "lighttable" then
else
if not img_time.event_registered then
dt.register_event(
"view-changed",
"image_time", "view-changed",
function(event, old_view, new_view)
if new_view.name == "lighttable" and old_view.name == "darkroom" then
install_module()
@@ -564,3 +578,9 @@ else
end
end
script_data.destroy = destroy
script_data.restart = restart
script_data.destroy_method = "hide"
script_data.show = restart
return script_data

View File

@@ -43,7 +43,15 @@ local gettext = dt.gettext
local PS = dt.configuration.running_os == "windows" and "\\" or "/"
du.check_min_api_version("5.0.0", kml_export)
du.check_min_api_version("7.0.0", "kml_export")
-- return data structure for script_manager
local script_data = {}
script_data.destroy = nil -- function to destory the script
script_data.destroy_method = nil -- set to hide for libs since we can't destroy them commpletely yet, otherwise leave as nil
script_data.restart = nil -- how to restart the (lib) script after it's been hidden - i.e. make it visible again
-- Tell gettext where to find the .mo file translating messages for a particular domain
gettext.bindtextdomain("kml_export",dt.configuration.config_dir.."/lua/locale/")
@@ -301,6 +309,10 @@ local function create_kml_file(storage, image_table, extra_data)
end
local function destroy()
dt.destroy_storage("kml_export")
end
-- Preferences
if dt.configuration.running_os == "windows" then
dt.preferences.register("kml_export",
@@ -369,5 +381,9 @@ else
dt.register_storage("kml_export", _("KML/KMZ Export"), nil, create_kml_file)
end
script_data.destroy = destroy
return script_data
-- vim: shiftwidth=2 expandtab tabstop=2 cindent syntax=lua
-- kate: hl Lua;

View File

@@ -20,7 +20,7 @@
--[[
PASSPORT CROPPING GUIDE
guides for cropping passport photos based on documents from the Finnish police
(https://www.poliisi.fi/instancedata/prime_product_julkaisu/intermin/embeds/poliisiwwwstructure/38462_Passikuvaohje_EN.pdf) describing passport photo dimensions of 47x36 mm and 500x653 px for digital biometric data stored in passports. They use ISO 19794-5 standard based on ICAO 9303 regulations which should also be compliant for all of Europe.
(https://poliisi.fi/documents/25235045/31329600/Passport-photograph-instructions-by-the-police-2020-EN-fixed.pdf/1eec2f4c-aed7-68e0-c112-0a8f25e0328d/Passport-photograph-instructions-by-the-police-2020-EN-fixed.pdf) describing passport photo dimensions of 47x36 mm and 500x653 px for digital biometric data stored in passports. They use ISO 19794-5 standard based on ICAO 9303 regulations which should also be compliant for all of Europe.
INSTALLATION
* copy this file in $CONFIGDIR/lua/ where CONFIGDIR is your darktable configuration directory

View File

@@ -56,7 +56,15 @@ if not df.check_if_bin_exists("pdflatex") then
return
end
du.check_min_api_version("4.0.0", "pdf_slideshow")
du.check_min_api_version("7.0.0", "pdf_slideshow")
-- return data structure for script_manager
local script_data = {}
script_data.destroy = nil -- function to destory the script
script_data.destroy_method = nil -- set to hide for libs since we can't destroy them commpletely yet, otherwise leave as nil
script_data.restart = nil -- how to restart the (lib) script after it's been hidden - i.e. make it visible again
dt.preferences.register
("pdf_slideshow","open with","string",
@@ -164,6 +172,10 @@ local function slide(latexfile,i,image,file)
my_write(latexfile,"\\end{figure}\n")
end
local function destroy()
dt.destroy_storage("pdf_slideshow")
end
dt.register_storage("pdf_slideshow",_("pdf slideshow"),
nil,
function(storage,image_table)
@@ -243,5 +255,8 @@ dt.register_storage("pdf_slideshow",_("pdf slideshow"),
nil,
widget)
script_data.destroy = destroy
return script_data
--
-- vim: shiftwidth=2 expandtab tabstop=2 cindent syntax=lua

View File

@@ -39,13 +39,20 @@
local dt = require "darktable"
local du = require "lib/dtutils"
local df = require "lib/dtutils.file"
local dtsys = require "lib/dtutils.system"
local MODULE_NAME = "photils"
du.check_min_api_version("5.0.0", MODULE_NAME)
du.check_min_api_version("7.0.0", MODULE_NAME)
-- return data structure for script_manager
local script_data = {}
script_data.destroy = nil -- function to destory the script
script_data.destroy_method = nil -- set to hide for libs since we can't destroy them commpletely yet, otherwise leave as nil
script_data.restart = nil -- how to restart the (lib) script after it's been hidden - i.e. make it visible again
local CURR_API_STRING = dt.configuration.api_version_string
local PS = dt.configuration.running_os == "windows" and "\\" or "/"
local gettext = dt.gettext
gettext.bindtextdomain(MODULE_NAME,
@@ -391,6 +398,22 @@ local function install_module()
end
end
local function destroy()
dt.gui.libs[MODULE_NAME].visible = false
dt.destroy_event("photils", "mouse-over-image-changed")
end
local function restart()
dt.gui.libs[MODULE_NAME].visible = true
dt.register_event("photils", "mouse-over-image-changed",
PHOTILS.image_changed)
end
local function show()
dt.gui.libs[MODULE_NAME].visible = true
end
-- add a fix number of buttons
for _ = 1, PHOTILS.per_page, 1 do
local btn_tag = dt.new_widget("check_button") {
@@ -454,7 +477,7 @@ dt.preferences.register(MODULE_NAME,
"The embedded thumbnail could speedup the tag suggestion but can fail if the RAW file is not supported."),
true)
dt.register_event("mouse-over-image-changed",
dt.register_event("photils", "mouse-over-image-changed",
PHOTILS.image_changed)
if dt.gui.current_view().id == "lighttable" then
@@ -462,7 +485,7 @@ if dt.gui.current_view().id == "lighttable" then
else
if not PHOTILS.event_registered then
dt.register_event(
"view-changed",
"photils", "view-changed",
function(event, old_view, new_view)
if new_view.name == "lighttable" and old_view.name == "darkroom" then
install_module()
@@ -473,3 +496,9 @@ else
end
end
script_data.destroy = destroy
script_data.restart = restart
script_data.destroy_method = "hide"
script_data.show = show
return script_data

View File

@@ -47,18 +47,23 @@ local dt = require "darktable"
local du = require "lib/dtutils"
local debug = require "darktable.debug"
du.check_min_api_version("7.0.0", "quicktag")
-- return data structure for script_manager
local script_data = {}
script_data.destroy = nil -- function to destory the script
script_data.destroy_method = nil -- set to hide for libs since we can't destroy them commpletely yet, otherwise leave as nil
script_data.restart = nil -- how to restart the (lib) script after it's been hidden - i.e. make it visible again
local qt = {}
qt.module_installed = false
qt.event_registered = false
qt.widget_table = {}
local gettext = dt.gettext
du.check_min_api_version("3.0.0", "quicktag")
local CURR_API_STRING = dt.configuration.api_version_string
-- Tell gettext where to find the .mo file translating messages for a particular domain
gettext.bindtextdomain("quicktag",dt.configuration.config_dir.."/lua/locale/")
@@ -163,7 +168,7 @@ abbrevate_tags(quicktag_table)
local button = {}
-- function to create buttons with tags as labels
for j=1,qnr do
for j = 1, qnr do
button[#button+1] = dt.new_widget("button") {
label = j..": "..quicktag_table[j],
clicked_callback = function() tagattach(tostring(quicktag_table[j]),j) end}
@@ -205,6 +210,29 @@ local function install_module()
end
end
local function destroy()
dt.gui.libs["quicktag"].visible = false
for i=1,qnr do
dt.destroy_event("quicktag " .. tostring(i), "shortcut")
end
end
local function restart()
dt.gui.libs["quicktag"].visible = true
for i = 1 ,qnr do
dt.register_event("quicktag", "shortcut",
function(event, shortcut) tagattach(tostring(quicktag_table[i])) end,
string.format(_("quicktag %i"),i))
end
end
local function show()
dt.gui.libs["quicktag"].visible = true
end
update_quicktag_list()
local new_quicktag = dt.new_widget("entry"){
@@ -257,7 +285,7 @@ if dt.gui.current_view().id == "lighttable" then
else
if not qt.event_registered then
dt.register_event(
"view-changed",
"quicktag", "view-changed",
function(event, old_view, new_view)
if new_view.name == "lighttable" and old_view.name == "darkroom" then
install_module()
@@ -270,10 +298,17 @@ end
-- create shortcuts
for i=1,qnr do
dt.register_event("shortcut",
dt.register_event("quicktag " .. tostring(i), "shortcut",
function(event, shortcut) tagattach(tostring(quicktag_table[i])) end,
string.format(_("quicktag %i"),i))
end
script_data.destroy = destroy
script_data.restart = restart
script_data.destroy_method = "hide"
script_data.show = show
return script_data
-- vim: shiftwidth=2 expandtab tabstop=2 cindent syntax=lua
-- kate: tab-indents: off; indent-width 2; replace-tabs on; remove-trailing-space on;

View File

@@ -42,8 +42,15 @@ local dt = require "darktable"
local du = require "lib/dtutils"
-- added version check
du.check_min_api_version("3.0.0", "rate_group")
local CURR_API_STRING = dt.configuration.api_version_string
du.check_min_api_version("7.0.0", "rate_group")
-- return data structure for script_manager
local script_data = {}
script_data.destroy = nil -- function to destory the script
script_data.destroy_method = nil -- set to hide for libs since we can't destroy them commpletely yet, otherwise leave as nil
script_data.restart = nil -- how to restart the (lib) script after it's been hidden - i.e. make it visible again
local function apply_rating(rating)
local images = dt.gui.action_images
@@ -60,37 +67,51 @@ local function apply_rating(rating)
end
end
dt.register_event("shortcut",
local function destroy()
dt.destroy_event("rg_reject", "shortcut")
dt.destroy_event("rg0", "shortcut")
dt.destroy_event("rg1", "shortcut")
dt.destroy_event("rg2", "shortcut")
dt.destroy_event("rg3", "shortcut")
dt.destroy_event("rg4", "shortcut")
dt.destroy_event("rg5", "shortcut")
end
dt.register_event("rg_reject", "shortcut",
function(event, shortcut)
apply_rating(-1)
end, "Reject group")
dt.register_event("shortcut",
dt.register_event("rg0", "shortcut",
function(event, shortcut)
apply_rating(0)
end, "Rate group 0")
dt.register_event("shortcut",
dt.register_event("rg1", "shortcut",
function(event, shortcut)
apply_rating(1)
end, "Rate group 1")
dt.register_event("shortcut",
dt.register_event("rg2", "shortcut",
function(event, shortcut)
apply_rating(2)
end, "Rate group 2")
dt.register_event("shortcut",
dt.register_event("rg3", "shortcut",
function(event, shortcut)
apply_rating(3)
end, "Rate group 3")
dt.register_event("shortcut",
dt.register_event("rg4", "shortcut",
function(event, shortcut)
apply_rating(4)
end, "Rate group 4")
dt.register_event("shortcut",
dt.register_event("rg5", "shortcut",
function(event, shortcut)
apply_rating(5)
end, "Rate group 5")
script_data.destroy = destroy
return script_data

View File

@@ -33,8 +33,15 @@ local du = require "lib/dtutils"
local debug = require "darktable.debug"
-- check API version
du.check_min_api_version("3.0.0", "rename-tags")
local CURR_API_STRING = darktable.configuration.api_version_string
du.check_min_api_version("7.0.0", "rename-tags")
-- return data structure for script_manager
local script_data = {}
script_data.destroy = nil -- function to destory the script
script_data.destroy_method = nil -- set to hide for libs since we can't destroy them commpletely yet, otherwise leave as nil
script_data.restart = nil -- how to restart the (lib) script after it's been hidden - i.e. make it visible again
local rt = {}
rt.module_installed = false
@@ -111,6 +118,14 @@ local function install_module()
end
end
local function destroy()
darktable.gui.libs["rename_tags"].visible = false
end
local function restart()
darktable.gui.libs["rename_tags"].visible = true
end
-- GUI
local old_widget = darktable.new_widget ("box") {
orientation = "horizontal",
@@ -137,7 +152,7 @@ if darktable.gui.current_view().id == "lighttable" then
else
if not rt.event_registered then
darktable.register_event(
"view-changed",
"rename_tags", "view-changed",
function(event, old_view, new_view)
if new_view.name == "lighttable" and old_view.name == "darkroom" then
install_module()
@@ -148,4 +163,11 @@ else
end
end
script_data.destroy = destroy
script_data.restart = restart
script_data.destroy_method = "hide"
script_data.show = restart
return script_data

352
contrib/rename_images.lua Normal file
View File

@@ -0,0 +1,352 @@
--[[
rename.lua - rename image file(s)
Copyright (C) 2020, 2021 Bill Ferguson <wpferguson@gmail.com>.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
]]
--[[
rename - rename an image file or files
This shortcut resets the GPS information to that contained within
the image file. If no GPS info is in the image file, the GPS data
is cleared.
USAGE
* require this script from your luarc file or start it from script_manager
* select an image or images
* enter a renaming pattern
* click the button to rename the files
BUGS, COMMENTS, SUGGESTIONS
* Send to Bill Ferguson, wpferguson@gmail.com
CHANGES
TODO
* Add pattern builder
* Add new name preview
]]
local dt = require "darktable"
local du = require "lib/dtutils"
local df = require "lib/dtutils.file"
du.check_min_api_version("7.0.0", "rename_images")
local gettext = dt.gettext
-- Tell gettext where to find the .mo file translating messages for a particular domain
gettext.bindtextdomain("rename_images",dt.configuration.config_dir.."/lua/locale/")
local function _(msgid)
return gettext.dgettext("rename_images", msgid)
end
-- namespace variable
local rename = {
presets = {},
substitutes = {},
placeholders = {"ROLL_NAME","FILE_FOLDER","FILE_NAME","FILE_EXTENSION","ID","VERSION","SEQUENCE","YEAR","MONTH","DAY",
"HOUR","MINUTE","SECOND","EXIF_YEAR","EXIF_MONTH","EXIF_DAY","EXIF_HOUR","EXIF_MINUTE","EXIF_SECOND",
"STARS","LABELS","MAKER","MODEL","TITLE","CREATOR","PUBLISHER","RIGHTS","USERNAME","PICTURES_FOLDER",
"HOME","DESKTOP","EXIF_ISO","EXIF_EXPOSURE","EXIF_EXPOSURE_BIAS","EXIF_APERTURE","EXIF_FOCUS_DISTANCE",
"EXIF_FOCAL_LENGTH","LONGITUDE","LATITUDE","ELEVATION","LENS","DESCRIPTION","EXIF_CROP"},
widgets = {},
}
rename.module_installed = false
rename.event_registered = false
-- script_manager integration
local script_data = {}
script_data.destroy = nil -- function to destory the script
script_data.destroy_method = nil -- set to hide for libs since we can't destroy them commpletely yet, otherwise leave as nil
script_data.restart = nil -- how to restart the (lib) script after it's been hidden - i.e. make it visible again
-- - - - - - - - - - - - - - - - - - - - - - - -
-- C O N S T A N T S
-- - - - - - - - - - - - - - - - - - - - - - - -
local MODULE_NAME = "rename_images"
local PS = dt.configuration.running_os == "windows" and "\\" or "/"
local USER = os.getenv("USERNAME")
local HOME = os.getenv(dt.configuration.running_os == "windows" and "HOMEPATH" or "HOME")
local PICTURES = HOME .. PS .. dt.configuration.running_os == "windows" and "My Pictures" or "Pictures"
local DESKTOP = HOME .. PS .. "Desktop"
-- - - - - - - - - - - - - - - - - - - - - - - -
-- F U N C T I O N S
-- - - - - - - - - - - - - - - - - - - - - - - -
local function build_substitution_list(image, sequence, datetime, username, pic_folder, home, desktop)
-- build the argument substitution list from each image
-- local datetime = os.date("*t")
local colorlabels = {}
if image.red then table.insert(colorlabels, "red") end
if image.yellow then table.insert(colorlabels, "yellow") end
if image.green then table.insert(colorlabels, "green") end
if image.blue then table.insert(colorlabels, "blue") end
if image.purple then table.insert(colorlabels, "purple") end
local labels = #colorlabels == 1 and colorlabels[1] or du.join(colorlabels, ",")
local eyear,emon,eday,ehour,emin,esec = string.match(image.exif_datetime_taken, "(%d-):(%d-):(%d-) (%d-):(%d-):(%d-)$")
local replacements = {image.film,
image.path,
df.get_filename(image.filename),
string.upper(df.get_filetype(image.filename)),
image.id,image.duplicate_index,
string.format("%04d", sequence),
datetime.year,
string.format("%02d", datetime.month),
string.format("%02d", datetime.day),
string.format("%02d", datetime.hour),
string.format("%02d", datetime.min),
string.format("%02d", datetime.sec),
eyear,
emon,
eday,
ehour,
emin,
esec,
image.rating,
labels,
image.exif_maker,
image.exif_model,
image.title,
image.creator,
image.publisher,
image.rights,
username,
pic_folder,
home,
desktop,
image.exif_iso,
image.exif_exposure,
image.exif_exposure_bias,
image.exif_aperture,
image.exif_focus_distance,
image.exif_focal_length,
image.longitude,
image.latitude,
image.elevation,
image.exif_lens,
image.description,
image.exif_crop
}
for i=1,#rename.placeholders,1 do rename.substitutes[rename.placeholders[i]] = replacements[i] end
end
local function substitute_list(str)
-- replace the substitution variables in a string
for match in string.gmatch(str, "%$%(.-%)") do
local var = string.match(match, "%$%((.-)%)")
if rename.substitutes[var] then
str = string.gsub(str, "%$%("..var.."%)", rename.substitutes[var])
else
dt.print_error(_("unrecognized variable " .. var))
dt.print(_("unknown variable " .. var .. ", aborting..."))
return -1
end
end
return str
end
local function clear_substitute_list()
for i=1,#rename.placeholders,1 do rename.substitutes[rename.placeholders[i]] = nil end
end
local function stop_job(job)
job.valid = false
end
local function install_module()
if not rename.module_installed then
dt.register_lib(
MODULE_NAME,
_("rename images"),
true,
true,
{[dt.gui.views.lighttable] = {"DT_UI_CONTAINER_PANEL_RIGHT_CENTER",700}},
dt.new_widget("box"){
orientation = "vertical",
rename.widgets.pattern,
rename.widgets.button,
},
nil,
nil
)
rename.module_installed = true
end
end
local function destroy()
dt.gui.libs[MODULE_NAME].visible = false
end
local function restart()
dt.gui.libs[MODULE_NAME].visible = true
end
-- - - - - - - - - - - - - - - - - - - - - - - -
-- M A I N
-- - - - - - - - - - - - - - - - - - - - - - - -
local function do_rename(images)
if #images > 0 then
local pattern = rename.widgets.pattern.text
dt.preferences.write(MODULE_NAME, "pattern", "string", pattern)
dt.print_log(_("pattern is " .. pattern))
if string.len(pattern) > 0 then
local datetime = os.date("*t")
local job = dt.gui.create_job(_("renaming images"), true, stop_job)
for i, image in ipairs(images) do
if job.valid then
job.percent = i / #images
build_substitution_list(image, i, datetime, USER, PICTURES, HOME, DESKTOP)
local new_name = substitute_list(pattern)
if new_name == -1 then
dt.print(_("unable to do variable substitution, exiting..."))
stop_job(job)
return
end
clear_substitute_list()
local args = {}
local path = string.sub(df.get_path(new_name), 1, -2)
if string.len(path) == 0 then
path = image.path
end
local filename = df.get_filename(new_name)
local filmname = image.path
if path ~= image.path then
if not df.check_if_file_exists(df.sanitize_filename(path)) then
df.mkdir(df.sanitize_filename(path))
end
filmname = path
end
args[1] = dt.films.new(filmname)
args[2] = image
if filename ~= image.filename then
args[3] = filename
end
dt.database.move_image(table.unpack(args))
end
end
stop_job(job)
local collect_rules = dt.gui.libs.collect.filter()
dt.gui.libs.collect.filter(collect_rules)
dt.print(_("renamed " .. #images .. " images"))
else -- pattern length
dt.print_error("no pattern supplied, returning...")
dt.print(_("please enter the new name or pattern"))
end
else -- image count
dt.print_error("no images selected, returning...")
dt.print(_("please select some images and try again"))
end
end
local function reset_callback()
rename.widgets.pattern.text = ""
end
-- - - - - - - - - - - - - - - - - - - - - - - -
-- W I D G E T S
-- - - - - - - - - - - - - - - - - - - - - - - -
rename.widgets.pattern = dt.new_widget("entry"){
tooltip = _("$(ROLL_NAME) - film roll name\n") ..
_("$(FILE_FOLDER) - image file folder\n") ..
_("$(FILE_NAME) - image file name\n") ..
_("$(FILE_EXTENSION) - image file extension\n") ..
_("$(ID) - image id\n") ..
_("$(VERSION) - version number\n") ..
_("$(SEQUENCE) - sequence number of selection\n") ..
_("$(YEAR) - current year\n") ..
_("$(MONTH) - current month\n") ..
_("$(DAY) - current day\n") ..
_("$(HOUR) - current hour\n") ..
_("$(MINUTE) - current minute\n") ..
_("$(SECOND) - current second\n") ..
_("$(EXIF_YEAR) - EXIF year\n") ..
_("$(EXIF_MONTH) - EXIF month\n") ..
_("$(EXIF_DAY) - EXIF day\n") ..
_("$(EXIF_HOUR) - EXIF hour\n") ..
_("$(EXIF_MINUTE) - EXIF minute\n") ..
_("$(EXIF_SECOND) - EXIF seconds\n") ..
_("$(EXIF_ISO) - EXIF ISO\n") ..
_("$(EXIF_EXPOSURE) - EXIF exposure\n") ..
_("$(EXIF_EXPOSURE_BIAS) - EXIF exposure bias\n") ..
_("$(EXIF_APERTURE) - EXIF aperture\n") ..
_("$(EXIF_FOCAL_LENGTH) - EXIF focal length\n") ..
_("$(EXIF_FOCUS_DISTANCE) - EXIF focus distance\n") ..
_("$(EXIF_CROP) - EXIF crop\n") ..
_("$(LONGITUDE) - longitude\n") ..
_("$(LATITUDE) - latitude\n") ..
_("$(ELEVATION) - elevation\n") ..
_("$(STARS) - star rating\n") ..
_("$(LABELS) - color labels\n") ..
_("$(MAKER) - camera maker\n") ..
_("$(MODEL) - camera model\n") ..
_("$(LENS) - lens\n") ..
_("$(TITLE) - title from metadata\n") ..
_("$(DESCRIPTION) - description from metadata\n") ..
_("$(CREATOR) - creator from metadata\n") ..
_("$(PUBLISHER) - publisher from metadata\n") ..
_("$(RIGHTS) - rights from metadata\n") ..
_("$(USERNAME) - username\n") ..
_("$(PICTURES_FOLDER) - pictures folder\n") ..
_("$(HOME) - user's home directory\n") ..
_("$(DESKTOP) - desktop directory"),
placeholder = _("enter pattern $(FILE_FOLDER)/$(FILE_NAME)"),
text = ""
}
local pattern_pref = dt.preferences.read(MODULE_NAME, "pattern", "string")
if pattern_pref then
rename.widgets.pattern.text = pattern_pref
end
rename.widgets.button = dt.new_widget("button"){
label = _("rename"),
clicked_callback = function(this)
do_rename(dt.gui.action_images)
end
}
if dt.gui.current_view().id == "lighttable" then
install_module()
else
if not rename.event_registered then
dt.register_event(
"rename_images", "view-changed",
function(event, old_view, new_view)
if new_view.name == "lighttable" and old_view.name == "darkroom" then
install_module()
end
end
)
rename.event_registered = true
end
end
script_data.destroy = destroy
script_data.restart = restart
script_data.destroy_method = "hide"
script_data.show = restart
return script_data

View File

@@ -22,11 +22,18 @@ local dt = require "darktable"
local du = require "lib/dtutils"
local gettext = dt.gettext
du.check_min_api_version("3.0.0", "select_untagged")
du.check_min_api_version("7.0.0", "select_untagged")
-- return data structure for script_manager
local script_data = {}
script_data.destroy = nil -- function to destory the script
script_data.destroy_method = nil -- set to hide for libs since we can't destroy them commpletely yet, otherwise leave as nil
script_data.restart = nil -- how to restart the (lib) script after it's been hidden - i.e. make it visible again
-- Tell gettext where to find the .mo file translating messages for a particular domain
gettext.bindtextdomain("select_untagged",dt.configuration.config_dir.."/lua/locale/")
local CURR_API_STRING = dt.configuration.api_version_string
local function _(msgid)
return gettext.dgettext("select_untagged", msgid)
@@ -64,7 +71,15 @@ local function select_untagged_images(event, images)
return selection
end
local function destroy()
dt.gui.libs.select.destroy_selection("select_untagged")
end
dt.gui.libs.select.register_selection(
_("select untagged"),
"select_untagged", _("select untagged"),
select_untagged_images,
_("select all images containing no tags or only tags added by darktable"))
script_data.destroy = destroy
return script_data

View File

@@ -27,12 +27,17 @@ USAGE
local dt = require "darktable"
local du = require "lib/dtutils"
local df = require "lib/dtutils.file"
local gettext = dt.gettext
du.check_min_api_version("2.0.2", "slideshowMusic")
du.check_min_api_version("7.0.0", "slideshowMusic")
local CURR_API_STRING = dt.configuration.api_version_string
-- return data structure for script_manager
local script_data = {}
script_data.destroy = nil -- function to destory the script
script_data.destroy_method = nil -- set to hide for libs since we can't destroy them commpletely yet, otherwise leave as nil
script_data.restart = nil -- how to restart the (lib) script after it's been hidden - i.e. make it visible again
-- Tell gettext where to find the .mo file translating messages for a particular domain
gettext.bindtextdomain("slideshowMusic",dt.configuration.config_dir.."/lua/locale/")
@@ -70,6 +75,12 @@ local function playSlideshowMusic(_, old_view, new_view)
end
end
function destroy()
dt.destroy_event("slideshow_music", "view-changed")
dt.preferences.destroy("slideshowMusic", "SlideshowMusic")
dt.preferences.destroy("slideshowMusic", "PlaySlideshowMusic")
end
-- Preferences
dt.preferences.register("slideshowMusic", "SlideshowMusic", "file", _("Slideshow background music file"), "", "")
dt.preferences.register("slideshowMusic",
@@ -79,5 +90,9 @@ dt.preferences.register("slideshowMusic",
_("Plays music with rhythmbox if a slideshow starts"),
true)
-- Register
dt.register_event("view-changed",
dt.register_event("slideshow_music", "view-changed",
playSlideshowMusic)
script_data.destroy = destroy
return script_data

View File

@@ -78,12 +78,19 @@ local dtutils_file = require("lib/dtutils.file")
local dtutils_system = require("lib/dtutils.system")
local LIB_ID = "transfer_hierarchy"
dtutils.check_min_api_version("5.0.0", LIB_ID)
dtutils.check_min_api_version("7.0.0", LIB_ID)
-- return data structure for script_manager
local script_data = {}
script_data.destroy = nil -- function to destory the script
script_data.destroy_method = nil -- set to hide for libs since we can't destroy them commpletely yet, otherwise leave as nil
script_data.restart = nil -- how to restart the (lib) script after it's been hidden - i.e. make it visible again
local MKDIR_COMMAND = darktable.configuration.running_os == "windows" and "mkdir " or "mkdir -p "
local PATH_SEPARATOR = darktable.configuration.running_os == "windows" and "\\\\" or "/"
local PATH_SEGMENT_REGEX = "(" .. PATH_SEPARATOR .. "?)([^" .. PATH_SEPARATOR .. "]+)"
local CURR_API_STRING = darktable.configuration.api_version_string
unpack = unpack or table.unpack
gmatch = string.gfind or string.gmatch
@@ -302,6 +309,13 @@ local function doCopy()
doTransfer(darktable.database.copy_image)
end
local function destroy()
darktable.gui.libs[LIB_ID].visible = false
end
local function restart()
darktable.gui.libs[LIB_ID].visible = true
end
@@ -367,7 +381,7 @@ if darktable.gui.current_view().id == "lighttable" then
else
if not th.event_registered then
darktable.register_event(
"view-changed",
LIB_ID, "view-changed",
function(event, old_view, new_view)
if new_view.name == "lighttable" and old_view.name == "darkroom" then
install_module()
@@ -377,3 +391,11 @@ else
th.event_registered = true
end
end
script_data.destroy = destroy
script_data.restart = restart
script_data.destroy_method = "hide"
script_data.show = restart
return script_data

View File

@@ -39,7 +39,15 @@ local df = require "lib/dtutils.file"
local dsys = require "lib/dtutils.system"
local gettext = dt.gettext
du.check_min_api_version("5.0.0")
du.check_min_api_version("7.0.0", "video_ffmpeg")
-- return data structure for script_manager
local script_data = {}
script_data.destroy = nil -- function to destory the script
script_data.destroy_method = nil -- set to hide for libs since we can't destroy them commpletely yet, otherwise leave as nil
script_data.restart = nil -- how to restart the (lib) script after it's been hidden - i.e. make it visible again
local MODULE_NAME = "video_ffmpeg"
@@ -448,6 +456,12 @@ local function finalize_export(storage, images_table, extra_data)
df.rmdir(df.sanitize_filename(tmp_dir))
end
-- script_manager integration
local function destroy()
dt.destroy_storage("module_video_ffmpeg")
end
dt.register_storage(
"module_video_ffmpeg",
_(MODULE_NAME),
@@ -458,3 +472,8 @@ dt.register_storage(
module_widget
)
-- script_manager integration
script_data.destroy = destroy
return script_data

View File

@@ -23,5 +23,19 @@ USAGE
]]
local dt = require "darktable"
-- script_manager integration to allow a script to be removed
-- without restarting darktable
local function destroy()
-- nothing to destroy
end
local result = dt.configuration.api_version_string
dt.print_error("API Version: "..result)
-- set the destroy routine so that script_manager can call it when
-- it's time to destroy the script and then return the data to
-- script_manager
local script_data = {}
script_data.destroy = destroy
return script_data

View File

@@ -42,6 +42,12 @@ local du = require "lib/dtutils"
du.check_min_api_version("5.0.2", "darkroom_mode") -- darktable 3.0
-- script_manager integration to allow a script to be removed
-- without restarting darktable
local function destroy()
-- nothing to destroy
end
-- - - - - - - - - - - - - - - - - - - - - - - -
-- C O N S T A N T S
-- - - - - - - - - - - - - - - - - - - - - - - -
@@ -70,6 +76,16 @@ local sleep = dt.control.sleep
local current_view = dt.gui.current_view()
-- check that there is an image selected, otherwise we can't activate darkroom viewe
local images = dt.gui.action_images
dt.print_log(#images .. " images selected")
if not images or #images == 0 then
dt.print_log("no images selected, creating selection")
dt.print_log("using image " .. dt.collection[1].filename)
dt.gui.selection({dt.collection[1]})
end
-- enter darkroom view
dt.gui.current_view(dt.gui.views.darkroom)
@@ -96,3 +112,10 @@ dt.print(_("Restoring view"))
sleep(1500)
dt.gui.current_view(current_view)
-- set the destroy routine so that script_manager can call it when
-- it's time to destroy the script and then return the data to
-- script_manager
local script_data = {}
script_data.destroy = destroy
return script_data

View File

@@ -58,6 +58,12 @@ local du = require "lib/dtutils"
--check API version
du.check_min_api_version("3.0.0", "gettextExample")
-- script_manager integration to allow a script to be removed
-- without restarting darktable
local function destroy()
-- nothing to destroy
end
-- Not translated Text
dt.print_error("Hello World!")
@@ -77,3 +83,11 @@ local function _(msgid)
return gettext.dgettext("gettextExample", msgid)
end
dt.print_error(_('Hello World!'))
-- set the destroy routine so that script_manager can call it when
-- it's time to destroy the script and then return the data to
-- script_manager
local script_data = {}
script_data.destroy = destroy
return script_data

View File

@@ -31,7 +31,20 @@ local du = require "lib/dtutils"
du.check_min_api_version("2.0.0", "hello_world")
-- script_manager integration to allow a script to be removed
-- without restarting darktable
local function destroy()
-- nothing to destroy
end
dt.print("hello, world")
-- set the destroy routine so that script_manager can call it when
-- it's time to destroy the script and then return the data to
-- script_manager
local script_data = {}
script_data.destroy = destroy
return script_data
--
-- vim: shiftwidth=2 expandtab tabstop=2 cindent syntax=lua

View File

@@ -50,6 +50,12 @@ du.check_min_api_version("5.0.2", "lighttable_demo") -- darktable 3.0
local MODULE_NAME = "lighttable"
local PS = dt.configuration.running_os == "windows" and "\\" or "/"
-- script_manager integration to allow a script to be removed
-- without restarting darktable
local function destroy()
-- nothing to destroy
end
-- - - - - - - - - - - - - - - - - - - - - - - -
-- T R A N S L A T I O N S
-- - - - - - - - - - - - - - - - - - - - - - - -
@@ -75,6 +81,7 @@ local layouts = {
"DT_LIGHTTABLE_LAYOUT_ZOOMABLE",
"DT_LIGHTTABLE_LAYOUT_FILEMANAGER",
"DT_LIGHTTABLE_LAYOUT_CULLING",
"DT_LIGHTTABLE_LAYOUT_CULLING_DYNAMIC",
}
local sorts = {
@@ -139,6 +146,7 @@ sleep(2000)
for n, layout in ipairs(layouts) do
dt.gui.libs.lighttable_mode.layout(layout)
dt.print(_("set lighttable layout to " .. layout))
dt.print_log(_("set lighttable layout to " .. layout))
sleep(1500)
for i = 1, 10 do
dt.gui.libs.lighttable_mode.zoom_level(i)
@@ -152,11 +160,17 @@ for n, layout in ipairs(layouts) do
end
end
dt.print_log("finished layout and zoom level testing")
dt.print_log("starting sort demonstration")
-- cycle through sorts
dt.print(_("lighttable sorting demonstration"))
dt.print_log("setting lighttable to filemanager mode")
dt.gui.libs.lighttable_mode.layout("DT_LIGHTTABLE_LAYOUT_FILEMANAGER")
sleep(500)
dt.print_log("setting lighttable to zoom level 5")
dt.gui.libs.lighttable_mode.zoom_level(5)
dt.print_log("starting sorts")
for n, sort in ipairs(sorts) do
dt.gui.libs.filter.sort(sort)
@@ -196,3 +210,11 @@ current_rating = dt.gui.libs.filter.rating(current_rating)
current_rating_comparator = dt.gui.libs.filter.rating_comparator(current_rating_comparator)
current_sort =dt.gui.libs.filter.sort(current_sort)
current_sort_order = dt.gui.libs.filter.sort_order(current_sort_order)
-- set the destroy routine so that script_manager can call it when
-- it's time to destroy the script and then return the data to
-- script_manager
local script_data = {}
script_data.destroy = destroy
return script_data

View File

@@ -33,8 +33,15 @@ https://www.darktable.org/lua-api/index.html.php#darktable_new_widget
local dt = require "darktable"
local du = require "lib/dtutils"
du.check_min_api_version("3.0.0", "moduleExample")
local CURR_API_STRING = dt.configuration.api_version_string
du.check_min_api_version("7.0.0", "moduleExample")
-- return data structure for script_manager
local script_data = {}
script_data.destroy = nil -- function to destory the script
script_data.destroy_method = nil -- set to hide for libs since we can't destroy them commpletely yet, otherwise leave as nil
script_data.restart = nil -- how to restart the (lib) script after it's been hidden - i.e. make it visible again
-- translation
@@ -86,6 +93,16 @@ local function install_module()
end
end
-- script_manager integration to allow a script to be removed
-- without restarting darktable
local function destroy()
dt.gui.libs["exampleModule"].visible = false -- we haven't figured out how to destroy it yet, so we hide it for now
end
local function restart()
dt.gui.libs["exampleModule"].visible = true -- the user wants to use it again, so we just make it visible and it shows up in the UI
end
-- https://www.darktable.org/lua-api/types_lua_check_button.html
local check_button = dt.new_widget("check_button"){label = _("MyCheck_button"), value = true}
@@ -148,7 +165,7 @@ else
if not mE.event_registered then -- if we are not in lighttable view then register an event to signal when we might be
-- https://www.darktable.org/lua-api/index.html#darktable_register_event
dt.register_event(
"view-changed", -- we want to be informed when the view changes
"mdouleExample", "view-changed", -- we want to be informed when the view changes
function(event, old_view, new_view)
if new_view.name == "lighttable" and old_view.name == "darkroom" then -- if the view changes from darkroom to lighttable
install_module() -- register the lib
@@ -159,5 +176,14 @@ else
end
end
-- set the destroy routine so that script_manager can call it when
-- it's time to destroy the script and then return the data to
-- script_manager
script_data.destroy = destroy
script_data.restart = restart -- only required for lib modules until we figure out how to destroy them
script_data.destroy_method = "hide" -- tell script_manager that we are hiding the lib so it knows to use the restart function
script_data.show = restart -- if the script was "off" when darktable exited, the module is hidden, so force it to show on start
return script_data
-- vim: shiftwidth=2 expandtab tabstop=2 cindent syntax=lua
-- kate: hl Lua;

View File

@@ -52,7 +52,7 @@
]]
local dt = require "darktable"
--[[
require "lib/..." provides access to functions that have been pulled from various
scripts and consolidated into libraries. Using the libraries eliminates having to
@@ -62,7 +62,6 @@ local dt = require "darktable"
local du = require "lib/dtutils" -- utilities
local df = require "lib/dtutils.file" -- file utilities
local dtsys = require "lib/dtutils.system" -- system utilities
local CURR_API_STRING = dt.configuration.api_version_string
--[[
darktable is an international program, and it's user interface has been translated into
@@ -87,7 +86,7 @@ end
screen stating that you couldn't load because the minimum api version wasn't met.
]]
du.check_min_api_version("5.0.0", "multi_os")
du.check_min_api_version("7.0.0", "multi_os")
--[[
copy_image_attributes is a local subroutine to copy image attributes in the database from the raw image
@@ -197,6 +196,15 @@ local function extract_embedded_jpeg(images)
end
end
--[[
script_manager integration to allow a script to be removed
without restarting darktable
]]
local function destroy()
dt.destroy_event("multi_os", "shortcut") -- destroy the event since the callback will no longer be present
dt.gui.libs.image.destroy_action("multi_os") -- remove the button from the selected images module
end
--[[
Windows and MacOS don't place executables in the user's path so their location needs to be specified
so that the script can find them. An exception to this is packages installed on MacOS with homebrew. Those
@@ -231,18 +239,28 @@ end
]]
dt.gui.libs.image.register_action(
_("extract embedded jpeg"),
"multi_os", _("extract embedded jpeg"),
function(event, images) extract_embedded_jpeg(images) end,
"extract embedded jpeg"
)
--[[
Add a shortcut
]]
dt.register_event(
"shortcut",
"multi_os", "shortcut",
function(event, shortcut) extract_embedded_jpeg(dt.gui.action_images) end,
"extract embedded jpeg"
)
--[[
set the destroy routine so that script_manager can call it when
it's time to destroy the script and then return the data to
script_manager
]]
local script_data = {}
script_data.destroy = destroy
return script_data

View File

@@ -41,7 +41,13 @@ local du = require "lib/dtutils"
-- V E R S I O N C H E C K
-- - - - - - - - - - - - - - - - - - - - - - - -
du.check_min_api_version("5.0.2", "panels_demo") -- darktable 3.0
du.check_min_api_version("7.0.0", "panels_demo")
-- script_manager integration to allow a script to be removed
-- without restarting darktable
local function destroy()
-- nothing to destroy
end
-- - - - - - - - - - - - - - - - - - - - - - - -
-- C O N S T A N T S
@@ -134,3 +140,11 @@ for i = 1, #panels do
dt.gui.panel_hide(panels[i])
end
end
-- set the destroy routine so that script_manager can call it when
-- it's time to destroy the script and then return the data to
-- script_manager
local script_data = {}
script_data.destroy = destroy
return script_data

View File

@@ -26,6 +26,7 @@ local du = require "lib/dtutils"
du.check_min_api_version("2.0.1", "preferenceExamples")
dt.preferences.register("preferenceExamples", -- script: This is a string used to avoid name collision in preferences (i.e namespace). Set it to something unique, usually the name of the script handling the preference.
"preferenceExamplesString", -- name
"string", -- type
@@ -34,14 +35,14 @@ dt.preferences.register("preferenceExamples", -- script: This is a string
"String") -- default
dt.preferences.register("preferenceExamples", -- script: This is a string used to avoid name collision in preferences (i.e namespace). Set it to something unique, usually the name of the script handling the preference.
"preferenceExamplesString", -- name
"preferenceExamplesBool", -- name
"bool", -- type
"Example Boolean", -- label
"Example Boolean Tooltip", -- tooltip
true) -- default
dt.preferences.register("preferenceExamples", -- script: This is a string used to avoid name collision in preferences (i.e namespace). Set it to something unique, usually the name of the script handling the preference.
"preferenceExamplesString", -- name
"preferenceExamplesInteger", -- name
"integer", -- type
"Example Integer", -- label
"Example Integer Tooltip", -- tooltip
@@ -50,7 +51,7 @@ dt.preferences.register("preferenceExamples", -- script: This is a string
99) -- max
dt.preferences.register("preferenceExamples", -- script: This is a string used to avoid name collision in preferences (i.e namespace). Set it to something unique, usually the name of the script handling the preference.
"preferenceExamplesString", -- name
"preferenceExamplesFloat", -- name
"float", -- type
"Example Float", -- label
"Example Float Tooltip", -- tooltip
@@ -60,21 +61,21 @@ dt.preferences.register("preferenceExamples", -- script: This is a string
0.5) -- step
dt.preferences.register("preferenceExamples", -- script: This is a string used to avoid name collision in preferences (i.e namespace). Set it to something unique, usually the name of the script handling the preference.
"preferenceExamplesString", -- name
"preferenceExamplesFile", -- name
"file", -- type
"Example File", -- label
"Example File Tooltip", -- tooltip
"") -- default
dt.preferences.register("preferenceExamples", -- script: This is a string used to avoid name collision in preferences (i.e namespace). Set it to something unique, usually the name of the script handling the preference.
"preferenceExamplesString", -- name
"preferenceExamplesDirectory", -- name
"directory", -- type
"Example Directory", -- label
"Example Directory Tooltip", -- tooltip
"") -- default
dt.preferences.register("preferenceExamples", -- script: This is a string used to avoid name collision in preferences (i.e namespace). Set it to something unique, usually the name of the script handling the preference.
"preferenceExamplesString", -- name
"preferenceExamplesEnum", -- name
"enum", -- type
"Example Enum", -- label
"Example Enum Tooltip", -- tooltip

View File

@@ -24,6 +24,12 @@ local du = require "lib/dtutils"
du.check_min_api_version("5.0.0", "printExamples")
-- script_manager integration to allow a script to be removed
-- without restarting darktable
local function destroy()
-- nothing to destroy
end
-- Will print a string to the darktable control log (the long
-- overlayed window that appears over the main panel).
dt.print("print")
@@ -38,5 +44,12 @@ dt.print_error("print error")
-- to enable the Lua logdomain.
dt.print_log("print log")
-- set the destroy routine so that script_manager can call it when
-- it's time to destroy the script and then return the data to
-- script_manager
local script_data = {}
script_data.destroy = destroy
return script_data
--
-- vim: shiftwidth=2 expandtab tabstop=2 cindent syntax=lua

View File

@@ -30,7 +30,21 @@ local du = require "lib/dtutils"
du.check_min_api_version("5.0.0", "running_os")
-- script_manager integration to allow a script to be removed
-- without restarting darktable
local function destroy()
-- nothing to destroy
end
dt.print("You are running: "..dt.configuration.running_os)
-- set the destroy routine so that script_manager can call it when
-- it's time to destroy the script and then return the data to
-- script_manager
local script_data = {}
script_data.destroy = destroy
return script_data
--
-- vim: shiftwidth=2 expandtab tabstop=2 cindent syntax=lua

View File

@@ -17,11 +17,11 @@ dtutils_log.libdoc = {
print out warning, error and success messages as code is running
log.log_level(debug)
log.log_level(log.debug)
print out debugging messages too because this isnt working
log.log_level(info)
log.log_level(log.info)
I want to make sure this is working ok

View File

@@ -0,0 +1,117 @@
# French messages for photils.lua
# Christophe Agathon <christophe.agathon@gmail.com>, 2021
msgid ""
msgstr ""
"Project-Id-Version: \n"
"POT-Creation-Date: 2021-08-13 09:04+0200\n"
"PO-Revision-Date: 2021-08-13 09:49+0200\n"
"Last-Translator: Christophe Agathon <christophe.agathon@gmail.com>\n"
"Language-Team: \n"
"Language: fr_FR\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: Poedit 2.4.1\n"
"X-Poedit-Basepath: ../../../contrib\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
"X-Poedit-SearchPath-0: photils.lua\n"
#: photils.lua:117
msgid "get tags"
msgstr "trouver des mots-clés"
#: photils.lua:148
msgid "requires a restart to be applied"
msgstr "nécessite un redémarrage pour être pris en compte"
#: photils.lua:163
msgid "min confidence value"
msgstr "niveau de confiance minimum"
#: photils.lua:180
msgid ""
"The suggested tags were not generated\n"
" for the currently selected image!"
msgstr ""
"La proposition de mots-clés n'a pas été générée\n"
" pour l'image sélectionnée actuellement !"
#: photils.lua:186
#, lua-format
msgid " page %s of %s "
msgstr " page %s de %s "
#: photils.lua:237
msgid "Apply tag to image"
msgstr "Appliquer les mots-clés à l'image"
#: photils.lua:249
msgid "Tags successfully attached to image"
msgstr "Les mots-clés ont bien été ajoutés à l'image"
#: photils.lua:299
#, lua-format
msgid "%s found %d tags for your image"
msgstr "%s a trouvé %d mots-clés pour votre image"
#: photils.lua:315
msgid "No image selected."
msgstr "Pas d'image sélectionnée."
#: photils.lua:319
msgid "This plugin can only handle a single image."
msgstr "Ce plugin ne peut gérer qu'une seule image."
#: photils.lua:326
#, lua-format
msgid "%s failed, see terminal output for details"
msgstr ""
"%s a échoué, consultez les messages sur le terminal pour plus de détails"
#: photils.lua:334
#, lua-format
msgid "no tags where found"
msgstr "aucun mot-clé n'a été trouvé"
#: photils.lua:365
#, lua-format
msgid "attach %d tags"
msgstr "ajouter %d mots-clés"
#: photils.lua:429 photils.lua:430
msgid "photils-cli not found"
msgstr "photils-cli non trouvé"
#: photils.lua:432
msgid ""
"Select an image, click \"get tags\" and get \n"
"suggestions for tags."
msgstr ""
"Sélectionnez une image, cliquez sur « trouver des mots-clés » \n"
"pour obtenir une proposition de mots-clés."
#: photils.lua:467
msgid "photils: show confidence value"
msgstr "photils: afficher le niveau de confiance"
# Original message should begin with capital I
#: photils.lua:468
msgid "if enabled, the confidence value for each tag is displayed"
msgstr "Si activé, le niveau de confiance de chaque mot-clé est affiché"
#: photils.lua:474
msgid "photils: use exported image for tag request"
msgstr "photils: utiliser l'image exportée pour la recherche de mots-clés"
#: photils.lua:475
msgid ""
"If enabled, the image passed to photils for tag suggestion is based on the "
"exported, already edited image. Otherwise, the embedded thumbnail of the RAW "
"file will be used for tag suggestion.The embedded thumbnail could speedup "
"the tag suggestion but can fail if the RAW file is not supported."
msgstr ""
"Si activé, l'image passée à photils pour la proposition de mots-clés est "
"basée sur l'export de l'image déjà éditée. Sinon, c'est la vignette "
"encapsulée dans le fichier RAW qui sera utilisée. La vignette encapsulée "
"pourra accélérer la proposition des mots-clés mais la recherche échouera si "
"le fichier RAW n'est pas supporté."

View File

@@ -0,0 +1,46 @@
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
#
# Marcus Gama <marcus.gama@gmail.com>, 2021.
msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2021-09-28 19:37-0300\n"
"PO-Revision-Date: 2021-09-28 19:54-0300\n"
"Last-Translator: Marcus Gama <marcus.gama@gmail.com>\n"
"Language-Team: Portuguese <darktable-dev@lists.darktable.org>\n"
"Language: pt_BR\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
"X-Generator: Lokalize 21.08.1\n"
#: ../contrib/AutoGrouper.lua:144
msgid "auto group"
msgstr "grupo automático"
#: ../contrib/AutoGrouper.lua:173
msgid "group gap [sec.]"
msgstr "intervalo de agrupamento [seg]"
#: ../contrib/AutoGrouper.lua:174
msgid "minimum gap, in seconds, between groups"
msgstr "intervalo mínimo, em segundos, entre os grupos"
#: ../contrib/AutoGrouper.lua:187
msgid "auto group: selected"
msgstr "grupo automático: selecionado"
#: ../contrib/AutoGrouper.lua:188
msgid "auto group selected images"
msgstr "agrupa automaticamente as imagens selecionadas"
#: ../contrib/AutoGrouper.lua:192
msgid "auto group: collection"
msgstr "grupo automático: coleção"
#: ../contrib/AutoGrouper.lua:193
msgid "auto group the entire collection"
msgstr "agrupa automaticamente toda a coleção"

View File

@@ -0,0 +1,97 @@
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
#
# Marcus Gama <marcus.gama@gmail.com>, 2021.
msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2021-09-28 19:37-0300\n"
"PO-Revision-Date: 2021-09-28 20:02-0300\n"
"Last-Translator: Marcus Gama <marcus.gama@gmail.com>\n"
"Language-Team: Portuguese <darktable-dev@lists.darktable.org>\n"
"Language: pt_BR\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
"X-Generator: Lokalize 21.08.1\n"
#: ../contrib/CollectHelper.lua:74
msgid "Please select a single image"
msgstr "Por favor, selecione uma única imagem"
#: ../contrib/CollectHelper.lua:124
msgid "select an image with an active color label"
msgstr "selecione uma imagem com uma etiqueta de cor ativa"
#: ../contrib/CollectHelper.lua:205
msgid "collect: previous"
msgstr "colecionar: anterior"
#: ../contrib/CollectHelper.lua:207
msgid "Sets the Collect parameters to be the previously active parameters"
msgstr "Define os parâmetros da coleção para os ativos anteriormente"
#: ../contrib/CollectHelper.lua:211
msgid "collect: folder"
msgstr "colecionar: pasta"
#: ../contrib/CollectHelper.lua:213
msgid "Sets the Collect parameters to be the selected images's folder"
msgstr "Define os parâmetros da coleção para a pasta de imagens selecionada"
#: ../contrib/CollectHelper.lua:218
msgid "collect: color label(s)"
msgstr "colecionar: etiqueta(s) de cor"
#: ../contrib/CollectHelper.lua:220
msgid "Sets the Collect parameters to be the selected images's color label(s)"
msgstr ""
"Define os parâmetros da coleção para a(s) etiqueta(s) de cor das imagens"
" selecionadas"
#: ../contrib/CollectHelper.lua:225
msgid "collect: all (AND)"
msgstr "colecionar: tudo (E)"
#: ../contrib/CollectHelper.lua:227
msgid ""
"Sets the Collect parameters based on all activated CollectHelper options"
msgstr "Define os parâmetros da coleção baseado em todas as opções do script"
#: ../contrib/CollectHelper.lua:234
msgid "CollectHelper: All"
msgstr "CollectHelper: Tudo"
#: ../contrib/CollectHelper.lua:235
msgid ""
"Will create a collect parameter set that utilizes all enabled CollectHelper "
"types (AND)"
msgstr ""
"Criará um conjunto de parâmetros de coleção que utilizará todos os tipos "
"habilitados do CollectHelper (E)"
#: ../contrib/CollectHelper.lua:240
msgid "CollectHelper: Color Label(s)"
msgstr "CollectHelper: Etiqueta(s) de Cor"
#: ../contrib/CollectHelper.lua:241
msgid ""
"Enable the button that allows you to swap to a collection based on selected "
"image's COLOR LABEL(S)"
msgstr ""
"Habilita o botão que permite que você alterna para uma coleção baseada na "
"ETIQUETA(S) DE COR da imagem selecionada"
#: ../contrib/CollectHelper.lua:246
msgid "CollectHelper: Folder"
msgstr "CollectHelper: Pasta"
#: ../contrib/CollectHelper.lua:247
msgid ""
"Enable the button that allows you to swap to a collection based on selected "
"image's FOLDER location"
msgstr ""
"Habilita o botão que permite que você alterne para uma coleção baseada na "
"PASTA da imagem selecionada"

View File

@@ -0,0 +1,163 @@
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
#
# Marcus Gama <marcus.gama@gmail.com>, 2021.
msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2021-09-28 19:37-0300\n"
"PO-Revision-Date: 2021-10-01 19:40-0300\n"
"Last-Translator: Marcus Gama <marcus.gama@gmail.com>\n"
"Language-Team: Portuguese <darktable-dev@lists.darktable.org>\n"
"Language: pt_BR\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
"X-Generator: Lokalize 21.08.1\n"
#: ../contrib/HDRMerge.lua:175
msgid "please update you binary location"
msgstr "por favor, atualize a localização do binário"
#: ../contrib/HDRMerge.lua:194
msgid "update successful"
msgstr "atualização bem sucedida"
#: ../contrib/HDRMerge.lua:196
msgid "update unsuccessful, please try again"
msgstr "atualização mau sucedida, tente de novo"
#: ../contrib/HDRMerge.lua:210
msgid "HDRMerge install issue"
msgstr "problema com a instalação do HDRMerge"
#: ../contrib/HDRMerge.lua:211
msgid "HDRMerge install issue, please ensure the binary path is proper"
msgstr ""
"problema com a instalação do HDRMerge, certifique-se de que o caminho do"
" binário esteja correto"
#: ../contrib/HDRMerge.lua:216
msgid "not enough images selected, select at least 2 images to merge"
msgstr ""
"imagens selecionadas insuficientes, selecione apenas 2 imagens para mesclar"
#: ../contrib/HDRMerge.lua:277
msgid "HDRMerge completed successfully"
msgstr "HDRMerge completado com sucesso"
#: ../contrib/HDRMerge.lua:279 ../contrib/HDRMerge.lua:280
msgid "HDRMerge failed"
msgstr "HDRMerge falhou"
#: ../contrib/HDRMerge.lua:289
msgid "HDRMerge"
msgstr "HDRMerge"
#: ../contrib/HDRMerge.lua:312
msgid "HDRMerge options"
msgstr "opções do HDRMerge"
#: ../contrib/HDRMerge.lua:317
msgid "bits per sample"
msgstr "bits por amostra"
#: ../contrib/HDRMerge.lua:318
msgid "number of bits per sample in the output image"
msgstr "número de bits por amostra na imagem de saída"
#: ../contrib/HDRMerge.lua:334
msgid "embedded preview size"
msgstr "tamanho da pré-visualização embutida"
#: ../contrib/HDRMerge.lua:335
msgid "size of the embedded preview in output image"
msgstr "tamanho da pré-visualização embutida na imagem de saída"
#: ../contrib/HDRMerge.lua:337 ../contrib/HDRMerge.lua:382
msgid "none"
msgstr "nenhum"
#: ../contrib/HDRMerge.lua:337
msgid "half"
msgstr "metade"
#: ../contrib/HDRMerge.lua:337
msgid "full"
msgstr "completo"
#: ../contrib/HDRMerge.lua:349
msgid "batch mode"
msgstr "modo em lote"
#: ../contrib/HDRMerge.lua:351
msgid ""
"enable batch mode operation \n"
"NOTE: resultant files will NOT be auto-imported"
msgstr ""
"ativar a operação em modo em lote\n"
"NOTA: arquivos resultantes NÃO serão importados automaticamente"
#: ../contrib/HDRMerge.lua:361
msgid "batch gap [sec.]"
msgstr "intervalo do lote [seg.]"
#: ../contrib/HDRMerge.lua:362
msgid "gap, in seconds, between batch mode groups"
msgstr "intervalo, em segundos, entre os grupos do modo em lote"
#: ../contrib/HDRMerge.lua:376
msgid "import options"
msgstr "opções de importação"
#: ../contrib/HDRMerge.lua:379
msgid "apply style on import"
msgstr "aplicar estilo ao importar"
#: ../contrib/HDRMerge.lua:380
msgid "Apply selected style on auto-import to newly created image"
msgstr ""
"Aplica o estilo selecionado ao importar automaticamente para novas imagens"
" criadas"
#: ../contrib/HDRMerge.lua:400
msgid "copy tags"
msgstr "copiar etiquetas"
#: ../contrib/HDRMerge.lua:402
msgid "copy tags from first source image"
msgstr "copia etiquetas da primeira imagem fonte"
#: ../contrib/HDRMerge.lua:409
msgid ""
"Additional tags to be added on import. Seperate with commas, all spaces will "
"be removed"
msgstr ""
"Etiquetas adicionais a serem anexadas ao importar. Separar com vírgulas,"
" todos os espaços serão removidos"
#: ../contrib/HDRMerge.lua:411
msgid "Enter tags, seperated by commas"
msgstr "Insira as etiquetas, separadas por vírgulas"
#: ../contrib/HDRMerge.lua:415
msgid "merge"
msgstr "mesclar"
#: ../contrib/HDRMerge.lua:416
msgid "run HDRMerge with the above specified settings"
msgstr "rodar o HDRMerge com as configurações especificadas acima"
#: ../contrib/HDRMerge.lua:420
msgid "Select HDRmerge executable"
msgstr "Selecionar o executável do HDRmerge"
#: ../contrib/HDRMerge.lua:425
msgid "update"
msgstr "atualizar"
#: ../contrib/HDRMerge.lua:426
msgid "update the binary path with current value"
msgstr "atualiza o caminho do binário com o valor atual"

View File

@@ -0,0 +1,86 @@
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
#
# Marcus Gama <marcus.gama@gmail.com>, 2021.
msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2021-09-28 19:37-0300\n"
"PO-Revision-Date: 2021-10-01 23:40-0300\n"
"Last-Translator: Marcus Gama <marcus.gama@gmail.com>\n"
"Language-Team: Portuguese <darktable-dev@lists.darktable.org>\n"
"Language: pt_BR\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
"X-Generator: Lokalize 21.08.1\n"
#: ../contrib/OpenInExplorer.lua:79
msgid ""
"OpenInExplorer plug-in only supports Linux, macOS, and Windows at this time"
msgstr ""
"Atualmente, o plugin OpenInExplorer somente suporta Linux, macOS e Windows"
#: ../contrib/OpenInExplorer.lua:95
msgid ""
"No links directory selected.\n"
"Please check the dt preferences (lua options)"
msgstr ""
"Nenhum link para pasta selecionado.\n"
"Verifique as preferências do darktable (opções lua)"
#: ../contrib/OpenInExplorer.lua:99
#, lua-format
msgid ""
"Links directory '%s' not found.\n"
"Please check the dt preferences (lua options)"
msgstr ""
"Links para pasta '%s' não encontrados.\n"
"Verifique as preferências do darktable (opções lua)"
#: ../contrib/OpenInExplorer.lua:156
msgid "Failed to create links. Missing rights?"
msgstr "Falha ao criar links. Possui permissões adequadas?"
#: ../contrib/OpenInExplorer.lua:172
msgid "Please select an image"
msgstr "Por favor, selecione uma imagem"
#: ../contrib/OpenInExplorer.lua:178
msgid "Please select fewer images (max. 15)"
msgstr "Por favor, selecione menos imagens (máx 15)"
#: ../contrib/OpenInExplorer.lua:203
msgid "show in file explorer"
msgstr "mostrar no navegador de arquivos"
#: ../contrib/OpenInExplorer.lua:205
msgid "Open the file manager at the selected image's location"
msgstr "Abre o gerenciador de arquivos na localização das imagens selecionadas"
#: ../contrib/OpenInExplorer.lua:212
msgid "OpenInExplorer: linked files directory"
msgstr "OpenInExplorer: pasta de arquivos linkada"
#: ../contrib/OpenInExplorer.lua:213
msgid ""
"Directory to store the links to the file names. Requires restart to take "
"effect"
msgstr ""
"Pasta para armazenar os links para os nomes de arquivo. Precisa reiniciar"
" para ter efeito"
#: ../contrib/OpenInExplorer.lua:216
msgid "Select directory"
msgstr "Selecione a pasta"
#: ../contrib/OpenInExplorer.lua:222
msgid "OpenInExplorer: use links"
msgstr "OpenInExplorer: usar links"
#: ../contrib/OpenInExplorer.lua:223
msgid "Use links instead of multiple windows. Requires restart to take effect"
msgstr ""
"Usa links ao invés de janelas múltiplas. Precisa reiniciar para ter efeito"

View File

@@ -0,0 +1,74 @@
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
#
# Marcus Gama <marcus.gama@gmail.com>, 2021.
msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2021-09-28 19:37-0300\n"
"PO-Revision-Date: 2021-10-02 05:31-0300\n"
"Last-Translator: Marcus Gama <marcus.gama@gmail.com>\n"
"Language-Team: Portuguese <darktable-dev@lists.darktable.org>\n"
"Language: pt_BR\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
"X-Generator: Lokalize 21.08.1\n"
#: ../contrib/RL_out_sharp.lua:119
msgid "GMic executable not configured"
msgstr "executável GMic não configurado"
#: ../contrib/RL_out_sharp.lua:139
msgid "sharpening image "
msgstr "melhorar nitidez da imagem "
#: ../contrib/RL_out_sharp.lua:154
msgid "sharpening error"
msgstr "erro ao melhorar nitidez"
#: ../contrib/RL_out_sharp.lua:163
msgid "finished exporting"
msgstr "exportação finalizada"
#: ../contrib/RL_out_sharp.lua:175 ../contrib/RL_out_sharp.lua:176
msgid "select output folder"
msgstr "selecionar pasta de saída"
#: ../contrib/RL_out_sharp.lua:185
msgid "sigma"
msgstr "sigma"
#: ../contrib/RL_out_sharp.lua:186
msgid "controls the width of the blur that's applied"
msgstr "controla a largura do desfoque que é aplicada"
#: ../contrib/RL_out_sharp.lua:197
msgid "iterations"
msgstr "iterações"
#: ../contrib/RL_out_sharp.lua:198
msgid "increase for better sharpening, but slower"
msgstr "aumente para melhor efeito, mas diminui velocidade"
#: ../contrib/RL_out_sharp.lua:209
msgid "output jpg quality"
msgstr "qualidade do jpg de saída"
#: ../contrib/RL_out_sharp.lua:210
msgid "quality of the output jpg file"
msgstr "qualidade do arquivo jpg de saída"
#: ../contrib/RL_out_sharp.lua:229
msgid "RL output sharpen"
msgstr "melhoria de nitidez na saída RL"
#: ../contrib/RL_out_sharp.lua:233
msgid "executable for GMic CLI"
msgstr "executável para o GMic CLI"
#: ../contrib/RL_out_sharp.lua:234
msgid "select executable for GMic command line version"
msgstr "selecione o executável para a versão de linha de comando do GMic"

View File

@@ -0,0 +1,30 @@
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
#
# Marcus Gama <marcus.gama@gmail.com>, 2021.
msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2021-09-28 19:37-0300\n"
"PO-Revision-Date: 2021-09-28 19:53-0300\n"
"Last-Translator: Marcus Gama <marcus.gama@gmail.com>\n"
"Language-Team: Portuguese <darktable-dev@lists.darktable.org>\n"
"Language: pt_BR\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
"X-Generator: Lokalize 21.08.1\n"
#: ../contrib/clear_GPS.lua:81
msgid "clear GPS data"
msgstr "limpar dados de GPS"
#: ../contrib/clear_GPS.lua:83
msgid "Clear GPS data from selected images"
msgstr "Limpa os dados de GPS das imagens selecionadas"
#: ../contrib/clear_GPS.lua:89
msgid "Clear GPS data"
msgstr "Limpar dados de GPS"

View File

@@ -0,0 +1,90 @@
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
#
# Marcus Gama <marcus.gama@gmail.com>, 2021.
msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2021-09-28 19:37-0300\n"
"PO-Revision-Date: 2021-09-30 19:05-0300\n"
"Last-Translator: Marcus Gama <marcus.gama@gmail.com>\n"
"Language-Team: Portuguese <darktable-dev@lists.darktable.org>\n"
"Language: pt_BR\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
"X-Generator: Lokalize 21.08.1\n"
#: ../contrib/color_profile_manager.lua:122
msgid "added color profile "
msgstr "perfil de cor adicionado "
#: ../contrib/color_profile_manager.lua:128
msgid "removed color profile "
msgstr "perfil de cor removido "
#: ../contrib/color_profile_manager.lua:146
msgid "ERROR: color profile must be an icc or icm file"
msgstr "ERRO: perfil de cor deve ser um arquivo icm ou icc"
#: ../contrib/color_profile_manager.lua:229
msgid "color profile manager"
msgstr "gerenciador de perfil de cor"
#: ../contrib/color_profile_manager.lua:270
msgid "initialize color profiles"
msgstr "inicializar perfis de cor"
#: ../contrib/color_profile_manager.lua:271
msgid "create the directory structure to contain the color profiles"
msgstr "cria a estrutura de pasta para conter os perfis de cor"
#: ../contrib/color_profile_manager.lua:286
msgid "select profile set"
msgstr "selecionar definição de perfil"
#: ../contrib/color_profile_manager.lua:287
msgid "select input or output profiles"
msgstr "selecionar perfis de entrada ou saída"
#: ../contrib/color_profile_manager.lua:294
msgid "input"
msgstr "entrada"
#: ../contrib/color_profile_manager.lua:294
msgid "output"
msgstr "saída"
#: ../contrib/color_profile_manager.lua:298
msgid "select color profile to add"
msgstr "selecionar perfil de cor a adicionar"
#: ../contrib/color_profile_manager.lua:299
msgid "select the .icc or .icm file to add"
msgstr "selecionar arquivo icc ou icm a adicionar"
#: ../contrib/color_profile_manager.lua:306
msgid "add profile"
msgstr "adicionar perfil"
#: ../contrib/color_profile_manager.lua:309
msgid "add selected color profile"
msgstr "adicionar perfil de cor selecionado"
#: ../contrib/color_profile_manager.lua:310
msgid "add selected file to profiles"
msgstr "adicionar arquivo selecionado aos perfis"
#: ../contrib/color_profile_manager.lua:320
msgid "remove profile"
msgstr "remover perfil"
#: ../contrib/color_profile_manager.lua:323
msgid "remove selected profile(s)"
msgstr "remover perfil(s) selecionado(s)"
#: ../contrib/color_profile_manager.lua:324
msgid "remove the checked profile(s)"
msgstr "remover o(s) perfil(s) marcado(s)"

View File

@@ -0,0 +1,86 @@
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
#
# Marcus Gama <marcus.gama@gmail.com>, 2021.
msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2021-09-28 19:37-0300\n"
"PO-Revision-Date: 2021-09-28 19:52-0300\n"
"Last-Translator: Marcus Gama <marcus.gama@gmail.com>\n"
"Language-Team: Portuguese <darktable-dev@lists.darktable.org>\n"
"Language: pt_BR\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
"X-Generator: Lokalize 21.08.1\n"
#: ../contrib/copy_attach_detach_tags.lua:101
msgid "Image tags copied ..."
msgstr "Etiquetas de imagem copiadas ..."
#: ../contrib/copy_attach_detach_tags.lua:123
msgid "No tag to attach, please copy tags first."
msgstr "Nenhuma etiqueta anexada, por favor copie as etiquetas primeiro."
#: ../contrib/copy_attach_detach_tags.lua:147
msgid "Tags attached ..."
msgstr "Etiquetas anexadas ..."
#: ../contrib/copy_attach_detach_tags.lua:163
msgid "Tags removed from image(s)."
msgstr "Etiquetas removidas da(s) imagem(ns) "
#: ../contrib/copy_attach_detach_tags.lua:169
msgid "Tags replaced"
msgstr "Etiquetas substituídas"
#: ../contrib/copy_attach_detach_tags.lua:174
msgid "tagging addon"
msgstr "addon de etiquetas"
#: ../contrib/copy_attach_detach_tags.lua:204
#: ../contrib/copy_attach_detach_tags.lua:241
#: ../contrib/copy_attach_detach_tags.lua:294
msgid "copy tags from selected image(s)"
msgstr "copiar etiquetas da(s) imagem(ns) selecionada(s)"
#: ../contrib/copy_attach_detach_tags.lua:209
#: ../contrib/copy_attach_detach_tags.lua:244
#: ../contrib/copy_attach_detach_tags.lua:299
msgid "paste tags to selected image(s)"
msgstr "colar etiquetas para a(s) imagem(ns) selecionada(s)"
#: ../contrib/copy_attach_detach_tags.lua:214
#: ../contrib/copy_attach_detach_tags.lua:257
#: ../contrib/copy_attach_detach_tags.lua:304
msgid "remove tags from selected image(s)"
msgstr "remover etiquetas da(s) imagem(ns) selecionada(s)"
#: ../contrib/copy_attach_detach_tags.lua:219
#: ../contrib/copy_attach_detach_tags.lua:253
#: ../contrib/copy_attach_detach_tags.lua:309
msgid "replace tags from selected image(s)"
msgstr "substituir etiquetas a partir da(s) imagem(ns) selecionada(s)"
#: ../contrib/copy_attach_detach_tags.lua:232
msgid "tag clipboard"
msgstr "área de transferência de etiqueta"
#: ../contrib/copy_attach_detach_tags.lua:240
msgid "multi copy tags"
msgstr "copiar etiquetas múltiplas"
#: ../contrib/copy_attach_detach_tags.lua:245
msgid "paste tags"
msgstr "colar etiquetas"
#: ../contrib/copy_attach_detach_tags.lua:252
msgid "replace tags"
msgstr "substituir etiquetas"
#: ../contrib/copy_attach_detach_tags.lua:256
msgid "remove all tags"
msgstr "remover todas as etiquetas"

View File

@@ -0,0 +1,34 @@
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
#
# Marcus Gama <marcus.gama@gmail.com>, 2021.
msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2021-09-28 14:57-0300\n"
"PO-Revision-Date: 2021-09-28 19:38-0300\n"
"Language: pt_BR\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Last-Translator: Marcus Gama <marcus.gama@gmail.com>\n"
"Language-Team: Portuguese <darktable-dev@lists.darktable.org>\n"
"X-Generator: Lokalize 21.08.1\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
#: copy_paste_metadata.lua:131
msgid "copy metadata"
msgstr "copiar metadados"
#: copy_paste_metadata.lua:133
msgid "copy metadata of the first selected image"
msgstr "copiar metadados da primeira imagem selecionada"
#: copy_paste_metadata.lua:139
msgid "paste metadata"
msgstr "colar metadados"
#: copy_paste_metadata.lua:141
msgid "paste metadata to the selected images"
msgstr "colar metadados para as imagens selecionadas"

View File

@@ -0,0 +1,61 @@
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
#
# Marcus Gama <marcus.gama@gmail.com>, 2021.
msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2021-09-28 15:19-0300\n"
"PO-Revision-Date: 2021-09-28 19:39-0300\n"
"Language: pt_BR\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Last-Translator: Marcus Gama <marcus.gama@gmail.com>\n"
"Language-Team: Portuguese <darktable-dev@lists.darktable.org>\n"
"X-Generator: Lokalize 21.08.1\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
#: enfuse.lua:187
#, lua-format
msgid "Error writing to `%s`"
msgstr "Erro ao salvar `%s`"
#: enfuse.lua:210
#, lua-format
msgid "Converting raw file '%s' to tiff..."
msgstr "Converter arquivo raw `%s` para tiff..."
#: enfuse.lua:220
#, lua-format
msgid "Skipping %s..."
msgstr "Pulando %s..."
#: enfuse.lua:227
msgid "No suitable images selected, nothing to do for enfuse"
msgstr "Nenhuma imagem adequada selecionado, nada a fazer para o script"
#: enfuse.lua:233
#, lua-format
msgid "%d image(s) skipped"
msgstr "%d imagem(ns) pulada(s)"
#: enfuse.lua:253
msgid "Enfuse failed, see terminal output for details"
msgstr "Script falhou, veja a saída do terminal para detalhes"
#: enfuse.lua:265
msgid "enfuse was successful, resulting image has been imported"
msgstr "script foi bem sucedido, imagem resultante foi importada"
#: enfuse.lua:267
#, lua-format
msgid "enfuse: done, resulting image '%s' has been imported with id %d"
msgstr "enfuse: feito, imagem '%s' resultante foi importada com o id %d"
#: enfuse.lua:301
msgid "Could not find enfuse executable. Not loading enfuse exporter..."
msgstr ""
"Não foi possível encontrar o executável do enfuse. Exportador do enfuse não"
" carregado..."

View File

@@ -0,0 +1,555 @@
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
#
# Marcus Gama <marcus.gama@gmail.com>, 2021.
msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2021-09-28 19:37-0300\n"
"PO-Revision-Date: 2021-10-01 19:03-0300\n"
"Last-Translator: Marcus Gama <marcus.gama@gmail.com>\n"
"Language-Team: Portuguese <darktable-dev@lists.darktable.org>\n"
"Language: pt_BR\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
"X-Generator: Lokalize 21.08.1\n"
#: ../contrib/enfuseAdvanced.lua:250
msgid "please update your binary locations"
msgstr "por favor, atualiza suas localizações de binários"
#: ../contrib/enfuseAdvanced.lua:262
msgid "issue with "
msgstr "problema com "
#: ../contrib/enfuseAdvanced.lua:262
msgid " executable"
msgstr " executável"
#: ../contrib/enfuseAdvanced.lua:271
msgid "update successful"
msgstr "atualização bem sucedida"
#: ../contrib/enfuseAdvanced.lua:273
msgid "update unsuccessful, please try again"
msgstr "atualização mau sucedida, tente novamente"
#: ../contrib/enfuseAdvanced.lua:379
msgid "saved to "
msgstr "salvar para "
#: ../contrib/enfuseAdvanced.lua:395
msgid "loaded from "
msgstr "carregado de "
#: ../contrib/enfuseAdvanced.lua:430
msgid "export for image fusion "
msgstr "exportar para fusão de imagem "
#: ../contrib/enfuseAdvanced.lua:435
msgid "too few images selected, please select at least 2 images"
msgstr "muito poucas imagens selecionadas, selecione pelo menos 2 imagens"
#: ../contrib/enfuseAdvanced.lua:438
msgid "installation error, please verify binary paths are proper"
msgstr ""
"erro de instalação, verifique se as localizações dos binários estão corretas"
#: ../contrib/enfuseAdvanced.lua:458 ../contrib/enfuseAdvanced.lua:459
#: ../contrib/enfuseAdvanced.lua:485 ../contrib/enfuseAdvanced.lua:486
msgid " failed"
msgstr " falhou"
#: ../contrib/enfuseAdvanced.lua:534
msgid "image align options"
msgstr "opções de alinhamento de imagem"
#: ../contrib/enfuseAdvanced.lua:537
msgid "align images"
msgstr "alinhar imagens"
#: ../contrib/enfuseAdvanced.lua:539
msgid "automatically align images prior to enfuse"
msgstr "alinha automaticamente as imagens antes de fundir"
#: ../contrib/enfuseAdvanced.lua:549
msgid "optimize radial distortion"
msgstr "otimizar distorção radial"
#: ../contrib/enfuseAdvanced.lua:551
msgid ""
"optimize radial distortion for all images, \n"
"except for first"
msgstr ""
"otimiza a distorção radial para todas as imagens, \n"
"exceto para a primeira"
#: ../contrib/enfuseAdvanced.lua:556
msgid "optimize field of view"
msgstr "otimizar o campo de visão"
#: ../contrib/enfuseAdvanced.lua:558
msgid ""
"optimize field of view for all images, except for first. \n"
"Useful for aligning focus stacks (DFF) with slightly \n"
"different magnification."
msgstr ""
"otimizar o campo de visão para todas as imagens, exceto para a primeira. \n"
"Útil para alinhar foco empilhado (DFF, sigla em inglês) com ampliação \n"
"ligeiramente diferente."
#: ../contrib/enfuseAdvanced.lua:563
msgid "optimize image center shift"
msgstr "otimizar deslocamento do centro da imagem"
#: ../contrib/enfuseAdvanced.lua:565
msgid ""
"optimize image center shift for all images, \n"
"except for first."
msgstr ""
"otimiza o deslocamento do centro da imagem para\n"
"todas as imagens, exceto a primeira."
#: ../contrib/enfuseAdvanced.lua:570
msgid "auto crop"
msgstr "recorte automático"
#: ../contrib/enfuseAdvanced.lua:572
msgid "auto crop the image to the area covered by all images."
msgstr ""
"recorta automaticamente a imagem para a área coberta por todas\n"
"as imagens."
#: ../contrib/enfuseAdvanced.lua:577
msgid "load distortion from lens database"
msgstr "carregar distorção a partir da base de dados de lentes"
#: ../contrib/enfuseAdvanced.lua:579
msgid "try to load distortion information from lens database"
msgstr "tenta carregar informações de distorção da base de dados de lentes"
#: ../contrib/enfuseAdvanced.lua:584
msgid "use gpu"
msgstr "usar gpu"
#: ../contrib/enfuseAdvanced.lua:586
msgid "use gpu during alignment"
msgstr "usa a gpu durante o alinhamento"
#: ../contrib/enfuseAdvanced.lua:593
msgid "image grid size"
msgstr "tamanho da grade de imagem"
#: ../contrib/enfuseAdvanced.lua:594
msgid ""
"break image into a rectangular grid \n"
"and attempt to find num control points in each section.\n"
"default: (5x5)"
msgstr ""
"quebra a imagem em uma grade retangular e \n"
"tenta encontrar um número de pontos de controle\n"
"em cada seção.\n"
"padrão: (5x5)"
#: ../contrib/enfuseAdvanced.lua:610
msgid "control points/grid"
msgstr "pontos de controle/grade"
#: ../contrib/enfuseAdvanced.lua:611
msgid ""
"number of control points (per grid, see option -g) \n"
"to create between adjacent images \n"
"default: (8)."
msgstr ""
"número de pontos de controle (por grade, veja a opção -g)\n"
"para criar entre imagens adjacentes \n"
"padrão: (8)"
#: ../contrib/enfuseAdvanced.lua:627
msgid "remove control points with error"
msgstr "remover pontos de controle com erro"
#: ../contrib/enfuseAdvanced.lua:628
msgid ""
"remove all control points with an error higher \n"
"than num pixels \n"
"default: (3)"
msgstr ""
"remove todos os pontos de controle com um erro superior\n"
"que um número de pixels\n"
"padrão: (3)"
#: ../contrib/enfuseAdvanced.lua:644
msgid "correlation threshold for control points"
msgstr "limiar de correlação para pontos de controle"
#: ../contrib/enfuseAdvanced.lua:645
msgid ""
"correlation threshold for identifying \n"
"control points \n"
"default: (0.9)."
msgstr ""
"limiar de correlação para identificar pontos\n"
"de controle\n"
"padrão: (0,9)"
#: ../contrib/enfuseAdvanced.lua:659
msgid "image fusion options"
msgstr "opções de fusão de imagem"
#: ../contrib/enfuseAdvanced.lua:664
msgid "exposure weight"
msgstr "peso da exposição"
#: ../contrib/enfuseAdvanced.lua:665
msgid ""
"set the relative weight of the well-exposedness criterion \n"
"as defined by the chosen exposure weight function. \n"
"increasing this weight relative to the others will\n"
" make well-exposed pixels contribute more to\n"
" the final output. \n"
"default: (1.0)"
msgstr ""
"configura o peso relativo do critério de boa exposição como\n"
"definido pela função de peso de exposição.\n"
"aumentar este peso relativo para outros fará com que\n"
"os pixels bem expostos contribuam mais para a saída\n"
"final.\n"
"padrão: (1,0)"
#: ../contrib/enfuseAdvanced.lua:676
msgid "saturation weight"
msgstr "peso da saturação"
#: ../contrib/enfuseAdvanced.lua:677
msgid ""
"set the relative weight of high-saturation pixels. \n"
"increasing this weight makes pixels with high \n"
"saturation contribute more to the final output. \n"
"default: (0.2)"
msgstr ""
"configura o peso relativo dos pixels altamente saturados.\n"
"aumentar este peso fará com que os pixels com alta saturação\n"
"contribuam mais para a saída final. "
"padrão: (0,2)"
#: ../contrib/enfuseAdvanced.lua:688
msgid "contrast weight"
msgstr "peso do contraste"
#: ../contrib/enfuseAdvanced.lua:689
msgid ""
"sets the relative weight of high local-contrast pixels. \n"
"default: (0.0)."
msgstr ""
"configura o peso relativo dos pixels com alto contraste local.\n"
"padrão: (0,0)"
#: ../contrib/enfuseAdvanced.lua:700
msgid "exposure optimum"
msgstr "exposição ótima"
#: ../contrib/enfuseAdvanced.lua:701
msgid ""
"determine at what normalized exposure value\n"
" the optimum exposure of the input images\n"
" is. this is, set the position of the maximum\n"
" of the exposure weight curve. use this \n"
"option to fine-tune exposure weighting. \n"
"default: (0.5)"
msgstr ""
"determina qual valor de exposição normalizado\n"
"é a exposição ótima da imagem de entrada.\n"
"isto é, define a posição do máximo de exposição\n"
"da curva de peso. use esta opção para ajustar o\n"
"peso da exposição.\n"
"padrão: (0,5)"
#: ../contrib/enfuseAdvanced.lua:712
msgid "exposure width"
msgstr "largura da exposição"
#: ../contrib/enfuseAdvanced.lua:713
msgid ""
"set the characteristic width (FWHM) of the exposure \n"
"weight function. low numbers give less weight to \n"
"pixels that are far from the user-defined \n"
"optimum and vice versa. use this option to \n"
"fine-tune exposure weighting. \n"
"default: (0.2)"
msgstr ""
"configura a largura característica (FWHM) da função de peso\n"
"da exposição. números baixos atribuem menos peso para os\n"
"pixels que estão longe do ótimo definido pelo usuário e vice-\n"
"versa. use esta opção para ajustar o peso da exposição.\n"
"padrão: (0,2)"
#: ../contrib/enfuseAdvanced.lua:722
msgid "hard mask"
msgstr "máscara dura"
#: ../contrib/enfuseAdvanced.lua:724
msgid ""
"force hard blend masks on the finest scale. this avoids \n"
"averaging of fine details (only), at the expense \n"
"of increasing the noise. this improves the \n"
"sharpness of focus stacks considerably.\n"
"default (soft mask)"
msgstr ""
"força máscaras de mesclagem duras na escala mais fina. isto\n"
"previne aproximação dos detalhes mais finos (somente), ao\n"
"custo de aumentar o ruído. isto melhora a nitidez do empilha-\n"
"mento de foco consideravelmente.\n"
"padrão (máscara suave)"
#: ../contrib/enfuseAdvanced.lua:729
msgid "save masks"
msgstr "salvar máscaras"
#: ../contrib/enfuseAdvanced.lua:731
msgid ""
"Save the generated weight masks to your home directory,\n"
"enblend saves masks as 8 bit grayscale, \n"
"i.e. single channel images. \n"
"for accuracy we recommend to choose a lossless format."
msgstr ""
"Salva as máscaras de peso geradas para sua pasta pessoal,\n"
"mescla máscaras salvas como tons de cinza de 8 bits, isto é,\n"
"imagens de canal simples.\n"
"para maior precisão, nós recomendamos escolher um formato\n"
"sem perdas."
#: ../contrib/enfuseAdvanced.lua:738
msgid "contrast window size"
msgstr "tamanho da janela de contraste"
#: ../contrib/enfuseAdvanced.lua:739
msgid ""
"set the window size for local contrast analysis. \n"
"the window will be a square of size × size pixels. \n"
"if given an even size, Enfuse will \n"
"automatically use the next odd number.\n"
"for contrast analysis size values larger \n"
"than 5 pixels might result in a \n"
"blurry composite image. values of 3 and \n"
"5 pixels have given good results on \n"
"focus stacks. \n"
"default: (5) pixels"
msgstr ""
"configura o tamanho da janela para a análise de contraste local.\n"
"a janela será um quadrado de tamanho x tamanho em pixels.\n"
"se fornecido um tamanho par, o script usará automaticamente\n"
"o próximo número ímpar.\n"
"valores de tamanho para análise de contraste maiores que\n"
"5 pixels podem resultar em uma imagem composta borrada.\n"
"valores de 3 e 5 pixels produzem bons resultados para empi-\n"
"lhamento de foco.\n"
"padrão: (5) pixels"
#: ../contrib/enfuseAdvanced.lua:755
msgid "contrast edge scale"
msgstr "escala de borda de contraste"
#: ../contrib/enfuseAdvanced.lua:756
msgid ""
"a non-zero value for EDGE-SCALE switches on the \n"
"Laplacian-of-Gaussian (LoG) edge detection algorithm.\n"
" edage-scale is the radius of the Gaussian used \n"
"in the search for edges. a positive LCE-SCALE \n"
"turns on local contrast enhancement (LCE) \n"
"before the LoG edge detection. \n"
"Default: (0.0) pixels."
msgstr ""
"um valor diferente de zero para a ESCALA DE BORDA alterna\n"
"o algoritmo de detecção de borda Laplaciano-de-Gaussiano (LoG).\n"
"a escala de borda é o raio do Gaussiano usado na busca por bordas.\n"
"uma escala LCE positiva ativa o melhoramento de contraste local (LCE)\n"
"antes da detecção de borda LoG.\n"
"Padrão: (0,0) pixels"
#: ../contrib/enfuseAdvanced.lua:772
msgid "contrast min curvature [%]"
msgstr "curvatura mín de contraste [%]"
#: ../contrib/enfuseAdvanced.lua:773
msgid ""
"define the minimum curvature for the LoG edge detection. Append a ‘%’ to "
"specify the minimum curvature relative to maximum pixel value in the source "
"image. Default: (0.0%)"
msgstr ""
"configura a curvatura mínima para a detecção de borda LoG. Adicionar um '%'"
" para "
"definir a curvatura mínima em relação ao valor máximo de pixel na imagem"
" fonte. "
"Padrão: (0,0%)"
#: ../contrib/enfuseAdvanced.lua:787
msgid "target file"
msgstr "arquivo alvo"
#: ../contrib/enfuseAdvanced.lua:792
msgid "tiff compression"
msgstr "compressão tiff"
#: ../contrib/enfuseAdvanced.lua:793
msgid "compression method for tiff files"
msgstr "método de compressão para arquivos tiff"
#: ../contrib/enfuseAdvanced.lua:809
msgid "jpeg compression"
msgstr "compressão jpeg"
#: ../contrib/enfuseAdvanced.lua:810
msgid "jpeg compression level"
msgstr "nível de compressão jpeg"
#: ../contrib/enfuseAdvanced.lua:832
msgid "file format"
msgstr "formato de arquivo"
#: ../contrib/enfuseAdvanced.lua:833
msgid "file format of the enfused final image"
msgstr "formato de arquivo da imagem final fundida"
#: ../contrib/enfuseAdvanced.lua:853
msgid "bit depth"
msgstr "profundidade de bits"
#: ../contrib/enfuseAdvanced.lua:854
msgid "bit depth of the enfused file"
msgstr "profundidade de bits do arquivo fundido"
#: ../contrib/enfuseAdvanced.lua:868
msgid "directory"
msgstr "pasta"
#: ../contrib/enfuseAdvanced.lua:877
msgid ""
"select the target directory for the fused image. \n"
"the filename is created automatically."
msgstr ""
"seleciona a pasta alvo para a imagem fundida.\n"
"o nome do arquivo é criado automaticamente."
#: ../contrib/enfuseAdvanced.lua:882
msgid "save to source image location"
msgstr "salvar para a localização da imagem fonte"
#: ../contrib/enfuseAdvanced.lua:884
msgid ""
"If checked ignores the location above and saves output image(s) to the same "
"location as the source images."
msgstr ""
"Se selecionado, ignora a localização acima e salva a(s) imagem(ns) de saída"
" na mesma "
"localização das imagens fonte."
#: ../contrib/enfuseAdvanced.lua:891
msgid "on conflict"
msgstr "no caso de conflito"
#: ../contrib/enfuseAdvanced.lua:905
msgid "auto import"
msgstr "importar automaticamente"
#: ../contrib/enfuseAdvanced.lua:907
msgid "import the image into darktable database when enfuse completes"
msgstr ""
"importa a imagem para a base de dados do darktable quando a fusão for"
" completada"
#: ../contrib/enfuseAdvanced.lua:918
msgid "Apply Style on Import"
msgstr "Aplicar estilo ao importar"
#: ../contrib/enfuseAdvanced.lua:919
msgid "Apply selected style on auto-import to newly created blended image"
msgstr ""
"Aplica o estilo selecionado ao importar automaticamente para a nova imagem"
" fundida criada"
#: ../contrib/enfuseAdvanced.lua:938
msgid "copy tags"
msgstr "copiar etiquetas"
#: ../contrib/enfuseAdvanced.lua:940
msgid "Copy tags from first image."
msgstr "Copia as etiquetas da primeira imagem."
#: ../contrib/enfuseAdvanced.lua:947
msgid ""
"Additional tags to be added on import. Seperate with commas, all spaces will "
"be removed"
msgstr ""
"Etiquetas adicionais a serem adicionadas ao importar. Separe-as com vírgulas,"
" todos "
"os espaços serão removidos"
#: ../contrib/enfuseAdvanced.lua:955
msgid "active preset"
msgstr "predefinição ativa"
#: ../contrib/enfuseAdvanced.lua:956
msgid "preset to be loaded from or saved to"
msgstr "predefinição a ser carregada de ou salvada para"
#: ../contrib/enfuseAdvanced.lua:970
msgid "load fusion preset"
msgstr "carregar predefinição de fusão"
#: ../contrib/enfuseAdvanced.lua:971
msgid "load current fusion parameters from selected preset"
msgstr ""
"carrega parâmetros de fusão atuais a partir da predefinição selecionada"
#: ../contrib/enfuseAdvanced.lua:975
msgid "save to fusion preset"
msgstr "salvar para predefinição de fusão"
#: ../contrib/enfuseAdvanced.lua:976
msgid "save current fusion parameters to selected preset"
msgstr "salva os parâmetros de fusão atuais para a predefinição selecionada"
#: ../contrib/enfuseAdvanced.lua:980
msgid "create image variants from presets"
msgstr "criar variantes da imagem a partir das predefinições"
#: ../contrib/enfuseAdvanced.lua:982
msgid ""
"create multiple image variants based on the three different presets of the "
"specified type"
msgstr ""
"cria múltiplas variantes da imagem baseadas nas três diferentes predefinições"
" do tipo "
"especificado"
#: ../contrib/enfuseAdvanced.lua:999
msgid "create variants type"
msgstr "criar tipos de variantes"
#: ../contrib/enfuseAdvanced.lua:1000
msgid "preset type to be used when creating image variants"
msgstr "tipo de predefinição a ser usado ao criar variantes de imagens"
#: ../contrib/enfuseAdvanced.lua:1039
msgid "update"
msgstr "atualizar"
#: ../contrib/enfuseAdvanced.lua:1040
msgid "update the binary paths with current values"
msgstr "atualiza os caminhos dos binários com os valores atuais"
#: ../contrib/enfuseAdvanced.lua:1120
msgid "show options"
msgstr "mostrar opções"
#: ../contrib/enfuseAdvanced.lua:1121
msgid "show options for specified aspect of output"
msgstr "mostra as opções para o aspecto de saída especificado"
#: ../contrib/enfuseAdvanced.lua:1142
msgid "DRI or DFF image"
msgstr "imagem DRI ou DFF"

View File

@@ -0,0 +1,58 @@
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
#
# Marcus Gama <marcus.gama@gmail.com>, 2021.
msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2021-09-28 11:50-0300\n"
"PO-Revision-Date: 2021-09-28 19:39-0300\n"
"Language: pt_BR\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Last-Translator: Marcus Gama <marcus.gama@gmail.com>\n"
"Language-Team: Portuguese <darktable-dev@lists.darktable.org>\n"
"X-Generator: Lokalize 21.08.1\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
#: executable_manager.lua:144
msgid "No executable paths found, exiting..."
msgstr "Caminho do executável não encontrado, saindo..."
#: executable_manager.lua:160
msgid "select an executable"
msgstr "selecione um executável"
#: executable_manager.lua:160
msgid "search path for executable"
msgstr "caminho de pesquisa por executável"
#: executable_manager.lua:169
msgid "select "
msgstr "selecionar "
#: executable_manager.lua:169
msgid " executable"
msgstr " executável"
#: executable_manager.lua:190
msgid "select executable to modify"
msgstr "selecione executável a modificar"
#: executable_manager.lua:205
msgid "current"
msgstr "atual"
#: executable_manager.lua:207
msgid "select"
msgstr "selecionar"
#: executable_manager.lua:209
msgid "reset"
msgstr "reiniciar"
#: executable_manager.lua:212
msgid "Clear path for "
msgstr "Limpar caminho para "

View File

@@ -0,0 +1,62 @@
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
#
# Marcus Gama <marcus.gama@gmail.com>, 2021.
msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2021-09-28 19:37-0300\n"
"PO-Revision-Date: 2021-09-30 19:25-0300\n"
"Last-Translator: Marcus Gama <marcus.gama@gmail.com>\n"
"Language-Team: Portuguese <darktable-dev@lists.darktable.org>\n"
"Language: pt_BR\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
"X-Generator: Lokalize 21.08.1\n"
#: ../contrib/exportLUT.lua:66
msgid "Identity_file_chooser"
msgstr "Selecionar_arquiv_identidade"
#: ../contrib/exportLUT.lua:72
msgid "Export_location_chooser"
msgstr "Selecionar_localização_exportação"
#: ../contrib/exportLUT.lua:78
msgid "choose the identity haldclut file"
msgstr "selecione o arquivo halclut de identidade"
#: ../contrib/exportLUT.lua:82
msgid "choose the output location"
msgstr "selecione a localização de saída"
#: ../contrib/exportLUT.lua:86
msgid "WARNING: files may be silently overwritten"
msgstr "AVISO: os arquivos podem ser sobrescritos sem confirmação"
#: ../contrib/exportLUT.lua:108
msgid "Invalid identity lut file"
msgstr "Arquivo lut de identidade inválido"
#: ../contrib/exportLUT.lua:110
msgid "Exporting styles as haldCLUTs"
msgstr "Exportar estilos como haldCLUTs"
#: ../contrib/exportLUT.lua:129
msgid "Exported: "
msgstr "Exportado: "
#: ../contrib/exportLUT.lua:131
msgid "Done exporting haldCLUTs"
msgstr "Exportação de haldCLUTs feita"
#: ../contrib/exportLUT.lua:141
msgid "export haldclut"
msgstr "exportar haldclut"
#: ../contrib/exportLUT.lua:166
msgid "export"
msgstr "exportar"

View File

@@ -0,0 +1,129 @@
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
#
# Marcus Gama <marcus.gama@gmail.com>, 2021.
msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2021-09-28 19:37-0300\n"
"PO-Revision-Date: 2021-10-01 19:07-0300\n"
"Last-Translator: Marcus Gama <marcus.gama@gmail.com>\n"
"Language-Team: Portuguese <darktable-dev@lists.darktable.org>\n"
"Language: pt_BR\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
"X-Generator: Lokalize 21.08.1\n"
#: ../contrib/ext_editor.lua:158
msgid " editors configured"
msgstr " editores configurados"
#: ../contrib/ext_editor.lua:167
msgid "not a valid choice"
msgstr "não é uma escolha válida"
#: ../contrib/ext_editor.lua:173
msgid "please select one image"
msgstr "por favor, selecione uma imagem"
#: ../contrib/ext_editor.lua:197
msgid "file type not allowed"
msgstr "tipo de arquivo não permitido"
#: ../contrib/ext_editor.lua:225
msgid "error copying file "
msgstr "erro ao copiar arquivo "
#: ../contrib/ext_editor.lua:232
msgid "launching "
msgstr "iniciando "
#: ../contrib/ext_editor.lua:235
msgid "error launching "
msgstr "erro ao lançar "
#: ../contrib/ext_editor.lua:328
msgid "error moving file "
msgstr "erro ao mover arquivo "
#: ../contrib/ext_editor.lua:337
msgid "finished exporting"
msgstr "exportação terminada"
#: ../contrib/ext_editor.lua:354
msgid "external editors"
msgstr "editores externos"
#: ../contrib/ext_editor.lua:380 ../contrib/ext_editor.lua:493
msgid "edit with program "
msgstr "editar com programa "
#: ../contrib/ext_editor.lua:382 ../contrib/ext_editor.lua:472
msgid "collection"
msgstr "coleção"
#: ../contrib/ext_editor.lua:393
msgid "choose program"
msgstr "selecionar programa"
#: ../contrib/ext_editor.lua:394
msgid "select the external editor from the list"
msgstr "selecione o editor externo a partir da lista"
#: ../contrib/ext_editor.lua:404
msgid "edit"
msgstr "editar"
#: ../contrib/ext_editor.lua:405
msgid "open the selected image in external editor"
msgstr "abre a imagem selecionada no editor externo"
#: ../contrib/ext_editor.lua:415
msgid "edit a copy"
msgstr "editar uma cópia"
#: ../contrib/ext_editor.lua:416
msgid "create a copy of the selected image and open it in external editor"
msgstr "cria uma cópia da imagem selecionada e abre-a no editor externo"
#: ../contrib/ext_editor.lua:425
msgid "update list"
msgstr "atualizar lista"
#: ../contrib/ext_editor.lua:426
msgid "update list of programs if lua preferences are changed"
msgstr "atualiza lista de programas se as preferências do lua forem alteradas"
#: ../contrib/ext_editor.lua:478
msgid "executable for external editor "
msgstr "executável para o editor externo "
#: ../contrib/ext_editor.lua:479
msgid "select executable for external editor"
msgstr "seleciona o executável para o editor externo"
#: ../contrib/ext_editor.lua:479
msgid "(None)"
msgstr "(Nenhum)"
#: ../contrib/ext_editor.lua:482
msgid "name of external editor "
msgstr "nome do editor externo "
#: ../contrib/ext_editor.lua:483
msgid "friendly name of external editor"
msgstr "nome amigável do editor externo"
#: ../contrib/ext_editor.lua:486
msgid "show external editors in darkroom"
msgstr "mostrar editores externos na sala escura"
#: ../contrib/ext_editor.lua:487
msgid ""
"check to show external editors module also in darkroom (requires restart)"
msgstr ""
"ative para mostrar o módulo de editores externos também na sala escura"
" (precisa reiniciar)"

View File

@@ -0,0 +1,135 @@
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
#
# Marcus Gama <marcus.gama@gmail.com>, 2021.
msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2021-09-28 19:37-0300\n"
"PO-Revision-Date: 2021-10-01 19:12-0300\n"
"Last-Translator: Marcus Gama <marcus.gama@gmail.com>\n"
"Language-Team: Portuguese <darktable-dev@lists.darktable.org>\n"
"Language: pt_BR\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
"X-Generator: Lokalize 21.08.1\n"
#: ../contrib/face_recognition.lua:131
msgid "export images"
msgstr "exportar imagens"
#: ../contrib/face_recognition.lua:137
#, lua-format
msgid "Exporting image %i of %i images"
msgstr "Exportando imagem %i de %i imagens"
#: ../contrib/face_recognition.lua:207
msgid "Face recognition not found"
msgstr "Reconhecimento de rosto não encontrado"
#: ../contrib/face_recognition.lua:259
msgid "Starting face recognition..."
msgstr "Iniciando reconhecimento de rosto..."
#: ../contrib/face_recognition.lua:267
msgid "Face recognition failed"
msgstr "Reconhecimento de rosto falhou"
#: ../contrib/face_recognition.lua:269
msgid "Face recognition finished"
msgstr "Reconhecimento de rosto terminado"
#: ../contrib/face_recognition.lua:274
msgid "processing results..."
msgstr "processando resultados..."
#: ../contrib/face_recognition.lua:338
msgid "face recognition complete"
msgstr "reconhecimento de rosto completo"
#: ../contrib/face_recognition.lua:340
msgid "image export failed"
msgstr "exportação da imagem falhou"
#: ../contrib/face_recognition.lua:344
msgid "no images selected"
msgstr "nenhuma imagem selecionada"
#: ../contrib/face_recognition.lua:353
msgid "face recognition"
msgstr "reconhecimento de rosto"
#: ../contrib/face_recognition.lua:377
msgid "tag to be used for unknown person"
msgstr "etiqueta a ser usada para pessoa desconhecida"
#: ../contrib/face_recognition.lua:383
msgid "tag to be used when no persons are found"
msgstr "etiqueta a ser usada quando nenhuma pessoa for encontrada"
#: ../contrib/face_recognition.lua:389 ../contrib/face_recognition.lua:467
msgid "tags of images to ignore"
msgstr "etiquetas de imagens para ignorar"
#: ../contrib/face_recognition.lua:395 ../contrib/face_recognition.lua:469
msgid "tag category"
msgstr "categoria da etiqueta"
#: ../contrib/face_recognition.lua:400
msgid "tolerance"
msgstr "tolerância"
#: ../contrib/face_recognition.lua:412
msgid "processor cores"
msgstr "núcleos de processador"
#: ../contrib/face_recognition.lua:413
msgid "number of processor cores to use, 0 for all"
msgstr "número de núcleos de processador a usar, 0 para todos"
#: ../contrib/face_recognition.lua:424
msgid "known image directory"
msgstr "pasta de imagem conhecida"
#: ../contrib/face_recognition.lua:425 ../contrib/face_recognition.lua:471
msgid "face data directory"
msgstr "pasta de dados de rosto"
#: ../contrib/face_recognition.lua:434
msgid "export image format"
msgstr "formato de exportação da imagem"
#: ../contrib/face_recognition.lua:435
msgid "format for exported images"
msgstr "formato para as imagens exportadas"
#: ../contrib/face_recognition.lua:445
msgid "maximum exported image width"
msgstr "largura máxima das imagens exportadas"
#: ../contrib/face_recognition.lua:451
msgid "maximum exported image height"
msgstr "altura máxima das imagens exportada"
#: ../contrib/face_recognition.lua:463
msgid "unknown person tag"
msgstr "etiqueta de pessoa desconhecida"
#: ../contrib/face_recognition.lua:465
msgid "no persons found tag"
msgstr "etiqueta de nenhuma pessoa encontrada"
#: ../contrib/face_recognition.lua:478
msgid "processing options"
msgstr "opções de processamento"
#: ../contrib/face_recognition.lua:484
msgid "width "
msgstr "largura "
#: ../contrib/face_recognition.lua:489
msgid "height "
msgstr "altura "

View File

@@ -0,0 +1,30 @@
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
#
# Marcus Gama <marcus.gama@gmail.com>, 2021.
msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2021-09-28 19:37-0300\n"
"PO-Revision-Date: 2021-09-30 19:26-0300\n"
"Last-Translator: Marcus Gama <marcus.gama@gmail.com>\n"
"Language-Team: Portuguese <darktable-dev@lists.darktable.org>\n"
"Language: pt_BR\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
"X-Generator: Lokalize 21.08.1\n"
#: ../contrib/fujifilm_ratings.lua:49
msgid "exiftool not found"
msgstr "exiftool não encontrado"
#: ../contrib/fujifilm_ratings.lua:62
msgid "Using JPEG Rating: "
msgstr "Usar classificação JPEG: "
#: ../contrib/fujifilm_ratings.lua:73
msgid "Using RAF Rating: "
msgstr "Usar classificação RAF: "

View File

@@ -0,0 +1,77 @@
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
#
# Marcus Gama <marcus.gama@gmail.com>, 2021.
msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2021-09-28 19:37-0300\n"
"PO-Revision-Date: 2021-10-01 19:16-0300\n"
"Last-Translator: Marcus Gama <marcus.gama@gmail.com>\n"
"Language-Team: Portuguese <darktable-dev@lists.darktable.org>\n"
"Language: pt_BR\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
"X-Generator: Lokalize 21.08.1\n"
#: ../contrib/geoJSON_export.lua:82
#, lua-format
msgid "Export Image %i/%i"
msgstr "Exportar Imagem %i/%i"
#: ../contrib/geoJSON_export.lua:87
msgid "mkdir not found"
msgstr "mkdir não encontrado"
#: ../contrib/geoJSON_export.lua:91
msgid "convert not found"
msgstr "convert não encontrado"
#: ../contrib/geoJSON_export.lua:95
msgid "xdg-open not found"
msgstr "xdg-open não encontrado"
#: ../contrib/geoJSON_export.lua:99
msgid "xdg-user-dir not found"
msgstr "xdg-user-dir não encontrado"
#: ../contrib/geoJSON_export.lua:310
msgid "geoJSON export: Create an additional HTML file"
msgstr "exportar geoJSON: Criar um arquivo HTML adicional"
#: ../contrib/geoJSON_export.lua:311
msgid "Creates a HTML file, that loads the geoJASON file. (Needs a MapBox key"
msgstr ""
"Cria um arquivo HTML que carrega o arquivo geoJSON. (Precisa de uma chave"
" MapBox)"
#: ../contrib/geoJSON_export.lua:316
msgid "geoJSON export: MapBox Key"
msgstr "exportar geoJSON : chave MapBox"
#: ../contrib/geoJSON_export.lua:317
msgid "https://www.mapbox.com/studio/account/tokens"
msgstr "https://www.mapbox.com/studio/account/tokens"
#: ../contrib/geoJSON_export.lua:322
msgid "geoJSON export: Open geoJSON file after export"
msgstr "exportar geoJSON: Abrir o arquivo geoJSON após exportar"
#: ../contrib/geoJSON_export.lua:323
msgid ""
"Opens the geoJSON file after the export with the standard program for "
"geoJSON files"
msgstr ""
"Abre o arquivo geoJSON após a exportação com o programa padrão para arquivos"
" geoJSON"
#: ../contrib/geoJSON_export.lua:335
msgid "geoJSON export: Export directory"
msgstr "exportar geoJSON: Pasta de exportação"
#: ../contrib/geoJSON_export.lua:336
msgid "A directory that will be used to export the geoJSON files"
msgstr "Uma pasta que será usada para exportar os arquivos geoJSON"

View File

@@ -0,0 +1,166 @@
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
#
# Marcus Gama <marcus.gama@gmail.com>, 2021.
msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2021-09-28 19:37-0300\n"
"PO-Revision-Date: 2021-10-01 19:23-0300\n"
"Last-Translator: Marcus Gama <marcus.gama@gmail.com>\n"
"Language-Team: Portuguese <darktable-dev@lists.darktable.org>\n"
"Language: pt_BR\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
"X-Generator: Lokalize 21.08.1\n"
#: ../contrib/geoToolbox.lua:58
msgid "Distance:"
msgstr "Distância:"
#: ../contrib/geoToolbox.lua:62
msgid "latitude:"
msgstr "latitude:"
#: ../contrib/geoToolbox.lua:67
msgid "longitude:"
msgstr "longitude:"
#: ../contrib/geoToolbox.lua:72
msgid "elevation:"
msgstr "elevação:"
#: ../contrib/geoToolbox.lua:79 ../contrib/geoToolbox.lua:99
msgid "GPS selection"
msgstr "seleção do GPS"
#: ../contrib/geoToolbox.lua:302
msgid "latitude: "
msgstr "latitude: "
#: ../contrib/geoToolbox.lua:303
msgid "longitude: "
msgstr "longitude: "
#: ../contrib/geoToolbox.lua:304
msgid "elevation: "
msgstr "elevação: "
#: ../contrib/geoToolbox.lua:329
msgid "gnome-maps not found"
msgstr "gnome-maps não encontrado"
#: ../contrib/geoToolbox.lua:367
msgid "curl not found"
msgstr "curl não encontrado"
#: ../contrib/geoToolbox.lua:372
msgid "jq not found"
msgstr "jq não encontrado"
#: ../contrib/geoToolbox.lua:490
msgid "m"
msgstr "m"
#: ../contrib/geoToolbox.lua:492
msgid "km"
msgstr "km"
#: ../contrib/geoToolbox.lua:495
#, lua-format
msgid "Distance: %.2f %s"
msgstr "Distância: %.2f %s"
#: ../contrib/geoToolbox.lua:508
msgid "export altitude CSV"
msgstr "exportar altitude para CSV"
#: ../contrib/geoToolbox.lua:518
msgid "Name of the exported file"
msgstr "Nome do arquivo exportado"
#: ../contrib/geoToolbox.lua:523
msgid "Start export"
msgstr "Iniciar exportação"
#: ../contrib/geoToolbox.lua:584
msgid "File created in "
msgstr "Arquivo criado em "
#: ../contrib/geoToolbox.lua:614 ../contrib/geoToolbox.lua:746
msgid "Calculate the distance from latitude and longitude in km"
msgstr "Calcula a distância da latitude e longitude em km"
#: ../contrib/geoToolbox.lua:619 ../contrib/geoToolbox.lua:644
#: ../contrib/geoToolbox.lua:751
msgid "Select all images with GPS information"
msgstr "Selecionar todas as imagens com informação de GPS"
#: ../contrib/geoToolbox.lua:621 ../contrib/geoToolbox.lua:650
#: ../contrib/geoToolbox.lua:753
msgid "Select all images without GPS information"
msgstr "Selecionar todas as imagens sem informação de GPS"
#: ../contrib/geoToolbox.lua:643
msgid "select geo images"
msgstr "selecionar imagens geoetiquetadas"
#: ../contrib/geoToolbox.lua:649
msgid "select non-geo images"
msgstr "selecionar imagens sem geoetiquetas"
#: ../contrib/geoToolbox.lua:656
msgid "copy GPS data"
msgstr "copiar dados do GPS"
#: ../contrib/geoToolbox.lua:657
msgid "Copy GPS data"
msgstr "Copiar dados do GPS"
#: ../contrib/geoToolbox.lua:665
msgid "paste GPS data"
msgstr "colar dados do GPS"
#: ../contrib/geoToolbox.lua:666
msgid "Paste GPS data"
msgstr "Colar dados do GPS"
#: ../contrib/geoToolbox.lua:695
msgid "open in Gnome Maps"
msgstr "abrir no Gnome Maps"
#: ../contrib/geoToolbox.lua:696
msgid "Open location in Gnome Maps"
msgstr "Abrir localização no Gnome Maps"
#: ../contrib/geoToolbox.lua:702
msgid "reverse geocode"
msgstr "geocódigo reverso"
#: ../contrib/geoToolbox.lua:703
msgid "This just shows the name of the location, but doesn't add it as tag"
msgstr ""
"Isto apenas mostra o nome da localização, mas não adiciona-a como uma etiqueta"
#: ../contrib/geoToolbox.lua:707
msgid "altitude CSV export"
msgstr "exportar altitude em CSV"
#: ../contrib/geoToolbox.lua:712
msgid "export altitude CSV file"
msgstr "exporta o arquivo CSV de altitude"
#: ../contrib/geoToolbox.lua:713
msgid "Create an altitude profile using the GPS data in the metadata"
msgstr "Cria um perfil de altitude usando os dados GPS nos metadados"
#: ../contrib/geoToolbox.lua:740
msgid "geoToolbox export: MapBox Key"
msgstr "exportar geoToolbox: chave MapBox"
#: ../contrib/geoToolbox.lua:741
msgid "https://www.mapbox.com/studio/account/tokens"
msgstr "https://www.mapbox.com/studio/account/tokens"

View File

@@ -0,0 +1,43 @@
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
#
# Marcus Gama <marcus.gama@gmail.com>, 2021.
msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2021-09-28 19:37-0300\n"
"PO-Revision-Date: 2021-10-01 19:18-0300\n"
"Last-Translator: Marcus Gama <marcus.gama@gmail.com>\n"
"Language-Team: Portuguese <darktable-dev@lists.darktable.org>\n"
"Language: pt_BR\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
"X-Generator: Lokalize 21.08.1\n"
#: ../contrib/gimp.lua:111
#, lua-format
msgid "Export Image %i/%i"
msgstr "Exportar Imagem %i/%i"
#: ../contrib/gimp.lua:121
msgid "GIMP not found"
msgstr "GIMP não encontrado"
#: ../contrib/gimp.lua:144
msgid "Launching GIMP..."
msgstr "Iniciando GIMP..."
#: ../contrib/gimp.lua:207
msgid "run detached"
msgstr "executar desassociado"
#: ../contrib/gimp.lua:208
msgid "don't import resulting image back into darktable"
msgstr "não importar a imagem resultante de volta para o darktable"
#: ../contrib/gimp.lua:215
msgid "Edit with GIMP"
msgstr "Editar com o GIMP"

View File

@@ -0,0 +1,54 @@
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
#
# Marcus Gama <marcus.gama@gmail.com>, 2021.
msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2021-09-28 19:37-0300\n"
"PO-Revision-Date: 2021-09-28 19:48-0300\n"
"Last-Translator: Marcus Gama <marcus.gama@gmail.com>\n"
"Language-Team: Portuguese <darktable-dev@lists.darktable.org>\n"
"Language: pt_BR\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
"X-Generator: Lokalize 21.08.1\n"
#: ../contrib/gpx_export.lua:59
msgid "gpx file path"
msgstr "caminho do arquivo gpx"
#: ../contrib/gpx_export.lua:72
msgid "exporting gpx file..."
msgstr "exportar arquivo gpx..."
#: ../contrib/gpx_export.lua:74
msgid "gpx export"
msgstr "exportar gpx"
#: ../contrib/gpx_export.lua:93 ../contrib/gpx_export.lua:94
msgid " does not have date information and won't be processed"
msgstr " não possui informações de data e não será processado"
#: ../contrib/gpx_export.lua:134
msgid "invalid path: "
msgstr "caminho inválido: "
#: ../contrib/gpx_export.lua:138
msgid "gpx file created: "
msgstr "arquivo gpx criado: "
#: ../contrib/gpx_export.lua:171
msgid "export"
msgstr "exportar"
#: ../contrib/gpx_export.lua:172
msgid "export gpx file"
msgstr "exportar arquivo gpx"
#: ../contrib/gpx_export.lua:180
msgid "file:"
msgstr "arquivo:"

View File

@@ -0,0 +1,22 @@
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
#
# Marcus Gama <marcus.gama@gmail.com>, 2021.
msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2021-09-28 19:37-0300\n"
"PO-Revision-Date: 2021-09-30 19:26-0300\n"
"Last-Translator: Marcus Gama <marcus.gama@gmail.com>\n"
"Language-Team: Portuguese <darktable-dev@lists.darktable.org>\n"
"Language: pt_BR\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
"X-Generator: Lokalize 21.08.1\n"
#: ../contrib/harmonic_armature_guide.lua:76
msgid "harmonic armature"
msgstr "armadura harmônica"

View File

@@ -0,0 +1,67 @@
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
#
# Marcus Gama <marcus.gama@gmail.com>, 2021.
msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2021-09-28 19:37-0300\n"
"PO-Revision-Date: 2021-10-01 19:26-0300\n"
"Last-Translator: Marcus Gama <marcus.gama@gmail.com>\n"
"Language-Team: Portuguese <darktable-dev@lists.darktable.org>\n"
"Language: pt_BR\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
"X-Generator: Lokalize 21.08.1\n"
#: ../contrib/hugin.lua:109
msgid "hugin is not found, did you set the path?"
msgstr "hugin não encontrado, você configurou o caminho?"
#: ../contrib/hugin.lua:165
msgid "will try to stitch now"
msgstr "tentará pregar agora"
#: ../contrib/hugin.lua:170
msgid "creating pto file"
msgstr "criar arquivo pto"
#: ../contrib/hugin.lua:174
msgid "running assistant"
msgstr "rodar assistente"
#: ../contrib/hugin.lua:182
msgid "launching hugin"
msgstr "iniciar o hugin"
#: ../contrib/hugin.lua:184
msgid "unable to find command line tools, launching hugin"
msgstr ""
"não foi possível encontrar as ferramentas de linha de comando, iniciar o hugin"
#: ../contrib/hugin.lua:192
msgid "hugin isn't available."
msgstr "hugin não está disponível."
#: ../contrib/hugin.lua:197
msgid "hugin failed ..."
msgstr "hugin falhou..."
#: ../contrib/hugin.lua:203
msgid "importing file "
msgstr "importar arquivo "
#: ../contrib/hugin.lua:229
msgid " launch hugin gui"
msgstr " iniciar interface gráfica do hugin"
#: ../contrib/hugin.lua:231
msgid "launch hugin in gui mode"
msgstr "inicia o hugin no modo de interface gráfica"
#: ../contrib/hugin.lua:237
msgid "hugin panorama"
msgstr "hugin panorama"

View File

@@ -0,0 +1,273 @@
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
#
# Marcus Gama <marcus.gama@gmail.com>, 2021.
msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2021-09-28 19:37-0300\n"
"PO-Revision-Date: 2021-10-01 23:35-0300\n"
"Last-Translator: Marcus Gama <marcus.gama@gmail.com>\n"
"Language-Team: Portuguese <darktable-dev@lists.darktable.org>\n"
"Language: pt_BR\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
"X-Generator: Lokalize 21.08.1\n"
#: ../contrib/image_stack.lua:96
msgid "image align options"
msgstr "opções de alinhamento da imagem"
#: ../contrib/image_stack.lua:100
msgid "image stack options"
msgstr "opções de empilhamento da imagem"
#: ../contrib/image_stack.lua:104
msgid "executable locations"
msgstr "localizações dos executáveis"
#: ../contrib/image_stack.lua:129
msgid "perform image alignment"
msgstr "realizar o alinhamento da imagem"
#: ../contrib/image_stack.lua:131
msgid "align the image stack before processing"
msgstr "alinha a pilha de imagem antes de processar"
#: ../contrib/image_stack.lua:135
msgid "optimize radial distortion for all images"
msgstr "otimizar a distorção radial para todas as imagens"
#: ../contrib/image_stack.lua:137
msgid ""
"optimize radial distortion for all images, \n"
"except for first"
msgstr ""
"otimiza a distorção radial para todas as imagens,\n"
"exceto para a primeira"
#: ../contrib/image_stack.lua:141
msgid "optimize field of view for all images"
msgstr "otimizar campo de visão para todas as imagens"
#: ../contrib/image_stack.lua:143
msgid ""
"optimize field of view for all images, except for first. \n"
"Useful for aligning focus stacks (DFF) with slightly \n"
"different magnification."
msgstr ""
"otimiza o campo de visão para todas as imagens, exceto para a primeira.\n"
"Útil para alinhar o empilhamento de foco (DFF) com uma ampliação \n"
"levemente diferente."
#: ../contrib/image_stack.lua:147
msgid "optimize image center shift for all images"
msgstr "otimizar o deslocamento do centro da imagem para todas as imagens"
#: ../contrib/image_stack.lua:149
msgid ""
"optimize image center shift for all images, \n"
"except for first."
msgstr ""
"otimiza o deslocamento do centro da imagem para todas as imagens, \n"
"exceto para a primeira."
#: ../contrib/image_stack.lua:153
msgid "auto crop the image"
msgstr "cortar automaticamente a imagem"
#: ../contrib/image_stack.lua:155
msgid "auto crop the image to the area covered by all images."
msgstr ""
"corta automaticamente a imagem para a área coberta por todas as imagens."
#: ../contrib/image_stack.lua:159
msgid "load distortion from lens database"
msgstr "carregar a distorção a partir da base de dados de lentes"
#: ../contrib/image_stack.lua:161
msgid "try to load distortion information from lens database"
msgstr "tenta carregar as informações de distorção da base de dados de lentes"
#: ../contrib/image_stack.lua:165
msgid "image grid size"
msgstr "tamanho da grade da imagem"
#: ../contrib/image_stack.lua:166
msgid ""
"break image into a rectangular grid \n"
"and attempt to find num control points in each section.\n"
"default: (5x5)"
msgstr ""
"quebra a imagem em uma grade retangular \n"
"e tenta encontrar o número de pontos de controle\n"
"em cada seção.\n"
"padrão: (5x5)"
#: ../contrib/image_stack.lua:175
msgid "control points/grid"
msgstr "grade/pontos de controle"
#: ../contrib/image_stack.lua:176
msgid ""
"number of control points (per grid, see option -g) \n"
"to create between adjacent images \n"
"default: (8)."
msgstr ""
"número de pontos de controle (por grade, veja a opção -g) \n"
"a criar entre imagens adjacentes\n"
"padrão: (8)"
#: ../contrib/image_stack.lua:185
msgid "remove control points with error"
msgstr "remover pontos de controle com erro"
#: ../contrib/image_stack.lua:186
msgid ""
"remove all control points with an error higher \n"
"than num pixels \n"
"default: (3)"
msgstr ""
"remove todos os pontos de controle com um erro maior \n"
"que um número de pixels \n"
"padrão: (3)"
#: ../contrib/image_stack.lua:195
msgid "correlation threshold for control points"
msgstr "limiar de correlação para pontos de controle"
#: ../contrib/image_stack.lua:196
msgid ""
"correlation threshold for identifying \n"
"control points \n"
"default: (0.9)."
msgstr ""
"limiar de correlação para identificar pontos\n"
"de controle\n"
"padrão: (0,9)"
#: ../contrib/image_stack.lua:205
msgid "select stack function"
msgstr "função de seleção de pilha"
#: ../contrib/image_stack.lua:206
msgid ""
"select function to be \n"
"applied to image stack"
msgstr ""
"função de seleção a ser aplicada\n"
"à pilha de imagens"
#: ../contrib/image_stack.lua:215
msgid "select output format"
msgstr "selecionar formato de saída"
#: ../contrib/image_stack.lua:216
msgid "choose the format for the resulting image"
msgstr "seleciona o formato para a imagem resultante"
#: ../contrib/image_stack.lua:224
msgid "tag source images used?"
msgstr "etiquetas das imagens fonte usadas?"
#: ../contrib/image_stack.lua:226
msgid "tag the source images used to create the output file?"
msgstr "etiquetas das imagens fonte usadas para criar o arquivo de saída?"
#: ../contrib/image_stack.lua:261
#, lua-format
msgid "Export Image %i/%i"
msgstr "Exportar Imagem %i/%i"
#: ../contrib/image_stack.lua:454
msgid "Unrecognized option to copy_image_attributes: "
msgstr "Opção não reconhecida para copy_image_attributes: "
#: ../contrib/image_stack.lua:497
msgid "ERROR: at least 2 images required for image stacking, exiting..."
msgstr ""
"ERRO: pelo menos 2 imagens são necessárias para empilhamento de imagens,"
" saindo..."
#: ../contrib/image_stack.lua:498
msgid " image(s) selected, at least 2 required"
msgstr " imagem(ns) selecionada(s), pelo menos 2 necessárias"
#: ../contrib/image_stack.lua:512
msgid "aligning images..."
msgstr "alinhar imagens..."
#: ../contrib/image_stack.lua:515
msgid "images aligned"
msgstr "imagens alinhadas"
#: ../contrib/image_stack.lua:521
msgid "ERROR: image alignment failed"
msgstr "ERRO: alinhamento de imagem falhou"
#: ../contrib/image_stack.lua:522
msgid "image alignment failed"
msgstr "alinhamento de imagem falhou"
#: ../contrib/image_stack.lua:527
msgid "ERROR: align_image_stack not found"
msgstr "ERRO: align_image_stack não encontrado"
#: ../contrib/image_stack.lua:528
msgid "align_image_stack not found"
msgstr "align_image_stack não encontrado"
#: ../contrib/image_stack.lua:542
msgid "convert command is "
msgstr "comando convert é "
#: ../contrib/image_stack.lua:543
msgid "processing image stack"
msgstr "processar empilhamento de imagem"
#: ../contrib/image_stack.lua:546
msgid "image stack processed"
msgstr "empilhamento de imagem processado"
#: ../contrib/image_stack.lua:551
msgid "importing result"
msgstr "importar resultado"
#: ../contrib/image_stack.lua:556
msgid "Created with|image_stack"
msgstr "Criado com|image_stack"
#: ../contrib/image_stack.lua:569
msgid "tagging source images"
msgstr "etiquetando imagens fonte"
#: ../contrib/image_stack.lua:570
msgid "Source file|"
msgstr "Arquivo fonte |"
#: ../contrib/image_stack.lua:577
msgid "ERROR: image stack processing failed"
msgstr "ERRO: processamento de empilhamento de imagem falhou"
#: ../contrib/image_stack.lua:581
msgid "ERROR: convert executable not found"
msgstr "ERRO: executável do convert não encontrado"
#: ../contrib/image_stack.lua:582
msgid "convert executable not found"
msgstr "executável do convert não encontrado"
#: ../contrib/image_stack.lua:594
msgid "align image stack: use GPU for remaping"
msgstr "alinhar pilha de imagens: usar GPU para remapear"
#: ../contrib/image_stack.lua:595
msgid "set the GPU remapping for image align"
msgstr "definir o remapeamento de GPU para alinhamento de imagem"
#: ../contrib/image_stack.lua:598
msgid "image stack"
msgstr "empilhamento de imagem"

View File

@@ -0,0 +1,244 @@
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
#
# Marcus Gama <marcus.gama@gmail.com>, 2021.
msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2021-09-28 19:37-0300\n"
"PO-Revision-Date: 2021-10-02 05:09-0300\n"
"Last-Translator: Marcus Gama <marcus.gama@gmail.com>\n"
"Language-Team: Portuguese <darktable-dev@lists.darktable.org>\n"
"Language: pt_BR\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
"X-Generator: Lokalize 21.08.1\n"
#: ../contrib/image_time.lua:177
msgid "Error: 2 images must be selected"
msgstr "Erro: 2 imagens devem ser selecionadas"
#: ../contrib/image_time.lua:230
msgid "unable to detect exiv2"
msgstr "não foi possível detectar exiv2"
#: ../contrib/image_time.lua:251 ../contrib/image_time.lua:268
msgid "unable to get information for "
msgstr "não foi possível obter informações para "
#: ../contrib/image_time.lua:316
msgid "reset time: no images selected"
msgstr "reiniciar tempo: nenhuma imagem selecionada"
#: ../contrib/image_time.lua:317
msgid "please select the images that need their time reset"
msgstr ""
"por favor, selecione as imagens que precisam que seu tempo seja reiniciado"
#: ../contrib/image_time.lua:330 ../contrib/image_time.lua:355
msgid "please select some images and try again"
msgstr "por favor, selecione algumas imagens e tente novamente"
#: ../contrib/image_time.lua:334 ../contrib/image_time.lua:437
#: ../contrib/image_time.lua:444
msgid "subtract"
msgstr "subtrair"
#: ../contrib/image_time.lua:407
msgid "image time"
msgstr "tempo da imagem"
#: ../contrib/image_time.lua:431
msgid "years"
msgstr "anos"
#: ../contrib/image_time.lua:431
msgid "years to adjust by, 0 - ?"
msgstr "anos a ajustar, 0 - ?"
#: ../contrib/image_time.lua:432
msgid "months"
msgstr "meses"
#: ../contrib/image_time.lua:433
msgid "days"
msgstr "dias"
#: ../contrib/image_time.lua:434
msgid "hours"
msgstr "horas"
#: ../contrib/image_time.lua:434
msgid "hours to adjust by, 0-23"
msgstr "horas a ajustar, 0-23"
#: ../contrib/image_time.lua:435
msgid "minutes"
msgstr "minutos"
#: ../contrib/image_time.lua:435
msgid "minutes to adjust by, 0-59"
msgstr "minutos a ajustar, 0-59"
#: ../contrib/image_time.lua:436 ../contrib/image_time.lua:443
msgid "seconds"
msgstr "segundos"
#: ../contrib/image_time.lua:436
msgid "seconds to adjust by, 0-59"
msgstr "segundos a ajustar, 0-59"
#: ../contrib/image_time.lua:437 ../contrib/image_time.lua:444
msgid "add/subtract"
msgstr "adicionar/subtrair"
#: ../contrib/image_time.lua:437 ../contrib/image_time.lua:444
msgid "add or subtract time"
msgstr "adicionar ou subtrair tempo"
#: ../contrib/image_time.lua:437 ../contrib/image_time.lua:444
msgid "add"
msgstr "adicionar"
#: ../contrib/image_time.lua:438
msgid "year"
msgstr "ano"
#: ../contrib/image_time.lua:438
msgid "year to set, 1900 - now"
msgstr "ano a definir, 1900 - agora"
#: ../contrib/image_time.lua:439
msgid "month"
msgstr "mês"
#: ../contrib/image_time.lua:439
msgid "month to set, 1-12"
msgstr "mês a definir, 1-12"
#: ../contrib/image_time.lua:440
msgid "day"
msgstr "dia"
#: ../contrib/image_time.lua:440
msgid "day to set, 1-31"
msgstr "dia a definir, 1-31"
#: ../contrib/image_time.lua:441
msgid "hour"
msgstr "hora"
#: ../contrib/image_time.lua:441
msgid "hour to set, 0-23"
msgstr "hora a definir, 0-23"
#: ../contrib/image_time.lua:442
msgid "minute"
msgstr "minuto"
#: ../contrib/image_time.lua:442
msgid "minutes to set, 0-59"
msgstr "minuto a definir, 0-59"
#: ../contrib/image_time.lua:443
msgid "seconds to set, 0-59"
msgstr "segundos a definir, 0-59"
#: ../contrib/image_time.lua:459
msgid "Time difference between images in seconds"
msgstr "Diferença de tempo entre as imagens em segundos"
#: ../contrib/image_time.lua:460
msgid "Select 2 images and use the calculate button"
msgstr "Selecione 2 imagens e use o botão para calcular"
#: ../contrib/image_time.lua:465
msgid "Calculate"
msgstr "Calcular"
#: ../contrib/image_time.lua:466
msgid "calculate time difference between 2 images"
msgstr "calcula a diferença de tempo entre 2 imagens"
#: ../contrib/image_time.lua:473
msgid "synchronize image times"
msgstr "sincronizar tempos da imagem"
#: ../contrib/image_time.lua:474
msgid "apply the time difference from selected images"
msgstr "aplica a diferença de tempo a partir das imagens selecionadas"
#: ../contrib/image_time.lua:484 ../contrib/image_time.lua:550
msgid "adjust time"
msgstr "ajustar tempo"
#: ../contrib/image_time.lua:485
msgid "days, months, years"
msgstr "dias, meses, anos"
#: ../contrib/image_time.lua:489
msgid "hours, minutes, seconds"
msgstr "horas, minutos, segundos"
#: ../contrib/image_time.lua:493
msgid "adjustment direction"
msgstr "direção de ajuste"
#: ../contrib/image_time.lua:496
msgid "adjust"
msgstr "ajustar"
#: ../contrib/image_time.lua:504 ../contrib/image_time.lua:551
msgid "set time"
msgstr "definir tempo"
#: ../contrib/image_time.lua:505
msgid "date: "
msgstr "data: "
#: ../contrib/image_time.lua:509
msgid "time:"
msgstr "tempo: "
#: ../contrib/image_time.lua:514
msgid "set"
msgstr "definir"
#: ../contrib/image_time.lua:522
msgid "synchronize image time"
msgstr "sincronizar tempo da imagem"
#: ../contrib/image_time.lua:523
msgid "calculate difference between images"
msgstr "calcular a diferença entre imagens"
#: ../contrib/image_time.lua:526
msgid "apply difference"
msgstr "aplicar diferença"
#: ../contrib/image_time.lua:532
msgid "reset to original time"
msgstr "reiniciar para o tempo original"
#: ../contrib/image_time.lua:535
msgid "reset"
msgstr "reiniciar"
#: ../contrib/image_time.lua:544
msgid "mode"
msgstr "modo"
#: ../contrib/image_time.lua:545
msgid "select mode"
msgstr "selecionar modo"
#: ../contrib/image_time.lua:552
msgid "synchronize time"
msgstr "sincronizar tempo"
#: ../contrib/image_time.lua:553
msgid "reset time"
msgstr "reiniciar tempo"

View File

@@ -0,0 +1,90 @@
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
#
# Marcus Gama <marcus.gama@gmail.com>, 2021.
msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2021-09-28 19:37-0300\n"
"PO-Revision-Date: 2021-10-02 05:14-0300\n"
"Last-Translator: Marcus Gama <marcus.gama@gmail.com>\n"
"Language-Team: Portuguese <darktable-dev@lists.darktable.org>\n"
"Language: pt_BR\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
"X-Generator: Lokalize 21.08.1\n"
#: ../contrib/kml_export.lua:64
#, lua-format
msgid "Export Image %i/%i"
msgstr "Exportar Imagem %i/%i"
#: ../contrib/kml_export.lua:91
msgid "magick not found"
msgstr "magick não encontrado"
#: ../contrib/kml_export.lua:96
msgid "xdg-user-dir not found"
msgstr "xdg-user-dir não encontrado"
#: ../contrib/kml_export.lua:106
msgid "zip not found"
msgstr "zip não encontrado"
#: ../contrib/kml_export.lua:321
msgid "KML export: Open KML file after export"
msgstr "exportar KML: Abrir arquivo Open KML após a exportação"
#: ../contrib/kml_export.lua:322 ../contrib/kml_export.lua:329
msgid ""
"Opens the KML file after the export with the standard program for KML files"
msgstr ""
"Abre o arquivo KML após a exportação com o programa padrão para arquivos KML"
#: ../contrib/kml_export.lua:328
msgid "KML export: Open KML/KMZ file after export"
msgstr "exportar KML: Abre arquivo KML/KMZ após a exportação"
#: ../contrib/kml_export.lua:348
msgid "KML export: Export directory"
msgstr "exportar KML: Pasta de exportação"
#: ../contrib/kml_export.lua:349
msgid "A directory that will be used to export the KML/KMZ files"
msgstr "Uma pasta que será usada para exportar os arquivos KML/KMZ"
#: ../contrib/kml_export.lua:356
msgid "KML export: ImageMagick binary Location"
msgstr "exportar KML: Localização do binário do ImageMagick"
#: ../contrib/kml_export.lua:357
msgid "Install location of magick[.exe]. Requires restart to take effect."
msgstr ""
"Localização de instalação do magick[.exe]. Precisa reiniciar para ter efeito."
#: ../contrib/kml_export.lua:364
msgid "KML export: Connect images with path"
msgstr "exportar KML: Conectar imagens com caminho"
#: ../contrib/kml_export.lua:365
msgid "connect all images with a path"
msgstr "conecta todas as imagens com um caminho"
#: ../contrib/kml_export.lua:372
msgid "KML export: Create KMZ file"
msgstr "exportar KML: Criar arquivo KMZ"
#: ../contrib/kml_export.lua:373
msgid "Compress all imeges to one KMZ file"
msgstr "Comprime todas as imagens para um arquivo KMZ"
#: ../contrib/kml_export.lua:379
msgid "KML Export"
msgstr "Exportar KML"
#: ../contrib/kml_export.lua:381
msgid "KML/KMZ Export"
msgstr "Exportar KML/KMZ"

View File

@@ -0,0 +1,22 @@
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
#
# Marcus Gama <marcus.gama@gmail.com>, 2021.
msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2021-09-28 19:37-0300\n"
"PO-Revision-Date: 2021-10-01 19:26-0300\n"
"Last-Translator: Marcus Gama <marcus.gama@gmail.com>\n"
"Language-Team: Portuguese <darktable-dev@lists.darktable.org>\n"
"Language: pt_BR\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
"X-Generator: Lokalize 21.08.1\n"
#: ../contrib/passport_guide.lua:90
msgid "ISO 19794-5/ICAO 9309 passport"
msgstr "passaporte ISO 19794-5/ICAO 9309"

View File

@@ -0,0 +1,70 @@
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
#
# Marcus Gama <marcus.gama@gmail.com>, 2021.
msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2021-09-28 19:37-0300\n"
"PO-Revision-Date: 2021-10-02 05:16-0300\n"
"Last-Translator: Marcus Gama <marcus.gama@gmail.com>\n"
"Language-Team: Portuguese <darktable-dev@lists.darktable.org>\n"
"Language: pt_BR\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
"X-Generator: Lokalize 21.08.1\n"
#: ../contrib/pdf_slideshow.lua:55
msgid "pdflatex not found"
msgstr "pdflatex não encontrado"
#: ../contrib/pdf_slideshow.lua:71
msgid "a pdf viewer"
msgstr "um visualizador de pdf"
#: ../contrib/pdf_slideshow.lua:72
msgid "can be an absolute pathname or the tool may be in the PATH"
msgstr "pode ser um caminho absoluto ou a ferramenta pode estar no PATH"
#: ../contrib/pdf_slideshow.lua:76 ../contrib/pdf_slideshow.lua:103
msgid "slideshow title"
msgstr "título da apresentação"
#: ../contrib/pdf_slideshow.lua:80
msgid "transition delay (s)"
msgstr "atraso da transição (s)"
#: ../contrib/pdf_slideshow.lua:91
msgid "include image title"
msgstr "incluir título da imagem"
#: ../contrib/pdf_slideshow.lua:93
msgid "whether to include the image title (if defined) into the slide"
msgstr "se deve ser incluído o título da imagem (se definido) no slide"
#: ../contrib/pdf_slideshow.lua:97
msgid "include image author"
msgstr "incluir autor da imagem"
#: ../contrib/pdf_slideshow.lua:99
msgid "whether to include the image author (if defined) into the slide"
msgstr "se deve ser incluído o autor da imagem (se definido) no slide"
#: ../contrib/pdf_slideshow.lua:179
msgid "pdf slideshow"
msgstr "apresentação do pdf"
#: ../contrib/pdf_slideshow.lua:232
msgid "problem running pdflatex"
msgstr "problema ao executar o pdflatex"
#: ../contrib/pdf_slideshow.lua:233 ../contrib/pdf_slideshow.lua:243
msgid "problem running "
msgstr "problema ao executar "
#: ../contrib/pdf_slideshow.lua:242
msgid "problem running pdf viewer"
msgstr "problema ao executar o visualizador de pdf"

View File

@@ -0,0 +1,118 @@
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
#
# Marcus Gama <marcus.gama@gmail.com>, 2021.
msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2021-09-28 19:37-0300\n"
"PO-Revision-Date: 2021-10-02 05:22-0300\n"
"Last-Translator: Marcus Gama <marcus.gama@gmail.com>\n"
"Language-Team: Portuguese <darktable-dev@lists.darktable.org>\n"
"Language: pt_BR\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
"X-Generator: Lokalize 21.08.1\n"
#: ../contrib/photils.lua:117
msgid "get tags"
msgstr "obter etiquetas"
#: ../contrib/photils.lua:148
msgid "requires a restart to be applied"
msgstr "precisa reiniciar para ser aplicado"
#: ../contrib/photils.lua:163
msgid "min confidence value"
msgstr "valor mín de confiança"
#: ../contrib/photils.lua:180
msgid ""
"The suggested tags were not generated\n"
" for the currently selected image!"
msgstr ""
"As etiquetas sugeridas não serão geradas\n"
"para a imagem atualmente selecionada!"
#: ../contrib/photils.lua:186
#, lua-format
msgid " page %s of %s "
msgstr " página %s de %s "
#: ../contrib/photils.lua:237
msgid "Apply tag to image"
msgstr "Aplicar etiqueta à imagem"
#: ../contrib/photils.lua:249
msgid "Tags successfully attached to image"
msgstr "Etiquetas anexadas com sucesso à imagem"
#: ../contrib/photils.lua:299
#, lua-format
msgid "%s found %d tags for your image"
msgstr "%s encontrado %d etiquetas para sua imagem"
#: ../contrib/photils.lua:315
msgid "No image selected."
msgstr "Nenhuma imagem selecionada."
#: ../contrib/photils.lua:319
msgid "This plugin can only handle a single image."
msgstr "Este plugin pode manipular somente uma imagem por vez."
#: ../contrib/photils.lua:326
#, lua-format
msgid "%s failed, see terminal output for details"
msgstr "%s falhou, veja a saída do terminal para detalhes"
#: ../contrib/photils.lua:334
#, lua-format
msgid "no tags where found"
msgstr "nenhuma etiqueta encontrada"
#: ../contrib/photils.lua:365
#, lua-format
msgid "attach %d tags"
msgstr "anexar %d etiquetas"
#: ../contrib/photils.lua:429 ../contrib/photils.lua:430
msgid "photils-cli not found"
msgstr "photils-cli não encontrado"
#: ../contrib/photils.lua:432
msgid ""
"Select an image, click \"get tags\" and get \n"
"suggestions for tags."
msgstr ""
"Selecione uma imagem, clique em \"obter etiquetas\"\n"
"e obtenha sugestões para etiquetas."
#: ../contrib/photils.lua:467
msgid "photils: show confidence value"
msgstr "photils: mostrar valor de confiança"
#: ../contrib/photils.lua:468
msgid "if enabled, the confidence value for each tag is displayed"
msgstr "se ativo, o valor de confiança para cada etiqueta é exibido"
#: ../contrib/photils.lua:474
msgid "photils: use exported image for tag request"
msgstr "photils: usar imagem exportada para pedido de etiqueta"
#: ../contrib/photils.lua:475
msgid ""
"If enabled, the image passed to photils for tag suggestion is based on the "
"exported, already edited image. Otherwise, the embedded thumbnail of the RAW "
"file will be used for tag suggestion.The embedded thumbnail could speedup "
"the tag suggestion but can fail if the RAW file is not supported."
msgstr ""
"Se ativo, a imagem passada para o photils para a sugestão de etiquetas é"
" baseada na "
"exportada, a imagem já editada. Caso contrário, a miniatura embutida no"
" arquivo RAW "
"será usada para sugestão de etiquetas. A miniatura embutida pode acelerar a"
" sugestão "
"de etiqueta mas pode falhar se o arquivo RAW não for suportado."

View File

@@ -0,0 +1,82 @@
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
#
# Marcus Gama <marcus.gama@gmail.com>, 2021.
msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2021-09-28 19:37-0300\n"
"PO-Revision-Date: 2021-10-02 05:25-0300\n"
"Last-Translator: Marcus Gama <marcus.gama@gmail.com>\n"
"Language-Team: Portuguese <darktable-dev@lists.darktable.org>\n"
"Language: pt_BR\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
"X-Generator: Lokalize 21.08.1\n"
#: ../contrib/quicktag.lua:78
msgid "max. length of button labels"
msgstr "comprimento máximo dos rótulos de botão"
#: ../contrib/quicktag.lua:79
msgid "may range from 15 to 60 - needs a restart"
msgstr "pode ir de 16 à 60 - precisa reiniciar"
#: ../contrib/quicktag.lua:92
msgid "number of quicktag fields"
msgstr "número de campos de quicktag"
#: ../contrib/quicktag.lua:93
msgid "may range from 2 to 20 - needs a restart"
msgstr "pode ir de 2 à 20 - precisa reiniciar"
#: ../contrib/quicktag.lua:133
#, lua-format
msgid "quicktag %i is empty, please set a tag"
msgstr "quicktag %i está vazio, por favor defina uma etiqueta"
#: ../contrib/quicktag.lua:148
msgid "no images selected"
msgstr "nenhuma imagem selecionada"
#: ../contrib/quicktag.lua:158
#, lua-format
msgid "tag \"%s\" attached to %i image(s)"
msgstr "etiqueta \"%s\" anexada a %i imagem(ns)"
#: ../contrib/quicktag.lua:179
msgid "old tag"
msgstr "etiqueta antiga"
#: ../contrib/quicktag.lua:180
msgid "select the quicktag to replace"
msgstr "selecione a quicktag para substituir"
#: ../contrib/quicktag.lua:225 ../contrib/quicktag.lua:303
#, lua-format
msgid "quicktag %i"
msgstr "quicktag %i"
#: ../contrib/quicktag.lua:240 ../contrib/quicktag.lua:264
msgid "new tag"
msgstr "nova etiqueta"
#: ../contrib/quicktag.lua:243
msgid "enter your tag here"
msgstr "insira sua etiqueta aqui"
#: ../contrib/quicktag.lua:247
msgid "set tag"
msgstr "definir etiqueta"
#: ../contrib/quicktag.lua:251
msgid "new quicktag is empty!"
msgstr "nova quicktag está vazia!"
#: ../contrib/quicktag.lua:255
#, lua-format
msgid "quicktag \"%s\" replaced by \"%s\""
msgstr "quicktag \"%s\" substituída por \"%s\""

View File

@@ -0,0 +1,234 @@
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
#
# Marcus Gama <marcus.gama@gmail.com>, 2021.
msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2021-09-28 19:37-0300\n"
"PO-Revision-Date: 2021-10-02 05:45-0300\n"
"Last-Translator: Marcus Gama <marcus.gama@gmail.com>\n"
"Language-Team: Portuguese <darktable-dev@lists.darktable.org>\n"
"Language: pt_BR\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
"X-Generator: Lokalize 21.08.1\n"
#: ../contrib/rename_images.lua:123
msgid "unrecognized variable "
msgstr "variável não reconhecida "
#: ../contrib/rename_images.lua:124
msgid "unknown variable "
msgstr "variável desconhecida "
#: ../contrib/rename_images.lua:143
msgid "rename images"
msgstr "renomear imagens"
#: ../contrib/rename_images.lua:175
msgid "pattern is "
msgstr "padrão é "
#: ../contrib/rename_images.lua:179
msgid "renaming images"
msgstr "renomeando images"
#: ../contrib/rename_images.lua:186
msgid "unable to do variable substitution, exiting..."
msgstr "não foi possível a substituição de variável, saindo..."
#: ../contrib/rename_images.lua:215
msgid "renamed "
msgstr "renomeado "
#: ../contrib/rename_images.lua:218
msgid "please enter the new name or pattern"
msgstr "por favor, insira o novo nome ou padrão"
#: ../contrib/rename_images.lua:222
msgid "please select some images and try again"
msgstr "por favor, selecione algumas imagens e tente novamente"
#: ../contrib/rename_images.lua:235
msgid "$(ROLL_NAME) - film roll name\n"
msgstr "$(ROLL_NAME) - nome do rolo de filme\n"
#: ../contrib/rename_images.lua:236
msgid "$(FILE_FOLDER) - image file folder\n"
msgstr "$(FILE_FOLDER) - pasta do arquivo de imagem\n"
#: ../contrib/rename_images.lua:237
msgid "$(FILE_NAME) - image file name\n"
msgstr "$(FILE_NAME) - nome do arquivo de imagem\n"
#: ../contrib/rename_images.lua:238
msgid "$(FILE_EXTENSION) - image file extension\n"
msgstr "$(FILE_EXTENSION) - extensão do arquivo de imagem\n"
#: ../contrib/rename_images.lua:239
msgid "$(ID) - image id\n"
msgstr "$(ID) - id da imagem\n"
#: ../contrib/rename_images.lua:240
msgid "$(VERSION) - version number\n"
msgstr "$(VERSION) - número de versão\n"
#: ../contrib/rename_images.lua:241
msgid "$(SEQUENCE) - sequence number of selection\n"
msgstr "$(SEQUENCE) - número de sequência da seleção\n"
#: ../contrib/rename_images.lua:242
msgid "$(YEAR) - current year\n"
msgstr "$(YEAR) - ano atual\n"
#: ../contrib/rename_images.lua:243
msgid "$(MONTH) - current month\n"
msgstr "$(MONTH) - mês atual\n"
#: ../contrib/rename_images.lua:244
msgid "$(DAY) - current day\n"
msgstr "$(DAY) - dia atual\n"
#: ../contrib/rename_images.lua:245
msgid "$(HOUR) - current hour\n"
msgstr "$(HOUR) - hora atual\n"
#: ../contrib/rename_images.lua:246
msgid "$(MINUTE) - current minute\n"
msgstr "$(MINUTE) - minuto atual\n"
#: ../contrib/rename_images.lua:247
msgid "$(SECOND) - current second\n"
msgstr "$(SECOND) - segundo atual\n"
#: ../contrib/rename_images.lua:248
msgid "$(EXIF_YEAR) - EXIF year\n"
msgstr "$(EXIF_YEAR) - ano EXIF\n"
#: ../contrib/rename_images.lua:249
msgid "$(EXIF_MONTH) - EXIF month\n"
msgstr "$(EXIF_MONTH) - mês EXIF\n"
#: ../contrib/rename_images.lua:250
msgid "$(EXIF_DAY) - EXIF day\n"
msgstr "$(EXIF_DAY) - dia EXIF\n"
#: ../contrib/rename_images.lua:251
msgid "$(EXIF_HOUR) - EXIF hour\n"
msgstr "$(EXIF_HOUR) - hora EXIF\n"
#: ../contrib/rename_images.lua:252
msgid "$(EXIF_MINUTE) - EXIF minute\n"
msgstr "$(EXIF_MINUTE) - minuto EXIF\n"
#: ../contrib/rename_images.lua:253
msgid "$(EXIF_SECOND) - EXIF seconds\n"
msgstr "$(EXIF_SECOND) - segundo EXIF\n"
#: ../contrib/rename_images.lua:254
msgid "$(EXIF_ISO) - EXIF ISO\n"
msgstr "$(EXIF_ISO) - ISO EXIF\n"
#: ../contrib/rename_images.lua:255
msgid "$(EXIF_EXPOSURE) - EXIF exposure\n"
msgstr "$(EXIF_EXPOSURE) - exposição EXIF\n"
#: ../contrib/rename_images.lua:256
msgid "$(EXIF_EXPOSURE_BIAS) - EXIF exposure bias\n"
msgstr "$(EXIF_EXPOSURE_BIAS) - viés de exposição EXIF\n"
#: ../contrib/rename_images.lua:257
msgid "$(EXIF_APERTURE) - EXIF aperture\n"
msgstr "$(EXIF_APERTURE) - abertura EXIF\n"
#: ../contrib/rename_images.lua:258
msgid "$(EXIF_FOCAL_LENGTH) - EXIF focal length\n"
msgstr "$(EXIF_FOCAL_LENGTH) - distância focal EXIF\n"
#: ../contrib/rename_images.lua:259
msgid "$(EXIF_FOCUS_DISTANCE) - EXIF focus distance\n"
msgstr "$(EXIF_FOCUS_DISTANCE) - distância do foco EXIF\n"
#: ../contrib/rename_images.lua:260
msgid "$(EXIF_CROP) - EXIF crop\n"
msgstr "$(EXIF_CROP) - corte EXIF\n"
#: ../contrib/rename_images.lua:261
msgid "$(LONGITUDE) - longitude\n"
msgstr "$(LONGITUDE) - longitude\n"
#: ../contrib/rename_images.lua:262
msgid "$(LATITUDE) - latitude\n"
msgstr "$(LATITUDE) - latitude\n"
#: ../contrib/rename_images.lua:263
msgid "$(ELEVATION) - elevation\n"
msgstr "$(ELEVATION) - elevação\n"
#: ../contrib/rename_images.lua:264
msgid "$(STARS) - star rating\n"
msgstr "$(STARS) - classificação de estrelas\n"
#: ../contrib/rename_images.lua:265
msgid "$(LABELS) - color labels\n"
msgstr "$(LABELS) - etiquetas de cor\n"
#: ../contrib/rename_images.lua:266
msgid "$(MAKER) - camera maker\n"
msgstr "$(MAKER) - fabricante da câmera\n"
#: ../contrib/rename_images.lua:267
msgid "$(MODEL) - camera model\n"
msgstr "$(MODEL) - modelo da câmera\n"
#: ../contrib/rename_images.lua:268
msgid "$(LENS) - lens\n"
msgstr "$(LENS) - lente\n"
#: ../contrib/rename_images.lua:269
msgid "$(TITLE) - title from metadata\n"
msgstr "$(TITLE) - título a partir dos metadados\n"
#: ../contrib/rename_images.lua:270
msgid "$(DESCRIPTION) - description from metadata\n"
msgstr "$(DESCRIPTION) - descrição a partir dos metadados\n"
#: ../contrib/rename_images.lua:271
msgid "$(CREATOR) - creator from metadata\n"
msgstr "$(CREATOR) - autor a partir dos metadados\n"
#: ../contrib/rename_images.lua:272
msgid "$(PUBLISHER) - publisher from metadata\n"
msgstr "$(PUBLISHER) - editor a partir dos metadados\n"
#: ../contrib/rename_images.lua:273
msgid "$(RIGHTS) - rights from metadata\n"
msgstr "$(RIGHTS) - direitos autorais a partir dos metadados\n"
#: ../contrib/rename_images.lua:274
msgid "$(USERNAME) - username\n"
msgstr "$(USERNAME) - nome do usuário\n"
#: ../contrib/rename_images.lua:275
msgid "$(PICTURES_FOLDER) - pictures folder\n"
msgstr "$(PICTURES_FOLDER) - pasta de imagens\n"
#: ../contrib/rename_images.lua:276
msgid "$(HOME) - user's home directory\n"
msgstr "$(HOME) - pasta pessoal do usuário\n"
#: ../contrib/rename_images.lua:277
msgid "$(DESKTOP) - desktop directory"
msgstr "$(DESKTOP) - pasta da área de trabalho"
#: ../contrib/rename_images.lua:278
msgid "enter pattern $(FILE_FOLDER)/$(FILE_NAME)"
msgstr "insira o padrão $(FILE_FOLDER)/$(FILE_NAME)"
#: ../contrib/rename_images.lua:288
msgid "rename"
msgstr "renomear"

View File

@@ -0,0 +1,199 @@
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
#
# Marcus Gama <marcus.gama@gmail.com>, 2021.
msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2021-09-28 11:49-0300\n"
"PO-Revision-Date: 2021-09-28 19:41-0300\n"
"Language: pt_BR\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Last-Translator: Marcus Gama <marcus.gama@gmail.com>\n"
"Language-Team: Portuguese <darktable-dev@lists.darktable.org>\n"
"X-Generator: Lokalize 21.08.1\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
#: script_manager.lua:314
msgid "Cant read from "
msgstr "Não foi possível ler de "
#: script_manager.lua:332
msgid "Loaded "
msgstr "Carregado "
#: script_manager.lua:344
msgid " failed to load"
msgstr " falhou ao carregar"
#: script_manager.lua:379 script_manager.lua:634 script_manager.lua:657
msgid " stopped"
msgstr " parado"
#: script_manager.lua:383
msgid " will not start when darktable is restarted"
msgstr " não iniciará quando o darktable for reiniciado"
#: script_manager.lua:443 script_manager.lua:507
msgid "find command is "
msgstr "encontrar comando é "
#: script_manager.lua:469 script_manager.lua:553
msgid ""
"ERROR: git not found. Install or specify the location of the git executable."
msgstr ""
"ERRO: git não encontrado. Instale ou defina a localização do executável do"
" git."
#: script_manager.lua:483
msgid "lua scripts successfully updated"
msgstr "scripts lua atualizados com sucesso"
#: script_manager.lua:543
msgid "category "
msgstr "categoria "
#: script_manager.lua:543
msgid " is already in use. Please specify a different category name."
msgstr " já está em uso. Por favor, defina um nome de categoria diferente."
#: script_manager.lua:572
msgid "scripts successfully installed into category "
msgstr "scripts instalados com sucesso na categoria "
#: script_manager.lua:588
msgid "No scripts found to install"
msgstr "Nenhum script para instalação encontrado"
#: script_manager.lua:592
msgid "failed to download scripts"
msgstr "falha ao baixar scripts"
#: script_manager.lua:627
msgid " started"
msgstr " iniciado"
#: script_manager.lua:732
msgid "Page "
msgstr "Página "
#: script_manager.lua:732
msgid " of "
msgstr " de "
#: script_manager.lua:934
msgid "scripts to update"
msgstr "scripts a atualizar"
#: script_manager.lua:935
msgid "select the scripts installation to update"
msgstr "selecione as instalações de scripts a atualizar"
#: script_manager.lua:944 script_manager.lua:1002
msgid "update scripts"
msgstr "atualizar scripts"
#: script_manager.lua:945
msgid "update the lua scripts from the repository"
msgstr "atualizar os scripts lua a partir do repositório"
#: script_manager.lua:956
msgid ""
"enter the URL of the git repository containing the scripts you wish to add"
msgstr ""
"insira a URL do repositório git contendo os scripts que deseja adicionar"
#: script_manager.lua:961
msgid "name of new category"
msgstr "nome da nova categoria"
#: script_manager.lua:962
msgid "enter a category name for the additional scripts"
msgstr "insira um nome de categoria para os scripts adicionais"
#: script_manager.lua:967
msgid "URL to download additional scripts from"
msgstr "URL da qual baixar os scripts adicionais"
#: script_manager.lua:969
msgid "new category to place scripts in"
msgstr "nova categoria para colocar os scripts"
#: script_manager.lua:972
msgid "install additional scripts"
msgstr "instalar scripts adicionais"
#: script_manager.lua:980
msgid "Enable \"Disable Scripts\" button"
msgstr "Ativar botão \"Desabilitar Scripts\""
#: script_manager.lua:990
msgid "Disable Scripts"
msgstr "Desabilitar Scripts"
#: script_manager.lua:996
msgid "lua scripts will not run the next time darktable is started"
msgstr "scripts lua não rodarão na próxima vez que o darktable for iniciado"
#: script_manager.lua:1005
msgid "add more scripts"
msgstr "adicionar mais scripts"
#: script_manager.lua:1007
msgid "disable scripts"
msgstr "desabilitar scripts"
#: script_manager.lua:1015
msgid "category"
msgstr "categoria"
#: script_manager.lua:1016
msgid "select the script category"
msgstr "selecione a categoria do script"
#: script_manager.lua:1036
msgid "Page:"
msgstr "Página:"
#: script_manager.lua:1064
msgid "Scripts"
msgstr "Scripts"
#: script_manager.lua:1073
msgid "scripts per page"
msgstr "scripts por página"
#: script_manager.lua:1074
msgid "select number of start/stop buttons to display"
msgstr "selecione o número de botões de iniciar/parar a exibir"
#: script_manager.lua:1085
msgid "change number of buttons"
msgstr "mudar o número de botões"
#: script_manager.lua:1093
msgid "Configuration"
msgstr "Configuração"
#: script_manager.lua:1099
msgid "use color interface?"
msgstr "usar interface colorida?"
#: script_manager.lua:1122
msgid "action"
msgstr "ação"
#: script_manager.lua:1128
msgid "install/update scripts"
msgstr "instalar/atualizar scripts"
#: script_manager.lua:1128
msgid "configure"
msgstr "configurar"
#: script_manager.lua:1128
msgid "start/stop scripts"
msgstr "iniciar/parar scripts"

View File

@@ -0,0 +1,32 @@
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
#
# Marcus Gama <marcus.gama@gmail.com>, 2021.
msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2021-09-28 19:37-0300\n"
"PO-Revision-Date: 2021-09-28 19:47-0300\n"
"Last-Translator: Marcus Gama <marcus.gama@gmail.com>\n"
"Language-Team: Portuguese <darktable-dev@lists.darktable.org>\n"
"Language: pt_BR\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
"X-Generator: Lokalize 21.08.1\n"
#: ../contrib/select_untagged.lua:47
msgid "select untagged images"
msgstr "selecionar imagens sem etiqueta"
#: ../contrib/select_untagged.lua:79
msgid "select untagged"
msgstr "selecionar sem etiqueta"
#: ../contrib/select_untagged.lua:81
msgid "select all images containing no tags or only tags added by darktable"
msgstr ""
"seleciona todas as imagens que não possuam etiqueta ou somente etiquetas"
" adicionadas pelo darktable"

View File

@@ -0,0 +1,34 @@
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
#
# Marcus Gama <marcus.gama@gmail.com>, 2021.
msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2021-09-28 19:37-0300\n"
"PO-Revision-Date: 2021-09-28 19:50-0300\n"
"Last-Translator: Marcus Gama <marcus.gama@gmail.com>\n"
"Language-Team: Portuguese <darktable-dev@lists.darktable.org>\n"
"Language: pt_BR\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
"X-Generator: Lokalize 21.08.1\n"
#: ../contrib/slideshowMusic.lua:56
msgid "rhythmbox-client not found"
msgstr "cliente rhythmbox não encontrado"
#: ../contrib/slideshowMusic.lua:85
msgid "Slideshow background music file"
msgstr "Arquivo de música de fundo da apresentação"
#: ../contrib/slideshowMusic.lua:89
msgid "Play slideshow background music"
msgstr "Exibe uma apresentação com música de fundo"
#: ../contrib/slideshowMusic.lua:90
msgid "Plays music with rhythmbox if a slideshow starts"
msgstr "Toca música com o rhytmbox se uma apresentação inicia"

View File

@@ -0,0 +1,75 @@
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
#
# Marcus Gama <marcus.gama@gmail.com>, 2021.
msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2021-09-28 19:37-0300\n"
"PO-Revision-Date: 2021-10-02 05:28-0300\n"
"Last-Translator: Marcus Gama <marcus.gama@gmail.com>\n"
"Language-Team: Portuguese <darktable-dev@lists.darktable.org>\n"
"Language: pt_BR\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
"X-Generator: Lokalize 21.08.1\n"
#: ../contrib/transfer_hierarchy.lua:153
msgid "Lowest directory containing all selected images"
msgstr "Pasta de nível mais baixa contendo todas as imagens selecionadas"
#: ../contrib/transfer_hierarchy.lua:256
msgid ""
"transfer hierarchy: ERROR: existing root is out of sync -- click 'calculate' "
"to update"
msgstr ""
"transferir hierarquia: ERRO: raiz existente está fora de sincronia -- clique"
" 'calcular' para atualizar"
#: ../contrib/transfer_hierarchy.lua:260
msgid "transfer hierarchy: ERROR: destination not specified"
msgstr "transferir hierarquia: ERRO: destino não especificado"
#: ../contrib/transfer_hierarchy.lua:270
msgid "transfer hierarchy: ERROR: could not create directory: "
msgstr "transferir hierarquia: ERRO: não foi possível criar a pasta: "
#: ../contrib/transfer_hierarchy.lua:275
msgid "transfer hierarchy: ERROR: not a directory: "
msgstr "transferir hierarquia: ERRO: não é uma pasta: "
#: ../contrib/transfer_hierarchy.lua:280
msgid "transfer hierarchy: ERROR: could not create film: "
msgstr "transferir hierarquia: ERRO: não foi possível criar um filme: "
#: ../contrib/transfer_hierarchy.lua:289
#, lua-format
msgid "transfer hierarchy"
msgstr "transferir hierarquia"
#: ../contrib/transfer_hierarchy.lua:327
msgid "calculate"
msgstr "calcular"
#: ../contrib/transfer_hierarchy.lua:331
msgid "existing root"
msgstr "raiz existente"
#: ../contrib/transfer_hierarchy.lua:336
msgid "root of destination"
msgstr "raiz do destino"
#: ../contrib/transfer_hierarchy.lua:341
msgid "move"
msgstr "mover"
#: ../contrib/transfer_hierarchy.lua:346
msgid "copy"
msgstr "copiar"
#: ../contrib/transfer_hierarchy.lua:347
msgid "Copy all selected images"
msgstr "Copia todas as imagens selecionadas"

View File

@@ -0,0 +1,135 @@
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
#
# Marcus Gama <marcus.gama@gmail.com>, 2021.
msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2021-09-28 19:37-0300\n"
"PO-Revision-Date: 2021-10-02 05:38-0300\n"
"Last-Translator: Marcus Gama <marcus.gama@gmail.com>\n"
"Language-Team: Portuguese <darktable-dev@lists.darktable.org>\n"
"Language: pt_BR\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
"X-Generator: Lokalize 21.08.1\n"
#: ../contrib/video_ffmpeg.lua:243
msgid "framerate"
msgstr "taxa de quadros"
#: ../contrib/video_ffmpeg.lua:244
msgid "select framerate of output video"
msgstr "seleciona a taxa de quadros da saída de vídeo"
#: ../contrib/video_ffmpeg.lua:251
msgid "resolution"
msgstr "resolução"
#: ../contrib/video_ffmpeg.lua:252
msgid "select resolution of output video"
msgstr "seleciona a resolução da saída de vídeo"
#: ../contrib/video_ffmpeg.lua:259
msgid "codec"
msgstr "codec"
#: ../contrib/video_ffmpeg.lua:260
msgid "select codec"
msgstr "seleciona o codec"
#: ../contrib/video_ffmpeg.lua:267
msgid "format container"
msgstr "formato"
#: ../contrib/video_ffmpeg.lua:268
msgid "select format of output video"
msgstr "seleciona o formato da saída de vídeo"
#: ../contrib/video_ffmpeg.lua:280
msgid "output file destination"
msgstr "destino do arquivo de saída"
#: ../contrib/video_ffmpeg.lua:281
msgid "settings of output file destination and name"
msgstr "configurações do destino e nome do arquivo de saída"
#: ../contrib/video_ffmpeg.lua:296
msgid "Select export path"
msgstr "Selecionar caminho de exportação"
#: ../contrib/video_ffmpeg.lua:298
msgid ""
"select the target directory for the timelapse. \n"
"the filename is created automatically."
msgstr ""
"selecione a pasta alvo para o timelapse.\n"
"o nome do arquivo é criado automaticamente."
#: ../contrib/video_ffmpeg.lua:305
msgid ""
"if selected, output video will be placed in the same directory as first of "
"selected images"
msgstr ""
"se selecionado, o vídeo de saída será colocado na mesma pasta da primeira das"
" imagens "
"selecionadas"
#: ../contrib/video_ffmpeg.lua:320
msgid "override output file on conflict"
msgstr "sobrescrever arquivo de saída em caso de conflito"
#: ../contrib/video_ffmpeg.lua:321
msgid "if checked, in case of file name conflict, the file will be overwritten"
msgstr "se ativo, em caso de conflito de nome, o arquivo será sobrescrito"
#: ../contrib/video_ffmpeg.lua:329
msgid ""
"enter output file name without extension.\n"
"\n"
"You can use some placeholders:\n"
"- {time} - time in format HH-mm-ss\n"
"- {date} - date in foramt YYYY-mm-dd\n"
"- {first_file} - name of first input file\n"
"- {last_file} - name of last last_file"
msgstr ""
"insira o nome do arquivo de saída sem extensão.\n"
"\n"
"Você pode usar alguns coringas:\n"
"- {time} - tempo no formato HH-mm-ss\n"
"- {date} - data no formato AAAA-mm-dd\n"
"- {first_file} - nome do primeiro arquivo de entrada\n"
"- {last_file} - nome do último last_file"
#: ../contrib/video_ffmpeg.lua:349
msgid " open after export"
msgstr " abrir após exportar"
#: ../contrib/video_ffmpeg.lua:350
msgid "open video file after successful export"
msgstr "abre o arquivo de vídeo após ser exportado com sucesso"
#: ../contrib/video_ffmpeg.lua:377
msgid "export "
msgstr "exportar "
#: ../contrib/video_ffmpeg.lua:433
msgid "prepare merge process"
msgstr "preparar o processo de mesclagem"
#: ../contrib/video_ffmpeg.lua:436
msgid "ERROR: cannot create temp directory"
msgstr "ERRO: não foi possível criar a pasta temporária"
#: ../contrib/video_ffmpeg.lua:448
msgid "ERROR: cannot build image, see console for more info"
msgstr ""
"ERRO: não foi possível construir a imagem, veja o console para mais"
" informações"
#: ../contrib/video_ffmpeg.lua:450
msgid "SUCCESS"
msgstr "SUCESSO"

View File

@@ -34,6 +34,14 @@ local cjson = require "cjson"
du.check_min_api_version("2.0.0", "check_for_updates")
-- return data structure for script_manager
local script_data = {}
script_data.destroy = nil -- function to destory the script
script_data.destroy_method = nil -- set to hide for libs since we can't destroy them commpletely yet
script_data.restart = nil -- how to restart the (lib) script after it's been hidden - i.e. make it visible again
-- compare two version strings of the form "major.minor.patch"
-- returns -1, 0, 1 if the first version is smaller, equal, greater than the second version,
-- or nil if one or both are of the wrong format
@@ -80,6 +88,10 @@ local function compare_versions(a, b)
end
end
local function destroy()
-- nothing to destroy
end
-- local function test(a, b, r)
-- local cmp = compare_versions(a, b)
@@ -134,3 +146,6 @@ if now > (back_then + 60 * 60 * 24 * 7) then
end
end
script_data.destroy = destroy
return script_data

View File

@@ -29,8 +29,15 @@ local dt = require "darktable"
local du = require "lib/dtutils"
local gettext = dt.gettext
du.check_min_api_version("3.0.0", "copy_paste_metadata")
local CURR_API_STRING = dt.configuration.api_version_string
du.check_min_api_version("7.0.0", "copy_paste_metadata")
-- return data structure for script_manager
local script_data = {}
script_data.destroy = nil -- function to destory the script
script_data.destroy_method = nil -- set to hide for libs since we can't destroy them commpletely yet
script_data.restart = nil -- how to restart the (lib) script after it's been hidden - i.e. make it visible again
-- set this to "false" if you don't want to overwrite metadata fields
-- (title, description, creator, publisher and rights) that are already set
@@ -113,26 +120,41 @@ local function paste(images)
end
end
local function destroy()
dt.gui.libs.image.destroy_action("metadata_copy")
dt.gui.libs.image.destroy_action("metadata_paste")
dt.destroy_event("capmd1", "shortcut")
dt.destroy_event("capmd2", "shortcut")
end
dt.gui.libs.image.register_action(
_("copy metadata"),
"metadata_copy", _("copy metadata"),
function(event, images) copy(images[1]) end,
_("copy metadata of the first selected image")
)
dt.gui.libs.image.register_action(
_("paste metadata"),
"metadata_paste", _("paste metadata"),
function(event, images) paste(images) end,
_("paste metadata to the selected images")
)
dt.register_event(
"shortcut",
"capmd1", "shortcut",
function(event, shortcut) copy(dt.gui.action_images[1]) end,
"copy metadata"
)
dt.register_event(
"shortcut",
"capmd2", "shortcut",
function(event, shortcut) paste(dt.gui.action_images) end,
"paste metadata"
)
script_data.destroy = destroy
return script_data

View File

@@ -33,11 +33,23 @@ local du = require "lib/dtutils"
du.check_min_api_version("2.0.0", "delete_long_tags")
-- return data structure for script_manager
local script_data = {}
script_data.destroy = nil -- function to destory the script
script_data.destroy_method = nil -- set to hide for libs since we can't destroy them commpletely yet
script_data.restart = nil -- how to restart the (lib) script after it's been hidden - i.e. make it visible again
dt.preferences.register("delete_long_tags", "length", "integer",
"maximum length of tags to keep",
"tags longer than this get deleted on start",
666, 0, 65536)
local function destroy()
-- noting to destroy
end
local max_length = dt.preferences.read("delete_long_tags", "length", "integer")
-- deleting while iterating the tags list seems to break the iterator!
@@ -55,3 +67,7 @@ for _,name in pairs(long_tags) do
tag = dt.tags.find(name)
tag:delete()
end
script_data.destroy = destroy
return script_data

View File

@@ -31,6 +31,20 @@ local du = require "lib/dtutils"
du.check_min_api_version("5.0.0", "delete_unused_tags")
local script_data = {}
local function destroy()
-- noting to destroy
end
-- return data structure for script_manager
local script_data = {}
script_data.destroy = nil -- function to destory the script
script_data.destroy_method = nil -- set to hide for libs since we can't destroy them commpletely yet
script_data.restart = nil -- how to restart the (lib) script after it's been hidden - i.e. make it visible again
-- deleting while iterating the tags list seems to break the iterator!
local unused_tags = {}
@@ -45,3 +59,6 @@ for _,name in pairs(unused_tags) do
tag = dt.tags.find(name)
tag:delete()
end
script_data.destroy = destroy
return script_data

View File

@@ -38,11 +38,18 @@ local df = require "lib/dtutils.file"
local dtsys = require "lib/dtutils.system"
local PS = dt.configuration.running_os == "windows" and "\\" or "/"
local CURR_API_STRING = dt.configuration.api_version_string
local gettext = dt.gettext
du.check_min_api_version("3.0.0", "enfuse")
du.check_min_api_version("7.0.0", "enfuse")
-- return data structure for script_manager
local script_data = {}
script_data.destroy = nil -- function to destory the script
script_data.destroy_method = nil -- set to hide for libs since we can't destroy them commpletely yet
script_data.restart = nil -- how to restart the (lib) script after it's been hidden - i.e. make it visible again
-- Tell gettext where to find the .mo file translating messages for a particular domain
gettext.bindtextdomain("enfuse",dt.configuration.config_dir..PS .. "lua" .. PS .. "locale" .. PS)
@@ -76,6 +83,15 @@ local function install_module()
enf.module_installed = true
end
end
local function destroy()
dt.gui.libs["enfuse"].visible = false
end
local function restart()
dt.gui.libs["enfuse"].visible = true
end
-- add a new lib
-- is enfuse installed?
local enfuse_installed = df.check_if_bin_exists("enfuse")
@@ -269,7 +285,7 @@ if enfuse_installed then
else
if not enf.event_registered then
dt.register_event(
"view-changed",
"enfuse", "view-changed",
function(event, old_view, new_view)
if new_view.name == "lighttable" and old_view.name == "darkroom" then
install_module()
@@ -285,5 +301,11 @@ else
dt.print(_("Could not find enfuse executable. Not loading enfuse exporter..."))
end
script_data.destroy = destroy
script_data.restart = restart
script_data.destroy_method = "hide"
script_data.show = restart
return script_data
-- vim: shiftwidth=2 expandtab tabstop=2 cindent syntax=lua
-- kate: hl Lua;

View File

@@ -38,8 +38,15 @@ local dt = require "darktable"
local du = require "lib/dtutils"
require "darktable.debug"
du.check_min_api_version("2.1.0", "generate_image_txt")
local CURR_API_STRING = dt.configuration.api_version_string
du.check_min_api_version("7.0.0", "generate_image_txt")
-- return data structure for script_manager
local script_data = {}
script_data.destroy = nil -- function to destory the script
script_data.destroy_method = nil -- set to hide for libs since we can't destroy them commpletely yet
script_data.restart = nil -- how to restart the (lib) script after it's been hidden - i.e. make it visible again
dt.preferences.register("generate_image_txt",
"enabled",
@@ -62,11 +69,15 @@ local check_command = function(command)
end
end
local function destroy()
dt.destroy_event("gen_img_txt", "mouse-over-image-changed")
end
local command_setting = dt.preferences.read("generate_image_txt", "command", "string")
check_command(command_setting)
dt.register_event("mouse-over-image-changed",
dt.register_event("gen_img_txt", "mouse-over-image-changed",
function(event, img)
-- no need to waste processing time if the image has a txt file already
if not img or img.has_txt or not dt.preferences.read("generate_image_txt", "enabled", "bool") then
@@ -105,6 +116,9 @@ dt.register_event("mouse-over-image-changed",
end
)
script_data.destroy = destroy
return script_data
-- vim: shiftwidth=2 expandtab tabstop=2 cindent
-- kate: tab-indents: off; indent-width 2; replace-tabs on; remove-trailing-space on;

View File

@@ -31,8 +31,15 @@ This plugin will add a widget at the bottom of the left column in lighttable mod
local dt = require "darktable"
local du = require "lib/dtutils"
du.check_min_api_version("2.0.0", "image_path_in_ui")
local CURR_API_STRING = dt.configuration.api_version_string
du.check_min_api_version("7.0.0", "image_path_in_ui")
-- return data structure for script_manager
local script_data = {}
script_data.destroy = nil -- function to destory the script
script_data.destroy_method = nil -- set to hide for libs since we can't destroy them commpletely yet
script_data.restart = nil -- how to restart the (lib) script after it's been hidden - i.e. make it visible again
local ipiu = {}
ipiu.module_installed = false
@@ -42,8 +49,8 @@ local main_label = dt.new_widget("label"){selectable = true, ellipsize = "middle
local function install_module()
if not ipiu.module_installed then
dt.register_lib("image_path_no_ui", "selected images path", true, false,{
[dt.gui.views.lighttable] = {"DT_UI_CONTAINER_PANEL_LEFT_CENTER", 300}
dt.register_lib("image_path_no_ui","selected images path",true,false,{
[dt.gui.views.lighttable] = {"DT_UI_CONTAINER_PANEL_LEFT_CENTER",300}
}, main_label
)
ipiu.module_installed = true
@@ -67,6 +74,20 @@ local function reset_widget()
main_label.label = result
end
local function destroy()
dt.gui.libs["image_path_no_ui"].visible = false
dt.destroy_event("ipiu", "mouse-over-image-changed")
end
local function restart()
dt.register_event("ipiu", "mouse-over-image-changed", reset_widget);
dt.gui.libs["image_path_no_ui"].visible = true
end
local function show()
dt.gui.libs["image_path_no_ui"].visible = true
end
main_label.reset_callback = reset_widget
if dt.gui.current_view().id == "lighttable" then
@@ -85,7 +106,13 @@ else
end
end
dt.register_event("mouse-over-image-changed", reset_widget);
dt.register_event("ipiu", "mouse-over-image-changed", reset_widget);
script_data.destroy = destroy
script_data.restart = restart
script_data.destroy_method = "hide"
script_data.show = show
return script_data
--
-- vim: shiftwidth=2 expandtab tabstop=2 cindent syntax=lua

View File

@@ -34,7 +34,6 @@ local dt = require "darktable"
local import_filter_list = {}
local n_import_filters = 1
local CURR_API_STRING = dt.configuration.api_version_string
-- allow changing the filter from the preferences
dt.preferences.register("import_filter_manager", "active_filter", "string",
@@ -57,7 +56,7 @@ dt.gui.libs.import.register_widget(filter_dropdown)
-- this is just a wrapper which calls the active import filter
dt.register_event("pre-import", function(event, images)
dt.register_event("ifm", "pre-import", function(event, images)
local active_filter = dt.preferences.read("import_filter_manager", "active_filter", "string")
if active_filter == "" then return end
local callback = import_filter_list[active_filter]

View File

@@ -36,25 +36,43 @@ increase it if you need more temporary selection buffers
local dt = require "darktable"
local du = require "lib/dtutils"
du.check_min_api_version("2.0.0", "save_selection")
local CURR_API_STRING = dt.configuration.api_version_string
du.check_min_api_version("7.0.0", "save_selection")
-- return data structure for script_manager
local script_data = {}
script_data.destroy = nil -- function to destory the script
script_data.destroy_method = nil -- set to hide for libs since we can't destroy them commpletely yet
script_data.restart = nil -- how to restart the (lib) script after it's been hidden - i.e. make it visible again
local buffer_count = 5
for i=1,buffer_count do
local function destroy()
for i = 1, buffer_count do
dt.destroy_event("save_selection save " .. i, "shortcut")
dt.destroy_event("save_selection restore " .. i, "shortcut")
end
dt.destroy_event("save_selection switch", "shortcut")
end
for i = 1, buffer_count do
local saved_selection
dt.register_event("shortcut", function()
dt.register_event("save_selection save " .. i, "shortcut", function()
saved_selection = dt.gui.selection()
end,"save to buffer "..i)
dt.register_event("shortcut", function()
end, "save to buffer " .. i)
dt.register_event("save_selection restore " .. i, "shortcut", function()
dt.gui.selection(saved_selection)
end,"restore from buffer "..i)
end, "restore from buffer " .. i)
end
local bounce_buffer = {}
dt.register_event("shortcut", function()
dt.register_event("save_selection switch", "shortcut", function()
bounce_buffer = dt.gui.selection(bounce_buffer)
end,"switch selection with temporary buffer")
end, "switch selection with temporary buffer")
script_data.destroy = destroy
return script_data
--
-- vim: shiftwidth=2 expandtab tabstop=2 cindent syntax=lua

View File

@@ -36,7 +36,15 @@ Plugin allows you to choose how many thumbnails you need per row
local dt = require "darktable"
local du = require "lib/dtutils"
du.check_min_api_version("2.0.0", "selection_to_pdf")
du.check_min_api_version("7.0.0", "selection_to_pdf")
-- return data structure for script_manager
local script_data = {}
script_data.destroy = nil -- function to destory the script
script_data.destroy_method = nil -- set to hide for libs since we can't destroy them commpletely yet
script_data.restart = nil -- how to restart the (lib) script after it's been hidden - i.e. make it visible again
dt.preferences.register
("selection_to_pdf","Open with","string",
@@ -101,6 +109,12 @@ local function thumbnail(latexfile,i,image,file)
my_write(latexfile,"\\end{minipage}\\quad\n")
end
local function destroy()
dt.print_log("destroying storage")
dt.destroy_storage("export_pdf")
dt.print_log("done destroying")
end
dt.register_storage("export_pdf","Export thumbnails to pdf",
nil,
function(storage,image_table)
@@ -168,5 +182,8 @@ dt.register_storage("export_pdf","Export thumbnails to pdf",
end
end,nil,nil,widget)
script_data.destroy = destroy
return script_data
--
-- vim: shiftwidth=2 expandtab tabstop=2 cindent syntax=lua

View File

@@ -32,12 +32,19 @@ local dt = require "darktable"
local du = require "lib/dtutils"
local df = require "lib/dtutils.file"
du.check_min_api_version("5.0.0", "executable_manager")
du.check_min_api_version("7.0.0", "executable_manager")
-- return data structure for script_manager
local script_data = {}
script_data.destroy = nil -- function to destory the script
script_data.destroy_method = nil -- set to hide for libs since we can't destroy them commpletely yet
script_data.restart = nil -- how to restart the (lib) script after it's been hidden - i.e. make it visible again
local PS = dt.configuration.running_os == "windows" and "\\" or "/"
local gettext = dt.gettext
local CURR_API_STRING = dt.configuration.api_version_string
gettext.bindtextdomain("executable_manager",dt.configuration.config_dir.."/lua/locale/")
@@ -111,6 +118,15 @@ local function install_module()
exec_man.module_installed = true
end
end
local function destroy()
dt.gui.libs["executable_manager"].visible = false
end
local function restart()
dt.gui.libs["executable_manager"].visible = true
end
-- - - - - - - - - - - - - - - - - - - - - - - - - - - -
-- M A I N P R O G R A M
-- - - - - - - - - - - - - - - - - - - - - - - - - - - -
@@ -215,7 +231,7 @@ if dt.gui.current_view().id == "lighttable" then
else
if not exec_man.event_registered then
dt.register_event(
"view-changed",
"executable_manager", "view-changed",
function(event, old_view, new_view)
if new_view.name == "lighttable" and old_view.name == "darkroom" then
install_module()
@@ -225,3 +241,10 @@ else
exec_man.event_registered = true
end
end
script_data.destroy = destroy
script_data.restart = restart
script_data.destroy_method = "hide"
script_data.show = restart
return script_data

View File

@@ -32,6 +32,10 @@ local dtsys = require "lib/dtutils.system"
du.check_min_api_version("5.0.0", "gen_I18n_mo")
local function destroy()
-- nothing to destroy
end
-- figure out the path separator
local PS = dt.configuration.running_os == "windows" and "\\" or "/"
@@ -97,3 +101,8 @@ dt.preferences.register("executable_paths", "msgfmt", -- name
is_directory = false,
}
)
local script_data = {}
script_data.destroy = destroy
return script_data

View File

@@ -12,6 +12,10 @@ local libname = nil
du.check_min_api_version("3.0.0", "get_lib_manpages")
local function destroy()
-- nothing to destroy
end
local keys = {"Name", "Synopsis", "Usage", "Description", "Return_Value", "Limitations",
"Example", "See_Also", "Reference", "License", "Copyright"}
@@ -74,3 +78,7 @@ for line in output:lines() do
libname = nil
end
local script_data = {}
script_data.destroy = destroy
return script_data

View File

@@ -9,6 +9,10 @@ local du = require "lib/dtutils"
du.check_min_api_version("3.0.0", "get_libdoc")
local function destroy()
-- nothing to destroy
end
local keys = {"Name", "Synopsis", "Usage", "Description", "Return_Value", "Limitations",
"Example", "See_Also", "Reference", "License", "Copyright"}
@@ -48,3 +52,7 @@ for line in output:lines() do
end
end
local script_data = {}
script_data.destroy = destroy
return script_data

Some files were not shown because too many files have changed in this diff Show More