Initial commit
Dieser Commit ist enthalten in:
131
main.js
Normale Datei
131
main.js
Normale Datei
@ -0,0 +1,131 @@
|
||||
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();
|
||||
});
|
||||
In neuem Issue referenzieren
Einen Benutzer sperren