[Bf-blender-cvs] [af8d5d2] pie-menus: Make the pie menu macro definition into a function.

Antony Riakiotakis noreply at git.blender.org
Sun Jun 29 21:11:42 CEST 2014


Commit: af8d5d2b24e08c66f9a68952842feb59c4b8b77e
Author: Antony Riakiotakis
Date:   Sun Jun 29 22:11:21 2014 +0300
https://developer.blender.org/rBaf8d5d2b24e08c66f9a68952842feb59c4b8b77e

Make the pie menu macro definition into a function.

Also set Z key as hybrid toggle/hold type menu.
To make this work, the macro definition must be set after python
initialization because we use operators defined in python (maybe it's
worth doing that for all macros?)

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

M	source/blender/editors/include/ED_screen.h
M	source/blender/editors/object/object_ops.c
M	source/blender/editors/space_view3d/view3d_ops.c
M	source/blender/windowmanager/WM_api.h
M	source/blender/windowmanager/intern/wm_event_system.c
M	source/blender/windowmanager/intern/wm_init_exit.c
M	source/blender/windowmanager/intern/wm_operators.c

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

diff --git a/source/blender/editors/include/ED_screen.h b/source/blender/editors/include/ED_screen.h
index d31be3e..0e8a451 100644
--- a/source/blender/editors/include/ED_screen.h
+++ b/source/blender/editors/include/ED_screen.h
@@ -122,6 +122,7 @@ bScreen	*ED_screen_animation_playing(const struct wmWindowManager *wm);
 
 /* screen keymaps */
 void    ED_operatortypes_screen(void);
+void    ED_operatormacros_screen(void);
 void    ED_keymap_screen(struct wmKeyConfig *keyconf);
 
 /* operators; context poll callbacks */
diff --git a/source/blender/editors/object/object_ops.c b/source/blender/editors/object/object_ops.c
index d1da57a..f1b9bd6 100644
--- a/source/blender/editors/object/object_ops.c
+++ b/source/blender/editors/object/object_ops.c
@@ -253,7 +253,8 @@ void ED_operatormacros_object(void)
 {
 	wmOperatorType *ot;
 	wmOperatorTypeMacro *otmacro;
-	
+	PointerRNA *ptr;
+
 	ot = WM_operatortype_append_macro("OBJECT_OT_duplicate_move", "Duplicate Objects",
 	                                  "Duplicate selected objects and move them", OPTYPE_UNDO | OPTYPE_REGISTER);
 	if (ot) {
@@ -272,18 +273,14 @@ void ED_operatormacros_object(void)
 		RNA_enum_set(otmacro->ptr, "proportional", PROP_EDIT_OFF);
 	}
 
-	ot = WM_operatortype_append_macro("OBJECT_OT_pie_mode_set", "Set Mode",
-	                                  "Set the mode of interaction for the selected object", OPTYPE_UNDO | OPTYPE_REGISTER);
-
-	if (ot) {
-		otmacro = WM_operatortype_macro_define(ot, "WM_OT_call_pie_menu_timer");
-		RNA_string_set(otmacro->ptr, "name", "VIEW3D_PIE_object");
-		otmacro = WM_operatortype_macro_define(ot, "OBJECT_OT_mode_set");
-		RNA_enum_set(otmacro->ptr, "mode", OB_MODE_EDIT);
-		RNA_boolean_set(otmacro->ptr, "toggle", true);
+	ptr = WM_operator_pie_macro("OBJECT_OT_pie_mode_set", "Set Mode",
+	                            "Set the mode of interaction for the selected object",
+	                            OPTYPE_UNDO | OPTYPE_REGISTER, "OBJECT_OT_mode_set", "VIEW3D_PIE_object");
 
+	if (ptr) {
+		RNA_enum_set(ptr, "mode", OB_MODE_EDIT);
+		RNA_boolean_set(ptr, "toggle", true);
 	}
-
 }
 
 static int object_mode_poll(bContext *C)
@@ -303,12 +300,6 @@ void ED_keymap_object(wmKeyConfig *keyconf)
 
 	kmi = WM_keymap_add_item(keymap, "OBJECT_OT_pie_mode_set", TABKEY, KM_PRESS, 0, 0);
 
-#if 0
-	/* Note: this keymap works disregarding mode */
-	kmi = WM_keymap_add_item(keymap, "OBJECT_OT_mode_set", TABKEY, KM_PRESS, 0, 0);
-	RNA_enum_set(kmi->ptr, "mode", OB_MODE_EDIT);
-	RNA_boolean_set(kmi->ptr, "toggle", true);
-
 	kmi = WM_keymap_add_item(keymap, "OBJECT_OT_mode_set", TABKEY, KM_PRESS, KM_CTRL, 0);
 	RNA_enum_set(kmi->ptr, "mode", OB_MODE_POSE);
 	RNA_boolean_set(kmi->ptr, "toggle", true);
@@ -320,7 +311,6 @@ void ED_keymap_object(wmKeyConfig *keyconf)
 	kmi = WM_keymap_add_item(keymap, "OBJECT_OT_mode_set", TABKEY, KM_PRESS, KM_CTRL, 0);
 	RNA_enum_set(kmi->ptr, "mode", OB_MODE_WEIGHT_PAINT);
 	RNA_boolean_set(kmi->ptr, "toggle", true);	
-#endif
 
 	WM_keymap_add_item(keymap, "OBJECT_OT_origin_set", CKEY, KM_PRESS, KM_ALT | KM_SHIFT | KM_CTRL, 0);
 
diff --git a/source/blender/editors/space_view3d/view3d_ops.c b/source/blender/editors/space_view3d/view3d_ops.c
index 049194a..258e9e5 100644
--- a/source/blender/editors/space_view3d/view3d_ops.c
+++ b/source/blender/editors/space_view3d/view3d_ops.c
@@ -132,8 +132,23 @@ static void VIEW3D_OT_pastebuffer(wmOperatorType *ot)
 	ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO;
 }
 
-/* ************************** registration **********************************/
+void ED_operatormacros_screen(void)
+{
+	PointerRNA *ptr;
+
+	ptr = WM_operator_pie_macro("VIEW3D_PIE_shade_macro", "Shade Mode",
+	                            "Set the shading mode for the 3D viewport",
+	                            OPTYPE_UNDO | OPTYPE_REGISTER, "WM_OT_context_toggle_enum", "VIEW3D_PIE_shade");
+
+	if (ptr) {
+		RNA_string_set(ptr, "data_path", "space_data.viewport_shade");
+		RNA_string_set(ptr, "value_1", "SOLID");
+		RNA_string_set(ptr, "value_2", "WIREFRAME");
+	}
+}
 
+
+/* ************************** registration **********************************/
 void view3d_operatortypes(void)
 {
 	WM_operatortype_append(VIEW3D_OT_rotate);
@@ -383,15 +398,8 @@ void view3d_keymap(wmKeyConfig *keyconf)
 	RNA_int_set(WM_keymap_add_item(keymap, "VIEW3D_OT_layers", ZEROKEY, KM_PRESS, KM_ANY, 0)->ptr, "nr", 10);
 	
 	/* drawtype */
+	kmi = WM_keymap_add_item(keymap, "VIEW3D_PIE_shade_macro", ZKEY, KM_PRESS, 0, 0);
 
-	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/windowmanager/WM_api.h b/source/blender/windowmanager/WM_api.h
index a224a07..5dbf8b0 100644
--- a/source/blender/windowmanager/WM_api.h
+++ b/source/blender/windowmanager/WM_api.h
@@ -269,6 +269,9 @@ wmOperator *WM_operator_last_redo(const struct bContext *C);
 bool        WM_operator_last_properties_init(struct wmOperator *op);
 bool        WM_operator_last_properties_store(struct wmOperator *op);
 
+struct PointerRNA *WM_operator_pie_macro(const char *idname, const char *name, const char *description,
+                                         int flag, const char *opname, const char *piename);
+
 /* MOVE THIS SOMEWHERE ELSE */
 #define	SEL_TOGGLE		0
 #define	SEL_SELECT		1
diff --git a/source/blender/windowmanager/intern/wm_event_system.c b/source/blender/windowmanager/intern/wm_event_system.c
index 0937a53..1a48429 100644
--- a/source/blender/windowmanager/intern/wm_event_system.c
+++ b/source/blender/windowmanager/intern/wm_event_system.c
@@ -3399,4 +3399,23 @@ void WM_event_ndof_to_quat(const struct wmNDOFMotionData *ndof, float q[4])
 	axis_angle_to_quat(q, axis, angle);
 }
 
+PointerRNA *WM_operator_pie_macro(const char *idname, const char *name, const char *description,
+                                         int flag, const char *opname, const char *piename)
+{
+	wmOperatorType *ot;
+	wmOperatorTypeMacro *otmacro;
+
+	ot = WM_operatortype_append_macro(idname, name,
+                                  description, flag);
+
+	if (ot) {
+		otmacro = WM_operatortype_macro_define(ot, "WM_OT_call_pie_menu_timer");
+		RNA_string_set(otmacro->ptr, "name", piename);
+		otmacro = WM_operatortype_macro_define(ot, opname);
+		return otmacro->ptr;
+	}
+	return NULL;
+}
+
+
 /** \} */
diff --git a/source/blender/windowmanager/intern/wm_init_exit.c b/source/blender/windowmanager/intern/wm_init_exit.c
index 693c48c..67927a4 100644
--- a/source/blender/windowmanager/intern/wm_init_exit.c
+++ b/source/blender/windowmanager/intern/wm_init_exit.c
@@ -187,6 +187,8 @@ void WM_init(bContext *C, int argc, const char **argv)
 	(void)argv; /* unused */
 #endif
 
+	ED_operatormacros_screen();
+
 	if (!G.background && !wm_start_with_console)
 		GHOST_toggleConsole(3);
 
diff --git a/source/blender/windowmanager/intern/wm_operators.c b/source/blender/windowmanager/intern/wm_operators.c
index 2fb1949..971dc8f 100644
--- a/source/blender/windowmanager/intern/wm_operators.c
+++ b/source/blender/windowmanager/intern/wm_operators.c
@@ -2126,6 +2126,8 @@ static int wm_call_pie_menu_timer_modal(bContext *C, wmOperator *op, const wmEve
 
 static void WM_OT_call_pie_menu_timer(wmOperatorType *ot)
 {
+	PropertyRNA *prop;
+
 	ot->name = "Call Pie Menu";
 	ot->idname = "WM_OT_call_pie_menu_timer";
 	ot->description = "Call (draw) a pre-defined pie menu or cancel";
@@ -2136,7 +2138,9 @@ static void WM_OT_call_pie_menu_timer(wmOperatorType *ot)
 
 	ot->flag = OPTYPE_INTERNAL;
 
-	RNA_def_string(ot->srna, "name", NULL, BKE_ST_MAXNAME, "Name", "Name of the pie menu");
+	prop = RNA_def_string(ot->srna, "name", NULL, BKE_ST_MAXNAME, "Name", "Name of the pie menu");
+
+	RNA_def_property_flag(prop, PROP_HIDDEN);
 }




More information about the Bf-blender-cvs mailing list