[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [18560] branches/blender2.5/blender/source /blender: Changes to functions from blender/windowmanager/intern/ wm_event_system.c

Campbell Barton ideasman42 at gmail.com
Sun Jan 18 11:46:29 CET 2009


Revision: 18560
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=18560
Author:   campbellbarton
Date:     2009-01-18 11:46:26 +0100 (Sun, 18 Jan 2009)

Log Message:
-----------
Changes to functions from blender/windowmanager/intern/wm_event_system.c

Python operator api was using WM_operator_name_call() which was confusing things too much.
Added WM_operator_call_py() which ended up being a very small function and split out operator creation into wm_operator_create()

Python operator now runs the poll() function and raises an error if it fails.

Eventually there should be error messages for poll that python can use to give the exact reason for failing (eg - library linked data, no active object...) 

Modified Paths:
--------------
    branches/blender2.5/blender/source/blender/editors/interface/interface_handlers.c
    branches/blender2.5/blender/source/blender/editors/interface/interface_regions.c
    branches/blender2.5/blender/source/blender/editors/mesh/mesh_ops.c
    branches/blender2.5/blender/source/blender/editors/object/object_edit.c
    branches/blender2.5/blender/source/blender/editors/space_action/action_header.c
    branches/blender2.5/blender/source/blender/editors/space_node/node_header.c
    branches/blender2.5/blender/source/blender/editors/space_view3d/view3d_header.c
    branches/blender2.5/blender/source/blender/python/intern/bpy_operator.c
    branches/blender2.5/blender/source/blender/windowmanager/WM_api.h
    branches/blender2.5/blender/source/blender/windowmanager/intern/wm_event_system.c

Modified: branches/blender2.5/blender/source/blender/editors/interface/interface_handlers.c
===================================================================
--- branches/blender2.5/blender/source/blender/editors/interface/interface_handlers.c	2009-01-18 10:41:45 UTC (rev 18559)
+++ branches/blender2.5/blender/source/blender/editors/interface/interface_handlers.c	2009-01-18 10:46:26 UTC (rev 18560)
@@ -222,7 +222,7 @@
 			after->butm_func(C, after->butm_func_arg, after->a2);
 
 		if(after->opname)
-			WM_operator_name_call(C, after->opname, after->opcontext, after->opptr, NULL);
+			WM_operator_name_call(C, after->opname, after->opcontext, after->opptr);
 		if(after->opptr) {
 			WM_operator_properties_free(after->opptr);
 			MEM_freeN(after->opptr);

Modified: branches/blender2.5/blender/source/blender/editors/interface/interface_regions.c
===================================================================
--- branches/blender2.5/blender/source/blender/editors/interface/interface_regions.c	2009-01-18 10:41:45 UTC (rev 18559)
+++ branches/blender2.5/blender/source/blender/editors/interface/interface_regions.c	2009-01-18 10:46:26 UTC (rev 18560)
@@ -1693,7 +1693,7 @@
 	const char *opname= arg;
 
 	if(opname && retval > 0)
-		WM_operator_name_call(C, opname, WM_OP_EXEC_DEFAULT, NULL, NULL);
+		WM_operator_name_call(C, opname, WM_OP_EXEC_DEFAULT, NULL);
 }
 
 static void vconfirm(bContext *C, char *opname, char *title, char *itemfmt, va_list ap)

Modified: branches/blender2.5/blender/source/blender/editors/mesh/mesh_ops.c
===================================================================
--- branches/blender2.5/blender/source/blender/editors/mesh/mesh_ops.c	2009-01-18 10:41:45 UTC (rev 18559)
+++ branches/blender2.5/blender/source/blender/editors/mesh/mesh_ops.c	2009-01-18 10:46:26 UTC (rev 18560)
@@ -76,7 +76,7 @@
 {
 	mesh_add_duplicate_exec(C, op);
 	RNA_int_set(op->ptr, "mode", TFM_TRANSLATION);
-	WM_operator_name_call(C, "TFM_OT_transform", WM_OP_INVOKE_REGION_WIN, op->ptr, NULL);
+	WM_operator_name_call(C, "TFM_OT_transform", WM_OP_INVOKE_REGION_WIN, op->ptr);
 	
 	return OPERATOR_FINISHED;
 }

Modified: branches/blender2.5/blender/source/blender/editors/object/object_edit.c
===================================================================
--- branches/blender2.5/blender/source/blender/editors/object/object_edit.c	2009-01-18 10:41:45 UTC (rev 18559)
+++ branches/blender2.5/blender/source/blender/editors/object/object_edit.c	2009-01-18 10:46:26 UTC (rev 18560)
@@ -5784,7 +5784,7 @@
 	add_duplicate_exec(C, op);
 	
 	RNA_int_set(op->ptr, "mode", TFM_TRANSLATION);
-	WM_operator_name_call(C, "TFM_OT_transform", WM_OP_INVOKE_REGION_WIN, op->ptr, NULL);
+	WM_operator_name_call(C, "TFM_OT_transform", WM_OP_INVOKE_REGION_WIN, op->ptr);
 
 	return OPERATOR_FINISHED;
 }

Modified: branches/blender2.5/blender/source/blender/editors/space_action/action_header.c
===================================================================
--- branches/blender2.5/blender/source/blender/editors/space_action/action_header.c	2009-01-18 10:41:45 UTC (rev 18559)
+++ branches/blender2.5/blender/source/blender/editors/space_action/action_header.c	2009-01-18 10:46:26 UTC (rev 18560)
@@ -1543,10 +1543,10 @@
 			break;
 			
 		case B_ACTCOPYKEYS:
-			WM_operator_name_call(C, "ACT_OT_keyframes_copy", WM_OP_EXEC_REGION_WIN, NULL, NULL);
+			WM_operator_name_call(C, "ACT_OT_keyframes_copy", WM_OP_EXEC_REGION_WIN, NULL);
 			break;
 		case B_ACTPASTEKEYS:
-			WM_operator_name_call(C, "ACT_OT_keyframes_paste", WM_OP_EXEC_REGION_WIN, NULL, NULL);
+			WM_operator_name_call(C, "ACT_OT_keyframes_paste", WM_OP_EXEC_REGION_WIN, NULL);
 			break;
 	}
 }

Modified: branches/blender2.5/blender/source/blender/editors/space_node/node_header.c
===================================================================
--- branches/blender2.5/blender/source/blender/editors/space_node/node_header.c	2009-01-18 10:41:45 UTC (rev 18559)
+++ branches/blender2.5/blender/source/blender/editors/space_node/node_header.c	2009-01-18 10:46:26 UTC (rev 18560)
@@ -75,7 +75,7 @@
 	
 	switch(event) {
 		case 1: /* border select */
-			WM_operator_name_call(C, "NODE_OT_border_select", WM_OP_INVOKE_REGION_WIN, NULL, NULL);
+			WM_operator_name_call(C, "NODE_OT_border_select", WM_OP_INVOKE_REGION_WIN, NULL);
 			break;
 		case 2: /* select/deselect all */
 			// XXX node_deselectall(snode, 1);
@@ -591,13 +591,13 @@
 	
 	switch(event) {
 		case 1: /* Zoom in */
-			WM_operator_name_call(C, "View2D_OT_view_zoomin", WM_OP_EXEC_REGION_WIN, NULL, NULL);
+			WM_operator_name_call(C, "View2D_OT_view_zoomin", WM_OP_EXEC_REGION_WIN, NULL);
 			break;
 		case 2: /* View all */
-			WM_operator_name_call(C, "View2D_OT_view_zoomout", WM_OP_EXEC_REGION_WIN, NULL, NULL);
+			WM_operator_name_call(C, "View2D_OT_view_zoomout", WM_OP_EXEC_REGION_WIN, NULL);
 			break;
 		case 3: /* View all */
-			WM_operator_name_call(C, "NODE_OT_fit_all", WM_OP_EXEC_REGION_WIN, NULL, NULL);
+			WM_operator_name_call(C, "NODE_OT_fit_all", WM_OP_EXEC_REGION_WIN, NULL);
 			break;
 		case 4: /* Grease Pencil */
 			// XXX add_blockhandler(sa, NODES_HANDLER_GREASEPENCIL, UI_PNL_UNSTOW);

Modified: branches/blender2.5/blender/source/blender/editors/space_view3d/view3d_header.c
===================================================================
--- branches/blender2.5/blender/source/blender/editors/space_view3d/view3d_header.c	2009-01-18 10:41:45 UTC (rev 18559)
+++ branches/blender2.5/blender/source/blender/editors/space_view3d/view3d_header.c	2009-01-18 10:46:26 UTC (rev 18560)
@@ -141,9 +141,9 @@
 void ED_view3d_exit_paint_modes(bContext *C)
 {
 	if(G.f & G_VERTEXPAINT)
-		WM_operator_name_call(C, "VIEW3D_OT_vpaint_toggle", WM_OP_EXEC_REGION_WIN, NULL, NULL);
+		WM_operator_name_call(C, "VIEW3D_OT_vpaint_toggle", WM_OP_EXEC_REGION_WIN, NULL);
 	else if(G.f & G_WEIGHTPAINT)
-		WM_operator_name_call(C, "VIEW3D_OT_wpaint_toggle", WM_OP_EXEC_REGION_WIN, NULL, NULL);
+		WM_operator_name_call(C, "VIEW3D_OT_wpaint_toggle", WM_OP_EXEC_REGION_WIN, NULL);
 
 //	if(G.f & G_TEXTUREPAINT) set_texturepaint();
 //	if(G.f & G_SCULPTMODE) set_sculptmode();
@@ -465,7 +465,7 @@
 // XXX		mainqenter(PADASTERKEY, 1);
 		break;
 	case 6: /* Center View and Cursor to Origin */
-		WM_operator_name_call(C, "VIEW3D_OT_viewcenter", WM_OP_EXEC_REGION_WIN, NULL, NULL);
+		WM_operator_name_call(C, "VIEW3D_OT_viewcenter", WM_OP_EXEC_REGION_WIN, NULL);
 		curs= give_cursor(scene, v3d);
 		curs[0]=curs[1]=curs[2]= 0.0;
 		break;
@@ -550,10 +550,10 @@
 		endlocalview(scene, sa);
 		break;
 	case 9: /* View All (Home) */
-		WM_operator_name_call(C, "VIEW3D_OT_viewhome", WM_OP_EXEC_REGION_WIN, NULL, NULL);
+		WM_operator_name_call(C, "VIEW3D_OT_viewhome", WM_OP_EXEC_REGION_WIN, NULL);
 		break;
 	case 11: /* View Selected */
-		WM_operator_name_call(C, "VIEW3D_OT_viewcenter", WM_OP_EXEC_REGION_WIN, NULL, NULL);
+		WM_operator_name_call(C, "VIEW3D_OT_viewcenter", WM_OP_EXEC_REGION_WIN, NULL);
 		break;
 	case 13: /* Play Back Animation */
 		play_anim(0);
@@ -565,7 +565,7 @@
 		add_blockhandler(sa, VIEW3D_HANDLER_PROPERTIES, UI_PNL_UNSTOW);
 		break;
 	case 17: /* Set Clipping Border */
-		WM_operator_name_call(C, "VIEW3D_OT_clipping", WM_OP_INVOKE_REGION_WIN, NULL, NULL);
+		WM_operator_name_call(C, "VIEW3D_OT_clipping", WM_OP_INVOKE_REGION_WIN, NULL);
 		break;
 	case 18: /* render preview */
 		toggle_blockhandler(sa, VIEW3D_HANDLER_PREVIEW, 0);
@@ -5333,7 +5333,7 @@
 
 	switch(event) {
 	case B_HOME:
-		WM_operator_name_call(C, "VIEW3D_OT_viewhome", WM_OP_EXEC_REGION_WIN, NULL, NULL);
+		WM_operator_name_call(C, "VIEW3D_OT_viewhome", WM_OP_EXEC_REGION_WIN, NULL);
 		break;
 	case B_REDR:
 		ED_area_tag_redraw(sa);
@@ -5403,7 +5403,7 @@
 				ED_view3d_exit_paint_modes(C);
 				if(obedit) ED_object_exit_editmode(C, EM_FREEUNDO|EM_FREEUNDO|EM_WAITCURSOR);	/* exit editmode and undo */
 					
-				WM_operator_name_call(C, "SCULPT_OT_toggle_mode", WM_OP_EXEC_REGION_WIN, NULL, NULL);
+				WM_operator_name_call(C, "SCULPT_OT_toggle_mode", WM_OP_EXEC_REGION_WIN, NULL);
 			}
 		}
 		else if (v3d->modeselect == V3D_VERTEXPAINTMODE_SEL) {
@@ -5412,7 +5412,7 @@
 				ED_view3d_exit_paint_modes(C);
 				if(obedit) ED_object_exit_editmode(C, EM_FREEDATA|EM_FREEUNDO|EM_WAITCURSOR);	/* exit editmode and undo */
 				
-				WM_operator_name_call(C, "VIEW3D_OT_vpaint_toggle", WM_OP_EXEC_REGION_WIN, NULL, NULL);
+				WM_operator_name_call(C, "VIEW3D_OT_vpaint_toggle", WM_OP_EXEC_REGION_WIN, NULL);
 			}
 		} 
 		else if (v3d->modeselect == V3D_TEXTUREPAINTMODE_SEL) {
@@ -5431,7 +5431,7 @@
 				if(obedit) 
 					ED_object_exit_editmode(C, EM_FREEDATA|EM_FREEUNDO|EM_WAITCURSOR);	/* exit editmode and undo */
 				
-				WM_operator_name_call(C, "VIEW3D_OT_wpaint_toggle", WM_OP_EXEC_REGION_WIN, NULL, NULL);
+				WM_operator_name_call(C, "VIEW3D_OT_wpaint_toggle", WM_OP_EXEC_REGION_WIN, NULL);
 			}
 		} 
 		else if (v3d->modeselect == V3D_POSEMODE_SEL) {

Modified: branches/blender2.5/blender/source/blender/python/intern/bpy_operator.c
===================================================================
--- branches/blender2.5/blender/source/blender/python/intern/bpy_operator.c	2009-01-18 10:41:45 UTC (rev 18559)
+++ branches/blender2.5/blender/source/blender/python/intern/bpy_operator.c	2009-01-18 10:46:26 UTC (rev 18560)
@@ -194,6 +194,11 @@
 		return NULL;
 	}
 	
+	if(ot->poll && (ot->poll(self->C) == 0)) {
+		PyErr_SetString( PyExc_SystemError, "Operator poll() function failed, context is incorrect");
+		return NULL;
+	}
+	
 	WM_operator_properties_create(&ptr, self->name);
 	
 	error_val= PYOP_props_from_dict(&ptr, kw);
@@ -203,7 +208,7 @@
 
 		BKE_reports_init(&reports, RPT_STORE);
 
-		WM_operator_name_call(self->C, self->name, WM_OP_EXEC_DEFAULT, &ptr, &reports);
+		WM_operator_call_py(self->C, ot, &ptr, &reports);
 
 		report_str= BKE_reports_string(&reports, RPT_ERROR);
 

Modified: branches/blender2.5/blender/source/blender/windowmanager/WM_api.h
===================================================================
--- branches/blender2.5/blender/source/blender/windowmanager/WM_api.h	2009-01-18 10:41:45 UTC (rev 18559)
+++ branches/blender2.5/blender/source/blender/windowmanager/WM_api.h	2009-01-18 10:46:26 UTC (rev 18560)
@@ -126,7 +126,8 @@
 int			WM_operatortype_remove(const char *idname);
 
 int			WM_operator_call		(struct bContext *C, struct wmOperator *op);

@@ Diff output truncated at 10240 characters. @@




More information about the Bf-blender-cvs mailing list