Fenster-/Tür-Einstellungsdialog: reicher Editor mit Live-Ansicht + Stil speichern

Das ⚙ der Öffnungs-Sektion öffnet neu einen dedizierten Dialog (VW-Studie §3)
statt in den Ressourcen-Tab zu springen. Drei Zonen: Kategorie-Sidebar,
Parameter-Panel, Live-2D-Frontalansicht (aus den aktuellen Werten gezeichnet:
Rahmen/Flügel/Öffnungslinien/Verglasung/Rollladenkasten).

- OpeningEditorDialog.tsx: Kategorien Basis/Grösse/Rahmen/Flügel/Sonnenschutz
  (Fenster) bzw. Türblatt (Tür); Flügeltabelle (Flügel/Pfosten + Öffnungsart +
  Anschlag je Zeile); Stil-Leiste mit Stilwahl + 'Als Stil speichern …'
- App: openingEditorId-State, Dialog-Render, saveOpeningStyle (klont aktuellen
  Typ als neuen benannten WindowType/DoorType und weist ihn zu)
- host.onOpenOpeningEditor + OpeningInfo.id für den ⚙-Sprung
- Studie docs/design/window-editor-vectorworks-study.md
- Dialog-CSS (.oed-*) + i18n (de/en)

Renderer-Konsum der neuen Felder (sashes/glazingPanes/shading in 2D/3D) folgt separat.
This commit is contained in:
2026-07-10 01:13:15 +02:00
parent 621807f5fb
commit 01e5ffee48
8 changed files with 1247 additions and 4 deletions
+63 -1
View File
@@ -362,7 +362,69 @@ export const de = {
// ── Öffnungs-Attribute (Object-Info-Panel) ──────────────────────────────
"objinfo.opening.section": "Öffnung",
"objinfo.opening.type": "Typ",
"objinfo.opening.editType": "Typ bearbeiten (Ressourcen)",
"objinfo.opening.editType": "Einstellungen …",
// Fenster-/Tür-Einstellungsdialog (OpeningEditorDialog).
"oed.title.window": "Fenster-Einstellungen",
"oed.title.door": "Tür-Einstellungen",
"oed.style": "Stil",
"oed.saveStyle": "Als Stil speichern …",
"oed.saveStyle.hint": "Aktuelle Einstellungen als neuen, wiederverwendbaren Stil ablegen",
"oed.saveStyle.prompt": "Name des neuen Stils:",
"oed.saveStyle.copySuffix": "(Kopie)",
"oed.categories": "Kategorien",
"oed.noStyle": "Kein Stil zugewiesen — über die Stil-Leiste einen Stil wählen oder speichern.",
"oed.preview": "Ansicht",
"oed.cat.basis": "Basis",
"oed.cat.groesse": "Grösse/Position",
"oed.cat.rahmen": "Rahmen",
"oed.cat.fluegel": "Flügel/Sprossen",
"oed.cat.sonnenschutz": "Sonnenschutz",
"oed.cat.tuerblatt": "Türblatt",
"oed.f.kind": "Öffnungsart",
"oed.f.glazing": "Verglasung",
"oed.f.insetFace": "Schichteinzug ab",
"oed.f.insetFromFace": "Schichteinzug (m)",
"oed.f.width": "Breite (m)",
"oed.f.height": "Höhe (m)",
"oed.f.sillHeight": "Brüstungshöhe (m)",
"oed.f.position": "Position (m)",
"oed.f.frameThickness": "Rahmenstärke quer (m)",
"oed.f.frameDepth": "Rahmentiefe (m)",
"oed.f.frameWidth": "Rahmenbreite Ansicht (m)",
"oed.kind.dreh": "Dreh",
"oed.kind.kipp": "Kipp",
"oed.kind.drehkipp": "Dreh-Kipp",
"oed.kind.fest": "Fest",
"oed.kind.schiebe": "Schiebe",
"oed.glazing.1": "Einfach",
"oed.glazing.2": "Zweifach",
"oed.glazing.3": "Dreifach",
"oed.insetFace.aussen": "Aussenfläche",
"oed.insetFace.innen": "Innenfläche",
"oed.fluegel.hint": "Flügel und Pfosten von links nach rechts. Öffnungsart und Anschlag je Flügel.",
"oed.fluegel.col.kind": "Typ",
"oed.fluegel.col.opening": "Öffnung",
"oed.fluegel.col.hinge": "Anschlag",
"oed.fluegel.type.fluegel": "Flügel",
"oed.fluegel.type.pfosten": "Pfosten",
"oed.fluegel.remove": "Entfernen",
"oed.hinge.left": "Links",
"oed.hinge.right": "Rechts",
"oed.shading.create": "Rollladen-/Sonnenschutzkasten",
"oed.shading.kind": "Art",
"oed.shading.rollladen": "Rollladen",
"oed.shading.raffstore": "Raffstore",
"oed.shading.markise": "Markise",
"oed.shading.boxHeight": "Kastenhöhe (m)",
"oed.shading.boxDepth": "Kastentiefe (m)",
"oed.door.leafCount": "Türblätter",
"oed.door.leaf1": "Einflüglig",
"oed.door.leaf2": "Zweiflüglig",
"oed.door.leafStyle": "Blattart",
"oed.door.glatt": "Glatt",
"oed.door.kassette": "Kassette",
"oed.door.glas": "Glas",
"oed.door.wandoeffnung": "Wandöffnung",
"objinfo.stair.type": "Typ",
"objinfo.type.none": "(kein Typ)",
"objinfo.opening.kind": "Art",