[Bf-blender-cvs] [6fbd801] pie-menus: Add view and shade pie menus.

Antony Riakiotakis noreply at git.blender.org
Tue Jun 17 01:27:26 CEST 2014


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");




More information about the Bf-blender-cvs mailing list