2016-07-05 82 views
2

我有一个应用程序(基于杂志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上工作的自定义文件和查看菜单操作的应用程序?

回答

1

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菜单(第一个)被放置。

+0

谢谢!会尝试一下。 –

相关问题