Commit: 6fbd801713335ed5deb73632f457b551c4419721
Author: Antony Riakiotakis
Date:   Wed Jun 11 21:45:33 2014 +0300
https://developer.blender.org/rB6fbd801713335ed5deb73632f457b551c4419721

Add view and shade pie menus.

===================================================================

M       release/scripts/startup/bl_ui/space_view3d.py
M       source/blender/editors/interface/interface_layout.c
M       source/blender/editors/interface/interface_regions.c
M       source/blender/editors/space_view3d/view3d_edit.c
M       source/blender/editors/space_view3d/view3d_ops.c
M       source/blender/makesrna/intern/rna_userdef.c

===================================================================

diff --git a/release/scripts/startup/bl_ui/space_view3d.py 
b/release/scripts/startup/bl_ui/space_view3d.py
index 8d7bf0b..cfa5c32 100644
--- a/release/scripts/startup/bl_ui/space_view3d.py
+++ b/release/scripts/startup/bl_ui/space_view3d.py
@@ -1411,6 +1411,35 @@ class VIEW3D_MT_object_game(Menu):
         layout.operator("object.game_property_clear")
 
 
+class VIEW3D_PIE_view(Menu):
+    bl_label = "View"
+
+    def draw(self, context):
+        layout = self.layout
+
+        pie = layout.menu_pie()
+        pie.operator_enum("VIEW3D_OT_viewnumpad", "type")
+        pie.operator("VIEW3D_OT_view_persportho")
+
+class VIEW3D_PIE_shade(Menu):
+    bl_label = "Shade"
+
+    def draw(self, context):
+        layout = self.layout
+
+        pie = layout.menu_pie()
+        pie.prop(context.space_data, "viewport_shade", expand=True)
+        pie.separator()
+
+        if(context.active_object):
+            if(context.mode == 'EDIT_MESH'):
+                pie.operator("MESH_OT_faces_shade_smooth")
+                pie.operator("MESH_OT_faces_shade_flat")
+            else:
+                pie.operator("OBJECT_OT_shade_smooth")
+                pie.operator("OBJECT_OT_shade_flat")
+        
+
 # ********** Brush menu **********
 class VIEW3D_MT_brush(Menu):
     bl_label = "Brush"
diff --git a/source/blender/editors/interface/interface_layout.c 
b/source/blender/editors/interface/interface_layout.c
index 8cb5d4e..426309b 100644
--- a/source/blender/editors/interface/interface_layout.c
+++ b/source/blender/editors/interface/interface_layout.c
@@ -895,13 +895,15 @@ void uiItemsFullEnumO(uiLayout *layout, const char 
*opname, const char *propname
        if (prop && RNA_property_type(prop) == PROP_ENUM) {
                EnumPropertyItem *item, *item_array = NULL;
                bool free;
-               uiLayout *split = uiLayoutSplit(layout, 0.0f, false);
+               uiLayout *split;
                uiLayout *target;
 
                if (radial)
                        target = uiLayoutRadial(layout);
-               else
+               else {
+                       split = uiLayoutSplit(layout, 0.0f, false);
                        target = uiLayoutColumn(split, layout->align);
+               }
 
                RNA_property_enum_items_gettexted(block->evil_C, &ptr, prop, 
&item_array, NULL, &free);
                for (item = item_array; item->identifier; item++) {
@@ -2219,7 +2221,7 @@ static RadialDirection ui_get_radialbut_vec(float *vec, 
short itemnum, short tot
        return dir;
 }
 
-static bool ui_item_is_radial_displayable (uiItem *item)
+static bool ui_item_is_radial_displayable(uiItem *item)
 {
 
        if ((item->type == ITEM_BUTTON) && (((uiButtonItem *)item)->but->type 
== LABEL))
@@ -2228,6 +2230,15 @@ static bool ui_item_is_radial_displayable (uiItem *item)
        return true;
 }
 
+static bool ui_item_is_radial_drawable(uiButtonItem *bitem)
+{
+
+       if (ELEM(bitem->but->type, SEPR, SEPRLINE))
+               return false;
+
+       return true;
+}
+
 static void ui_litem_layout_radial(uiLayout *litem)
 {
        uiItem *item;
@@ -2276,8 +2287,9 @@ static void ui_litem_layout_radial(uiLayout *litem)
                                bitem->but->rect.ymax *= 1.5;
                                /* add a little bit more here */
                                bitem->but->rect.xmax += UI_UNIT_X;
-                               /* enable drawing as pie item */
-                               bitem->but->dt = UI_EMBOSSR;
+                               /* enable drawing as pie item if supported by 
widget */
+                               if (ui_item_is_radial_drawable(bitem))
+                                       bitem->but->dt = UI_EMBOSSR;
                        }
 
                        ui_item_size(item, &itemw, &itemh);
diff --git a/source/blender/editors/interface/interface_regions.c 
b/source/blender/editors/interface/interface_regions.c
index 5754708..640f1b1 100644
--- a/source/blender/editors/interface/interface_regions.c
+++ b/source/blender/editors/interface/interface_regions.c
@@ -2559,7 +2559,6 @@ struct uiPieMenu *uiPieMenuBegin(struct bContext *C, 
const char *title, int icon
 {
        uiStyle *style = UI_GetStyleDraw();
        uiPieMenu *pie = MEM_callocN(sizeof(uiPopupMenu), "pie menu");
-       uiBut *but;
 
        pie->block_radial = uiBeginBlock(C, NULL, __func__, UI_EMBOSS);
        /* may be useful later to allow spawning pies
@@ -2583,9 +2582,7 @@ struct uiPieMenu *uiPieMenuBegin(struct bContext *C, 
const char *title, int icon
                }
                else {
                        w = uiPieTitleWidth(title, 0);
-                       but = uiDefBut(pie->block_radial, LABEL, 0, title, 0, 
0, w, UI_UNIT_Y, NULL, 0.0, 0.0, 0, 0, "");
-                       /* hack, draw label with default transparent style */
-                       but->dt = UI_EMBOSSP;
+                       uiDefBut(pie->block_radial, LABEL, 0, title, 0, 0, w, 
UI_UNIT_Y, NULL, 0.0, 0.0, 0, 0, "");
                }
        }
 
diff --git a/source/blender/editors/space_view3d/view3d_edit.c 
b/source/blender/editors/space_view3d/view3d_edit.c
index 6099ef4..23ae87d 100644
--- a/source/blender/editors/space_view3d/view3d_edit.c
+++ b/source/blender/editors/space_view3d/view3d_edit.c
@@ -3473,12 +3473,12 @@ void VIEW3D_OT_zoom_camera_1_to_1(wmOperatorType *ot)
 /* ********************* Changing view operator ****************** */
 
 static EnumPropertyItem prop_view_items[] = {
-       {RV3D_VIEW_FRONT, "FRONT", 0, "Front", "View From the Front"},
-       {RV3D_VIEW_BACK, "BACK", 0, "Back", "View From the Back"},
-       {RV3D_VIEW_LEFT, "LEFT", 0, "Left", "View From the Left"},
+    {RV3D_VIEW_LEFT, "LEFT", 0, "Left", "View From the Left"},
        {RV3D_VIEW_RIGHT, "RIGHT", 0, "Right", "View From the Right"},
-       {RV3D_VIEW_TOP, "TOP", 0, "Top", "View From the Top"},
-       {RV3D_VIEW_BOTTOM, "BOTTOM", 0, "Bottom", "View From the Bottom"},
+    {RV3D_VIEW_BOTTOM, "BOTTOM", 0, "Bottom", "View From the Bottom"},
+    {RV3D_VIEW_TOP, "TOP", 0, "Top", "View From the Top"},
+    {RV3D_VIEW_FRONT, "FRONT", 0, "Front", "View From the Front"},
+       {RV3D_VIEW_BACK, "BACK", 0, "Back", "View From the Back"},
        {RV3D_VIEW_CAMERA, "CAMERA", 0, "Camera", "View From the Active 
Camera"},
        {0, NULL, 0, NULL, NULL}
 };
diff --git a/source/blender/editors/space_view3d/view3d_ops.c 
b/source/blender/editors/space_view3d/view3d_ops.c
index a8128ba..e8b55e2 100644
--- a/source/blender/editors/space_view3d/view3d_ops.c
+++ b/source/blender/editors/space_view3d/view3d_ops.c
@@ -279,13 +279,15 @@ void view3d_keymap(wmKeyConfig *keyconf)
        RNA_boolean_set(kmi->ptr, "center", true);
 
        /* numpad view hotkeys*/
+       WM_keymap_add_pie_menu(keymap, "VIEW3D_PIE_view", QKEY, KM_PRESS, 0, 0);
+
        RNA_enum_set(WM_keymap_add_item(keymap, "VIEW3D_OT_viewnumpad", PAD0, 
KM_PRESS, 0, 0)->ptr, "type", RV3D_VIEW_CAMERA);
        RNA_enum_set(WM_keymap_add_item(keymap, "VIEW3D_OT_viewnumpad", PAD1, 
KM_PRESS, 0, 0)->ptr, "type", RV3D_VIEW_FRONT);
        RNA_enum_set(WM_keymap_add_item(keymap, "VIEW3D_OT_view_orbit", PAD2, 
KM_PRESS, 0, 0)->ptr, "type", V3D_VIEW_STEPDOWN);
        RNA_enum_set(WM_keymap_add_item(keymap, "VIEW3D_OT_viewnumpad", PAD3, 
KM_PRESS, 0, 0)->ptr, "type", RV3D_VIEW_RIGHT);
        RNA_enum_set(WM_keymap_add_item(keymap, "VIEW3D_OT_view_orbit", PAD4, 
KM_PRESS, 0, 0)->ptr, "type", V3D_VIEW_STEPLEFT);
        WM_keymap_add_item(keymap, "VIEW3D_OT_view_persportho", PAD5, KM_PRESS, 
0, 0);
-       
+
        RNA_enum_set(WM_keymap_add_item(keymap, "VIEW3D_OT_view_orbit", PAD6, 
KM_PRESS, 0, 0)->ptr, "type", V3D_VIEW_STEPRIGHT);
        RNA_enum_set(WM_keymap_add_item(keymap, "VIEW3D_OT_viewnumpad", PAD7, 
KM_PRESS, 0, 0)->ptr, "type", RV3D_VIEW_TOP);
        RNA_enum_set(WM_keymap_add_item(keymap, "VIEW3D_OT_view_orbit", PAD8, 
KM_PRESS, 0, 0)->ptr, "type", V3D_VIEW_STEPUP);
@@ -382,11 +384,14 @@ void view3d_keymap(wmKeyConfig *keyconf)
        
        /* drawtype */
 
+       kmi = WM_keymap_add_pie_menu(keymap, "VIEW3D_PIE_shade", ZKEY, 
KM_PRESS, 0, 0);
+
+       /*
        kmi = WM_keymap_add_item(keymap, "WM_OT_context_toggle_enum", ZKEY, 
KM_PRESS, 0, 0);
        RNA_string_set(kmi->ptr, "data_path", "space_data.viewport_shade");
        RNA_string_set(kmi->ptr, "value_1", "SOLID");
        RNA_string_set(kmi->ptr, "value_2", "WIREFRAME");
-
+       */
        kmi = WM_keymap_add_item(keymap, "WM_OT_context_toggle_enum", ZKEY, 
KM_PRESS, KM_ALT, 0);
        RNA_string_set(kmi->ptr, "data_path", "space_data.viewport_shade");
        RNA_string_set(kmi->ptr, "value_1", "SOLID");
diff --git a/source/blender/makesrna/intern/rna_userdef.c 
b/source/blender/makesrna/intern/rna_userdef.c
index 30e8e5e..f793d35 100644
--- a/source/blender/makesrna/intern/rna_userdef.c
+++ b/source/blender/makesrna/intern/rna_userdef.c
@@ -3210,7 +3210,7 @@ static void rna_def_userdef_view(BlenderRNA *brna)
        RNA_def_property_range(prop, 0, 100);
        RNA_def_property_ui_text(prop, "Recenter Timeout", "Pie menus will use 
the initial mouse position as center for this amount of time (in  1/10ths of 
sec)");
 
-       prop = RNA_def_property(srna, "pie_menu_radius", PROP_INT, PROP_NONE);
+       prop = RNA_def_property(srna, "pie_menu_radius", PROP_INT, PROP_PIXEL);
        RNA_def_property_range(prop, 0, 1000);
        RNA_def_property_ui_text(prop, "Radius", "Pie menu size in pixels");

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to