X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=synfig-studio%2Ftrunk%2Fsrc%2Fgtkmm%2Finstance.cpp;h=fc455283b7f86e6a6cc477abbdc6ba1a4d4f9b11;hb=faa340a2a22d0b46fc21e2c9779bf7eff811bfbe;hp=190eafbee30cc6dcf50307e5aa73c2900c2bfe14;hpb=daed6c57e37a03a425feddc3d4c17df026b679e8;p=synfig.git diff --git a/synfig-studio/trunk/src/gtkmm/instance.cpp b/synfig-studio/trunk/src/gtkmm/instance.cpp index 190eafb..fc45528 100644 --- a/synfig-studio/trunk/src/gtkmm/instance.cpp +++ b/synfig-studio/trunk/src/gtkmm/instance.cpp @@ -185,17 +185,6 @@ Instance::set_redo_status(bool x) } 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)) @@ -209,21 +198,19 @@ studio::Instance::save_as(const synfig::String &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()); { @@ -244,7 +231,7 @@ studio::Instance::dialog_save_as() "other files first before trying to use \"SaveAs\"." ); - return; + return false; } if(parent_layer) break; @@ -253,19 +240,20 @@ studio::Instance::dialog_save_as() } // show the canvas' name if it has one, else its ID - while(App::dialog_saveas_file(_("Choose a Filename to Save As") + - String(" (") + - (canvas->get_name().empty() - ? canvas->get_id() - : canvas->get_name()) + - ") ...", filename)) + 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()) + std::string base = basename(filename); + if(find(base.begin(),base.end(),'.')==base.end()) filename+=".sifz"; try @@ -296,10 +284,12 @@ studio::Instance::dialog_save_as() } if(save_as(filename)) - break; + return true; App::dialog_error_blocking("SaveAs - Error","Unable to save file"); } + + return false; } void