const { contextBridge, ipcRenderer } = require('electron'); contextBridge.exposeInMainWorld('api', { // Konfiguration getConfig: () => ipcRenderer.invoke('get-config'), getPages: () => ipcRenderer.invoke('get-pages'), getCurrentPage: () => ipcRenderer.invoke('get-current-page'), getDeviceStatus: () => ipcRenderer.invoke('get-device-status'), // Button-Konfig setButtonConfig: (pageIndex, buttonIndex, config) => ipcRenderer.invoke('set-button-config', { pageIndex, buttonIndex, config }), resetButtonConfig: (pageIndex, buttonIndex) => ipcRenderer.invoke('reset-button-config', { pageIndex, buttonIndex }), swapButtonConfigs: (pageIndex, sourceIndex, targetIndex) => ipcRenderer.invoke('swap-button-configs', { pageIndex, sourceIndex, targetIndex }), // Knob-Konfiguration setKnobConfig: (knobIndex, config) => ipcRenderer.invoke('set-knob-config', { knobIndex, config }), resetKnobConfig: (knobIndex) => ipcRenderer.invoke('reset-knob-config', { knobIndex }), // Circle-Button-Konfig setCircleButtonConfig: (index, config) => ipcRenderer.invoke('set-circle-button-config', { index, config }), // Seitenverwaltung addPage: () => ipcRenderer.invoke('add-page'), deletePage: (pageIndex) => ipcRenderer.invoke('delete-page', pageIndex), renamePage: (pageIndex, name) => ipcRenderer.invoke('rename-page', { pageIndex, name }), switchPage: (pageIndex) => ipcRenderer.invoke('switch-page', pageIndex), setPageFocusConfig: (pageIndex, config) => ipcRenderer.invoke('set-page-focus-config', { pageIndex, config }), // Rendering renderPage: () => ipcRenderer.invoke('render-page'), // Datei-Operationen selectImage: () => ipcRenderer.invoke('select-image'), readImageData: (filePath) => ipcRenderer.invoke('read-image-data', filePath), exportConfig: () => ipcRenderer.invoke('export-config'), importConfig: () => ipcRenderer.invoke('import-config'), // Geraet reconnectDevice: () => ipcRenderer.invoke('reconnect-device'), setSetting: (key, value) => ipcRenderer.invoke('set-setting', { key, value }), // Fenstersteuerung minimizeWindow: () => ipcRenderer.invoke('window-minimize'), maximizeWindow: () => ipcRenderer.invoke('window-maximize'), closeWindow: () => ipcRenderer.invoke('window-close'), // Event-Listener onDeviceStatus: (callback) => { ipcRenderer.on('device-status', (event, data) => callback(data)); }, onButtonPress: (callback) => { ipcRenderer.on('button-press', (event, data) => callback(data)); }, onKnobRotate: (callback) => { ipcRenderer.on('knob-rotate', (event, data) => callback(data)); }, onPageChanged: (callback) => { ipcRenderer.on('page-changed', (event, data) => callback(data)); }, onMetricUpdate: (callback) => { ipcRenderer.on('metric-update', (event, data) => callback(data)); }, onButtonToggle: (callback) => { ipcRenderer.on('button-toggle', (event, data) => callback(data)); } });