diff --git a/Fltk/Callbacks.cpp b/Fltk/Callbacks.cpp
index e2e448a18d78e86ba864d00445ebd24a309bcaa8..97c788a2a051c56443c6fe001265549c2dd241e8 100644
--- a/Fltk/Callbacks.cpp
+++ b/Fltk/Callbacks.cpp
@@ -1,4 +1,4 @@
-// $Id: Callbacks.cpp,v 1.91 2001-11-05 08:37:43 geuzaine Exp $
+// $Id: Callbacks.cpp,v 1.92 2001-11-13 08:10:00 geuzaine Exp $
 
 #include <sys/types.h>
 #include <signal.h>
@@ -212,8 +212,8 @@ void file_save_as_geo_cb(CALLBACK_ARGS) {
 
 void file_save_as_geo_options_cb(CALLBACK_ARGS) {
   char *newfile;
-  if((newfile = fl_file_chooser("Save options file", "*", NULL)))
-    Print_Options(0,GMSH_FULLRC, newfile); 
+  if((newfile = fl_file_chooser("Save option file", "*", NULL)))
+    CreateOutputFile(newfile, CTX.print.format = FORMAT_OPT); 
 }
 
 void file_save_as_msh_cb(CALLBACK_ARGS) {
diff --git a/Fltk/GUI.cpp b/Fltk/GUI.cpp
index a3d6711238a797acba1f065c04fceaa7bd25333c..1fa940c6746717238d2e12179204e5d76d3aa132 100644
--- a/Fltk/GUI.cpp
+++ b/Fltk/GUI.cpp
@@ -1,4 +1,4 @@
-// $Id: GUI.cpp,v 1.126 2001-11-05 08:37:43 geuzaine Exp $
+// $Id: GUI.cpp,v 1.127 2001-11-13 08:09:59 geuzaine Exp $
 
 // To make the interface as visually consistent as possible, please:
 // - use the BH, BW, WB, IW values for button heights/widths, window borders, etc.
@@ -41,21 +41,27 @@ Fl_Menu_Item m_menubar_table[] = {
     {"Open...",          FL_CTRL+'o', (Fl_Callback *)file_open_cb, 0},
     {"Merge...",         FL_CTRL+'m', (Fl_Callback *)file_merge_cb, 0},
     {"Save as",          0, 0, 0, FL_MENU_DIVIDER|FL_SUBMENU},
-      {"By extension...",        FL_CTRL+'p', (Fl_Callback *)file_save_as_auto_cb, 0, FL_MENU_DIVIDER},
-      {"MSH native mesh format...",       0, (Fl_Callback *)file_save_as_msh_cb, 0},
-      {"MSH all elements...",             0, (Fl_Callback *)file_save_as_msh_all_cb, 0},
-      {"UNV universal mesh format...",    0, (Fl_Callback *)file_save_as_unv_cb, 0},
-      {"GREF gref mesh format...",        0, (Fl_Callback *)file_save_as_gref_cb, 0},
-      {"GEO flattened geometry...",       0, (Fl_Callback *)file_save_as_geo_cb, 0},
-      {"GEO complete options...",         0, (Fl_Callback *)file_save_as_geo_options_cb, 0},
-      {"PS simple sort postscript...",   0, (Fl_Callback *)file_save_as_eps_simple_cb, 0},
-      {"PS accurate sort postscript...", 0, (Fl_Callback *)file_save_as_eps_accurate_cb, 0},
-      {"JPEG...",                0, (Fl_Callback *)file_save_as_jpeg_cb, 0},
-      {"GIF...",                 0, (Fl_Callback *)file_save_as_gif_cb, 0},
-      {"GIF dithered...",        0, (Fl_Callback *)file_save_as_gif_dithered_cb, 0},
-      {"GIF transparent...",     0, (Fl_Callback *)file_save_as_gif_transparent_cb, 0},
-      {"PPM...",                 0, (Fl_Callback *)file_save_as_ppm_cb, 0},
-      {"UCB YUV...",             0, (Fl_Callback *)file_save_as_yuv_cb, 0},
+      {"By extension...",  FL_CTRL+'p', (Fl_Callback *)file_save_as_auto_cb, 0, FL_MENU_DIVIDER},
+      {"Geometry",  0, 0, 0, FL_SUBMENU},
+         {"Gmsh flattened geometry (geo)...", 0, (Fl_Callback *)file_save_as_geo_cb, 0},
+         {"Gmsh current options (opt)...",    0, (Fl_Callback *)file_save_as_geo_options_cb, 0},
+         {0},
+      {"Mesh",  0, 0, 0, FL_SUBMENU},
+         {"Gmsh mesh format (msh)...",         0, (Fl_Callback *)file_save_as_msh_cb, 0},
+         {"Gmsh mesh format, all elements...", 0, (Fl_Callback *)file_save_as_msh_all_cb, 0},
+         {"Universal mesh format (unv)...",    0, (Fl_Callback *)file_save_as_unv_cb, 0},
+         {"Gref mesh format (gref)...",        0, (Fl_Callback *)file_save_as_gref_cb, 0},
+         {0},
+      {"Image",  0, 0, 0, FL_SUBMENU},
+         {"PostScript fast (ps)...",  0, (Fl_Callback *)file_save_as_eps_simple_cb, 0},
+         {"PostScript accurate...",   0, (Fl_Callback *)file_save_as_eps_accurate_cb, 0},
+         {"Jpeg (jpg)...",            0, (Fl_Callback *)file_save_as_jpeg_cb, 0},
+         {"GIF (gif)...",             0, (Fl_Callback *)file_save_as_gif_cb, 0},
+         {"GIF dithered...",          0, (Fl_Callback *)file_save_as_gif_dithered_cb, 0},
+         {"GIF transparent...",       0, (Fl_Callback *)file_save_as_gif_transparent_cb, 0},
+         {"PPM (ppm)...",             0, (Fl_Callback *)file_save_as_ppm_cb, 0},
+         {"UCB YUV (yuv)...",         0, (Fl_Callback *)file_save_as_yuv_cb, 0},
+         {0},
       {0},
     {"Messages...",      FL_SHIFT+'l', (Fl_Callback *)opt_message_cb, 0},
     {"Statistics...",    FL_SHIFT+'i', (Fl_Callback *)opt_statistics_cb, 0, FL_MENU_DIVIDER},
diff --git a/Mesh/Mesh.h b/Mesh/Mesh.h
index 363e0d127e69da0dabe0b304c9a9a1337dd08818..acdffdc24792d466f96e7c6f942025c4720c3805 100644
--- a/Mesh/Mesh.h
+++ b/Mesh/Mesh.h
@@ -19,6 +19,7 @@
 #define FORMAT_PPM     11
 #define FORMAT_YUV     12
 #define FORMAT_SMS     14
+#define FORMAT_OPT     15
 
 #define CONV_VALUE    0.8