|
@@ -1,13 +1,16 @@
|
|
|
// Modules to control application life and create native browser window
|
|
|
-const {app, BrowserWindow, ipcMain, dialog } = require('electron')
|
|
|
+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.
|
|
|
- const mainWindow = new BrowserWindow({
|
|
|
+ mainWindow = new BrowserWindow({
|
|
|
titleBarStyle: titleBarStyle,
|
|
|
autoHideMenuBar: true,
|
|
|
vibrancy: 'dark',
|
|
@@ -63,3 +66,116 @@ app.on('window-all-closed', function () {
|
|
|
|
|
|
// 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)
|