直接粘main.js的代码吧,其中正常部分去掉了中文注释,有中文部分就是菜单相关部分,基本就是最下面的一堆。
const electron = require('electron')
const app = electron.app
const BrowserWindow = electron.BrowserWindow
const Menu = electron.Menu
const path = require('path')
if (process.mas) app.setName('Your Electron App Name')
let mainWindow
function createWindow () {
let windowOptions = {
width: 1220,
height: 780,
minWidth: 1220,
minHeight: 780,
title: app.getName()
}
if (process.platform === 'linux') {
windowOptions.icon = path.join(__dirname, '/app/ico/your-ico.png')
}
mainWindow = new BrowserWindow(windowOptions);
mainWindow.loadURL(path.join('file://', __dirname, '/index.html'))
mainWindow.on('closed', function () {
mainWindow = null
})
}
app.on('ready', function() {
const menu = Menu.buildFromTemplate(template)
Menu.setApplicationMenu(menu) // 设置菜单部分
createWindow()
})
app.on('window-all-closed', function () {
if (process.platform !== 'darwin') app.quit()
})
app.on('activate', function () {
if (mainWindow === null) createWindow()
})
app.on('browser-window-created', function () {
let reopenMenuItem = findReopenMenuItem()
if (reopenMenuItem) reopenMenuItem.enabled = false
})
app.on('window-all-closed', function () {
let reopenMenuItem = findReopenMenuItem()
if (reopenMenuItem) reopenMenuItem.enabled = true
app.quit()
})
/**
* 注册键盘快捷键
* 其中:label: '切换开发者工具',这个可以在发布时注释掉
*/
let template = [
{
label: 'Edit ( 操作 )',
submenu: [{
label: 'Copy ( 复制 )',
accelerator: 'CmdOrCtrl+C',
role: 'copy'
}, {
label: 'Paste ( 粘贴 )',
accelerator: 'CmdOrCtrl+V',
role: 'paste'
}, {
label: 'Reload ( 重新加载 )',
accelerator: 'CmdOrCtrl+R',
click: function (item, focusedWindow) {
if (focusedWindow) {
// on reload, start fresh and close any old
// open secondary windows
if (focusedWindow.id === 1) {
BrowserWindow.getAllWindows().forEach(function (win) {
if (win.id > 1) {
win.close()
}
})
}
focusedWindow.reload()
}
}
}]
},
{
label: 'Window ( 窗口 )',
role: 'window',
submenu: [{
label: 'Minimize ( 最小化 )',
accelerator: 'CmdOrCtrl+M',
role: 'minimize'
}, {
label: 'Close ( 关闭 )',
accelerator: 'CmdOrCtrl+W',
role: 'close'
}, {
label: '切换开发者工具',
accelerator: (function () {
if (process.platform === 'darwin') {
return 'Alt+Command+I'
} else {
return 'Ctrl+Shift+I'
}
})(),
click: function (item, focusedWindow) {
if (focusedWindow) {
focusedWindow.toggleDevTools()
}
}
},{
type: 'separator'
}]
},
{
label: 'Help ( 帮助 ) ',
role: 'help',
submenu: [{
label: 'FeedBack ( 意见反馈 )',
click: function () {
electron.shell.openExternal('https://forum.iptchain.net')
}
}]
}
]
/**
* 增加更新相关的菜单选项
*/
function addUpdateMenuItems (items, position) {
if (process.mas) return
const version = electron.app.getVersion()
let updateItems = [{
label: `Version ${version}`,
enabled: false
}, {
label: 'Checking for Update',
enabled: false,
key: 'checkingForUpdate'
}, {
label: 'Check for Update',
visible: false,
key: 'checkForUpdate',
click: function () {
require('electron').autoUpdater.checkForUpdates()
}
}, {
label: 'Restart and Install Update',
enabled: true,
visible: false,
key: 'restartToUpdate',
click: function () {
require('electron').autoUpdater.quitAndInstall()
}
}]
items.splice.apply(items, [position, 0].concat(updateItems))
}
function findReopenMenuItem () {
const menu = Menu.getApplicationMenu()
if (!menu) return
let reopenMenuItem
menu.items.forEach(function (item) {
if (item.submenu) {
item.submenu.items.forEach(function (item) {
if (item.key === 'reopenMenuItem') {
reopenMenuItem = item
}
})
}
})
return reopenMenuItem
}
// 针对Mac端的一些配置
if (process.platform === 'darwin') {
const name = electron.app.getName()
template.unshift({
label: name,
submenu: [{
label: 'Quit ( 退出 )',
accelerator: 'Command+Q',
click: function () {
app.quit()
}
}]
})
// Window menu.
template[3].submenu.push({
type: 'separator'
}, {
label: 'Bring All to Front',
role: 'front'
})
addUpdateMenuItems(template[0].submenu, 1)
}
// 针对Windows端的一些配置
if (process.platform === 'win32') {
const helpMenu = template[template.length - 1].submenu
addUpdateMenuItems(helpMenu, 0)
}
The end.
网友评论