diff --git a/main.js b/main.js index b6b7d41..7e697e8 100644 --- a/main.js +++ b/main.js @@ -77,6 +77,7 @@ async function createMainWindow() { height: 800, minWidth: 750, minHeight: 800, + frame:false, webPreferences: { nodeIntegration: false, contextIsolation: true, @@ -118,6 +119,37 @@ ipcMain.on("set-progress", (event, percent) => { if (mainWindow) mainWindow.setProgressBar(percent / 100); // Electron attend 0 → 1 }); +// Topbar window controls +ipcMain.on("window-minimize", () => { + if (mainWindow) mainWindow.minimize(); +}); +ipcMain.on("window-maximize", () => { + if (mainWindow) { + if (mainWindow.isMaximized()) { + mainWindow.unmaximize(); + } else { + mainWindow.maximize(); + } + } +}); +ipcMain.on("window-close", () => { + if (mainWindow) mainWindow.close(); +}); + +// Topbar custom actions +ipcMain.on("open-devtools", () => { + if (mainWindow) mainWindow.webContents.openDevTools({ mode: 'detach' }); +}); +ipcMain.on("open-logs", () => { + if (logsFolderPath) shell.openPath(logsFolderPath); +}); +ipcMain.on("open-website", () => { + shell.openExternal("https://masteracnolo.github.io/FreedomLoader/index.html"); +}); +ipcMain.on("open-wiki", () => { + shell.openExternal("https://masteracnolo.github.io/FreedomLoader/pages/wiki.html"); +}); + // Menu function setupMenu() { const menuTemplate = [ diff --git a/preload.js b/preload.js index a1f3787..2f0e8e8 100644 --- a/preload.js +++ b/preload.js @@ -5,3 +5,14 @@ contextBridge.exposeInMainWorld("electronAPI", { selectDownloadFolder: () => ipcRenderer.invoke("select-download-folder"), setProgress: (percent) => ipcRenderer.send("set-progress", percent) }); + +// Contrôles de fenêtre et outils custom pour la topbar +contextBridge.exposeInMainWorld("topbarAPI", { + minimize: () => ipcRenderer.send("window-minimize"), + maximize: () => ipcRenderer.send("window-maximize"), + close: () => ipcRenderer.send("window-close"), + openDevTools: () => ipcRenderer.send("open-devtools"), + openLogs: () => ipcRenderer.send("open-logs"), + openWebsite: () => ipcRenderer.send("open-website"), + openWiki: () => ipcRenderer.send("open-wiki") +}); diff --git a/public/assets/icon/close.svg b/public/assets/icon/close.svg new file mode 100644 index 0000000..1d747f8 --- /dev/null +++ b/public/assets/icon/close.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/assets/icon/maximize.svg b/public/assets/icon/maximize.svg new file mode 100644 index 0000000..24dc937 --- /dev/null +++ b/public/assets/icon/maximize.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/assets/icon/minimize.svg b/public/assets/icon/minimize.svg new file mode 100644 index 0000000..f5d42a4 --- /dev/null +++ b/public/assets/icon/minimize.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/index.html b/public/index.html index f0eafd9..d68b91f 100644 --- a/public/index.html +++ b/public/index.html @@ -12,9 +12,23 @@