mirror of
https://github.com/th-ch/youtube-music.git
synced 2026-01-17 05:02:06 +00:00
Add menu customization in plugin system
This commit is contained in:
44
menu.js
44
menu.js
@ -1,26 +1,46 @@
|
|||||||
|
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 pluginEnabledMenu = (plugin, label = "") => ({
|
||||||
|
label: label || plugin,
|
||||||
|
type: "checkbox",
|
||||||
|
checked: config.plugins.isEnabled(plugin),
|
||||||
|
click: (item) => {
|
||||||
|
if (item.checked) {
|
||||||
|
config.plugins.enable(plugin);
|
||||||
|
} else {
|
||||||
|
config.plugins.disable(plugin);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
});
|
||||||
|
|
||||||
const mainMenuTemplate = (win) => [
|
const mainMenuTemplate = (win) => [
|
||||||
{
|
{
|
||||||
label: "Plugins",
|
label: "Plugins",
|
||||||
submenu: [
|
submenu: [
|
||||||
...getAllPlugins().map((plugin) => {
|
...getAllPlugins().map((plugin) => {
|
||||||
return {
|
const pluginPath = path.join(__dirname, "plugins", plugin, "menu.js");
|
||||||
label: plugin,
|
|
||||||
type: "checkbox",
|
if (existsSync(pluginPath)) {
|
||||||
checked: config.plugins.isEnabled(plugin),
|
const getPluginMenu = require(pluginPath);
|
||||||
click: (item) => {
|
return {
|
||||||
if (item.checked) {
|
label: plugin,
|
||||||
config.plugins.enable(plugin);
|
submenu: [
|
||||||
} else {
|
pluginEnabledMenu(plugin, "Enabled"),
|
||||||
config.plugins.disable(plugin);
|
...getPluginMenu(win, config.plugins.getOptions(plugin), () =>
|
||||||
}
|
module.exports.setApplicationMenu(win)
|
||||||
},
|
),
|
||||||
};
|
],
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
return pluginEnabledMenu(plugin);
|
||||||
}),
|
}),
|
||||||
{ type: "separator" },
|
{ type: "separator" },
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user