diff --git a/tools/executable_manager.lua b/tools/executable_manager.lua index f45ecb6..2bbe392 100644 --- a/tools/executable_manager.lua +++ b/tools/executable_manager.lua @@ -40,6 +40,10 @@ local gettext = dt.gettext gettext.bindtextdomain("executable_manager",dt.configuration.config_dir.."/lua/locale/") +local exec_man = {} -- our own namespace +exec_man.module_installed = false +exec_man.event_registered = false + -- - - - - - - - - - - - - - - - - - - - - - - - - - - - -- F U N C T I O N S -- - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -86,12 +90,30 @@ local function update_combobox_choices(combobox, choice_table, selected) combobox.value = selected end +local function install_module() + if not exec_man.module_installed then + dt.register_lib( + "executable_manager", -- Module name + "executable manager", -- Visible name + true, -- expandable + false, -- resetable + {[dt.gui.views.lighttable] = {"DT_UI_CONTAINER_PANEL_LEFT_BOTTOM", 100}}, -- containers + dt.new_widget("box") -- widget + { + orientation = "vertical", + exec_man.selector, + exec_man.stack, + }, + nil,-- view_enter + nil -- view_leave + ) + exec_man.module_installed = true + end +end -- - - - - - - - - - - - - - - - - - - - - - - - - - - - -- M A I N P R O G R A M -- - - - - - - - - - - - - - - - - - - - - - - - - - - - -local exec_man = {} -- our own namespace - local DARKTABLERC = dt.configuration.config_dir .. PS .. "darktablerc" @@ -187,19 +209,18 @@ update_combobox_choices(exec_man.selector, exec_table, 1) -- register the lib -dt.register_lib( - "executable_manager", -- Module name - "executable manager", -- Visible name - true, -- expandable - false, -- resetable - {[dt.gui.views.lighttable] = {"DT_UI_CONTAINER_PANEL_LEFT_BOTTOM", 100}}, -- containers - dt.new_widget("box") -- widget - { - orientation = "vertical", - exec_man.selector, - exec_man.stack, - }, - nil,-- view_enter - nil -- view_leave -) - +if dt.gui.current_view().name == "lighttable" then + install_module() +else + if not exec_man.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 + ) + exec_man.event_registered = true + end +end