[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [19208] branches/blender2.5/blender/source /blender/makesrna/intern: RNA:
Brecht Van Lommel
brecht at blender.org
Fri Mar 6 11:22:12 CET 2009
Revision: 19208
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=19208
Author: blendix
Date: 2009-03-06 11:22:12 +0100 (Fri, 06 Mar 2009)
Log Message:
-----------
RNA:
* Enum default value is now automatically the first item if it
is not specified or 0.
* Otherwise if it's not in the items an error will be printed.
Modified Paths:
--------------
branches/blender2.5/blender/source/blender/makesrna/intern/makesrna.c
branches/blender2.5/blender/source/blender/makesrna/intern/rna_define.c
Modified: branches/blender2.5/blender/source/blender/makesrna/intern/makesrna.c
===================================================================
--- branches/blender2.5/blender/source/blender/makesrna/intern/makesrna.c 2009-03-06 07:38:18 UTC (rev 19207)
+++ branches/blender2.5/blender/source/blender/makesrna/intern/makesrna.c 2009-03-06 10:22:12 UTC (rev 19208)
@@ -1022,7 +1022,7 @@
switch(prop->type) {
case PROP_ENUM: {
EnumPropertyRNA *eprop= (EnumPropertyRNA*)prop;
- int i;
+ int i, defaultfound= 0;
if(eprop->item) {
fprintf(f, "static EnumPropertyItem rna_%s_%s_items[%d] = {", srna->identifier, prop->identifier, eprop->totitem);
@@ -1034,9 +1034,17 @@
rna_print_c_string(f, eprop->item[i].description); fprintf(f, "}");
if(i != eprop->totitem-1)
fprintf(f, ", ");
+
+ if(eprop->defaultvalue == eprop->item[i].value)
+ defaultfound= 1;
}
fprintf(f, "};\n\n");
+
+ if(!defaultfound) {
+ fprintf(stderr, "rna_generate_structs: %s.%s, enum default is not in items.\n", srna->identifier, prop->identifier);
+ DefRNA.error= 1;
+ }
}
else {
fprintf(stderr, "rna_generate_structs: %s.%s, enum must have items defined.\n", srna->identifier, prop->identifier);
Modified: branches/blender2.5/blender/source/blender/makesrna/intern/rna_define.c
===================================================================
--- branches/blender2.5/blender/source/blender/makesrna/intern/rna_define.c 2009-03-06 07:38:18 UTC (rev 19207)
+++ branches/blender2.5/blender/source/blender/makesrna/intern/rna_define.c 2009-03-06 10:22:12 UTC (rev 19208)
@@ -843,16 +843,23 @@
void RNA_def_property_enum_items(PropertyRNA *prop, const EnumPropertyItem *item)
{
StructRNA *srna= DefRNA.laststruct;
- int i;
+ int i, defaultfound= 0;
switch(prop->type) {
case PROP_ENUM: {
EnumPropertyRNA *eprop= (EnumPropertyRNA*)prop;
eprop->item= item;
eprop->totitem= 0;
- for(i=0; item[i].identifier; i++)
+ for(i=0; item[i].identifier; i++) {
eprop->totitem++;
+ if(item[i].value == eprop->defaultvalue)
+ defaultfound= 1;
+ }
+
+ if(!defaultfound)
+ eprop->defaultvalue= item[0].value;
+
break;
}
default:
@@ -1001,11 +1008,28 @@
void RNA_def_property_enum_default(PropertyRNA *prop, int value)
{
StructRNA *srna= DefRNA.laststruct;
+ int i, defaultfound= 0;
switch(prop->type) {
case PROP_ENUM: {
EnumPropertyRNA *eprop= (EnumPropertyRNA*)prop;
eprop->defaultvalue= value;
+
+ for(i=0; i<eprop->totitem; i++) {
+ if(eprop->item[i].value == eprop->defaultvalue)
+ defaultfound= 1;
+ }
+
+ if(!defaultfound && eprop->totitem) {
+ if(value == 0) {
+ eprop->defaultvalue= eprop->item[0].value;
+ }
+ else {
+ fprintf(stderr, "RNA_def_property_enum_default: %s.%s, default is not in items.\n", srna->identifier, prop->identifier);
+ DefRNA.error= 1;
+ }
+ }
+
break;
}
default:
More information about the Bf-blender-cvs
mailing list