This commit is contained in:
2026-04-20 10:32:19 +02:00
4 changed files with 35 additions and 11 deletions
+3 -3
View File
@@ -1,4 +1,4 @@
from sn_basis.ui.tabs.print_tab import PrintTab
from sn_basis.ui.tabs.settings_tab import SettingsTab
# from sn_basis.ui.tabs.print_tab import PrintTab
# from sn_basis.ui.tabs.settings_tab import SettingsTab
__all__ = ["PrintTab", "SettingsTab"]
# __all__ = ["PrintTab", "SettingsTab"]
+30 -6
View File
@@ -13,10 +13,7 @@ from sn_basis.functions.qt_wrapper import (
QCheckBox,
QHBoxLayout,
QPushButton,
QToolButton,
ToolButtonTextBesideIcon,
ArrowDown,
ArrowRight,
QCoreApplication,
)
from sn_basis.functions.qgiscore_wrapper import QgsProject, QgsMapLayerProxyModel
from sn_basis.functions.qgisui_wrapper import iface, QgsMapLayerComboBox
@@ -65,9 +62,11 @@ class PrintTab(QWidget):
def __init__(self, parent: Optional[Any] = None):
super().__init__(parent)
self.pruefmanager: Optional[Pruefmanager] = None
self.logic: Optional[PrintLogic] = None
self.logic = PrintLogic(self.pruefmanager)
#self.logic: Optional[PrintLogic] = None
self._kartenname_combo: Optional[Any] = None
self._massstab_combo: Optional[Any] = None
self._thema_combo: Optional[Any] = None
@@ -89,6 +88,13 @@ class PrintTab(QWidget):
self._connect_theme_collection_signals()
self._connect_project_signals()
app = QCoreApplication.instance()
if app is not None:
try:
app.aboutToQuit.connect(self._cleanup_signals)
except Exception:
pass
def set_services(self, pruefmanager: Pruefmanager, data_grabber: DataGrabber) -> None:
_ = data_grabber
self.pruefmanager = pruefmanager
@@ -436,6 +442,24 @@ class PrintTab(QWidget):
druckbereich_auswahl=self._druckbereich_combo.currentText() if self._druckbereich_combo else DRUCKBEREICH_VERFAHRENSGEBIET,
)
def _cleanup_signals(self) -> None:
"""Trennt alle QGIS-Signalverbindungen vor dem Beenden von QGIS."""
self._disconnect_theme_collection_signals()
try:
project = QgsProject.instance()
if project is None:
return
for signal_name in ("readProject", "newProjectCreated", "cleared"):
signal = getattr(project, signal_name, None)
if signal is None:
continue
try:
signal.disconnect(self._on_project_changed)
except Exception:
pass
except Exception:
pass
def _connect_project_signals(self) -> None:
project = QgsProject.instance()
for signal_name in ("readProject", "newProjectCreated", "cleared"):