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

时间:2015-08-19 19:31:27

标签: ruby user-interface checkbox menu sketchup

我在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来更改选项。有更清洁的方法吗?

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

我之前没有看过从扩展程序创建的复选框菜单项,但我是初级用户,这可能是原因。

另一种方法是这样做:

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 _)确保只创建一次菜单,而不是每次加载脚本。我希望这是有帮助的。也许一些专家现在可以创建一个复选框菜单。