跳到主要内容

为动作设计自定义右键菜单

1.8.3+ 可为动作自定义右键菜单,用来解决两件事:

  1. 怎么进配置界面,让使用者改个性化设置。
  2. 一个动作有多种模式时,启动时怎么选定。

更早的做法是:在动作自己的窗口里加菜单,或启动时看有没有按 Ctrl。自定义右键菜单的原理更直接:

  • 点菜单项 = 运行该动作,并传入该项写死的参数。
  • 动作里读 {quicker_in_param},按参数走对应分支。

定义菜单

菜单文本写在动作 选项 里的「右键菜单定义」。编辑器右侧外观栏也能看到这项。输入框偏小,内容多时在框上右键,用大窗口改。

格式

  • 一行一项。
  • //// 开头当注释。
  • ---- 是分割线。
  • 竖线 | 左边是外观,右边是传给动作的参数。

例子:[fa:Light_Flag]菜单标题(tooltip内容)|_qk_menu_icon_menu

外观可含图标、标题、Tooltip(后两项可选):

  • [fa:图标名称]:默认色(动作菜单默认偏绿,和内置菜单区分)。
  • [fa:图标名:#RRGGBB]:自定义颜色,给有风险或要强调的项用。
  • 图标名可在编辑器右键「插入图标名菜单」里挑。见 在动作中使用图标

参数尽量用不容易撞车的值。多项时可加同一前缀,动作里按前缀分支。

多级菜单

缩进(1.36.7+):空格或 Tab 表示子菜单。同一级对齐,两种空白不要混用。

[fa:Light_Cog:#FF0000]设置
[fa:Light_Cog:#FF0000]设置项1|参数值1
[fa:Light_Cog:#FF0000]设置项11|参数值11
[fa:Light_Cog:#FF0000]设置项2|参数值2
[fa:Light_Cog:#FF0000]设置项21|参数值21

符号标记(1.36.7 之前):父项前加 [+],子项前加 [-]

////注释内容
无图标菜单|_qk_menu_no_icon
带Tooltip的菜单(tooltip内容)|_qk_menu_tooltip
[fa:Light_Flag]带图标的菜单(tooltip内容)|_qk_menu_icon_menu
[+][fa:Light_Cog]二级菜单(提示内容...)
[-][fa:Light_UserCircle]子菜单|_qk_menu_submenu
[fa:Light_Wrench:#f57e42]危险动作菜单(tooltip内容)|_qk_menu_sample

在动作里判断

如果 比较 {quicker_in_param} 和菜单参数:

如果/否则

依据条件执行操作
如果
$= {quicker_in_param} == "_qk_menu_no_icon"
是否符合指定的条件

命中就走对应步骤。

会变的菜单项

菜单文案要随工作模式变时,用 状态存取 改。

调试菜单项

方式 1:按 右侧 Shift 再点菜单项,走调试运行。

方式 2:另建一个动作,用 运行其他动作 填目标和参数,勾选调试。

运行或停止动作

执行指定的其他动作
目标动作
 
要运行的其他动作的ID或名称(使用名称时需要完全匹配且不能有重名动作)
命令参数
_qk_menu_no_icon
传递给目标动作的参数。存储在该动作的quicker_in_param变量中。

连续改的话,编辑器里 Ctrl + 点击保存 只存不关窗。

使用

在动作上右键点对应项即可。右侧 Shift + 点击该项则调试运行。

更多示例

来自 @瓜皮之牙:

入门教程:瓜皮的自定义右键菜单

限制与排障

  • 参数要足够特殊,避免和正常传入的数据撞车。
  • 缩进子菜单不要把空格和 Tab 混在同一份定义里。
  • 改了菜单参数却没改动作里的判断,点菜单会落到默认分支。

相关链接

更新于