Mehrspaltige Legenden schmaler (#96)
Mit gleichen Spaltenbreiten bestimmte der längste Legendentext die Breite aller Spalten; die dreispaltige Basemap-Legende wurde 431 mm breit. Jetzt: ungleich breite Spalten, automatischer Textumbruch nach 60 mm (TEXTUMBRUCH_MM in print_kartenrand, auch für die Basemap-Legende) und zweizeiliger Titel „Kartengrundlage / (basemap.de)“, der sonst die Mindestbreite bestimmte. Im QGIS-Test: dreispaltig 226 statt 431 mm, einspaltig 89 statt 163 mm. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -40,11 +40,13 @@ from sn_basis.functions.qgiscore_wrapper import (
|
||||
QgsVectorLayer,
|
||||
)
|
||||
from sn_basis.functions.qt_wrapper import QSize
|
||||
from sn_basis.modules.print_kartenrand import TEXTUMBRUCH_MM
|
||||
|
||||
MM = QgsUnitTypes.LayoutMillimeters
|
||||
|
||||
LEGENDE_ID = "Legende Basemap"
|
||||
LEGENDE_TITEL = "Kartengrundlage (basemap.de)"
|
||||
# Zweizeilig, damit der Titel nicht die Mindestbreite der Legende bestimmt (Basis #96)
|
||||
LEGENDE_TITEL = "Kartengrundlage\n(basemap.de)"
|
||||
HAUPTKARTE_ID = "Hauptkarte"
|
||||
HAUPTLEGENDE_ID = "Legende"
|
||||
QUELLENANGABE_ID = "Quellenangabe"
|
||||
@@ -350,7 +352,8 @@ def mindestgroesse(legende: Any, layout: Any, spalten: int) -> tuple[float, floa
|
||||
return None
|
||||
einstellungen.setColumnCount(spalten)
|
||||
einstellungen.setSplitLayer(True)
|
||||
einstellungen.setEqualColumnWidth(True)
|
||||
einstellungen.setEqualColumnWidth(False)
|
||||
einstellungen.setAutoWrapLinesAfter(TEXTUMBRUCH_MM)
|
||||
try:
|
||||
groesse = QgsLegendRenderer(legende.model(), einstellungen).minimumSize(kontext)
|
||||
except Exception:
|
||||
@@ -399,7 +402,7 @@ def platziere(layout: Any, legende: Any) -> str:
|
||||
spalten, groesse = spalten + 1, breiter
|
||||
_aufruf(legende, "setColumnCount", spalten)
|
||||
_aufruf(legende, "setSplitLayer", True)
|
||||
_aufruf(legende, "setEqualColumnWidth", True)
|
||||
_aufruf(legende, "setEqualColumnWidth", False)
|
||||
|
||||
unten_links = getattr(getattr(QgsLayoutItem, "ReferencePoint", QgsLayoutItem), "LowerLeft", None)
|
||||
if unten_links is not None:
|
||||
@@ -450,6 +453,7 @@ def schreibe_legende(layout: Any, map_item: Any, eintraege: list, symbole: dict[
|
||||
legende.setAutoUpdateModel(False)
|
||||
legende.setLegendFilterByMapEnabled(False)
|
||||
legende.setTitle(LEGENDE_TITEL)
|
||||
_aufruf(legende, "setAutoWrapLinesAfter", TEXTUMBRUCH_MM)
|
||||
wurzel = legende.model().rootGroup()
|
||||
wurzel.removeAllChildren()
|
||||
for gruppe, layer_liste in gruppen:
|
||||
|
||||
Reference in New Issue
Block a user