forked from AG_QGIS/Plugin_SN_Basis
Wrappe modular aufgebaut, Tests erfolgreich, Menüleiste und Werzeugleiste werden eingetragen (QT6 und QT5)- (Es fehlen noch Fachplugins, um zu prüfen, ob es auch wirklich in QGIS geht)
This commit is contained in:
@@ -1,59 +1,75 @@
|
||||
"""
|
||||
sn_basis/modules/stilpruefer.py – Prüfung und Anwendung von Layerstilen.
|
||||
Verwendet ausschließlich qgisqt_wrapper und gibt pruef_ergebnis zurück.
|
||||
sn_basis/modules/stilpruefer.py – Prüfung von Layerstilen.
|
||||
Prüft ausschließlich, ob ein Stilpfad gültig ist.
|
||||
Die Anwendung erfolgt später über eine Aktion.
|
||||
"""
|
||||
|
||||
from sn_basis.functions.qgisqt_wrapper import (
|
||||
apply_style,
|
||||
)
|
||||
from pathlib import Path
|
||||
|
||||
from sn_basis.functions import file_exists
|
||||
from sn_basis.modules.pruef_ergebnis import pruef_ergebnis
|
||||
|
||||
|
||||
class Stilpruefer:
|
||||
"""
|
||||
Prüft, ob ein Stil auf einen Layer angewendet werden kann.
|
||||
Die eigentliche Nutzerinteraktion übernimmt der Pruefmanager.
|
||||
Prüft, ob ein Stilpfad gültig ist und angewendet werden kann.
|
||||
Keine Seiteneffekte, keine QGIS-Aufrufe.
|
||||
"""
|
||||
|
||||
def __init__(self, layer, stil_pfad: str):
|
||||
"""
|
||||
layer: QGIS-Layer oder Mock-Layer
|
||||
stil_pfad: relativer oder absoluter Pfad zum .qml-Stil
|
||||
"""
|
||||
self.layer = layer
|
||||
self.stil_pfad = stil_pfad
|
||||
def __init__(self):
|
||||
pass
|
||||
|
||||
# ---------------------------------------------------------
|
||||
# Hauptfunktion
|
||||
# ---------------------------------------------------------
|
||||
|
||||
def pruefe(self) -> pruef_ergebnis:
|
||||
def pruefe(self, stil_pfad: str) -> pruef_ergebnis:
|
||||
"""
|
||||
Versucht, den Stil anzuwenden.
|
||||
Prüft einen Stilpfad.
|
||||
Rückgabe: pruef_ergebnis
|
||||
"""
|
||||
|
||||
# Wrapper übernimmt:
|
||||
# - Pfadberechnung
|
||||
# - Existenzprüfung
|
||||
# - loadNamedStyle
|
||||
# - Fehlerbehandlung
|
||||
# - Mock-Modus
|
||||
erfolg, meldung = apply_style(self.layer, self.stil_pfad)
|
||||
|
||||
if erfolg:
|
||||
# -----------------------------------------------------
|
||||
# 1. Kein Stil angegeben → OK
|
||||
# -----------------------------------------------------
|
||||
if not stil_pfad:
|
||||
return pruef_ergebnis(
|
||||
ok=True,
|
||||
meldung=f"Stil erfolgreich angewendet: {self.stil_pfad}",
|
||||
meldung="Kein Stil angegeben.",
|
||||
aktion="ok",
|
||||
pfad=self.stil_pfad,
|
||||
kontext=None,
|
||||
)
|
||||
|
||||
# Fehlerfall → Nutzerinteraktion nötig
|
||||
pfad = Path(stil_pfad)
|
||||
|
||||
# -----------------------------------------------------
|
||||
# 2. Datei existiert nicht
|
||||
# -----------------------------------------------------
|
||||
if not file_exists(pfad):
|
||||
return pruef_ergebnis(
|
||||
ok=False,
|
||||
meldung=f"Die Stil-Datei '{stil_pfad}' wurde nicht gefunden.",
|
||||
aktion="datei_nicht_gefunden",
|
||||
kontext=pfad,
|
||||
)
|
||||
|
||||
# -----------------------------------------------------
|
||||
# 3. Falsche Endung
|
||||
# -----------------------------------------------------
|
||||
if pfad.suffix.lower() != ".qml":
|
||||
return pruef_ergebnis(
|
||||
ok=False,
|
||||
meldung="Die Stil-Datei muss die Endung '.qml' haben.",
|
||||
aktion="falsche_endung",
|
||||
kontext=pfad,
|
||||
)
|
||||
|
||||
# -----------------------------------------------------
|
||||
# 4. Stil ist gültig → Anwendung später
|
||||
# -----------------------------------------------------
|
||||
return pruef_ergebnis(
|
||||
ok=False,
|
||||
meldung=meldung,
|
||||
aktion="stil_nicht_anwendbar",
|
||||
pfad=self.stil_pfad,
|
||||
ok=True,
|
||||
meldung="Stil-Datei ist gültig.",
|
||||
aktion="stil_anwendbar",
|
||||
kontext=pfad,
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user