converse-desktop/modules/menu-service.js

131 lines
3.5 KiB
JavaScript
Raw Normal View History

2019-04-26 19:26:00 +00:00
/**
* Module for Menu functions.
*/
const {app, Menu, BrowserWindow} = require('electron')
2019-04-26 19:26:00 +00:00
let menuService = {}
2019-04-27 00:16:08 +00:00
2019-04-26 19:26:00 +00:00
menuService.createMenu = () => {
2019-04-27 00:16:08 +00:00
const isMac = process.platform === 'darwin'
const about = {
2020-08-07 11:53:57 +00:00
label: 'About Converse Desktop',
click: () => {
// @see https://github.com/electron/electron/issues/16558#issuecomment-484460276
// let activeWindow = BrowserWindow.getFocusedWindow()
let activeWindow = BrowserWindow.getAllWindows()[0]
activeWindow.show()
activeWindow.webContents.send('about-page-event')
}
}
2019-04-26 19:26:00 +00:00
const application = {
2020-08-07 11:53:57 +00:00
label: 'Converse Desktop',
2019-04-26 19:26:00 +00:00
submenu: [
... isMac ? [about] : [],
{
label: 'Reconnect',
accelerator: 'CmdOrCtrl+R',
click: () => {
2020-05-12 15:06:16 +00:00
let activeWindow = BrowserWindow.getAllWindows()[0]
activeWindow.show()
activeWindow.reload()
}
},
{
label: 'Force logout',
accelerator: 'CmdOrCtrl+D',
click: () => {
2020-05-12 15:06:16 +00:00
let activeWindow = BrowserWindow.getAllWindows()[0]
activeWindow.show()
2020-05-12 16:55:56 +00:00
activeWindow.webContents.send('force-logout-event')
}
},
{
type: 'separator',
},
2020-05-05 21:10:20 +00:00
{
label: 'Preferences',
accelerator: 'CmdOrCtrl+,',
click: () => {
2020-05-12 15:06:16 +00:00
let activeWindow = BrowserWindow.getAllWindows()[0]
activeWindow.show()
2020-05-12 16:55:56 +00:00
activeWindow.webContents.send('preferences-event')
2020-05-05 21:10:20 +00:00
}
},
{
type: 'separator',
},
2019-04-26 19:26:00 +00:00
{
label: 'Quit',
2020-05-13 15:23:33 +00:00
accelerator: 'CmdOrCtrl+Q',
2019-04-26 19:26:00 +00:00
click: () => {
2020-05-12 15:06:16 +00:00
app.isQuitting = true
2019-04-26 19:26:00 +00:00
app.quit()
},
},
],
}
const edit = {
label: 'Edit',
submenu: [
{
label: 'Undo',
accelerator: 'CmdOrCtrl+Z',
role: 'undo',
},
{
label: 'Redo',
accelerator: 'Shift+CmdOrCtrl+Z',
role: 'redo',
},
2019-04-26 19:26:00 +00:00
{
label: 'Cut',
accelerator: 'CmdOrCtrl+X',
role: 'cut',
},
{
label: 'Copy',
accelerator: 'CmdOrCtrl+C',
role: 'copy',
},
{
label: 'Paste',
accelerator: 'CmdOrCtrl+V',
role: 'paste',
},
{
label: 'Select All',
accelerator: 'CmdOrCtrl+A',
role: 'selectAll',
},
],
}
const help = {
label: 'Help',
2020-06-16 21:22:45 +00:00
submenu: [
2020-06-17 11:38:16 +00:00
... !isMac ? [about] : [],
2020-06-16 21:22:45 +00:00
{
label: 'Debug info',
accelerator: 'F12',
click: () => {
let activeWindow = BrowserWindow.getAllWindows()[0]
activeWindow.webContents.openDevTools()
}
}
]
}
2020-06-16 21:22:45 +00:00
const template = [application, edit, help]
2019-04-26 19:26:00 +00:00
Menu.setApplicationMenu(Menu.buildFromTemplate(template))
}
2019-04-27 00:16:08 +00:00
module.exports = menuService