Revision: 31847
          
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=31847
Author:   campbellbarton
Date:     2010-09-09 19:41:36 +0200 (Thu, 09 Sep 2010)

Log Message:
-----------
- bugfix, operators were getting their properties registered twice.
- operator properties are now converted into python property() class members 
which bypass the operator 'properties' member.
  self.properties.mysetting
 ... can now be written as ...
  self.mysetting
- fix for error reloading rigify

Modified Paths:
--------------
    trunk/blender/release/scripts/modules/bpy_types.py
    trunk/blender/release/scripts/ui/properties_data_armature_rigify.py
    trunk/blender/source/blender/makesrna/intern/rna_wm.c
    trunk/blender/source/blender/python/intern/bpy_operator_wrap.c

Modified: trunk/blender/release/scripts/modules/bpy_types.py
===================================================================
--- trunk/blender/release/scripts/modules/bpy_types.py  2010-09-09 17:36:54 UTC 
(rev 31846)
+++ trunk/blender/release/scripts/modules/bpy_types.py  2010-09-09 17:41:36 UTC 
(rev 31847)
@@ -701,7 +701,15 @@
 class Operator(StructRNA, metaclass=OrderedMeta):
     __slots__ = ()
 
+    @classmethod
+    def easy_getsets(cls):
+        def bypass_attr(attr):
+            setattr(cls, attr, property(lambda self: getattr(self.properties, 
attr), lambda self, value: setattr(self.properties, attr, value)))
+        for attr, value in list(cls.__dict__.items()):
+            if type(value) == tuple and len(value) == 2 and type(value[1]) == 
dict:
+                bypass_attr(attr)
 
+
 class Macro(StructRNA, metaclass=OrderedMeta):
     # bpy_types is imported before ops is defined
     # so we have to do a local import on each run

Modified: trunk/blender/release/scripts/ui/properties_data_armature_rigify.py
===================================================================
--- trunk/blender/release/scripts/ui/properties_data_armature_rigify.py 
2010-09-09 17:36:54 UTC (rev 31846)
+++ trunk/blender/release/scripts/ui/properties_data_armature_rigify.py 
2010-09-09 17:41:36 UTC (rev 31847)
@@ -318,7 +318,7 @@
 
 
 def unregister():
-    bpy.types.Scene.RemoveProperty("pose_templates")
+    del bpy.types.Scene.pose_templates
     space_info.INFO_MT_armature_add.remove(menu_func)
 
 if __name__ == "__main__":

Modified: trunk/blender/source/blender/makesrna/intern/rna_wm.c
===================================================================
--- trunk/blender/source/blender/makesrna/intern/rna_wm.c       2010-09-09 
17:36:54 UTC (rev 31846)
+++ trunk/blender/source/blender/makesrna/intern/rna_wm.c       2010-09-09 
17:41:36 UTC (rev 31847)
@@ -840,6 +840,7 @@
 
        /* create a new menu type */
        dummyot.ext.srna= RNA_def_struct(&BLENDER_RNA, dummyot.idname, 
"Operator");
+       RNA_def_struct_flag(dummyot.ext.srna, STRUCT_NO_IDPROPERTIES); /* 
operator properties are registered separately */
        dummyot.ext.data= data;
        dummyot.ext.call= call;
        dummyot.ext.free= free;

Modified: trunk/blender/source/blender/python/intern/bpy_operator_wrap.c
===================================================================
--- trunk/blender/source/blender/python/intern/bpy_operator_wrap.c      
2010-09-09 17:36:54 UTC (rev 31846)
+++ trunk/blender/source/blender/python/intern/bpy_operator_wrap.c      
2010-09-09 17:41:36 UTC (rev 31847)
@@ -45,6 +45,9 @@
                PyErr_Print(); /* failed to register operator props */
                PyErr_Clear();
        }
+       
+       // see bpy_types.py:Operator, May redo this some other way!
+       PyObject_CallMethod(py_class, "easy_getsets", NULL);
 }
 
 void operator_wrapper(wmOperatorType *ot, void *userdata)


_______________________________________________
Bf-blender-cvs mailing list
Bf-blender-cvs@blender.org
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to