Skip to content

Commit 5f5ad42

Browse files
committed
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.
1 parent 52acdb9 commit 5f5ad42

File tree

1 file changed

+27
-2
lines changed

1 file changed

+27
-2
lines changed

contrib/rename-tags.lua

Lines changed: 27 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,10 @@ local debug = require "darktable.debug"
3535
-- check API version
3636
du.check_min_api_version("3.0.0", "rename-tags")
3737

38+
local rt = {}
39+
rt.module_installed = false
40+
rt.event_registered = false
41+
3842
-- GUI entries
3943
local old_tag = darktable.new_widget("entry") { tooltip = "Enter old tag" }
4044
local new_tag = darktable.new_widget("entry") { tooltip = "Enter new tag" }
@@ -99,6 +103,13 @@ local function rename_tags()
99103
rename_reset()
100104
end
101105

106+
local function install_module()
107+
if not rt.module_installed then
108+
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)
109+
rt.module_installed = true
110+
end
111+
end
112+
102113
-- GUI
103114
local old_widget = darktable.new_widget ("box") {
104115
orientation = "horizontal",
@@ -112,14 +123,28 @@ local new_widget = darktable.new_widget ("box") {
112123
new_tag
113124
}
114125

115-
local rename_widget = darktable.new_widget ("box") {
126+
rt.rename_widget = darktable.new_widget ("box") {
116127
orientation = "vertical",
117128
reset_callback = rename_reset,
118129
old_widget,
119130
new_widget,
120131
darktable.new_widget("button") { label = "Go", clicked_callback = rename_tags }
121132
}
122133

134+
if darktable.gui.current_view().name == "lighttable" then
135+
install_module()
136+
else
137+
if not rt.event_registered then
138+
darktable.register_event(
139+
"view-changed",
140+
function(event, old_view, new_view)
141+
if new_view.name == "lighttable" and old_view.name == "darkroom" then
142+
install_module()
143+
end
144+
end
145+
)
146+
rt.event_registered = true
147+
end
148+
end
123149

124-
darktable.register_lib ("rename_tags", "rename tag", true, true, {[darktable.gui.views.lighttable] = {"DT_UI_CONTAINER_PANEL_RIGHT_CENTER", 20},}, rename_widget, nil, nil)
125150

0 commit comments

Comments
 (0)