fix for using uiItemIntO for an enum, added uiItemEnumO_value function.
authorCampbell Barton <ideasman42@gmail.com>
Thu, 24 Mar 2011 12:36:12 +0000 (12:36 +0000)
committerCampbell Barton <ideasman42@gmail.com>
Thu, 24 Mar 2011 12:36:12 +0000 (12:36 +0000)
source/blender/editors/animation/keyingsets.c
source/blender/editors/include/UI_interface.h
source/blender/editors/interface/interface_layout.c

index 324e9e39fc434dc246109ab7db88fba5f088e3df..04565b4c236eddf483fdadca7d98056aaa10946f 100644 (file)
@@ -795,7 +795,7 @@ void ANIM_keying_sets_menu_setup (bContext *C, const char title[], const char op
        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);
index e938192c5aad841db8718b49b989bb529a9905c9..e0f344106738a6843428934ba99c682210a824c3 100644 (file)
@@ -720,6 +720,7 @@ void uiTemplateList(uiLayout *layout, struct bContext *C, struct PointerRNA *ptr
 /* 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);
index 1e94824a9f9e0b29c9a2874c6fe0c2a7be3282a2..c94c3a7813acf8628a9cf96c221888e1ad6939ca 100644 (file)
@@ -781,6 +781,33 @@ void uiItemsEnumO(uiLayout *layout, const char *opname, const char *propname)
 }
 
 /* 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;