[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [24230] trunk/blender: make python operator instances subclasses of the wmOperator when called.

Campbell Barton ideasman42 at gmail.com
Mon Nov 2 09:32:00 CET 2009


Revision: 24230
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=24230
Author:   campbellbarton
Date:     2009-11-02 09:32:00 +0100 (Mon, 02 Nov 2009)

Log Message:
-----------
make python operator instances subclasses of the wmOperator when called.
was subclassing the operator's type before.

Removes the need for passing self.__operator__, can pass self directly.

Modified Paths:
--------------
    trunk/blender/release/scripts/io/export_3ds.py
    trunk/blender/release/scripts/io/export_fbx.py
    trunk/blender/release/scripts/io/export_mdd.py
    trunk/blender/release/scripts/io/export_obj.py
    trunk/blender/release/scripts/io/export_ply.py
    trunk/blender/release/scripts/io/export_x3d.py
    trunk/blender/release/scripts/io/import_3ds.py
    trunk/blender/release/scripts/io/import_obj.py
    trunk/blender/release/scripts/modules/bpy_ops.py
    trunk/blender/release/scripts/templates/operator.py
    trunk/blender/release/scripts/ui/space_userpref.py
    trunk/blender/release/scripts/ui/space_view3d.py
    trunk/blender/source/blender/python/intern/bpy_operator_wrap.c

Modified: trunk/blender/release/scripts/io/export_3ds.py
===================================================================
--- trunk/blender/release/scripts/io/export_3ds.py	2009-11-02 08:05:16 UTC (rev 24229)
+++ trunk/blender/release/scripts/io/export_3ds.py	2009-11-02 08:32:00 UTC (rev 24230)
@@ -1128,7 +1128,7 @@
 	
 	def invoke(self, context, event):
 		wm = context.manager
-		wm.add_fileselect(self.__operator__)
+		wm.add_fileselect(self)
 		return ('RUNNING_MODAL',)
 	
 	def poll(self, context): # Poll isnt working yet

Modified: trunk/blender/release/scripts/io/export_fbx.py
===================================================================
--- trunk/blender/release/scripts/io/export_fbx.py	2009-11-02 08:05:16 UTC (rev 24229)
+++ trunk/blender/release/scripts/io/export_fbx.py	2009-11-02 08:32:00 UTC (rev 24230)
@@ -3429,7 +3429,7 @@
 	
 	def invoke(self, context, event):	
 		wm = context.manager
-		wm.add_fileselect(self.__operator__)
+		wm.add_fileselect(self)
 		return ('RUNNING_MODAL',)
 
 

Modified: trunk/blender/release/scripts/io/export_mdd.py
===================================================================
--- trunk/blender/release/scripts/io/export_mdd.py	2009-11-02 08:05:16 UTC (rev 24229)
+++ trunk/blender/release/scripts/io/export_mdd.py	2009-11-02 08:32:00 UTC (rev 24230)
@@ -184,7 +184,7 @@
 	
 	def invoke(self, context, event):	
 		wm = context.manager
-		wm.add_fileselect(self.__operator__)
+		wm.add_fileselect(self)
 		return ('RUNNING_MODAL',)
 
 bpy.ops.add(EXPORT_OT_mdd)

Modified: trunk/blender/release/scripts/io/export_obj.py
===================================================================
--- trunk/blender/release/scripts/io/export_obj.py	2009-11-02 08:05:16 UTC (rev 24229)
+++ trunk/blender/release/scripts/io/export_obj.py	2009-11-02 08:32:00 UTC (rev 24230)
@@ -995,7 +995,7 @@
 	
 	def invoke(self, context, event):
 		wm = context.manager
-		wm.add_fileselect(self.__operator__)
+		wm.add_fileselect(self)
 		return ('RUNNING_MODAL',)
 	
 	def poll(self, context): # Poll isnt working yet

Modified: trunk/blender/release/scripts/io/export_ply.py
===================================================================
--- trunk/blender/release/scripts/io/export_ply.py	2009-11-02 08:05:16 UTC (rev 24229)
+++ trunk/blender/release/scripts/io/export_ply.py	2009-11-02 08:32:00 UTC (rev 24230)
@@ -288,7 +288,7 @@
 	
 	def invoke(self, context, event):	
 		wm = context.manager
-		wm.add_fileselect(self.__operator__)
+		wm.add_fileselect(self)
 		return ('RUNNING_MODAL',)
 
 

Modified: trunk/blender/release/scripts/io/export_x3d.py
===================================================================
--- trunk/blender/release/scripts/io/export_x3d.py	2009-11-02 08:05:16 UTC (rev 24229)
+++ trunk/blender/release/scripts/io/export_x3d.py	2009-11-02 08:32:00 UTC (rev 24230)
@@ -1235,7 +1235,7 @@
 	
 	def invoke(self, context, event):
 		wm = context.manager
-		wm.add_fileselect(self.__operator__)
+		wm.add_fileselect(self)
 		return ('RUNNING_MODAL',)
 
 bpy.ops.add(EXPORT_OT_x3d)

Modified: trunk/blender/release/scripts/io/import_3ds.py
===================================================================
--- trunk/blender/release/scripts/io/import_3ds.py	2009-11-02 08:05:16 UTC (rev 24229)
+++ trunk/blender/release/scripts/io/import_3ds.py	2009-11-02 08:32:00 UTC (rev 24230)
@@ -1161,7 +1161,7 @@
 	
 	def invoke(self, context, event):
 		wm = context.manager
-		wm.add_fileselect(self.__operator__)
+		wm.add_fileselect(self)
 		return ('RUNNING_MODAL',)
 
 bpy.ops.add(IMPORT_OT_autodesk_3ds)

Modified: trunk/blender/release/scripts/io/import_obj.py
===================================================================
--- trunk/blender/release/scripts/io/import_obj.py	2009-11-02 08:05:16 UTC (rev 24229)
+++ trunk/blender/release/scripts/io/import_obj.py	2009-11-02 08:32:00 UTC (rev 24230)
@@ -1618,7 +1618,7 @@
 	
 	def invoke(self, context, event):	
 		wm = context.manager
-		wm.add_fileselect(self.__operator__)
+		wm.add_fileselect(self)
 		return ('RUNNING_MODAL',)
 
 

Modified: trunk/blender/release/scripts/modules/bpy_ops.py
===================================================================
--- trunk/blender/release/scripts/modules/bpy_ops.py	2009-11-02 08:05:16 UTC (rev 24229)
+++ trunk/blender/release/scripts/modules/bpy_ops.py	2009-11-02 08:32:00 UTC (rev 24230)
@@ -528,7 +528,7 @@
 
     def invoke(self, context, event):
         wm = context.manager
-        wm.invoke_props_popup(self.__operator__, event)
+        wm.invoke_props_popup(self, event)
         return ('RUNNING_MODAL',)
 
 

Modified: trunk/blender/release/scripts/templates/operator.py
===================================================================
--- trunk/blender/release/scripts/templates/operator.py	2009-11-02 08:05:16 UTC (rev 24229)
+++ trunk/blender/release/scripts/templates/operator.py	2009-11-02 08:32:00 UTC (rev 24230)
@@ -51,11 +51,11 @@
 
         if True:
             # File selector
-            wm.add_fileselect(self.__operator__) # will run self.execute()
+            wm.add_fileselect(self) # will run self.execute()
             return ('RUNNING_MODAL',)
         else if 0:
             # Redo popup
-            wm.invoke_props_popup(self.__operator__, event) #
+            wm.invoke_props_popup(self, event) #
             return ('RUNNING_MODAL',)
         else if 0:
             return self.execute(context)

Modified: trunk/blender/release/scripts/ui/space_userpref.py
===================================================================
--- trunk/blender/release/scripts/ui/space_userpref.py	2009-11-02 08:05:16 UTC (rev 24229)
+++ trunk/blender/release/scripts/ui/space_userpref.py	2009-11-02 08:32:00 UTC (rev 24230)
@@ -678,7 +678,7 @@
 
     def invoke(self, context, event):
         wm = context.manager
-        wm.add_fileselect(self.__operator__)
+        wm.add_fileselect(self)
         return ('RUNNING_MODAL',)
 
 

Modified: trunk/blender/release/scripts/ui/space_view3d.py
===================================================================
--- trunk/blender/release/scripts/ui/space_view3d.py	2009-11-02 08:05:16 UTC (rev 24229)
+++ trunk/blender/release/scripts/ui/space_view3d.py	2009-11-02 08:32:00 UTC (rev 24230)
@@ -1553,7 +1553,7 @@
     '''
     def invoke(self, context, event):
         wm = context.manager
-        wm.add_fileselect(self.__operator__)
+        wm.add_fileselect(self)
         return ('RUNNING_MODAL',)
     '''
 

Modified: trunk/blender/source/blender/python/intern/bpy_operator_wrap.c
===================================================================
--- trunk/blender/source/blender/python/intern/bpy_operator_wrap.c	2009-11-02 08:05:16 UTC (rev 24229)
+++ trunk/blender/source/blender/python/intern/bpy_operator_wrap.c	2009-11-02 08:32:00 UTC (rev 24230)
@@ -90,14 +90,18 @@
 	PointerRNA ptr_context;
 	PointerRNA ptr_operator;
 	PointerRNA ptr_event;
-	PyObject *py_operator;
 
 	PyGILState_STATE gilstate;
 
 	bpy_context_set(C, &gilstate);
 
 	args = PyTuple_New(1);
-	PyTuple_SET_ITEM(args, 0, PyObject_GetAttrString(py_class, "bl_rna")); // need to use an rna instance as the first arg
+
+	/* poll has no 'op', should be ok still */
+	/* use an rna instance as the first arg */
+	RNA_pointer_create(NULL, &RNA_Operator, op, &ptr_operator);
+	PyTuple_SET_ITEM(args, 0, pyrna_struct_CreatePyObject(&ptr_operator));
+
 	py_class_instance = PyObject_Call(py_class, args, NULL);
 	Py_DECREF(args);
 	
@@ -120,14 +124,6 @@
 			RNA_STRUCT_END;
 		}
 
-		/* set operator pointer RNA as instance "__operator__" attribute */
-		if(op) {
-			RNA_pointer_create(NULL, &RNA_Operator, op, &ptr_operator);
-			py_operator= pyrna_struct_CreatePyObject(&ptr_operator);
-			PyDict_SetItemString(class_dict, "__operator__", py_operator);
-			Py_DECREF(py_operator);
-		}
-
 		RNA_pointer_create(NULL, &RNA_Context, C, &ptr_context);
 		
 		if (mode==PYOP_INVOKE) {
@@ -160,6 +156,10 @@
 		Py_DECREF(item);
 		Py_DECREF(class_dict);
 	}
+	else {
+		PyErr_Print();
+		PyErr_Clear();
+	}
 	
 	if (ret == NULL) { /* covers py_class_instance failing too */
 		if(op)





More information about the Bf-blender-cvs mailing list