Revision: 23847 http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=23847 Author: blendix Date: 2009-10-14 21:19:43 +0200 (Wed, 14 Oct 2009)
Log Message: ----------- RNA: * 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. Modified Paths: -------------- trunk/blender/source/blender/editors/armature/poselib.c trunk/blender/source/blender/editors/mesh/editmesh_mods.c trunk/blender/source/blender/editors/mesh/editmesh_tools.c trunk/blender/source/blender/editors/object/object_add.c trunk/blender/source/blender/editors/object/object_group.c trunk/blender/source/blender/editors/object/object_modifier.c trunk/blender/source/blender/editors/object/object_vgroup.c trunk/blender/source/blender/makesrna/intern/rna_access.c trunk/blender/source/blender/makesrna/intern/rna_constraint.c trunk/blender/source/blender/makesrna/intern/rna_define.c trunk/blender/source/blender/makesrna/intern/rna_image.c trunk/blender/source/blender/makesrna/intern/rna_material.c trunk/blender/source/blender/makesrna/intern/rna_object.c trunk/blender/source/blender/makesrna/intern/rna_object_force.c trunk/blender/source/blender/makesrna/intern/rna_particle.c trunk/blender/source/blender/makesrna/intern/rna_rna.c trunk/blender/source/blender/makesrna/intern/rna_sculpt_paint.c trunk/blender/source/blender/makesrna/intern/rna_space.c trunk/blender/source/blender/makesrna/intern/rna_texture.c Modified: trunk/blender/source/blender/editors/armature/poselib.c =================================================================== --- trunk/blender/source/blender/editors/armature/poselib.c 2009-10-14 18:51:00 UTC (rev 23846) +++ trunk/blender/source/blender/editors/armature/poselib.c 2009-10-14 19:19:43 UTC (rev 23847) @@ -432,9 +432,6 @@ 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 @@ } } - 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) Modified: trunk/blender/source/blender/editors/mesh/editmesh_mods.c =================================================================== --- trunk/blender/source/blender/editors/mesh/editmesh_mods.c 2009-10-14 18:51:00 UTC (rev 23846) +++ trunk/blender/source/blender/editors/mesh/editmesh_mods.c 2009-10-14 19:19:43 UTC (rev 23847) @@ -658,16 +658,45 @@ /* 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 #define SIMFACE_AREA 203 #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 @@ /* ***************************************************** */ -/* 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 @@ /* ********************************* */ -/* -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 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(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); - - *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 @@ 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); } Modified: trunk/blender/source/blender/editors/mesh/editmesh_tools.c =================================================================== --- trunk/blender/source/blender/editors/mesh/editmesh_tools.c 2009-10-14 18:51:00 UTC (rev 23846) +++ trunk/blender/source/blender/editors/mesh/editmesh_tools.c 2009-10-14 19:19:43 UTC (rev 23847) @@ -5856,14 +5856,10 @@ 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 @@ 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) Modified: trunk/blender/source/blender/editors/object/object_add.c =================================================================== --- trunk/blender/source/blender/editors/object/object_add.c 2009-10-14 18:51:00 UTC (rev 23846) +++ trunk/blender/source/blender/editors/object/object_add.c 2009-10-14 19:19:43 UTC (rev 23847) @@ -608,9 +608,6 @@ 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 @@ 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) Modified: trunk/blender/source/blender/editors/object/object_group.c =================================================================== --- trunk/blender/source/blender/editors/object/object_group.c 2009-10-14 18:51:00 UTC (rev 23846) +++ trunk/blender/source/blender/editors/object/object_group.c 2009-10-14 19:19:43 UTC (rev 23847) @@ -275,18 +275,14 @@ 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 @@ } RNA_enum_item_end(&item, &totitem); - *free= 1; return item; Modified: trunk/blender/source/blender/editors/object/object_modifier.c =================================================================== --- trunk/blender/source/blender/editors/object/object_modifier.c 2009-10-14 18:51:00 UTC (rev 23846) +++ trunk/blender/source/blender/editors/object/object_modifier.c 2009-10-14 19:19:43 UTC (rev 23847) @@ -440,12 +440,12 @@ 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 @@ } RNA_enum_item_end(&item, &totitem); - *free= 1; return item; Modified: trunk/blender/source/blender/editors/object/object_vgroup.c =================================================================== --- trunk/blender/source/blender/editors/object/object_vgroup.c 2009-10-14 18:51:00 UTC (rev 23846) +++ trunk/blender/source/blender/editors/object/object_vgroup.c 2009-10-14 19:19:43 UTC (rev 23847) @@ -1233,13 +1233,13 @@ 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; @@ Diff output truncated at 10240 characters. @@ _______________________________________________ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org http://lists.blender.org/mailman/listinfo/bf-blender-cvs