RNA:
authorBrecht Van Lommel <brechtvanlommel@pandora.be>
Wed, 14 Oct 2009 19:19:43 +0000 (19:19 +0000)
committerBrecht Van Lommel <brechtvanlommel@pandora.be>
Wed, 14 Oct 2009 19:19:43 +0000 (19:19 +0000)
* Enums with an _itemf callback now never get context NULL passed in,
  rather a fixed list of enum items are defined which should contain
  all items (if possible), from which the _itemf callback can then use
  a subset.

19 files changed:
source/blender/editors/armature/poselib.c
source/blender/editors/mesh/editmesh_mods.c
source/blender/editors/mesh/editmesh_tools.c
source/blender/editors/object/object_add.c
source/blender/editors/object/object_group.c
source/blender/editors/object/object_modifier.c
source/blender/editors/object/object_vgroup.c
source/blender/makesrna/intern/rna_access.c
source/blender/makesrna/intern/rna_constraint.c
source/blender/makesrna/intern/rna_define.c
source/blender/makesrna/intern/rna_image.c
source/blender/makesrna/intern/rna_material.c
source/blender/makesrna/intern/rna_object.c
source/blender/makesrna/intern/rna_object_force.c
source/blender/makesrna/intern/rna_particle.c
source/blender/makesrna/intern/rna_rna.c
source/blender/makesrna/intern/rna_sculpt_paint.c
source/blender/makesrna/intern/rna_space.c
source/blender/makesrna/intern/rna_texture.c

index d6f937575052ee67aee392ed78184cc215c314a6..f67c94eebc30c9b7e3157f2a07c6db518754598f 100644 (file)
@@ -432,9 +432,6 @@ static EnumPropertyItem *poselib_stored_pose_itemf(bContext *C, PointerRNA *ptr,
        int totitem= 0;
        int i= 0;
 
-       if (C == NULL)
-               return NULL;
-
        memset(&item_tmp, 0, sizeof(item_tmp));
        
        /* check that the action exists */
@@ -448,12 +445,10 @@ static EnumPropertyItem *poselib_stored_pose_itemf(bContext *C, PointerRNA *ptr,
                }
        }
 
-       if (i > 0) {
-               *free= 1;
-               return item;
-       }
-       else
-               return NULL;
+       RNA_enum_item_end(&item, &totitem);
+       *free= 1;
+
+       return item;
 }
 
 static int poselib_remove_exec (bContext *C, wmOperator *op)
index 288af7f7874fc29ca062d05d51a9c95ab8269e34..74870778d02a23b10625a11c49a7ea87c3b4db1c 100644 (file)
@@ -658,7 +658,25 @@ static int unified_findnearest(ViewContext *vc, EditVert **eve, EditEdge **eed,
 
 /* selects new faces/edges/verts based on the existing selection */
 
-/* FACES GROUP */
+/* VERT GROUP */
+
+#define SIMVERT_NORMAL 0
+#define SIMVERT_FACE   1
+#define SIMVERT_VGROUP 2
+#define SIMVERT_TOT            3
+
+/* EDGE GROUP */
+
+#define SIMEDGE_LENGTH         101
+#define SIMEDGE_DIR                    102
+#define SIMEDGE_FACE           103
+#define SIMEDGE_FACE_ANGLE     104
+#define SIMEDGE_CREASE         105
+#define SIMEDGE_SEAM           106
+#define SIMEDGE_SHARP          107
+#define SIMEDGE_TOT                    108
+
+/* FACE GROUP */
 
 #define SIMFACE_MATERIAL       201
 #define SIMFACE_IMAGE          202
@@ -666,8 +684,19 @@ static int unified_findnearest(ViewContext *vc, EditVert **eve, EditEdge **eed,
 #define SIMFACE_PERIMETER      204
 #define SIMFACE_NORMAL         205
 #define SIMFACE_COPLANAR       206
+#define SIMFACE_TOT                    207
 
-static EnumPropertyItem prop_simface_types[] = {
+static EnumPropertyItem prop_similar_types[] = {
+       {SIMVERT_NORMAL, "NORMAL", 0, "Normal", ""},
+       {SIMVERT_FACE, "FACE", 0, "Amount of Vertices in Face", ""},
+       {SIMVERT_VGROUP, "VGROUP", 0, "Vertex Groups", ""},
+       {SIMEDGE_LENGTH, "LENGTH", 0, "Length", ""},
+       {SIMEDGE_DIR, "DIR", 0, "Direction", ""},
+       {SIMEDGE_FACE, "FACE", 0, "Amount of Vertices in Face", ""},
+       {SIMEDGE_FACE_ANGLE, "FACE_ANGLE", 0, "Face Angles", ""},
+       {SIMEDGE_CREASE, "CREASE", 0, "Crease", ""},
+       {SIMEDGE_SEAM, "SEAM", 0, "Seam", ""},
+       {SIMEDGE_SHARP, "SHARP", 0, "Sharpness", ""},
        {SIMFACE_MATERIAL, "MATERIAL", 0, "Material", ""},
        {SIMFACE_IMAGE, "IMAGE", 0, "Image", ""},
        {SIMFACE_AREA, "AREA", 0, "Area", ""},
@@ -831,27 +860,6 @@ static int similar_face_select_exec(bContext *C, wmOperator *op)
 
 /* ***************************************************** */
 
-/* EDGE GROUP */
-
-#define SIMEDGE_LENGTH         101
-#define SIMEDGE_DIR                    102
-#define SIMEDGE_FACE           103
-#define SIMEDGE_FACE_ANGLE     104
-#define SIMEDGE_CREASE         105
-#define SIMEDGE_SEAM           106
-#define SIMEDGE_SHARP          107
-
-static EnumPropertyItem prop_simedge_types[] = {
-       {SIMEDGE_LENGTH, "LENGTH", 0, "Length", ""},
-       {SIMEDGE_DIR, "DIR", 0, "Direction", ""},
-       {SIMEDGE_FACE, "FACE", 0, "Amount of Vertices in Face", ""},
-       {SIMEDGE_FACE_ANGLE, "FACE_ANGLE", 0, "Face Angles", ""},
-       {SIMEDGE_CREASE, "CREASE", 0, "Crease", ""},
-       {SIMEDGE_SEAM, "SEAM", 0, "Seam", ""},
-       {SIMEDGE_SHARP, "SHARP", 0, "Sharpness", ""},
-       {0, NULL, 0, NULL, NULL}
-};
-
 static int similar_edge_select__internal(ToolSettings *ts, EditMesh *em, int mode)
 {
        EditEdge *eed, *base_eed=NULL;
@@ -1073,25 +1081,6 @@ static int similar_edge_select_exec(bContext *C, wmOperator *op)
 
 /* ********************************* */
 
-/*
-VERT GROUP
- mode 1: same normal
- mode 2: same number of face users
- mode 3: same vertex groups
-*/
-
-#define SIMVERT_NORMAL 0
-#define SIMVERT_FACE   1
-#define SIMVERT_VGROUP 2
-
-static EnumPropertyItem prop_simvertex_types[] = {
-       {SIMVERT_NORMAL, "NORMAL", 0, "Normal", ""},
-       {SIMVERT_FACE, "FACE", 0, "Amount of Vertices in Face", ""},
-       {SIMVERT_VGROUP, "VGROUP", 0, "Vertex Groups", ""},
-       {0, NULL, 0, NULL, NULL}
-};
-
-
 static int similar_vert_select_exec(bContext *C, wmOperator *op)
 {
        ToolSettings *ts= CTX_data_tool_settings(C);
@@ -1243,37 +1232,30 @@ static int select_similar_exec(bContext *C, wmOperator *op)
 
 static EnumPropertyItem *select_similar_type_itemf(bContext *C, PointerRNA *ptr, int *free)
 {
-       Object *obedit;
+       Object *obedit= CTX_data_edit_object(C);
        EnumPropertyItem *item= NULL;
-       int totitem= 0;
-       
-       if(C) {
-               obedit= CTX_data_edit_object(C);
+       int a, totitem= 0;
                
-               if(obedit && obedit->type == OB_MESH) {
-                       EditMesh *em= BKE_mesh_get_editmesh(obedit->data); 
-
-                       if(em->selectmode & SCE_SELECT_VERTEX)
-                               RNA_enum_items_add(&item, &totitem, prop_simvertex_types);
-                       else if(em->selectmode & SCE_SELECT_EDGE)
-                               RNA_enum_items_add(&item, &totitem, prop_simedge_types);
-                       else if(em->selectmode & SCE_SELECT_FACE)
-                               RNA_enum_items_add(&item, &totitem, prop_simface_types);
-                       RNA_enum_item_end(&item, &totitem);
+       if(obedit && obedit->type == OB_MESH) {
+               EditMesh *em= BKE_mesh_get_editmesh(obedit->data); 
 
-                       *free= 1;
-
-                       return item;
+               if(em->selectmode & SCE_SELECT_VERTEX) {
+                       for(a=SIMVERT_NORMAL; a<=SIMVERT_TOT; a++)
+                               RNA_enum_items_add_value(&item, &totitem, prop_similar_types, a);
+               }
+               else if(em->selectmode & SCE_SELECT_EDGE) {
+                       for(a=SIMEDGE_LENGTH; a<=SIMEDGE_TOT; a++)
+                               RNA_enum_items_add_value(&item, &totitem, prop_similar_types, a);
+               }
+               else if(em->selectmode & SCE_SELECT_FACE) {
+                       for(a=SIMFACE_MATERIAL; a<=SIMFACE_TOT; a++)
+                               RNA_enum_items_add_value(&item, &totitem, prop_similar_types, a);
                }
        }
 
-       /* needed for doc generation */
-       RNA_enum_items_add(&item, &totitem, prop_simvertex_types);
-       RNA_enum_items_add(&item, &totitem, prop_simedge_types);
-       RNA_enum_items_add(&item, &totitem, prop_simface_types);
        RNA_enum_item_end(&item, &totitem);
        *free= 1;
-       
+
        return item;
 }
 
@@ -1295,7 +1277,7 @@ void MESH_OT_select_similar(wmOperatorType *ot)
        ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
        
        /* properties */
-       prop= RNA_def_enum(ot->srna, "type", prop_simvertex_types, SIMVERT_NORMAL, "Type", "");
+       prop= RNA_def_enum(ot->srna, "type", prop_similar_types, SIMVERT_NORMAL, "Type", "");
        RNA_def_enum_funcs(prop, select_similar_type_itemf);
 }
 
index 80ea5c51e1f2c6be4256241b4e5142fa5621f155..d447040e8eae7a1978aebbad40b7584fa9ec4b0f 100644 (file)
@@ -5856,14 +5856,10 @@ static EnumPropertyItem merge_type_items[]= {
 
 static EnumPropertyItem *merge_type_itemf(bContext *C, PointerRNA *ptr, int *free)
 {      
-       Object *obedit;
+       Object *obedit= CTX_data_edit_object(C);
        EnumPropertyItem *item= NULL;
        int totitem= 0;
-       
-       if(!C) /* needed for docs */
-               return merge_type_items;
-       
-       obedit= CTX_data_edit_object(C);
+
        if(obedit && obedit->type == OB_MESH) {
                EditMesh *em= BKE_mesh_get_editmesh(obedit->data);
 
@@ -5882,14 +5878,12 @@ static EnumPropertyItem *merge_type_itemf(bContext *C, PointerRNA *ptr, int *fre
                RNA_enum_items_add_value(&item, &totitem, merge_type_items, 3);
                RNA_enum_items_add_value(&item, &totitem, merge_type_items, 4);
                RNA_enum_items_add_value(&item, &totitem, merge_type_items, 5);
-               RNA_enum_item_end(&item, &totitem);
+       }
 
-               *free= 1;
+       RNA_enum_item_end(&item, &totitem);
+       *free= 1;
 
-               return item;
-       }
-       
-       return NULL;
+       return item;
 }
 
 void MESH_OT_merge(wmOperatorType *ot)
index 5f088f23939bd34b2e87d6d3c4beaa8b0a995005..25ecb41a5234dcc1a0e7c8909e1e765412864839 100644 (file)
@@ -608,9 +608,6 @@ static EnumPropertyItem *add_dupligroup_itemf(bContext *C, PointerRNA *ptr, int
        int i= 0;
        Group *group;
 
-       if(C==NULL)
-               return NULL;
-
        memset(&item_tmp, 0, sizeof(item_tmp));
 
        for(group= CTX_data_main(C)->group.first; group; group= group->id.next) {
@@ -619,13 +616,10 @@ static EnumPropertyItem *add_dupligroup_itemf(bContext *C, PointerRNA *ptr, int
                RNA_enum_item_add(&item, &totitem, &item_tmp);
        }
 
-       if(i>0) {
-               *free= 1;
-               return item;
-       }
-       else {
-               return NULL;
-       }
+       RNA_enum_item_end(&item, &totitem);
+       *free= 1;
+
+       return item;
 }
 
 static int group_instance_add_exec(bContext *C, wmOperator *op)
index c83f3022c7c629461b244e464a2ad718c3019702..198838d6f056130f178676a9576a711dcef1c9a8 100644 (file)
@@ -275,18 +275,14 @@ static EnumPropertyItem group_items[]= {
 
 static EnumPropertyItem *group_itemf(bContext *C, PointerRNA *ptr, int *free)
 {      
+       Main *bmain= CTX_data_main(C);
+       Group *group;
        EnumPropertyItem tmp = {0, "", 0, "", ""};
        EnumPropertyItem *item= NULL;
-       Main *bmain;
-       Group *group;
        int a, totitem= 0;
        
-       if(!C) /* needed for docs */
-               return group_items;
-       
        RNA_enum_items_add_value(&item, &totitem, group_items, -1);
 
-       bmain= CTX_data_main(C);
        if(bmain->group.first)
                RNA_enum_item_add_separator(&item, &totitem);
 
@@ -298,7 +294,6 @@ static EnumPropertyItem *group_itemf(bContext *C, PointerRNA *ptr, int *free)
        }
 
        RNA_enum_item_end(&item, &totitem);
-
        *free= 1;
 
        return item;
index 252fdb5522a6c1b09e8241d79dc45a6a3352ad36..f58e8cfeb9dbfa6e71ed5acb08c49ea119742645 100644 (file)
@@ -440,12 +440,12 @@ static int modifier_add_exec(bContext *C, wmOperator *op)
 
 static EnumPropertyItem *modifier_add_itemf(bContext *C, PointerRNA *ptr, int *free)
 {      
+       Object *ob= CTX_data_active_object(C);
        EnumPropertyItem *item= NULL, *md_item;
        ModifierTypeInfo *mti;
-       Object *ob;
        int totitem= 0, a;
        
-       if(!C || !(ob= CTX_data_active_object(C))) /* needed for docs */
+       if(!ob)
                return modifier_type_items;
 
        for(a=0; modifier_type_items[a].identifier; a++) {
@@ -466,7 +466,6 @@ static EnumPropertyItem *modifier_add_itemf(bContext *C, PointerRNA *ptr, int *f
        }
 
        RNA_enum_item_end(&item, &totitem);
-
        *free= 1;
 
        return item;
index 902a32bb7f35cc7be0ad43bde6ec545846654667..dd3e5969a75308d55fb2e661a475b808b11935a3 100644 (file)
@@ -1233,13 +1233,13 @@ static int set_active_group_exec(bContext *C, wmOperator *op)
 
 static EnumPropertyItem *vgroup_itemf(bContext *C, PointerRNA *ptr, int *free)
 {      
-       Object *ob;
+       Object *ob= CTX_data_pointer_get_type(C, "object", &RNA_Object).data;
        EnumPropertyItem tmp = {0, "", 0, "", ""};
        EnumPropertyItem *item= NULL;
        bDeformGroup *def;
        int a, totitem= 0;
        
-       if(!C || !(ob = CTX_data_pointer_get_type(C, "object", &RNA_Object).data)) /* needed for docs */
+       if(!ob)
                return vgroup_items;
        
        for(a=0, def=ob->defbase.first; def; def=def->next, a++) {
@@ -1250,7 +1250,6 @@ static EnumPropertyItem *vgroup_itemf(bContext *C, PointerRNA *ptr, int *free)
        }
 
        RNA_enum_item_end(&item, &totitem);
-
        *free= 1;
 
        return item;
index bec2025907a124077ec65f59e4acfc332cf96d77..6cf2fd0c60f474804680db5b83c594faacdb0efe 100644 (file)
@@ -727,7 +727,7 @@ void RNA_property_enum_items(bContext *C, PointerRNA *ptr, PropertyRNA *prop, En
 
        *free= 0;
 
-       if(eprop->itemf) {
+       if(eprop->itemf && C) {
                int tot= 0;
                *item= eprop->itemf(C, ptr, free);
 
index 395633f5240c5a9c685ab2b8d2ab5165ab490f1c..53c8db6ff0fc84aa04dd104ccc252738510305b1 100644 (file)
@@ -232,20 +232,6 @@ static EnumPropertyItem *rna_Constraint_owner_space_itemf(bContext *C, PointerRN
        Object *ob= (Object*)ptr->id.data;
        bConstraint *con= (bConstraint*)ptr->data;
        
-       if(C==NULL) {
-               EnumPropertyItem *item= NULL;
-               int totitem= 0;
-               
-               /* needed for doc generation */
-               RNA_enum_items_add(&item, &totitem, space_object_items);
-               RNA_enum_items_add(&item, &totitem, space_pchan_items);
-               RNA_enum_item_end(&item, &totitem);
-               
-               *free= 1;
-               
-               return item;
-       }
-
        if(BLI_findindex(&ob->constraints, con) == -1)
                return space_pchan_items;
        else /* object */
@@ -259,20 +245,6 @@ static EnumPropertyItem *rna_Constraint_target_space_itemf(bContext *C, PointerR
        ListBase targets = {NULL, NULL};
        bConstraintTarget *ct;
        
-       if(C==NULL) {
-               EnumPropertyItem *item= NULL;
-               int totitem= 0;
-               
-               /* needed for doc generation */
-               RNA_enum_items_add(&item, &totitem, space_object_items);
-               RNA_enum_items_add(&item, &totitem, space_pchan_items);
-               RNA_enum_item_end(&item, &totitem);
-               
-               *free= 1;
-               
-               return item;
-       }
-       
        if(cti && cti->get_constraint_targets) {
                cti->get_constraint_targets(con, &targets);
                
index f3fb1244565eb820af7f503c73c8b7628dcd515c..48de7ace222095affa417035bf3129fde684cfac 100644 (file)
@@ -2135,6 +2135,11 @@ PropertyRNA *RNA_def_enum(StructOrFunctionRNA *cont_, const char *identifier, co
 {
        ContainerRNA *cont= cont_;
        PropertyRNA *prop;
+
+       if(!items) {
+               printf("RNA_def_enum: items not allowed to be NULL.\n");
+               return NULL;
+       }
        
        prop= RNA_def_property(cont, identifier, PROP_ENUM, PROP_NONE);
        if(items) RNA_def_property_enum_items(prop, items);
index 521756b8539160569acd8d9e9ba53b91b1fc5aa8..44c55e821a90d1ff65f24613dcf9eadd14a9b3df 100644 (file)
@@ -128,9 +128,6 @@ static EnumPropertyItem *rna_Image_source_itemf(bContext *C, PointerRNA *ptr, in
        EnumPropertyItem *item= NULL;
        int totitem= 0;
        
-       if(C==NULL) /* needed for doc generation */
-               return image_source_items;
-       
        if(ima->source == IMA_SRC_VIEWER) {
                RNA_enum_items_add_value(&item, &totitem, image_source_items, IMA_SRC_VIEWER);
        }
index e03e221f822f60d1e065644dc7bfb4da6e91dcc1..74cb8675ad568693c762a973fa6efd5f6a68c93a 100644 (file)
@@ -260,10 +260,6 @@ static EnumPropertyItem *rna_Material_texture_coordinates_itemf(bContext *C, Poi
        EnumPropertyItem *item= NULL;
        int totitem= 0;
        
-       if(C==NULL) {
-               return prop_texture_coordinates_items;
-       }
-       
        RNA_enum_items_add_value(&item, &totitem, prop_texture_coordinates_items, TEXCO_GLOB);
        RNA_enum_items_add_value(&item, &totitem, prop_texture_coordinates_items, TEXCO_OBJECT);
        RNA_enum_items_add_value(&item, &totitem, prop_texture_coordinates_items, TEXCO_ORCO);
@@ -283,7 +279,6 @@ static EnumPropertyItem *rna_Material_texture_coordinates_itemf(bContext *C, Poi
        }
        
        RNA_enum_item_end(&item, &totitem);
-       
        *free= 1;
        
        return item;
index 092f18ef0e254146daeaeb20435f26f2dc0691da..09e0ac3feac34ece733e1d1e2cae43e4f9067e7f 100644 (file)
@@ -229,10 +229,6 @@ static EnumPropertyItem *rna_Object_parent_type_itemf(bContext *C, PointerRNA *p
        EnumPropertyItem *item= NULL;
        int totitem= 0;
 
-       if(C==NULL) {
-               return parent_type_items;
-       }
-       
        RNA_enum_items_add_value(&item, &totitem, parent_type_items, PAROBJECT);
 
        if(ob->parent) {
@@ -253,7 +249,6 @@ static EnumPropertyItem *rna_Object_parent_type_itemf(bContext *C, PointerRNA *p
        }
 
        RNA_enum_item_end(&item, &totitem);
-
        *free= 1;
 
        return item;
index 404223ab590bb344a5d7cc4efb007b4412a31604..2247e5499fb2d9180dee02d70e0b34a7283d2fc0 100644 (file)
@@ -546,24 +546,6 @@ static EnumPropertyItem *rna_Effector_shape_itemf(bContext *C, PointerRNA *ptr,
 {
        Object *ob= NULL;
 
-       if(C==NULL) {
-               EnumPropertyItem *item= NULL;
-               int totitem= 0;
-               
-               /* needed for doc generation */
-               RNA_enum_items_add(&item, &totitem, effector_shape_items);
-               RNA_enum_items_add(&item, &totitem, curve_shape_items);
-               RNA_enum_items_add(&item, &totitem, empty_shape_items);
-               RNA_enum_items_add(&item, &totitem, vortex_shape_items);
-               RNA_enum_items_add(&item, &totitem, curve_vortex_shape_items);
-               RNA_enum_items_add(&item, &totitem, empty_vortex_shape_items);
-               RNA_enum_item_end(&item, &totitem);
-               
-               *free= 1;
-               
-               return item;
-       }
-
        if(particle_field_check(ptr))
                return empty_shape_items;
        
index 2c81bda121f526a8c682b6ed8dec377b09b9a5ee..28d0d2deb343aaa3cee345b3aad5c86fdfbcff5b 100644 (file)
@@ -499,39 +499,9 @@ static void rna_ParticleDupliWeight_name_get(PointerRNA *ptr, char *str)
        else
                strcpy(str, "No object");
 }
-EnumPropertyItem from_items[] = {
-       {PART_FROM_VERT, "VERT", 0, "Vertexes", ""},
-       {PART_FROM_FACE, "FACE", 0, "Faces", ""},
-       {PART_FROM_VOLUME, "VOLUME", 0, "Volume", ""},
-       {0, NULL, 0, NULL, NULL}
-};
-
-EnumPropertyItem reactor_from_items[] = {
-       {PART_FROM_VERT, "VERT", 0, "Vertexes", ""},
-       {PART_FROM_FACE, "FACE", 0, "Faces", ""},
-       {PART_FROM_VOLUME, "VOLUME", 0, "Volume", ""},
-       {PART_FROM_PARTICLE, "PARTICLE", 0, "Particle", ""},
-       {0, NULL, 0, NULL, NULL}
-};
 
 static EnumPropertyItem *rna_Particle_from_itemf(bContext *C, PointerRNA *ptr, int *free)
 {
-       /* ParticleSettings *part = ptr->id.data; */
-
-       if(C==NULL) {
-               EnumPropertyItem *item= NULL;
-               int totitem= 0;
-               
-               /* needed for doc generation */
-               RNA_enum_items_add(&item, &totitem, part_reactor_from_items);
-               RNA_enum_items_add(&item, &totitem, part_from_items);
-               RNA_enum_item_end(&item, &totitem);
-               
-               *free= 1;
-               
-               return item;
-       }
-       
        //if(part->type==PART_REACTOR)
        //      return part_reactor_from_items;
        //else
@@ -542,20 +512,6 @@ static EnumPropertyItem *rna_Particle_draw_as_itemf(bContext *C, PointerRNA *ptr
 {
        ParticleSettings *part = ptr->id.data;
 
-       if(C==NULL) {
-               EnumPropertyItem *item= NULL;
-               int totitem= 0;
-               
-               /* needed for doc generation */
-               RNA_enum_items_add(&item, &totitem, part_hair_draw_as_items);
-               RNA_enum_items_add(&item, &totitem, part_draw_as_items);
-               RNA_enum_item_end(&item, &totitem);
-               
-               *free= 1;
-               
-               return item;
-       }
-       
        if(part->type==PART_HAIR)
                return part_hair_draw_as_items;
        else
@@ -566,20 +522,6 @@ static EnumPropertyItem *rna_Particle_ren_as_itemf(bContext *C, PointerRNA *ptr,
 {
        ParticleSettings *part = ptr->id.data;
 
-       if(C==NULL) {
-               EnumPropertyItem *item= NULL;
-               int totitem= 0;
-               
-               /* needed for doc generation */
-               RNA_enum_items_add(&item, &totitem, part_hair_ren_as_items);
-               RNA_enum_items_add(&item, &totitem, part_ren_as_items);
-               RNA_enum_item_end(&item, &totitem);
-               
-               *free= 1;
-               
-               return item;
-       }
-       
        if(part->type==PART_HAIR)
                return part_hair_ren_as_items;
        else
index fbb24f9ada9e8340617996ce2ca129952be360e2..31aecbb8a76be3fd56942f1c20eee4a92640eca3 100644 (file)
@@ -624,7 +624,7 @@ static EnumPropertyItem *rna_EnumProperty_default_itemf(bContext *C, PointerRNA
        rna_idproperty_check(&prop, ptr);
        eprop= (EnumPropertyRNA*)prop;
 
-       if(eprop->itemf==NULL || eprop->itemf==rna_EnumProperty_default_itemf)
+       if(eprop->itemf==NULL || eprop->itemf==rna_EnumProperty_default_itemf || !C)
                return eprop->item;
 
        return eprop->itemf(C, ptr, free);
index 413f7c3dc7cb3ede1f6bad2127cedd22a174759a..7f8ded7d3eeb7e85fb935bd818e0ede381e8f0e1 100644 (file)
@@ -119,27 +119,13 @@ static void rna_ParticleEdit_update(bContext *C, PointerRNA *ptr)
 
 static EnumPropertyItem *rna_ParticleEdit_tool_itemf(bContext *C, PointerRNA *ptr, int *free)
 {
-       if(C==NULL) {
-               EnumPropertyItem *item= NULL;
-               int totitem= 0;
-               
-               /* needed for doc generation */
-               RNA_enum_items_add(&item, &totitem, particle_edit_hair_brush_items);
-               RNA_enum_item_end(&item, &totitem);
-               
-               *free= 1;
-               
-               return item;
-       }
-       else {
-               Scene *scene= CTX_data_scene(C);
-               PTCacheEdit *edit = PE_get_current(scene, CTX_data_active_object(C));
-               
-               if(edit && edit->psys)
-                       return particle_edit_hair_brush_items;
+       Scene *scene= CTX_data_scene(C);
+       PTCacheEdit *edit = PE_get_current(scene, CTX_data_active_object(C));
+       
+       if(edit && edit->psys)
+               return particle_edit_hair_brush_items;
 
-               return particle_edit_cache_brush_items;
-       }
+       return particle_edit_cache_brush_items;
 }
 
 static int rna_ParticleEdit_editable_get(PointerRNA *ptr)
index 5665d9d7adc3a32c31a6f286da3ba55ad04bca7d..015df0e73de8fbc9c76c7196cb6dc7a6a2b40cbe 100644 (file)
@@ -64,19 +64,23 @@ EnumPropertyItem space_type_items[] = {
        {SPACE_USERPREF, "USER_PREFERENCES", 0, "User Preferences", ""},
        {0, NULL, 0, NULL, NULL}};
 
-#define DC_RGB {0, "COLOR", ICON_IMAGE_RGB, "Color", "Draw image with RGB colors."}
-#define DC_RGBA {SI_USE_ALPHA, "COLOR_ALPHA", ICON_IMAGE_RGB_ALPHA, "Color and Alpha", "Draw image with RGB colors and alpha transparency."}
-#define DC_ALPHA {SI_SHOW_ALPHA, "ALPHA", ICON_IMAGE_ALPHA, "Alpha", "Draw alpha transparency channel."}
-#define DC_Z {SI_SHOW_ZBUF, "Z_BUFFER", ICON_IMAGE_ZDEPTH, "Z-Buffer", "Draw Z-buffer associated with image (mapped from camera clip start to end)."}
+static EnumPropertyItem draw_channels_items[] = {
+       {0, "COLOR", ICON_IMAGE_RGB, "Color", "Draw image with RGB colors."},
+       {SI_USE_ALPHA, "COLOR_ALPHA", ICON_IMAGE_RGB_ALPHA, "Color and Alpha", "Draw image with RGB colors and alpha transparency."},
+       {SI_SHOW_ALPHA, "ALPHA", ICON_IMAGE_ALPHA, "Alpha", "Draw alpha transparency channel."},
+       {SI_SHOW_ZBUF, "Z_BUFFER", ICON_IMAGE_ZDEPTH, "Z-Buffer", "Draw Z-buffer associated with image (mapped from camera clip start to end)."},
 #ifdef WITH_LCMS
-#define DC_LCMS {SI_COLOR_CORRECTION, "COLOR_CORRECTED", ICON_IMAGE_ALPHA, "Color Corrected", "Display color corrected image."}
-#else
-#define DC_LCMS {0, NULL, 0, NULL, NULL}
+       {SI_COLOR_CORRECTION, "COLOR_CORRECTED", ICON_IMAGE_ALPHA, "Color Corrected", "Display color corrected image."},
 #endif
-#define DC_ZERO {0, NULL, 0, NULL, NULL}
-
-static EnumPropertyItem dc_all_items[] = {DC_RGB, DC_RGBA, DC_ALPHA, DC_Z, DC_LCMS, DC_ZERO};
+       {0, NULL, 0, NULL, NULL}};
 
+static EnumPropertyItem transform_orientation_items[] = {
+       {V3D_MANIP_GLOBAL, "GLOBAL", 0, "Global", "Align the transformation axes to world space"},
+       {V3D_MANIP_LOCAL, "LOCAL", 0, "Local", "Align the transformation axes to the selected objects' local space"},
+       {V3D_MANIP_NORMAL, "NORMAL", 0, "Normal", "Align the transformation axes to average normal of selected elements (bone Y axis for pose mode)"},
+       {V3D_MANIP_VIEW, "VIEW", 0, "View", "Align the transformation axes to the window"},
+       {V3D_MANIP_CUSTOM, "CUSTOM", 0, "Custom", "Use a custom transform orientation"},
+       {0, NULL, 0, NULL, NULL}};
 
 #ifdef RNA_RUNTIME
 
@@ -155,37 +159,26 @@ EnumPropertyItem *rna_TransformOrientation_itemf(bContext *C, PointerRNA *ptr, i
        Scene *scene;
        ListBase *transform_spaces;
        TransformOrientation *ts= NULL;
-
-       EnumPropertyItem global = {V3D_MANIP_GLOBAL, "Global", 0, "Global", ""};
-       EnumPropertyItem normal = {V3D_MANIP_NORMAL, "Normal", 0, "Normal", ""};
-       EnumPropertyItem local = {V3D_MANIP_LOCAL, "Local", 0, "Local", ""};
-       EnumPropertyItem view = {V3D_MANIP_VIEW, "View", 0, "View", ""};
        EnumPropertyItem tmp = {0, "", 0, "", ""};
        EnumPropertyItem *item= NULL;
        int i = V3D_MANIP_CUSTOM, totitem= 0;
 
-       RNA_enum_item_add(&item, &totitem, &global);
-       RNA_enum_item_add(&item, &totitem, &normal);
-       RNA_enum_item_add(&item, &totitem, &local);
-       RNA_enum_item_add(&item, &totitem, &view);
-
-       if(C) {
-               scene= CTX_data_scene(C);
-
-               if(scene) {
-                       transform_spaces = &scene->transform_spaces;
-                       ts = transform_spaces->first;
-               }
-               else
-               {
-                       printf("no scene\n");
-               }
+       RNA_enum_items_add_value(&item, &totitem, transform_orientation_items, V3D_MANIP_GLOBAL);
+       RNA_enum_items_add_value(&item, &totitem, transform_orientation_items, V3D_MANIP_NORMAL);
+       RNA_enum_items_add_value(&item, &totitem, transform_orientation_items, V3D_MANIP_LOCAL);
+       RNA_enum_items_add_value(&item, &totitem, transform_orientation_items, V3D_MANIP_VIEW);
+
+       scene= CTX_data_scene(C);
+
+       if(scene) {
+               transform_spaces = &scene->transform_spaces;
+               ts = transform_spaces->first;
        }
        else
        {
-               printf("no context\n");
+               printf("no scene\n");
        }
-               
+
        if(ts)
                RNA_enum_item_add_separator(&item, &totitem);
 
@@ -197,7 +190,6 @@ EnumPropertyItem *rna_TransformOrientation_itemf(bContext *C, PointerRNA *ptr, i
        }
 
        RNA_enum_item_end(&item, &totitem);
-
        *free= 1;
 
        return item;
@@ -245,22 +237,14 @@ static void rna_SpaceImageEditor_image_set(PointerRNA *ptr, PointerRNA value)
        ED_space_image_set(NULL, sima, sc->scene, sc->scene->obedit, (Image*)value.data);
 }
 
-static EnumPropertyItem dc_rgb_items[] = {DC_RGB, DC_LCMS, DC_ZERO};
-static EnumPropertyItem dc_alpha_items[] = {DC_RGB, DC_RGBA, DC_ALPHA, DC_LCMS, DC_ZERO};
-static EnumPropertyItem dc_z_items[] = {DC_RGB, DC_Z, DC_LCMS, DC_ZERO};
-
 static EnumPropertyItem *rna_SpaceImageEditor_draw_channels_itemf(bContext *C, PointerRNA *ptr, int *free)
 {
        SpaceImage *sima= (SpaceImage*)ptr->data;
+       EnumPropertyItem *item= NULL;
        ImBuf *ibuf;
        void *lock;
-       int zbuf, alpha;
+       int zbuf, alpha, totitem= 0;
 
-       if(C==NULL) {
-               /* needed for doc generation */
-               return dc_all_items;
-       }
-       
        ibuf= ED_space_image_acquire_buffer(sima, &lock);
        
        alpha= ibuf && (ibuf->channels == 4);
@@ -269,13 +253,26 @@ static EnumPropertyItem *rna_SpaceImageEditor_draw_channels_itemf(bContext *C, P
        ED_space_image_release_buffer(sima, lock);
 
        if(alpha && zbuf)
-               return dc_all_items;
-       else if(alpha)
-               return dc_alpha_items;
-       else if(zbuf)
-               return dc_z_items;
-       else
-               return dc_rgb_items;
+               return draw_channels_items;
+
+       RNA_enum_items_add_value(&item, &totitem, draw_channels_items, 0);
+
+       if(alpha) {
+               RNA_enum_items_add_value(&item, &totitem, draw_channels_items, SI_SHOW_ALPHA);
+               RNA_enum_items_add_value(&item, &totitem, draw_channels_items, SI_USE_ALPHA);
+       }
+       else if(zbuf) {
+               RNA_enum_items_add_value(&item, &totitem, draw_channels_items, SI_SHOW_ZBUF);
+       }
+
+#ifdef WITH_LCMS
+       RNA_enum_items_add_value(&item, &totitem, draw_channels_items, SI_COLOR_CORRECTION);
+#endif
+
+       RNA_enum_item_end(&item, &totitem);
+       *free= 1;
+
+       return item;
 }
 
 static void rna_SpaceImageEditor_curves_update(bContext *C, PointerRNA *ptr)
@@ -641,14 +638,6 @@ static void rna_def_space_3dview(BlenderRNA *brna)
                {V3D_ACTIVE, "ACTIVE_ELEMENT", 0, "Active Element", ""},
                {0, NULL, 0, NULL, NULL}};
                
-       static EnumPropertyItem transform_orientation_items[] = {
-               {V3D_MANIP_GLOBAL, "ORIENT_GLOBAL", 0, "Global", "Align the transformation axes to world space"},
-               {V3D_MANIP_LOCAL, "ORIENT_LOCAL", 0, "Local", "Align the transformation axes to the selected objects' local space"},
-               {V3D_MANIP_NORMAL, "ORIENT_NORMAL", 0, "Normal", "Align the transformation axes to average normal of selected elements (bone Y axis for pose mode)"},
-               {V3D_MANIP_VIEW, "ORIENT_VIEW", 0, "View", "Align the transformation axes to the window"},
-               {V3D_MANIP_CUSTOM, "ORIENT_CUSTOM", 0, "Custom", "Use a custom transform orientation"},
-               {0, NULL, 0, NULL, NULL}};
-
        srna= RNA_def_struct(brna, "Space3DView", "Space");
        RNA_def_struct_sdna(srna, "View3D");
        RNA_def_struct_ui_text(srna, "3D View Space", "3D View space data");
@@ -911,7 +900,7 @@ static void rna_def_space_image(BlenderRNA *brna)
 
        prop= RNA_def_property(srna, "draw_channels", PROP_ENUM, PROP_NONE);
        RNA_def_property_enum_bitflag_sdna(prop, NULL, "flag");
-       RNA_def_property_enum_items(prop, dc_all_items);
+       RNA_def_property_enum_items(prop, draw_channels_items);
        RNA_def_property_enum_funcs(prop, NULL, NULL, "rna_SpaceImageEditor_draw_channels_itemf");
        RNA_def_property_ui_text(prop, "Draw Channels", "Channels of the image to draw.");
        RNA_def_property_update(prop, NC_SPACE|ND_SPACE_IMAGE, NULL);
index c4fb9ea3d0deaa91f4b4615a736b6c44df7d9afd..6f7bc9a4feb8bdc1a6b912ddf2bf993e90ce7adf 100644 (file)
@@ -206,7 +206,7 @@ static EnumPropertyItem *rna_TextureSlot_output_node_itemf(bContext *C, PointerR
        EnumPropertyItem *item= NULL;
        int totitem= 0;
        
-       if(tex && C) { /* Note, tex/mtex/ntree can be invalid of C is NULL, TODO - can this give valid results when C is NULL? */
+       if(tex) {
                bNodeTree *ntree= tex->nodetree;
                if(ntree) {
                        EnumPropertyItem tmp= {0, "", 0, "", ""};
@@ -229,8 +229,8 @@ static EnumPropertyItem *rna_TextureSlot_output_node_itemf(bContext *C, PointerR
        }
        
        RNA_enum_item_end(&item, &totitem);
-       
        *free = 1;
+
        return item;
 }