123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181 |
- // Modules to control application life and create native browser window
- const {app, BrowserWindow, ipcMain, dialog, Menu } = require('electron')
- const path = require('path')
- const titleBarStyle = (process.platform === 'darwin') ? 'hiddenInset' : 'default';
- const frameWin = (process.platform === 'darwin') ? false : true;
- const isMac = process.platform === 'darwin'
- let mainWindow;
- function createWindow () {
- // Create the browser window.
- mainWindow = new BrowserWindow({
- titleBarStyle: titleBarStyle,
- autoHideMenuBar: true,
- vibrancy: 'dark',
- width: 640,
- height: 600,
- minWidth: 400,
- minHeight: 400,
- show: true,
- skipTaskbar: true,
- transparent: false,
- frame: frameWin,
- fullScreenable: true,
- resizable: true,
- backgroundColor: "black", //background,
- paintWhenInitiallyHidden: true,
- webPreferences: {
- preload: path.join(__dirname, 'preload.js'),
- // contextIsolation: false,
- // nodeIntegration: true,
- }
- })
- // and load the index.html of the app.
- mainWindow.loadFile('index.html')
- // Open the DevTools.
- // mainWindow.webContents.openDevTools()
- }
- // This method will be called when Electron has finished
- // initialization and is ready to create browser windows.
- // Some APIs can only be used after this event occurs.
- app.whenReady().then(() => {
- createWindow()
- ipcMain.handle('dialog', (event, method, params) => {
- return dialog[method](params);
- });
- app.on('activate', function () {
- // On macOS it's common to re-create a window in the app when the
- // dock icon is clicked and there are no other windows open.
- if (BrowserWindow.getAllWindows().length === 0) createWindow()
- })
- })
- // Quit when all windows are closed, except on macOS. There, it's common
- // for applications and their menu bar to stay active until the user quits
- // explicitly with Cmd + Q.
- app.on('window-all-closed', function () {
- if (process.platform !== 'darwin') app.quit()
- })
- // In this file you can include the rest of your app's specific main process
- // code. You can also put them in separate files and require them here.
- function toggleFullscreen() {
- const currWind = BrowserWindow.getFocusedWindow().name
- if (mainWindow.isFullScreen()) {
- mainWindow.setFullScreen(false);
- } else {
- mainWindow.setFullScreen(true);
- }
- }
- const template = [
- // { role: 'appMenu' }
- ...(isMac ? [{
- label: app.name,
- submenu: [
- { role: 'about', },
- { type: 'separator' },
- { role: 'services' },
- { type: 'separator' },
- { role: 'hide' },
- { role: 'hideothers' },
- { role: 'unhide' },
- { type: 'separator' },
- { role: 'quit' }
- ]
- }] : []),
- // { role: 'fileMenu' }
- {
- label: 'File',
- submenu: [
- isMac ? { role: 'close' } : { role: 'quit' }
- ]
- },
- // { role: 'editMenu' }
- {
- label: 'Edit',
- submenu: [
- { role: 'undo' },
- { role: 'redo' },
- { type: 'separator' },
- { role: 'cut' },
- { role: 'copy' },
- { role: 'paste' },
- ...(isMac ? [
- { role: 'pasteAndMatchStyle' },
- { role: 'delete' },
- { role: 'selectAll' },
- { type: 'separator' },
- {
- label: 'Speech',
- submenu: [
- { role: 'startspeaking' },
- { role: 'stopspeaking' }
- ]
- }
- ] : [
- { role: 'delete' },
- { type: 'separator' },
- { role: 'selectAll' }
- ])
- ]
- },
- // { role: 'viewMenu' }
- {
- label: 'View',
- submenu: [
- { role: 'reload' },
- { role: 'forcereload' },
- { role: 'toggledevtools' },
- { type: 'separator' },
- { role: 'resetzoom' },
- { role: 'zoomin' },
- { role: 'zoomout' },
- { type: 'separator' },
- {
- label: 'Toggle Full Screen',
- click: () => { toggleFullscreen();},
- accelerator: 'CmdOrCtrl+f'
- }
- ]
- },
- // { role: 'windowMenu' }
- {
- label: 'Window',
- submenu: [
- { role: 'minimize' },
- { role: 'zoom' },
- ...(isMac ? [
- { type: 'separator' },
- { role: 'front' },
- { type: 'separator' },
- { role: 'window' }
- ] : [
- { role: 'close' }
- ])
- ]
- },
- {
- role: 'help',
- submenu: [
- {
- label: 'Learn More',
- click: async () => {
- const { shell } = require('electron')
- await shell.openExternal('https://niemes.info')
- }
- }
- ]
- }
- ]
- const menu = Menu.buildFromTemplate(template)
- Menu.setApplicationMenu(menu)
|