Text-Erstellung mit Floating-Input-Box (Variante B)
Neuer Workflow: Klick "+ Text" in Topbar → Punkt im Viewport picken → Floating Eto-Dialog erscheint neben dem Mauszeiger → User tippt → Enter fuegt TextEntity mit Topbar-Settings ein. Esc bricht ab. Backend (rhino/text_create.py): - load_settings/save_settings — persistiert font/size/bold/italic in doc.Strings["dossier_text_settings"] (JSON) - available_fonts() — System-Font-Namen via Rhino.DocObjects.Font.AvailableFontFaceNames - _floating_input() — Eto.Dialog mit TextBox, ShowModal mit Rhino- MainWindow als Parent, positioniert bei Mouse.Position - create_text() — RhinoGet.GetPoint → _floating_input → TextEntity mit Font/Size/Bold/Italic erstellen + AddText - _apply_font() mit 2 Fallback-Pfaden (FontTable.FindOrCreate + Font.FromQuartetProperties) fuer RhinoCommon-Kompatibilitaet Backend (oberleiste.py): - CREATE_TEXT handler → text_create.create_text() - SET_TEXT_SETTINGS handler → text_create.save_settings (merge partial) - State payload: textSettings (immer) + textFonts (einmalig initial, via _fonts_sent Flag — Liste aendert sich nicht zur Laufzeit) Frontend (OberleisteApp + rhinoBridge): - createText() + setTextSettings() Bridge-Funktionen - Text-Block 2x2 Grid analog Massstab: R1: Font-Dropdown (BarCombo mit text_fields icon) | Size-Input mit "m" suffix R2: B/I-Toggles (segmented pill mit accent-Fill bei active) | "+ Text" Button - Hover-Logik analog View-Toggle (bg → bg-item-hover, color → accent-light) Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
@@ -906,6 +906,22 @@ class OberleisteBridge(panel_base.BaseBridge):
|
||||
except Exception as ex:
|
||||
print("[OBERLEISTE] open about:", ex)
|
||||
|
||||
# --- Text-Erstellung (Floating-Input) ---------------------------
|
||||
elif t == "CREATE_TEXT":
|
||||
try:
|
||||
import text_create
|
||||
text_create.create_text()
|
||||
except Exception as ex:
|
||||
print("[OBERLEISTE] create text:", ex)
|
||||
elif t == "SET_TEXT_SETTINGS":
|
||||
try:
|
||||
import text_create
|
||||
text_create.save_settings(
|
||||
Rhino.RhinoDoc.ActiveDoc, p.get("settings") or {})
|
||||
except Exception as ex:
|
||||
print("[OBERLEISTE] text settings:", ex)
|
||||
self._send_state(force=True)
|
||||
|
||||
# --- Masse (Mass-Style) -----------------------------------------
|
||||
elif t == "SET_MASSE_ACTIVE":
|
||||
try:
|
||||
@@ -1152,6 +1168,15 @@ class OberleisteBridge(panel_base.BaseBridge):
|
||||
except Exception:
|
||||
info["massePresets"] = []
|
||||
info["masseActiveId"] = None
|
||||
# Text-Settings + verfuegbare Fonts (Fonts nur einmal initial)
|
||||
try:
|
||||
import text_create
|
||||
info["textSettings"] = text_create.load_settings(doc)
|
||||
if not getattr(self, "_fonts_sent", False):
|
||||
info["textFonts"] = text_create.available_fonts()
|
||||
self._fonts_sent = True
|
||||
except Exception:
|
||||
info["textSettings"] = {}
|
||||
# Command-Line State
|
||||
prompt = _get_command_prompt()
|
||||
info["cmdPrompt"] = prompt
|
||||
|
||||
Reference in New Issue
Block a user