From 0ce7e92a70b170bc4849841574b739cf2978a540 Mon Sep 17 00:00:00 2001 From: Christophe Geuzaine <cgeuzaine@ulg.ac.be> Date: Wed, 10 Jan 2001 08:41:08 +0000 Subject: [PATCH] *** empty log message *** --- Fltk/Callbacks.cpp | 308 ++++++++++++++++---- Fltk/Callbacks.h | 180 ++++++++---- Fltk/GUI.cpp | 692 +++++++++++++++++++++++++++++++++----------- Fltk/GUI.h | 72 ++++- Geo/Geo.cpp | 20 +- Geo/Geo.h | 17 +- Motif/CbGeom.cpp | 12 +- Parser/OpenFile.cpp | 13 +- 8 files changed, 984 insertions(+), 330 deletions(-) diff --git a/Fltk/Callbacks.cpp b/Fltk/Callbacks.cpp index fa215a6781..a8dcf60bc1 100644 --- a/Fltk/Callbacks.cpp +++ b/Fltk/Callbacks.cpp @@ -1,4 +1,4 @@ -// $Id: Callbacks.cpp,v 1.6 2001-01-09 15:45:03 geuzaine Exp $ +// $Id: Callbacks.cpp,v 1.7 2001-01-10 08:41:04 geuzaine Exp $ #include "Gmsh.h" #include "GmshUI.h" @@ -67,7 +67,7 @@ void CancelMeshThread(void){ // Common callbacks void cancel_cb(CALLBACK_ARGS){ - ((Fl_Window*)data)->hide(); + if(data) ((Fl_Window*)data)->hide(); } void ok_cb(CALLBACK_ARGS){ @@ -178,6 +178,12 @@ void file_save_as_geo_cb(CALLBACK_ARGS) { CreateFile(newfile, CTX.print.format = FORMAT_GEO); } +void file_save_as_geo_options_cb(CALLBACK_ARGS) { + char *newfile; + if((newfile = fl_file_chooser("Save Options File", "*", NULL))) + Print_Context(newfile); +} + void file_save_as_msh_cb(CALLBACK_ARGS) { char *newfile; if((newfile = fl_file_chooser("Save MSH File", "*", NULL))) @@ -468,49 +474,21 @@ void geometry_physical_cb(CALLBACK_ARGS){ WID->set_context(menu_geometry_physical, 0); } void geometry_reload_cb(CALLBACK_ARGS){ - printf("reload geometry\n"); + OpenProblem(CTX.filename); + Init(); + Draw(); } void geometry_elementary_add_cb(CALLBACK_ARGS){ WID->set_context(menu_geometry_elementary_add, 0); } -void geometry_elementary_translate_cb(CALLBACK_ARGS){ - WID->set_context(menu_geometry_elementary_translate, 0); -} -void geometry_elementary_rotate_cb(CALLBACK_ARGS){ - WID->set_context(menu_geometry_elementary_rotate, 0); -} -void geometry_elementary_dilate_cb(CALLBACK_ARGS){ - WID->set_context(menu_geometry_elementary_dilate, 0); -} -void geometry_elementary_symmetry_cb(CALLBACK_ARGS){ - WID->set_context(menu_geometry_elementary_symmetry, 0); -} -void geometry_elementary_extrude_cb(CALLBACK_ARGS){ - WID->set_context(menu_geometry_elementary_extrude, 0); -} -void geometry_elementary_delete_cb(CALLBACK_ARGS){ - WID->set_context(menu_geometry_elementary_delete, 0); -} void geometry_elementary_add_new_cb(CALLBACK_ARGS){ WID->set_context(menu_geometry_elementary_add_new, 0); } -void geometry_elementary_add_translate_cb(CALLBACK_ARGS){ - WID->set_context(menu_geometry_elementary_add_translate, 0); -} -void geometry_elementary_add_rotate_cb(CALLBACK_ARGS){ - WID->set_context(menu_geometry_elementary_add_rotate, 0); -} -void geometry_elementary_add_dilate_cb(CALLBACK_ARGS){ - WID->set_context(menu_geometry_elementary_add_dilate, 0); -} -void geometry_elementary_add_symmetry_cb(CALLBACK_ARGS){ - WID->set_context(menu_geometry_elementary_add_symmetry, 0); -} void geometry_elementary_add_new_parameter_cb(CALLBACK_ARGS){ - printf("new param\n"); + WID->create_geometry_context_window(0); } void geometry_elementary_add_new_point_cb(CALLBACK_ARGS){ - printf("new point\n"); + WID->create_geometry_context_window(1); } void geometry_elementary_add_new_line_cb(CALLBACK_ARGS){ printf("new line\n"); @@ -533,87 +511,162 @@ void geometry_elementary_add_new_ruledsurface_cb(CALLBACK_ARGS){ void geometry_elementary_add_new_volume_cb(CALLBACK_ARGS){ printf("new vol\n"); } +void geometry_elementary_add_translate_cb(CALLBACK_ARGS){ + WID->set_context(menu_geometry_elementary_add_translate, 0); +} void geometry_elementary_add_translate_point_cb(CALLBACK_ARGS){ + WID->create_geometry_context_window(2); printf("translate point\n"); } void geometry_elementary_add_translate_curve_cb(CALLBACK_ARGS){ + WID->create_geometry_context_window(2); printf("translate curve\n"); } void geometry_elementary_add_translate_surface_cb(CALLBACK_ARGS){ + WID->create_geometry_context_window(2); printf("translate surface\n"); } +void geometry_elementary_add_rotate_cb(CALLBACK_ARGS){ + WID->set_context(menu_geometry_elementary_add_rotate, 0); +} void geometry_elementary_add_rotate_point_cb(CALLBACK_ARGS){ + WID->create_geometry_context_window(3); printf("rotate point\n"); } void geometry_elementary_add_rotate_curve_cb(CALLBACK_ARGS){ + WID->create_geometry_context_window(3); printf("rotate curve\n"); } void geometry_elementary_add_rotate_surface_cb(CALLBACK_ARGS){ + WID->create_geometry_context_window(3); printf("rotate surf\n"); } -void geometry_elementary_add_dilate_point_cb(CALLBACK_ARGS){ - printf("dilate point\n"); +void geometry_elementary_add_scale_cb(CALLBACK_ARGS){ + WID->set_context(menu_geometry_elementary_add_scale, 0); } -void geometry_elementary_add_dilate_curve_cb(CALLBACK_ARGS){ - printf("dilate curve\n"); +void geometry_elementary_add_scale_point_cb(CALLBACK_ARGS){ + WID->create_geometry_context_window(4); + printf("scale point\n"); } -void geometry_elementary_add_dilate_surface_cb(CALLBACK_ARGS){ - printf("dilate surface\n"); +void geometry_elementary_add_scale_curve_cb(CALLBACK_ARGS){ + WID->create_geometry_context_window(4); + printf("scale curve\n"); +} +void geometry_elementary_add_scale_surface_cb(CALLBACK_ARGS){ + WID->create_geometry_context_window(4); + printf("scale surface\n"); +} +void geometry_elementary_add_symmetry_cb(CALLBACK_ARGS){ + WID->set_context(menu_geometry_elementary_add_symmetry, 0); } void geometry_elementary_add_symmetry_point_cb(CALLBACK_ARGS){ + WID->create_geometry_context_window(5); printf("symm point\n"); } void geometry_elementary_add_symmetry_curve_cb(CALLBACK_ARGS){ + WID->create_geometry_context_window(5); printf("symm curve\n"); } void geometry_elementary_add_symmetry_surface_cb(CALLBACK_ARGS){ + WID->create_geometry_context_window(5); printf("symm surf\n"); } +void geometry_elementary_translate_cb(CALLBACK_ARGS){ + WID->set_context(menu_geometry_elementary_translate, 0); +} void geometry_elementary_translate_point_cb(CALLBACK_ARGS){ + WID->create_geometry_context_window(2); printf("translate point\n"); } void geometry_elementary_translate_curve_cb(CALLBACK_ARGS){ + WID->create_geometry_context_window(2); printf("translate curve\n"); } void geometry_elementary_translate_surface_cb(CALLBACK_ARGS){ + WID->create_geometry_context_window(2); printf("translate surf\n"); } +void geometry_elementary_rotate_cb(CALLBACK_ARGS){ + WID->set_context(menu_geometry_elementary_rotate, 0); +} void geometry_elementary_rotate_point_cb(CALLBACK_ARGS){ + WID->create_geometry_context_window(3); printf("rot point\n"); } void geometry_elementary_rotate_curve_cb(CALLBACK_ARGS){ + WID->create_geometry_context_window(3); printf("rot curve\n"); } void geometry_elementary_rotate_surface_cb(CALLBACK_ARGS){ + WID->create_geometry_context_window(3); printf("rot surf\n"); } -void geometry_elementary_dilate_point_cb(CALLBACK_ARGS){ - printf("dilate point\n"); +void geometry_elementary_scale_cb(CALLBACK_ARGS){ + WID->set_context(menu_geometry_elementary_scale, 0); +} +void geometry_elementary_scale_point_cb(CALLBACK_ARGS){ + WID->create_geometry_context_window(4); + printf("scale point\n"); +} +void geometry_elementary_scale_curve_cb(CALLBACK_ARGS){ + WID->create_geometry_context_window(4); + printf("scale curve\n"); } -void geometry_elementary_dilate_curve_cb(CALLBACK_ARGS){ - printf("dilate curve\n"); +void geometry_elementary_scale_surface_cb(CALLBACK_ARGS){ + WID->create_geometry_context_window(4); + printf("scale surf\n"); } -void geometry_elementary_dilate_surface_cb(CALLBACK_ARGS){ - printf("dilate surf\n"); +void geometry_elementary_symmetry_cb(CALLBACK_ARGS){ + WID->set_context(menu_geometry_elementary_symmetry, 0); } void geometry_elementary_symmetry_point_cb(CALLBACK_ARGS){ + WID->create_geometry_context_window(5); printf("symm point\n"); } void geometry_elementary_symmetry_curve_cb(CALLBACK_ARGS){ + WID->create_geometry_context_window(5); printf("symm curve\n"); } void geometry_elementary_symmetry_surface_cb(CALLBACK_ARGS){ + WID->create_geometry_context_window(5); printf("symm surf\n"); } -void geometry_elementary_extrude_point_cb(CALLBACK_ARGS){ +void geometry_elementary_extrude_cb(CALLBACK_ARGS){ + WID->set_context(menu_geometry_elementary_extrude, 0); +} +void geometry_elementary_extrude_translate_cb(CALLBACK_ARGS){ + WID->set_context(menu_geometry_elementary_extrude_translate, 0); +} +void geometry_elementary_extrude_translate_point_cb(CALLBACK_ARGS){ + WID->create_geometry_context_window(2); + printf("extr point\n"); +} +void geometry_elementary_extrude_translate_curve_cb(CALLBACK_ARGS){ + WID->create_geometry_context_window(2); + printf("extr curve\n"); +} +void geometry_elementary_extrude_translate_surface_cb(CALLBACK_ARGS){ + WID->create_geometry_context_window(2); + printf("extr surf\n"); +} +void geometry_elementary_extrude_rotate_cb(CALLBACK_ARGS){ + WID->set_context(menu_geometry_elementary_extrude_rotate, 0); +} +void geometry_elementary_extrude_rotate_point_cb(CALLBACK_ARGS){ + WID->create_geometry_context_window(3); printf("extr point\n"); } -void geometry_elementary_extrude_curve_cb(CALLBACK_ARGS){ +void geometry_elementary_extrude_rotate_curve_cb(CALLBACK_ARGS){ + WID->create_geometry_context_window(3); printf("extr curve\n"); } -void geometry_elementary_extrude_surface_cb(CALLBACK_ARGS){ +void geometry_elementary_extrude_rotate_surface_cb(CALLBACK_ARGS){ + WID->create_geometry_context_window(3); printf("extr surf\n"); } +void geometry_elementary_delete_cb(CALLBACK_ARGS){ + WID->set_context(menu_geometry_elementary_delete, 0); +} void geometry_elementary_delete_point_cb(CALLBACK_ARGS){ printf("del point\n"); } @@ -626,9 +679,6 @@ void geometry_elementary_delete_surface_cb(CALLBACK_ARGS){ void geometry_physical_add_cb(CALLBACK_ARGS){ WID->set_context(menu_geometry_physical_add, 0); } -void geometry_physical_delete_cb(CALLBACK_ARGS){ - WID->set_context(menu_geometry_physical_delete, 0); -} void geometry_physical_add_point_cb (CALLBACK_ARGS){ printf("phys add point\n"); } @@ -641,6 +691,9 @@ void geometry_physical_add_surface_cb (CALLBACK_ARGS){ void geometry_physical_add_volume_cb (CALLBACK_ARGS){ printf("phys add vol\n"); } +void geometry_physical_delete_cb(CALLBACK_ARGS){ + WID->set_context(menu_geometry_physical_delete, 0); +} void geometry_physical_delete_point_cb(CALLBACK_ARGS){ printf("phys delpoint\n"); } @@ -817,5 +870,152 @@ void view_applybgmesh_cb(CALLBACK_ARGS){ BGMWithView(v); } void view_options_cb(CALLBACK_ARGS){ - WID->create_view_window(); + WID->create_view_window((int)data); +} + +void view_options_show_scale_cb(CALLBACK_ARGS){ + /* + if(CTX.post.link==2){ + for(int i=0 ; i<List_Nbr(Post_ViewList) ; i++){ + + } + } + */ +} +void view_options_show_time_cb(CALLBACK_ARGS){ +} +void view_options_transparent_scale_cb(CALLBACK_ARGS){ +} +void view_options_name_cb(CALLBACK_ARGS){ +} +void view_options_format_cb(CALLBACK_ARGS){ +} +void view_options_custom_range_cb(CALLBACK_ARGS){ + /* + if((int)((Fl_Value_Input*)w)->value()){ + WID->activate_custom(0); + v->ScaleType==DRAW_POST_DEFAULT; + } + else{ + WID->activate_custom(1); + v->ScaleType==DRAW_POST_CUSTOM; + } + */ +} +void view_options_custom_min_cb(CALLBACK_ARGS){ +} +void view_options_custom_max_cb(CALLBACK_ARGS){ +} +void view_options_linear_range_cb(CALLBACK_ARGS){ +} +void view_options_logarithmic_range_cb(CALLBACK_ARGS){ +} +void view_options_nbiso_cb(CALLBACK_ARGS){ +} +void view_options_iso_cb(CALLBACK_ARGS){ +} +void view_options_fillediso_cb(CALLBACK_ARGS){ +} +void view_options_continuousiso_cb(CALLBACK_ARGS){ +} +void view_options_numericiso_cb(CALLBACK_ARGS){ +} +void view_options_xoffset_cb(CALLBACK_ARGS){ +} +void view_options_yoffset_cb(CALLBACK_ARGS){ +} +void view_options_zoffset_cb(CALLBACK_ARGS){ +} +void view_options_xraise_cb(CALLBACK_ARGS){ +} +void view_options_yraise_cb(CALLBACK_ARGS){ +} +void view_options_zraise_cb(CALLBACK_ARGS){ +} +void view_options_timestep_cb(CALLBACK_ARGS){ +} +void view_options_vector_line_cb(CALLBACK_ARGS){ +} +void view_options_vector_arrow_cb(CALLBACK_ARGS){ +} +void view_options_vector_cone_cb(CALLBACK_ARGS){ +} +void view_options_vector_displacement_cb(CALLBACK_ARGS){ +} +void view_options_vector_scale_cb(CALLBACK_ARGS){ +} +void view_options_vector_cog_cb(CALLBACK_ARGS){ +} +void view_options_vector_vertex_cb(CALLBACK_ARGS){ +} + + +// Context geometry + +void con_geometry_define_parameter_cb(CALLBACK_ARGS){ + add_param(WID->get_geometry_parameter(0), + WID->get_geometry_parameter(1), + CTX.filename); +} + +void con_geometry_define_point_cb(CALLBACK_ARGS){ + strcpy(x_text, WID->get_geometry_point(0)); + strcpy(y_text, WID->get_geometry_point(1)); + strcpy(z_text, WID->get_geometry_point(2)); + strcpy(l_text, WID->get_geometry_point(3)); + add_point(CTX.filename); + ZeroHighlight(&M); + Replot(); +} + +void con_geometry_define_translation_cb(CALLBACK_ARGS){ + strcpy(tx_text, WID->get_geometry_translation(0)); + strcpy(ty_text, WID->get_geometry_translation(1)); + strcpy(tz_text, WID->get_geometry_translation(2)); +} + +void con_geometry_define_rotation_cb(CALLBACK_ARGS){ + strcpy(px_text, WID->get_geometry_rotation(0)); + strcpy(py_text, WID->get_geometry_rotation(1)); + strcpy(pz_text, WID->get_geometry_rotation(2)); + strcpy(ax_text, WID->get_geometry_rotation(3)); + strcpy(ay_text, WID->get_geometry_rotation(4)); + strcpy(az_text, WID->get_geometry_rotation(5)); + strcpy(angle_text, WID->get_geometry_rotation(6)); +} + +void con_geometry_define_scale_cb(CALLBACK_ARGS){ + strcpy(dx_text, WID->get_geometry_scale(0)); + strcpy(dy_text, WID->get_geometry_scale(1)); + strcpy(dz_text, WID->get_geometry_scale(2)); + strcpy(df_text, WID->get_geometry_scale(3)); +} + +void con_geometry_define_symmetry_cb(CALLBACK_ARGS){ + strcpy(sa_text, WID->get_geometry_symmetry(0)); + strcpy(sb_text, WID->get_geometry_symmetry(1)); + strcpy(sc_text, WID->get_geometry_symmetry(2)); + strcpy(sd_text, WID->get_geometry_symmetry(3)); +} + + +// Context mesh + +void con_mesh_define_transfinite_line_cb(CALLBACK_ARGS){ + strcpy(trsf_pts_text, WID->get_mesh_transfinite(0)); + strcpy(trsf_type_text, WID->get_mesh_transfinite(1)); +} + +void con_mesh_define_transfinite_volume_cb(CALLBACK_ARGS){ + strcpy(trsf_vol_text, WID->get_mesh_transfinite(2)); +} + +void con_mesh_define_length_cb(CALLBACK_ARGS){ + strcpy(char_length_text, WID->get_mesh_length(0)); +} + +void con_mesh_define_attractor_cb(CALLBACK_ARGS){ + strcpy(attrx_text, WID->get_mesh_attractor(0)); + strcpy(attry_text, WID->get_mesh_attractor(1)); + strcpy(attrz_text, WID->get_mesh_attractor(2)); } diff --git a/Fltk/Callbacks.h b/Fltk/Callbacks.h index cec9712bee..0b779d30c8 100644 --- a/Fltk/Callbacks.h +++ b/Fltk/Callbacks.h @@ -22,6 +22,7 @@ void file_merge_cb(CALLBACK_ARGS) ; void file_save_cb(CALLBACK_ARGS) ; void file_save_as_auto_cb(CALLBACK_ARGS) ; void file_save_as_geo_cb(CALLBACK_ARGS) ; +void file_save_as_geo_options_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) ; @@ -99,72 +100,87 @@ void mod_post_cb(CALLBACK_ARGS) ; void mod_back_cb(CALLBACK_ARGS) ; void mod_forward_cb(CALLBACK_ARGS) ; -// Dynamic Menus +// Dynamic Geometry Menus void geometry_elementary_cb(CALLBACK_ARGS) ; +void geometry_elementary_add_cb(CALLBACK_ARGS) ; +void geometry_elementary_add_new_cb(CALLBACK_ARGS) ; +void geometry_elementary_add_new_parameter_cb(CALLBACK_ARGS) ; +void geometry_elementary_add_new_point_cb(CALLBACK_ARGS) ; +void geometry_elementary_add_new_line_cb(CALLBACK_ARGS) ; +void geometry_elementary_add_new_spline_cb(CALLBACK_ARGS) ; +void geometry_elementary_add_new_circle_cb(CALLBACK_ARGS) ; +void geometry_elementary_add_new_ellipsis_cb(CALLBACK_ARGS) ; +void geometry_elementary_add_new_planesurface_cb(CALLBACK_ARGS) ; +void geometry_elementary_add_new_ruledsurface_cb(CALLBACK_ARGS) ; +void geometry_elementary_add_new_volume_cb(CALLBACK_ARGS) ; +void geometry_elementary_add_translate_cb(CALLBACK_ARGS) ; +void geometry_elementary_add_translate_point_cb(CALLBACK_ARGS) ; +void geometry_elementary_add_translate_curve_cb(CALLBACK_ARGS) ; +void geometry_elementary_add_translate_surface_cb(CALLBACK_ARGS) ; +void geometry_elementary_add_rotate_cb(CALLBACK_ARGS) ; +void geometry_elementary_add_rotate_point_cb(CALLBACK_ARGS) ; +void geometry_elementary_add_rotate_curve_cb(CALLBACK_ARGS) ; +void geometry_elementary_add_rotate_surface_cb(CALLBACK_ARGS) ; +void geometry_elementary_add_scale_cb(CALLBACK_ARGS) ; +void geometry_elementary_add_scale_point_cb(CALLBACK_ARGS) ; +void geometry_elementary_add_scale_curve_cb(CALLBACK_ARGS) ; +void geometry_elementary_add_scale_surface_cb(CALLBACK_ARGS) ; +void geometry_elementary_add_symmetry_cb(CALLBACK_ARGS) ; +void geometry_elementary_add_symmetry_point_cb(CALLBACK_ARGS) ; +void geometry_elementary_add_symmetry_curve_cb(CALLBACK_ARGS) ; +void geometry_elementary_add_symmetry_surface_cb(CALLBACK_ARGS) ; +void geometry_elementary_translate_cb(CALLBACK_ARGS) ; +void geometry_elementary_translate_point_cb(CALLBACK_ARGS) ; +void geometry_elementary_translate_curve_cb(CALLBACK_ARGS) ; +void geometry_elementary_translate_surface_cb(CALLBACK_ARGS) ; +void geometry_elementary_rotate_cb(CALLBACK_ARGS) ; +void geometry_elementary_rotate_point_cb(CALLBACK_ARGS) ; +void geometry_elementary_rotate_curve_cb(CALLBACK_ARGS) ; +void geometry_elementary_rotate_surface_cb(CALLBACK_ARGS) ; +void geometry_elementary_scale_cb(CALLBACK_ARGS) ; +void geometry_elementary_scale_point_cb(CALLBACK_ARGS) ; +void geometry_elementary_scale_curve_cb(CALLBACK_ARGS) ; +void geometry_elementary_scale_surface_cb(CALLBACK_ARGS) ; +void geometry_elementary_symmetry_cb(CALLBACK_ARGS) ; +void geometry_elementary_symmetry_point_cb(CALLBACK_ARGS) ; +void geometry_elementary_symmetry_curve_cb(CALLBACK_ARGS) ; +void geometry_elementary_symmetry_surface_cb(CALLBACK_ARGS) ; +void geometry_elementary_extrude_cb(CALLBACK_ARGS) ; +void geometry_elementary_extrude_translate_cb(CALLBACK_ARGS) ; +void geometry_elementary_extrude_translate_point_cb(CALLBACK_ARGS) ; +void geometry_elementary_extrude_translate_curve_cb(CALLBACK_ARGS) ; +void geometry_elementary_extrude_translate_surface_cb(CALLBACK_ARGS) ; +void geometry_elementary_extrude_rotate_cb(CALLBACK_ARGS) ; +void geometry_elementary_extrude_rotate_point_cb(CALLBACK_ARGS) ; +void geometry_elementary_extrude_rotate_curve_cb(CALLBACK_ARGS) ; +void geometry_elementary_extrude_rotate_surface_cb(CALLBACK_ARGS) ; +void geometry_elementary_delete_cb(CALLBACK_ARGS) ; +void geometry_elementary_delete_point_cb(CALLBACK_ARGS) ; +void geometry_elementary_delete_curve_cb(CALLBACK_ARGS) ; +void geometry_elementary_delete_surface_cb(CALLBACK_ARGS) ; void geometry_physical_cb(CALLBACK_ARGS) ; +void geometry_physical_add_cb(CALLBACK_ARGS) ; +void geometry_physical_add_point_cb (CALLBACK_ARGS) ; +void geometry_physical_add_curve_cb (CALLBACK_ARGS) ; +void geometry_physical_add_surface_cb (CALLBACK_ARGS) ; +void geometry_physical_add_volume_cb (CALLBACK_ARGS) ; +void geometry_physical_delete_cb(CALLBACK_ARGS) ; +void geometry_physical_delete_point_cb(CALLBACK_ARGS) ; +void geometry_physical_delete_curve_cb(CALLBACK_ARGS) ; +void geometry_physical_delete_surface_cb(CALLBACK_ARGS) ; +void geometry_physical_delete_volume_cb(CALLBACK_ARGS) ; void geometry_reload_cb(CALLBACK_ARGS) ; -void geometry_elementary_add_cb(CALLBACK_ARGS) ; -void geometry_elementary_translate_cb(CALLBACK_ARGS) ; -void geometry_elementary_rotate_cb(CALLBACK_ARGS) ; -void geometry_elementary_dilate_cb(CALLBACK_ARGS) ; -void geometry_elementary_symmetry_cb(CALLBACK_ARGS) ; -void geometry_elementary_extrude_cb(CALLBACK_ARGS) ; -void geometry_elementary_delete_cb(CALLBACK_ARGS) ; -void geometry_elementary_add_new_cb(CALLBACK_ARGS) ; -void geometry_elementary_add_translate_cb(CALLBACK_ARGS) ; -void geometry_elementary_add_rotate_cb(CALLBACK_ARGS) ; -void geometry_elementary_add_dilate_cb(CALLBACK_ARGS) ; -void geometry_elementary_add_symmetry_cb(CALLBACK_ARGS) ; -void geometry_elementary_add_new_parameter_cb(CALLBACK_ARGS) ; -void geometry_elementary_add_new_point_cb(CALLBACK_ARGS) ; -void geometry_elementary_add_new_line_cb(CALLBACK_ARGS) ; -void geometry_elementary_add_new_spline_cb(CALLBACK_ARGS) ; -void geometry_elementary_add_new_circle_cb(CALLBACK_ARGS) ; -void geometry_elementary_add_new_ellipsis_cb(CALLBACK_ARGS) ; -void geometry_elementary_add_new_planesurface_cb(CALLBACK_ARGS) ; -void geometry_elementary_add_new_ruledsurface_cb(CALLBACK_ARGS) ; -void geometry_elementary_add_new_volume_cb(CALLBACK_ARGS) ; -void geometry_elementary_add_translate_point_cb(CALLBACK_ARGS) ; -void geometry_elementary_add_translate_curve_cb(CALLBACK_ARGS) ; -void geometry_elementary_add_translate_surface_cb(CALLBACK_ARGS) ; -void geometry_elementary_add_rotate_point_cb(CALLBACK_ARGS) ; -void geometry_elementary_add_rotate_curve_cb(CALLBACK_ARGS) ; -void geometry_elementary_add_rotate_surface_cb(CALLBACK_ARGS) ; -void geometry_elementary_add_dilate_point_cb(CALLBACK_ARGS) ; -void geometry_elementary_add_dilate_curve_cb(CALLBACK_ARGS) ; -void geometry_elementary_add_dilate_surface_cb(CALLBACK_ARGS) ; -void geometry_elementary_add_symmetry_point_cb(CALLBACK_ARGS) ; -void geometry_elementary_add_symmetry_curve_cb(CALLBACK_ARGS) ; -void geometry_elementary_add_symmetry_surface_cb(CALLBACK_ARGS) ; -void geometry_elementary_translate_point_cb(CALLBACK_ARGS) ; -void geometry_elementary_translate_curve_cb(CALLBACK_ARGS) ; -void geometry_elementary_translate_surface_cb(CALLBACK_ARGS) ; -void geometry_elementary_rotate_point_cb(CALLBACK_ARGS) ; -void geometry_elementary_rotate_curve_cb(CALLBACK_ARGS) ; -void geometry_elementary_rotate_surface_cb(CALLBACK_ARGS) ; -void geometry_elementary_dilate_point_cb(CALLBACK_ARGS) ; -void geometry_elementary_dilate_curve_cb(CALLBACK_ARGS) ; -void geometry_elementary_dilate_surface_cb(CALLBACK_ARGS) ; -void geometry_elementary_symmetry_point_cb(CALLBACK_ARGS) ; -void geometry_elementary_symmetry_curve_cb(CALLBACK_ARGS) ; -void geometry_elementary_symmetry_surface_cb(CALLBACK_ARGS) ; -void geometry_elementary_extrude_point_cb(CALLBACK_ARGS) ; -void geometry_elementary_extrude_curve_cb(CALLBACK_ARGS) ; -void geometry_elementary_extrude_surface_cb(CALLBACK_ARGS) ; -void geometry_elementary_delete_point_cb(CALLBACK_ARGS) ; -void geometry_elementary_delete_curve_cb(CALLBACK_ARGS) ; -void geometry_elementary_delete_surface_cb(CALLBACK_ARGS) ; -void geometry_physical_add_cb(CALLBACK_ARGS) ; -void geometry_physical_delete_cb(CALLBACK_ARGS) ; -void geometry_physical_add_point_cb (CALLBACK_ARGS) ; -void geometry_physical_add_curve_cb (CALLBACK_ARGS) ; -void geometry_physical_add_surface_cb (CALLBACK_ARGS) ; -void geometry_physical_add_volume_cb (CALLBACK_ARGS) ; -void geometry_physical_delete_point_cb(CALLBACK_ARGS) ; -void geometry_physical_delete_curve_cb(CALLBACK_ARGS) ; -void geometry_physical_delete_surface_cb(CALLBACK_ARGS) ; -void geometry_physical_delete_volume_cb(CALLBACK_ARGS) ; + +void con_geometry_define_parameter_cb(CALLBACK_ARGS) ; +void con_geometry_define_point_cb(CALLBACK_ARGS) ; +void con_geometry_define_translation_cb(CALLBACK_ARGS) ; +void con_geometry_define_rotation_cb(CALLBACK_ARGS) ; +void con_geometry_define_scale_cb(CALLBACK_ARGS) ; +void con_geometry_define_symmetry_cb(CALLBACK_ARGS) ; + +// Dynamic Mesh Menus + void mesh_define_cb(CALLBACK_ARGS) ; void mesh_1d_cb(CALLBACK_ARGS) ; void mesh_2d_cb(CALLBACK_ARGS) ; @@ -175,6 +191,14 @@ void mesh_define_transfinite_cb (CALLBACK_ARGS) ; void mesh_define_transfinite_line_cb(CALLBACK_ARGS) ; void mesh_define_transfinite_surface_cb(CALLBACK_ARGS) ; void mesh_define_transfinite_volume_cb(CALLBACK_ARGS) ; + +void con_mesh_define_transfinite_line_cb(CALLBACK_ARGS) ; +void con_mesh_define_transfinite_volume_cb(CALLBACK_ARGS) ; +void con_mesh_define_length_cb(CALLBACK_ARGS) ; +void con_mesh_define_attractor_cb(CALLBACK_ARGS) ; + +// Dynamic post menus + void view_reload_cb(CALLBACK_ARGS) ; void view_toggle_cb(CALLBACK_ARGS) ; void view_remove_cb(CALLBACK_ARGS) ; @@ -183,7 +207,35 @@ void view_lighting_cb(CALLBACK_ARGS) ; void view_elements_cb(CALLBACK_ARGS) ; void view_applybgmesh_cb(CALLBACK_ARGS) ; void view_options_cb(CALLBACK_ARGS) ; - - +void view_options_show_scale_cb(CALLBACK_ARGS) ; +void view_options_show_time_cb(CALLBACK_ARGS) ; +void view_options_transparent_scale_cb(CALLBACK_ARGS) ; +void view_options_name_cb(CALLBACK_ARGS) ; +void view_options_format_cb(CALLBACK_ARGS) ; +void view_options_custom_range_cb(CALLBACK_ARGS) ; +void view_options_custom_min_cb(CALLBACK_ARGS) ; +void view_options_custom_max_cb(CALLBACK_ARGS) ; +void view_options_linear_range_cb(CALLBACK_ARGS) ; +void view_options_logarithmic_range_cb(CALLBACK_ARGS) ; +void view_options_nbiso_cb(CALLBACK_ARGS) ; +void view_options_iso_cb(CALLBACK_ARGS) ; +void view_options_fillediso_cb(CALLBACK_ARGS) ; +void view_options_continuousiso_cb(CALLBACK_ARGS) ; +void view_options_numericiso_cb(CALLBACK_ARGS) ; +void view_options_xoffset_cb(CALLBACK_ARGS) ; +void view_options_yoffset_cb(CALLBACK_ARGS) ; +void view_options_zoffset_cb(CALLBACK_ARGS) ; +void view_options_xraise_cb(CALLBACK_ARGS) ; +void view_options_yraise_cb(CALLBACK_ARGS) ; +void view_options_zraise_cb(CALLBACK_ARGS) ; +void view_options_timestep_cb(CALLBACK_ARGS) ; +void view_options_vector_line_cb(CALLBACK_ARGS) ; +void view_options_vector_arrow_cb(CALLBACK_ARGS) ; +void view_options_vector_cone_cb(CALLBACK_ARGS) ; +void view_options_vector_displacement_cb(CALLBACK_ARGS) ; +void view_options_vector_scale_cb(CALLBACK_ARGS) ; +void view_options_vector_cog_cb(CALLBACK_ARGS) ; +void view_options_vector_vertex_cb(CALLBACK_ARGS) ; #endif + diff --git a/Fltk/GUI.cpp b/Fltk/GUI.cpp index 2c3d165f15..622fdc6f50 100644 --- a/Fltk/GUI.cpp +++ b/Fltk/GUI.cpp @@ -29,6 +29,7 @@ Fl_Menu_Item m_menubar_table[] = { {"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}, + {"GEO options...", 0, (Fl_Callback *)file_save_as_geo_options_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}, @@ -80,7 +81,7 @@ Context_Item menu_geometry[] = { "Add", (Fl_Callback *)geometry_elementary_add_cb } , { "Translate", (Fl_Callback *)geometry_elementary_translate_cb } , { "Rotate", (Fl_Callback *)geometry_elementary_rotate_cb } , - { "Dilate", (Fl_Callback *)geometry_elementary_dilate_cb } , + { "Scale", (Fl_Callback *)geometry_elementary_scale_cb } , { "Symmetry", (Fl_Callback *)geometry_elementary_symmetry_cb } , { "Extrude", (Fl_Callback *)geometry_elementary_extrude_cb } , { "Delete", (Fl_Callback *)geometry_elementary_delete_cb } , @@ -91,7 +92,7 @@ Context_Item menu_geometry[] = { "New", (Fl_Callback *)geometry_elementary_add_new_cb } , { "Translate", (Fl_Callback *)geometry_elementary_add_translate_cb } , { "Rotate", (Fl_Callback *)geometry_elementary_add_rotate_cb } , - { "Dilate", (Fl_Callback *)geometry_elementary_add_dilate_cb } , + { "Scale", (Fl_Callback *)geometry_elementary_add_scale_cb } , { "Symmetry", (Fl_Callback *)geometry_elementary_add_symmetry_cb } , { NULL } }; @@ -122,11 +123,11 @@ Context_Item menu_geometry[] = { "Surface", (Fl_Callback *)geometry_elementary_add_rotate_surface_cb } , { NULL } }; - Context_Item menu_geometry_elementary_add_dilate[] = + Context_Item menu_geometry_elementary_add_scale[] = { { "0", NULL } , - { "Point", (Fl_Callback *)geometry_elementary_add_dilate_point_cb } , - { "Curve", (Fl_Callback *)geometry_elementary_add_dilate_curve_cb } , - { "Surface", (Fl_Callback *)geometry_elementary_add_dilate_surface_cb } , + { "Point", (Fl_Callback *)geometry_elementary_add_scale_point_cb } , + { "Curve", (Fl_Callback *)geometry_elementary_add_scale_curve_cb } , + { "Surface", (Fl_Callback *)geometry_elementary_add_scale_surface_cb } , { NULL } }; Context_Item menu_geometry_elementary_add_symmetry[] = @@ -150,11 +151,11 @@ Context_Item menu_geometry[] = { "Surface", (Fl_Callback *)geometry_elementary_rotate_surface_cb } , { NULL } }; - Context_Item menu_geometry_elementary_dilate[] = + Context_Item menu_geometry_elementary_scale[] = { { "0", NULL } , - { "Point", (Fl_Callback *)geometry_elementary_dilate_point_cb } , - { "Curve", (Fl_Callback *)geometry_elementary_dilate_curve_cb } , - { "Surface", (Fl_Callback *)geometry_elementary_dilate_surface_cb } , + { "Point", (Fl_Callback *)geometry_elementary_scale_point_cb } , + { "Curve", (Fl_Callback *)geometry_elementary_scale_curve_cb } , + { "Surface", (Fl_Callback *)geometry_elementary_scale_surface_cb } , { NULL } }; Context_Item menu_geometry_elementary_symmetry[] = @@ -166,11 +167,24 @@ Context_Item menu_geometry[] = }; Context_Item menu_geometry_elementary_extrude[] = { { "0", NULL } , - { "Point", (Fl_Callback *)geometry_elementary_extrude_point_cb } , - { "Curve", (Fl_Callback *)geometry_elementary_extrude_curve_cb } , - { "Surface", (Fl_Callback *)geometry_elementary_extrude_surface_cb } , + { "Translate", (Fl_Callback *)geometry_elementary_extrude_translate_cb } , + { "Rotate", (Fl_Callback *)geometry_elementary_extrude_rotate_cb } , { NULL } - }; + }; + Context_Item menu_geometry_elementary_extrude_translate[] = + { { "0", NULL } , + { "Point", (Fl_Callback *)geometry_elementary_extrude_translate_point_cb } , + { "Curve", (Fl_Callback *)geometry_elementary_extrude_translate_curve_cb } , + { "Surface", (Fl_Callback *)geometry_elementary_extrude_translate_surface_cb } , + { NULL } + }; + Context_Item menu_geometry_elementary_extrude_rotate[] = + { { "0", NULL } , + { "Point", (Fl_Callback *)geometry_elementary_extrude_rotate_point_cb } , + { "Curve", (Fl_Callback *)geometry_elementary_extrude_rotate_curve_cb } , + { "Surface", (Fl_Callback *)geometry_elementary_extrude_rotate_surface_cb } , + { NULL } + }; Context_Item menu_geometry_elementary_delete[] = { { "0", NULL } , { "Point", (Fl_Callback *)geometry_elementary_delete_point_cb } , @@ -238,7 +252,8 @@ GUI::GUI() { BH = 2*CTX.fontsize+2; // button height WB = CTX.fontsize-6; // window border width - IW = 100; // input field width + IW = 10*CTX.fontsize; // input field width + BW = 3*IW/2; // width of a button with external label if(strlen(CTX.display)) Fl::display(CTX.display); @@ -391,6 +406,12 @@ GUI::GUI() { } +// Set graphic window title + +void GUI::set_title(char *str){ + g_window->label(str); +} + // Set animation button void GUI::set_anim(int mode){ @@ -608,12 +629,13 @@ int GUI::get_context(){ // Create the window for general options void GUI::create_general_options_window(){ - static int init_opt_general = 0; + static int init_general_options_window = 0; + int i; - if(!init_opt_general){ - init_opt_general = 1 ; + if(!init_general_options_window){ + init_general_options_window = 1 ; - int width = 280; + int width = 290; int height = 5*WB+8*BH ; gen_window = new Fl_Window(width,height); @@ -624,25 +646,25 @@ void GUI::create_general_options_window(){ { 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] = new Fl_Check_Button(2*WB, 2*WB+1*BH, BW, 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] = new Fl_Check_Button(2*WB, 2*WB+2*BH, BW, 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] = new Fl_Check_Button(2*WB, 2*WB+3*BH, BW, 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, BW, 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] = new Fl_Check_Button(2*WB, 2*WB+5*BH, BW, 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, "Use trackball rotation mode"); + gen_butt[5] = new Fl_Check_Button(2*WB, 2*WB+6*BH, BW, 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++){ + for(i=0 ; i<6 ; i++){ gen_butt[i]->type(FL_TOGGLE_BUTTON); gen_butt[i]->down_box(FL_DOWN_BOX); gen_butt[i]->labelsize(CTX.fontsize); @@ -654,13 +676,13 @@ void GUI::create_general_options_window(){ Fl_Group* o = new Fl_Group(WB, WB+BH, width-2*WB, height-3*WB-2*BH, "Projection"); o->labelsize(CTX.fontsize); o->hide(); - gen_butt[6] = new Fl_Check_Button(2*WB, 2*WB+BH, 150, BH, "Orthographic"); + gen_butt[6] = new Fl_Check_Button(2*WB, 2*WB+1*BH, BW, 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] = new Fl_Check_Button(2*WB, 2*WB+2*BH, BW, 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++){ + for(i=6 ; i<8 ; i++){ gen_butt[i]->type(FL_RADIO_BUTTON); gen_butt[i]->labelsize(CTX.fontsize); gen_butt[i]->selection_color(FL_YELLOW); @@ -671,7 +693,7 @@ 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, IW, BH, "Predefined color scheme"); + gen_value[0] = new Fl_Value_Input(2*WB, 2*WB+1*BH, IW, BH, "Predefined color scheme"); gen_value[0]->minimum(1); gen_value[0]->maximum(3); gen_value[0]->step(1); @@ -701,7 +723,7 @@ void GUI::create_general_options_window(){ 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++){ + for(i=0 ; i<5 ; i++){ gen_value[i]->labelsize(CTX.fontsize); gen_value[i]->type(FL_HORIZONTAL); gen_value[i]->align(FL_ALIGN_RIGHT); @@ -728,7 +750,7 @@ void GUI::create_general_options_window(){ } else{ if(gen_window->shown()) - gen_window->hide(); + gen_window->redraw(); else gen_window->show(); @@ -739,11 +761,11 @@ void GUI::create_general_options_window(){ // Create the window for geometry options void GUI::create_geometry_options_window(){ - static int init_opt_geometry = 0; + static int init_geometry_options_window = 0; int i; - if(!init_opt_geometry){ - init_opt_geometry = 1 ; + if(!init_geometry_options_window){ + init_geometry_options_window = 1 ; int width = 280; int height = 5*WB+9*BH ; @@ -756,28 +778,28 @@ void GUI::create_geometry_options_window(){ { Fl_Group* o = new Fl_Group(WB, WB+BH, width-2*WB, height-3*WB-2*BH, "Visibility"); o->labelsize(CTX.fontsize); - geo_butt[0] = new Fl_Check_Button(2*WB, 2*WB+BH, 100, BH, "Points"); + geo_butt[0] = new Fl_Check_Button(2*WB, 2*WB+1*BH, BW, BH, "Points"); geo_butt[0]->callback(opt_geometry_entity_cb, (void*)0); geo_butt[0]->value(CTX.geom.points); - geo_butt[1] = new Fl_Check_Button(2*WB, 2*WB+2*BH, 100, BH, "Curves"); + geo_butt[1] = new Fl_Check_Button(2*WB, 2*WB+2*BH, BW, BH, "Curves"); geo_butt[1]->callback(opt_geometry_entity_cb, (void*)1); geo_butt[1]->value(CTX.geom.lines); - geo_butt[2] = new Fl_Check_Button(2*WB, 2*WB+3*BH, 100, BH, "Surfaces"); + geo_butt[2] = new Fl_Check_Button(2*WB, 2*WB+3*BH, BW, BH, "Surfaces"); geo_butt[2]->callback(opt_geometry_entity_cb, (void*)2); geo_butt[2]->value(CTX.geom.surfaces); - geo_butt[3] = new Fl_Check_Button(2*WB, 2*WB+4*BH, 100, BH, "Volumes"); + geo_butt[3] = new Fl_Check_Button(2*WB, 2*WB+4*BH, BW, 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(width/2, 2*WB+1*BH, BW, 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(width/2, 2*WB+2*BH, BW, 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(width/2, 2*WB+3*BH, BW, 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(width/2, 2*WB+4*BH, BW, BH, "Volume numbers"); geo_butt[7]->callback(opt_geometry_num_cb, (void*)3); geo_butt[7]->value(CTX.geom.volumes_num); for(i=0 ; i<8 ; i++){ @@ -786,7 +808,7 @@ 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, IW, BH, "Show by entity number (or *)"); + geo_input = new Fl_Input(2*WB, 2*WB+5*BH, IW, BH, "Show by entity number"); geo_input->callback(opt_geometry_show_by_entity_num_cb); geo_input->labelsize(CTX.fontsize); geo_input->type(FL_HORIZONTAL); @@ -831,7 +853,7 @@ void GUI::create_geometry_options_window(){ } else{ if(geo_window->shown()) - geo_window->hide(); + geo_window->redraw(); else geo_window->show(); @@ -842,13 +864,13 @@ void GUI::create_geometry_options_window(){ // Create the window for mesh options void GUI::create_mesh_options_window(){ - static int init_opt_mesh = 0; + static int init_mesh_options_window = 0; int i; - if(!init_opt_mesh){ - init_opt_mesh = 1 ; + if(!init_mesh_options_window){ + init_mesh_options_window = 1 ; - int width = 280; + int width = 310; int height = 5*WB+9*BH ; mesh_window = new Fl_Window(width,height); @@ -860,13 +882,13 @@ 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 elements"); + mesh_butt[0] = new Fl_Check_Button(2*WB, 2*WB+1*BH, BW, 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"); + mesh_butt[1] = new Fl_Check_Button(2*WB, 2*WB+2*BH, BW, BH, "Interactive"); mesh_butt[1]->callback(opt_mesh_interactive_cb, (void*)0); mesh_butt[1]->value(CTX.mesh.interactive); - mesh_butt[2] = new Fl_Check_Button(2*WB, 2*WB+3*BH, 100, BH, "Anisotropic"); + mesh_butt[2] = new Fl_Check_Button(2*WB, 2*WB+3*BH, BW, BH, "Anisotropic"); mesh_butt[2]->callback(opt_mesh_algo_cb, (void*)0); mesh_butt[2]->value(CTX.mesh.algo==DELAUNAY_NEWALGO); for(i=0 ; i<3 ; i++){ @@ -890,28 +912,28 @@ void GUI::create_mesh_options_window(){ { Fl_Group* o = new Fl_Group(WB, WB+BH, width-2*WB, height-3*WB-2*BH, "Visibility"); o->labelsize(CTX.fontsize); - mesh_butt[3] = new Fl_Check_Button(2*WB, 2*WB+BH, 100, BH, "Points"); + mesh_butt[3] = new Fl_Check_Button(2*WB, 2*WB+1*BH, BW, BH, "Points"); mesh_butt[3]->callback(opt_mesh_entity_cb, (void*)0); mesh_butt[3]->value(CTX.mesh.points); - mesh_butt[4] = new Fl_Check_Button(2*WB, 2*WB+2*BH, 100, BH, "Curves"); + mesh_butt[4] = new Fl_Check_Button(2*WB, 2*WB+2*BH, BW, BH, "Curves"); mesh_butt[4]->callback(opt_mesh_entity_cb, (void*)1); mesh_butt[4]->value(CTX.mesh.lines); - mesh_butt[5] = new Fl_Check_Button(2*WB, 2*WB+3*BH, 100, BH, "Surfaces"); + mesh_butt[5] = new Fl_Check_Button(2*WB, 2*WB+3*BH, BW, BH, "Surfaces"); mesh_butt[5]->callback(opt_mesh_entity_cb, (void*)2); mesh_butt[5]->value(CTX.mesh.surfaces); - mesh_butt[6] = new Fl_Check_Button(2*WB, 2*WB+4*BH, 100, BH, "Volumes"); + mesh_butt[6] = new Fl_Check_Button(2*WB, 2*WB+4*BH, BW, BH, "Volumes"); mesh_butt[6]->callback(opt_mesh_entity_cb, (void*)3); mesh_butt[6]->value(CTX.mesh.volumes); - mesh_butt[7] = new Fl_Check_Button(2*WB+120, 2*WB+BH, 100, BH, "Point Numbers"); + mesh_butt[7] = new Fl_Check_Button(width/2, 2*WB+1*BH, BW, BH, "Point Numbers"); mesh_butt[7]->callback(opt_mesh_entity_cb, (void*)0); mesh_butt[7]->value(CTX.mesh.points_num); - mesh_butt[8] = new Fl_Check_Button(2*WB+120, 2*WB+2*BH, 100, BH, "Curve Numbers"); + mesh_butt[8] = new Fl_Check_Button(width/2, 2*WB+2*BH, BW, BH, "Curve Numbers"); mesh_butt[8]->callback(opt_mesh_entity_cb, (void*)1); mesh_butt[8]->value(CTX.mesh.lines_num); - mesh_butt[9] = new Fl_Check_Button(2*WB+120, 2*WB+3*BH, 100, BH, "Surface Numbers"); + mesh_butt[9] = new Fl_Check_Button(width/2, 2*WB+3*BH, BW, BH, "Surface Numbers"); mesh_butt[9]->callback(opt_mesh_entity_cb, (void*)2); mesh_butt[9]->value(CTX.mesh.surfaces_num); - mesh_butt[10] = new Fl_Check_Button(2*WB+120, 2*WB+4*BH, 100, BH, "Volume Numbers"); + mesh_butt[10] = new Fl_Check_Button(width/2, 2*WB+4*BH, BW, BH, "Volume Numbers"); mesh_butt[10]->callback(opt_mesh_entity_cb, (void*)3); mesh_butt[10]->value(CTX.mesh.volumes_num); for(i=3 ; i<11 ; i++){ @@ -920,7 +942,7 @@ 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, IW, BH, "Show by entity Number (or *)"); + mesh_input = new Fl_Input(2*WB, 2*WB+5*BH, IW, BH, "Show by entity Number"); mesh_input->callback(opt_mesh_show_by_entity_num_cb); mesh_input->labelsize(CTX.fontsize); mesh_input->type(FL_HORIZONTAL); @@ -949,13 +971,13 @@ void GUI::create_mesh_options_window(){ Fl_Group* o = new Fl_Group(WB, WB+BH, width-2*WB, height-3*WB-2*BH, "Aspect"); o->labelsize(CTX.fontsize); o->hide(); - mesh_butt[11] = new Fl_Check_Button(2*WB, 2*WB+BH, 100, BH, "Wireframe"); + mesh_butt[11] = new Fl_Check_Button(2*WB, 2*WB+1*BH, BW, BH, "Wireframe"); mesh_butt[11]->callback(opt_mesh_aspect_cb, (void*)0); mesh_butt[11]->value(!CTX.mesh.hidden); - mesh_butt[12] = new Fl_Check_Button(2*WB, 2*WB+2*BH, 100, BH, "Hidden lines"); + mesh_butt[12] = new Fl_Check_Button(2*WB, 2*WB+2*BH, BW, BH, "Hidden lines"); mesh_butt[12]->callback(opt_mesh_aspect_cb, (void*)1); mesh_butt[12]->value(CTX.mesh.hidden); - mesh_butt[13] = new Fl_Check_Button(2*WB, 2*WB+3*BH, 100, BH, "Solid"); + mesh_butt[13] = new Fl_Check_Button(2*WB, 2*WB+3*BH, BW, BH, "Solid"); mesh_butt[13]->callback(opt_mesh_aspect_cb, (void*)2); mesh_butt[13]->value(CTX.mesh.shade); for(i=11 ; i<14 ; i++){ @@ -994,7 +1016,7 @@ void GUI::create_mesh_options_window(){ } else{ if(mesh_window->shown()) - mesh_window->hide(); + mesh_window->redraw(); else mesh_window->show(); @@ -1006,10 +1028,10 @@ void GUI::create_mesh_options_window(){ // Create the window for post-processing options void GUI::create_post_options_window(){ - static int init_opt_post = 0; + static int init_post_options_window = 0; - if(!init_opt_post){ - init_opt_post = 1 ; + if(!init_post_options_window){ + init_post_options_window = 1 ; int width = 200; int height = 5*WB+5*BH ; @@ -1022,16 +1044,16 @@ void GUI::create_post_options_window(){ { Fl_Group* o = new Fl_Group(WB, WB+BH, width-2*WB, height-3*WB-2*BH, "Links"); o->labelsize(CTX.fontsize); - post_butt[0] = new Fl_Check_Button(2*WB, 2*WB+BH, 150, BH, "No link between views"); + post_butt[0] = new Fl_Check_Button(2*WB, 2*WB+1*BH, BW, BH, "No link between views"); post_butt[0]->callback(opt_post_link_cb, (void*)0); post_butt[0]->value(CTX.post.link==0); - post_butt[1] = new Fl_Check_Button(2*WB, 2*WB+2*BH, 150, BH, "Link visible views"); + post_butt[1] = new Fl_Check_Button(2*WB, 2*WB+2*BH, BW, BH, "Link visible views"); post_butt[1]->callback(opt_post_link_cb, (void*)1); post_butt[1]->value(CTX.post.link==1); - post_butt[2] = new Fl_Check_Button(2*WB, 2*WB+3*BH, 150, BH, "Link all views"); + post_butt[2] = new Fl_Check_Button(2*WB, 2*WB+3*BH, BW, BH, "Link all views"); post_butt[2]->callback(opt_post_link_cb, (void*)2); post_butt[2]->value(CTX.post.link==2); - for(int i=0 ; i<3 ; i++){ + for(i=0 ; i<3 ; i++){ post_butt[i]->type(FL_RADIO_BUTTON); post_butt[i]->labelsize(CTX.fontsize); post_butt[i]->selection_color(FL_YELLOW); @@ -1042,7 +1064,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, IW, BH, "Animation delay"); + post_value[0] = new Fl_Value_Input(2*WB, 2*WB+1*BH, IW, BH, "Delay"); post_value[0]->minimum(0); post_value[0]->maximum(10); post_value[0]->step(0.1); @@ -1072,7 +1094,7 @@ void GUI::create_post_options_window(){ } else{ if(post_window->shown()) - post_window->hide(); + post_window->redraw(); else post_window->show(); @@ -1083,12 +1105,12 @@ void GUI::create_post_options_window(){ // Create the window for the statistics void GUI::create_statistics_window(){ - static int init_opt_statistics = 0; + static int init_statistics_window = 0; - if(!init_opt_statistics){ - init_opt_statistics = 1 ; + if(!init_statistics_window){ + init_statistics_window = 1 ; - int width = 234; + int width = 262; int height = 5*WB+16*BH ; stat_window = new Fl_Window(width,height); @@ -1100,46 +1122,46 @@ 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, 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"); + stat_value[0] = new Fl_Output(width/2, 2*WB+1*BH, IW, BH, "Number of points"); + stat_value[1] = new Fl_Output(width/2, 2*WB+2*BH, IW, BH, "Number of curves"); + stat_value[2] = new Fl_Output(width/2, 2*WB+3*BH, IW, BH, "Number of surfaces"); + stat_value[3] = new Fl_Output(width/2, 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, 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"); + stat_value[4] = new Fl_Output(width/2, 2*WB+1*BH, IW, BH, "Nodes on curves"); + stat_value[5] = new Fl_Output(width/2, 2*WB+2*BH, IW, BH, "Nodes on surfaces"); + stat_value[6] = new Fl_Output(width/2, 2*WB+3*BH, IW, BH, "Nodes in volumes"); + stat_value[7] = new Fl_Output(width/2, 2*WB+4*BH, IW, BH, "Triangles"); + stat_value[8] = new Fl_Output(width/2, 2*WB+5*BH, IW, BH, "Quadrangles"); + stat_value[9] = new Fl_Output(width/2, 2*WB+6*BH, IW, BH, "Tetrahedra"); + stat_value[10] = new Fl_Output(width/2, 2*WB+7*BH, IW, BH, "Hexahedra"); + stat_value[11] = new Fl_Output(width/2, 2*WB+8*BH, IW, BH, "Prisms"); + stat_value[12] = new Fl_Output(width/2, 2*WB+9*BH, IW, BH, "Time for 1D mesh"); + stat_value[13] = new Fl_Output(width/2, 2*WB+10*BH, IW, BH, "Time for 2D mesh"); + stat_value[14] = new Fl_Output(width/2, 2*WB+11*BH, IW, BH, "Time for 3D mesh"); + stat_value[15] = new Fl_Output(width/2, 2*WB+12*BH, IW, BH, "Gamma factor"); + stat_value[16] = new Fl_Output(width/2, 2*WB+13*BH, IW, BH, "Eta factor"); + stat_value[17] = new Fl_Output(width/2, 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, 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"); + stat_value[18] = new Fl_Output(width/2, 2*WB+1*BH, IW, BH, "Views loaded"); + stat_value[19] = new Fl_Output(width/2, 2*WB+2*BH, IW, BH, "Visible Points"); + stat_value[20] = new Fl_Output(width/2, 2*WB+3*BH, IW, BH, "Visible lines"); + stat_value[21] = new Fl_Output(width/2, 2*WB+4*BH, IW, BH, "Visible triangles"); + stat_value[22] = new Fl_Output(width/2, 2*WB+5*BH, IW, BH, "Visible tetrahedra"); o->end(); } o->end(); } - for(int i=0 ; i<23 ; i++){ + for(i=0 ; i<23 ; i++){ stat_value[i]->labelsize(CTX.fontsize); stat_value[i]->type(FL_HORIZONTAL); stat_value[i]->align(FL_ALIGN_LEFT); @@ -1163,7 +1185,7 @@ void GUI::create_statistics_window(){ } else{ if(stat_window->shown()) - stat_window->hide(); + stat_window->redraw(); else{ set_statistics(); stat_window->show(); @@ -1177,10 +1199,10 @@ void GUI::create_statistics_window(){ #include "Help.h" void GUI::create_help_window(){ - static int init_help_short = 0; + static int init_help_window = 0; - if(!init_help_short){ - init_help_short = 1 ; + if(!init_help_window){ + init_help_window = 1 ; int width = 450; int height = 400 ; @@ -1210,7 +1232,7 @@ void GUI::create_help_window(){ } else{ if(help_window->shown()) - help_window->hide(); + help_window->redraw(); else help_window->show(); @@ -1221,13 +1243,13 @@ void GUI::create_help_window(){ // Create the about window void GUI::create_about_window(){ - static int init_help_about = 0; + static int init_about_window = 0; - if(!init_help_about){ - init_help_about = 1 ; + if(!init_about_window){ + init_about_window = 1 ; int width = 470; - int height = 220; + int height = 230; about_window = new Fl_Window(width,height); about_window->box(FL_THIN_UP_BOX); @@ -1238,16 +1260,14 @@ void GUI::create_about_window(){ about_bmp->label(o); Fl_Button *o2 = new Fl_Button(WB+80, WB, width-2*WB-80, height-2*WB); - - // Text for about window static char buffer[1024]; - sprintf(buffer, " %s\n \n %s%.2f\n %s\n %s\n %s\n %s\n %s\n %s\n \n %s" - "\n \n Type 'gmsh -help' for command line options", + sprintf(buffer, "%s\n\n%s%.2f\n%s\n%s\n%s\n%s\n%s\n%s\n\n%s" + "\n\nType 'gmsh -help' for command line options", gmsh_progname, gmsh_version, GMSH_VERSION, gmsh_os, gmsh_date, gmsh_host, gmsh_packager, gmsh_url, gmsh_email, gmsh_copyright); o2->label(buffer); - o2->box(FL_THIN_UP_BOX); + o2->box(FL_FLAT_BOX); o2->labelsize(CTX.fontsize); o2->labelfont(FL_COURIER); o2->align(FL_ALIGN_LEFT|FL_ALIGN_INSIDE); @@ -1258,7 +1278,7 @@ void GUI::create_about_window(){ } else{ if(about_window->shown()) - about_window->hide(); + about_window->redraw(); else about_window->show(); } @@ -1266,30 +1286,30 @@ void GUI::create_about_window(){ } // Create the window for view options +// on fourgue num a tous les callbacks -void GUI::create_view_window(){ - static int init_opt_view = 0; +void GUI::create_view_window(int num){ + static int init_view_window = 0; int i; - if(!init_opt_view){ - init_opt_view = 1 ; + if(!init_view_window){ + init_view_window = 1 ; - int width = 320; + int width = 380; int height = 5*WB+7*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); // Color bar { - 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"); + view_colorbar = new Fl_Group(WB, WB+BH, width-2*WB, height-3*WB-2*BH, "Color bar"); + view_colorbar->labelsize(CTX.fontsize); + view_colorbar->hide(); + view_butt[0] = new Fl_Check_Button(2*WB, 2*WB+1*BH, BW, BH, "Show color bar"); + view_butt[1] = new Fl_Check_Button(2*WB, 2*WB+2*BH, BW, BH, "Display time"); + view_butt[2] = new Fl_Check_Button(2*WB, 2*WB+3*BH, BW, BH, "Transparent bar"); for(i=0 ; i<3 ; i++){ view_butt[i]->type(FL_TOGGLE_BUTTON); view_butt[i]->down_box(FL_DOWN_BOX); @@ -1303,40 +1323,40 @@ void GUI::create_view_window(){ view_input[i]->type(FL_HORIZONTAL); view_input[i]->align(FL_ALIGN_RIGHT); } - o->end(); + view_colorbar->end(); } // Range { - Fl_Group* o = new Fl_Group(WB, WB+BH, width-2*WB, height-3*WB-2*BH, "Range"); - o->labelsize(CTX.fontsize); - o->hide(); - view_butt[3] = new Fl_Check_Button(2*WB, 2*WB+ BH, 100, BH, "Custom Range"); + view_range = new Fl_Group(WB, WB+BH, width-2*WB, height-3*WB-2*BH, "Range"); + view_range->labelsize(CTX.fontsize); + view_range->hide(); + view_butt[3] = new Fl_Check_Button(2*WB, 2*WB+1*BH, BW, 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, 2*WB+2*BH, IW, BH, "Min"); - view_value[1] = new Fl_Value_Input(2*WB, 2*WB+3*BH, IW, BH, "Max"); + view_value[0] = new Fl_Value_Input(2*WB, 2*WB+2*BH, IW, BH, "Minimum"); + view_value[1] = new Fl_Value_Input(2*WB, 2*WB+3*BH, IW, BH, "Maximum"); for(i=0 ; i<2 ; i++){ view_value[i]->labelsize(CTX.fontsize); view_value[i]->type(FL_HORIZONTAL); view_value[i]->align(FL_ALIGN_RIGHT); } - 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"); + view_butt[4] = new Fl_Check_Button(2*WB, 2*WB+4*BH, BW, BH, "Linear"); + view_butt[5] = new Fl_Check_Button(2*WB, 2*WB+5*BH, BW, BH, "Logarithmic"); for(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_range->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_intervals = new Fl_Group(WB, WB+BH, width-2*WB, height-3*WB-2*BH, "Intervals"); + view_intervals->labelsize(CTX.fontsize); + view_value[2] = new Fl_Value_Input(2*WB, 2*WB+1*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); @@ -1344,31 +1364,34 @@ void GUI::create_view_window(){ 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"); + view_butt[6] = new Fl_Check_Button(2*WB, 2*WB+2*BH, BW, BH, "Iso-values"); + view_butt[7] = new Fl_Check_Button(2*WB, 2*WB+3*BH, BW, BH, "Filled iso-values"); + view_butt[8] = new Fl_Check_Button(2*WB, 2*WB+4*BH, BW, BH, "Continuous map"); + view_butt[9] = new Fl_Check_Button(2*WB, 2*WB+5*BH, BW, BH, "Numeric values"); for(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_intervals->end(); } - // Offset + // Offset and Raise { - 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_offsetraise = new Fl_Group(WB, WB+BH, width-2*WB, height-3*WB-2*BH, "Offset/Raise"); + view_offsetraise->labelsize(CTX.fontsize); + view_offsetraise->hide(); + view_value[3] = new Fl_Value_Input(2*WB, 2*WB+1*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(i=3 ; i<6 ; i++){ + view_value[6] = new Fl_Value_Input(width/2, 2*WB+1*BH, IW, BH, "X raise"); + view_value[7] = new Fl_Value_Input(width/2, 2*WB+2*BH, IW, BH, "Y raise"); + view_value[8] = new Fl_Value_Input(width/2, 2*WB+3*BH, IW, BH, "Z raise"); + for(i=3 ; i<9 ; i++){ view_value[i]->labelsize(CTX.fontsize); view_value[i]->type(FL_HORIZONTAL); view_value[i]->align(FL_ALIGN_RIGHT); } - o->end(); + view_offsetraise->end(); } // Raise { @@ -1385,19 +1408,54 @@ void GUI::create_view_window(){ } o->end(); } +>>>>>>> 1.14 // Time step { - 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, IW, BH, "Time step number"); + 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[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(); + view_value[9]->minimum(1); + view_value[9]->step(1); + view_timestep->end(); + } + // Vector display + { + view_vector = new Fl_Group(WB, WB+BH, width-2*WB, height-3*WB-2*BH, "Vector"); + view_vector->labelsize(CTX.fontsize); + view_vector->hide(); + + view_butt[10] = new Fl_Check_Button(2*WB, 2*WB+1*BH, IW, BH, "Line"); + view_butt[11] = new Fl_Check_Button(2*WB, 2*WB+2*BH, IW, BH, "Arrow"); + view_butt[12] = new Fl_Check_Button(width/2, 2*WB+1*BH, IW, BH, "Cone"); + view_butt[13] = new Fl_Check_Button(width/2, 2*WB+2*BH, IW, BH, "Displacement"); + for(i=10 ; i<14 ; 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_butt[14] = new Fl_Check_Button(2*WB, 2*WB+3*BH, IW, BH, "Cell centered"); + view_butt[15] = new Fl_Check_Button(2*WB, 2*WB+4*BH, IW, BH, "Vertex centered"); + for(i=14 ; i<16 ; i++){ + view_butt[i]->type(FL_RADIO_BUTTON); + view_butt[i]->labelsize(CTX.fontsize); + view_butt[i]->selection_color(FL_YELLOW); + } + + view_value[10] = new Fl_Value_Input(2*WB, 2*WB+ 5*BH, IW, BH, "Vector scale"); + view_value[10]->labelsize(CTX.fontsize); + view_value[10]->type(FL_HORIZONTAL); + view_value[10]->align(FL_ALIGN_RIGHT); + view_value[10]->minimum(0); + view_value[10]->maximum(1000); + view_value[10]->step(1); + + view_vector->end(); } o->end(); } @@ -1414,15 +1472,317 @@ void GUI::create_view_window(){ } view_window->end(); + } + + // update all current parameters for the selected view + Post_View *v = (Post_View*)List_Pointer(Post_ViewList, num); + + static char buffer[1024]; + sprintf(buffer, "Options for \"%s\" (\"%s\")", v->Name, v->FileName); + view_window->label(buffer); + + // colorbar + view_butt[0]->callback(view_options_show_scale_cb, (void*)num); + view_butt[0]->value(v->ShowScale); + view_butt[1]->callback(view_options_show_time_cb, (void*)num); + view_butt[1]->value(v->ShowTime); + view_butt[2]->callback(view_options_transparent_scale_cb, (void*)num); + view_butt[2]->value(v->TransparentScale); + view_input[0]->callback(view_options_name_cb, (void*)num); + view_input[0]->value(v->Name); + view_input[1]->callback(view_options_format_cb, (void*)num); + view_input[1]->value(v->Format); + + // range + if(v->ScaleType==DRAW_POST_CUSTOM) activate_custom(1); + else activate_custom(0); + view_butt[3]->callback(view_options_custom_range_cb, (void*)num); + view_butt[3]->value(v->ScaleType==DRAW_POST_CUSTOM); + view_value[0]->callback(view_options_custom_min_cb, (void*)num); + view_value[0]->value(v->CustomMin); + view_value[1]->callback(view_options_custom_max_cb, (void*)num); + view_value[1]->value(v->CustomMax); + view_butt[4]->callback(view_options_linear_range_cb, (void*)num); + view_butt[4]->value(v->RangeType==DRAW_POST_LINEAR); + view_butt[5]->callback(view_options_logarithmic_range_cb, (void*)num); + view_butt[5]->value(v->RangeType==DRAW_POST_LOGARITHMIC); + + // intervals + view_value[2]->callback(view_options_nbiso_cb, (void*)num); + view_value[2]->value(v->NbIso); + view_butt[6]->callback(view_options_iso_cb, (void*)num); + view_butt[6]->value(v->IntervalsType==DRAW_POST_ISO); + view_butt[7]->callback(view_options_fillediso_cb, (void*)num); + view_butt[7]->value(v->IntervalsType==DRAW_POST_DISCRETE); + view_butt[8]->callback(view_options_continuousiso_cb, (void*)num); + view_butt[8]->value(v->IntervalsType==DRAW_POST_CONTINUOUS); + view_butt[9]->callback(view_options_numericiso_cb, (void*)num); + view_butt[9]->value(v->IntervalsType==DRAW_POST_NUMERIC); + + // offset/raise + view_value[3]->callback(view_options_xoffset_cb, (void*)num); + view_value[3]->value(v->Offset[0]); + view_value[4]->callback(view_options_yoffset_cb, (void*)num); + view_value[4]->value(v->Offset[1]); + view_value[5]->callback(view_options_zoffset_cb, (void*)num); + view_value[5]->value(v->Offset[2]); + view_value[6]->callback(view_options_xraise_cb, (void*)num); + view_value[6]->value(v->Raise[0]); + view_value[7]->callback(view_options_yraise_cb, (void*)num); + view_value[7]->value(v->Raise[1]); + view_value[8]->callback(view_options_zraise_cb, (void*)num); + view_value[8]->value(v->Raise[2]); + + // timestep + if(v->NbTimeStep==1) view_timestep->deactivate(); + else view_timestep->activate(); + view_value[9]->callback(view_options_timestep_cb, (void*)num); + view_value[9]->value(v->TimeStep); + view_value[9]->maximum(v->NbTimeStep); + + // vector + if(v->ScalarOnly) view_vector->deactivate(); + else view_vector->activate(); + view_butt[10]->callback(view_options_vector_line_cb, (void*)num); + view_butt[10]->value(v->ArrowType==DRAW_POST_SEGMENT); + view_butt[11]->callback(view_options_vector_arrow_cb, (void*)num); + view_butt[11]->value(v->ArrowType==DRAW_POST_ARROW); + view_butt[12]->callback(view_options_vector_cone_cb, (void*)num); + view_butt[12]->value(v->ArrowType==DRAW_POST_CONE); + view_butt[13]->callback(view_options_vector_displacement_cb, (void*)num); + view_butt[13]->value(v->ArrowType==DRAW_POST_DISPLACEMENT); + view_value[10]->callback(view_options_vector_scale_cb, (void*)num); + view_value[10]->value(v->ArrowScale); + view_butt[14]->callback(view_options_vector_cog_cb, (void*)num); + view_butt[14]->value(v->ArrowType==DRAW_POST_SEGMENT); + view_butt[15]->callback(view_options_vector_vertex_cb, (void*)num); + view_butt[15]->value(v->ArrowType==DRAW_POST_ARROW); + + if(view_window->shown()) + view_window->redraw(); + else view_window->show(); +} + +// Handle activation of cutom min/max + +void GUI::activate_custom(int val){ + if(val){ + view_value[0]->activate(); + view_value[1]->activate(); } else{ - if(view_window->shown()) - view_window->hide(); - else - view_window->show(); + view_value[0]->deactivate(); + view_value[1]->deactivate(); + } +} + +// Create the window for geometry context dependant definitions + +void GUI::create_geometry_context_window(int num){ + static int init_geometry_context_window = 0; + static Fl_Group *g[5]; + int i; + + if(!init_geometry_context_window){ + init_geometry_context_window = 1 ; + + int width = 370; + int height = 5*WB+9*BH ; + + context_geometry_window = new Fl_Window(width,height); + context_geometry_window->box(FL_THIN_UP_BOX); + context_geometry_window->label("Contextual Geometry Definitions"); + { + Fl_Tabs* o = new Fl_Tabs(WB, WB, width-2*WB, height-3*WB-BH); + // 0: Parameter + { + g[0] = new Fl_Group(WB, WB+BH, width-2*WB, height-3*WB-2*BH, "Parameter"); + g[0]->labelsize(CTX.fontsize); + context_geometry_input[0] = new Fl_Input (2*WB, 2*WB+1*BH, IW, BH, "Name"); + context_geometry_input[1] = new Fl_Input (2*WB, 2*WB+2*BH, IW, BH, "Value"); + for(i=0 ; i<2 ; i++){ + context_geometry_input[i]->labelsize(CTX.fontsize); + context_geometry_input[i]->type(FL_HORIZONTAL); + context_geometry_input[i]->align(FL_ALIGN_RIGHT); + } + { + Fl_Return_Button* o = new Fl_Return_Button(width-60-2*WB, 2*WB+7*BH, 60, BH, "add"); + o->labelsize(CTX.fontsize); + o->callback(con_geometry_define_parameter_cb); + } + g[0]->end(); + } + // 1: Point + { + g[1] = new Fl_Group(WB, WB+BH, width-2*WB, height-3*WB-2*BH, "Point"); + g[1]->labelsize(CTX.fontsize); + context_geometry_input[2] = new Fl_Input (2*WB, 2*WB+1*BH, IW, BH, "X coordinate"); + context_geometry_input[3] = new Fl_Input (2*WB, 2*WB+2*BH, IW, BH, "Y coordinate"); + context_geometry_input[4] = new Fl_Input (2*WB, 2*WB+3*BH, IW, BH, "Z coordinate"); + context_geometry_input[5] = new Fl_Input (2*WB, 2*WB+4*BH, IW, BH, "Characteristic length"); + for(i=2 ; i<6 ; i++){ + context_geometry_input[i]->labelsize(CTX.fontsize); + context_geometry_input[i]->type(FL_HORIZONTAL); + context_geometry_input[i]->align(FL_ALIGN_RIGHT); + } + { + Fl_Return_Button* o = new Fl_Return_Button(width-60-2*WB, 2*WB+7*BH, 60, BH, "add"); + o->labelsize(CTX.fontsize); + o->callback(con_geometry_define_point_cb); + } + g[1]->end(); + } + // 2: Translation + { + g[2] = new Fl_Group(WB, WB+BH, width-2*WB, height-3*WB-2*BH, "Translation"); + g[2]->labelsize(CTX.fontsize); + context_geometry_input[6] = new Fl_Input (2*WB, 2*WB+1*BH, IW, BH, "X component"); + context_geometry_input[7] = new Fl_Input (2*WB, 2*WB+2*BH, IW, BH, "Y component"); + context_geometry_input[8] = new Fl_Input (2*WB, 2*WB+3*BH, IW, BH, "Z component"); + for(i=6 ; i<9 ; i++){ + context_geometry_input[i]->labelsize(CTX.fontsize); + context_geometry_input[i]->type(FL_HORIZONTAL); + context_geometry_input[i]->align(FL_ALIGN_RIGHT); + } + { + Fl_Return_Button* o = new Fl_Return_Button(width-60-2*WB, 2*WB+7*BH, 60, BH, "set"); + o->labelsize(CTX.fontsize); + o->callback(con_geometry_define_translation_cb); + } + g[2]->end(); + } + // 3: Rotation + { + g[3] = new Fl_Group(WB, WB+BH, width-2*WB, height-3*WB-2*BH, "Rotation"); + g[3]->labelsize(CTX.fontsize); + context_geometry_input[9] = new Fl_Input (2*WB, 2*WB+1*BH, IW, BH, "X coordinate of an axis point"); + context_geometry_input[10] = new Fl_Input (2*WB, 2*WB+2*BH, IW, BH, "Y coordinate of an axis point"); + context_geometry_input[11] = new Fl_Input (2*WB, 2*WB+3*BH, IW, BH, "Z coordinate of an axis point"); + context_geometry_input[12] = new Fl_Input (2*WB, 2*WB+4*BH, IW, BH, "X component of direction"); + context_geometry_input[13] = new Fl_Input (2*WB, 2*WB+5*BH, IW, BH, "Y component of direction"); + context_geometry_input[14] = new Fl_Input (2*WB, 2*WB+6*BH, IW, BH, "Z component of direction"); + context_geometry_input[15] = new Fl_Input (2*WB, 2*WB+7*BH, IW, BH, "Angle in degrees"); + for(i=9 ; i<16 ; i++){ + context_geometry_input[i]->labelsize(CTX.fontsize); + context_geometry_input[i]->type(FL_HORIZONTAL); + context_geometry_input[i]->align(FL_ALIGN_RIGHT); + } + { + Fl_Return_Button* o = new Fl_Return_Button(width-60-2*WB, 2*WB+7*BH, 60, BH, "set"); + o->labelsize(CTX.fontsize); + o->callback(con_geometry_define_rotation_cb); + } + g[3]->end(); + } + // 4: Scale + { + g[4] = new Fl_Group(WB, WB+BH, width-2*WB, height-3*WB-2*BH, "Scale"); + g[4]->labelsize(CTX.fontsize); + context_geometry_input[16] = new Fl_Input (2*WB, 2*WB+1*BH, IW, BH, "X component of direction"); + context_geometry_input[17] = new Fl_Input (2*WB, 2*WB+2*BH, IW, BH, "Y component of direction"); + context_geometry_input[18] = new Fl_Input (2*WB, 2*WB+3*BH, IW, BH, "Z component of direction"); + context_geometry_input[19] = new Fl_Input (2*WB, 2*WB+4*BH, IW, BH, "Factor"); + for(i=16 ; i<20 ; i++){ + context_geometry_input[i]->labelsize(CTX.fontsize); + context_geometry_input[i]->type(FL_HORIZONTAL); + context_geometry_input[i]->align(FL_ALIGN_RIGHT); + } + { + Fl_Return_Button* o = new Fl_Return_Button(width-60-2*WB, 2*WB+7*BH, 60, BH, "set"); + o->labelsize(CTX.fontsize); + o->callback(con_geometry_define_scale_cb); + } + g[4]->end(); + } + // 5: Symmetry + { + g[5] = new Fl_Group(WB, WB+BH, width-2*WB, height-3*WB-2*BH, "Symmetry"); + g[5]->labelsize(CTX.fontsize); + context_geometry_input[20] = new Fl_Input (2*WB, 2*WB+1*BH, IW, BH, "1st plane equation coefficient"); + context_geometry_input[21] = new Fl_Input (2*WB, 2*WB+2*BH, IW, BH, "2nd plane equation coefficient"); + context_geometry_input[22] = new Fl_Input (2*WB, 2*WB+3*BH, IW, BH, "3rd plane equation coefficient"); + context_geometry_input[23] = new Fl_Input (2*WB, 2*WB+4*BH, IW, BH, "4th plane equation coefficient"); + for(i=20 ; i<24 ; i++){ + context_geometry_input[i]->labelsize(CTX.fontsize); + context_geometry_input[i]->type(FL_HORIZONTAL); + context_geometry_input[i]->align(FL_ALIGN_RIGHT); + } + { + Fl_Return_Button* o = new Fl_Return_Button(width-60-2*WB, 2*WB+7*BH, 60, BH, "set"); + o->labelsize(CTX.fontsize); + o->callback(con_geometry_define_symmetry_cb); + } + g[5]->end(); + } + o->end(); + } + + { + Fl_Button* o = new Fl_Button(width-60-WB, height-BH-WB, 60, BH, "cancel"); + o->labelsize(CTX.fontsize); + o->callback(cancel_cb, (void*)context_geometry_window); + } + + for(i=0 ; i<6 ; i++) g[i]->hide(); + g[num]->show(); + context_geometry_window->end(); + context_geometry_window->show(); + } + else{ + if(context_geometry_window->shown()){ + for(i=0 ; i<6 ; i++) g[i]->hide(); + g[num]->show(); + } + else{ + for(i=0 ; i<6 ; i++) g[i]->hide(); + g[num]->show(); + context_geometry_window->show(); + } } } +char *GUI::get_geometry_parameter(int num){//name, val + return (char*)context_geometry_input[num]->value(); +} + +char *GUI::get_geometry_point(int num){//x, y, z, l + return (char*)context_geometry_input[num+2]->value(); +} + +char *GUI::get_geometry_translation(int num){//x, y, z + return (char*)context_geometry_input[num+6]->value(); +} + +char *GUI::get_geometry_rotation(int num){//px, py, pz, ax, ay, az, ang + return (char*)context_geometry_input[num+9]->value(); +} + +char *GUI::get_geometry_scale(int num){//x, y, z, f + return (char*)context_geometry_input[num+16]->value(); +} + +char *GUI::get_geometry_symmetry(int num){//a, b, c, d + return (char*)context_geometry_input[num+20]->value(); +} + + +// Create the window for mesh context dependant definitions + +void GUI::create_mesh_context_window(int num){ + +} + +char *GUI::get_mesh_transfinite(int num){ + return "0.0"; +} + +char *GUI::get_mesh_length(int num){ + return "0.0"; +} + +char *GUI::get_mesh_attractor(int num){ + return "0.0"; +} diff --git a/Fltk/GUI.h b/Fltk/GUI.h index fca2ae725c..1312c42c38 100644 --- a/Fltk/GUI.h +++ b/Fltk/GUI.h @@ -39,13 +39,15 @@ extern Context_Item menu_geometry_elementary_add[]; extern Context_Item menu_geometry_elementary_add_new[]; extern Context_Item menu_geometry_elementary_add_translate[]; extern Context_Item menu_geometry_elementary_add_rotate[]; -extern Context_Item menu_geometry_elementary_add_dilate[]; +extern Context_Item menu_geometry_elementary_add_scale[]; extern Context_Item menu_geometry_elementary_add_symmetry[]; extern Context_Item menu_geometry_elementary_translate[]; extern Context_Item menu_geometry_elementary_rotate[]; -extern Context_Item menu_geometry_elementary_dilate[]; +extern Context_Item menu_geometry_elementary_scale[]; extern Context_Item menu_geometry_elementary_symmetry[]; extern Context_Item menu_geometry_elementary_extrude[]; +extern Context_Item menu_geometry_elementary_extrude_translate[]; +extern Context_Item menu_geometry_elementary_extrude_rotate[]; extern Context_Item menu_geometry_elementary_delete[]; extern Context_Item menu_geometry_physical[]; extern Context_Item menu_geometry_physical_add[]; @@ -73,22 +75,20 @@ public: : Fl_Gl_Window(x, y, w, h, l) {} }; -// The GUI class contains only the important widgets +// The GUI class contains only the important widgets. All these +// widgets should stay private, and be accessed only by the public +// member functions. class GUI{ - int BH; // generic button height - int WB; // generic window border - int IW; // generic input field width + int BH; // check_button height + int BW; // check_button width + int WB; // borders + int IW; // input field width int MH; // height of the unchangeable part of the menu window + // All other diemnsions are automatic, or governed by CTX - // Windows - Fl_Window *m_window, *g_window, *gen_window, *geo_window ; - Fl_Window *mesh_window, *post_window, *stat_window ; - Fl_Window *help_window, *about_window, *view_window ; - Opengl_Window *g_opengl_window ; - // Bitmaps Fl_Bitmap *icon1_bmp, *icon2_bmp, *icon3_bmp; Fl_Bitmap *abort_bmp, *start_bmp, *stop_bmp, *about_bmp ; @@ -96,6 +96,7 @@ class GUI{ // We keep the following widgets for easy further reference // menu window + Fl_Window *m_window ; Fl_Choice *m_module_butt ; Fl_Button *m_navig_butt [2] ; Fl_Button *m_push_butt [NB_BUTT_MAX] ; @@ -103,38 +104,65 @@ class GUI{ Fl_Menu_Button *m_popup_butt [NB_BUTT_MAX] ; // graphic window + Fl_Window *g_window ; + Opengl_Window *g_opengl_window ; Fl_Button *g_status_butt[7] ; Fl_Box *g_status_label[3] ; // general options window + Fl_Window *gen_window ; Fl_Check_Button *gen_butt[10] ; Fl_Value_Input *gen_value[10] ; // geometry options window + Fl_Window *geo_window ; Fl_Check_Button *geo_butt[10] ; Fl_Input *geo_input ; Fl_Value_Input *geo_value[10] ; // mesh options window + Fl_Window *mesh_window ; Fl_Check_Button *mesh_butt[20] ; Fl_Input *mesh_input ; Fl_Value_Input *mesh_value[20] ; // post-processing options window + Fl_Window *post_window ; Fl_Check_Button *post_butt[20] ; Fl_Value_Input *post_value[20] ; // statistics window + Fl_Window *stat_window ; Fl_Output *stat_value[50] ; + // help window + Fl_Window *help_window ; + + // about window + Fl_Window *about_window ; + // view options window + Fl_Window *view_window ; + Fl_Group *view_colorbar, *view_range, *view_intervals ; + Fl_Group *view_offsetraise, *view_timestep, *view_vector ; Fl_Check_Button *view_butt[20] ; Fl_Value_Input *view_value[20] ; Fl_Input *view_input[20] ; + + // geometry context window + Fl_Window *context_geometry_window ; + Fl_Input *context_geometry_input[30] ; + + // mesh context window + Fl_Window *context_mesh_window ; + Fl_Input *context_mesh_input[20] ; public: + // the constructor GUI(); + + // general purpose interaction void run(); void check(); void make_gl_current(); @@ -147,6 +175,21 @@ public: void set_anim(int mode); void set_status(char *msg, int num); void set_statistics(); + void set_title(char *str); + void activate_custom(int val); + + // geometry contexts queries + char *get_geometry_parameter(int num); + char *get_geometry_point(int num); + char *get_geometry_translation(int num); + char *get_geometry_rotation(int num); + char *get_geometry_scale(int num); + char *get_geometry_symmetry(int num); + + // mesh contexts queries + char *get_mesh_transfinite(int num); + char *get_mesh_length(int num); + char *get_mesh_attractor(int num); // create additional windows void create_general_options_window(); @@ -154,10 +197,11 @@ public: void create_mesh_options_window(); void create_post_options_window(); void create_statistics_window(); - void create_view_window(); + void create_view_window(int numview); void create_help_window(); void create_about_window(); - + void create_geometry_context_window(int num); + void create_mesh_context_window(int num); }; diff --git a/Geo/Geo.cpp b/Geo/Geo.cpp index 3cd85f660c..0f43fdbe9d 100644 --- a/Geo/Geo.cpp +++ b/Geo/Geo.cpp @@ -1,4 +1,4 @@ -// $Id: Geo.cpp,v 1.13 2001-01-09 19:40:56 remacle Exp $ +// $Id: Geo.cpp,v 1.14 2001-01-10 08:41:06 geuzaine Exp $ #include "Gmsh.h" #include "Const.h" @@ -9,6 +9,9 @@ #define BUFFSIZE 32000 +// Ceci, c'est horrible. Des que Motif est completement zingle, je +// vire et je refais une routine generique. + char x_text[100] = "0.0", y_text[100] = "0.0", z_text[100] = "0.0"; char l_text[100] = "1.0" ; char tx_text[100] = "0.0", ty_text[100] = "0.0", tz_text[100] = "0.0"; @@ -322,11 +325,6 @@ void add_multline(int N, int *p, char *fich){ add_infile(text,fich); } - -int recognize_zone(int ityp,List_T *list){ - return 0 ; -} - void add_loop(List_T *list, char *fich, int *numloop){ char text[BUFFSIZE]; char text2[BUFFSIZE]; @@ -353,10 +351,6 @@ void add_surf(List_T *list, char *fich, int support, int typ){ char text2[BUFFSIZE]; int i,seg; - if((i = recognize_zone(MSH_SURF_PLAN,list)) != 0)return; - if((i = recognize_zone(MSH_SURF_REGL,list)) != 0)return; - if((i = recognize_zone(MSH_SURF_TRIMMED,list)) != 0)return; - if(typ ==1){ sprintf(text,"Ruled Surface(%d) = {",NEWREG()); } @@ -403,8 +397,6 @@ void add_multvol(List_T *list, char *fich){ char text2[BUFFSIZE]; int i,seg; - if((i= recognize_zone(MSH_VOLUME,list)))return; - sprintf(text,"Volume(%d) = {",NEWREG()); for(i=0;i<List_Nbr(list);i++){ List_Read(list,i,&seg); @@ -437,10 +429,6 @@ void add_physical_entity(List_T *list, char *fich, int type, int *num){ char text[BUFFSIZE], text2[BUFFSIZE]; int i, elementary_entity; - if(((*num) = recognize_zone(MSH_PHYSICAL_LINE,list))) return; - if(((*num) = recognize_zone(MSH_PHYSICAL_SURFACE,list))) return; - if(((*num) = recognize_zone(MSH_PHYSICAL_VOLUME,list))) return; - *num = NEWREG(); switch(type){ case ENT_POINT : sprintf(text, "Physical Point(%d) = {", *num); break; diff --git a/Geo/Geo.h b/Geo/Geo.h index 399041339c..b8fb6db0fc 100644 --- a/Geo/Geo.h +++ b/Geo/Geo.h @@ -68,6 +68,21 @@ typedef struct { } obj; } Shape; +// static strings for parser interaction +extern char x_text[100], y_text[100], z_text[100]; +extern char l_text[100]; +extern char tx_text[100], ty_text[100], tz_text[100]; +extern char attrx_text[100], attry_text[100], attrz_text[100]; +extern char attrdec_text[100]; +extern char px_text[100], py_text[100], pz_text[100]; +extern char angle_text[100] ; +extern char ax_text[100], ay_text[100], az_text[100]; +extern char dx_text[100], dy_text[100], dz_text[100], df_text[100]; +extern char sa_text[100], sb_text[100], sc_text[100], sd_text[100]; +extern char nb_pts[100], mode_value[100]; +extern char trsf_pts_text[100], trsf_type_text[100]; +extern char trsf_vol_text[100]; +extern char char_length_text[100]; double evaluate_scalarfunction (char *var, double val, char *funct); @@ -93,8 +108,6 @@ void add_bezier(int N, int *p, char *fich); void add_bspline(int N, int *p, char *fich); void add_multline(int N, int *p, char *fich); -int recognize_zone(int ityp,List_T *list); - void add_loop(List_T *list, char *fich, int *numloop); void add_surf(List_T *list, char *fich, int support, int typ); void add_vol(List_T *list, char *fich, int *numvol); diff --git a/Motif/CbGeom.cpp b/Motif/CbGeom.cpp index 1419fc277a..4089c05295 100644 --- a/Motif/CbGeom.cpp +++ b/Motif/CbGeom.cpp @@ -1,4 +1,4 @@ -// $Id: CbGeom.cpp,v 1.1 2001-01-08 08:20:10 geuzaine Exp $ +// $Id: CbGeom.cpp,v 1.2 2001-01-10 08:41:07 geuzaine Exp $ #include "Gmsh.h" #include "GmshUI.h" @@ -14,15 +14,7 @@ extern Context_T CTX; extern Widgets_T WID; - -extern Mesh M; - -extern char x_text[100], y_text[100], z_text[100], l_text[100]; -extern char tx_text[100], ty_text[100], tz_text[100]; -extern char px_text[100], py_text[100], pz_text[100], angle_text[100]; -extern char ax_text[100], ay_text[100], az_text[100], angle_text[100]; -extern char dx_text[100], dy_text[100], dz_text[100], df_text[100]; -extern char sa_text[100], sb_text[100], sc_text[100], sd_text[100]; +extern Mesh M; static char name_text[100], value_text[100]; diff --git a/Parser/OpenFile.cpp b/Parser/OpenFile.cpp index fac0dcbafa..f4d1ff6fb2 100644 --- a/Parser/OpenFile.cpp +++ b/Parser/OpenFile.cpp @@ -1,4 +1,4 @@ -// $Id: OpenFile.cpp,v 1.3 2001-01-09 14:24:13 geuzaine Exp $ +// $Id: OpenFile.cpp,v 1.4 2001-01-10 08:41:08 geuzaine Exp $ #include "Gmsh.h" #include "Const.h" #include "Context.h" @@ -15,9 +15,12 @@ #include "Draw.h" #endif -#ifdef _XMOTIF +#if _XMOTIF #include "Widgets.h" extern Widgets_T WID; +#elif _FLTK +#include "GUI.h" +extern GUI *WID; #endif extern Mesh *THEM, M; @@ -92,14 +95,16 @@ void OpenProblem(char *name){ strncpy(THEM->name, CTX.basefilename,NAME_STR_L); -#ifdef _XMOTIF if(!CTX.interactive){ +#if _XMOTIF XtVaSetValues(WID.G.shell, XmNtitle, CTX.filename, XmNiconName, CTX.basefilename, NULL); - } +#elif _FLTK + WID->set_title(CTX.filename); #endif + } Msg(INFOS, "Opening '%s'", CTX.filename); -- GitLab