Skip to content

Commit b613cc2

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 dfb8d4e commit b613cc2

File tree

1 file changed

+33
-10
lines changed

1 file changed

+33
-10
lines changed

contrib/face_recognition.lua

Lines changed: 33 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,8 @@ local OUTPUT = dt.configuration.tmp_dir .. PS .. "facerecognition.txt"
5555
-- namespace
5656

5757
local fc = {}
58+
fc.module_installed = false
59+
fc.event_registered = false
5860

5961
-- ensure we meet the minimum api
6062
du.check_min_api_version("5.0.0", "face_recognition")
@@ -337,6 +339,22 @@ local function face_recognition ()
337339
end
338340
end
339341

342+
local function install_module()
343+
if not fc.module_installed then
344+
dt.register_lib(
345+
"face_recognition", -- Module name
346+
_("face recognition"), -- Visible name
347+
true, -- expandable
348+
true, -- resetable
349+
{[dt.gui.views.lighttable] = {"DT_UI_CONTAINER_PANEL_RIGHT_CENTER", 300}}, -- containers
350+
fc.widget,
351+
nil,-- view_enter
352+
nil -- view_leave
353+
)
354+
fc.module_installed = true
355+
end
356+
end
357+
340358
-- build the interface
341359

342360
fc.unknown_tag = dt.new_widget("entry"){
@@ -466,16 +484,21 @@ fc.widget = dt.new_widget("box"){
466484
table.unpack(widgets),
467485
}
468486

469-
dt.register_lib(
470-
"face_recognition", -- Module name
471-
_("face recognition"), -- Visible name
472-
true, -- expandable
473-
true, -- resetable
474-
{[dt.gui.views.lighttable] = {"DT_UI_CONTAINER_PANEL_RIGHT_CENTER", 300}}, -- containers
475-
fc.widget,
476-
nil,-- view_enter
477-
nil -- view_leave
478-
)
487+
if dt.gui.current_view().name == "lighttable" then
488+
install_module()
489+
else
490+
if not fc.event_registered then
491+
dt.register_event(
492+
"view-changed",
493+
function(event, old_view, new_view)
494+
if new_view.name == "lighttable" and old_view.name == "darkroom" then
495+
install_module()
496+
end
497+
end
498+
)
499+
fc.event_registered = true
500+
end
501+
end
479502

480503
fc.tolerance.value = dt.preferences.read(MODULE, "tolerance", "float")
481504

0 commit comments

Comments
 (0)