TopBar-Redesign: Marke, Zoom-Cluster, Datei-Menü, Fenstersteuerung, Dark-Theme fest
- Marke (DOSSIER-Wortmarke) + Ressourcen-Icon ganz links, wie im Rhino-Plugin; Settings-Icon folgt über den neuen Einstellungs-Dialog. - Massstab/Zoom-Cluster bereinigt: doppelte Massstab-Dropdown entfernt, Zoom-Aktionen unter dem Massstab-Dropdown gestapelt (gleiche Breite), Ring bei "am Massstab" statt Flächen-Aufhellung. - PDF/DXF-Export aus der Leiste raus, zusammen mit Speichern/Öffnen/ Import in einem neuen Datei-Burger-Menü ganz rechts. Speichern/Öffnen sind echte JSON-Download/-Upload-Handler fürs ganze Projekt. - Einstellungs-Fenster (neu): Accent-Palette, Auswahlrahmen-/Snap-Farbe editierbar (freier Picker + Presets), Projekt-Referenzhöhe (m ü. M.) als Feld. - LayoutMenu auf die eigene Dropdown-Komponente umgestellt (war noch natives <select>). - Custom Fenstersteuerung (_/□/X) für die randlose Electron-Shell via Preload+IPC, eigener Look statt OS-Chrome; Oberleiste als Drag-Region. - Dark-Theme ist jetzt fester Standard (vorher an OS-Präferenz gekoppelt, zeigte je nach Umgebung fälschlich Light) — Light bleibt als Opt-in (`[data-theme="light"]`) für einen künftigen Umschalter. Alle Oberleisten-Pillen (Dropdown-Trigger, Segmente, Icon-Knöpfe, Ansichts-Icons) auf dieselbe dunkle Fläche wie das Kontextmenü vereinheitlicht. Panel-Köpfe nicht mehr separat aufgehellt, feste Höhe (40px) unabhängig von optionalem Darstellungsmodus-Dropdown. - 2D-Zoom-Grenzen deutlich erweitert (20000x/0.005x statt 50x/0.2x).
This commit is contained in:
@@ -10,6 +10,7 @@
|
||||
import { sampleProject } from "../model/sampleProject";
|
||||
import type { DetailLevel, RenderMode, View3d, ViewType } from "../ui/TopBar";
|
||||
import type { DisplayMode } from "../panels/types";
|
||||
import { DEFAULT_MARQUEE_COLOR, DEFAULT_SNAP_COLOR } from "../theme/accents";
|
||||
import type { StoreApi } from "./store";
|
||||
|
||||
/** Standard-Darstellungsmodus je Panel (wie bisher: alles sichtbar normal). */
|
||||
@@ -45,6 +46,13 @@ export interface ViewSlice {
|
||||
activeCategoryCode: string;
|
||||
// Darstellungsmodus je Panel-ID (z. B. "drawing-levels", "layers").
|
||||
displayModes: Record<string, DisplayMode>;
|
||||
// Farbe des Auswahlrahmens (Marquee-Ziehauswahl) im Grundriss. Einstellbar
|
||||
// im Einstellungs-Fenster; Default = Akzent „Yuyake" (theme/accents.ts).
|
||||
marqueeColor: string;
|
||||
// Farbe der Snap-/Endpunkt-Hervorhebung im Grundriss (Zeichnen/Editieren).
|
||||
// Einstellbar im Einstellungs-Fenster; Default = Akzent „Sora" (vorläufig,
|
||||
// siehe HANDOVER-Rückfrage „aki").
|
||||
snapColor: string;
|
||||
|
||||
setActiveLevelId: (id: string) => void;
|
||||
setViewType: (v: ViewType) => void;
|
||||
@@ -61,6 +69,8 @@ export interface ViewSlice {
|
||||
modeFor: (id: string | null) => DisplayMode;
|
||||
/** Darstellungsmodus eines Panels setzen (No-op bei null id). */
|
||||
setModeFor: (id: string | null, mode: DisplayMode) => void;
|
||||
setMarqueeColor: (hex: string) => void;
|
||||
setSnapColor: (hex: string) => void;
|
||||
}
|
||||
|
||||
export function createViewSlice(api: StoreApi<ViewSlice>): ViewSlice {
|
||||
@@ -80,6 +90,8 @@ export function createViewSlice(api: StoreApi<ViewSlice>): ViewSlice {
|
||||
activeCategoryCode:
|
||||
sampleProject.walls[0]?.categoryCode ?? sampleProject.layers[0].code,
|
||||
displayModes: {},
|
||||
marqueeColor: DEFAULT_MARQUEE_COLOR,
|
||||
snapColor: DEFAULT_SNAP_COLOR,
|
||||
|
||||
setActiveLevelId: (id) =>
|
||||
set((s) => ({
|
||||
@@ -105,5 +117,7 @@ export function createViewSlice(api: StoreApi<ViewSlice>): ViewSlice {
|
||||
if (!id) return;
|
||||
set((s) => ({ displayModes: { ...s.displayModes, [id]: mode } }));
|
||||
},
|
||||
setMarqueeColor: (hex) => set({ marqueeColor: hex }),
|
||||
setSnapColor: (hex) => set({ snapColor: hex }),
|
||||
};
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user