From 00ff5ed746a28f9884a18c388b8e49d9fde8baf4 Mon Sep 17 00:00:00 2001
From: Christophe Geuzaine <cgeuzaine@ulg.ac.be>
Date: Tue, 9 Jan 2001 13:28:49 +0000
Subject: [PATCH] *** empty log message ***

---
 Fltk/Callbacks.cpp      | 140 ++++++++++++++++++--------------
 Fltk/Callbacks.h        |  14 +++-
 Fltk/GUI.cpp            | 176 +++++++++++++++++++++++++++++++++++++++-
 Fltk/GUI.h              |   5 ++
 Fltk/Opengl.cpp         |   3 +-
 Graphics/CreateFile.cpp |   4 +-
 Motif/CbFile.cpp        |   5 +-
 Parser/Gmsh.y           |   5 +-
 8 files changed, 279 insertions(+), 73 deletions(-)

diff --git a/Fltk/Callbacks.cpp b/Fltk/Callbacks.cpp
index ecee2053ec..d9fa61a129 100644
--- a/Fltk/Callbacks.cpp
+++ b/Fltk/Callbacks.cpp
@@ -1,4 +1,4 @@
-// $Id: Callbacks.cpp,v 1.3 2001-01-09 11:17:13 geuzaine Exp $
+// $Id: Callbacks.cpp,v 1.4 2001-01-09 13:28:44 geuzaine Exp $
 
 #include "Gmsh.h"
 #include "GmshUI.h"
@@ -7,6 +7,7 @@
 #include "Draw.h"
 #include "Views.h"
 #include "Timer.h"
+#include "CreateFile.h"
 #include "OpenFile.h"
 #include "Context.h"
 #include "GUI.h"
@@ -152,7 +153,7 @@ void file_open_cb(CALLBACK_ARGS) {
 
 void file_merge_cb(CALLBACK_ARGS) {
   char *newfile;
-  newfile = fl_file_chooser("Merge File", "*.{geo,pos,msh}", NULL);
+  newfile = fl_file_chooser("Merge File", "*", NULL);
   if (newfile != NULL) {
     MergeProblem(newfile); 
     Init();
@@ -164,74 +165,87 @@ void file_save_cb(CALLBACK_ARGS) {
   Print_Mesh(&M, NULL, CTX.mesh.format);
 }
 
-void file_save_as_cb(CALLBACK_ARGS) {
+
+void file_save_as_auto_cb(CALLBACK_ARGS) {
   char *newfile;
-  newfile = fl_file_chooser("Save File", "*.{geo,pos,msh}", NULL);
-  void CreateFile (char *name, int format) ;
+  if((newfile = fl_file_chooser("Save File by Extension", "*", NULL)))
+    CreateFile(newfile, CTX.print.format = FORMAT_AUTO); 
+}
 
-  /*
+void file_save_as_geo_cb(CALLBACK_ARGS) {
+  char *newfile;
+  if((newfile = fl_file_chooser("Save GEO File", "*", NULL)))
+    CreateFile(newfile, CTX.print.format = FORMAT_GEO); 
+}
 
-  case OPTIONS_SAVE_MSH  : 
-    CTX.print.format = CTX.mesh.format = FORMAT_MSH; 
-    break;
-  case OPTIONS_SAVE_UNV  : 
-    CTX.print.format = CTX.mesh.format = FORMAT_UNV; 
-    break;
-  case OPTIONS_SAVE_GREF : 
-    CTX.print.format = CTX.mesh.format = FORMAT_GREF; 
-    break;
-  case OPTIONS_SAVE_GEO  : 
-    CTX.print.format = FORMAT_GEO; 
-    break;
-  case OPTIONS_SAVE_AUTO : 
-    CTX.print.format = FORMAT_AUTO; 
-    break;
-  case OPTIONS_SAVE_XPM  : 
-    CTX.print.format = FORMAT_XPM; 
-    break;
-  case OPTIONS_SAVE_GIF  : 
-    CTX.print.format = FORMAT_GIF;
+void file_save_as_msh_cb(CALLBACK_ARGS) {
+  char *newfile;
+  if((newfile = fl_file_chooser("Save MSH File", "*", NULL)))
+    CreateFile(newfile, CTX.print.format = CTX.mesh.format = FORMAT_MSH); 
+}
+void file_save_as_unv_cb(CALLBACK_ARGS) {
+  char *newfile;
+  if((newfile = fl_file_chooser("Save UNV File", "*", NULL)))
+    CreateFile(newfile, CTX.print.format = CTX.mesh.format = FORMAT_UNV); 
+}
+void file_save_as_gref_cb(CALLBACK_ARGS) {
+  char *newfile;
+  if((newfile = fl_file_chooser("Save GREF File", "*", NULL)))
+    CreateFile(newfile, CTX.print.format = CTX.mesh.format = FORMAT_GREF); 
+}
+void file_save_as_eps_simple_cb(CALLBACK_ARGS) {
+  char *newfile;
+  if((newfile = fl_file_chooser("Save EPS File", "*", NULL))){
+    CTX.print.eps_quality = 1; 
+    CreateFile(newfile, CTX.print.format = FORMAT_EPS); 
+  }
+}
+void file_save_as_eps_accurate_cb(CALLBACK_ARGS) {
+  char *newfile;
+  if((newfile = fl_file_chooser("Save EPS File", "*", NULL))){
+    CTX.print.eps_quality = 2; 
+    CreateFile(newfile, CTX.print.format = FORMAT_EPS); 
+  }
+}
+void file_save_as_jpeg_cb(CALLBACK_ARGS) {
+  char *newfile;
+  if((newfile = fl_file_chooser("Save JPEG File", "*", NULL)))
+    CreateFile(newfile, CTX.print.format = FORMAT_JPEG); 
+}
+
+void file_save_as_gif_cb(CALLBACK_ARGS) {
+  char *newfile;
+  if((newfile = fl_file_chooser("Save GIF File", "*", NULL))){
     CTX.print.gif_dither = 0;
-    CTX.print.gif_transparent = 0; 
-    break;
-  case OPTIONS_SAVE_GIF_DITHERED : 
-    CTX.print.format = FORMAT_GIF;
+    CTX.print.gif_transparent = 0;
+    CreateFile(newfile, CTX.print.format = FORMAT_GIF); 
+  }
+}
+void file_save_as_gif_dithered_cb(CALLBACK_ARGS) {
+  char *newfile;
+  if((newfile = fl_file_chooser("Save GIF File", "*", NULL))){
     CTX.print.gif_dither = 1; 
     CTX.print.gif_transparent = 0; 
-    break;
-  case OPTIONS_SAVE_GIF_TRANSPARENT :
-    CTX.print.format = FORMAT_GIF;
+    CreateFile(newfile, CTX.print.format = FORMAT_GIF); 
+  }
+}
+void file_save_as_gif_transparent_cb(CALLBACK_ARGS) {
+  char *newfile;
+  if((newfile = fl_file_chooser("Save GIF File", "*", NULL))){
     CTX.print.gif_dither = 0;
     CTX.print.gif_transparent = 1; 
-    break;
-  case OPTIONS_SAVE_JPEG :
-    CTX.print.format = FORMAT_JPEG; 
-    break;
-  case OPTIONS_SAVE_PPM :
-    CTX.print.format = FORMAT_PPM; 
-    break;
-  case OPTIONS_SAVE_YUV :
-    CTX.print.format = FORMAT_YUV; 
-    break;
-  case OPTIONS_SAVE_EPS_IMAGE : 
-    CTX.print.format = FORMAT_EPS; 
-    CTX.print.eps_quality = 0;
-    break;
-  case OPTIONS_SAVE_EPS_SIMPLE :
-    CTX.print.format = FORMAT_EPS; 
-    CTX.print.eps_quality = 1; 
-    break;
-  case OPTIONS_SAVE_EPS_COMPLEX :
-    CTX.print.format = FORMAT_EPS; 
-    CTX.print.eps_quality = 2; 
-    break;
-
-  */
-
-
-
-  if (newfile != NULL)
-    CreateFile(newfile, FORMAT_AUTO); 
+    CreateFile(newfile, CTX.print.format = FORMAT_GIF);
+  }
+}
+void file_save_as_ppm_cb(CALLBACK_ARGS) {
+  char *newfile;
+  if((newfile = fl_file_chooser("Save PPM File", "*", NULL)))
+    CreateFile(newfile, CTX.print.format = FORMAT_PPM); 
+}
+void file_save_as_yuv_cb(CALLBACK_ARGS) {
+  char *newfile;
+  if((newfile = fl_file_chooser("Save YUV File", "*", NULL)))
+    CreateFile(newfile, CTX.print.format = FORMAT_YUV); 
 }
 
 static int RELOAD_ALL_VIEWS = 0 ;
@@ -702,5 +716,5 @@ void view_timestep_cb(CALLBACK_ARGS){
   printf("Timestep view %d \n", (int)data);
 }
 void view_options_cb(CALLBACK_ARGS){
-  printf("Options view %d \n", (int)data);
+  WID->opt_view();
 }
diff --git a/Fltk/Callbacks.h b/Fltk/Callbacks.h
index 9875a9bf6f..9c968cfdc7 100644
--- a/Fltk/Callbacks.h
+++ b/Fltk/Callbacks.h
@@ -20,7 +20,19 @@ void status_cancel_cb(CALLBACK_ARGS) ;
 void file_open_cb(CALLBACK_ARGS) ;
 void file_merge_cb(CALLBACK_ARGS) ;
 void file_save_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_msh_cb(CALLBACK_ARGS) ;
+void file_save_as_unv_cb(CALLBACK_ARGS) ;
+void file_save_as_gref_cb(CALLBACK_ARGS) ;
+void file_save_as_eps_simple_cb(CALLBACK_ARGS) ;
+void file_save_as_eps_accurate_cb(CALLBACK_ARGS) ;
+void file_save_as_jpeg_cb(CALLBACK_ARGS) ;
+void file_save_as_gif_cb(CALLBACK_ARGS) ;
+void file_save_as_gif_dithered_cb(CALLBACK_ARGS) ;
+void file_save_as_gif_transparent_cb(CALLBACK_ARGS) ;
+void file_save_as_ppm_cb(CALLBACK_ARGS) ;
+void file_save_as_yuv_cb(CALLBACK_ARGS) ;
 void file_reload_all_views_cb(CALLBACK_ARGS) ;
 void file_remove_all_views_cb(CALLBACK_ARGS) ;
 void file_quit_cb(CALLBACK_ARGS) ;
diff --git a/Fltk/GUI.cpp b/Fltk/GUI.cpp
index c2af0ccac2..497d68f551 100644
--- a/Fltk/GUI.cpp
+++ b/Fltk/GUI.cpp
@@ -27,7 +27,21 @@ 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, FL_MENU_DIVIDER},
     {"Save",             FL_CTRL+'s', (Fl_Callback *)file_save_cb, 0},
-    {"Save As...",       FL_CTRL+'p', (Fl_Callback *)file_save_as_cb, 0, FL_MENU_DIVIDER},
+    {"Save As",          0, 0, 0, FL_MENU_DIVIDER|FL_SUBMENU},
+      {"By extension...",      0, (Fl_Callback *)file_save_as_auto_cb, 0},
+      {"GEO...",               0, (Fl_Callback *)file_save_as_geo_cb, 0},
+      {"MSH...",               0, (Fl_Callback *)file_save_as_msh_cb, 0},
+      {"UNV...",               0, (Fl_Callback *)file_save_as_unv_cb, 0},
+      {"GREF...",              0, (Fl_Callback *)file_save_as_gref_cb, 0},
+      {"EPS simple sort...",   0, (Fl_Callback *)file_save_as_eps_simple_cb, 0},
+      {"EPS accurate sort...", 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},
+      {0},
     {"Reload All Views", FL_CTRL+'l', (Fl_Callback *)file_reload_all_views_cb, 0},
     {"Remove All Views", FL_CTRL+'r', (Fl_Callback *)file_remove_all_views_cb, 0, FL_MENU_DIVIDER},
     {"Quit",             FL_CTRL+'q', (Fl_Callback *)file_quit_cb, 0},
@@ -242,6 +256,7 @@ GUI::GUI() {
 
     m_window = new Fl_Window(width,MH);
     m_window->box(FL_THIN_UP_BOX);
+    m_window->label("Gmsh");
 
     {
       Fl_Menu_Bar *o = new Fl_Menu_Bar(0,0,width,BH); 
@@ -398,6 +413,12 @@ void GUI::set_status(char *msg, int num){
   g_status_label[num]->redraw();
 }
 
+// set the current drawing context to the main opengl window
+
+void GUI::make_gl_current(){
+  g_opengl_window->make_current();
+}
+
 // Draw the opengl window
 
 void GUI::draw_gl(){
@@ -540,6 +561,7 @@ void GUI::opt_general(){
     
     gen_window = new Fl_Window(width,height);
     gen_window->box(FL_THIN_UP_BOX);
+    gen_window->label("General Options");
     { 
       Fl_Tabs* o = new Fl_Tabs(WB, WB, width-2*WB, height-3*WB-BH);
       { 
@@ -670,6 +692,7 @@ void GUI::opt_geometry(){
     
     geo_window = new Fl_Window(width,height);
     geo_window->box(FL_THIN_UP_BOX);
+    geo_window->label("Geometry Options");
     { 
       Fl_Tabs* o = new Fl_Tabs(WB, WB, width-2*WB, height-3*WB-BH);
       { 
@@ -742,6 +765,7 @@ void GUI::opt_mesh(){
     
     mesh_window = new Fl_Window(width,height);
     mesh_window->box(FL_THIN_UP_BOX);
+    mesh_window->label("Mesh Options");
     { 
       Fl_Tabs* o = new Fl_Tabs(WB, WB, width-2*WB, height-3*WB-BH);
       { 
@@ -859,6 +883,7 @@ void GUI::opt_post(){
     
     post_window = new Fl_Window(width,height);
     post_window->box(FL_THIN_UP_BOX);
+    post_window->label("Post Processing Options");
     { 
       Fl_Tabs* o = new Fl_Tabs(WB, WB, width-2*WB, height-3*WB-BH);
       { 
@@ -927,6 +952,7 @@ void GUI::opt_stat(){
     
     stat_window = new Fl_Window(width,height);
     stat_window->box(FL_THIN_UP_BOX);
+    stat_window->label("Statistics");
     {
       Fl_Tabs* o = new Fl_Tabs(WB, WB, width-2*WB, height-3*WB-BH);
       { 
@@ -1017,6 +1043,7 @@ void GUI::help_short(){
     
     help_window = new Fl_Window(width,height);
     help_window->box(FL_THIN_UP_BOX);
+    help_window->label("Short Help");
 
     Fl_Scroll*o = new Fl_Scroll(WB, WB, width-2*WB, height-3*WB-BH);
     {
@@ -1060,6 +1087,7 @@ void GUI::help_about(){
     
     about_window = new Fl_Window(width,height);
     about_window->box(FL_THIN_UP_BOX);
+    about_window->label("About Gmsh");
 
     Fl_Box *o = new Fl_Box(2*WB, WB, about_width, height-2*WB);
     about_bmp = new Fl_Bitmap(about_bits,about_width,about_height);
@@ -1092,3 +1120,149 @@ void GUI::help_about(){
   }
 
 }
+
+// Create the window for view options
+
+void GUI::opt_view(){
+  static int init_opt_view = 0;
+
+  if(!init_opt_view){
+    init_opt_view = 1 ;
+
+    int width = 280;
+    int height = 5*WB+9*BH ;
+    
+    view_window = new Fl_Window(width,height);
+    view_window->box(FL_THIN_UP_BOX);
+    view_window->label("View Options");
+    { 
+      Fl_Tabs* o = new Fl_Tabs(WB, WB, width-2*WB, height-3*WB-BH);
+      { 
+	Fl_Group* o = new Fl_Group(WB, WB+BH, width-2*WB, height-3*WB-2*BH, "Color bar");
+	o->labelsize(CTX.fontsize);
+        o->hide();
+        view_butt[0] = new Fl_Check_Button(2*WB, 2*WB+BH, 100, BH, "Show color bar");
+        view_butt[1] = new Fl_Check_Button(2*WB, 2*WB+2*BH, 100, BH, "Display time");
+        view_butt[2] = new Fl_Check_Button(2*WB, 2*WB+3*BH, 100, BH, "Transparent bar");
+	for(int i=0 ; i<3 ; i++){
+	  view_butt[i]->type(FL_TOGGLE_BUTTON);
+	  view_butt[i]->down_box(FL_DOWN_BOX);
+	  view_butt[i]->labelsize(CTX.fontsize);
+	  view_butt[i]->selection_color(FL_YELLOW);
+	}
+	view_input[0] = new Fl_Input (2*WB, 2*WB+4*BH, 100, BH, "Title");
+	view_input[1] = new Fl_Input (2*WB, 2*WB+5*BH, 100, BH, "Number format");
+	for(int i=0 ; i<2 ; i++){
+	  view_input[i]->labelsize(CTX.fontsize);
+	  view_input[i]->type(FL_HORIZONTAL);
+	  view_input[i]->align(FL_ALIGN_RIGHT);
+	}
+        o->end();
+      }
+      { 
+	Fl_Group* o = new Fl_Group(WB, WB+BH, width-2*WB, height-3*WB-2*BH, "Range");
+	o->labelsize(CTX.fontsize);
+
+	{
+	  Fl_Group* o = new Fl_Group(WB, 2*WB+BH, width-2*WB, 2*BH, 0);
+	  view_butt[4] = new Fl_Check_Button(2*WB, 2*WB+  BH, 100, BH, "Linear");
+	  view_butt[5] = new Fl_Check_Button(2*WB, 2*WB+2*BH, 100, BH, "Logarithmic");
+	  for(int i=4 ; i<6 ; i++){
+	    view_butt[i]->type(FL_RADIO_BUTTON);
+	    view_butt[i]->labelsize(CTX.fontsize);
+	    view_butt[i]->selection_color(FL_YELLOW);
+	  }
+	  o->end();
+	}
+
+        view_butt[3] = new Fl_Check_Button(2*WB, 2*WB+3*BH, 100, BH, "Custom");
+	view_butt[3]->type(FL_TOGGLE_BUTTON);
+	view_butt[3]->down_box(FL_DOWN_BOX);
+	view_butt[3]->labelsize(CTX.fontsize);
+	view_butt[3]->selection_color(FL_YELLOW);
+
+        view_value[0] = new Fl_Value_Input(2*WB+120, 2*WB+3*BH, 100, BH, "minimum");
+        view_value[1] = new Fl_Value_Input(2*WB+120, 2*WB+4*BH, 100, BH, "maximum");
+	for(int i=0 ; i<2 ; i++){
+	  view_value[i]->labelsize(CTX.fontsize);
+	  view_value[i]->type(FL_HORIZONTAL);
+	  view_value[i]->align(FL_ALIGN_LEFT);
+	}
+
+	{
+	  Fl_Group* o =  new Fl_Group       (WB,       2*WB+6*BH, width-2*WB, 2*BH, 0);
+	  view_butt[6] = new Fl_Check_Button(2*WB,     2*WB+6*BH, 100, BH, "Iso");
+	  view_butt[7] = new Fl_Check_Button(2*WB,     2*WB+7*BH, 100, BH, "Filled iso");
+	  view_butt[8] = new Fl_Check_Button(2*WB+120, 2*WB+6*BH, 100, BH, "Continuous");
+	  view_butt[9] = new Fl_Check_Button(2*WB+120, 2*WB+7*BH, 100, BH, "Numeric");
+	  for(int i=6 ; i<10 ; i++){
+	    view_butt[i]->type(FL_RADIO_BUTTON);
+	    view_butt[i]->labelsize(CTX.fontsize);
+	    view_butt[i]->selection_color(FL_YELLOW);
+	  }
+	  o->end();
+	}
+
+	view_value[2] = new Fl_Value_Input(2*WB, 2*WB+5*BH, 40, BH, "Intervals");
+	view_value[2]->labelsize(CTX.fontsize);
+	view_value[2]->type(FL_HORIZONTAL);
+	view_value[2]->align(FL_ALIGN_RIGHT);
+	view_value[2]->minimum(1); 
+	view_value[2]->maximum(256); 
+	view_value[2]->step(1);
+        o->end();
+      }
+      { 
+	Fl_Group* o = new Fl_Group(WB, WB+BH, width-2*WB, height-3*WB-2*BH, "Offset");
+	o->labelsize(CTX.fontsize);
+        o->hide();
+	view_value[3] = new Fl_Value_Input(2*WB, 2*WB+ BH, 100, BH, "X");
+        view_value[4] = new Fl_Value_Input(2*WB, 2*WB+2*BH, 100, BH, "Y");
+	view_value[5] = new Fl_Value_Input(2*WB, 2*WB+3*BH, 100, BH, "Z");
+	for(int i=3 ; i<6 ; i++){
+	  view_value[i]->labelsize(CTX.fontsize);
+	  view_value[i]->type(FL_HORIZONTAL);
+	  view_value[i]->align(FL_ALIGN_RIGHT);
+	}	
+	o->end();
+      }
+      { 
+	Fl_Group* o = new Fl_Group(WB, WB+BH, width-2*WB, height-3*WB-2*BH, "Raise");
+	o->labelsize(CTX.fontsize);
+        o->hide();
+	view_value[6] = new Fl_Value_Input(2*WB, 2*WB+ BH, 100, BH, "X");
+        view_value[7] = new Fl_Value_Input(2*WB, 2*WB+2*BH, 100, BH, "Y");
+	view_value[8] = new Fl_Value_Input(2*WB, 2*WB+3*BH, 100, BH, "Z");
+	for(int i=6 ; i<9 ; i++){
+	  view_value[i]->labelsize(CTX.fontsize);
+	  view_value[i]->type(FL_HORIZONTAL);
+	  view_value[i]->align(FL_ALIGN_RIGHT);
+	}	
+	o->end();
+      }
+      o->end();
+    }
+
+    { 
+      Fl_Button* o = new Fl_Button(width-2*60-2*WB, height-BH-WB, 60, BH, "cancel");
+      o->labelsize(CTX.fontsize);
+      o->callback(cancel_cb, (void*)view_window);
+    }
+    { 
+      Fl_Return_Button* o = new Fl_Return_Button(width-60-WB, height-BH-WB, 60, BH, "OK");
+      o->labelsize(CTX.fontsize);
+      o->callback(ok_cb);
+    }
+
+    view_window->end();
+    view_window->show();
+  }
+  else{
+    if(view_window->shown())
+      view_window->hide();
+    else
+      view_window->show();
+    
+  }
+
+}
diff --git a/Fltk/GUI.h b/Fltk/GUI.h
index ea4605f3e6..fe94cb8b9f 100644
--- a/Fltk/GUI.h
+++ b/Fltk/GUI.h
@@ -125,12 +125,16 @@ class GUI{
   Fl_Value_Output  *stat_value[40] ;
 
   // view options window
+  Fl_Check_Button  *view_butt[20] ;
+  Fl_Value_Input   *view_value[10] ;
+  Fl_Input         *view_input[10] ;
 
 public:
 
   GUI();
   void run();
   void check();
+  void make_gl_current();
   void draw_gl();
   void draw_gl_overlay();
   void set_gl_size(int w, int h);
@@ -146,6 +150,7 @@ public:
   void opt_mesh();
   void opt_post();
   void opt_stat();
+  void opt_view();
 
   // create help windows
   void help_short();
diff --git a/Fltk/Opengl.cpp b/Fltk/Opengl.cpp
index bdda3d0907..3c4a2ca9e9 100644
--- a/Fltk/Opengl.cpp
+++ b/Fltk/Opengl.cpp
@@ -1,4 +1,4 @@
-// $Id: Opengl.cpp,v 1.2 2001-01-09 08:58:38 geuzaine Exp $
+// $Id: Opengl.cpp,v 1.3 2001-01-09 13:28:44 geuzaine Exp $
 
 #include "Gmsh.h"
 #include "GmshUI.h"
@@ -24,6 +24,7 @@ void myZoom(GLdouble X1, GLdouble X2, GLdouble Y1, GLdouble Y2,
 /* ------------------------------------------------------------------------ */
 
 void Init(void){
+  WID->make_gl_current();
 }
 
 void InitOverlay(void){
diff --git a/Graphics/CreateFile.cpp b/Graphics/CreateFile.cpp
index d1d1c09978..b2eac41112 100644
--- a/Graphics/CreateFile.cpp
+++ b/Graphics/CreateFile.cpp
@@ -1,4 +1,4 @@
-// $Id: CreateFile.cpp,v 1.2 2001-01-08 08:05:43 geuzaine Exp $
+// $Id: CreateFile.cpp,v 1.3 2001-01-09 13:28:46 geuzaine Exp $
 
 #include "Gmsh.h"
 #include "GmshUI.h"
@@ -37,6 +37,8 @@ void CreateFile (char *name, int format) {
   char     cmd[1000], *tmpFileName="tmp.xwd";
 #endif
 
+  if(!name || !strlen(name)) return;
+
   CTX.print.gl_fonts = 1;
 
   switch(format){
diff --git a/Motif/CbFile.cpp b/Motif/CbFile.cpp
index 09fcb7ca77..9826e6c2d9 100644
--- a/Motif/CbFile.cpp
+++ b/Motif/CbFile.cpp
@@ -1,4 +1,4 @@
-// $Id: CbFile.cpp,v 1.1 2001-01-08 08:20:10 geuzaine Exp $
+// $Id: CbFile.cpp,v 1.2 2001-01-09 13:28:47 geuzaine Exp $
 
 #include "Gmsh.h"
 #include "GmshUI.h"
@@ -7,6 +7,7 @@
 #include "Draw.h"
 #include "Widgets.h"
 #include "Context.h"
+#include "CreateFile.h"
 
 #include "CbFile.h"
 #include "CbColorbar.h"
@@ -40,8 +41,6 @@ void SaveToDisk (char *FileName, Widget warning,
     F i l e C b                                                       
    ------------------------------------------------------------------------ */
 
-extern void CreateFile (char *name, int format) ;
-
 void FileCb(Widget w, XtPointer client_data, XtPointer call_data){
   char      *c;
   XmString  xms;
diff --git a/Parser/Gmsh.y b/Parser/Gmsh.y
index 6e80a94911..ff26e03edf 100644
--- a/Parser/Gmsh.y
+++ b/Parser/Gmsh.y
@@ -1,6 +1,6 @@
 %{ 
 
-// $Id: Gmsh.y,v 1.51 2001-01-08 08:05:47 geuzaine Exp $
+// $Id: Gmsh.y,v 1.52 2001-01-09 13:28:49 geuzaine Exp $
 
 #include <stdarg.h>
 
@@ -21,6 +21,7 @@
 #include "FunctionManager.h"
 #include "ColorTable.h"
 #include "Timer.h"
+#include "CreateFile.h"
 
 #ifdef __DECCXX // bug in bison
 #include <alloca.h>
@@ -58,8 +59,6 @@ static StringXString  *pStrCat;
 static StringXNumber  *pNumCat;
 static StringXColor   *pColCat;
 
-void CreateFile (char *name, int format);
-
 char *strsave(char *ptr);
 void  yyerror (char *s);
 void  vyyerror (char *fmt, ...);
-- 
GitLab