[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