[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [34872] trunk/blender/release/scripts/op/ wm.py: menu to select an enum from an RNA path:
Campbell Barton
ideasman42 at gmail.com
Tue Feb 15 19:12:42 CET 2011
Revision: 34872
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=34872
Author: campbellbarton
Date: 2011-02-15 18:12:41 +0000 (Tue, 15 Feb 2011)
Log Message:
-----------
menu to select an enum from an RNA path:
eg,
bpy.ops.wm.context_menu_enum(data_path="scene.tool_settings.vertex_paint.brush.stroke_method")
This saves us defining operators only for menus.
Modified Paths:
--------------
trunk/blender/release/scripts/op/wm.py
Modified: trunk/blender/release/scripts/op/wm.py
===================================================================
--- trunk/blender/release/scripts/op/wm.py 2011-02-15 16:37:44 UTC (rev 34871)
+++ trunk/blender/release/scripts/op/wm.py 2011-02-15 18:12:41 UTC (rev 34872)
@@ -384,6 +384,38 @@
return {'FINISHED'}
+class WM_MT_context_menu_enum(bpy.types.Menu):
+ bl_label = ""
+ data_path = "" # BAD DESIGN, set from operator below.
+ def draw(self, context):
+ data_path = self.data_path
+ value = context_path_validate(bpy.context, data_path)
+ if value is Ellipsis:
+ return {'PASS_THROUGH'}
+ base_path, prop_string = data_path.rsplit(".", 1)
+ value_base = context_path_validate(context, base_path)
+
+ values = [(i.name, i.identifier) for i in value_base.bl_rna.properties[prop_string].items]
+
+ for name, identifier in values:
+ prop = self.layout.operator("wm.context_set_enum", text=name)
+ prop.data_path = data_path
+ prop.value = identifier
+
+
+class WM_OT_context_menu_enum(bpy.types.Operator):
+ bl_idname = "wm.context_menu_enum"
+ bl_label = "Context Enum Menu"
+ bl_options = {'UNDO'}
+ data_path = rna_path_prop
+
+ def execute(self, context):
+ data_path = self.data_path
+ WM_MT_context_menu_enum.data_path = data_path
+ bpy.ops.wm.call_menu(name="WM_MT_context_menu_enum")
+ return {'PASS_THROUGH'}
+
+
class WM_OT_context_set_id(bpy.types.Operator):
'''Toggle a context value.'''
bl_idname = "wm.context_set_id"
More information about the Bf-blender-cvs
mailing list