const {dialog, Menu} = require('electron')
const {shell, app} = require('electron')
function mainMenu() {
const template = [
{
label: global.p3xre.strings.title,
submenu: [
{
label: global.p3xre.strings.menu.main.home,
click: () => {
global.p3xre.mainWindow.webContents.send('p3x-menu', {
action: 'main.statistics'
})
}
},
{
label: global.p3xre.strings.menu.main.console,
click: () => {
global.p3xre.mainWindow.webContents.send('p3x-menu', {
action: 'console'
})
}
},
{
label: global.p3xre.strings.menu.main.settings,
click: () => {
global.p3xre.mainWindow.webContents.send('p3x-menu', {
action: 'settings'
})
}
},
{
label: global.p3xre.strings.menu.main.overview,
click: () => {
global.p3xre.mainWindow.webContents.send('p3x-menu', {
action: 'overview'
})
}
},
{type: 'separator'},
{
label: global.p3xre.strings.menu.main.quit,
click: () => {
app.quit()
}
},
],
},
{
label: global.p3xre.strings.menu.edit.title,
submenu: [
{type: 'separator'},
{
label: global.p3xre.strings.menu.edit.undo,
role: 'undo'
},
{
label: global.p3xre.strings.menu.edit.redo,
role: 'redo'
},
{type: 'separator'},
{
label: global.p3xre.strings.menu.edit.cut,
role: 'cut'
},
{
label: global.p3xre.strings.menu.edit.copy,
role: 'copy'
},
{
label: global.p3xre.strings.menu.edit.paste,
role: 'paste'
},
{
label: global.p3xre.strings.menu.edit.pasteandmatchstyle,
role: 'pasteandmatchstyle'
},
{
label: global.p3xre.strings.menu.edit.delete,
role: 'delete'
},
{
label: global.p3xre.strings.menu.edit.selectall,
role: 'selectall'
}
]
},
{
label: global.p3xre.strings.menu.view.title,
submenu: [
{
label: global.p3xre.strings.menu.view.reload,
role: 'reload'
},
{
label: global.p3xre.strings.menu.view.forcereload,
role: 'forcereload'
},
{
label: global.p3xre.strings.menu.view.toggledevtools,
role: 'toggledevtools'
},
{type: 'separator'},
{
label: global.p3xre.strings.menu.view.resetzoom,
role: 'resetzoom'
},
{
label: global.p3xre.strings.menu.view.zoomin,
role: 'zoomin'
},
{
label: global.p3xre.strings.menu.view.zoomout,
role: 'zoomout'
},
{type: 'separator'},
{
label: global.p3xre.strings.menu.view.togglefullscreen,
role: 'togglefullscreen'
}
]
},
{
label: global.p3xre.strings.menu.language.title,
submenu: []
},
{
role: 'help',
submenu: [
{
label: global.p3xre.strings.menu.help.changelog,
click: () => {
shell.openExternal('https://github.com/patrikx3/redis-ui/blob/master/changelog.md#change-log')
}
},
{
label: global.p3xre.strings.menu.help.download,
click: () => {
shell.openExternal('https://github.com/patrikx3/redis-ui/releases')
}
},
{
label: 'GitHub',
click: () => {
shell.openExternal('https://github.com/patrikx3/redis-ui/')
}
},
{
label: global.p3xre.strings.menu.help.developer,
click: () => {
shell.openExternal('https://patrikx3.com')
}
},
{
label: 'P3X',
click: () => {
shell.openExternal('https://github.com/patrikx3')
}
},
{
label: 'Corifeus',
click: () => {
shell.openExternal('https://corifeus.com')
}
},
{
label: 'NPM',
click: () => {
shell.openExternal('https://www.npmjs.com/package/p3x-redis-ui')
}
},
{type: 'separator'},
{
label: global.p3xre.strings.menu.help.checkUpdates,
click: () => {
const {autoUpdater} = require("electron-updater");
autoUpdater.checkForUpdatesAndNotify();
}
}
]
},
{
label: global.p3xre.strings.menu.donate.title,
click: () => {
shell.openExternal('https://paypal.me/patrikx3')
}
},
]
const languageIndex = template.length - 1 - 2
for (let translationKey of Object.keys(global.p3xre.strings.menu.language.translation)) {
const clickFunction = (key) => {
return () => {
require('../../../lib/set-language')({
key: key
})
global.p3xre.mainWindow.webContents.send('p3x-set-language', {
translation: key
})
}
}
template[languageIndex].submenu.push({
label: global.p3xre.strings.menu.language.translation[translationKey],
type: 'radio',
checked: global.p3xre.currentTranslation === translationKey,
click: clickFunction(translationKey)
})
}
const menu = Menu.buildFromTemplate(template)
Menu.setApplicationMenu(menu)
}
module.exports = mainMenu;