diff --git a/Fltk/onelabGroup.cpp b/Fltk/onelabGroup.cpp index add4729741038e3e4d677ecdb331aa4fd482c917..e797c6f372bab4a0052d1eb0fecf6e76d00d5cdb 100644 --- a/Fltk/onelabGroup.cpp +++ b/Fltk/onelabGroup.cpp @@ -410,7 +410,8 @@ bool gmshLocalNetworkClient::receiveMessage(gmshLocalNetworkClient *master) Msg::Error("The file <%s> cannot be opened",ofileName.c_str()); outfile.close(); - std::string reply = onelab::server::instance()->getChanged(c->getName()) ? "changed" : "unchanged"; + std::string reply = onelab::server::instance()->getChanged(c->getName()) ? + "changed" : "unchanged"; getGmshServer()->SendMessage (GmshSocket::GMSH_OLPARSE, reply.size(), &reply[0]); @@ -731,23 +732,37 @@ static void loadDb(const std::string &name) static void resetDb(bool runGmshClient) { - // clear everything except command line and model name setup (maybe we - // should just re-run initialize?) Msg::Info("Resetting database"); - std::vector<onelab::number> useCommandLines, guessModelNames; - std::vector<onelab::string> fileExtensions; + + // clear everything except persistent parameters + std::vector<onelab::number> allNumbers, persistentNumbers; + std::vector<onelab::string> allStrings, persistentStrings; + onelab::server::instance()->get(allNumbers); + onelab::server::instance()->get(allStrings); + for(unsigned int i = 0; i < allNumbers.size(); i++){ + if(allNumbers[i].getAttribute("Persistent") == "1") + persistentNumbers.push_back(allNumbers[i]); + } + for(unsigned int i = 0; i < allStrings.size(); i++){ + if(allStrings[i].getAttribute("Persistent") == "1") + persistentStrings.push_back(allStrings[i]); + } + + // TODO FIXME: this will be removed once the new stable version of getdp is + // released for(onelab::server::citer it = onelab::server::instance()->firstClient(); it != onelab::server::instance()->lastClient(); it++){ onelab::client *c = it->second; std::vector<onelab::number> ps; c->get(ps, c->getName() + "/UseCommandLine"); - if(ps.size()) useCommandLines.push_back(ps[0]); + if(ps.size()) persistentNumbers.push_back(ps[0]); c->get(ps, c->getName() + "/GuessModelName"); - if(ps.size()) guessModelNames.push_back(ps[0]); + if(ps.size()) persistentNumbers.push_back(ps[0]); std::vector<onelab::string> ps2; c->get(ps2, c->getName() + "/FileExtension"); - if(ps2.size()) fileExtensions.push_back(ps2[0]); + if(ps2.size()) persistentStrings.push_back(ps2[0]); } + // END TODO // clear the db onelab::server::instance()->clear(); @@ -756,12 +771,16 @@ static void resetDb(bool runGmshClient) onelab::server::instance()->lastClient()) onelabUtils::runGmshClient("reset", CTX::instance()->solver.autoMesh); - for(unsigned int i = 0; i < useCommandLines.size(); i++) - onelab::server::instance()->set(useCommandLines[i]); - for(unsigned int i = 0; i < guessModelNames.size(); i++) - onelab::server::instance()->set(guessModelNames[i]); - for(unsigned int i = 0; i < fileExtensions.size(); i++) - onelab::server::instance()->set(fileExtensions[i]); + for(unsigned int i = 0; i < persistentNumbers.size(); i++){ + Msg::Info("Restoring persistent parameter %s", + persistentNumbers[i].getName().c_str()); + onelab::server::instance()->set(persistentNumbers[i]); + } + for(unsigned int i = 0; i < persistentStrings.size(); i++){ + Msg::Info("Restoring persistent parameter %s", + persistentStrings[i].getName().c_str()); + onelab::server::instance()->set(persistentStrings[i]); + } } void onelab_cb(Fl_Widget *w, void *data)