Code

Patch by Max to add option for better Save As behavior.
authorscislac <scislac@users.sourceforge.net>
Fri, 2 Oct 2009 21:17:41 +0000 (21:17 +0000)
committerscislac <scislac@users.sourceforge.net>
Fri, 2 Oct 2009 21:17:41 +0000 (21:17 +0000)
src/extension/system.cpp
src/ui/dialog/inkscape-preferences.cpp
src/ui/dialog/inkscape-preferences.h

index 43e7af494430ec6ae43f276960b203c64017ec69..f41217959d6e1a0dc24ab9dfbcb9d3ee3a25f747 100644 (file)
@@ -588,6 +588,15 @@ get_file_save_path (SPDocument *doc, FileSaveMethod method) {
     Glib::ustring path;
     switch (method) {
         case FILE_SAVE_METHOD_SAVE_AS:
+        {
+            bool use_current_dir = prefs->getBool("/dialogs/save_as/use_current_dir");
+            if (doc->uri && use_current_dir) {
+                path = Glib::path_get_dirname(doc->uri);
+            } else {
+                path = prefs->getString("/dialogs/save_as/path");
+            }
+            break;
+        }
         case FILE_SAVE_METHOD_TEMPORARY:
             path = prefs->getString("/dialogs/save_as/path");
             break;
index 3e202d61927c3a8df4476e99b2279d89b28781c5..df0209b81d56ccc3e40e75e6b2d7376c3f195dad 100644 (file)
@@ -120,7 +120,7 @@ InkscapePreferences::InkscapePreferences()
     initPageCMS();
     initPageGrids();
     initPageSVGOutput();
-    initPageAutosave();
+    initPageSave();
     initPageImportExport();
     initPageMouse();
     initPageScrolling();
@@ -1109,19 +1109,24 @@ void InkscapePreferences::initPageUI()
 }
 
 
-void InkscapePreferences::initPageAutosave()
+void InkscapePreferences::initPageSave()
 {
+    _save_use_current_dir.init( _("Use current directory for \"Save As ...\""), "/dialogs/save_as/use_current_dir", true);
+    _page_save.add_line( false, "", _save_use_current_dir, "",
+                         _("The \"Save As ...\" dialog uses the current working directory for saving (if the file was previously saved). If not previously saved, the most recent \"Save As ...\" directory is used."), true);
+
+
     // Autosave options
-    _autosave_autosave_enable.init( _("Enable autosave (requires restart)"), "/options/autosave/enable", false);
-    _page_autosave.add_line(false, "", _autosave_autosave_enable, "", _("Automatically save the current document(s) at a given interval, thus minimizing loss in case of a crash"), false);
-    _autosave_autosave_interval.init("/options/autosave/interval", 1.0, 10800.0, 1.0, 10.0, 10.0, true, false);
-    _page_autosave.add_line(true, _("Interval (in minutes):"), _autosave_autosave_interval, "", _("Interval (in minutes) at which document will be autosaved"), false);
-    _autosave_autosave_path.init("/options/autosave/path", true);
+    _save_autosave_enable.init( _("Enable autosave (requires restart)"), "/options/autosave/enable", false);
+    _page_save.add_line(false, "", _save_autosave_enable, "", _("Automatically save the current document(s) at a given interval, thus minimizing loss in case of a crash"), false);
+    _save_autosave_interval.init("/options/autosave/interval", 1.0, 10800.0, 1.0, 10.0, 10.0, true, false);
+    _page_save.add_line(true, _("Interval (in minutes):"), _save_autosave_interval, "", _("Interval (in minutes) at which document will be autosaved"), false);
+    _save_autosave_path.init("/options/autosave/path", true);
     //TRANSLATORS: only translate "string" in "context|string".
     // For more details, see http://developer.gnome.org/doc/API/2.0/glib/glib-I18N.html#Q-:CAPS
-    _page_autosave.add_line(true, Q_("filesystem|Path:"), _autosave_autosave_path, "", _("The directory where autosaves will be written"), false);
-    _autosave_autosave_max.init("/options/autosave/max", 1.0, 100.0, 1.0, 10.0, 10.0, true, false);
-    _page_autosave.add_line(true, _("Maximum number of autosaves:"), _autosave_autosave_max, "", _("Maximum number of autosaved files; use this to limit the storage space used"), false);
+    _page_save.add_line(true, Q_("filesystem|Path:"), _save_autosave_path, "", _("The directory where autosaves will be written"), false);
+    _save_autosave_max.init("/options/autosave/max", 1.0, 100.0, 1.0, 10.0, 10.0, true, false);
+    _page_save.add_line(true, _("Maximum number of autosaves:"), _save_autosave_max, "", _("Maximum number of autosaved files; use this to limit the storage space used"), false);
 
     /* When changing the interval or enabling/disabling the autosave function,
      * update our running configuration
@@ -1137,7 +1142,7 @@ void InkscapePreferences::initPageAutosave()
 
     // -----------
 
-    this->AddPage(_page_autosave, _("Autosave"), PREFS_PAGE_AUTOSAVE);
+    this->AddPage(_page_save, _("Save"), PREFS_PAGE_SAVE);
 }
 
 void InkscapePreferences::initPageBitmaps()
index aa0da3a370b9d381ace4585ec2e47ba6e62d389c..364b0eb1da2195f141946b94a600e815fb757063 100644 (file)
@@ -69,7 +69,7 @@ enum {
     PREFS_PAGE_CMS,
     PREFS_PAGE_GRIDS,
     PREFS_PAGE_SVGOUTPUT,
-    PREFS_PAGE_AUTOSAVE,
+    PREFS_PAGE_SAVE,
     PREFS_PAGE_IMPORTEXPORT,
     PREFS_PAGE_MOUSE,
     PREFS_PAGE_SCROLLING,
@@ -117,7 +117,7 @@ protected:
     DialogPage _page_mouse, _page_scrolling, _page_snapping, _page_steps, _page_tools, _page_windows,
         _page_clones, _page_mask, _page_transforms, _page_filters, _page_select,
         _page_importexport, _page_cms, _page_grids, _page_svgoutput, _page_misc,
-        _page_ui, _page_autosave, _page_bitmaps, _page_spellcheck;
+        _page_ui, _page_save, _page_bitmaps, _page_spellcheck;
     DialogPage _page_selector, _page_node, _page_tweak, _page_zoom, _page_shapes, _page_pencil, _page_pen,
                _page_calligraphy, _page_text, _page_gradient, _page_connector, _page_dropper, _page_lpetool;
     DialogPage _page_rectangle, _page_3dbox, _page_ellipse, _page_star, _page_spiral, _page_paintbucket, _page_eraser;
@@ -209,10 +209,11 @@ protected:
     PrefCheckButton _misc_bitmap_autoreload;
     PrefSpinButton  _bitmap_copy_res;
 
-    PrefCheckButton _autosave_autosave_enable;
-    PrefSpinButton  _autosave_autosave_interval;
-    PrefEntry       _autosave_autosave_path;
-    PrefSpinButton  _autosave_autosave_max;
+    PrefCheckButton _save_use_current_dir;
+    PrefCheckButton _save_autosave_enable;
+    PrefSpinButton  _save_autosave_interval;
+    PrefEntry       _save_autosave_path;
+    PrefSpinButton  _save_autosave_max;
 
     Gtk::ComboBoxText   _cms_display_profile;
     PrefCheckButton     _cms_from_display;
@@ -298,7 +299,7 @@ protected:
     void initPageSVGOutput();
     void initPageUI();
     void initPageSpellcheck();
-    void initPageAutosave();
+    void initPageSave();
     void initPageBitmaps();
     void initPageMisc();
     void initPageI18n();