gpt4 book ai didi

macos - Electron OSX应用程序菜单-如何添加自定义文件菜单?

转载 作者:行者123 更新时间:2023-12-03 12:22:36 24 4
gpt4 key购买 nike

我有一个带有菜单的应用程序(基于杂志),该菜单在Windows和Ubuntu上都可以正常运行,但是我无法使应用程序级别的自定义菜单项出现在MacOS上。这些菜单项是"file"和“ View ”条目。

我已经仔细研究了 Electron API文档,并且看到了OSX的特殊注意事项,尤其是有关“角色”属性的信息,但在这里我仍然受阻。我可以在OSX上为API文档中列出的事物类型创建菜单项(例如,通过Renderer脚本使用角色进行“编辑”菜单项),但不能为我的应用创建菜单项。

我的菜单项可能与mac菜单中保留的“文件/ 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上使用自定义"file"和“查看”菜单操作的应用程序是否还有其他示例?

最佳答案

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));
}

如果使用"file"菜单,它将被放置在macOS上的YourAppName菜单下(第一个)。

关于macos - Electron OSX应用程序菜单-如何添加自定义文件菜单?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38208469/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com