Basemap hinzufügen und Thema wechseln im Basemap-Bereich (#100)
Neuer Abschnitt „Basemap-Layer“ im Basemap-Bereich des Druck-Tabs: Knopf „Basemap hinzufügen“ und Auswahl „Thema“ (Farbe, Grau). Vorhandene Layer werden an der Kachel-URL erkannt; Rückfrage Zusätzlich laden / Ersetzen / Abbrechen. Vor dem Themenwechsel wird über einen Prüfwert der Darstellung erkannt, ob sie ungespeichert verändert wurde. Neues Modul modules/basemap_themen.py, neue Wrapper-Funktionen ask_auswahl und get_active_layer, Stilvorlagen vermerken ihr Thema. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -133,6 +133,55 @@ def ask_overwrite_append_cancel_custom(
|
||||
return "cancel"
|
||||
|
||||
|
||||
def ask_auswahl(
|
||||
title: str,
|
||||
message: str,
|
||||
optionen: list[tuple[str, str]],
|
||||
default: str,
|
||||
abbrechen: Optional[str] = None,
|
||||
parent: Any = None,
|
||||
) -> str:
|
||||
"""Stellt eine Frage mit frei benannten Knöpfen und gibt den Schlüssel der Wahl zurück.
|
||||
|
||||
Parameters
|
||||
----------
|
||||
optionen :
|
||||
``(schluessel, beschriftung)`` in Anzeigereihenfolge.
|
||||
default :
|
||||
Vorbelegter Knopf; im Mock-Modus die Antwort.
|
||||
abbrechen :
|
||||
Schlüssel, der beim Schließen des Fensters (Esc, X) und bei einem Fehler gilt;
|
||||
ohne Angabe ``default``.
|
||||
"""
|
||||
rueckfall = abbrechen if abbrechen is not None else default
|
||||
if QT_VERSION == 0: # Mock-Modus
|
||||
return default
|
||||
try:
|
||||
from sn_basis.functions import qt_wrapper
|
||||
|
||||
msg = QMessageBox(parent)
|
||||
msg.setIcon(ICON_QUESTION)
|
||||
msg.setWindowTitle(title)
|
||||
msg.setText(message)
|
||||
knoepfe = {}
|
||||
for schluessel, beschriftung in optionen:
|
||||
rolle = qt_wrapper.RejectRole if schluessel == abbrechen else qt_wrapper.ActionRole
|
||||
knoepfe[schluessel] = msg.addButton(beschriftung, rolle)
|
||||
if default in knoepfe:
|
||||
msg.setDefaultButton(knoepfe[default])
|
||||
if abbrechen in knoepfe:
|
||||
msg.setEscapeButton(knoepfe[abbrechen])
|
||||
exec_dialog(msg)
|
||||
geklickt = msg.clickedButton()
|
||||
for schluessel, knopf in knoepfe.items():
|
||||
if geklickt == knopf:
|
||||
return schluessel
|
||||
return rueckfall
|
||||
except Exception as e:
|
||||
print(f"⚠️ ask_auswahl Fehler: {e}")
|
||||
return rueckfall
|
||||
|
||||
|
||||
def ask_ergaenzen_entfernen_ersetzen_abbrechen(
|
||||
parent: Any,
|
||||
title: str,
|
||||
|
||||
@@ -219,6 +219,15 @@ def remove_toolbar(toolbar: Any) -> None:
|
||||
# Layer zum Projekt hinzufügen
|
||||
# ---------------------------------------------------------
|
||||
|
||||
def get_active_layer() -> Any:
|
||||
"""Im Layerbaum ausgewählter Layer oder ``None`` (Mock-Modus, kein Layer gewählt)."""
|
||||
try:
|
||||
aktiv = getattr(iface, "activeLayer", None)
|
||||
return aktiv() if callable(aktiv) else None
|
||||
except Exception:
|
||||
return None
|
||||
|
||||
|
||||
def add_layer_to_project(layer: Any) -> bool:
|
||||
"""
|
||||
Fügt einen Layer dem aktuellen QGIS-Projekt hinzu.
|
||||
|
||||
Reference in New Issue
Block a user