SketchUp API:如何向菜单项添加复选框

SketchUp API: How to add a check box to a menu item

我在 Ruby API 文档中没有看到它,但以防万一我遗漏了什么...

我正在为 SketchUp 编写一个插件,我正在尝试向菜单栏添加一些选项。我的一个选项最适合用作复选框,但现在我必须有两个单独的按钮。有没有办法用 Ruby API 创建复选框菜单项?

这是我必须做的:

foo = true
UI.menu("Plugins").add_item("Turn foo_option on") { @foo = true }
UI.menu("Plugins").add_item("Turn foo_option off") { @foo = false }

...然后我只使用 foo 来更改选项。有更简洁的方法吗?

我以前从未见过从扩展创建的复选框菜单项,但我是初学者,所以这可能就是原因。

另一种方法是这样做:

unless file_loaded?(__FILE__)
    plugin_menu = UI.menu("Plugin")
    option_menu = plugin_menu.add_submenu("NameOfOption")
    option_menu.add_item("OptionA"){ }
    option_menu.add_item("OptionB"){ }
    file_loaded(__FILE__)
end

file_loaded?(_ FILE _) 确保菜单仅创建一次,而不是每次加载脚本时创建。我希望这是有帮助的。也许有些专家现在有办法创建复选框菜单。

SketchUp 可以在菜单项中添加复选标记。菜单项和命令都可以有一个验证过程。 set_validation_proc 的文档给出了这个例子:

plugins_menu = UI.menu("Plugins")
item = plugins_menu.add_item("Test") { UI.messagebox "My Test Item"}
status = plugins_menu.set_validation_proc(item)  {
  if Sketchup.is_pro?
   MF_ENABLED
  else
   MF_GRAYED
  end
}

尽管对于复选标记,您可以使用常量 MF_CHECKEDMF_UNCHECKED

http://www.sketchup.com/intl/en/developer/docs/ourdoc/menu#set_validation_proc

http://www.sketchup.com/intl/en/developer/docs/ourdoc/command#set_validation_proc