[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [31883] trunk/blender: pyrna: replace method for operators forwarding getattr/setattr access from self. * to self.properties.*
Campbell Barton
ideasman42 at gmail.com
Sat Sep 11 17:13:22 CEST 2010
Revision: 31883
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=31883
Author: campbellbarton
Date: 2010-09-11 17:13:22 +0200 (Sat, 11 Sep 2010)
Log Message:
-----------
pyrna: replace method for operators forwarding getattr/setattr access from self.* to self.properties.*
Modified Paths:
--------------
trunk/blender/release/scripts/modules/bpy_types.py
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-11 14:43:27 UTC (rev 31882)
+++ trunk/blender/release/scripts/modules/bpy_types.py 2010-09-11 15:13:22 UTC (rev 31883)
@@ -637,16 +637,26 @@
# Only defined so operators members can be used by accessing self.order
class Operator(StructRNA, metaclass=OrderedMeta):
__slots__ = ()
+
+ def __getattribute__(self, attr):
+ properties = StructRNA.path_resolve(self, "properties")
+ if attr in properties.bl_rna.properties:
+ return getattr(properties, attr)
+ return super().__getattribute__(attr)
- @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)
+ def __setattr__(self, attr, value):
+ properties = StructRNA.path_resolve(self, "properties")
+ if attr in properties.bl_rna.properties:
+ setattr(properties, attr, value)
+ return super().__setattr__(attr, value)
+ def __delattr__(self, attr):
+ properties = StructRNA.path_resolve(self, "properties")
+ if attr in properties.bl_rna.properties:
+ delattr(properties, attr)
+ return super().__delattr__(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/source/blender/python/intern/bpy_operator_wrap.c
===================================================================
--- trunk/blender/source/blender/python/intern/bpy_operator_wrap.c 2010-09-11 14:43:27 UTC (rev 31882)
+++ trunk/blender/source/blender/python/intern/bpy_operator_wrap.c 2010-09-11 15:13:22 UTC (rev 31883)
@@ -45,9 +45,6 @@
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