diff options
author | Campbell Barton <ideasman42@gmail.com> | 2009-07-13 23:33:59 +0400 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2009-07-13 23:33:59 +0400 |
commit | 2ba8b72157d22ee92359e87e88860443a1f5cef2 (patch) | |
tree | b2347faeae5aed1c99681fe1803969ff8af57e8b /source/blender/makesrna/intern/rna_rna.c | |
parent | 1334ed303816531240294d17457575736bdd212b (diff) |
RNA & PyAPI
* support for dynamic enums to be inspected enumProp.items() from python.
* fix, enums check for a separator was flipped, meant no enums were in docs.
* dynamic enum functions now check for a NULL context and return all possible options for the "items" attribute used for docs.
* added an arg for rna arrays to free the array there looping over (needed to free dynamically allocated enum items)
* python api checks for NULL items since this can happen in some cases.
* python api, When getting an enum ID from an int in an array - If it failed it would get the first enum identifier and return that. Brecht? dont understand, making it return an empty string in these cases.
Diffstat (limited to 'source/blender/makesrna/intern/rna_rna.c')
-rw-r--r-- | source/blender/makesrna/intern/rna_rna.c | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/source/blender/makesrna/intern/rna_rna.c b/source/blender/makesrna/intern/rna_rna.c index 0b605db20cf..aeaedd6f81d 100644 --- a/source/blender/makesrna/intern/rna_rna.c +++ b/source/blender/makesrna/intern/rna_rna.c @@ -520,18 +520,21 @@ static int rna_enum_check_separator(CollectionPropertyIterator *iter, void *data { EnumPropertyItem *item= (EnumPropertyItem*)data; - return (item->identifier[0] != 0); + return (item->identifier[0] == 0); } static void rna_EnumProperty_items_begin(CollectionPropertyIterator *iter, PointerRNA *ptr) { PropertyRNA *prop= (PropertyRNA*)ptr->data; EnumPropertyRNA *eprop; - + EnumPropertyItem *item= NULL; + int totitem, free= 0; + rna_idproperty_check(&prop, ptr); eprop= (EnumPropertyRNA*)prop; - - rna_iterator_array_begin(iter, (void*)eprop->item, sizeof(eprop->item[0]), eprop->totitem, rna_enum_check_separator); + + RNA_property_enum_items(NULL, ptr, prop, &item, &totitem, &free); + rna_iterator_array_begin(iter, (void*)item, sizeof(EnumPropertyItem), totitem, free, rna_enum_check_separator); } static void rna_EnumPropertyItem_identifier_get(PointerRNA *ptr, char *value) |