Skip to content

Commit c8871d1

Browse files
committed
fix unloading of plugin widgets
1 parent c5dd12a commit c8871d1

File tree

3 files changed

+33
-13
lines changed

3 files changed

+33
-13
lines changed

arho_feature_template/core/plan_manager.py

+11-9
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@
5151
from arho_feature_template.utils.misc_utils import (
5252
LANGUAGE,
5353
check_layer_changes,
54+
disconnect_signal,
5455
get_active_plan_id,
5556
handle_unsaved_changes,
5657
iface,
@@ -405,33 +406,34 @@ def save_plan_jsons(self, plan_json, outline_json):
405406
)
406407

407408
def unload(self):
409+
# Set pan map tool as active (to deactivate our custom tools to avoid errors)
410+
iface.actionPan().trigger()
411+
408412
# Lambda service
409-
self.lambda_service.jsons_received.disconnect(self.save_plan_jsons)
413+
disconnect_signal(self.lambda_service.jsons_received)
410414
self.lambda_service.deleteLater()
411415

412416
# Feature digitize tool
413417
if self.feature_digitize_map_tool:
414-
self.feature_digitize_map_tool.digitizingCompleted.disconnect()
415-
self.feature_digitize_map_tool.digitizingFinished.disconnect()
418+
disconnect_signal(self.feature_digitize_map_tool.digitizingCompleted)
419+
disconnect_signal(self.feature_digitize_map_tool.digitizingFinished)
416420
self.feature_digitize_map_tool.deleteLater()
417421

418422
# Plan digitize tool
419-
self.plan_digitize_map_tool.digitizingCompleted.disconnect(self._plan_geom_digitized)
423+
disconnect_signal(self.plan_digitize_map_tool.digitizingCompleted)
420424
self.plan_digitize_map_tool.deleteLater()
421425

422426
# Inspect plan feature tool
423-
self.inspect_plan_feature_tool.edit_feature_requested.disconnect(self.edit_plan_feature)
427+
self.inspect_plan_feature_tool.unload()
424428
self.inspect_plan_feature_tool.deleteLater()
425429

426430
# New feature dock
427-
self.new_feature_dock.tool_activated.disconnect(self.add_new_plan_feature)
431+
disconnect_signal(self.new_feature_dock.tool_activated)
428432
iface.removeDockWidget(self.new_feature_dock)
429433
self.new_feature_dock.deleteLater()
430434

431435
# Regulation group dock
432-
self.regulation_groups_dock.new_regulation_group_requested.disconnect()
433-
self.regulation_groups_dock.edit_regulation_group_requested.disconnect()
434-
self.regulation_groups_dock.delete_regulation_group_requested.disconnect()
436+
self.regulation_groups_dock.unload()
435437
iface.removeDockWidget(self.regulation_groups_dock)
436438
self.regulation_groups_dock.deleteLater()
437439

arho_feature_template/gui/docks/regulation_groups_dock.py

+11-1
Original file line numberDiff line numberDiff line change
@@ -51,11 +51,14 @@ def __init__(self):
5151

5252
self.selected_group = None
5353

54-
def connect_buttons(self):
54+
def _disconnect_buttons(self):
5555
disconnect_signal(self.new_btn.clicked)
5656
disconnect_signal(self.edit_btn.clicked)
5757
disconnect_signal(self.delete_btn.clicked)
5858

59+
def connect_buttons(self):
60+
self._disconnect_buttons()
61+
5962
self.new_btn.clicked.connect(self.new_regulation_group_requested.emit)
6063
self.edit_btn.clicked.connect(self.on_edit_btn_clicked)
6164
self.delete_btn.clicked.connect(self.on_delete_btn_clicked)
@@ -123,3 +126,10 @@ def filter_regulation_groups(self):
123126
# Clear selection if the selected template was filtered
124127
if self.selected_group and self.selected_group is regulation_group and item.isHidden():
125128
self.regulation_group_list.clearSelection()
129+
130+
def unload(self):
131+
self._disconnect_buttons()
132+
133+
disconnect_signal(self.new_regulation_group_requested)
134+
disconnect_signal(self.edit_regulation_group_requested)
135+
disconnect_signal(self.delete_regulation_group_requested)

arho_feature_template/gui/tools/inspect_plan_features_tool.py

+11-3
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@
1010
from qgis.PyQt.QtWidgets import QMenu
1111
from qgis.utils import OverrideCursor
1212

13+
from arho_feature_template.utils.misc_utils import disconnect_signal
14+
1315
if TYPE_CHECKING:
1416
from arho_feature_template.project.layers.plan_layers import PlanFeatureLayer
1517

@@ -27,6 +29,7 @@ def __init__(self, canvas: QgsMapCanvas, layer_classes: list[PlanFeatureLayer]):
2729

2830
self.highlighted: tuple[QgsFeature, str] | None = None
2931
self.highlight_rubber_band: QgsRubberBand | None = None
32+
self.check_menu_selections_timer: QTimer | None = None
3033

3134
def activate(self):
3235
super().activate()
@@ -110,6 +113,11 @@ def _create_timer(self, menu: QMenu):
110113
self.check_menu_selections_timer.start(100) # 0.1 seconds interval
111114

112115
def _destroy_timer(self):
113-
self.check_menu_selections_timer.timeout.disconnect()
114-
self.check_menu_selections_timer.deleteLater()
115-
self.check_menu_selections_timer = None
116+
if self.check_menu_selections_timer:
117+
self.check_menu_selections_timer.timeout.disconnect()
118+
self.check_menu_selections_timer.deleteLater()
119+
self.check_menu_selections_timer = None
120+
121+
def unload(self):
122+
self.close_menu()
123+
disconnect_signal(self.edit_feature_requested)

0 commit comments

Comments
 (0)