[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