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

---
 Fltk/Callbacks.cpp | 124 +++++++++++++++++++++++++++++++++++++++++++--
 Fltk/Callbacks.h   |  29 ++++++++++-
 Fltk/GUI.cpp       |  60 +++++++++++++++++++---
 3 files changed, 202 insertions(+), 11 deletions(-)

diff --git a/Fltk/Callbacks.cpp b/Fltk/Callbacks.cpp
index 8e55fb35ee..ecee2053ec 100644
--- a/Fltk/Callbacks.cpp
+++ b/Fltk/Callbacks.cpp
@@ -1,4 +1,4 @@
-// $Id: Callbacks.cpp,v 1.2 2001-01-09 08:58:37 geuzaine Exp $
+// $Id: Callbacks.cpp,v 1.3 2001-01-09 11:17:13 geuzaine Exp $
 
 #include "Gmsh.h"
 #include "GmshUI.h"
@@ -63,6 +63,17 @@ void CancelMeshThread(void){
   
 }
 
+// Common callbacks 
+
+void cancel_cb(CALLBACK_ARGS){
+  ((Fl_Window*)data)->hide();
+}
+
+void ok_cb(CALLBACK_ARGS){
+  Init();
+  Draw();
+}
+
 // Graphical window 
 
 void status_xyz1p_cb(CALLBACK_ARGS){
@@ -157,6 +168,68 @@ void file_save_as_cb(CALLBACK_ARGS) {
   char *newfile;
   newfile = fl_file_chooser("Save File", "*.{geo,pos,msh}", NULL);
   void CreateFile (char *name, int format) ;
+
+  /*
+
+  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;
+    CTX.print.gif_dither = 0;
+    CTX.print.gif_transparent = 0; 
+    break;
+  case OPTIONS_SAVE_GIF_DITHERED : 
+    CTX.print.format = FORMAT_GIF;
+    CTX.print.gif_dither = 1; 
+    CTX.print.gif_transparent = 0; 
+    break;
+  case OPTIONS_SAVE_GIF_TRANSPARENT :
+    CTX.print.format = FORMAT_GIF;
+    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); 
 }
@@ -166,7 +239,7 @@ static int RELOAD_ALL_VIEWS = 0 ;
 void file_reload_all_views_cb(CALLBACK_ARGS) {
   if(!Post_ViewList) return;
   RELOAD_ALL_VIEWS = 1;
-  for(int i = 1 ; i<=List_Nbr(Post_ViewList) ; i++)
+  for(int i = 0 ; i<List_Nbr(Post_ViewList) ; i++)
     view_reload_cb(NULL, (void *)i);
   RELOAD_ALL_VIEWS = 0;
   Init();
@@ -179,7 +252,7 @@ void file_remove_all_views_cb(CALLBACK_ARGS) {
   if(!Post_ViewList) return;
   REMOVE_ALL_VIEWS = 1;
   while(List_Nbr(Post_ViewList))
-    view_remove_cb(NULL, (void*)1);
+    view_remove_cb(NULL, (void*)0);
   REMOVE_ALL_VIEWS = 0;
   Init();
   Draw();
@@ -189,20 +262,63 @@ void file_quit_cb(CALLBACK_ARGS) {
   exit(0);
 }
 
-// Option Menu
+// Option General Menu
 
 void opt_general_cb(CALLBACK_ARGS) {
   WID->opt_general();
 }
+void opt_general_moving_axes_cb(CALLBACK_ARGS){
+  CTX.axes = !CTX.axes ;
+}
+void opt_general_small_axes_cb(CALLBACK_ARGS){
+  CTX.small_axes = !CTX.small_axes ;
+}
+void opt_general_fast_redraw_cb(CALLBACK_ARGS){
+  CTX.fast = !CTX.fast ;
+}
+void opt_general_display_lists_cb(CALLBACK_ARGS){
+  CTX.display_lists = !CTX.display_lists ;
+}
+void opt_general_alpha_blending_cb(CALLBACK_ARGS){
+  CTX.alpha = !CTX.alpha ;
+}
+void opt_general_trackball_cb(CALLBACK_ARGS){
+  CTX.useTrackball = !CTX.useTrackball ;
+}
+void opt_general_orthographic_cb(CALLBACK_ARGS){
+  if((int)data) CTX.ortho = 1;
+  else CTX.ortho = 0;
+}
+void opt_general_color_cb(CALLBACK_ARGS){
+  Init_Colors((int)((Fl_Value_Input*)w)->value()-1);
+}
+void opt_general_shininess_cb(CALLBACK_ARGS){
+  CTX.shine = ((Fl_Value_Input*)w)->value();
+}
+void opt_general_light_cb(CALLBACK_ARGS){
+  CTX.light_position[0][(int)data] = ((Fl_Value_Input*)w)->value();
+}
+
+// Option Geometry Menu
+
 void opt_geometry_cb(CALLBACK_ARGS) {
   WID->opt_geometry();
 }
+
+// Option Mesh Menu
+
 void opt_mesh_cb(CALLBACK_ARGS) {
   WID->opt_mesh();
 }
+
+// Option Post Menu
+
 void opt_post_cb(CALLBACK_ARGS) {
   WID->opt_post();
 }
+
+// Option Statistics Menu
+
 void opt_stat_cb(CALLBACK_ARGS) {
   WID->opt_stat();
 }
diff --git a/Fltk/Callbacks.h b/Fltk/Callbacks.h
index dab7872741..9875a9bf6f 100644
--- a/Fltk/Callbacks.h
+++ b/Fltk/Callbacks.h
@@ -3,6 +3,11 @@
 
 #define CALLBACK_ARGS   Fl_Widget* w, void* data
 
+// Common callbacks
+
+void cancel_cb(CALLBACK_ARGS) ;
+void ok_cb(CALLBACK_ARGS) ;
+
 // Graphical window
 
 void status_xyz1p_cb(CALLBACK_ARGS) ;
@@ -20,12 +25,34 @@ void file_reload_all_views_cb(CALLBACK_ARGS) ;
 void file_remove_all_views_cb(CALLBACK_ARGS) ;
 void file_quit_cb(CALLBACK_ARGS) ;
 
-// Option Menu
+// Option General Menu
 
 void opt_general_cb(CALLBACK_ARGS) ;
+void opt_general_moving_axes_cb(CALLBACK_ARGS) ;
+void opt_general_small_axes_cb(CALLBACK_ARGS) ;
+void opt_general_fast_redraw_cb(CALLBACK_ARGS) ;
+void opt_general_display_lists_cb(CALLBACK_ARGS) ;
+void opt_general_alpha_blending_cb(CALLBACK_ARGS) ;
+void opt_general_trackball_cb(CALLBACK_ARGS) ;
+void opt_general_orthographic_cb(CALLBACK_ARGS) ;
+void opt_general_color_cb(CALLBACK_ARGS) ;
+void opt_general_shininess_cb(CALLBACK_ARGS) ;
+void opt_general_light_cb(CALLBACK_ARGS) ;
+
+// Option Geometry Menu
+
 void opt_geometry_cb(CALLBACK_ARGS) ;
+
+// Option Mesh Menu
+
 void opt_mesh_cb(CALLBACK_ARGS) ;
+
+// Option Post Menu
+
 void opt_post_cb(CALLBACK_ARGS) ;
+
+// Option Statistics Menu
+
 void opt_stat_cb(CALLBACK_ARGS) ;
 
 // Help Menu
diff --git a/Fltk/GUI.cpp b/Fltk/GUI.cpp
index 09b96dd415..c2af0ccac2 100644
--- a/Fltk/GUI.cpp
+++ b/Fltk/GUI.cpp
@@ -546,11 +546,23 @@ void GUI::opt_general(){
 	Fl_Group* o = new Fl_Group(WB, WB+BH, width-2*WB, height-3*WB-2*BH, "Miscellaneous");
 	o->labelsize(CTX.fontsize);
         gen_butt[0] = new Fl_Check_Button(2*WB, 2*WB+BH, 150, BH, "Show moving axes");
+	gen_butt[0]->callback(opt_general_moving_axes_cb);
+	gen_butt[0]->value(CTX.axes);
         gen_butt[1] = new Fl_Check_Button(2*WB, 2*WB+2*BH, 150, BH, "Show small axes");
+	gen_butt[1]->callback(opt_general_small_axes_cb);
+	gen_butt[1]->value(CTX.small_axes);
         gen_butt[2] = new Fl_Check_Button(2*WB, 2*WB+3*BH, 150, BH, "Enable fast redraw");
+	gen_butt[2]->callback(opt_general_fast_redraw_cb);
+	gen_butt[2]->value(CTX.fast);
         gen_butt[3] = new Fl_Check_Button(2*WB, 2*WB+4*BH, 150, BH, "Use Display lists");
+	gen_butt[3]->callback(opt_general_display_lists_cb);
+	gen_butt[3]->value(CTX.display_lists);
         gen_butt[4] = new Fl_Check_Button(2*WB, 2*WB+5*BH, 150, BH, "Enable alpha blending");
+	gen_butt[4]->callback(opt_general_alpha_blending_cb);
+	gen_butt[4]->value(CTX.alpha);
         gen_butt[5] = new Fl_Check_Button(2*WB, 2*WB+6*BH, 150, BH, "Trackball rotation mode");
+	gen_butt[5]->callback(opt_general_trackball_cb);
+	gen_butt[5]->value(CTX.useTrackball);
 	for(int i=0 ; i<6 ; i++){
 	  gen_butt[i]->type(FL_TOGGLE_BUTTON);
 	  gen_butt[i]->down_box(FL_DOWN_BOX);
@@ -564,7 +576,11 @@ void GUI::opt_general(){
 	o->labelsize(CTX.fontsize);
         o->hide();
         gen_butt[6] = new Fl_Check_Button(2*WB, 2*WB+BH, 150, BH, "Orthographic");
+	gen_butt[6]->callback(opt_general_orthographic_cb, (void*)1);
+	gen_butt[6]->value(CTX.ortho);
         gen_butt[7] = new Fl_Check_Button(2*WB, 2*WB+2*BH, 150, BH, "Perspective");
+	gen_butt[7]->callback(opt_general_orthographic_cb, (void*)0);
+	gen_butt[7]->value(!CTX.ortho);
 	for(int i=6 ; i<8 ; i++){
 	  gen_butt[i]->type(FL_RADIO_BUTTON);
 	  gen_butt[i]->labelsize(CTX.fontsize);
@@ -577,15 +593,35 @@ void GUI::opt_general(){
 	o->labelsize(CTX.fontsize);
         o->hide();
         gen_value[0] = new Fl_Value_Input(2*WB, 2*WB+BH, 100, BH, "Color Scheme");
-	gen_value[0]->minimum(1); gen_value[0]->maximum(3); gen_value[0]->step(1);
+	gen_value[0]->minimum(1); 
+	gen_value[0]->maximum(3); 
+	gen_value[0]->step(1);
+	gen_value[0]->value(0);
+	gen_value[0]->callback(opt_general_color_cb);
 	gen_value[1] = new Fl_Value_Input(2*WB, 2*WB+2*BH, 100, BH, "Shininess");
-	gen_value[1]->minimum(0); gen_value[1]->maximum(100); gen_value[1]->step(1);
+	gen_value[1]->minimum(0); 
+	gen_value[1]->maximum(10);
+	gen_value[1]->step(0.1);
+	gen_value[1]->value(CTX.shine);
+	gen_value[1]->callback(opt_general_shininess_cb);
         gen_value[2] = new Fl_Value_Input(2*WB, 2*WB+3*BH, 100, BH, "Light Position X");
-	gen_value[2]->minimum(0); gen_value[2]->maximum(100); gen_value[2]->step(1);
+	gen_value[2]->minimum(-1); 
+	gen_value[2]->maximum(1);
+	gen_value[2]->step(0.01);
+	gen_value[2]->value(CTX.light_position[0][0]);
+	gen_value[2]->callback(opt_general_light_cb, (void*)0);
         gen_value[3] = new Fl_Value_Input(2*WB, 2*WB+4*BH, 100, BH, "Light Position Y");
-	gen_value[3]->minimum(0); gen_value[3]->maximum(100); gen_value[3]->step(1);
+	gen_value[3]->minimum(-1); 
+	gen_value[3]->maximum(1); 
+	gen_value[3]->step(0.01);
+	gen_value[3]->value(CTX.light_position[0][1]);
+	gen_value[3]->callback(opt_general_light_cb, (void*)1);
         gen_value[4] = new Fl_Value_Input(2*WB, 2*WB+5*BH, 100, BH, "Light Position Z");
-	gen_value[4]->minimum(0); gen_value[4]->maximum(100); gen_value[4]->step(1);
+	gen_value[4]->minimum(-1); 
+	gen_value[4]->maximum(1); 
+	gen_value[4]->step(0.01);
+	gen_value[4]->value(CTX.light_position[0][2]);
+	gen_value[4]->callback(opt_general_light_cb, (void*)2);
 	for(int i=0 ; i<5 ; i++){
 	  gen_value[i]->labelsize(CTX.fontsize);
 	  gen_value[i]->type(FL_HORIZONTAL);
@@ -600,10 +636,12 @@ void GUI::opt_general(){
     { 
       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*)gen_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);
     }
 
     gen_window->end();
@@ -670,10 +708,12 @@ void GUI::opt_geometry(){
     { 
       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*)geo_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);
     }
 
     geo_window->end();
@@ -784,10 +824,12 @@ void GUI::opt_mesh(){
     { 
       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*)mesh_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);
     }
 
     mesh_window->end();
@@ -851,10 +893,12 @@ void GUI::opt_post(){
     { 
       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*)post_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);
     }
 
     post_window->end();
@@ -937,10 +981,12 @@ void GUI::opt_stat(){
     { 
       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*)stat_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);
     }
 
     stat_window->end();
@@ -982,8 +1028,9 @@ void GUI::help_short(){
     o->end();
     
     { 
-      Fl_Return_Button* o = new Fl_Return_Button(width-60-WB, height-BH-WB, 60, BH, "OK");
+      Fl_Button* o = new Fl_Return_Button(width-60-WB, height-BH-WB, 60, BH, "cancel");
       o->labelsize(CTX.fontsize);
+      o->callback(cancel_cb, (void*)help_window);
     }
 
     help_window->resizable(o);
@@ -1032,6 +1079,7 @@ void GUI::help_about(){
     o2->labelsize(CTX.fontsize);
     o2->labelfont(FL_COURIER);
     o2->align(FL_ALIGN_LEFT|FL_ALIGN_INSIDE);
+    o2->callback(cancel_cb, (void*)about_window);
 
     about_window->end();
     about_window->show();
-- 
GitLab