Files
DOSSIER/src/LayerCombinationsApp.jsx
T
karim 375487c10c i18n DE/EN + DossierSettings panel + English file renames
i18n:
- src/i18n/de.json + en.json: 200+ keys covering all main panels
- src/i18n/index.js: t(key, vars) reads window.DOSSIER_LANG
- panel_base.py: injects window.DOSSIER_LANG from dossier_settings.json
- EbenenManager, GeschossManager, AusschnitteApp, LayoutsApp: all
  context menus and main labels use t()

DossierSettings panel:
- DossierSettingsApp.jsx: language toggle (DE/EN pill) + launcher status
- toolbar.py: OPEN_SETTINGS opens new Rhino-hosted satellite window,
  SAVE_LANG writes lang to dossier_settings.json + reloads all panels

File renames (JSX → English):
- ZeichnungsebenenApp → DrawingLevelsApp
- GeschossManager/Dialog/Settings → Floor*
- AusschnitteApp/Settings → Viewports*
- EbenenManager/Settings → Layer*
- GestaltungApp → StylesApp, OberleisteApp → ToolbarApp
- WerkzeugeApp → ToolsApp, DimensionenApp → DimensionsApp
- MassstabApp → ScaleApp, KameraApp → CameraApp
- MasseSettingsApp → UnitsSettingsApp
- ConfirmDeleteEbene → ConfirmDeleteLayer
- AusschnittLayerDialog → ViewportLayerDialog

Python module renames:
- rhinopanel.py → layers_panel.py
- oberleiste.py → toolbar.py
- gestaltung.py → styles.py
- werkzeuge.py → tools.py
- dimensionen.py → dimensions.py
- startup.py _MODULE_TO_PY updated, all cross-imports fixed
2026-06-06 11:09:33 +02:00

47 lines
1.5 KiB
React

// SPDX-License-Identifier: AGPL-3.0-or-later
// Copyright (C) 2026 Karim Gabriele Varano
import { useState, useEffect } from 'react'
import AusschnittLayerDialog from './components/ViewportLayerDialog'
import { onMessage, notifyReady } from './lib/rhinoBridge'
function send(type, payload) {
if (!window.RHINO_MODE) { console.log('[LayerCombinations] →', type, payload); return }
document.title = 'RHINOMSG::' + JSON.stringify({ type, payload: payload || {} })
}
export default function LayerCombinationsApp() {
const [layers, setLayers] = useState([])
const [presets, setPresets] = useState([])
useEffect(() => {
onMessage('LAYER_COMBINATIONS_STATE', ({ layers: ls, presets: ps }) => {
if (Array.isArray(ls)) setLayers(ls)
if (Array.isArray(ps)) setPresets(ps)
})
notifyReady()
}, [])
return (
<div style={{
position: 'absolute', inset: 0,
background: 'var(--bg-base)',
display: 'flex',
fontFamily: 'var(--font)',
color: 'var(--text-primary)',
}}>
<AusschnittLayerDialog
embedded
snapName="Ebenenkombinationen"
layers={layers}
presets={presets}
onClose={() => send('CANCEL')}
onSave={(draft) => send('APPLY_COMBINATION', {
layers: draft.map(l => ({ id: l.id, visible: l.visible, locked: l.locked })),
})}
onSavePreset={(name, layerStates) => send('SAVE_PRESET', { name, layers: layerStates })}
onDeletePreset={(name) => send('DELETE_PRESET', { name })}
/>
</div>
)
}