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

Brecht Van Lommel brecht at blender.org
Fri Jun 19 16:56:49 CEST 2009


Revision: 21010
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=21010
Author:   blendix
Date:     2009-06-19 16:56:49 +0200 (Fri, 19 Jun 2009)

Log Message:
-----------
RNA:
* EditBone wrapped, using manual get/set function, and used
  in the UI code. Makes the RNA wrapping code here more
  complicated, but works.

Modified Paths:
--------------
    branches/blender2.5/blender/release/datafiles/blenderbuttons
    branches/blender2.5/blender/release/ui/buttons_data_bone.py
    branches/blender2.5/blender/source/blender/editors/space_buttons/buttons_context.c
    branches/blender2.5/blender/source/blender/makesrna/RNA_access.h
    branches/blender2.5/blender/source/blender/makesrna/intern/makesrna.c
    branches/blender2.5/blender/source/blender/makesrna/intern/rna_ID.c
    branches/blender2.5/blender/source/blender/makesrna/intern/rna_access.c
    branches/blender2.5/blender/source/blender/makesrna/intern/rna_armature.c

Modified: branches/blender2.5/blender/release/datafiles/blenderbuttons
===================================================================
(Binary files differ)

Modified: branches/blender2.5/blender/release/ui/buttons_data_bone.py
===================================================================
--- branches/blender2.5/blender/release/ui/buttons_data_bone.py	2009-06-19 12:57:31 UTC (rev 21009)
+++ branches/blender2.5/blender/release/ui/buttons_data_bone.py	2009-06-19 14:56:49 UTC (rev 21010)
@@ -7,7 +7,7 @@
 	__context__ = "bone"
 	
 	def poll(self, context):
-		return (context.bone != None)
+		return (context.bone or context.edit_bone)
 
 class BONE_PT_bone(BoneButtonsPanel):
 	__idname__ = "BONE_PT_bone"
@@ -16,6 +16,8 @@
 	def draw(self, context):
 		layout = self.layout
 		bone = context.bone
+		if not bone:
+			bone = context.edit_bone
 
 		split = layout.split()
 
@@ -40,8 +42,7 @@
 		
 		sub.itemL(text="Display:")
 		sub.itemR(bone, "draw_wire", text="Wireframe")
-		sub.itemR(bone, "editmode_hidden", text="Hide (EditMode)")
-		sub.itemR(bone, "pose_channel_hidden", text="Hide (PoseMode)")
+		sub.itemR(bone, "hidden", text="Hide")
 
 		sub.itemL(text="Curved Bones:")
 		sub.itemR(bone, "bbone_segments", text="Segments")
@@ -50,4 +51,4 @@
 		
 		sub.itemR(bone, "cyclic_offset")
 
-bpy.types.register(BONE_PT_bone)
\ No newline at end of file
+bpy.types.register(BONE_PT_bone)

Modified: branches/blender2.5/blender/source/blender/editors/space_buttons/buttons_context.c
===================================================================
--- branches/blender2.5/blender/source/blender/editors/space_buttons/buttons_context.c	2009-06-19 12:57:31 UTC (rev 21009)
+++ branches/blender2.5/blender/source/blender/editors/space_buttons/buttons_context.c	2009-06-19 14:56:49 UTC (rev 21010)
@@ -54,6 +54,7 @@
 
 #include "RNA_access.h"
 
+#include "ED_armature.h"
 #include "ED_screen.h"
 
 #include "UI_interface.h"
@@ -249,17 +250,30 @@
 {
 	bArmature *arm;
 	Bone *bone;
+	EditBone *edbo;
 
 	/* if we have an armature, get the active bone */
 	if(buttons_context_path_data(path, OB_ARMATURE)) {
 		arm= path->ptr[path->len-1].data;
-		bone= find_active_bone(arm->bonebase.first);
 
-		if(bone) {
-			RNA_pointer_create(&arm->id, &RNA_Bone, bone, &path->ptr[path->len]);
-			path->len++;
-			return 1;
+		if(arm->edbo) {
+			for(edbo=arm->edbo->first; edbo; edbo=edbo->next) {
+				if(edbo->flag & BONE_ACTIVE) {
+					RNA_pointer_create(&arm->id, &RNA_EditBone, edbo, &path->ptr[path->len]);
+					path->len++;
+					return 1;
+				}
+			}
 		}
+		else {
+			bone= find_active_bone(arm->bonebase.first);
+
+			if(bone) {
+				RNA_pointer_create(&arm->id, &RNA_Bone, bone, &path->ptr[path->len]);
+				path->len++;
+				return 1;
+			}
+		}
 	}
 
 	/* no path to a bone possible */
@@ -569,6 +583,10 @@
 		set_pointer_type(path, result, &RNA_Bone);
 		return 1;
 	}
+	else if(CTX_data_equals(member, "edit_bone")) {
+		set_pointer_type(path, result, &RNA_EditBone);
+		return 1;
+	}
 	else if(CTX_data_equals(member, "particle_system")) {
 		set_pointer_type(path, result, &RNA_ParticleSystem);
 		return 1;

Modified: branches/blender2.5/blender/source/blender/makesrna/RNA_access.h
===================================================================
--- branches/blender2.5/blender/source/blender/makesrna/RNA_access.h	2009-06-19 12:57:31 UTC (rev 21009)
+++ branches/blender2.5/blender/source/blender/makesrna/RNA_access.h	2009-06-19 14:56:49 UTC (rev 21010)
@@ -164,6 +164,7 @@
 extern StructRNA RNA_Driver;
 extern StructRNA RNA_DriverTarget;
 extern StructRNA RNA_EdgeSplitModifier;
+extern StructRNA RNA_EditBone;
 extern StructRNA RNA_EffectSequence;
 extern StructRNA RNA_EnumProperty;
 extern StructRNA RNA_EnumPropertyItem;

Modified: branches/blender2.5/blender/source/blender/makesrna/intern/makesrna.c
===================================================================
--- branches/blender2.5/blender/source/blender/makesrna/intern/makesrna.c	2009-06-19 12:57:31 UTC (rev 21009)
+++ branches/blender2.5/blender/source/blender/makesrna/intern/makesrna.c	2009-06-19 14:56:49 UTC (rev 21010)
@@ -702,8 +702,10 @@
 	else {
 		if(manualfunc)
 			fprintf(f, "\n	%s(iter, ptr);\n", manualfunc);
+		else if(dp->dnapointerlevel == 0)
+			fprintf(f, "\n	rna_iterator_listbase_begin(iter, &data->%s, NULL);\n", dp->dnaname);
 		else
-			fprintf(f, "\n	rna_iterator_listbase_begin(iter, &data->%s, NULL);\n", dp->dnaname);
+			fprintf(f, "\n	rna_iterator_listbase_begin(iter, data->%s, NULL);\n", dp->dnaname);
 	}
 
 	getfunc= rna_alloc_function_name(srna->identifier, prop->identifier, "get");

Modified: branches/blender2.5/blender/source/blender/makesrna/intern/rna_ID.c
===================================================================
--- branches/blender2.5/blender/source/blender/makesrna/intern/rna_ID.c	2009-06-19 12:57:31 UTC (rev 21009)
+++ branches/blender2.5/blender/source/blender/makesrna/intern/rna_ID.c	2009-06-19 14:56:49 UTC (rev 21010)
@@ -218,7 +218,6 @@
 {
 	StructRNA *srna;
 	PropertyRNA *prop;
-	FunctionRNA *func;
 
 	srna= RNA_def_struct(brna, "ID", NULL);
 	RNA_def_struct_ui_text(srna, "ID", "Base type for datablocks, defining a unique name, linking from other libraries and garbage collection.");

Modified: branches/blender2.5/blender/source/blender/makesrna/intern/rna_access.c
===================================================================
--- branches/blender2.5/blender/source/blender/makesrna/intern/rna_access.c	2009-06-19 12:57:31 UTC (rev 21009)
+++ branches/blender2.5/blender/source/blender/makesrna/intern/rna_access.c	2009-06-19 14:56:49 UTC (rev 21010)
@@ -1500,7 +1500,7 @@
 	ListBaseIterator *internal;
 
 	internal= MEM_callocN(sizeof(ListBaseIterator), "ListBaseIterator");
-	internal->link= lb->first;
+	internal->link= (lb)? lb->first: NULL;
 	internal->skip= skip;
 
 	iter->internal= internal;

Modified: branches/blender2.5/blender/source/blender/makesrna/intern/rna_armature.c
===================================================================
--- branches/blender2.5/blender/source/blender/makesrna/intern/rna_armature.c	2009-06-19 12:57:31 UTC (rev 21009)
+++ branches/blender2.5/blender/source/blender/makesrna/intern/rna_armature.c	2009-06-19 14:56:49 UTC (rev 21010)
@@ -36,25 +36,32 @@
 
 #ifdef RNA_RUNTIME
 
-static void rna_Bone_layer_set(PointerRNA *ptr, const int *values)
+#include "ED_armature.h"
+
+static void rna_bone_layer_set(short *layer, const int *values)
 {
-	Bone *bone= (Bone*)ptr->data;
 	int i, tot= 0;
 
 	/* ensure we always have some layer selected */
-	for(i=0; i<20; i++)
+	for(i=0; i<16; i++)
 		if(values[i])
 			tot++;
 	
 	if(tot==0)
 		return;
 
-	for(i=0; i<20; i++) {
-		if(values[i]) bone->layer |= (1<<i);
-		else bone->layer &= ~(1<<i);
+	for(i=0; i<16; i++) {
+		if(values[i]) *layer |= (1<<i);
+		else *layer &= ~(1<<i);
 	}
 }
 
+static void rna_Bone_layer_set(PointerRNA *ptr, const int *values)
+{
+	Bone *bone= (Bone*)ptr->data;
+	rna_bone_layer_set(&bone->layer, values);
+}
+
 static void rna_Armature_layer_set(PointerRNA *ptr, const int *values)
 {
 	bArmature *arm= (bArmature*)ptr->data;
@@ -102,152 +109,529 @@
 	data->pathef= value;
 }
 
+PointerRNA rna_EditBone_rna_type_get(PointerRNA *ptr)
+{
+	return rna_builtin_type_get(ptr);
+}
+
+void rna_EditBone_name_get(PointerRNA *ptr, char *value)
+{
+	EditBone *data= (EditBone*)(ptr->data);
+	BLI_strncpy(value, data->name, sizeof(data->name));
+}
+
+int rna_EditBone_name_length(PointerRNA *ptr)
+{
+	EditBone *data= (EditBone*)(ptr->data);
+	return strlen(data->name);
+}
+
+int rna_EditBone_active_get(PointerRNA *ptr)
+{
+	EditBone *data= (EditBone*)(ptr->data);
+	return (((data->flag) & BONE_ACTIVE) != 0);
+}
+
+void rna_EditBone_active_set(PointerRNA *ptr, int value)
+{
+	EditBone *data= (EditBone*)(ptr->data);
+	if(value) data->flag |= BONE_ACTIVE;
+	else data->flag &= ~BONE_ACTIVE;
+}
+
+float rna_EditBone_bbone_in_get(PointerRNA *ptr)
+{
+	EditBone *data= (EditBone*)(ptr->data);
+	return (float)(data->ease1);
+}
+
+void rna_EditBone_bbone_in_set(PointerRNA *ptr, float value)
+{
+	EditBone *data= (EditBone*)(ptr->data);
+	data->ease1= CLAMPIS(value, 0.0f, 2.0f);
+}
+
+float rna_EditBone_bbone_out_get(PointerRNA *ptr)
+{
+	EditBone *data= (EditBone*)(ptr->data);
+	return (float)(data->ease2);
+}
+
+void rna_EditBone_bbone_out_set(PointerRNA *ptr, float value)
+{
+	EditBone *data= (EditBone*)(ptr->data);
+	data->ease2= CLAMPIS(value, 0.0f, 2.0f);
+}
+
+int rna_EditBone_bbone_segments_get(PointerRNA *ptr)
+{
+	EditBone *data= (EditBone*)(ptr->data);
+	return (int)(data->segments);
+}
+
+void rna_EditBone_bbone_segments_set(PointerRNA *ptr, int value)
+{
+	EditBone *data= (EditBone*)(ptr->data);
+	data->segments= CLAMPIS(value, 1, 32);
+}
+
+void rna_EditBone_layer_get(PointerRNA *ptr, int values[16])
+{
+	EditBone *data= (EditBone*)(ptr->data);
+	values[0]= ((data->layer & (1<<0)) != 0);
+	values[1]= ((data->layer & (1<<1)) != 0);
+	values[2]= ((data->layer & (1<<2)) != 0);
+	values[3]= ((data->layer & (1<<3)) != 0);
+	values[4]= ((data->layer & (1<<4)) != 0);
+	values[5]= ((data->layer & (1<<5)) != 0);
+	values[6]= ((data->layer & (1<<6)) != 0);
+	values[7]= ((data->layer & (1<<7)) != 0);
+	values[8]= ((data->layer & (1<<8)) != 0);
+	values[9]= ((data->layer & (1<<9)) != 0);
+	values[10]= ((data->layer & (1<<10)) != 0);
+	values[11]= ((data->layer & (1<<11)) != 0);
+	values[12]= ((data->layer & (1<<12)) != 0);
+	values[13]= ((data->layer & (1<<13)) != 0);
+	values[14]= ((data->layer & (1<<14)) != 0);
+	values[15]= ((data->layer & (1<<15)) != 0);
+}
+
+void rna_EditBone_layer_set(PointerRNA *ptr, const int values[16])
+{
+	EditBone *data= (EditBone*)(ptr->data);
+	rna_bone_layer_set(&data->layer, values);
+}
+
+int rna_EditBone_connected_get(PointerRNA *ptr)
+{
+	EditBone *data= (EditBone*)(ptr->data);
+	return (((data->flag) & BONE_CONNECTED) != 0);
+}
+
+void rna_EditBone_connected_set(PointerRNA *ptr, int value)
+{
+	EditBone *data= (EditBone*)(ptr->data);
+	if(value) data->flag |= BONE_CONNECTED;
+	else data->flag &= ~BONE_CONNECTED;
+}
+
+int rna_EditBone_cyclic_offset_get(PointerRNA *ptr)
+{
+	EditBone *data= (EditBone*)(ptr->data);
+	return (!((data->flag) & BONE_NO_CYCLICOFFSET) != 0);
+}
+
+void rna_EditBone_cyclic_offset_set(PointerRNA *ptr, int value)
+{
+	EditBone *data= (EditBone*)(ptr->data);
+	if(!value) data->flag |= BONE_NO_CYCLICOFFSET;
+	else data->flag &= ~BONE_NO_CYCLICOFFSET;
+}
+
+int rna_EditBone_deform_get(PointerRNA *ptr)
+{
+	EditBone *data= (EditBone*)(ptr->data);

@@ Diff output truncated at 10240 characters. @@




More information about the Bf-blender-cvs mailing list