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