Overrides als Satelliten-Fenster vom Oberleiste-Gear öffnen

OVERRIDES war als gedocktes Panel zu schmal. Jetzt: kein Panel mehr,
sondern ein echtes Rhino-Fenster (Eto.Form + WebView, frei verschieb-
und resizable), das vom Oberleiste-Gear-Button geoeffnet wird.

panel_base.open_satellite_window:
- Akzeptiert jetzt optional einen `bridge`-Parameter. Wenn gegeben,
  wird die Custom-Bridge (z.B. OverridesBridge) statt der einfachen
  inline SAVE/CANCEL-Bridge benutzt. So koennen vollwertige Panels
  (mit bidirektionalem Mess-Verkehr) als Satellite-Fenster laufen.

overrides_panel.py:
- register_and_open entfaellt — Overrides wird nicht mehr als Panel
  registriert.
- Neue Funktion open_as_window(): erstellt OverridesBridge, registriert
  sie in sticky["overrides_bridge"] und oeffnet als Satellite-Window.
  Listener werden lazy beim ersten Aufruf installiert
  (_ensure_listeners_once).

oberleiste.py:
- OPEN_OVERRIDES_PANEL ruft jetzt overrides_panel.open_as_window()
  statt RhinoUI.Panels.OpenPanel().

OberleisteApp.jsx:
- Settings-Gear (ToolButton mit icon="settings") nach dem Preset-
  Dropdown im Overrides-Bereich. Click ruft openOverridesPanel() →
  oeffnet das Satelliten-Fenster.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
2026-05-19 01:39:07 +02:00
parent b1b2090b3e
commit 42d9c1e27b
4 changed files with 72 additions and 45 deletions
+3 -4
View File
@@ -915,11 +915,10 @@ class OberleisteBridge(panel_base.BaseBridge):
print("[OBERLEISTE] notify overrides:", ex)
elif t == "OPEN_OVERRIDES_PANEL":
try:
import System
import Rhino.UI as RhinoUI
RhinoUI.Panels.OpenPanel(System.Guid(OVERRIDES_PANEL_GUID_STR))
import overrides_panel
overrides_panel.open_as_window()
except Exception as ex:
print("[OBERLEISTE] OpenPanel Overrides:", ex)
print("[OBERLEISTE] open_as_window Overrides:", ex)
# --- Command-Line Integration -----------------------------------
elif t == "RUN_COMMAND":