[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [31847] trunk/blender: - bugfix, operators were getting their properties registered twice.
Campbell Barton
ideasman42 at gmail.com
Thu Sep 9 19:41:36 CEST 2010
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)
More information about the Bf-blender-cvs
mailing list