Text-Editor: V-Align + Mask-Type/Color + Case-Transform

Erweitert den Editor um die fehlenden Rhino-Text-Optionen:

- Vertical Alignment (Top/Middle/Bottom) als 3 Pill-Buttons in Row 2.
  Backend: text_create._apply_valign mit TextVerticalAlignment-Enum.
- Mask-Type Dropdown (None/Viewport/Solid). Bei Solid erscheint ein
  Mask-Color-Picker. MaskMargin disabled wenn Type=none.
  Backend: schaltet te.MaskEnabled + te.MaskUsesViewportColor +
  te.MaskColor entsprechend.
- Case-Dropdown in Row 2: upper/lower/capitalize/invert. Wirkt nur
  auf die Selektion via execCommand insertText.

open_for_edit liest valign + maskType/Color/Margin aus bestehendem
TextEntity zurueck, damit beim Re-Open der Zustand erhalten bleibt.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
2026-05-21 13:08:51 +02:00
parent de6f84346c
commit 6b3421e7af
3 changed files with 137 additions and 7 deletions
+16
View File
@@ -799,6 +799,22 @@ def _apply_align(te, align):
return False
def _apply_valign(te, valign):
"""Setzt TextVerticalAlignment (Top/Middle/Bottom)."""
try:
m = {
"top": Rhino.DocObjects.TextVerticalAlignment.Top,
"middle": Rhino.DocObjects.TextVerticalAlignment.Middle,
"bottom": Rhino.DocObjects.TextVerticalAlignment.Bottom,
}
if valign in m:
te.TextVerticalAlignment = m[valign]
return True
except Exception as ex:
print("[TEXT] apply valign:", ex)
return False
def apply_settings_to_selection(doc, patch):
"""Wendet font/size/bold/italic/align auf alle selektierten
TextEntities an. Returns Anzahl der geaenderten Objekte."""