Commit: 8947cfe30c02bb0c65fd16e96a3be2121e9cd639 Author: Antony Riakiotakis Date: Sat May 31 00:36:43 2014 +0300 https://developer.blender.org/rB8947cfe30c02bb0c65fd16e96a3be2121e9cd639
Add generic python operator that spawns a pie menu for a specific operator enum. =================================================================== M release/scripts/startup/bl_operators/wm.py M source/blender/editors/interface/interface_layout.c M source/blender/editors/sculpt_paint/paint_ops.c =================================================================== diff --git a/release/scripts/startup/bl_operators/wm.py b/release/scripts/startup/bl_operators/wm.py index f218920..ea556ee 100644 --- a/release/scripts/startup/bl_operators/wm.py +++ b/release/scripts/startup/bl_operators/wm.py @@ -529,6 +529,33 @@ class WM_OT_context_menu_enum(Operator): return {'PASS_THROUGH'} +class WM_OT_context_operator_pie_enum(Operator): + bl_idname = "wm.context_operator_pie_enum" + bl_label = "Operator Enum Pie" + bl_options = {'UNDO', 'INTERNAL'} + data_path = rna_path_prop + title = StringProperty( + name="Title", + description="Pie Menu Title", + maxlen=1024, + ) + + def invoke(self, context, event): + data_path = self.data_path + + value_path, prop_string = data_path.rsplit(".", 1) + op = eval("bpy.ops.%s" % value_path) + + def draw_cb(self, context): + layout = self.layout + pie = layout.pie() + pie.operator_enum(op.idname_py(), prop_string) + + context.window_manager.pie_menu(draw_func=draw_cb, title=self.title, event=event) + + return {'PASS_THROUGH'} + + class WM_OT_context_pie_enum(Operator): bl_idname = "wm.context_pie_enum" bl_label = "Context Enum Pie" diff --git a/source/blender/editors/interface/interface_layout.c b/source/blender/editors/interface/interface_layout.c index ad8ff2a..4e53015 100644 --- a/source/blender/editors/interface/interface_layout.c +++ b/source/blender/editors/interface/interface_layout.c @@ -2215,10 +2215,10 @@ static RadialDirection ui_get_radialbut_vec(float *vec, short itemnum, short tot return dir; } -static bool ui_item_is_radial_displayable (uiButtonItem *UNUSED(bitem)) +static bool ui_item_is_radial_displayable (uiButtonItem *bitem) { -// if (bitem->but->type == LABEL) -// return false; + if (bitem->but->type == LABEL) + return false; return true; } @@ -2254,7 +2254,6 @@ static void ui_litem_layout_radial(uiLayout *litem) /* not all button types are drawn in a radial menu, do filtering here */ if(ui_item_is_radial_displayable(bitem)) { - itemnum++; bitem->but->pie_dir = ui_get_radialbut_vec(vec, itemnum, totitems); diff --git a/source/blender/editors/sculpt_paint/paint_ops.c b/source/blender/editors/sculpt_paint/paint_ops.c index 4d65388..a2a4773 100644 --- a/source/blender/editors/sculpt_paint/paint_ops.c +++ b/source/blender/editors/sculpt_paint/paint_ops.c @@ -1191,11 +1191,13 @@ void ED_keymap_paint(wmKeyConfig *keyconf) RNA_boolean_set(kmi->ptr, "create_missing", 1); /* */ + kmi = WM_keymap_add_item(keymap, "WM_OT_context_operator_pie_enum", TABKEY, KM_PRESS, 0, 0); + RNA_string_set(kmi->ptr, "data_path", "object.mode_set.mode"); + RNA_string_set(kmi->ptr, "title", "Object Mode"); + kmi = WM_keymap_add_item(keymap, "WM_OT_context_pie_enum", AKEY, KM_PRESS, 0, 0); RNA_string_set(kmi->ptr, "data_path", "tool_settings.sculpt.brush.stroke_method"); - WM_keymap_add_pie_menu(keymap, "VIEW3D_PIE_object_mode", TABKEY, KM_PRESS, 0, 0); - kmi = WM_keymap_add_item(keymap, "WM_OT_context_toggle", SKEY, KM_PRESS, KM_SHIFT, 0); RNA_string_set(kmi->ptr, "data_path", "tool_settings.sculpt.brush.use_smooth_stroke"); _______________________________________________ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org http://lists.blender.org/mailman/listinfo/bf-blender-cvs