Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCampbell Barton <ideasman42@gmail.com>2010-09-09 21:41:36 +0400
committerCampbell Barton <ideasman42@gmail.com>2010-09-09 21:41:36 +0400
commit7bd1f9a234aa0adeecc3ec8e77eead598b5af232 (patch)
tree1828b4481186ef27b9d07548fcf8f4baf562e688
parentf9367c4c4d75d4c823029e64f8c5d371e507df52 (diff)
- 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
-rw-r--r--release/scripts/modules/bpy_types.py8
-rw-r--r--release/scripts/ui/properties_data_armature_rigify.py2
-rw-r--r--source/blender/makesrna/intern/rna_wm.c1
-rw-r--r--source/blender/python/intern/bpy_operator_wrap.c3
4 files changed, 13 insertions, 1 deletions
diff --git a/release/scripts/modules/bpy_types.py b/release/scripts/modules/bpy_types.py
index b349fa0a76e..d3a1a5544f5 100644
--- a/release/scripts/modules/bpy_types.py
+++ b/release/scripts/modules/bpy_types.py
@@ -701,6 +701,14 @@ class OrderedMeta(RNAMeta):
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
diff --git a/release/scripts/ui/properties_data_armature_rigify.py b/release/scripts/ui/properties_data_armature_rigify.py
index 92b9074892b..3a34f8e1b9d 100644
--- a/release/scripts/ui/properties_data_armature_rigify.py
+++ b/release/scripts/ui/properties_data_armature_rigify.py
@@ -318,7 +318,7 @@ def register():
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__":
diff --git a/source/blender/makesrna/intern/rna_wm.c b/source/blender/makesrna/intern/rna_wm.c
index f4c19db1277..900a1fd60cf 100644
--- a/source/blender/makesrna/intern/rna_wm.c
+++ b/source/blender/makesrna/intern/rna_wm.c
@@ -840,6 +840,7 @@ static StructRNA *rna_Operator_register(const bContext *C, ReportList *reports,
/* 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;
diff --git a/source/blender/python/intern/bpy_operator_wrap.c b/source/blender/python/intern/bpy_operator_wrap.c
index 6d16896fb16..27da839960b 100644
--- a/source/blender/python/intern/bpy_operator_wrap.c
+++ b/source/blender/python/intern/bpy_operator_wrap.c
@@ -45,6 +45,9 @@ static void operator_properties_init(wmOperatorType *ot)
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)