- 'id_data' attribute for py rna api, so you can get the Mesh from a face, Armature from a bone, etc.

- fixed crash when adjusting added objects settngs from the toolbar.
This commit is contained in:
Campbell Barton 2009-10-28 11:31:24 +00:00
parent e694e30721
commit e024b46eb6
3 changed files with 20 additions and 5 deletions

@ -364,6 +364,7 @@ class WM_OT_doc_edit(bpy.types.Operator):
__label__ = "Edit Documentation" __label__ = "Edit Documentation"
__props__ = [doc_id, doc_new] __props__ = [doc_id, doc_new]
def _send_xmlrpc(self, data_dict): def _send_xmlrpc(self, data_dict):
print("sending data:", data_dict) print("sending data:", data_dict)

@ -123,10 +123,8 @@ void ED_object_base_init_from_view(bContext *C, Base *base)
} }
if (U.flag & USER_ADD_VIEWALIGNED) { if (U.flag & USER_ADD_VIEWALIGNED) {
ARegion *ar= CTX_wm_region(C); RegionView3D *rv3d = CTX_wm_region_view3d(C);
if(ar) { if(rv3d) {
RegionView3D *rv3d= ar->regiondata;
rv3d->viewquat[0]= -rv3d->viewquat[0]; rv3d->viewquat[0]= -rv3d->viewquat[0];
QuatToEul(rv3d->viewquat, ob->rot); QuatToEul(rv3d->viewquat, ob->rot);
rv3d->viewquat[0]= -rv3d->viewquat[0]; rv3d->viewquat[0]= -rv3d->viewquat[0];

@ -1178,7 +1178,6 @@ static PyObject *pyrna_struct_is_property_hidden(BPy_StructRNA * self, PyObject
return PyBool_FromLong(hidden); return PyBool_FromLong(hidden);
} }
static PyObject *pyrna_struct_dir(BPy_StructRNA * self) static PyObject *pyrna_struct_dir(BPy_StructRNA * self)
{ {
PyObject *ret, *dict; PyObject *ret, *dict;
@ -1263,6 +1262,13 @@ static PyObject *pyrna_struct_dir(BPy_StructRNA * self)
BLI_freelistN(&lb); BLI_freelistN(&lb);
} }
/* Hard coded names */
{
pystring = PyUnicode_FromString("id_data");
PyList_Append(ret, pystring);
Py_DECREF(pystring);
}
return ret; return ret;
} }
@ -1319,6 +1325,16 @@ static PyObject *pyrna_struct_getattro( BPy_StructRNA * self, PyObject *pyname )
BLI_freelistN(&newlb); BLI_freelistN(&newlb);
} }
else if (strcmp(name, "id_data")==0) { /* XXX - hard coded */
if(self->ptr.id.data) {
PointerRNA id_ptr;
RNA_id_pointer_create((ID *)self->ptr.id.data, &id_ptr);
return pyrna_struct_CreatePyObject(&id_ptr);
}
else {
Py_RETURN_NONE;
}
}
else { else {
PyErr_Format( PyExc_AttributeError, "StructRNA - Attribute \"%.200s\" not found", name); PyErr_Format( PyExc_AttributeError, "StructRNA - Attribute \"%.200s\" not found", name);
ret = NULL; ret = NULL;