Add menu customization in plugin system

This commit is contained in:
TC
2021-03-24 21:40:12 +01:00
parent 84142ab27e
commit b1089b66c3

34
menu.js
View File

@ -1,16 +1,14 @@
const { existsSync } = require("fs");
const path = require("path");
const { app, Menu } = require("electron"); const { app, Menu } = require("electron");
const is = require("electron-is"); const is = require("electron-is");
const { getAllPlugins } = require("./plugins/utils"); const { getAllPlugins } = require("./plugins/utils");
const config = require("./config"); const config = require("./config");
const mainMenuTemplate = (win) => [ const pluginEnabledMenu = (plugin, label = "") => ({
{ label: label || plugin,
label: "Plugins",
submenu: [
...getAllPlugins().map((plugin) => {
return {
label: plugin,
type: "checkbox", type: "checkbox",
checked: config.plugins.isEnabled(plugin), checked: config.plugins.isEnabled(plugin),
click: (item) => { click: (item) => {
@ -20,7 +18,29 @@ const mainMenuTemplate = (win) => [
config.plugins.disable(plugin); config.plugins.disable(plugin);
} }
}, },
});
const mainMenuTemplate = (win) => [
{
label: "Plugins",
submenu: [
...getAllPlugins().map((plugin) => {
const pluginPath = path.join(__dirname, "plugins", plugin, "menu.js");
if (existsSync(pluginPath)) {
const getPluginMenu = require(pluginPath);
return {
label: plugin,
submenu: [
pluginEnabledMenu(plugin, "Enabled"),
...getPluginMenu(win, config.plugins.getOptions(plugin), () =>
module.exports.setApplicationMenu(win)
),
],
}; };
}
return pluginEnabledMenu(plugin);
}), }),
{ type: "separator" }, { type: "separator" },
{ {