Skip to content

Commit 912ae93

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 b613cc2 commit 912ae93

File tree

1 file changed

+39
-18
lines changed

1 file changed

+39
-18
lines changed

tools/executable_manager.lua

Lines changed: 39 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,10 @@ local gettext = dt.gettext
4040

4141
gettext.bindtextdomain("executable_manager",dt.configuration.config_dir.."/lua/locale/")
4242

43+
local exec_man = {} -- our own namespace
44+
exec_man.module_installed = false
45+
exec_man.event_registered = false
46+
4347
-- - - - - - - - - - - - - - - - - - - - - - - - - - - -
4448
-- F U N C T I O N S
4549
-- - - - - - - - - - - - - - - - - - - - - - - - - - - -
@@ -86,12 +90,30 @@ local function update_combobox_choices(combobox, choice_table, selected)
8690
combobox.value = selected
8791
end
8892

93+
local function install_module()
94+
if not exec_man.module_installed then
95+
dt.register_lib(
96+
"executable_manager", -- Module name
97+
"executable manager", -- Visible name
98+
true, -- expandable
99+
false, -- resetable
100+
{[dt.gui.views.lighttable] = {"DT_UI_CONTAINER_PANEL_LEFT_BOTTOM", 100}}, -- containers
101+
dt.new_widget("box") -- widget
102+
{
103+
orientation = "vertical",
104+
exec_man.selector,
105+
exec_man.stack,
106+
},
107+
nil,-- view_enter
108+
nil -- view_leave
109+
)
110+
exec_man.module_installed = true
111+
end
112+
end
89113
-- - - - - - - - - - - - - - - - - - - - - - - - - - - -
90114
-- M A I N P R O G R A M
91115
-- - - - - - - - - - - - - - - - - - - - - - - - - - - -
92116

93-
local exec_man = {} -- our own namespace
94-
95117
local DARKTABLERC = dt.configuration.config_dir .. PS .. "darktablerc"
96118

97119

@@ -187,19 +209,18 @@ update_combobox_choices(exec_man.selector, exec_table, 1)
187209
-- register the lib
188210

189211

190-
dt.register_lib(
191-
"executable_manager", -- Module name
192-
"executable manager", -- Visible name
193-
true, -- expandable
194-
false, -- resetable
195-
{[dt.gui.views.lighttable] = {"DT_UI_CONTAINER_PANEL_LEFT_BOTTOM", 100}}, -- containers
196-
dt.new_widget("box") -- widget
197-
{
198-
orientation = "vertical",
199-
exec_man.selector,
200-
exec_man.stack,
201-
},
202-
nil,-- view_enter
203-
nil -- view_leave
204-
)
205-
212+
if dt.gui.current_view().name == "lighttable" then
213+
install_module()
214+
else
215+
if not exec_man.event_registered then
216+
dt.register_event(
217+
"view-changed",
218+
function(event, old_view, new_view)
219+
if new_view.name == "lighttable" and old_view.name == "darkroom" then
220+
install_module()
221+
end
222+
end
223+
)
224+
exec_man.event_registered = true
225+
end
226+
end

0 commit comments

Comments
 (0)