diff --git a/Fltk/solverButton.cpp b/Fltk/solverButton.cpp index f57349d8d4761e4400414760c16ac3049d8524f8..f9ffc7f0b37ba21cb4b4eb153be38b7c28033809 100644 --- a/Fltk/solverButton.cpp +++ b/Fltk/solverButton.cpp @@ -25,22 +25,15 @@ static void solver_rename_cb(Fl_Widget *w, void *data) } int num = (intptr_t)data; - std::string name = opt_solver_name(num, GMSH_GET, ""); - onelab::server::citer it = onelab::server::instance()->findClient(name); - if(it != onelab::server::instance()->lastClient()){ - delete *it; - } - - const char *n = fl_input("Solver name:", ""); + const char *n = fl_input("Solver name:", name.c_str()); if(n){ - opt_solver_name(num, GMSH_SET, name); std::string exe = opt_solver_executable(num, GMSH_GET, ""); std::string host = opt_solver_remote_login(num, GMSH_GET, ""); + // this will remove the old client if the new name is different FlGui::instance()->onelab->addSolver(n, exe, host, num); + onelab_cb(0, (void*)"reset"); } - FlGui::instance()->onelab->rebuildSolverList(); - onelab_cb(0, (void*)"reset"); } @@ -52,18 +45,9 @@ static void solver_change_exe_cb(Fl_Widget *w, void *data) } int num = (intptr_t)data; - std::string name = opt_solver_name(num, GMSH_GET, ""); - onelab::server::citer it = onelab::server::instance()->findClient(name); - if(it != onelab::server::instance()->lastClient()){ - delete *it; - } - std::string exe = opt_solver_executable(num, GMSH_GET, ""); - std::string host = opt_solver_remote_login(num, GMSH_GET, ""); - - const char *old = 0; - if(exe.size()) old = exe.c_str(); + const char *old = exe.size() ? exe.c_str() : 0; std::string title = "Choose location of " + name + " executable"; std::string pattern = "*"; #if defined(WIN32) @@ -71,13 +55,14 @@ static void solver_change_exe_cb(Fl_Widget *w, void *data) #endif if(fileChooser(FILE_CHOOSER_SINGLE, title.c_str(), pattern.c_str(), old)) exe = fileChooserGetName(1); - if(exe.size()){ - opt_solver_executable(num, GMSH_SET, exe); + // remove old client if it's already loaded + onelab::server::citer it = onelab::server::instance()->findClient(name); + if(it != onelab::server::instance()->lastClient()) delete *it; + std::string host = opt_solver_remote_login(num, GMSH_GET, ""); FlGui::instance()->onelab->addSolver(name, exe, host, num); + onelab_cb(0, (void*)"reset"); } - FlGui::instance()->onelab->rebuildSolverList(); - onelab_cb(0, (void*)"reset"); } static void solver_remove_cb(Fl_Widget *w, void *data)