Kartenrand überlappungsfrei anordnen (#93)
Im Standardlayout hingen Hauptlegende (oben), Quellenangabe und Kartenschild (unten) an der Kartenhöhe; bei kleinen Verfahren waren sie zusammen höher als die Karte und überlappten. Neues Modul print_kartenrand: Nach dem Aufbau der Vorlage (inkl. Basemap-Legende) werden die Legenden einmal gezeichnet – die Hauptlegende filtert nach Karteninhalt, ihre Höhe steht erst danach fest – und für 1–3 Spalten vermessen. Gewählt wird die kleinste passende Spaltenzahl (Kartenrand wird dafür breiter); passt keine, die mit dem geringsten Platzbedarf, und die Seite wird höher, Quellenangabe und Kartenschild rutschen nach unten. Karte bleibt in Größe und Lage. Fehler bei der Anordnung verhindern die Vorlage nicht (Warnung). Wrapper: QgsLayoutExporter. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -1086,11 +1086,27 @@ class PrintLayout:
|
||||
if basemap_legende:
|
||||
self._erzeuge_basemap_legende(layout)
|
||||
|
||||
self._ordne_kartenrand_an(layout)
|
||||
|
||||
layout_manager.addLayout(layout)
|
||||
self._current_layout = None
|
||||
open_layout_designer(layout)
|
||||
return layout
|
||||
|
||||
def _ordne_kartenrand_an(self, layout: Any) -> None:
|
||||
"""Ordnet Legenden, Quellenangabe und Kartenschild überlappungsfrei an (Basis #93).
|
||||
|
||||
Rand ggf. breiter (bis zu drei Legendenspalten) und Seite ggf. höher; die Karte bleibt.
|
||||
Ein Fehler dabei darf das Anlegen der Vorlage nicht verhindern; er wird als Warnung gemeldet.
|
||||
"""
|
||||
from sn_basis.functions.message_wrapper import warning
|
||||
from sn_basis.modules.print_kartenrand import ordne_kartenrand_an
|
||||
|
||||
try:
|
||||
ordne_kartenrand_an(layout)
|
||||
except Exception as fehler:
|
||||
warning("Vorlage anlegen", f"Der Kartenrand konnte nicht angeordnet werden: {fehler}")
|
||||
|
||||
def _erzeuge_basemap_legende(self, layout: Any) -> None:
|
||||
"""Kennzeichnet das Layout und erzeugt die Basemap-Legende (Basis #88).
|
||||
|
||||
|
||||
Reference in New Issue
Block a user