From 3f43e86d74a90c7d9ab2ca7adeb1894d53e642b5 Mon Sep 17 00:00:00 2001 From: Christophe Geuzaine <cgeuzaine@ulg.ac.be> Date: Tue, 9 Jan 2001 17:20:47 +0000 Subject: [PATCH] *** empty log message *** --- Fltk/GUI.cpp | 205 ++++++++++++++++++++++++++++----------------------- Fltk/GUI.h | 1 + 2 files changed, 112 insertions(+), 94 deletions(-) diff --git a/Fltk/GUI.cpp b/Fltk/GUI.cpp index 93cc1d807a..a1385face2 100644 --- a/Fltk/GUI.cpp +++ b/Fltk/GUI.cpp @@ -236,8 +236,9 @@ Context_Item menu_post[] = GUI::GUI() { int i, x, y; - BH = 2*CTX.fontsize+2; - WB = CTX.fontsize-6; + BH = 2*CTX.fontsize+2; // button height + WB = CTX.fontsize-6; // window border width + IW = 100; // input field width if(strlen(CTX.display)) Fl::display(CTX.display); @@ -292,7 +293,7 @@ GUI::GUI() { m_push_butt[i] = new Fl_Button(0,y+i*BH,width,BH); m_push_butt[i]->labelsize(CTX.fontsize); m_push_butt[i]->hide(); - m_toggle_butt[i] = new Fl_Light_Button(0,y+i*BH,width,BH,"test"); + m_toggle_butt[i] = new Fl_Light_Button(0,y+i*BH,width,BH); m_toggle_butt[i]->labelsize(CTX.fontsize); m_toggle_butt[i]->callback(view_toggle_cb, (void*)i); m_toggle_butt[i]->hide(); @@ -303,8 +304,8 @@ GUI::GUI() { m_popup_butt[i]->add("Remove", 0, (Fl_Callback *)view_remove_cb, (void*)i, 0); m_popup_butt[i]->add("Duplicate", 0, - (Fl_Callback *)view_duplicate_cb, (void*)i, 0); - m_popup_butt[i]->add("Lightning", 0, + (Fl_Callback *)view_duplicate_cb, (void*)i, FL_MENU_DIVIDER) ; + m_popup_butt[i]->add("Lighting", 0, (Fl_Callback *)view_lighting_cb, (void*)i, 0); m_popup_butt[i]->add("Show Elements", 0, (Fl_Callback *)view_elements_cb, (void*)i, 0); @@ -346,13 +347,13 @@ GUI::GUI() { g_status_butt[4] = new Fl_Button(x,502,15,16,"?"); x+=15; g_status_butt[4]->callback(status_xyz1p_cb, (void*)4); - g_status_butt[5] = new Fl_Button(x,502,15,16,">>"); x+=15; + g_status_butt[5] = new Fl_Button(x,502,15,16); x+=15; g_status_butt[5]->callback(status_play_cb); start_bmp = new Fl_Bitmap(start_bits,start_width,start_height); start_bmp->label(g_status_butt[5]); stop_bmp = new Fl_Bitmap(stop_bits,stop_width,stop_height); - g_status_butt[6] = new Fl_Button(x,502,15,16,"0"); x+=15; + g_status_butt[6] = new Fl_Button(x,502,15,16); x+=15; g_status_butt[6]->callback(status_cancel_cb); abort_bmp = new Fl_Bitmap(abort_bits,abort_width,abort_height); abort_bmp->label(g_status_butt[6]); @@ -562,6 +563,7 @@ void GUI::set_context(Context_Item *menu_asked, int flag){ m_push_butt[i]->hide(); m_toggle_butt[i]->show(); m_toggle_butt[i]->value(v->Visible); + m_toggle_butt[i]->label(v->Name); m_popup_butt[i]->show(); // v->NbTimeStep>1 : sensitive timestep // v->ScalarOnly : sensitive vector, apply bgmesh @@ -618,7 +620,7 @@ void GUI::create_general_options_window(){ { 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, "Miscellaneous"); + Fl_Group* o = new Fl_Group(WB, WB+BH, width-2*WB, height-3*WB-2*BH, "Display"); 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); @@ -629,13 +631,13 @@ void GUI::create_general_options_window(){ 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] = 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] = new Fl_Check_Button(2*WB, 2*WB+6*BH, 150, BH, "Use trackball rotation mode"); gen_butt[5]->callback(opt_general_trackball_cb); gen_butt[5]->value(CTX.useTrackball); for(int i=0 ; i<6 ; i++){ @@ -667,31 +669,31 @@ void GUI::create_general_options_window(){ Fl_Group* o = new Fl_Group(WB, WB+BH, width-2*WB, height-3*WB-2*BH, "Light and color"); 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] = new Fl_Value_Input(2*WB, 2*WB+BH, IW, BH, "Predefined color scheme"); 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] = new Fl_Value_Input(2*WB, 2*WB+2*BH, IW, BH, "Material shininess"); 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] = new Fl_Value_Input(2*WB, 2*WB+3*BH, IW, BH, "Light position X"); 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] = new Fl_Value_Input(2*WB, 2*WB+4*BH, IW, BH, "Light position Y"); 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] = new Fl_Value_Input(2*WB, 2*WB+5*BH, IW, BH, "Light position Z"); gen_value[4]->minimum(-1); gen_value[4]->maximum(1); gen_value[4]->step(0.01); @@ -763,16 +765,16 @@ void GUI::create_geometry_options_window(){ geo_butt[3] = new Fl_Check_Button(2*WB, 2*WB+4*BH, 100, BH, "Volumes"); geo_butt[3]->callback(opt_geometry_entity_cb, (void*)3); geo_butt[3]->value(CTX.geom.volumes); - geo_butt[4] = new Fl_Check_Button(2*WB+120, 2*WB+BH, 100, BH, "Point Numbers"); + geo_butt[4] = new Fl_Check_Button(2*WB+120, 2*WB+BH, 100, BH, "Point numbers"); geo_butt[4]->callback(opt_geometry_num_cb, (void*)0); geo_butt[4]->value(CTX.geom.points_num); - geo_butt[5] = new Fl_Check_Button(2*WB+120, 2*WB+2*BH, 100, BH, "Curve Numbers"); + geo_butt[5] = new Fl_Check_Button(2*WB+120, 2*WB+2*BH, 100, BH, "Curve numbers"); geo_butt[5]->callback(opt_geometry_num_cb, (void*)1); geo_butt[5]->value(CTX.geom.lines_num); - geo_butt[6] = new Fl_Check_Button(2*WB+120, 2*WB+3*BH, 100, BH, "Surface Numbers"); + geo_butt[6] = new Fl_Check_Button(2*WB+120, 2*WB+3*BH, 100, BH, "Surface numbers"); geo_butt[6]->callback(opt_geometry_num_cb, (void*)2); geo_butt[6]->value(CTX.geom.surfaces_num); - geo_butt[7] = new Fl_Check_Button(2*WB+120, 2*WB+4*BH, 100, BH, "Volume Numbers"); + geo_butt[7] = new Fl_Check_Button(2*WB+120, 2*WB+4*BH, 100, BH, "Volume numbers"); geo_butt[7]->callback(opt_geometry_num_cb, (void*)3); geo_butt[7]->value(CTX.geom.volumes_num); for(int i=0 ; i<8 ; i++){ @@ -781,20 +783,20 @@ void GUI::create_geometry_options_window(){ geo_butt[i]->labelsize(CTX.fontsize); geo_butt[i]->selection_color(FL_YELLOW); } - geo_input = new Fl_Input(2*WB, 2*WB+5*BH, 100, BH, "Entity Number (or *)"); + geo_input = new Fl_Input(2*WB, 2*WB+5*BH, IW, BH, "Show by entity number (or *)"); geo_input->callback(opt_geometry_show_by_entity_num_cb); geo_input->labelsize(CTX.fontsize); geo_input->type(FL_HORIZONTAL); geo_input->align(FL_ALIGN_RIGHT); - geo_value[0] = new Fl_Value_Input(2*WB, 2*WB+6*BH, 100, BH, "Normals"); + geo_value[0] = new Fl_Value_Input(2*WB, 2*WB+6*BH, IW, BH, "Normals"); geo_value[0]->minimum(0); geo_value[0]->maximum(100); geo_value[0]->step(0.1); geo_value[0]->callback(opt_geometry_normals_cb); geo_value[0]->value(CTX.geom.normals); - geo_value[1] = new Fl_Value_Input(2*WB, 2*WB+7*BH, 100, BH, "Tangents"); + geo_value[1] = new Fl_Value_Input(2*WB, 2*WB+7*BH, IW, BH, "Tangents"); geo_value[1]->minimum(0); geo_value[1]->maximum(100); geo_value[1]->step(0.1); @@ -854,7 +856,7 @@ void GUI::create_mesh_options_window(){ Fl_Group* o = new Fl_Group(WB, WB+BH, width-2*WB, height-3*WB-2*BH, "Algorithm"); o->labelsize(CTX.fontsize); o->hide(); - mesh_butt[0] = new Fl_Check_Button(2*WB, 2*WB+BH, 100, BH, "Second Order"); + mesh_butt[0] = new Fl_Check_Button(2*WB, 2*WB+BH, 100, BH, "Second order elements"); mesh_butt[0]->callback(opt_mesh_degree_cb, (void*)0); mesh_butt[0]->value(CTX.mesh.degree==2); mesh_butt[1] = new Fl_Check_Button(2*WB, 2*WB+2*BH, 100, BH, "Interactive"); @@ -869,7 +871,7 @@ void GUI::create_mesh_options_window(){ mesh_butt[i]->labelsize(CTX.fontsize); mesh_butt[i]->selection_color(FL_YELLOW); } - mesh_value[0] = new Fl_Value_Input(2*WB, 2*WB+4*BH, 40, BH, "Smoothing Steps"); + mesh_value[0] = new Fl_Value_Input(2*WB, 2*WB+4*BH, IW, BH, "Number of smoothing steps"); mesh_value[0]->minimum(0); mesh_value[0]->maximum(100); mesh_value[0]->step(1); @@ -914,19 +916,19 @@ void GUI::create_mesh_options_window(){ mesh_butt[i]->labelsize(CTX.fontsize); mesh_butt[i]->selection_color(FL_YELLOW); } - mesh_input = new Fl_Input(2*WB, 2*WB+5*BH, 100, BH, "Entity Number"); + mesh_input = new Fl_Input(2*WB, 2*WB+5*BH, IW, BH, "Show by entity Number (or *)"); mesh_input->callback(opt_mesh_show_by_entity_num_cb); mesh_input->labelsize(CTX.fontsize); mesh_input->type(FL_HORIZONTAL); mesh_input->align(FL_ALIGN_RIGHT); - mesh_value[1] = new Fl_Value_Input(2*WB, 2*WB+6*BH, 100, BH, "Element Quality"); + mesh_value[1] = new Fl_Value_Input(2*WB, 2*WB+6*BH, IW, BH, "Show by element quality"); mesh_value[1]->minimum(0); mesh_value[1]->maximum(1); mesh_value[1]->step(0.001); mesh_value[1]->callback(opt_mesh_show_by_quality_cb); mesh_value[1]->value(CTX.mesh.limit_gamma); - mesh_value[2] = new Fl_Value_Input(2*WB, 2*WB+7*BH, 100, BH, "Normals"); + mesh_value[2] = new Fl_Value_Input(2*WB, 2*WB+7*BH, IW, BH, "Normals"); mesh_value[2]->minimum(0); mesh_value[2]->maximum(100); mesh_value[2]->step(1); @@ -958,7 +960,7 @@ void GUI::create_mesh_options_window(){ mesh_butt[i]->labelsize(CTX.fontsize); mesh_butt[i]->selection_color(FL_YELLOW); } - mesh_value[4] = new Fl_Value_Input(2*WB, 2*WB+4*BH, 40, BH, "Explode"); + mesh_value[4] = new Fl_Value_Input(2*WB, 2*WB+4*BH, IW, BH, "Explode elements"); mesh_value[4]->minimum(0); mesh_value[4]->maximum(100); mesh_value[4]->step(1); @@ -1036,7 +1038,7 @@ void GUI::create_post_options_window(){ Fl_Group* o = new Fl_Group(WB, WB+BH, width-2*WB, height-3*WB-2*BH, "Animation"); o->labelsize(CTX.fontsize); o->hide(); - post_value[0] = new Fl_Value_Input(2*WB, 2*WB+BH, 40, BH, "Animation delay"); + post_value[0] = new Fl_Value_Input(2*WB, 2*WB+BH, IW, BH, "Animation delay"); post_value[0]->minimum(0); post_value[0]->maximum(10); post_value[0]->step(0.1); @@ -1094,40 +1096,40 @@ void GUI::create_statistics_window(){ Fl_Group* o = new Fl_Group(WB, WB+BH, width-2*WB, height-3*WB-2*BH, "Geometry"); o->labelsize(CTX.fontsize); o->hide(); - stat_value[0] = new Fl_Output(110+2*WB, 2*WB+BH, 100, BH, "Number of points"); - stat_value[1] = new Fl_Output(110+2*WB, 2*WB+2*BH, 100, BH, "Number of curves"); - stat_value[2] = new Fl_Output(110+2*WB, 2*WB+3*BH, 100, BH, "Number of surfaces"); - stat_value[3] = new Fl_Output(110+2*WB, 2*WB+4*BH, 100, BH, "Number of volumes"); + stat_value[0] = new Fl_Output(110+2*WB, 2*WB+BH, IW, BH, "Number of points"); + stat_value[1] = new Fl_Output(110+2*WB, 2*WB+2*BH, IW, BH, "Number of curves"); + stat_value[2] = new Fl_Output(110+2*WB, 2*WB+3*BH, IW, BH, "Number of surfaces"); + stat_value[3] = new Fl_Output(110+2*WB, 2*WB+4*BH, IW, BH, "Number of volumes"); o->end(); } { Fl_Group* o = new Fl_Group(WB, WB+BH, width-2*WB, height-3*WB-2*BH, "Mesh"); o->labelsize(CTX.fontsize); - stat_value[4] = new Fl_Output(110+2*WB, 2*WB+BH, 100, BH, "Nodes on curves"); - stat_value[5] = new Fl_Output(110+2*WB, 2*WB+2*BH, 100, BH, "Nodes on surfaces"); - stat_value[6] = new Fl_Output(110+2*WB, 2*WB+3*BH, 100, BH, "Nodes in Volumes"); - stat_value[7] = new Fl_Output(110+2*WB, 2*WB+4*BH, 100, BH, "Triangles"); - stat_value[8] = new Fl_Output(110+2*WB, 2*WB+5*BH, 100, BH, "Quadrangles"); - stat_value[9] = new Fl_Output(110+2*WB, 2*WB+6*BH, 100, BH, "Tetrahedra"); - stat_value[10] = new Fl_Output(110+2*WB, 2*WB+7*BH, 100, BH, "Hexahedra"); - stat_value[11] = new Fl_Output(110+2*WB, 2*WB+8*BH, 100, BH, "Prisms"); - stat_value[12] = new Fl_Output(110+2*WB, 2*WB+9*BH, 100, BH, "Time for 1D mesh"); - stat_value[13] = new Fl_Output(110+2*WB, 2*WB+10*BH, 100, BH, "Time for 2D mesh"); - stat_value[14] = new Fl_Output(110+2*WB, 2*WB+11*BH, 100, BH, "Time for 3D mesh"); - stat_value[15] = new Fl_Output(110+2*WB, 2*WB+12*BH, 100, BH, "Gamma factor"); - stat_value[16] = new Fl_Output(110+2*WB, 2*WB+13*BH, 100, BH, "Eta factor"); - stat_value[17] = new Fl_Output(110+2*WB, 2*WB+14*BH, 100, BH, "Rho factor"); + stat_value[4] = new Fl_Output(110+2*WB, 2*WB+BH, IW, BH, "Nodes on curves"); + stat_value[5] = new Fl_Output(110+2*WB, 2*WB+2*BH, IW, BH, "Nodes on surfaces"); + stat_value[6] = new Fl_Output(110+2*WB, 2*WB+3*BH, IW, BH, "Nodes in volumes"); + stat_value[7] = new Fl_Output(110+2*WB, 2*WB+4*BH, IW, BH, "Triangles"); + stat_value[8] = new Fl_Output(110+2*WB, 2*WB+5*BH, IW, BH, "Quadrangles"); + stat_value[9] = new Fl_Output(110+2*WB, 2*WB+6*BH, IW, BH, "Tetrahedra"); + stat_value[10] = new Fl_Output(110+2*WB, 2*WB+7*BH, IW, BH, "Hexahedra"); + stat_value[11] = new Fl_Output(110+2*WB, 2*WB+8*BH, IW, BH, "Prisms"); + stat_value[12] = new Fl_Output(110+2*WB, 2*WB+9*BH, IW, BH, "Time for 1D mesh"); + stat_value[13] = new Fl_Output(110+2*WB, 2*WB+10*BH, IW, BH, "Time for 2D mesh"); + stat_value[14] = new Fl_Output(110+2*WB, 2*WB+11*BH, IW, BH, "Time for 3D mesh"); + stat_value[15] = new Fl_Output(110+2*WB, 2*WB+12*BH, IW, BH, "Gamma factor"); + stat_value[16] = new Fl_Output(110+2*WB, 2*WB+13*BH, IW, BH, "Eta factor"); + stat_value[17] = new Fl_Output(110+2*WB, 2*WB+14*BH, IW, BH, "Rho factor"); o->end(); } { Fl_Group* o = new Fl_Group(WB, WB+BH, width-2*WB, height-3*WB-2*BH, "Post-processing"); o->labelsize(CTX.fontsize); o->hide(); - stat_value[18] = new Fl_Output(110+2*WB, 2*WB+BH, 100, BH, "Views loaded"); - stat_value[19] = new Fl_Output(110+2*WB, 2*WB+2*BH, 100, BH, "Visible Points"); - stat_value[20] = new Fl_Output(110+2*WB, 2*WB+3*BH, 100, BH, "Visible Lines"); - stat_value[21] = new Fl_Output(110+2*WB, 2*WB+4*BH, 100, BH, "Visible Triangles"); - stat_value[22] = new Fl_Output(110+2*WB, 2*WB+5*BH, 100, BH, "Visible Tetrahedra"); + stat_value[18] = new Fl_Output(110+2*WB, 2*WB+BH, IW, BH, "Views loaded"); + stat_value[19] = new Fl_Output(110+2*WB, 2*WB+2*BH, IW, BH, "Visible Points"); + stat_value[20] = new Fl_Output(110+2*WB, 2*WB+3*BH, IW, BH, "Visible lines"); + stat_value[21] = new Fl_Output(110+2*WB, 2*WB+4*BH, IW, BH, "Visible triangles"); + stat_value[22] = new Fl_Output(110+2*WB, 2*WB+5*BH, IW, BH, "Visible tetrahedra"); o->end(); } o->end(); @@ -1267,8 +1269,8 @@ void GUI::create_view_window(){ if(!init_opt_view){ init_opt_view = 1 ; - int width = 280; - int height = 5*WB+9*BH ; + int width = 320; + int height = 5*WB+7*BH ; view_window = new Fl_Window(width,height); view_window->box(FL_THIN_UP_BOX); @@ -1289,8 +1291,8 @@ void GUI::create_view_window(){ 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"); + view_input[0] = new Fl_Input (2*WB, 2*WB+4*BH, IW, BH, "Title"); + view_input[1] = new Fl_Input (2*WB, 2*WB+5*BH, IW, BH, "Format"); for(int i=0 ; i<2 ; i++){ view_input[i]->labelsize(CTX.fontsize); view_input[i]->type(FL_HORIZONTAL); @@ -1302,64 +1304,76 @@ void GUI::create_view_window(){ { 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"); + o->hide(); + view_butt[3] = new Fl_Check_Button(2*WB, 2*WB+ BH, 100, BH, "Custom Range"); 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"); + view_value[0] = new Fl_Value_Input(2*WB, 2*WB+2*BH, IW, BH, "Min"); + view_value[1] = new Fl_Value_Input(2*WB, 2*WB+3*BH, IW, BH, "Max"); 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); + view_value[i]->align(FL_ALIGN_RIGHT); } - { - 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_butt[4] = new Fl_Check_Button(2*WB, 2*WB+4*BH, 100, BH, "Linear"); + view_butt[5] = new Fl_Check_Button(2*WB, 2*WB+5*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); } - view_value[2] = new Fl_Value_Input(2*WB, 2*WB+5*BH, 40, BH, "Intervals"); + o->end(); + } + // Intervals + { + Fl_Group* o = new Fl_Group(WB, WB+BH, width-2*WB, height-3*WB-2*BH, "Intervals"); + o->labelsize(CTX.fontsize); + view_value[2] = new Fl_Value_Input(2*WB, 2*WB+ BH, IW, BH, "Number of 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); + + view_butt[6] = new Fl_Check_Button(2*WB, 2*WB+2*BH, 100, BH, "Iso-values"); + view_butt[7] = new Fl_Check_Button(2*WB, 2*WB+3*BH, 100, BH, "Filled iso-values"); + view_butt[8] = new Fl_Check_Button(2*WB, 2*WB+4*BH, 100, BH, "Continuous map"); + view_butt[9] = new Fl_Check_Button(2*WB, 2*WB+5*BH, 100, BH, "Numeric values"); + 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(); } - // Offset and Raise + // Offset + { + 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, IW, BH, "X offset"); + view_value[4] = new Fl_Value_Input(2*WB, 2*WB+2*BH, IW, BH, "Y offset"); + view_value[5] = new Fl_Value_Input(2*WB, 2*WB+3*BH, IW, BH, "Z offset"); + 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(); + } + // Raise { - Fl_Group* o = new Fl_Group(WB, WB+BH, width-2*WB, height-3*WB-2*BH, "Offset and raise"); + 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[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"); - 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=3 ; i<9 ; i++){ + view_value[6] = new Fl_Value_Input(2*WB, 2*WB+ BH, IW, BH, "X raise"); + view_value[7] = new Fl_Value_Input(2*WB, 2*WB+2*BH, IW, BH, "Y raise"); + view_value[8] = new Fl_Value_Input(2*WB, 2*WB+3*BH, IW, BH, "Z raise"); + 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); @@ -1371,10 +1385,13 @@ void GUI::create_view_window(){ Fl_Group* o = new Fl_Group(WB, WB+BH, width-2*WB, height-3*WB-2*BH, "Time step"); o->labelsize(CTX.fontsize); o->hide(); - view_value[9] = new Fl_Value_Input(2*WB, 2*WB+ BH, 100, BH, "Time step"); + view_value[9] = new Fl_Value_Input(2*WB, 2*WB+ BH, IW, BH, "Time step number"); view_value[9]->labelsize(CTX.fontsize); view_value[9]->type(FL_HORIZONTAL); view_value[9]->align(FL_ALIGN_RIGHT); + view_value[2]->minimum(0); + view_value[2]->maximum(0); + view_value[2]->step(1); o->end(); } o->end(); diff --git a/Fltk/GUI.h b/Fltk/GUI.h index b61cc2451d..fca2ae725c 100644 --- a/Fltk/GUI.h +++ b/Fltk/GUI.h @@ -79,6 +79,7 @@ class GUI{ int BH; // generic button height int WB; // generic window border + int IW; // generic input field width int MH; // height of the unchangeable part of the menu window // All other diemnsions are automatic, or governed by CTX -- GitLab