}
bool
-studio::Instance::save_as(const synfig::String &file_name)const
-{
- if(synfigapp::Instance::save_as(file_name))
- {
- App::add_recent_file(file_name);
- return true;
- }
- return false;
-}
-
-bool
studio::Instance::save_as(const synfig::String &file_name)
{
if(synfigapp::Instance::save_as(file_name))
bool
studio::Instance::save()
{
- if(basename(get_file_name()).find("untitled")==0)
- {
- dialog_save_as();
- return true;
- }
+ // the filename will be set to "Synfig Animation 1" or some such when first created
+ // and will be changed to an absolute path once it has been saved
+ // so if it still begins with "Synfig Animation " then we need to ask where to save it
+ if(get_file_name().find(DEFAULT_FILENAME_PREFIX)==0)
+ return dialog_save_as();
return synfigapp::Instance::save();
-
}
-void
+bool
studio::Instance::dialog_save_as()
{
- string filename="*.sif";
-
+ string filename=basename(get_file_name());
Canvas::Handle canvas(get_canvas());
{
"other files first before trying to use \"SaveAs\"."
);
- return;
+ return false;
}
if(parent_layer)
break;
}
}
- while(App::dialog_saveas_file("SaveAs", filename))
+ // show the canvas' name if it has one, else its ID
+ while(App::dialog_save_file(_("Choose a Filename to Save As") +
+ String(" (") +
+ (canvas->get_name().empty()
+ ? canvas->get_id()
+ : canvas->get_name()) +
+ ") ...", filename))
{
// If the filename still has wildcards, then we should
// continue looking for the file we want
if(find(filename.begin(),filename.end(),'*')!=filename.end())
continue;
- if(find(filename.begin(),filename.end(),'.')==filename.end())
- filename+=".sif";
+ std::string base = basename(filename);
+ if(find(base.begin(),base.end(),'.')==base.end())
+ filename+=".sifz";
try
{
}
if(save_as(filename))
- break;
+ return true;
App::dialog_error_blocking("SaveAs - Error","Unable to save file");
}
+
+ return false;
}
void
Instance::safe_revert()
{
if(synfigapp::Instance::get_action_count())
- if(!App::dialog_yes_no(_("Revert to saved"), _("You will loose any changes you have made since your last save.\nAre you sure?")))
+ if(!App::dialog_yes_no(_("Revert to saved"), _("You will lose any changes you have made since your last save.\nAre you sure?")))
return false;
revert();
return true;