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},