[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [35750] trunk/blender/source/blender/ editors: fix for using uiItemIntO for an enum, added uiItemEnumO_value function.

Campbell Barton ideasman42 at gmail.com
Thu Mar 24 13:36:12 CET 2011


Revision: 35750
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=35750
Author:   campbellbarton
Date:     2011-03-24 12:36:12 +0000 (Thu, 24 Mar 2011)
Log Message:
-----------
fix for using uiItemIntO for an enum, added uiItemEnumO_value function.

Modified Paths:
--------------
    trunk/blender/source/blender/editors/animation/keyingsets.c
    trunk/blender/source/blender/editors/include/UI_interface.h
    trunk/blender/source/blender/editors/interface/interface_layout.c

Modified: trunk/blender/source/blender/editors/animation/keyingsets.c
===================================================================
--- trunk/blender/source/blender/editors/animation/keyingsets.c	2011-03-24 12:17:24 UTC (rev 35749)
+++ trunk/blender/source/blender/editors/animation/keyingsets.c	2011-03-24 12:36:12 UTC (rev 35750)
@@ -795,7 +795,7 @@
 	for (ks= builtin_keyingsets.first; ks; ks= ks->next) {
 		/* only show KeyingSet if context is suitable */
 		if (ANIM_keyingset_context_ok_poll(C, ks))
-			uiItemIntO(layout, ks->name, ICON_NONE, op_name, "type", i--);
+			uiItemEnumO_value(layout, ks->name, ICON_NONE, op_name, "type", i--);
 	}
 	
 	uiPupMenuEnd(C, pup);

Modified: trunk/blender/source/blender/editors/include/UI_interface.h
===================================================================
--- trunk/blender/source/blender/editors/include/UI_interface.h	2011-03-24 12:17:24 UTC (rev 35749)
+++ trunk/blender/source/blender/editors/include/UI_interface.h	2011-03-24 12:36:12 UTC (rev 35750)
@@ -720,6 +720,7 @@
 /* items */
 void uiItemO(uiLayout *layout, const char *name, int icon, const char *opname);
 void uiItemEnumO(uiLayout *layout, const char *opname, const char *name, int icon, const char *propname, int value);
+void uiItemEnumO_value(uiLayout *layout, const char *name, int icon, const char *opname, const char *propname, int value);
 void uiItemEnumO_string(uiLayout *layout, const char *name, int icon, const char *opname, const char *propname, const char *value);
 void uiItemsEnumO(uiLayout *layout, const char *opname, const char *propname);
 void uiItemBooleanO(uiLayout *layout, const char *name, int icon, const char *opname, const char *propname, int value);

Modified: trunk/blender/source/blender/editors/interface/interface_layout.c
===================================================================
--- trunk/blender/source/blender/editors/interface/interface_layout.c	2011-03-24 12:17:24 UTC (rev 35749)
+++ trunk/blender/source/blender/editors/interface/interface_layout.c	2011-03-24 12:36:12 UTC (rev 35750)
@@ -781,6 +781,33 @@
 }
 
 /* for use in cases where we have */
+void uiItemEnumO_value(uiLayout *layout, const char *name, int icon, const char *opname, const char *propname, int value)
+{
+	PointerRNA ptr;
+
+	/* for getting the enum */
+	PropertyRNA *prop;
+
+	WM_operator_properties_create(&ptr, opname);
+
+	/* enum lookup */
+	if((prop= RNA_struct_find_property(&ptr, propname))) {
+		/* pass */
+	}
+	else {
+		printf("uiItemEnumO_value: %s.%s not found.\n", RNA_struct_identifier(ptr.type), propname);
+		return;
+	}
+
+	RNA_property_enum_set(&ptr, prop, value);
+
+	/* same as uiItemEnumO */
+	if(!name)
+		name= ui_menu_enumpropname(layout, opname, propname, value);
+
+	uiItemFullO(layout, opname, name, icon, ptr.data, layout->root->opcontext, 0);
+}
+
 void uiItemEnumO_string(uiLayout *layout, const char *name, int icon, const char *opname, const char *propname, const char *value_str)
 {
 	PointerRNA ptr;




More information about the Bf-blender-cvs mailing list