When prompting for 'Save As...', show the name of the root canvas being saved in...
[synfig.git] / synfig-studio / trunk / src / gtkmm / instance.cpp
index 378c7c2..da88e80 100644 (file)
@@ -50,6 +50,8 @@
 #include "widget_waypointmodel.h"
 #include <gtkmm/actiongroup.h>
 #include "iconcontroler.h"
+#include <sys/stat.h>
+#include <errno.h>
 
 #endif
 
@@ -250,7 +252,13 @@ studio::Instance::dialog_save_as()
                }
        }
 
-       while(App::dialog_saveas_file("SaveAs", filename))
+       // 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))
        {
                // If the filename still has wildcards, then we should
                // continue looking for the file we want
@@ -274,6 +282,19 @@ studio::Instance::dialog_save_as()
                        continue;
                }
 
+               {
+                       struct stat     s;
+                       // if stat() succeeds, or it fails with something other than 'file doesn't exist', the file exists
+                       // 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) &&
+                               !App::dialog_yes_no("File exists",
+                                                                       "A file named '" +
+                                                                       filename +
+                                                                       "' already exists.\n\n"
+                                                                       "Do you want to replace it with the file you are saving?"))
+                               continue;
+               }
+
                if(save_as(filename))
                        break;