diff --git a/Common/Options.cpp b/Common/Options.cpp index 7fe6ed95682de90556c6e429ec1f2304184e9d07..205da1e1327b2c6b386ad9f9681234f665101f3f 100644 --- a/Common/Options.cpp +++ b/Common/Options.cpp @@ -1,4 +1,4 @@ -// $Id: Options.cpp,v 1.70 2002-01-27 20:47:33 geuzaine Exp $ +// $Id: Options.cpp,v 1.71 2002-02-08 17:33:52 geuzaine Exp $ #include "Gmsh.h" #include "GmshUI.h" @@ -2091,8 +2091,10 @@ double opt_view_timestep(OPT_ARGS_NUM){ GET_VIEW(0.) ; if(action & GMSH_SET){ v->TimeStep = (int)val; - if(v->TimeStep > v->NbTimeStep-1 || v->TimeStep < 0) + if(v->TimeStep > v->NbTimeStep-1) v->TimeStep = 0 ; + else if(v->TimeStep < 0) + v->TimeStep = v->NbTimeStep-1; v->Changed = 1; } #ifdef _FLTK @@ -2476,7 +2478,7 @@ double opt_view_show_time(OPT_ARGS_NUM){ } #ifdef _FLTK if(WID && (action & GMSH_GUI) && (num == WID->view_number)) - WID->view_butt[50]->value(v->ShowTime); + WID->view_butt[8]->value(v->ShowTime); #endif return v->ShowTime; } diff --git a/Fltk/Callbacks.cpp b/Fltk/Callbacks.cpp index 91b71d76a8bd4da06ddebcc8b2943c489d1e60a6..1ef3d57b854af9c13b6bfb4d3d3e16c9ee9a62e1 100644 --- a/Fltk/Callbacks.cpp +++ b/Fltk/Callbacks.cpp @@ -1,4 +1,4 @@ -// $Id: Callbacks.cpp,v 1.104 2002-01-27 20:47:33 geuzaine Exp $ +// $Id: Callbacks.cpp,v 1.105 2002-02-08 17:33:52 geuzaine Exp $ #include <sys/types.h> #include <signal.h> @@ -1971,6 +1971,17 @@ void view_options_timestep_cb(CALLBACK_ARGS){ Draw(); } +void view_options_timestep_decr_cb(CALLBACK_ARGS){ + int i=(long int)data; + opt_view_timestep(i, GMSH_SET|GMSH_GUI, opt_view_timestep(i,GMSH_GET,0)-1); + Draw(); +} +void view_options_timestep_incr_cb(CALLBACK_ARGS){ + int i=(long int)data; + opt_view_timestep(i, GMSH_SET|GMSH_GUI, opt_view_timestep(i,GMSH_GET,0)+1); + Draw(); +} + void view_options_ok_cb(CALLBACK_ARGS){ int i, links, force=0; @@ -2046,8 +2057,8 @@ void view_options_ok_cb(CALLBACK_ARGS){ opt_view_auto_position(i, GMSH_SET, WID->view_butt[7]->value()); - if(force || WID->view_butt[50]->changed()) - opt_view_show_time(i, GMSH_SET, WID->view_butt[50]->value()); + if(force || WID->view_butt[8]->changed()) + opt_view_show_time(i, GMSH_SET, WID->view_butt[8]->value()); if(force || WID->view_butt[5]->changed()) opt_view_draw_strings(i, GMSH_SET, WID->view_butt[5]->value()); diff --git a/Fltk/Callbacks.h b/Fltk/Callbacks.h index 2cac29d31adf45435d9d586e1b162246015ce368..600570d4188bf8f0136a4c95269fec393d3c7daf 100644 --- a/Fltk/Callbacks.h +++ b/Fltk/Callbacks.h @@ -234,6 +234,8 @@ void view_plugin_cb(CALLBACK_ARGS) ; void view_options_plugin_cb(CALLBACK_ARGS) ; void view_options_custom_cb(CALLBACK_ARGS) ; void view_options_timestep_cb(CALLBACK_ARGS) ; +void view_options_timestep_decr_cb(CALLBACK_ARGS); +void view_options_timestep_incr_cb(CALLBACK_ARGS); void view_options_ok_cb(CALLBACK_ARGS) ; #endif diff --git a/Fltk/GUI.cpp b/Fltk/GUI.cpp index fc1c51550f2e281ffbc6ddd3d1809206a50ca392..291d3a890cc6e0a6220429b2703fb9f4a1cc7428 100644 --- a/Fltk/GUI.cpp +++ b/Fltk/GUI.cpp @@ -1,4 +1,4 @@ -// $Id: GUI.cpp,v 1.147 2002-01-27 21:24:50 geuzaine Exp $ +// $Id: GUI.cpp,v 1.148 2002-02-08 17:33:52 geuzaine Exp $ // To make the interface as visually consistent as possible, please: // - use the IW, BB, BH, BW and WB values @@ -2226,9 +2226,9 @@ void GUI::create_view_options_window(int num){ Fl_Group *o = new Fl_Group(WB, WB+BH, width-2*WB, height-3*WB-2*BH, "General"); o->labelsize(CTX.fontsize); - view_butt[1] = new Fl_Check_Button(width/2, 2*WB+1*BH, BW/2-WB, BH, "3D view"); - view_butt[2] = new Fl_Check_Button(width/2, 2*WB+2*BH, BW/2-WB, BH, "2D space table"); - view_butt[3] = new Fl_Check_Button(width/2, 2*WB+3*BH, BW/2-WB, BH, "2D time table"); + view_butt[1] = new Fl_Check_Button(2*WB, 2*WB+1*BH, BW/2-WB, BH, "3D view"); + view_butt[2] = new Fl_Check_Button(2*WB, 2*WB+2*BH, BW/2-WB, BH, "2D space table"); + view_butt[3] = new Fl_Check_Button(2*WB, 2*WB+3*BH, BW/2-WB, BH, "2D time table"); for(i=1 ; i<=3 ; i++){ view_butt[i]->type(FL_RADIO_BUTTON); view_butt[i]->down_box(RADIO_BOX); @@ -2237,30 +2237,41 @@ void GUI::create_view_options_window(int num){ view_butt[i]->callback(set_changed_cb, 0); } - view_input[0] = new Fl_Input(2*WB, 2*WB+1*BH, IW, BH, "Name"); - view_input[1] = new Fl_Input(2*WB, 2*WB+2*BH, IW, BH, "Format"); + view_input[0] = new Fl_Input(2*WB, 2*WB+4*BH, IW, BH, "Name"); + view_input[1] = new Fl_Input(2*WB, 2*WB+5*BH, IW, BH, "Format"); for(i=0 ; i<=1 ; i++){ view_input[i]->labelsize(CTX.fontsize); view_input[i]->textsize(CTX.fontsize); view_input[i]->align(FL_ALIGN_RIGHT); view_input[i]->callback(set_changed_cb, 0); } - view_butt[4] = new Fl_Check_Button(2*WB, 2*WB+3*BH, BW/2-WB, BH, "Show scale"); - view_butt[5] = new Fl_Check_Button(width/2, 2*WB+4*BH, BW/2-WB, BH, "Show annotations"); - view_butt[6] = new Fl_Check_Button(2*WB, 2*WB+4*BH, BW/2-WB, BH, "Transparent scale"); - view_butt[7] = new Fl_Check_Button(2*WB, 2*WB+5*BH, BW/2-WB, BH, "Auto position"); - for(i=4 ; i<=7 ; i++){ - view_butt[i]->type(FL_TOGGLE_BUTTON); - view_butt[i]->down_box(TOGGLE_BOX); - view_butt[i]->labelsize(CTX.fontsize); - view_butt[i]->selection_color(TOGGLE_COLOR); - view_butt[i]->callback(set_changed_cb, 0); - } - - view_value[20] = new Fl_Value_Input(2*WB, 2*WB+ 6*BH, IW, BH, "X position"); - view_value[21] = new Fl_Value_Input(2*WB, 2*WB+ 7*BH, IW, BH, "Y position"); - view_value[22] = new Fl_Value_Input(2*WB, 2*WB+ 8*BH, IW, BH, "Width"); - view_value[23] = new Fl_Value_Input(2*WB, 2*WB+ 9*BH, IW, BH, "Height"); + + int sw=(int)(1.5*CTX.fontsize); + view_butt_rep[0] = new Fl_Repeat_Button(2*WB, 2*WB+6*BH, sw, BH, "-"); + view_butt_rep[0]->labelsize(CTX.fontsize); + //no set_changed since has its own callback + view_butt_rep[1] = new Fl_Repeat_Button(2*WB+IW-sw, 2*WB+6*BH, sw, BH, "+"); + view_butt_rep[1]->labelsize(CTX.fontsize); + //no set_changed since has its own callback + view_value[50] = new Fl_Value_Input(2*WB+sw, 2*WB+6*BH, IW-2*sw, BH); + view_value[50]->labelsize(CTX.fontsize); + view_value[50]->textsize(CTX.fontsize); + view_value[50]->type(FL_HORIZONTAL); + view_value[50]->align(FL_ALIGN_RIGHT); + view_value[50]->minimum(0); + view_value[50]->maximum(0); + view_value[50]->step(1); + //no set_changed since has its own callback + Fl_Box *a = new Fl_Box(2*WB+IW, 2*WB+6*BH, IW/2, BH, "Time Step"); + a->box(FL_NO_BOX); + a->labelsize(CTX.fontsize); + a->align(FL_ALIGN_LEFT|FL_ALIGN_INSIDE); + + + view_value[20] = new Fl_Value_Input(2*WB, 2*WB+7*BH, IW/2, BH); + view_value[21] = new Fl_Value_Input(2*WB+IW/2, 2*WB+7*BH, IW/2, BH, "Position"); + view_value[22] = new Fl_Value_Input(2*WB, 2*WB+8*BH, IW/2, BH); + view_value[23] = new Fl_Value_Input(2*WB+IW/2, 2*WB+8*BH, IW/2, BH, "Size"); for(i=20 ; i<=23 ; i++){ view_value[i]->labelsize(CTX.fontsize); view_value[i]->textsize(CTX.fontsize); @@ -2268,6 +2279,21 @@ void GUI::create_view_options_window(int num){ view_value[i]->align(FL_ALIGN_RIGHT); view_value[i]->callback(set_changed_cb, 0); } + + + view_butt[8] = new Fl_Check_Button(width/2, 2*WB+1*BH, BW/2-WB, BH, "Show time"); + view_butt[5] = new Fl_Check_Button(width/2, 2*WB+2*BH, BW/2-WB, BH, "Show annotations"); + view_butt[4] = new Fl_Check_Button(width/2, 2*WB+3*BH, BW/2-WB, BH, "Show scale"); + view_butt[6] = new Fl_Check_Button(width/2, 2*WB+4*BH, BW/2-WB, BH, "Transparent scale"); + view_butt[7] = new Fl_Check_Button(width/2, 2*WB+5*BH, BW/2-WB, BH, "Auto position"); + for(i=4 ; i<=8 ; i++){ + view_butt[i]->type(FL_TOGGLE_BUTTON); + view_butt[i]->down_box(TOGGLE_BOX); + view_butt[i]->labelsize(CTX.fontsize); + view_butt[i]->selection_color(TOGGLE_COLOR); + view_butt[i]->callback(set_changed_cb, 0); + } + o->end(); } @@ -2447,31 +2473,6 @@ void GUI::create_view_options_window(int num){ } o->end(); } - // Time step - { - view_timestep = new Fl_Group(WB, WB+BH, width-2*WB, height-3*WB-2*BH, "Time step"); - view_timestep->labelsize(CTX.fontsize); - view_timestep->hide(); - - view_value[50] = new Fl_Value_Input(2*WB, 2*WB+1*BH, IW, BH, "Time step number"); - view_value[50]->labelsize(CTX.fontsize); - view_value[50]->textsize(CTX.fontsize); - view_value[50]->type(FL_HORIZONTAL); - view_value[50]->align(FL_ALIGN_RIGHT); - view_value[50]->minimum(0); - view_value[50]->maximum(0); - view_value[50]->step(1); - //no set_changed since timestep has its own callback - - view_butt[50] = new Fl_Check_Button(2*WB, 2*WB+2*BH, BW/2-WB, BH, "Display time"); - view_butt[50]->type(FL_TOGGLE_BUTTON); - view_butt[50]->down_box(TOGGLE_BOX); - view_butt[50]->labelsize(CTX.fontsize); - view_butt[50]->selection_color(TOGGLE_COLOR); - view_butt[50]->callback(set_changed_cb, 0); - - view_timestep->end(); - } // Aspect { Fl_Group *o = new Fl_Group(WB, WB+BH, width-2*WB, height-3*WB-2*BH, "Aspect"); @@ -2654,10 +2655,22 @@ void GUI::update_view_window(int num){ } // timestep - if(v->NbTimeStep==1) view_timestep->deactivate(); - else view_timestep->activate(); + if(v->NbTimeStep==1){ + view_value[50]->deactivate(); + view_butt_rep[0]->deactivate(); + view_butt_rep[1]->deactivate(); + view_butt[8]->deactivate(); + } + else{ + view_value[50]->activate(); + view_butt_rep[0]->activate(); + view_butt_rep[1]->activate(); + view_butt[8]->activate(); + } view_value[50]->callback(view_options_timestep_cb, (void*)num); view_value[50]->maximum(v->NbTimeStep-1); + view_butt_rep[0]->callback(view_options_timestep_decr_cb, (void*)num); + view_butt_rep[1]->callback(view_options_timestep_incr_cb, (void*)num); opt_view_timestep(num, GMSH_GUI, 0); opt_view_show_time(num, GMSH_GUI, 0); diff --git a/Fltk/GUI.h b/Fltk/GUI.h index ccfa3b4af6c91a836f32753c555a9d6e783e6efd..3360c63f2a9a840e7fe56908977f0c5d157e8621 100644 --- a/Fltk/GUI.h +++ b/Fltk/GUI.h @@ -12,6 +12,7 @@ #include <FL/Fl_Tabs.H> #include <FL/Fl_Button.H> #include <FL/Fl_Return_Button.H> +#include <FL/Fl_Repeat_Button.H> #include <FL/Fl_Light_Button.H> #include <FL/Fl_Menu_Button.H> #include <FL/Fl_Check_Button.H> @@ -168,11 +169,13 @@ public: // view options window int view_number ; Fl_Window *view_window ; - Fl_Group *view_3d, *view_2d, *view_range, *view_timestep, *view_vector ; + Fl_Group *view_3d, *view_2d, *view_range, *view_vector ; #define VIEW_OPT_BUTT 100 Fl_Check_Button *view_butt[VIEW_OPT_BUTT] ; Fl_Value_Input *view_value[VIEW_OPT_BUTT] ; Fl_Input *view_input[VIEW_OPT_BUTT] ; + Fl_Repeat_Button *view_butt_rep[VIEW_OPT_BUTT] ; + Colorbar_Window *view_colorbar_window ; Fl_Return_Button *view_ok ;