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