Added check to ensure we are in lighttable view prior to callling darktable.register_lib. If darktable was invoked in single image (darkroom) mode, then an event handler is registered to detect the change from darkroom mode to lighttable mode so that we can then call darktable.register_lib.

This commit is contained in:
Bill Ferguson
2020-08-09 01:01:33 -04:00
parent 52acdb9036
commit 5f5ad426bf

View File

@@ -35,6 +35,10 @@ local debug = require "darktable.debug"
-- check API version
du.check_min_api_version("3.0.0", "rename-tags")
local rt = {}
rt.module_installed = false
rt.event_registered = false
-- GUI entries
local old_tag = darktable.new_widget("entry") { tooltip = "Enter old tag" }
local new_tag = darktable.new_widget("entry") { tooltip = "Enter new tag" }
@@ -99,6 +103,13 @@ local function rename_tags()
rename_reset()
end
local function install_module()
if not rt.module_installed then
darktable.register_lib ("rename_tags", "rename tag", true, true, {[darktable.gui.views.lighttable] = {"DT_UI_CONTAINER_PANEL_RIGHT_CENTER", 20},}, rt.rename_widget, nil, nil)
rt.module_installed = true
end
end
-- GUI
local old_widget = darktable.new_widget ("box") {
orientation = "horizontal",
@@ -112,7 +123,7 @@ local new_widget = darktable.new_widget ("box") {
new_tag
}
local rename_widget = darktable.new_widget ("box") {
rt.rename_widget = darktable.new_widget ("box") {
orientation = "vertical",
reset_callback = rename_reset,
old_widget,
@@ -120,6 +131,20 @@ local rename_widget = darktable.new_widget ("box") {
darktable.new_widget("button") { label = "Go", clicked_callback = rename_tags }
}
if darktable.gui.current_view().name == "lighttable" then
install_module()
else
if not rt.event_registered then
darktable.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
)
rt.event_registered = true
end
end
darktable.register_lib ("rename_tags", "rename tag", true, true, {[darktable.gui.views.lighttable] = {"DT_UI_CONTAINER_PANEL_RIGHT_CENTER", 20},}, rename_widget, nil, nil)