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;


_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to