[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [51792] trunk/blender: no longer use ' check_existing' to see if we need to have a save popup, instead use 'exec' operator on a saved file and

Campbell Barton ideasman42 at gmail.com
Wed Oct 31 18:03:31 CET 2012


Revision: 51792
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=51792
Author:   campbellbarton
Date:     2012-10-31 17:03:31 +0000 (Wed, 31 Oct 2012)
Log Message:
-----------
no longer use 'check_existing' to see if we need to have a save popup, instead use 'exec' operator on a saved file and
invoke on unsaved files.

correct missing memset --> CustomData_reset switch too.

Modified Paths:
--------------
    trunk/blender/release/scripts/startup/bl_operators/wm.py
    trunk/blender/release/scripts/startup/bl_ui/space_info.py
    trunk/blender/source/blender/blenkernel/intern/mesh_validate.c
    trunk/blender/source/blender/windowmanager/intern/wm_event_system.c
    trunk/blender/source/blender/windowmanager/intern/wm_operators.c
    trunk/blender/source/tests/bl_test.py

Modified: trunk/blender/release/scripts/startup/bl_operators/wm.py
===================================================================
--- trunk/blender/release/scripts/startup/bl_operators/wm.py	2012-10-31 15:17:35 UTC (rev 51791)
+++ trunk/blender/release/scripts/startup/bl_operators/wm.py	2012-10-31 17:03:31 UTC (rev 51792)
@@ -1290,7 +1290,7 @@
             return {'CANCELLED'}
 
         filepath = os.path.join(bpy.app.tempdir, "game.blend")
-        bpy.ops.wm.save_as_mainfile(filepath=filepath, check_existing=False, copy=True)
+        bpy.ops.wm.save_as_mainfile('EXEC_DEFAULT', filepath=filepath, copy=True)
         subprocess.call([player_path, filepath])
         return {'FINISHED'}
 

Modified: trunk/blender/release/scripts/startup/bl_ui/space_info.py
===================================================================
--- trunk/blender/release/scripts/startup/bl_ui/space_info.py	2012-10-31 15:17:35 UTC (rev 51791)
+++ trunk/blender/release/scripts/startup/bl_ui/space_info.py	2012-10-31 17:03:31 UTC (rev 51792)
@@ -112,9 +112,10 @@
 
         layout.separator()
 
+        layout.operator_context = 'EXEC_AREA' if  context.blend_data.is_saved else 'INVOKE_AREA'
+        layout.operator("wm.save_mainfile", text="Save", icon='FILE_TICK')
+
         layout.operator_context = 'INVOKE_AREA'
-        layout.operator("wm.save_mainfile", text="Save", icon='FILE_TICK').check_existing = False
-        layout.operator_context = 'INVOKE_AREA'
         layout.operator("wm.save_as_mainfile", text="Save As...", icon='SAVE_AS')
         layout.operator_context = 'INVOKE_AREA'
         layout.operator("wm.save_as_mainfile", text="Save Copy...", icon='SAVE_COPY').copy = True

Modified: trunk/blender/source/blender/blenkernel/intern/mesh_validate.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/mesh_validate.c	2012-10-31 15:17:35 UTC (rev 51791)
+++ trunk/blender/source/blender/blenkernel/intern/mesh_validate.c	2012-10-31 17:03:31 UTC (rev 51792)
@@ -944,7 +944,7 @@
 	totedge = BLI_edgehash_size(eh);
 
 	/* write new edges into a temporary CustomData */
-	memset(&edata, 0, sizeof(edata));
+	CustomData_reset(&edata);
 	CustomData_add_layer(&edata, CD_MEDGE, CD_CALLOC, NULL, totedge);
 
 	med = CustomData_get_layer(&edata, CD_MEDGE);

Modified: trunk/blender/source/blender/windowmanager/intern/wm_event_system.c
===================================================================
--- trunk/blender/source/blender/windowmanager/intern/wm_event_system.c	2012-10-31 15:17:35 UTC (rev 51791)
+++ trunk/blender/source/blender/windowmanager/intern/wm_event_system.c	2012-10-31 17:03:31 UTC (rev 51792)
@@ -1576,72 +1576,55 @@
 			/* needed for uiPupMenuReports */
 
 			if (event->val == EVT_FILESELECT_EXEC) {
-#if 0               // use REDALERT now
+				int retval;
 
-				/* a bit weak, might become arg for WM_event_fileselect? */
-				/* XXX also extension code in image-save doesnt work for this yet */
-				if (RNA_struct_find_property(handler->op->ptr, "check_existing") &&
-				    RNA_boolean_get(handler->op->ptr, "check_existing"))
-				{
-					char *path = RNA_string_get_alloc(handler->op->ptr, "filepath", NULL, 0);
-					/* this gives ownership to pupmenu */
-					uiPupMenuSaveOver(C, handler->op, (path) ? path : "");
-					if (path)
-						MEM_freeN(path);
-				}
-				else
-#endif
-				{
-					int retval;
-						
-					if (handler->op->type->flag & OPTYPE_UNDO)
-						wm->op_undo_depth++;
-						
-					retval = handler->op->type->exec(C, handler->op);
+				if (handler->op->type->flag & OPTYPE_UNDO)
+					wm->op_undo_depth++;
 
-					/* XXX check this carefully, CTX_wm_manager(C) == wm is a bit hackish */
-					if (handler->op->type->flag & OPTYPE_UNDO && CTX_wm_manager(C) == wm)
-						wm->op_undo_depth--;
+				retval = handler->op->type->exec(C, handler->op);
 
-					if (retval & OPERATOR_FINISHED)
-						if (G.debug & G_DEBUG_WM)
-							wm_operator_print(C, handler->op);
+				/* XXX check this carefully, CTX_wm_manager(C) == wm is a bit hackish */
+				if (handler->op->type->flag & OPTYPE_UNDO && CTX_wm_manager(C) == wm)
+					wm->op_undo_depth--;
 
-					/* XXX check this carefully, CTX_wm_manager(C) == wm is a bit hackish */
-					if (CTX_wm_manager(C) == wm && wm->op_undo_depth == 0)
-						if (handler->op->type->flag & OPTYPE_UNDO)
-							ED_undo_push_op(C, handler->op);
+				if (retval & OPERATOR_FINISHED)
+					if (G.debug & G_DEBUG_WM)
+						wm_operator_print(C, handler->op);
 
-					if (handler->op->reports->list.first) {
+				/* XXX check this carefully, CTX_wm_manager(C) == wm is a bit hackish */
+				if (CTX_wm_manager(C) == wm && wm->op_undo_depth == 0)
+					if (handler->op->type->flag & OPTYPE_UNDO)
+						ED_undo_push_op(C, handler->op);
 
-						/* FIXME, temp setting window, this is really bad!
+				if (handler->op->reports->list.first) {
+
+					/* FIXME, temp setting window, this is really bad!
 						 * only have because lib linking errors need to be seen by users :(
 						 * it can be removed without breaking anything but then no linking errors - campbell */
-						wmWindow *win_prev = CTX_wm_window(C);
-						ScrArea *area_prev = CTX_wm_area(C);
-						ARegion *ar_prev = CTX_wm_region(C);
+					wmWindow *win_prev = CTX_wm_window(C);
+					ScrArea *area_prev = CTX_wm_area(C);
+					ARegion *ar_prev = CTX_wm_region(C);
 
-						if (win_prev == NULL)
-							CTX_wm_window_set(C, CTX_wm_manager(C)->windows.first);
+					if (win_prev == NULL)
+						CTX_wm_window_set(C, CTX_wm_manager(C)->windows.first);
 
-						handler->op->reports->printlevel = RPT_WARNING;
-						uiPupMenuReports(C, handler->op->reports);
+					handler->op->reports->printlevel = RPT_WARNING;
+					uiPupMenuReports(C, handler->op->reports);
 
-						/* XXX - copied from 'wm_operator_finished()' */
-						/* add reports to the global list, otherwise they are not seen */
-						BLI_movelisttolist(&CTX_wm_reports(C)->list, &handler->op->reports->list);
+					/* XXX - copied from 'wm_operator_finished()' */
+					/* add reports to the global list, otherwise they are not seen */
+					BLI_movelisttolist(&CTX_wm_reports(C)->list, &handler->op->reports->list);
 
-						CTX_wm_window_set(C, win_prev);
-						CTX_wm_area_set(C, area_prev);
-						CTX_wm_region_set(C, ar_prev);
-					}
+					CTX_wm_window_set(C, win_prev);
+					CTX_wm_area_set(C, area_prev);
+					CTX_wm_region_set(C, ar_prev);
+				}
 
-					if (retval & OPERATOR_FINISHED) {
-						WM_operator_last_properties_store(handler->op);
-					}
-
-					WM_operator_free(handler->op);
+				if (retval & OPERATOR_FINISHED) {
+					WM_operator_last_properties_store(handler->op);
 				}
+
+				WM_operator_free(handler->op);
 			}
 			else {
 				if (handler->op->type->cancel) {

Modified: trunk/blender/source/blender/windowmanager/intern/wm_operators.c
===================================================================
--- trunk/blender/source/blender/windowmanager/intern/wm_operators.c	2012-10-31 15:17:35 UTC (rev 51791)
+++ trunk/blender/source/blender/windowmanager/intern/wm_operators.c	2012-10-31 17:03:31 UTC (rev 51792)
@@ -859,6 +859,8 @@
 		RNA_def_collection_runtime(ot->srna, "files", &RNA_OperatorFileListElement, "Files", "");
 
 	if (action == FILE_SAVE) {
+		/* note, this is only used to check if we should highlight the filename area red when the
+		 * filepath is an existing file. */
 		prop = RNA_def_boolean(ot->srna, "check_existing", 1, "Check Existing", "Check and warn on overwriting existing files");
 		RNA_def_property_flag(prop, PROP_HIDDEN | PROP_SKIP_SAVE);
 	}
@@ -2117,7 +2119,6 @@
 static int wm_save_mainfile_invoke(bContext *C, wmOperator *op, wmEvent *UNUSED(event))
 {
 	char name[FILE_MAX];
-	int check_existing = 1;
 	int ret;
 	
 	/* cancel if no active window */
@@ -2137,13 +2138,9 @@
 	untitled(name);
 	
 	RNA_string_set(op->ptr, "filepath", name);
-	
-	if (RNA_struct_find_property(op->ptr, "check_existing"))
-		if (RNA_boolean_get(op->ptr, "check_existing") == 0)
-			check_existing = 0;
-	
+
 	if (G.save_over) {
-		if (check_existing && BLI_exists(name)) {
+		if (BLI_exists(name)) {
 			uiPupMenuSaveOver(C, op, name);
 			ret = OPERATOR_RUNNING_MODAL;
 		}

Modified: trunk/blender/source/tests/bl_test.py
===================================================================
--- trunk/blender/source/tests/bl_test.py	2012-10-31 15:17:35 UTC (rev 51791)
+++ trunk/blender/source/tests/bl_test.py	2012-10-31 17:03:31 UTC (rev 51792)
@@ -145,7 +145,7 @@
 
     if write_blend is not None:
         print("  Writing Blend: %s" % write_blend)
-        bpy.ops.wm.save_mainfile(filepath=write_blend, check_existing=False)
+        bpy.ops.wm.save_mainfile('EXEC_DEFAULT', filepath=write_blend)
 
     print("  Result: '%s'" % str(result))
     if not result:




More information about the Bf-blender-cvs mailing list