[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [21582] branches/blender2.5/blender/source /blender: RNA

Brecht Van Lommel brecht at blender.org
Tue Jul 14 19:35:08 CEST 2009


Revision: 21582
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=21582
Author:   blendix
Date:     2009-07-14 19:35:07 +0200 (Tue, 14 Jul 2009)

Log Message:
-----------
RNA

* RNA_enum_items_add_value and RNA_enum_item_add_separator utility
  functions, to add an item from an existing array with a certain
  value, and to add a separator.

Modified Paths:
--------------
    branches/blender2.5/blender/source/blender/editors/mesh/editmesh_tools.c
    branches/blender2.5/blender/source/blender/editors/transform/transform_orientations.c
    branches/blender2.5/blender/source/blender/makesrna/RNA_define.h
    branches/blender2.5/blender/source/blender/makesrna/intern/rna_define.c

Modified: branches/blender2.5/blender/source/blender/editors/mesh/editmesh_tools.c
===================================================================
--- branches/blender2.5/blender/source/blender/editors/mesh/editmesh_tools.c	2009-07-14 17:31:50 UTC (rev 21581)
+++ branches/blender2.5/blender/source/blender/editors/mesh/editmesh_tools.c	2009-07-14 17:35:07 UTC (rev 21582)
@@ -5796,20 +5796,13 @@
 
 static EnumPropertyItem *merge_type_itemf(bContext *C, PointerRNA *ptr, int *free)
 {	
+	Object *obedit;
 	EnumPropertyItem *item= NULL;
 	int totitem= 0;
 	
-	Object *obedit;
+	if(!C) /* needed for docs */
+		return merge_type_items;
 	
-	if(C==NULL) {
-		/* needed for doc generation */
-		RNA_enum_items_add(&item, &totitem, merge_type_items);
-		RNA_enum_item_end(&item, &totitem);
-		
-		*free= 1;
-		return item;
-	}
-	
 	obedit= CTX_data_edit_object(C);
 	if(obedit && obedit->type == OB_MESH) {
 		EditMesh *em= BKE_mesh_get_editmesh(obedit->data);
@@ -5817,18 +5810,18 @@
 		if(em->selectmode & SCE_SELECT_VERTEX) {
 			if(em->selected.first && em->selected.last &&
 				((EditSelection*)em->selected.first)->type == EDITVERT && ((EditSelection*)em->selected.last)->type == EDITVERT) {
-				RNA_enum_item_add(&item, &totitem, &merge_type_items[0]);
-				RNA_enum_item_add(&item, &totitem, &merge_type_items[1]);
+				RNA_enum_items_add_value(&item, &totitem, merge_type_items, 6);
+				RNA_enum_items_add_value(&item, &totitem, merge_type_items, 1);
 			}
 			else if(em->selected.first && ((EditSelection*)em->selected.first)->type == EDITVERT)
-				RNA_enum_item_add(&item, &totitem, &merge_type_items[1]);
+				RNA_enum_items_add_value(&item, &totitem, merge_type_items, 1);
 			else if(em->selected.last && ((EditSelection*)em->selected.last)->type == EDITVERT)
-				RNA_enum_item_add(&item, &totitem, &merge_type_items[0]);
+				RNA_enum_items_add_value(&item, &totitem, merge_type_items, 6);
 		}
 
-		RNA_enum_item_add(&item, &totitem, &merge_type_items[2]);
-		RNA_enum_item_add(&item, &totitem, &merge_type_items[3]);
-		RNA_enum_item_add(&item, &totitem, &merge_type_items[4]);
+		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;

Modified: branches/blender2.5/blender/source/blender/editors/transform/transform_orientations.c
===================================================================
--- branches/blender2.5/blender/source/blender/editors/transform/transform_orientations.c	2009-07-14 17:31:50 UTC (rev 21581)
+++ branches/blender2.5/blender/source/blender/editors/transform/transform_orientations.c	2009-07-14 17:35:07 UTC (rev 21582)
@@ -366,7 +366,6 @@
 	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 sepr = {0, "", 0, NULL, NULL};
 	EnumPropertyItem tmp = {0, "", 0, "", ""};
 	EnumPropertyItem *item= NULL;
 	int i = V3D_MANIP_CUSTOM, totitem= 0;
@@ -386,7 +385,7 @@
 	}
 		
 	if(ts)
-		RNA_enum_item_add(&item, &totitem, &sepr);
+		RNA_enum_item_add_separator(&item, &totitem);
 
 	for(; ts; ts = ts->next) {
 		tmp.identifier = "CUSTOM";

Modified: branches/blender2.5/blender/source/blender/makesrna/RNA_define.h
===================================================================
--- branches/blender2.5/blender/source/blender/makesrna/RNA_define.h	2009-07-14 17:31:50 UTC (rev 21581)
+++ branches/blender2.5/blender/source/blender/makesrna/RNA_define.h	2009-07-14 17:35:07 UTC (rev 21582)
@@ -164,7 +164,9 @@
  * strings are not freed, assumed pointing to static location. */
 
 void RNA_enum_item_add(EnumPropertyItem **items, int *totitem, EnumPropertyItem *item);
+void RNA_enum_item_add_separator(EnumPropertyItem **items, int *totitem);
 void RNA_enum_items_add(EnumPropertyItem **items, int *totitem, EnumPropertyItem *item);
+void RNA_enum_items_add_value(EnumPropertyItem **items, int *totitem, EnumPropertyItem *item, int value);
 void RNA_enum_item_end(EnumPropertyItem **items, int *totitem);
 
 #ifdef __cplusplus

Modified: branches/blender2.5/blender/source/blender/makesrna/intern/rna_define.c
===================================================================
--- branches/blender2.5/blender/source/blender/makesrna/intern/rna_define.c	2009-07-14 17:31:50 UTC (rev 21581)
+++ branches/blender2.5/blender/source/blender/makesrna/intern/rna_define.c	2009-07-14 17:35:07 UTC (rev 21582)
@@ -2284,12 +2284,25 @@
 	*totitem= tot+1;
 }
 
+void RNA_enum_item_add_separator(EnumPropertyItem **items, int *totitem)
+{
+	static EnumPropertyItem sepr = {0, "", 0, NULL, NULL};
+	RNA_enum_item_add(items, totitem, &sepr);
+}
+
 void RNA_enum_items_add(EnumPropertyItem **items, int *totitem, EnumPropertyItem *item)
 {
 	for(; item->identifier; item++)
 		RNA_enum_item_add(items, totitem, item);
 }
 
+void RNA_enum_items_add_value(EnumPropertyItem **items, int *totitem, EnumPropertyItem *item, int value)
+{
+	for(; item->identifier; item++)
+		if(item->value == value)
+			RNA_enum_item_add(items, totitem, item);
+}
+
 void RNA_enum_item_end(EnumPropertyItem **items, int *totitem)
 {
 	static EnumPropertyItem empty = {0, NULL, 0, NULL, NULL};





More information about the Bf-blender-cvs mailing list