Skip to content
Snippets Groups Projects
Commit b6a9ae83 authored by Christophe Geuzaine's avatar Christophe Geuzaine
Browse files

onelab refinements

parent 82e30611
No related branches found
No related tags found
No related merge requests found
......@@ -378,12 +378,17 @@ namespace onelab{
}
public:
parameterSpace(){}
~parameterSpace()
~parameterSpace(){ clear(); }
void clear()
{
std::set<parameter*> ps;
_getAllParameters(ps);
for(std::set<parameter*>::iterator it = ps.begin(); it != ps.end(); it++)
delete *it;
_numbers.clear();
_strings.clear();
_regions.clear();
_functions.clear();
}
bool set(number &p, bool value=true){ return _set(p, _numbers, value); }
bool set(string &p, bool value=true){ return _set(p, _strings, value); }
......@@ -487,6 +492,7 @@ namespace onelab{
if(!_server) _server = new server(address);
return _server;
}
void clear(){ _parameterSpace.clear(); }
template <class T> bool set(T &p, bool value=true)
{
return _parameterSpace.set(p, value);
......
......@@ -93,6 +93,23 @@ static void gmsh_clscale(Fl_Color c)
bl; vv(-0.2,0.2); vv(0.9,0.2); vv(-0.2,-0.9); el;
}
static void gmsh_gear(Fl_Color c)
{
fl_color(c);
fl_line_style(FL_SOLID, 2);
fl_begin_line(); fl_arc(0.0, 0.0, 0.5, 0.0, 360.0); fl_end_line();
for(int i = 0; i < 8; i++){
fl_rotate(i * 360./8.);
fl_begin_complex_polygon();
fl_vertex(0.5, -0.13);
fl_vertex(1.0, -0.13);
fl_vertex(1.0, 0.13);
fl_vertex(0.5, 0.13);
fl_end_complex_polygon();
}
fl_line_style(FL_SOLID);
}
#undef vv
#undef bl
#undef el
......@@ -469,6 +486,7 @@ graphicWindow::graphicWindow(bool main, int numTiles)
fl_add_symbol("gmsh_rotate", gmsh_rotate, 1);
fl_add_symbol("gmsh_models", gmsh_models, 1);
fl_add_symbol("gmsh_clscale", gmsh_clscale, 1);
fl_add_symbol("gmsh_gear", gmsh_gear, 1);
first = false;
}
......
......@@ -74,12 +74,16 @@ bool onelab::localNetworkClient::run(const std::string &what)
_pid = 0;
onelabGmshServer *server = new onelabGmshServer(this);
std::string sockname = "localhost:1631";
std::string command = _commandLine + " " + what + " -onelab " + sockname + " &";
std::string sockname = CTX::instance()->solver.socketName;
std::string command = _commandLine + " " + what + " -onelab " + sockname;
#if !defined(WIN32)
command += " &";
#endif
int sock;
try{
sock = server->Start(command.c_str(), sockname.c_str(), 30);
sock = server->Start(command.c_str(), sockname.c_str(),
CTX::instance()->solver.timeout);
}
catch(const char *err){
Msg::Error("%s (on socket '%s')", err, sockname.c_str());
......@@ -228,6 +232,14 @@ void onelab_cb(Fl_Widget *w, void *data)
if(!data) return;
std::string action((const char*)data);
if(action == "reset"){
onelab::server::instance()->clear();
if(onelab::server::instance()->findClient("Gmsh") !=
onelab::server::instance()->lastClient())
geometry_reload_cb(0, 0);
action = "initial check";
}
if(action == "choose model"){
if(fileChooser(FILE_CHOOSER_SINGLE, "Choose", "*.pro"))
FlGui::instance()->onelab->setModelName(fileChooserGetName(1));
......@@ -252,8 +264,10 @@ void onelab_cb(Fl_Widget *w, void *data)
}
else if(action == "compute"){
geometry_reload_cb(0, 0);
if(FlGui::instance()->onelab->meshAuto()){
mesh_3d_cb(0, 0);
mesh_save_cb(0, (void*)"force overwrite");
}
onelab::server::instance()->setChanged(false, "Gmsh");
}
}
......@@ -349,6 +363,16 @@ onelabWindow::onelabWindow(int deltaFontSize)
_butt[1] = new Fl_Button(width - 2*WB - 2*BB, height - WB - BH, BB, BH, "Check");
_butt[1]->callback(onelab_cb, (void*)"check");
static Fl_Menu_Item gear_menu[] = {
{"Reset database", 0, onelab_cb, (void*)"reset"},
{"Mesh automatically", 0, 0, 0, FL_MENU_TOGGLE},
{0}
};
gear_menu[1].set();
_gear = new Fl_Menu_Button
(_butt[1]->x() - WB - BB/2, _butt[1]->y(), BB/2, BH, "@-1gmsh_gear");
_gear->menu(gear_menu);
Fl_Box *resbox = new Fl_Box(WB, height - BH - 3 * WB, WB, WB);
_win->resizable(resbox);
......@@ -358,6 +382,7 @@ onelabWindow::onelabWindow(int deltaFontSize)
FL_NORMAL_SIZE += deltaFontSize;
// FIXME adding GetDP client
onelab::server::instance()->registerClient
(new onelab::localNetworkClient("GetDP",
opt_solver_executable0(0, GMSH_GET, "")));
......
......@@ -21,6 +21,7 @@ class onelabWindow{
Fl_Tree *_tree;
Fl_Button *_butt[2];
Fl_Input *_model;
Fl_Menu_Button *_gear;
std::vector<Fl_Widget*> _treeWidgets;
public:
onelabWindow(int deltaFontSize=0);
......@@ -31,6 +32,7 @@ class onelabWindow{
void show(){ _win->show(); }
std::string getModelName(){ return _model->value(); }
void setModelName(const std::string &name){ _model->value(name.c_str()); }
int meshAuto(){ return _gear->menu()[1].value(); }
std::string getPath(Fl_Tree_Item *item)
{
char path[1024];
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment