**
** \legal
** Copyright (c) 2002-2005 Robert B. Quattlebaum Jr., Adrian Bentley
+** Copyright (c) 2007 Chris Moore
**
** This package is free software; you can redistribute it and/or
** modify it under the terms of the GNU General Public License as
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;
studio::App::set_selected_instance(0);
}
else
- {
- studio::App::set_selected_canvas_view(studio::App::instance_list.front()->canvas_view_list().front());
- //studio::App::set_selected_instance(studio::App::instance_list.front());
- }
+ studio::App::instance_list.front()->canvas_view_list().front()->present();
}
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
{
candidate_list.sort();
if(candidate_list.empty())
- synfig::warning("Action CandidateList is empty!");
+ synfig::warning("%s:%d Action CandidateList is empty!", __FILE__, __LINE__);
for(iter=candidate_list.begin();iter!=candidate_list.end();++iter)
{
candidate_list.sort();
if(candidate_list.empty())
- synfig::warning("Action CandidateList is empty!");
+ synfig::warning("%s:%d Action CandidateList is empty!", __FILE__, __LINE__);
for(iter=candidate_list.begin();iter!=candidate_list.end();++iter)
{
candidate_list.sort();
if(candidate_list.empty())
- synfig::warning("Action CandidateList is empty!");
+ synfig::warning("%s:%d Action CandidateList is empty!", __FILE__, __LINE__);
if(candidate_list2.empty())
- synfig::warning("Action CandidateList2 is empty!");
+ synfig::warning("%s:%d Action CandidateList2 is empty!", __FILE__, __LINE__);
// Seperate out the candidate lists so that there are no conflicts
for(iter=candidate_list.begin();iter!=candidate_list.end();++iter)