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>2012-10-31 21:03:31 +0400
committerCampbell Barton <ideasman42@gmail.com>2012-10-31 21:03:31 +0400
commitd705c52e659e63e07d22433c517fdddb2a5643bf (patch)
tree2bcdbbcfb17f6af17971c67314809b6ae10b9852
parent5dfe20d87ba8ea9957e679a1e9cd7926ac8d1cd8 (diff)
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.
-rw-r--r--release/scripts/startup/bl_operators/wm.py2
-rw-r--r--release/scripts/startup/bl_ui/space_info.py5
-rw-r--r--source/blender/blenkernel/intern/mesh_validate.c2
-rw-r--r--source/blender/windowmanager/intern/wm_event_system.c87
-rw-r--r--source/blender/windowmanager/intern/wm_operators.c11
-rw-r--r--source/tests/bl_test.py2
6 files changed, 45 insertions, 64 deletions
diff --git a/release/scripts/startup/bl_operators/wm.py b/release/scripts/startup/bl_operators/wm.py
index 5cc041476c9..2bff11a686d 100644
--- a/release/scripts/startup/bl_operators/wm.py
+++ b/release/scripts/startup/bl_operators/wm.py
@@ -1290,7 +1290,7 @@ class WM_OT_blenderplayer_start(Operator):
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'}
diff --git a/release/scripts/startup/bl_ui/space_info.py b/release/scripts/startup/bl_ui/space_info.py
index 9ab2a772df0..c0f2d3c361b 100644
--- a/release/scripts/startup/bl_ui/space_info.py
+++ b/release/scripts/startup/bl_ui/space_info.py
@@ -112,8 +112,9 @@ class INFO_MT_file(Menu):
layout.separator()
- layout.operator_context = 'INVOKE_AREA'
- layout.operator("wm.save_mainfile", text="Save", icon='FILE_TICK').check_existing = False
+ 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_as_mainfile", text="Save As...", icon='SAVE_AS')
layout.operator_context = 'INVOKE_AREA'
diff --git a/source/blender/blenkernel/intern/mesh_validate.c b/source/blender/blenkernel/intern/mesh_validate.c
index c4d663e17bd..128b9ae242e 100644
--- a/source/blender/blenkernel/intern/mesh_validate.c
+++ b/source/blender/blenkernel/intern/mesh_validate.c
@@ -944,7 +944,7 @@ void BKE_mesh_calc_edges(Mesh *mesh, int update)
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);
diff --git a/source/blender/windowmanager/intern/wm_event_system.c b/source/blender/windowmanager/intern/wm_event_system.c
index 031deb1f010..1900966b5bd 100644
--- a/source/blender/windowmanager/intern/wm_event_system.c
+++ b/source/blender/windowmanager/intern/wm_event_system.c
@@ -1576,72 +1576,55 @@ static int wm_handler_fileselect_call(bContext *C, ListBase *handlers, wmEventHa
/* 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--;
+
+ 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 (CTX_wm_manager(C) == wm && wm->op_undo_depth == 0)
- if (handler->op->type->flag & OPTYPE_UNDO)
- ED_undo_push_op(C, handler->op);
+ /* 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 (handler->op->reports->list.first) {
+ if (handler->op->reports->list.first) {
- /* FIXME, temp setting window, this is really bad!
+ /* 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);
-
- CTX_wm_window_set(C, win_prev);
- CTX_wm_area_set(C, area_prev);
- CTX_wm_region_set(C, ar_prev);
- }
+ /* 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);
- if (retval & OPERATOR_FINISHED) {
- WM_operator_last_properties_store(handler->op);
- }
+ CTX_wm_window_set(C, win_prev);
+ CTX_wm_area_set(C, area_prev);
+ CTX_wm_region_set(C, ar_prev);
+ }
- 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) {
diff --git a/source/blender/windowmanager/intern/wm_operators.c b/source/blender/windowmanager/intern/wm_operators.c
index af6ec370fea..8d01cdb694d 100644
--- a/source/blender/windowmanager/intern/wm_operators.c
+++ b/source/blender/windowmanager/intern/wm_operators.c
@@ -859,6 +859,8 @@ void WM_operator_properties_filesel(wmOperatorType *ot, int filter, short type,
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 void WM_OT_save_as_mainfile(wmOperatorType *ot)
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 @@ static int wm_save_mainfile_invoke(bContext *C, wmOperator *op, wmEvent *UNUSED(
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;
}
diff --git a/source/tests/bl_test.py b/source/tests/bl_test.py
index cfe91356444..0cb322a21b1 100644
--- a/source/tests/bl_test.py
+++ b/source/tests/bl_test.py
@@ -145,7 +145,7 @@ def main():
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: