diff --git a/main.js b/main.js index d86891328..ecdc05fdb 100644 --- a/main.js +++ b/main.js @@ -7,6 +7,7 @@ const fs = require('fs') const autoUpdater = require('electron-updater').autoUpdater const autoUpdaterInterval = 60 * 60 * 1000; const ipc = electron.ipcMain; +const Menu = electron.Menu; app.setAppUserModelId('org.whispersystems.signal-desktop') @@ -91,6 +92,10 @@ app.on('ready', function() { setInterval(function() { autoUpdater.checkForUpdates(); }, autoUpdaterInterval); } + let template = require('./menu.js'); + const menu = Menu.buildFromTemplate(template) + Menu.setApplicationMenu(menu) + createWindow(); }) diff --git a/menu.js b/menu.js new file mode 100644 index 000000000..cefd0a8d0 --- /dev/null +++ b/menu.js @@ -0,0 +1,150 @@ +const {Menu} = require('electron') + +const template = [ + { + label: 'Edit', + submenu: [ + { + role: 'undo' + }, + { + role: 'redo' + }, + { + type: 'separator' + }, + { + role: 'cut' + }, + { + role: 'copy' + }, + { + role: 'paste' + }, + { + role: 'pasteandmatchstyle' + }, + { + role: 'delete' + }, + { + role: 'selectall' + } + ] + }, + { + label: 'View', + submenu: [ + { + role: 'reload' + }, + { + role: 'forcereload' + }, + { + role: 'toggledevtools' + }, + { + type: 'separator' + }, + { + role: 'resetzoom' + }, + { + role: 'zoomin' + }, + { + role: 'zoomout' + }, + { + type: 'separator' + }, + { + role: 'togglefullscreen' + } + ] + }, + { + role: 'window', + submenu: [ + { + role: 'minimize' + }, + { + role: 'close' + } + ] + } +] + +if (process.platform === 'darwin') { + template.unshift({ + submenu: [ + { + role: 'about' + }, + { + type: 'separator' + }, + { + role: 'hide' + }, + { + role: 'hideothers' + }, + { + role: 'unhide' + }, + { + type: 'separator' + }, + { + role: 'quit' + } + ] + }) + // Edit menu. + template[1].submenu.push( + { + type: 'separator' + }, + { + label: 'Speech', + submenu: [ + { + role: 'startspeaking' + }, + { + role: 'stopspeaking' + } + ] + } + ) + // Window menu. + template[3].submenu = [ + { + label: 'Close', + accelerator: 'CmdOrCtrl+W', + role: 'close' + }, + { + label: 'Minimize', + accelerator: 'CmdOrCtrl+M', + role: 'minimize' + }, + { + label: 'Zoom', + role: 'zoom' + }, + { + type: 'separator' + }, + { + label: 'Bring All to Front', + role: 'front' + } + ] +} + +module.exports = template;