diff --git a/Fltk/onelabWindow.cpp b/Fltk/onelabWindow.cpp index 5e974b1d94b7fa297ccd058d944cb4a4e1b42b16..853afa2e4dd7b999ec2617e8967f2d422f49130e 100644 --- a/Fltk/onelabWindow.cpp +++ b/Fltk/onelabWindow.cpp @@ -411,30 +411,38 @@ void onelab_cb(Fl_Widget *w, void *data) return; } - if(action == "dump"){ + if(action == "save"){ std::vector<std::string> db = onelab::server::instance()->toChar(); - Msg::Direct("OneLab database dump:"); + Msg::Direct("OneLab database:"); for(unsigned int i = 0; i < db.size(); i++){ for(unsigned int j = 0; j < db[i].size(); j++) if(db[i][j] == onelab::parameter::charSep()) db[i][j] = '|'; Msg::Direct("%s", db[i].c_str()); } - std::string name = "onelab.db"; - Msg::StatusBar(2, true, "Writing database '%s'...", name.c_str()); - if(onelab::server::instance()->toFile(name)) - Msg::StatusBar(2, true, "Done writing database '%s'", name.c_str()); - else - Msg::Error("Could not write database '%s'", name.c_str()); + std::string path = SplitFileName(GModel::current()->getFileName())[0]; + if(fileChooser(FILE_CHOOSER_CREATE, "Save", "*.db", + (path + "onelab.db").c_str())){ + std::string name = fileChooserGetName(1); + Msg::StatusBar(2, true, "Writing database '%s'...", name.c_str()); + if(onelab::server::instance()->toFile(name)) + Msg::StatusBar(2, true, "Done writing database '%s'", name.c_str()); + else + Msg::Error("Could not write database '%s'", name.c_str()); + } return; } if(action == "load"){ - std::string name = "onelab.db"; - Msg::StatusBar(2, true, "Loading database '%s'...", name.c_str()); - if(onelab::server::instance()->fromFile(name)) - Msg::StatusBar(2, true, "Done loading database '%s'", name.c_str()); - else - Msg::Error("Could not load database '%s'", name.c_str()); + std::string path = SplitFileName(GModel::current()->getFileName())[0]; + if(fileChooser(FILE_CHOOSER_SINGLE, "Load", "*.db", + (path + "onelab.db").c_str())) { + std::string name = fileChooserGetName(1); + Msg::StatusBar(2, true, "Loading database '%s'...", name.c_str()); + if(onelab::server::instance()->fromFile(name)) + Msg::StatusBar(2, true, "Done loading database '%s'", name.c_str()); + else + Msg::Error("Could not load database '%s'", name.c_str()); + } action = "check"; } @@ -582,8 +590,8 @@ onelabWindow::onelabWindow(int deltaFontSize) (_butt[0]->x() - WB - BB/2, _butt[0]->y(), BB/2, BH, "@-1gmsh_gear"); _gear->align(FL_ALIGN_CENTER | FL_ALIGN_INSIDE); _gear->add("Reset database", 0, onelab_cb, (void*)"reset"); - _gear->add("Save database", 0, onelab_cb, (void*)"dump"); - _gear->add("_Load database", 0, onelab_cb, (void*)"load"); + _gear->add("Save database...", 0, onelab_cb, (void*)"save"); + _gear->add("_Load database...", 0, onelab_cb, (void*)"load"); _gear->add("Remesh automatically", 0, 0, 0, FL_MENU_TOGGLE); _gear->add("Merge results automatically", 0, 0, 0, FL_MENU_TOGGLE); _gear->add("Hide new views", 0, 0, 0, FL_MENU_TOGGLE);