GMX_menu

A simple userscript menu manager, treats all menu items as a GMX_menu object.

目前为 2023-08-25 提交的版本。查看 最新版本

此脚本不应直接安装,它是一个供其他脚本使用的外部库。如果您需要使用该库,请在脚本元属性加入:// @require https://update.cn-greasyfork.org/scripts/473817/1240349/GMX_menu.js

作者
DianaBlessU
版本
0.1
创建于
2023-08-24
更新于
2023-08-25
大小
2.8 KB
许可证
暂无

/*

A simple userscript menu manager, Treats all menu items as a menu object.

Key Features:

1. Create and access menu items via GMX_menu object, no need to care the item order.
2. Caption text of menu item can be changed at any time.
3. Menu item can act as a Check box.
4. Menu items can act as a radio button group.


Usage:

// To use this script, you need to grant GM_registerMenuCommand and GM_unregisterMenuCommand.

// Install a new menu, (all previous menu items will be removed)

// The value of name must be unique in the menu.
// If autoRefresh is true, when the menu item is modified, the rerendering will be automatically executed,
// otherwise its appearance will remain unchanged unless you manually call the GMX_menu.refresh() method.
// If a menu item has a checked attribute, it will be rendered as a checkable entry.
// If it also has a group attribute at the same time, it will be associated to a radio button group.

const sampleOptions = {
autoRefresh: true,
items: [
{name: "cmd1", text: "🥣 Radio 1", checked: true, group: "g1", callback: ()=>{alert("Radio 1 clicked!")}},
{name: "cmd2", text: "⭐ Radio 2", checked: false, group: "g1", callback: ()=>{alert("Radio 2 clicked!")}},
{name: "sep1", separator: true},
{name: "cmd3", text: "🍬 Checkbox 3", checked: false, callback: ()=>{alert("Checkbox 3 clicked!")}},
{name: "cmd4", text: "🍦 Command 4", callback: ()=>{alert("Command 4 clicked!")}},
]
}
GMX_menu.install(sampleOptions);

// Remove menu.
GMX_menu.uninstall()

// Change the caption text of a menu item by name.
GMX_menu.setText(name, text)

// Get the check state of a menu item by name.
// If the item is unchackable, it will returns undefined.
GMX_menu.isChecked(name)

// Trigger the select event of specific menu item by name.
// The check state of the item will also be changed if it's checkable.
GMX_menu.triggerSelect(name)

// Select the specific item on userscript menu without excuting it's callback function.
// Usually used to modify the check state of a specific menu item.
GMX_menu.renderSelect(name)

// Rebuild the whole menu by installed option.
GMX_menu.refresh()

*/