diff --git a/Fltk/onelabWindow.cpp b/Fltk/onelabWindow.cpp index a748d3ddbde94b8240f04a83a3311a4b5b2bfe8f..9cb2d2691a8aae9ecc0ae51cfaaa05a4c58449d0 100644 --- a/Fltk/onelabWindow.cpp +++ b/Fltk/onelabWindow.cpp @@ -1336,6 +1336,11 @@ void solver_cb(Fl_Widget *w, void *data) onelab_cb(0, (void*)"check"); } +void flgui_wait_cb(double time) +{ + FlGui::instance()->wait(time); +} + int metamodel_cb(const std::string &name, const std::string &action) { #if defined(HAVE_ONELAB_METAMODEL) @@ -1343,7 +1348,7 @@ int metamodel_cb(const std::string &name, const std::string &action) if(FlGui::instance()->onelab->isBusy()) FlGui::instance()->onelab->show(); else{ - initializeMetamodel(Msg::GetOnelabClient()); + initializeMetamodel(Msg::GetOnelabClient(), &flgui_wait_cb); onelab::number n("IsMetamodel", 1.); n.setVisible(false); diff --git a/contrib/onelab/metamodel.cpp b/contrib/onelab/metamodel.cpp index 6943690d02c9c7b6565fcef98b0c93aca3d6a5ab..f41a8d9d224cf13599f67209cf829605d4050c4e 100644 --- a/contrib/onelab/metamodel.cpp +++ b/contrib/onelab/metamodel.cpp @@ -1,13 +1,16 @@ #include "OnelabClients.h" #include "metamodel.h" -void initializeMetamodel(onelab::client *client) +void (*my_gui_wait_fct)(double time) = 0; + +void initializeMetamodel(onelab::client *client, void (*gui_wait_fct)(double time)) { //called by "metamodel_cb" //copies the Msg::_onelabClient to OLMsg::_onelabClient //This pointer refers to an object of class localGmsh() (cf GmshMessage.cpp) //which is a onelab::client with sone Gmsh features (merge and messages). OLMsg::SetOnelabClient(client); + my_gui_wait_fct = gui_wait_fct; } int metamodel(const std::string &action){ diff --git a/contrib/onelab/metamodel.h b/contrib/onelab/metamodel.h index 72104246b2eec49cd6a39609ac5ce93385efd3f9..0c5c1152b8e3e0170a618d79a7b5f3edfa3b516c 100644 --- a/contrib/onelab/metamodel.h +++ b/contrib/onelab/metamodel.h @@ -3,4 +3,4 @@ namespace onelab{ class client; } int metamodel(const std::string &todo); -void initializeMetamodel(onelab::client *); +void initializeMetamodel(onelab::client *, void (*wait)(double time));