Settings-Dialoge in echten Rhino-Fenstern (Eto.Form + WebView)
Statt Overlay-im-Panel oeffnet sich der Settings-Dialog jetzt als echtes Rhino-Fenster (verschiebbar, resizable, mehrere parallel). Infrastruktur in panel_base.py: - load_inline akzeptiert jetzt `params` (dict) und injiziert sie als window.PANEL_PARAMS — Satelliten-Apps lesen ihren initialen State daraus. - Neue Funktion open_satellite_window(mode, params, title, size, on_save, on_cancel): erstellt Eto.Forms.Form mit eingebetteter WebView, eigenem Inline-Bridge fuer SAVE/CANCEL-Messages, ruft Callbacks auf und schliesst das Fenster. Backend rhinopanel.py: - Neue Message-Handler OPEN_GESCHOSS_SETTINGS und OPEN_EBENEN_SETTINGS. - _open_geschoss_settings: oeffnet das Satelliten-Fenster mit dem Geschoss als Payload. on_save: replace im doc.Strings z-Liste + _apply(save_z=True). - _open_ebenen_settings: gleich, aber fuer Ebene + hatchPatterns. Neue React-Entries: - GeschossSettingsApp.jsx: wrappt GeschossSettingsDialog, liest window.PANEL_PARAMS, schickt SAVE/CANCEL direkt via document.title- Bridge. - EbenenSettingsApp.jsx: gleich fuer EbenenSettingsDialog. main.jsx-Switch erweitert um 'geschoss_settings' und 'ebenen_settings'. GeschossManager und EbenenManager: - Inline-Dialog-State und -Rendering entfernt. - onSettings ruft jetzt openGeschossSettings(z) / openEbenenSettings(e) in der Bridge auf → Backend oeffnet das Satelliten-Fenster. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
+14
-10
@@ -3,6 +3,8 @@ import { createRoot } from 'react-dom/client'
|
||||
import './index.css'
|
||||
import App from './App.jsx'
|
||||
import ZeichnungsebenenApp from './ZeichnungsebenenApp.jsx'
|
||||
import GeschossSettingsApp from './GeschossSettingsApp.jsx'
|
||||
import EbenenSettingsApp from './EbenenSettingsApp.jsx'
|
||||
import GestaltungApp from './GestaltungApp.jsx'
|
||||
import AusschnitteApp from './AusschnitteApp.jsx'
|
||||
import MassstabApp from './MassstabApp.jsx'
|
||||
@@ -14,16 +16,18 @@ import LayoutsApp from './LayoutsApp.jsx'
|
||||
import ElementeApp from './ElementeApp.jsx'
|
||||
|
||||
const mode = (typeof window !== 'undefined' && window.PANEL_MODE) || 'ebenen'
|
||||
const RootApp = mode === 'gestaltung' ? GestaltungApp
|
||||
: mode === 'ausschnitte' ? AusschnitteApp
|
||||
: mode === 'massstab' ? MassstabApp
|
||||
: mode === 'werkzeuge' ? WerkzeugeApp
|
||||
: mode === 'oberleiste' ? OberleisteApp
|
||||
: mode === 'overrides' ? OverridesApp
|
||||
: mode === 'dimensionen' ? DimensionenApp
|
||||
: mode === 'layouts' ? LayoutsApp
|
||||
: mode === 'elemente' ? ElementeApp
|
||||
: mode === 'zeichnungsebenen' ? ZeichnungsebenenApp
|
||||
const RootApp = mode === 'gestaltung' ? GestaltungApp
|
||||
: mode === 'ausschnitte' ? AusschnitteApp
|
||||
: mode === 'massstab' ? MassstabApp
|
||||
: mode === 'werkzeuge' ? WerkzeugeApp
|
||||
: mode === 'oberleiste' ? OberleisteApp
|
||||
: mode === 'overrides' ? OverridesApp
|
||||
: mode === 'dimensionen' ? DimensionenApp
|
||||
: mode === 'layouts' ? LayoutsApp
|
||||
: mode === 'elemente' ? ElementeApp
|
||||
: mode === 'zeichnungsebenen' ? ZeichnungsebenenApp
|
||||
: mode === 'geschoss_settings' ? GeschossSettingsApp
|
||||
: mode === 'ebenen_settings' ? EbenenSettingsApp
|
||||
: App
|
||||
|
||||
window.onerror = function (msg, src, line, col, err) {
|
||||
|
||||
Reference in New Issue
Block a user