[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [23847] trunk/blender/source/blender: RNA:

Brecht Van Lommel brecht at blender.org
Wed Oct 14 21:19:44 CEST 2009


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




More information about the Bf-blender-cvs mailing list