From 8019dde91f818fc2ce6ffc8b61423b0bcebc9478 Mon Sep 17 00:00:00 2001 From: Christophe Geuzaine <cgeuzaine@ulg.ac.be> Date: Wed, 10 Oct 2012 09:42:52 +0000 Subject: [PATCH] first try at passing callback for gui update --- Fltk/onelabWindow.cpp | 7 ++++++- contrib/onelab/metamodel.cpp | 5 ++++- contrib/onelab/metamodel.h | 2 +- 3 files changed, 11 insertions(+), 3 deletions(-) diff --git a/Fltk/onelabWindow.cpp b/Fltk/onelabWindow.cpp index a748d3ddbd..9cb2d2691a 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 6943690d02..f41a8d9d22 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 72104246b2..0c5c1152b8 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)); -- GitLab