Skip to content

Commit 0116c18

Browse files
committed
fix unloading the plugin
1 parent 3992fcb commit 0116c18

File tree

2 files changed

+52
-10
lines changed

2 files changed

+52
-10
lines changed

arho_feature_template/core/plan_manager.py

+32-6
Original file line numberDiff line numberDiff line change
@@ -91,8 +91,8 @@ def __init__(self):
9191
self.new_feature_dock.hide()
9292

9393
# Initialize digitize tools
94-
self.digitize_map_tool = PlanDigitizeMapTool(iface.mapCanvas(), iface.cadDockWidget())
95-
self.digitize_map_tool.digitizingCompleted.connect(self._plan_geom_digitized)
94+
self.plan_digitize_map_tool = PlanDigitizeMapTool(iface.mapCanvas(), iface.cadDockWidget())
95+
self.plan_digitize_map_tool.digitizingCompleted.connect(self._plan_geom_digitized)
9696

9797
self.feature_digitize_map_tool = None
9898
self.initialize_feature_digitize_map_tool()
@@ -103,6 +103,10 @@ def __init__(self):
103103
)
104104
self.inspect_plan_feature_tool.edit_feature_requested.connect(self.edit_plan_feature)
105105

106+
# Initialize lambda service
107+
self.lambda_service = LambdaService()
108+
self.lambda_service.jsons_received.connect(self.save_plan_jsons)
109+
106110
def toggle_identify_plan_features(self, activate: bool): # noqa: FBT001
107111
if activate:
108112
self.previous_map_tool = iface.mapCanvas().mapTool()
@@ -152,8 +156,8 @@ def add_new_plan(self):
152156
self.set_active_plan(None)
153157

154158
plan_layer.startEditing()
155-
self.digitize_map_tool.setLayer(plan_layer)
156-
iface.mapCanvas().setMapTool(self.digitize_map_tool)
159+
self.plan_digitize_map_tool.setLayer(plan_layer)
160+
iface.mapCanvas().setMapTool(self.plan_digitize_map_tool)
157161

158162
def edit_plan(self):
159163
plan_layer = PlanLayer.get_from_project()
@@ -306,8 +310,6 @@ def get_plan_json(self):
306310
QMessageBox.critical(None, "Virhe", "Ei aktiivista kaavaa.")
307311
return
308312

309-
self.lambda_service = LambdaService()
310-
self.lambda_service.jsons_received.connect(self.save_plan_jsons)
311313
self.lambda_service.serialize_plan(plan_id)
312314

313315
def save_plan_jsons(self, plan_json, outline_json):
@@ -342,6 +344,30 @@ def create_new_regulation_group(self):
342344
else:
343345
save_regulation_group(new_regulation_group_form.model)
344346

347+
def unload(self):
348+
# Lambda service
349+
self.lambda_service.jsons_received.disconnect(self.save_plan_jsons)
350+
self.lambda_service.deleteLater()
351+
352+
# Feature digitize tool
353+
if self.feature_digitize_map_tool:
354+
self.feature_digitize_map_tool.digitizingCompleted.disconnect()
355+
self.feature_digitize_map_tool.digitizingFinished.disconnect()
356+
self.feature_digitize_map_tool.deleteLater()
357+
358+
# Plan digitize tool
359+
self.plan_digitize_map_tool.digitizingCompleted.disconnect(self._plan_geom_digitized)
360+
self.plan_digitize_map_tool.deleteLater()
361+
362+
# Inspect plan feature tool
363+
self.inspect_plan_feature_tool.edit_feature_requested.disconnect(self.edit_plan_feature)
364+
self.inspect_plan_feature_tool.deleteLater()
365+
366+
# New feature dock
367+
self.new_feature_dock.tool_activated.disconnect(self.add_new_plan_feature)
368+
iface.removeDockWidget(self.new_feature_dock)
369+
self.new_feature_dock.deleteLater()
370+
345371

346372
def regulation_group_library_from_active_plan() -> RegulationGroupLibrary:
347373
category_features = list(PlanRegulationGroupTypeLayer.get_features())

arho_feature_template/plugin.py

+20-4
Original file line numberDiff line numberDiff line change
@@ -134,7 +134,7 @@ def initGui(self) -> None: # noqa N802
134134

135135
self.plan_manager.new_feature_dock.visibilityChanged.connect(self.dock_visibility_changed)
136136

137-
iface.mapCanvas().mapToolSet.connect(self.plan_manager.digitize_map_tool.deactivate)
137+
iface.mapCanvas().mapToolSet.connect(self.plan_manager.plan_digitize_map_tool.deactivate)
138138

139139
self.validation_dock = ValidationDock()
140140
iface.addDockWidget(Qt.RightDockWidgetArea, self.validation_dock)
@@ -248,14 +248,30 @@ def open_settings(self):
248248

249249
def unload(self) -> None:
250250
"""Removes the plugin menu item and icon from QGIS GUI."""
251+
# Handle signals
252+
self.plan_manager.new_feature_dock.visibilityChanged.disconnect()
253+
iface.mapCanvas().mapToolSet.disconnect()
254+
255+
# Handle actions
251256
for action in self.actions:
252257
iface.removePluginMenu(Plugin.name, action)
253258
iface.removeToolBarIcon(action)
259+
action.deleteLater()
260+
self.actions.clear()
261+
262+
# Handle toolbar
254263
iface.mainWindow().removeToolBar(self.toolbar)
255-
teardown_logger(Plugin.name)
264+
self.toolbar = None
256265

257-
self.plan_manager.new_feature_dock.close()
258-
self.validation_dock.close()
266+
# Handle plan manager
267+
self.plan_manager.unload()
268+
269+
# Handle validation dock
270+
iface.removeDockWidget(self.validation_dock)
271+
self.validation_dock.deleteLater()
272+
273+
# Handle logger
274+
teardown_logger(Plugin.name)
259275

260276
def dock_visibility_changed(self, visible: bool) -> None: # noqa: FBT001
261277
self.new_feature_dock_action.setChecked(visible)

0 commit comments

Comments
 (0)