@@ -40,6 +40,10 @@ local gettext = dt.gettext
40
40
41
41
gettext .bindtextdomain (" executable_manager" ,dt .configuration .config_dir .. " /lua/locale/" )
42
42
43
+ local exec_man = {} -- our own namespace
44
+ exec_man .module_installed = false
45
+ exec_man .event_registered = false
46
+
43
47
-- - - - - - - - - - - - - - - - - - - - - - - - - - - -
44
48
-- F U N C T I O N S
45
49
-- - - - - - - - - - - - - - - - - - - - - - - - - - - -
@@ -86,12 +90,30 @@ local function update_combobox_choices(combobox, choice_table, selected)
86
90
combobox .value = selected
87
91
end
88
92
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
89
113
-- - - - - - - - - - - - - - - - - - - - - - - - - - - -
90
114
-- M A I N P R O G R A M
91
115
-- - - - - - - - - - - - - - - - - - - - - - - - - - - -
92
116
93
- local exec_man = {} -- our own namespace
94
-
95
117
local DARKTABLERC = dt .configuration .config_dir .. PS .. " darktablerc"
96
118
97
119
@@ -187,19 +209,18 @@ update_combobox_choices(exec_man.selector, exec_table, 1)
187
209
-- register the lib
188
210
189
211
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