fix for using uiItemIntO for an enum, added uiItemEnumO_value function.

This commit is contained in:
Campbell Barton 2011-03-24 12:36:12 +00:00
parent da4023b655
commit 422f1674bb
3 changed files with 29 additions and 1 deletions

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

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

@ -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;