Electron OSX应用程序菜单 - 如何添加自定义文件菜单?
问题描述:
我有一个应用程序(基于杂志tute)与在Windows和Ubuntu上正常工作的菜单,但我有麻烦让应用程序级自定义菜单项出现在MacOS上。这些菜单项是文件和查看条目。Electron OSX应用程序菜单 - 如何添加自定义文件菜单?
我沉迷于电子API文档,并且看到了OSX的特殊考虑,特别是关于“角色”属性,但我仍然在这里受到阻碍。我能够在OSX上创建API文档中列出的事物类型(例如使用角色的“编辑”菜单项,来自Renderer脚本)的菜单项,但不能为我的应用程序创建菜单项。
我的菜单项是否与Mac菜单中保留的“File/View”菜单项名称相冲突?
这里是我的菜单模板字符串剪断:
var SendEvent = function(name) {
return function() {win.webContents.send(name);};
};
var template = [
{label: 'File', submenu: [
{label: 'New', click: SendEvent('file-new')},
{label: 'Open', click: OpenFile},
{label: 'Save', click: SendEvent('file-save')},
{label: 'Save As', click: SendEvent('file-save-as')},
{label: 'Close', click: SendEvent('file-close')},
{type: 'separator'},
{label: 'Quit', click: function() {app.quit();}}
]}, {label: 'View', submenu: [
{label: 'HTML/Markdown', click: SendEvent('view-toggle')}
]}
];
Menu.setApplicationMenu(Menu.buildFromTemplate(template));
是否还有其他的例子在那里与在MacOS上工作的自定义文件和查看菜单操作的应用程序?
答
Menu.setApplicationMenu(Menu.buildFromTemplate(template));
应该createWindow()
函数中调用:
function createWindow() {
mainWindow = new BrowserWindow({
width: 800,
height: 600
})
mainWindow.loadURL(url.format({
pathname: path.join(__dirname, "index_menus.html"),
protocol: "file:",
slashes: true
}))
mainWindow.on("closed",() => {
mainWindow = null;
});
var template = [
{label: 'File', submenu: [
{label: 'New', click: SendEvent('file-new')},
{label: 'Open', click: SendEvent('file-open')},
{label: 'Save', click: SendEvent('file-save')},
{label: 'Save As', click: SendEvent('file-save-as')},
{label: 'Close', click: SendEvent('file-close')},
{type: 'separator'},
{label: 'Quit', click: function() {app.quit();}}
]},
{label: 'View', submenu: [
{label: 'HTML/Markdown', click: SendEvent('view-toggle')}
]}
];
Menu.setApplicationMenu(Menu.buildFromTemplate(template));
}
如果使用 “文件” 菜单,它会根据在MacOS YourAppName菜单(第一个)被放置。
谢谢!会尝试一下。 –