2016-07-05 79 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

謝謝!會嘗試一下。 –

相關問題