- in pose mode, pose bone properties are edited rather then armature bone

- new id property array method convert_to_pyobject()
- editing an array in the UI broke
- fixed for own error when updating ID prop api
This commit is contained in:
Campbell Barton 2009-11-17 12:54:29 +00:00
parent 51f2dcd08c
commit f7682e2e0f
3 changed files with 25 additions and 7 deletions

@ -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="")

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

@ -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; */