@@ -171,3 +171,46 @@ def setup_verfahrensgebiet_listener() -> None:
|
||||
|
||||
except Exception:
|
||||
pass
|
||||
|
||||
|
||||
def teardown_verfahrensgebiet_listener() -> None:
|
||||
"""
|
||||
Trennt globale Event-Listener vom QgsProject-Singleton.
|
||||
|
||||
Diese Funktion ist idempotent und kann mehrfach aufgerufen werden.
|
||||
"""
|
||||
global _listener_installed
|
||||
|
||||
if not _listener_installed:
|
||||
return
|
||||
|
||||
try:
|
||||
project = QgsProject.instance()
|
||||
if project is None:
|
||||
return
|
||||
|
||||
try:
|
||||
project.layersAdded.disconnect(_on_layers_added)
|
||||
except Exception:
|
||||
pass
|
||||
|
||||
try:
|
||||
project.layerRemoved.disconnect(_on_layer_removed)
|
||||
except Exception:
|
||||
pass
|
||||
|
||||
for signal_name in ("readProject", "newProjectCreated", "cleared"):
|
||||
signal = getattr(project, signal_name, None)
|
||||
if signal is None:
|
||||
continue
|
||||
try:
|
||||
signal.disconnect(_on_project_changed)
|
||||
except Exception:
|
||||
pass
|
||||
|
||||
except RuntimeError:
|
||||
pass
|
||||
except Exception:
|
||||
pass
|
||||
finally:
|
||||
_listener_installed = False
|
||||
|
||||
Reference in New Issue
Block a user