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