]> Creatis software - bbtk.git/blobdiff - samples/SampleOutputObserver/bbtkSampleOutputObserver.cxx
#2841 BBTK Bug New Normal - bbpConfigurator Cleaning string package:boxname ->...
[bbtk.git] / samples / SampleOutputObserver / bbtkSampleOutputObserver.cxx
index 67c40751fd24d000d21ef9be7e7214bcefa1a51c..918a967ea34c05eb66821d30840e220ca5cdb041 100644 (file)
@@ -1,3 +1,30 @@
+/*
+ # ---------------------------------------------------------------------
+ #
+ # Copyright (c) CREATIS (Centre de Recherche en Acquisition et Traitement de l'Image
+ #                        pour la SantÈ)
+ # Authors : Eduardo Davila, Frederic Cervenansky, Claire Mouton
+ # Previous Authors : Laurent Guigues, Jean-Pierre Roux
+ # CreaTools website : www.creatis.insa-lyon.fr/site/fr/creatools_accueil
+ #
+ #  This software is governed by the CeCILL-B license under French law and
+ #  abiding by the rules of distribution of free software. You can  use,
+ #  modify and/ or redistribute the software under the terms of the CeCILL-B
+ #  license as circulated by CEA, CNRS and INRIA at the following URL
+ #  http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.html
+ #  or in the file LICENSE.txt.
+ #
+ #  As a counterpart to the access to the source code and  rights to copy,
+ #  modify and redistribute granted by the license, users are provided only
+ #  with a limited warranty  and the software's author,  the holder of the
+ #  economic rights,  and the successive licensors  have only  limited
+ #  liability.
+ #
+ #  The fact that you are presently reading this means that you have had
+ #  knowledge of the CeCILL-B license and that you accept its terms.
+ # ------------------------------------------------------------------------ */
+
+
 #include <bbwxSlider.h>
 #include <bbwxLayoutLine.h>
 
 //=========================================================================
 
 //=========================================================================
-void CallbackFunction ( bbtk::BlackBox::Pointer p, 
-                       const std::string& o, 
-                       bbtk::IOStatus s)
+// FIRST EXAMPLE USING A FUNCTION AS CALLBACK
+void CallbackFunction ( bbtk::BlackBox::Pointer p,  // The black box which changed 
+                       const std::string& o, // The output which changed
+                       bbtk::IOStatus s) // The new status of the output
 {
   std::cout << "== Callback function called with p="<<p->bbGetName()
-           <<" o="<<o<<" s="<<bbtk::GetIOStatusString(s)<<std::endl;
+           <<" o="<<o<<" s="<<s/*bbtk::GetIOStatusString(s)*/<<std::endl;
+
+  // Cast the black box pointer into Slider pointer
   bbwx::Slider::Pointer slider = boost::dynamic_pointer_cast<bbwx::Slider>(p);
   if (slider)
     {
@@ -30,6 +60,7 @@ void SliderCallback()
     {
       bbwx::Slider::Pointer slider = bbwx::Slider::New("slider");
       slider->bbSetInputWinDialog(true);  // mandatory
+      // Add the observer 
       slider->bbAddOutputObserver( "Out", &CallbackFunction );
       slider->bbExecute();
     }
@@ -42,6 +73,7 @@ void SliderCallback()
 
 
 //=========================================================================
+// SECOND EXAMPLE : MEMBER METHOD CALLED WHEN SLIDER IS RELEASED
 class ClassWithTwoSliders
 {
 public:
@@ -66,6 +98,9 @@ ClassWithTwoSliders::ClassWithTwoSliders()
   try
     {
       mSlider1 = bbwx::Slider::New("slider1");
+      // Add the observer method
+      // As it is not a FREEHAND function we must use the macro 
+      // BBTK_MAKE_OUTPUT_OBSERVER which takes the object and the method to call
       mSlider1->bbAddOutputObserver("Out", 
                                    BBTK_MAKE_OUTPUT_OBSERVER
                                    (this,
@@ -105,7 +140,7 @@ void ClassWithTwoSliders::OnSlider( bbtk::BlackBox::Pointer p,
                                    bbtk::IOStatus s )
 {
   std::cout << "== 'OnSlider' called with p="<<p->bbGetName()
-           <<" o="<<o<<" s="<<bbtk::GetIOStatusString(s)<<std::endl;
+           <<" o="<<o<<" s="<<s/*bbtk::GetIOStatusString(s)*/<<std::endl;
   
   if ((p==mSlider1) && (o=="Out"))
     {
@@ -124,7 +159,7 @@ void ClassWithTwoSliders::OnSlider( bbtk::BlackBox::Pointer p,
 int main(int argv, char* argc[])
 {
  // To track all ...
-  //  bbtk::MessageManager::SetMessageLevel("all",9);
+       bbtk::MessageManager::SetMessageLevel("all",9);
   SliderCallback();
   ClassWithTwoSliders C;
 }