]> Creatis software - bbtk.git/blobdiff - packages/std/src/bbstdMagicBox.cxx
MagicBox : support of data synchronization + various related fixes
[bbtk.git] / packages / std / src / bbstdMagicBox.cxx
index 0d3e476c3a1855a188eb6610f71f35584534af45..fe601be58f205e9d0c8e289d9af17f3e60265822 100644 (file)
@@ -2,8 +2,8 @@
   Program:   bbtk
   Module:    $RCSfile: bbstdMagicBox.cxx,v $
   Language:  C++
-  Date:      $Date: 2008/10/17 08:18:26 $
-  Version:   $Revision: 1.5 $
+  Date:      $Date: 2009/03/30 14:42:23 $
+  Version:   $Revision: 1.6 $
 =========================================================================*/
 
 /* ---------------------------------------------------------------------
 
 #include "bbstdMagicBox.h"
 #include "bbstdPackage.h"
+#include "bbtkBlackBoxOutputConnector.h"
+using namespace bbtk;
+
 namespace bbstd
 {
 
+  void MagicBox::bbSetStatusAndPropagate(bbtk::BlackBoxInputConnector* c,
+                                        bbtk::IOStatus s)
+  {
+    bbtkDebugMessageInc("change",5,
+                       "=> MagicBox::bbSetStatusAndPropagate(input,"
+                       <<GetIOStatusString(s)<<") ["
+                       <<bbGetFullName()<<"]"<<std::endl);
+   if (mCanSet)
+      {
+       if (c->IsConnected())
+         {
+           std::string do_input = c->GetConnection()->GetBlackBoxToInput();
+           c->GetConnection()->TransferData();
+           bbSetOutputOut( bbGetInput(do_input) );     
+         }
+       mCanSet = false;
+      }
+   BlackBox::bbSetStatusAndPropagate(c,s);
+  }
+
+  void MagicBox::DoProcess()
+  { 
+    mCanSet = true;
+  }
+
   BBTK_ADD_BLACK_BOX_TO_PACKAGE(std,MagicBox);
   BBTK_BLACK_BOX_IMPLEMENTATION(MagicBox,bbtk::AtomicBlackBox);