Skip to content

Commit 432b6b5

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 5f5ad42 commit 432b6b5

File tree

1 file changed

+41
-11
lines changed

1 file changed

+41
-11
lines changed

contrib/geoToolbox.lua

Lines changed: 41 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,12 @@ local function _(msgid)
4040
return gettext.dgettext("geoToolbox", msgid)
4141
end
4242

43+
44+
local gT = {}
45+
gT.module_installed = false
46+
gT.event_registered = false
47+
48+
4349
-- <GUI>
4450
local labelDistance = dt.new_widget("label")
4551
labelDistance.label = _("Distance:")
@@ -572,20 +578,30 @@ local function altitude_profile()
572578

573579
end
574580

581+
local function install_module()
582+
if not gT.module_installed then
583+
dt.register_lib(
584+
"geoToolbox", -- Module name
585+
"geo toolbox", -- name
586+
true, -- expandable
587+
false, -- resetable
588+
{[dt.gui.views.lighttable] = {"DT_UI_CONTAINER_PANEL_RIGHT_CENTER", 100}}, -- containers
589+
gT.widget,
590+
nil,-- view_enter
591+
nil -- view_leave
592+
)
593+
gT.module_installed = true
594+
end
595+
end
596+
575597

576598
local separator = dt.new_widget("separator"){}
577599
local separator2 = dt.new_widget("separator"){}
578600
local separator3 = dt.new_widget("separator"){}
579601
local separator4 = dt.new_widget("separator"){}
580602
local separator5 = dt.new_widget("separator"){}
581603

582-
dt.register_lib(
583-
"geoToolbox", -- Module name
584-
"geo toolbox", -- name
585-
true, -- expandable
586-
false, -- resetable
587-
{[dt.gui.views.lighttable] = {"DT_UI_CONTAINER_PANEL_RIGHT_CENTER", 100}}, -- containers
588-
dt.new_widget("box")
604+
gT.widget = dt.new_widget("box")
589605
{
590606
orientation = "vertical",
591607
dt.new_widget("button")
@@ -664,10 +680,24 @@ dt.register_lib(
664680
clicked_callback = altitude_profile
665681
},
666682
labelDistance
667-
},
668-
nil,-- view_enter
669-
nil -- view_leave
670-
)
683+
}
684+
685+
686+
if dt.gui.current_view().name == "lighttable" then
687+
install_module()
688+
else
689+
if not gT.event_registered then
690+
dt.register_event(
691+
"view-changed",
692+
function(event, old_view, new_view)
693+
if new_view.name == "lighttable" and old_view.name == "darkroom" then
694+
install_module()
695+
end
696+
end
697+
)
698+
gT.event_registered = true
699+
end
700+
end
671701

672702
-- Preferences
673703
dt.preferences.register("geoToolbox",

0 commit comments

Comments
 (0)