diff --git a/Fltk/Callbacks.cpp b/Fltk/Callbacks.cpp
index e4eb9669c570baf12b9c94f0a32538ceeabbabb6..8e8f5c9482693a03fd2950ea62427125ec276ec3 100644
--- a/Fltk/Callbacks.cpp
+++ b/Fltk/Callbacks.cpp
@@ -1,4 +1,4 @@
-// $Id: Callbacks.cpp,v 1.129 2002-06-15 21:25:27 geuzaine Exp $
+// $Id: Callbacks.cpp,v 1.130 2002-06-23 19:56:46 geuzaine Exp $
 //
 // Copyright (C) 1997 - 2002 C. Geuzaine, J.-F. Remacle
 //
@@ -76,6 +76,8 @@ char* file_chooser_get_name(int num){
 static Fl_File_Chooser *fc = NULL;
 
 int file_chooser(int multi, const char* message, const char* pat){
+  Fl_File_Chooser::show_label = "Format:";
+
   if (!fc) {
     fc = new Fl_File_Chooser(".", pat, Fl_File_Chooser::CREATE, message);
   }
@@ -309,6 +311,47 @@ void file_merge_cb(CALLBACK_ARGS) {
     WID->set_context(menu_post, 0);
 }
 
+void file_save_as_cb(CALLBACK_ARGS) {
+  int i, nbformats;
+  static char *pat=NULL, *formats[] ={
+    "By extension (*)",
+    "Gmsh options (*.opt)",
+    "Gmsh unrolled geometry (*.geo)",
+    "Gmsh mesh (*.msh)",
+    "Gmsh mesh without physicals (*.msh)",
+    "GREF mesh (*.gref)",
+    "I-DEAS universal mesh format (*.unv)",
+    "VRML surface mesh (*.wrl)",
+    "GIF (*.gif)",
+    "GIF dithered (*.gif)",
+    "GIF transparent (*.gif)",
+    "JPEG (*.jpg)",
+    "PostScript fast (*.ps)",
+    "PostScript accurate (*.ps)",
+    "PPM (*.ppm)",
+    "LaTeX JPEG (*.jpg)",
+    "LaTeX PostScript fast (*.ps)",
+    "LaTeX PostScript accurate (*.ps)",
+    "LaTeX TeX (*.tex)",
+    "UCB YUV (*.yuv)"};
+
+  if(!pat){
+    nbformats = sizeof(formats)/sizeof(formats[0]);
+    pat = (char*)Malloc(nbformats*256*sizeof(char));
+    strcpy(pat, formats[0]);
+    for(i=1; i<nbformats; i++){
+      strcat(pat, "\t");
+      strcat(pat, formats[i]);
+    }
+  }
+
+  if(file_chooser(0,"Save file as", pat)){
+    // pas moyen de recuperer l'index du filtre...
+  }
+
+}
+
+
 void file_save_as_auto_cb(CALLBACK_ARGS) {
   if(file_chooser(0,"Save file by extension", "*"))
     CreateOutputFile(file_chooser_get_name(1), CTX.print.format = FORMAT_AUTO); 
diff --git a/Fltk/Callbacks.h b/Fltk/Callbacks.h
index b1a1e9a5af868139612cdb048d2e45e5408d55ab..6060d6612bb3382c61452353dce71bbff327a04b 100644
--- a/Fltk/Callbacks.h
+++ b/Fltk/Callbacks.h
@@ -43,6 +43,7 @@ void status_cancel_cb(CALLBACK_ARGS) ;
 
 void file_open_cb(CALLBACK_ARGS) ;
 void file_merge_cb(CALLBACK_ARGS) ;
+void file_save_as_cb(CALLBACK_ARGS) ;
 void file_save_as_auto_cb(CALLBACK_ARGS) ;
 void file_save_as_geo_cb(CALLBACK_ARGS) ;
 void file_save_as_geo_options_cb(CALLBACK_ARGS) ;
diff --git a/Fltk/GUI.cpp b/Fltk/GUI.cpp
index 1b45793b05effeaa122ca4c9d85962241e7598e9..17afd9bea2e6cc17bcdc4215fab1657aeb914188 100644
--- a/Fltk/GUI.cpp
+++ b/Fltk/GUI.cpp
@@ -1,4 +1,4 @@
-// $Id: GUI.cpp,v 1.181 2002-06-21 06:47:07 geuzaine Exp $
+// $Id: GUI.cpp,v 1.182 2002-06-23 19:56:46 geuzaine Exp $
 //
 // Copyright (C) 1997 - 2002 C. Geuzaine, J.-F. Remacle
 //
@@ -73,6 +73,7 @@ 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",             FL_CTRL+'s', (Fl_Callback *)mesh_save_cb, 0},
+  //{"Save as...",       FL_CTRL+'a', (Fl_Callback *)file_save_as_cb, 0},
     {"Save as",          0, 0, 0, FL_MENU_DIVIDER|FL_SUBMENU},
       {"By extension...",  FL_CTRL+'e', (Fl_Callback *)file_save_as_auto_cb, 0, FL_MENU_DIVIDER},
       {"Geometry",  0, 0, 0, FL_SUBMENU},