[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [26313] trunk/blender/source/blender/ python/intern: Properties for macro operator call in python.
Martin Poirier
theeth at yahoo.com
Tue Jan 26 21:43:27 CET 2010
Revision: 26313
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=26313
Author: theeth
Date: 2010-01-26 21:43:27 +0100 (Tue, 26 Jan 2010)
Log Message:
-----------
Properties for macro operator call in python.
Dicts are converted to operator properties like this:
bpy.ops.armature.extrude_forked(TRANSFORM_OT_translate={"value":(2,0,1)})
Note that this doesn't work quite well if one operator is twice in the same macro, but that's a problem at the RNA level too. I'll have to deal with that eventually.
Modified Paths:
--------------
trunk/blender/source/blender/python/intern/bpy_operator.c
trunk/blender/source/blender/python/intern/bpy_rna.c
Modified: trunk/blender/source/blender/python/intern/bpy_operator.c
===================================================================
--- trunk/blender/source/blender/python/intern/bpy_operator.c 2010-01-26 20:39:23 UTC (rev 26312)
+++ trunk/blender/source/blender/python/intern/bpy_operator.c 2010-01-26 20:43:27 UTC (rev 26313)
@@ -83,9 +83,7 @@
error_val= -1;
}
else {
- /* WM_operator_properties_create(&ptr, opname); */
- /* Save another lookup */
- RNA_pointer_create(NULL, ot->srna, NULL, &ptr);
+ WM_operator_properties_create_ptr(&ptr, ot);
if(kw && PyDict_Size(kw))
error_val= pyrna_pydict_to_props(&ptr, kw, 0, "Converting py args to operator properties: ");
Modified: trunk/blender/source/blender/python/intern/bpy_rna.c
===================================================================
--- trunk/blender/source/blender/python/intern/bpy_rna.c 2010-01-26 20:39:23 UTC (rev 26312)
+++ trunk/blender/source/blender/python/intern/bpy_rna.c 2010-01-26 20:43:27 UTC (rev 26313)
@@ -785,6 +785,12 @@
StructRNA *ptype= RNA_property_pointer_type(ptr, prop);
int flag = RNA_property_flag(prop);
+ /* if property is an OperatorProperties pointer and value is a map, forward back to pyrna_pydict_to_props */
+ if (RNA_struct_is_a(ptype, &RNA_OperatorProperties) && PyDict_Check(value)) {
+ PointerRNA opptr = RNA_property_pointer_get(ptr, prop);
+ return pyrna_pydict_to_props(&opptr, value, 0, error_prefix);
+ }
+
if(!BPy_StructRNA_Check(value) && value != Py_None) {
PyErr_Format(PyExc_TypeError, "%.200s expected a %.200s type", error_prefix, RNA_struct_identifier(ptype));
return -1;
More information about the Bf-blender-cvs
mailing list