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

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to