changeset 24202:014f47089682

make .fig files the default for saving from figure menus * Figure.cc (Figure::fileSaveFigure): Update list of figure formats. Make .fig the default. (Figure::save_figure_callback): Call hgsave for .fig files. * __add_default_menu__.m (__save_as__): Update list of figure formats. Make .fig the default. (save_cb): Call hgsave for .fig files. Pass figure object to __save_as__, not handle of callback object.
author John W. Eaton <jwe@octave.org>
date Tue, 07 Nov 2017 17:28:57 -0500
parents 558de6a42ff7
children 68c4ee9545b2
files libgui/graphics/Figure.cc scripts/plot/util/private/__add_default_menu__.m
diffstat 2 files changed, 26 insertions(+), 13 deletions(-) [+]
line wrap: on
line diff
--- a/libgui/graphics/Figure.cc	Mon Nov 06 13:25:23 2017 +0100
+++ b/libgui/graphics/Figure.cc	Tue Nov 07 17:28:57 2017 -0500
@@ -867,7 +867,7 @@
       {
         prompt = true;
 
-        file = "untitled.pdf";
+        file = "untitled.fig";
       }
 
     if (prompt || file.isEmpty ())
@@ -877,9 +877,10 @@
         file = QFileDialog::getSaveFileName (qWidget<FigureWindow> (),
                                              tr ("Save Figure As"),
                                              finfo.absoluteFilePath (),
-                                             nullptr, nullptr,
+                                             tr ("Figure File (*.fig);;Vector Image Formats (*.eps *.epsc *.pdf *.svg *.ps *.tikz);;Bitmap Image Formats (*.gif *.jpg *.png *.tiff)",
+                                             nullptr,
                                              QFileDialog::DontUseNativeDialog);
-      }
+    }
 
     if (! file.isEmpty ())
       {
@@ -898,7 +899,12 @@
     figure::properties& fp = properties<figure> ();
     octave_value fnum = fp.get___myhandle__ ().as_octave_value ();
 
-    Ffeval (ovl ("print", fnum, file));
+    size_t flen = file.length ();
+
+    if (flen > 4 && file.substr (flen-4, 4) == ".fig")
+      Ffeval (ovl ("hgsave", fnum, file));
+    else
+      Ffeval (ovl ("print", fnum, file));
   }
 
   void
--- a/scripts/plot/util/private/__add_default_menu__.m	Mon Nov 06 13:25:23 2017 +0100
+++ b/scripts/plot/util/private/__add_default_menu__.m	Tue Nov 07 17:28:57 2017 -0500
@@ -67,25 +67,32 @@
   if (strcmp (lbl, "&Save"))
     fname = get (hfig, "filename");
     if (isempty (fname))
-      __save_as__ (hcbo);
+      __save_as__ (hfig);
     else
-      saveas (hcbo, fname);
+      saveas (hfig, fname);
     endif
   elseif (strcmp (lbl, "Save &As"))
-    __save_as__ (hcbo);
+    __save_as__ (hfig);
   endif
 endfunction
 
 
 function __save_as__ (caller)
-  [filename, filedir] = uiputfile ({"*.pdf;*.ps;*.gif;*.png;*.jpg",
-                                    "Supported Graphic Formats"},
-                                   "Save Figure",
-                                   [pwd, filesep, "untitled.pdf"]);
+  [filename, filedir] = uiputfile ...
+    ({"*.fig", "Figure File";
+      "*.eps;*.epsc;*.pdf;*.svg;*.ps;*.tikz", "Vector Image Formats";
+      "*.gif;*.jpg;*.png;*.tiff", "Bitmap Image Formats"},
+     "Save Figure", fullfile (pwd, "untitled.fig"));
+
   if (filename != 0)
-    fname = [filedir filesep() filename];
+    fname = fullfile (filedir, filename);
     set (gcbf, "filename", fname);
-    saveas (caller, fname);
+    flen = numel (fname);
+    if (flen > 4 && strcmp (fname(flen-3:end), ".fig"))
+      hgsave (caller, fname);
+    else
+      saveas (caller, fname);
+    endif
   endif
 endfunction