From 956eb1c52fa1be5d43033a61d02c5a9420f85bdc Mon Sep 17 00:00:00 2001 From: Christophe Geuzaine <cgeuzaine@ulg.ac.be> Date: Fri, 4 May 2001 13:39:35 +0000 Subject: [PATCH] Solver options --- Common/DefaultOptions.h | 19 +++++++++++++++-- Common/Options.cpp | 42 ++++++++++++++++++++++++++++++++++++- Common/Options.h | 6 ++++++ Fltk/Callbacks.cpp | 11 +++++++++- Fltk/Callbacks.h | 1 + Fltk/GUI.cpp | 46 ++++++++++++++++++++++++++++++----------- Fltk/GUI.h | 3 ++- Fltk/Solvers.cpp | 16 +++++++------- Fltk/Solvers.h | 2 ++ 9 files changed, 122 insertions(+), 24 deletions(-) diff --git a/Common/DefaultOptions.h b/Common/DefaultOptions.h index a737128f27..c5ff7066ac 100644 --- a/Common/DefaultOptions.h +++ b/Common/DefaultOptions.h @@ -20,9 +20,9 @@ StringXString GeneralOptions_String[] = { { F|S, "ErrorFileName" , opt_general_error_filename , ".gmsh-errors" }, { F|S, "OptionsFileName" , opt_general_options_filename , ".gmsh-options" }, #ifdef WIN32 - { F|O, "Editor" , opt_general_editor , "notepad %s" }, + { F|O, "TextEditor" , opt_general_editor , "notepad %s" }, #else - { F|O, "Editor" , opt_general_editor , "emacs %s &" }, + { F|O, "TextEditor" , opt_general_editor , "emacs %s &" }, #endif { 0, NULL , NULL , NULL } } ; @@ -35,6 +35,11 @@ StringXString MeshOptions_String[] = { { 0, NULL , NULL , NULL } } ; +StringXString SolverOptions_String[] = { + { F|O, "GetDPCommand" , opt_solver_getdp_command , "getdp %s" }, + { 0, NULL , NULL , NULL } +} ; + StringXString PostProcessingOptions_String[] = { { 0, NULL , NULL , NULL } } ; @@ -220,6 +225,12 @@ StringXNumber MeshOptions_Number[] = { { 0, NULL , NULL , 0. } } ; +StringXNumber SolverOptions_Number[] = { + { F|O, "GetDPPopupMessages" , opt_solver_getdp_popupmessages , 1.0 }, + { F|O, "GetDPMergeViews" , opt_solver_getdp_mergeviews , 1.0 }, + { 0, NULL , NULL , 0. } +} ; + StringXNumber PostProcessingOptions_Number[] = { { F|O, "Scales" , opt_post_scales , 1. }, { F|O, "Link" , opt_post_link , 0. }, @@ -451,6 +462,10 @@ StringXColor MeshOptions_Color[] = { { 0, NULL , NULL , 0, 0, 0 } } ; +StringXColor SolverOptions_Color[] = { + { 0, NULL , NULL , 0, 0, 0 } +} ; + StringXColor PostProcessingOptions_Color[] = { { 0, NULL , NULL , 0, 0, 0 } } ; diff --git a/Common/Options.cpp b/Common/Options.cpp index 7394b6272b..ed5e80f058 100644 --- a/Common/Options.cpp +++ b/Common/Options.cpp @@ -1,4 +1,4 @@ -// $Id: Options.cpp,v 1.13 2001-05-03 08:41:55 geuzaine Exp $ +// $Id: Options.cpp,v 1.14 2001-05-04 13:39:34 geuzaine Exp $ #include "Gmsh.h" #include "GmshUI.h" @@ -7,6 +7,7 @@ #include "Draw.h" #include "Context.h" #include "Options.h" +#include "Solvers.h" extern Context_T CTX ; @@ -30,6 +31,7 @@ void Init_Options(int num){ Set_DefaultStringOptions(num, GeneralOptions_String); Set_DefaultStringOptions(num, GeometryOptions_String); Set_DefaultStringOptions(num, MeshOptions_String); + Set_DefaultStringOptions(num, SolverOptions_String); Set_DefaultStringOptions(num, PostProcessingOptions_String); Set_DefaultStringOptions(num, ViewOptions_String); Set_DefaultStringOptions(num, PrintOptions_String); @@ -38,6 +40,7 @@ void Init_Options(int num){ Set_DefaultNumberOptions(num, GeneralOptions_Number); Set_DefaultNumberOptions(num, GeometryOptions_Number); Set_DefaultNumberOptions(num, MeshOptions_Number); + Set_DefaultNumberOptions(num, SolverOptions_Number); Set_DefaultNumberOptions(num, PostProcessingOptions_Number); Set_DefaultNumberOptions(num, ViewOptions_Number); Set_DefaultNumberOptions(num, PrintOptions_Number); @@ -46,6 +49,7 @@ void Init_Options(int num){ Set_DefaultColorOptions(num, GeneralOptions_Color, CTX.color_scheme); Set_DefaultColorOptions(num, GeometryOptions_Color, CTX.color_scheme); Set_DefaultColorOptions(num, MeshOptions_Color, CTX.color_scheme); + Set_DefaultColorOptions(num, SolverOptions_Color, CTX.color_scheme); Set_DefaultColorOptions(num, PostProcessingOptions_Color, CTX.color_scheme); Set_DefaultColorOptions(num, ViewOptions_Color, CTX.color_scheme); Set_DefaultColorOptions(num, PrintOptions_Color, CTX.color_scheme); @@ -83,18 +87,21 @@ void Init_Options_GUI(int num){ Set_StringOptions_GUI(num, GeneralOptions_String); Set_StringOptions_GUI(num, GeometryOptions_String); Set_StringOptions_GUI(num, MeshOptions_String); + Set_StringOptions_GUI(num, SolverOptions_String); Set_StringOptions_GUI(num, PostProcessingOptions_String); Set_StringOptions_GUI(num, PrintOptions_String); Set_NumberOptions_GUI(num, GeneralOptions_Number); Set_NumberOptions_GUI(num, GeometryOptions_Number); Set_NumberOptions_GUI(num, MeshOptions_Number); + Set_NumberOptions_GUI(num, SolverOptions_Number); Set_NumberOptions_GUI(num, PostProcessingOptions_Number); Set_NumberOptions_GUI(num, PrintOptions_Number); Set_ColorOptions_GUI(num, GeneralOptions_Color); Set_ColorOptions_GUI(num, GeometryOptions_Color); Set_ColorOptions_GUI(num, MeshOptions_Color); + Set_ColorOptions_GUI(num, SolverOptions_Color); Set_ColorOptions_GUI(num, PostProcessingOptions_Color); Set_ColorOptions_GUI(num, PrintOptions_Color); } @@ -144,6 +151,9 @@ void Print_Options(int num, int level, char *filename){ Print_StringOptions(num, level, MeshOptions_String, "Mesh.", file); Print_NumberOptions(num, level, MeshOptions_Number, "Mesh.", file); Print_ColorOptions(num, level, MeshOptions_Color, "Mesh.", file); + Print_StringOptions(num, level, SolverOptions_String, "Solver.", file); + Print_NumberOptions(num, level, SolverOptions_Number, "Solver.", file); + Print_ColorOptions(num, level, SolverOptions_Color, "Solver.", file); Print_StringOptions(num, level, PostProcessingOptions_String, "PostProcessing.", file); Print_NumberOptions(num, level, PostProcessingOptions_Number, "PostProcessing.", file); Print_ColorOptions(num, level, PostProcessingOptions_Color, "PostProcessing.", file); @@ -182,6 +192,7 @@ StringXString * Get_StringOptionCategory(char * cat){ if (!strcmp(cat,"General")) return GeneralOptions_String ; else if(!strcmp(cat,"Geometry")) return GeometryOptions_String ; else if(!strcmp(cat,"Mesh")) return MeshOptions_String ; + else if(!strcmp(cat,"Solver")) return SolverOptions_String ; else if(!strcmp(cat,"PostProcessing")) return PostProcessingOptions_String ; else if(!strcmp(cat,"View")) return ViewOptions_String ; else if(!strcmp(cat,"Print")) return PrintOptions_String ; @@ -231,6 +242,7 @@ StringXNumber * Get_NumberOptionCategory(char * cat){ if (!strcmp(cat,"General")) return GeneralOptions_Number ; else if(!strcmp(cat,"Geometry")) return GeometryOptions_Number ; else if(!strcmp(cat,"Mesh")) return MeshOptions_Number ; + else if(!strcmp(cat,"Solver")) return SolverOptions_Number ; else if(!strcmp(cat,"PostProcessing")) return PostProcessingOptions_Number ; else if(!strcmp(cat,"View")) return ViewOptions_Number ; else if(!strcmp(cat,"Print")) return PrintOptions_Number ; @@ -282,6 +294,7 @@ StringXColor * Get_ColorOptionCategory(char * cat){ if (!strcmp(cat,"General")) return GeneralOptions_Color ; else if(!strcmp(cat,"Geometry")) return GeometryOptions_Color ; else if(!strcmp(cat,"Mesh")) return MeshOptions_Color ; + else if(!strcmp(cat,"Solver")) return SolverOptions_Color ; else if(!strcmp(cat,"PostProcessing")) return PostProcessingOptions_Color ; else if(!strcmp(cat,"View")) return ViewOptions_Color ; else if(!strcmp(cat,"Print")) return PrintOptions_Color ; @@ -440,6 +453,14 @@ char * opt_general_editor(OPT_ARGS_STR){ return CTX.editor; } +char * opt_solver_getdp_command(OPT_ARGS_STR){ + if(action & GMSH_SET) GetDP_Info.command = val; +#ifdef _FLTK + if(WID && (action & GMSH_GUI)) + WID->getdp_input[0]->value(GetDP_Info.command); +#endif + return GetDP_Info.command; +} char * opt_view_name(OPT_ARGS_STR){ GET_VIEW(NULL) ; @@ -1392,6 +1413,25 @@ double opt_mesh_color_carousel(OPT_ARGS_NUM){ } +double opt_solver_getdp_popupmessages(OPT_ARGS_NUM){ + if(action & GMSH_SET) + GetDP_Info.popupmessages = (int)val; +#ifdef _FLTK + if(WID && (action & GMSH_GUI)) + WID->getdp_butt[0]->value(GetDP_Info.popupmessages); +#endif + return GetDP_Info.popupmessages; +} +double opt_solver_getdp_mergeviews(OPT_ARGS_NUM){ + if(action & GMSH_SET) + GetDP_Info.mergeviews = (int)val; +#ifdef _FLTK + if(WID && (action & GMSH_GUI)) + WID->getdp_butt[1]->value(GetDP_Info.mergeviews); +#endif + return GetDP_Info.mergeviews; +} + double opt_post_scales(OPT_ARGS_NUM){ if(action & GMSH_SET) diff --git a/Common/Options.h b/Common/Options.h index 9edd600656..3634054ad9 100644 --- a/Common/Options.h +++ b/Common/Options.h @@ -24,6 +24,7 @@ char * opt_general_error_filename(OPT_ARGS_STR); char * opt_general_session_filename(OPT_ARGS_STR); char * opt_general_options_filename(OPT_ARGS_STR); char * opt_general_editor(OPT_ARGS_STR); +char * opt_solver_getdp_command(OPT_ARGS_STR); char * opt_view_name(OPT_ARGS_STR); char * opt_view_format(OPT_ARGS_STR); char * opt_view_filename(OPT_ARGS_STR); @@ -178,6 +179,8 @@ double opt_mesh_cut_planec(OPT_ARGS_NUM); double opt_mesh_cut_planed(OPT_ARGS_NUM); double opt_mesh_color_scheme(OPT_ARGS_NUM); double opt_mesh_color_carousel(OPT_ARGS_NUM); +double opt_solver_getdp_popupmessages(OPT_ARGS_NUM); +double opt_solver_getdp_mergeviews(OPT_ARGS_NUM); double opt_post_scales(OPT_ARGS_NUM); double opt_post_link(OPT_ARGS_NUM); double opt_post_smooth(OPT_ARGS_NUM); @@ -327,6 +330,7 @@ void Print_ColorOptions(int num, int level, StringXColor s[], char *prefix, FILE extern StringXString GeneralOptions_String[] ; extern StringXString GeometryOptions_String[] ; extern StringXString MeshOptions_String[] ; +extern StringXString SolverOptions_String[] ; extern StringXString PostProcessingOptions_String[] ; extern StringXString ViewOptions_String[] ; extern StringXString PrintOptions_String[] ; @@ -334,6 +338,7 @@ extern StringXString PrintOptions_String[] ; extern StringXNumber GeneralOptions_Number[] ; extern StringXNumber GeometryOptions_Number[] ; extern StringXNumber MeshOptions_Number[] ; +extern StringXNumber SolverOptions_Number[] ; extern StringXNumber PostProcessingOptions_Number[] ; extern StringXNumber ViewOptions_Number[] ; extern StringXNumber PrintOptions_Number[] ; @@ -341,6 +346,7 @@ extern StringXNumber PrintOptions_Number[] ; extern StringXColor GeneralOptions_Color[] ; extern StringXColor GeometryOptions_Color[] ; extern StringXColor MeshOptions_Color[] ; +extern StringXColor SolverOptions_Color[] ; extern StringXColor PostProcessingOptions_Color[] ; extern StringXColor ViewOptions_Color[] ; extern StringXColor PrintOptions_Color[] ; diff --git a/Fltk/Callbacks.cpp b/Fltk/Callbacks.cpp index 52c077f6e2..38451994b9 100644 --- a/Fltk/Callbacks.cpp +++ b/Fltk/Callbacks.cpp @@ -1,4 +1,4 @@ -// $Id: Callbacks.cpp,v 1.48 2001-05-03 08:41:55 geuzaine Exp $ +// $Id: Callbacks.cpp,v 1.49 2001-05-04 13:39:34 geuzaine Exp $ #include <map> #include "Gmsh.h" @@ -1338,6 +1338,7 @@ void getdp_choose_mesh_cb(CALLBACK_ARGS){ } void getdp_pre_cb(CALLBACK_ARGS){ char arg[256]; + if(GetDP_Info.popupmessages) WID->create_message_window(); if(strlen(GetDP_Info.mesh)) sprintf(arg, "%s -msh %s -pre %s", GetDP_Info.file, GetDP_Info.mesh, @@ -1351,6 +1352,7 @@ void getdp_pre_cb(CALLBACK_ARGS){ } void getdp_cal_cb(CALLBACK_ARGS){ char arg[256]; + if(GetDP_Info.popupmessages) WID->create_message_window(); if(strlen(GetDP_Info.mesh)) sprintf(arg, "%s -msh %s -cal", GetDP_Info.file, GetDP_Info.mesh); else @@ -1359,6 +1361,7 @@ void getdp_cal_cb(CALLBACK_ARGS){ } void getdp_post_cb(CALLBACK_ARGS){ char arg[256]; + if(GetDP_Info.popupmessages) WID->create_message_window(); if(strlen(GetDP_Info.mesh)) sprintf(arg, "%s -msh %s -bin -pos %s", GetDP_Info.file, GetDP_Info.mesh, @@ -1369,6 +1372,12 @@ void getdp_post_cb(CALLBACK_ARGS){ GetDP_Info.postop[WID->getdp_choice[1]->value()]); GetDP(arg); } +void getdp_ok_cb(CALLBACK_ARGS){ + opt_solver_getdp_popupmessages(0, GMSH_SET, WID->getdp_butt[0]->value()); + opt_solver_getdp_mergeviews(0, GMSH_SET, WID->getdp_butt[1]->value()); + + opt_solver_getdp_command(0, GMSH_SET, (char*)WID->getdp_input[0]->value()); +} // Dynamic Post Menus diff --git a/Fltk/Callbacks.h b/Fltk/Callbacks.h index f0b2c4da4b..3daef2575d 100644 --- a/Fltk/Callbacks.h +++ b/Fltk/Callbacks.h @@ -190,6 +190,7 @@ void getdp_choose_mesh_cb(CALLBACK_ARGS); void getdp_pre_cb(CALLBACK_ARGS); void getdp_cal_cb(CALLBACK_ARGS); void getdp_post_cb(CALLBACK_ARGS); +void getdp_ok_cb(CALLBACK_ARGS); // Dynamic post menus diff --git a/Fltk/GUI.cpp b/Fltk/GUI.cpp index dcbe8510f7..e8c64ad943 100644 --- a/Fltk/GUI.cpp +++ b/Fltk/GUI.cpp @@ -1,4 +1,4 @@ -// $Id: GUI.cpp,v 1.65 2001-05-03 08:47:52 geuzaine Exp $ +// $Id: GUI.cpp,v 1.66 2001-05-04 13:39:34 geuzaine Exp $ // To make the interface as visually consistent as possible, please: // - use the BH, BW, WB, IW values for button heights/widths, window borders, etc. @@ -2360,17 +2360,20 @@ void GUI::create_getdp_window(){ g[0]->labelsize(CTX.fontsize); getdp_value[0] = new Fl_Output(8*CTX.fontsize, 2*WB+1*BH, BW, BH, "Problem"); - getdp_butt[0] = new Fl_Button(8*CTX.fontsize+BW-2*BB-WB, 3*WB+2*BH, BB, BH, "Edit"); - getdp_butt[0]->callback(getdp_file_edit_cb); - getdp_butt[1] = new Fl_Button(8*CTX.fontsize+BW-BB, 3*WB+2*BH, BB, BH, "Choose"); - getdp_butt[1]->callback(getdp_file_open_cb); + Fl_Button *b1 = new Fl_Button(8*CTX.fontsize+BW-2*BB-WB, 3*WB+2*BH, BB, BH, "Edit"); + b1->callback(getdp_file_edit_cb); + b1->labelsize(CTX.fontsize); + Fl_Button *b2 = new Fl_Button(8*CTX.fontsize+BW-BB, 3*WB+2*BH, BB, BH, "Choose"); + b2->callback(getdp_file_open_cb); + b2->labelsize(CTX.fontsize); getdp_choice[0] = new Fl_Choice(8*CTX.fontsize, 4*WB+3*BH, BW, BH,"Resolution"); getdp_choice[1] = new Fl_Choice(8*CTX.fontsize, 5*WB+4*BH, BW, BH,"PostOperation"); getdp_value[1] = new Fl_Output(8*CTX.fontsize, 6*WB+5*BH, BW, BH, "Mesh"); - getdp_butt[2] = new Fl_Button(8*CTX.fontsize+BW-BB, 7*WB+6*BH, BB, BH, "Choose"); - getdp_butt[2]->callback(getdp_choose_mesh_cb); + Fl_Button *b3 = new Fl_Button(8*CTX.fontsize+BW-BB, 7*WB+6*BH, BB, BH, "Choose"); + b3->callback(getdp_choose_mesh_cb); + b3->labelsize(CTX.fontsize); for(i=0 ; i<2 ; i++){ getdp_value[i]->labelsize(CTX.fontsize); @@ -2379,11 +2382,6 @@ void GUI::create_getdp_window(){ getdp_value[i]->align(FL_ALIGN_LEFT); getdp_value[i]->value(0); } - - for(i=0 ; i<3 ; i++){ - getdp_butt[i]->labelsize(CTX.fontsize); - } - for(i=0 ; i<2 ; i++){ getdp_choice[i]->textsize(CTX.fontsize); getdp_choice[i]->labelsize(CTX.fontsize); @@ -2391,6 +2389,30 @@ void GUI::create_getdp_window(){ g[0]->end(); } + { + g[1] = new Fl_Group(WB, WB+BH, width-2*WB, height-3*WB-2*BH, "Options"); + g[1]->labelsize(CTX.fontsize); + + getdp_input[0] = new Fl_Input(2*WB, 2*WB+1*BH, BW, BH, "Command"); + getdp_input[0]->labelsize(CTX.fontsize); + getdp_input[0]->textsize(CTX.fontsize); + getdp_input[0]->align(FL_ALIGN_RIGHT); + + getdp_butt[0] = new Fl_Check_Button(2*WB, 2*WB+2*BH, BW, BH, "Popup message window"); + getdp_butt[1] = new Fl_Check_Button(2*WB, 2*WB+3*BH, BW, BH, "Open post-processing views"); + for(i=0 ; i<2 ; i++){ + getdp_butt[i]->type(FL_TOGGLE_BUTTON); + getdp_butt[i]->down_box(FL_DOWN_BOX); + getdp_butt[i]->labelsize(CTX.fontsize); + getdp_butt[i]->selection_color(FL_YELLOW); + } + + Fl_Return_Button* o = new Fl_Return_Button(width-BB-2*WB, 2*WB+7*BH, BB, BH, "OK"); + o->labelsize(CTX.fontsize); + o->callback(getdp_ok_cb); + + g[0]->end(); + } o->end(); } diff --git a/Fltk/GUI.h b/Fltk/GUI.h index cda15ce554..ae24396cb5 100644 --- a/Fltk/GUI.h +++ b/Fltk/GUI.h @@ -173,8 +173,9 @@ public: int init_getdp_window; Fl_Window *getdp_window ; Fl_Output *getdp_value[50] ; + Fl_Input *getdp_input[50] ; Fl_Choice *getdp_choice[10] ; - Fl_Button *getdp_butt[10] ; + Fl_Check_Button *getdp_butt[10] ; // the constructor GUI(int argc, char **argv); diff --git a/Fltk/Solvers.cpp b/Fltk/Solvers.cpp index bec18c3e50..d58cc4531d 100644 --- a/Fltk/Solvers.cpp +++ b/Fltk/Solvers.cpp @@ -1,4 +1,4 @@ -// $Id: Solvers.cpp,v 1.2 2001-05-04 11:53:01 geuzaine Exp $ +// $Id: Solvers.cpp,v 1.3 2001-05-04 13:39:34 geuzaine Exp $ #include "Gmsh.h" @@ -49,7 +49,7 @@ int GetDP(char *args){ GET_PATH(sockname); strcat(sockname, ".gmshsock"); - sprintf(progname, "getdp %s", args); + sprintf(progname, GetDP_Info.command, args); sock = Socket_StartProgram(progname, sockname); if(sock<0){ Msg(GERROR, "Could not execute '%s'", progname); @@ -79,11 +79,13 @@ int GetDP(char *args){ strcpy(GetDP_Info.postop[GetDP_Info.nbpostop++],str); break ; case GETDP_LOAD_VIEW : - n = List_Nbr(Post_ViewList); - MergeProblem(str); - Draw(); - if(n != List_Nbr(Post_ViewList)) - WID->set_context(menu_post, 0); + if(GetDP_Info.mergeviews){ + n = List_Nbr(Post_ViewList); + MergeProblem(str); + Draw(); + if(n != List_Nbr(Post_ViewList)) + WID->set_context(menu_post, 0); + } break ; case GETDP_INFO : Msg(DIRECT, "GetDP > %s", str); diff --git a/Fltk/Solvers.h b/Fltk/Solvers.h index c76c494ab0..f717733657 100644 --- a/Fltk/Solvers.h +++ b/Fltk/Solvers.h @@ -11,6 +11,8 @@ #define GETDP_LOAD_VIEW 5 typedef struct{ + char *command; + int popupmessages, mergeviews; int nbres, nbpostop; char res[100][100]; char postop[100][100]; -- GitLab