2016-07-05 7 views
2

私は、WindowsとUbuntu上でうまく動作するメニューを使って(雑誌をもとにした)アプリを持っていますが、アプリレベルのカスタムメニュー項目をMacOSに表示するのに問題があります。これらのメニュー項目は、FileおよびView項目です。Electron OSXアプリケーションメニュー - カスタムファイルメニューの追加方法?

私はelectron APIドキュメントを熟考しており、特に "role"属性に関するOSXの特別な考慮事項を見ていますが、私はここでも邪魔されています。私は、OSX上で、API文書にリストされているものの種類(例えば、レンダラースクリプトからのロールを使った「編集」メニュー項目)のためにメニュー項目を作成することができます。

私のメニュー項目は、Macメニューの予約済みの「ファイル/表示」メニュー項目名と衝突することがありますか?ここで

は私のメニューテンプレート文字列とスニップです:

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メニュー(最初の1)の下に配置されます。

+0

ありがとうございます!それを試してみる。 –

関連する問題