- in pose mode, pose bone properties are edited rather then armature bone
authorCampbell Barton <ideasman42@gmail.com>
Tue, 17 Nov 2009 12:54:29 +0000 (12:54 +0000)
committerCampbell Barton <ideasman42@gmail.com>
Tue, 17 Nov 2009 12:54:29 +0000 (12:54 +0000)
- new id property array method convert_to_pyobject()
- editing an array in the UI broke
- fixed for own error when updating ID prop api

release/scripts/modules/rna_prop_ui.py
release/scripts/ui/properties_data_bone.py
source/blender/python/generic/IDProp.c

index ebd1fe4cd34e6bb1ccccee9f7890ff588482aa2b..a55840934424c54297a9ee907095986838e6f258 100644 (file)
@@ -70,6 +70,8 @@ def draw(layout, context, context_member):
     for key, val in items:
         row = layout.row()
         convert_to_pyobject = getattr(val, "convert_to_pyobject", None)
+        
+        val_orig = val
         if convert_to_pyobject:
             val_draw = val = val.convert_to_pyobject()
             val_draw = str(val_draw)
@@ -96,7 +98,9 @@ def draw(layout, context, context_member):
             split = box.split(percentage=0.75)
             row = split.row()
             row.itemL(text=key)
-            if convert_to_pyobject:
+            
+            # explicit exception for arrays
+            if convert_to_pyobject and not hasattr(val_orig, "len"):
                 row.itemL(text=val_draw)
             else:
                 row.itemR(rna_item, key, text="")
index 6ea65bf5cd105c2d40c87bd3f449c1f0e4c1af2e..08dbe86c13f03c37c270cdbb9b4a02dccf2fe268 100644 (file)
@@ -281,10 +281,13 @@ class BONE_PT_properties(BoneButtonsPanel):
     def draw(self, context):
         import rna_prop_ui
         # reload(rna_prop_ui)
+        obj = context.object
+        if obj and obj.mode == 'POSE':
+            item = "active_pchan"
+        else:
+            item = "active_bone"
         
-        rna_prop_ui.draw(self.layout, context, "active_bone")
-        
-        
+        rna_prop_ui.draw(self.layout, context, item)
 
 bpy.types.register(BONE_PT_context_bone)
 bpy.types.register(BONE_PT_transform)
index 68d3e3879e577e1c68815c0c7e33bf8a467b4211..6d71332b9ec1eaee76455fb3695cbf859b8a5651 100644 (file)
@@ -346,7 +346,7 @@ int BPy_Wrap_SetMapItem(IDProperty *prop, PyObject *key, PyObject *val)
 
 static int BPy_IDGroup_Map_SetItem(BPy_IDProperty *self, PyObject *key, PyObject *val)
 {
-       BPy_Wrap_SetMapItem(self->prop, key, val);
+       return BPy_Wrap_SetMapItem(self->prop, key, val);
 }
 
 static PyObject *BPy_IDGroup_SpawnIterator(BPy_IDProperty *self)
@@ -478,7 +478,7 @@ static PyObject *BPy_IDGroup_IterItems(BPy_IDProperty *self)
 }
 
 /* utility function */
-static BPy_IDGroup_CorrectListLen(IDProperty *prop, PyObject *seq, int len)
+static void BPy_IDGroup_CorrectListLen(IDProperty *prop, PyObject *seq, int len)
 {
        int i, j;
 
@@ -753,6 +753,17 @@ static PyGetSetDef BPy_IDArray_getseters[] = {
        {NULL, NULL, NULL, NULL, NULL},
 };
 
+static PyObject *BPy_IDArray_ConvertToPy(BPy_IDArray *self)
+{
+       return BPy_IDGroup_MapDataToPy(self->prop);
+}
+
+static PyMethodDef BPy_IDArray_methods[] = {
+       {"convert_to_pyobject", (PyCFunction)BPy_IDArray_ConvertToPy, METH_NOARGS,
+               "return a purely python version of the group."},
+       {0, NULL, 0, NULL}
+};
+
 static int BPy_IDArray_Len(BPy_IDArray *self)
 {
        return self->prop->len;
@@ -893,7 +904,7 @@ PyTypeObject IDArray_Type = {
        NULL,                       /* iternextfunc tp_iternext; */
 
   /*** Attribute descriptor and subclassing stuff ***/
-       NULL,                       /* struct PyMethodDef *tp_methods; */
+       BPy_IDArray_methods,            /* struct PyMethodDef *tp_methods; */
        NULL,                       /* struct PyMemberDef *tp_members; */
        BPy_IDArray_getseters,       /* struct PyGetSetDef *tp_getset; */
        NULL,                       /* struct _typeobject *tp_base; */