Skip to content

Commit 880ec7f

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 432b6b5 commit 880ec7f

File tree

1 file changed

+51
-23
lines changed

1 file changed

+51
-23
lines changed

contrib/gpx_export.lua

Lines changed: 51 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,10 @@ local function _(msgid)
3636
return gettext.dgettext("gpx_export", msgid)
3737
end
3838

39+
local gpx = {}
40+
gpx.module_installed = false
41+
gpx.event_registered = false
42+
3943
local path_entry = dt.new_widget("entry")
4044
{
4145
text = dt.preferences.read("gpx_exporter", "gpxExportPath", "string"),
@@ -127,31 +131,55 @@ local function create_gpx_file()
127131
end
128132
end
129133

130-
dt.register_lib(
131-
"gpx_exporter",
132-
"gpx export",
133-
true, -- expandable
134-
true, -- resetable
135-
{[dt.gui.views.lighttable] = {"DT_UI_CONTAINER_PANEL_RIGHT_CENTER", 100}}, -- containers
134+
local function install_module()
135+
if not gpx.module_installed then
136+
dt.register_lib(
137+
"gpx_exporter",
138+
"gpx export",
139+
true, -- expandable
140+
true, -- resetable
141+
{[dt.gui.views.lighttable] = {"DT_UI_CONTAINER_PANEL_RIGHT_CENTER", 100}}, -- containers
142+
gpx.widget,
143+
nil,-- view_enter
144+
nil -- view_leave
145+
)
146+
gpx.module_installed = true
147+
end
148+
end
149+
150+
gpx.widget = dt.new_widget("box")
151+
{
152+
orientation = "vertical",
153+
dt.new_widget("button")
154+
{
155+
label = _("export"),
156+
tooltip = _("export gpx file"),
157+
clicked_callback = create_gpx_file
158+
},
136159
dt.new_widget("box")
137160
{
138-
orientation = "vertical",
139-
dt.new_widget("button")
161+
orientation = "horizontal",
162+
dt.new_widget("label")
140163
{
141-
label = _("export"),
142-
tooltip = _("export gpx file"),
143-
clicked_callback = create_gpx_file
144-
},
145-
dt.new_widget("box")
146-
{
147-
orientation = "horizontal",
148-
dt.new_widget("label")
149-
{
150-
label = _("file:"),
151-
},
152-
path_entry
164+
label = _("file:"),
153165
},
166+
path_entry
154167
},
155-
nil,-- view_enter
156-
nil -- view_leave
157-
)
168+
}
169+
170+
171+
if dt.gui.current_view().name == "lighttable" then
172+
install_module()
173+
else
174+
if not gpx.event_registered then
175+
dt.register_event(
176+
"view-changed",
177+
function(event, old_view, new_view)
178+
if new_view.name == "lighttable" and old_view.name == "darkroom" then
179+
install_module()
180+
end
181+
end
182+
)
183+
gpx.event_registered = true
184+
end
185+
end

0 commit comments

Comments
 (0)