Files
Claude Project Manager 3f2a2fc4dc Initial commit
2025-07-10 19:36:09 +02:00

131 Zeilen
3.7 KiB
JavaScript

const { app, BrowserWindow, Menu, ipcMain, nativeTheme } = require('electron');
const path = require('path');
let mainWindow;
let isDarkMode = true;
function createWindow() {
mainWindow = new BrowserWindow({
width: 1400,
height: 900,
minWidth: 1000,
minHeight: 700,
webPreferences: {
nodeIntegration: false,
contextIsolation: true,
preload: path.join(__dirname, 'preload.js')
},
icon: path.join(__dirname, 'assets', 'icon.png'),
backgroundColor: '#000000',
resizable: true,
frame: false
});
mainWindow.loadFile('index.html');
const menu = Menu.buildFromTemplate([
{
label: 'Datei',
submenu: [
{
label: 'Neue Datei analysieren',
accelerator: 'CmdOrCtrl+N',
click: () => mainWindow.webContents.send('new-file')
},
{ type: 'separator' },
{
label: 'Beenden',
accelerator: 'CmdOrCtrl+Q',
click: () => app.quit()
}
]
},
{
label: 'Ansicht',
submenu: [
{
label: 'Dark Mode',
type: 'checkbox',
checked: isDarkMode,
click: (menuItem) => {
isDarkMode = menuItem.checked;
mainWindow.webContents.send('toggle-theme', isDarkMode);
nativeTheme.themeSource = isDarkMode ? 'dark' : 'light';
}
},
{ type: 'separator' },
{
label: 'Vollbild',
accelerator: 'F11',
click: () => {
mainWindow.setFullScreen(!mainWindow.isFullScreen());
}
},
{
label: 'Entwicklertools',
accelerator: 'F12',
click: () => mainWindow.webContents.toggleDevTools()
}
]
},
{
label: 'Hilfe',
submenu: [
{
label: 'Über Metadaten-Crawler',
click: () => {
const { dialog } = require('electron');
dialog.showMessageBox(mainWindow, {
type: 'info',
title: 'Über Metadaten-Crawler',
message: 'Metadaten-Crawler (MC)',
detail: 'Version 1.0.0\n\nEin professionelles Tool zur Extraktion von Metadaten aus Bild- und Videodateien.\n\n© 2025 IntelSight',
buttons: ['OK']
});
}
}
]
}
]);
Menu.setApplicationMenu(menu);
mainWindow.on('closed', () => {
mainWindow = null;
});
}
app.whenReady().then(() => {
createWindow();
app.on('activate', () => {
if (BrowserWindow.getAllWindows().length === 0) {
createWindow();
}
});
});
app.on('window-all-closed', () => {
if (process.platform !== 'darwin') {
app.quit();
}
});
// IPC handlers
ipcMain.handle('get-theme', () => isDarkMode);
ipcMain.on('minimize-window', () => {
mainWindow.minimize();
});
ipcMain.on('maximize-window', () => {
if (mainWindow.isMaximized()) {
mainWindow.unmaximize();
} else {
mainWindow.maximize();
}
});
ipcMain.on('close-window', () => {
mainWindow.close();
});