我在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来更改选项。有更清洁的方法吗?
答案 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_CHECKED
和MF_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 _)确保只创建一次菜单,而不是每次加载脚本。我希望这是有帮助的。也许一些专家现在可以创建一个复选框菜单。