Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Korjaa omien widgettien ja työkalujen unload #164

Merged
merged 1 commit into from
Feb 4, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 11 additions & 9 deletions arho_feature_template/core/plan_manager.py
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,7 @@
from arho_feature_template.utils.misc_utils import (
LANGUAGE,
check_layer_changes,
disconnect_signal,
get_active_plan_id,
handle_unsaved_changes,
iface,
Expand Down Expand Up @@ -405,33 +406,34 @@ def save_plan_jsons(self, plan_json, outline_json):
)

def unload(self):
# Set pan map tool as active (to deactivate our custom tools to avoid errors)
iface.actionPan().trigger()

# Lambda service
self.lambda_service.jsons_received.disconnect(self.save_plan_jsons)
disconnect_signal(self.lambda_service.jsons_received)
self.lambda_service.deleteLater()

# Feature digitize tool
if self.feature_digitize_map_tool:
self.feature_digitize_map_tool.digitizingCompleted.disconnect()
self.feature_digitize_map_tool.digitizingFinished.disconnect()
disconnect_signal(self.feature_digitize_map_tool.digitizingCompleted)
disconnect_signal(self.feature_digitize_map_tool.digitizingFinished)
self.feature_digitize_map_tool.deleteLater()

# Plan digitize tool
self.plan_digitize_map_tool.digitizingCompleted.disconnect(self._plan_geom_digitized)
disconnect_signal(self.plan_digitize_map_tool.digitizingCompleted)
self.plan_digitize_map_tool.deleteLater()

# Inspect plan feature tool
self.inspect_plan_feature_tool.edit_feature_requested.disconnect(self.edit_plan_feature)
self.inspect_plan_feature_tool.unload()
self.inspect_plan_feature_tool.deleteLater()

# New feature dock
self.new_feature_dock.tool_activated.disconnect(self.add_new_plan_feature)
disconnect_signal(self.new_feature_dock.tool_activated)
iface.removeDockWidget(self.new_feature_dock)
self.new_feature_dock.deleteLater()

# Regulation group dock
self.regulation_groups_dock.new_regulation_group_requested.disconnect()
self.regulation_groups_dock.edit_regulation_group_requested.disconnect()
self.regulation_groups_dock.delete_regulation_group_requested.disconnect()
self.regulation_groups_dock.unload()
iface.removeDockWidget(self.regulation_groups_dock)
self.regulation_groups_dock.deleteLater()

Expand Down
12 changes: 11 additions & 1 deletion arho_feature_template/gui/docks/regulation_groups_dock.py
Original file line number Diff line number Diff line change
Expand Up @@ -51,11 +51,14 @@ def __init__(self):

self.selected_group = None

def connect_buttons(self):
def _disconnect_buttons(self):
disconnect_signal(self.new_btn.clicked)
disconnect_signal(self.edit_btn.clicked)
disconnect_signal(self.delete_btn.clicked)

def connect_buttons(self):
self._disconnect_buttons()

self.new_btn.clicked.connect(self.new_regulation_group_requested.emit)
self.edit_btn.clicked.connect(self.on_edit_btn_clicked)
self.delete_btn.clicked.connect(self.on_delete_btn_clicked)
Expand Down Expand Up @@ -123,3 +126,10 @@ def filter_regulation_groups(self):
# Clear selection if the selected template was filtered
if self.selected_group and self.selected_group is regulation_group and item.isHidden():
self.regulation_group_list.clearSelection()

def unload(self):
self._disconnect_buttons()

disconnect_signal(self.new_regulation_group_requested)
disconnect_signal(self.edit_regulation_group_requested)
disconnect_signal(self.delete_regulation_group_requested)
14 changes: 11 additions & 3 deletions arho_feature_template/gui/tools/inspect_plan_features_tool.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,8 @@
from qgis.PyQt.QtWidgets import QMenu
from qgis.utils import OverrideCursor

from arho_feature_template.utils.misc_utils import disconnect_signal

if TYPE_CHECKING:
from arho_feature_template.project.layers.plan_layers import PlanFeatureLayer

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

self.highlighted: tuple[QgsFeature, str] | None = None
self.highlight_rubber_band: QgsRubberBand | None = None
self.check_menu_selections_timer: QTimer | None = None

def activate(self):
super().activate()
Expand Down Expand Up @@ -110,6 +113,11 @@ def _create_timer(self, menu: QMenu):
self.check_menu_selections_timer.start(100) # 0.1 seconds interval

def _destroy_timer(self):
self.check_menu_selections_timer.timeout.disconnect()
self.check_menu_selections_timer.deleteLater()
self.check_menu_selections_timer = None
if self.check_menu_selections_timer:
self.check_menu_selections_timer.timeout.disconnect()
self.check_menu_selections_timer.deleteLater()
self.check_menu_selections_timer = None

def unload(self):
self.close_menu()
disconnect_signal(self.edit_feature_requested)
Loading