if (synfigapp::Instance::save())
return STATUS_OK;
- else
- return STATUS_ERROR;
+
+ App::dialog_error_blocking("Save - Error","Unable to save to '" + get_file_name() + "'");
+ return STATUS_ERROR;
}
bool
{
struct stat s;
- // if stat() succeeds, or it fails with something other than 'file doesn't exist', the file exists
+ int stat_return = stat(filename.c_str(), &s);
+
+ // if stat() fails with something other than 'file doesn't exist', there's been a real
+ // error of some kind. let's give up now and ask for a new path.
+ if (stat_return == -1 && errno != ENOENT)
+ {
+ perror(filename.c_str());
+ App::dialog_error_blocking("SaveAs - Error","Unable to check whether '" + filename + "' exists.");
+ continue;
+ }
+
// if the file exists and the user doesn't want to overwrite it, keep prompting for a filename
- if ((stat(filename.c_str(), &s) != -1 || errno != ENOENT) &&
+ if ((stat_return == 0) &&
!App::dialog_yes_no("File exists",
"A file named '" +
filename +
if(save_as(filename))
return true;
- App::dialog_error_blocking("SaveAs - Error","Unable to save file");
+ App::dialog_error_blocking("SaveAs - Error","Unable to save to '" + filename + "'");
}
return false;
bool
Instance::safe_close()
{
- handle<synfigapp::UIInterface> uim;
- uim=find_canvas_view(get_canvas())->get_ui_interface();
+ handle<CanvasView> canvas_view = find_canvas_view(get_canvas());
+ handle<synfigapp::UIInterface> uim=canvas_view->get_ui_interface();
+ // if the animation is currently playing, closing the window will cause a crash,
+ // so don't allow it
+ if (canvas_view->is_playing())
+ {
+ canvas_view->present();
+ App::dialog_error_blocking("Close Error", "The animation is currently playing so the window cannot be closed.");
+ return false;
+ }
if(get_action_count())
do
{