]> Creatis software - bbtk.git/blobdiff - kernel/src/bbtkKWBlackBox.cxx
Feature #1774
[bbtk.git] / kernel / src / bbtkKWBlackBox.cxx
index 99a0da480292be5bc98768ff481a1d428c7975d1..6a7ae09abc7783f91d21e651068dc4dd5b0bb8bb 100644 (file)
@@ -1,32 +1,39 @@
-/*=========================================================================                                                                               
+/*
+ # ---------------------------------------------------------------------
+ #
+ # 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.
+ # ------------------------------------------------------------------------ */
+
+
+/*=========================================================================
   Program:   bbtk
   Module:    $RCSfile: bbtkKWBlackBox.cxx,v $
   Language:  C++
-  Date:      $Date: 2008/12/03 09:38:02 $
-  Version:   $Revision: 1.5 $
+  Date:      $Date: 2012/11/16 08:49:01 $
+  Version:   $Revision: 1.11 $
 =========================================================================*/
 
-/* ---------------------------------------------------------------------
 
-* Copyright (c) CREATIS-LRMN (Centre de Recherche en Imagerie Medicale)
-* Authors : Eduardo Davila, Laurent Guigues, Jean-Pierre Roux
-*
-*  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.
-* ------------------------------------------------------------------------ */                                                                         
 /**
  *  \file 
  *  \brief 
 
 #ifdef USE_KWWIDGETS
 
-
-
-
 #include "bbtkKWBlackBox.h"
+#include "bbtkBlackBoxOutputConnector.h"
 #include "vtkKWBlackBoxDialog.h"
 
-
 namespace bbtk
 {
-
-
-
-  /*
-  //=========================================================================
-  // KWBlackBoxWidgetEventHandler
-  //=========================================================================
-
-  //=========================================================================
-  KWBlackBoxWidgetEventHandler::
-  KWBlackBoxWidgetEventHandler( KWBlackBox::Pointer box, 
-                               vtkKWWidget *widget )
-    :
-    mBox(box),
-    mWindow(widget)
-  { 
-    bbtkDebugMessage("kw",9,"KWBlackBoxWidgetEventHandler::KWBlackBoxWidgetEventHandler("<<mBox.lock()->bbGetFullName()<<")"<<std::endl);
-
-    mBox.lock()->bbSetWidgetEventHandler(this);
-
-    Connect (  mWindow->GetId(),
-              kwEVT_DESTROY,
-              (kwObjectEventFunction) 
-              (void (kwEvtHandler::*)(kwWindowDestroyEvent& c))
-               &KWBlackBoxWidgetEventHandler::OnWindowDestroy );
-    
-    mWindow->PushEventHandler(this);
-    
-  }
-  //=========================================================================
-
-  //=========================================================================
-  KWBlackBoxWidgetEventHandler::~KWBlackBoxWidgetEventHandler()
-  {
-    if (mBox.expired()) return;
-    bbtkDebugMessage("kw",9,
-                    "KWBlackBoxWidgetEventHandler::~KWBlackBoxWidgetEventHandler() ["
-                    <<mBox.lock()->bbGetFullName()<<"]"<<std::endl);
-     mBox.lock()->bbSetWidgetEventHandler(0);   
-  }
-  //=========================================================================
-
-  //=========================================================================
-  void KWBlackBoxWidgetEventHandler::OnWindowDestroy(kwWindowDestroyEvent&)
-  {
-    if (mBox.expired()) return;
-    bbtkDebugMessage("kw",9,"KWBlackBoxWidgetEventHandler::OnWindowDestroy() ["
-                    <<mBox.lock()->bbGetFullName()<<"]"<<std::endl);
-    mBox.lock()->bbSetOutputWidget(0);
-    mBox.lock()->bbSetModifiedStatus();
-  }
-  //=========================================================================
-
-
-  */
-
-
-
-
   //=========================================================================
   // KWBlackBox
   //=========================================================================
@@ -111,363 +55,48 @@ namespace bbtk
   //=========================================================================
   //=========================================================================
   //=========================================================================
-  BBTK_BLACK_BOX_IMPLEMENTATION(KWBlackBox,AtomicBlackBox);
-  //=========================================================================
-  
-  //=========================================================================
-  void KWBlackBox::bbUserConstructor()
-  {
-    bbtkDebugMessage("Kernel",9,"KWBlackBox::bbUserConstructor()"<<std::endl);
-    bbInitAttributes();
-  }
-  //=========================================================================
-
-  //=========================================================================
-  void KWBlackBox::bbUserCopyConstructor(bbtk::BlackBox::Pointer)
-  {
-    bbtkDebugMessage("Kernel",9,"KWBlackBox::bbUserCopyConstructor()"
-                    <<std::endl);
-    bbInitAttributes();
-  }
-  //=========================================================================
-
-
-  //=========================================================================
-  void KWBlackBox::bbUserDestructor()
-  {
-    bbtkDebugMessage("kw",9,"==> KWBlackBox::bbUserDestructor() ["<<bbGetFullName()<<"]"<<std::endl);
-    if (bbGetWindow()) {
-      bbGetWindow()->bbClose();
-      bbSetWindow(0);
-    }
-    bbtkDebugMessage("kw",9,"<== KWBlackBox::bbUserDestructor() ["<<bbGetFullName()<<"]"<<std::endl);
-  }
+  BBTK_BLACK_BOX_IMPLEMENTATION(KWBlackBox,WidgetBlackBox<wxWindow>);
   //=========================================================================
   
-
-
-  //=========================================================================
-  /**
-   * \brief Initialize the attributes of the class
-   *
-   */
-  void KWBlackBox::bbInitAttributes()
-  {
-    bbmWindow = 0;
-    //    bbmWidget = 0;
-    //    bbSetInputWinParent(0);
-    bbSetInputWinTitle(bbGetName());
-    bbSetInputWinWidth(800);
-    bbSetInputWinHeight(800);
-    bbSetInputWinDialog(false);
-    bbSetOutputWidget(0);
-
-    //    bbSetWidgetEventHandler(0);
-    bbSetUpdateTransferedToParent(false);
-  }
-  //=========================================================================
-
-  //=========================================================================
-  /// Main processing method of the box.
-  void KWBlackBox::bbExecute(bool force)
-  {
-    bbtkDebugMessageInc("process",2,
-                       "=> KWBlackBox::bbExecute("<<(int)force<<") ["
-                       <<bbGetFullName()<<"]"<<std::endl);
+  //==================================================================    
+  /// Callback for creating a Dialog window (modal)
+  void WxBlackBox::bbCreateDialogWindow()
+  {
+    KW::GetApplication();
+    vtkKWBlackBoxDialog* win = vtkKWBlackBoxDialog::New();
+    show = (Window*) win;
+    win->bbSetBlackBox( GetThisPointer<KWBlackBox>());
+    KW::GetApplication()->AddWindow((vtkKWWindowBase*)win);
+    win->Create();
+    win->SetResizable(0,0);
+    
+    bbUserCreateWidget(win->GetFrame());
     /*
-    // If the output 'Widget' is connected then 
-    // we must execute the parent box
-    BlackBox::OutputConnectorMapType::const_iterator i 
-      = bbGetOutputConnectorMap().find("Widget");
-
-    if ( i->second->GetConnectionVector().size() != 0 ) 
-      {
-       bbtkDebugMessage("process",3,
-                        "-> Output 'Widget' connected : transfering execution to parent"
-                        <<std::endl);
-       
-       i->second->GetConnectionVector().front() //.lock()
-         ->GetBlackBoxTo()->bbExecute(force);
-
-      }
+      KW::GetApplication()->Script
+      ("pack %s -expand yes -fill both",
+      bbGetOutputWidget()->GetWidgetName());
     */
-    if (false)
-      {
-      }
-    // else call 'standard' BlackBox execution method
-    else 
-      {
-       AtomicBlackBox::bbExecute(force);
-      }
-    //
-
-    bbtkDebugMessageDec("process",2,
-                       "<= KWBlackBox::bbExecute() ["
-                       <<bbGetFullName()<<"]"<<std::endl);
+    
+    KW::GetApplication()->Script("place %s -x 0 -y 0 -width %d -height %d",
+                                bbGetOutputWidget()->GetWidgetName(),
+                                bbGetInputWinWidth(),
+                                bbGetInputWinHeight());
   }
-  //=========================================================================
-
+  //==================================================================    
 
-  //=========================================================================
-  /// Main processing method of the box.
-  IOStatus KWBlackBox::bbBackwardUpdate( Connection::Pointer caller )
+  //==================================================================    
+  /// Callback for creating a Frame window 
+  void WxBlackBox::bbCreateFrameWindow()
   {
-    /*
-    bbtkDebugMessage("process",3,
-                    "=> KWBlackBox::bbBackwardUpdate("
-                    <<(caller?caller->GetFullName():"0")<<") ["
-                    <<bbGetFullName()<<"]"<<std::endl);
-
-    if ( ! (( bbGetStatus() == MODIFIED ) ||
-           ( bbBoxProcessModeIsAlways() )) )
-      {
-       bbtkDebugMessage("process",3,"Up-to-date : nothing to do"<<std::endl);
-       bbtkDebugMessage("process",3,
-                        "<= KWBlackBox::bbBackwardUpdate("
-                        <<(caller?caller->GetFullName():"0")<<") ["
-                        <<bbGetFullName()<<"]"<<std::endl);
-       return bbGetStatus();
-      }
-    */
-    // If the caller's box to is not the box to connected to the 
-    // output 'Widget'
-    /*
-    BlackBox::OutputConnectorMapType::const_iterator i 
-      = bbGetOutputConnectorMap().find("Widget") ;
-    if ( i->second->GetConnectionVector().size() != 0 )
-      
-      {
-       BlackBox::Pointer to = 
-         i->second->GetConnectionVector()[0]->GetBlackBoxTo();
-               
-       if (caller) 
-         {
-           bbtkDebugMessage("process",3,
-                            "-> Output 'Widget' connected to '"
-                            <<to->bbGetFullName()<<"' - caller->to = '"
-                            <<caller->GetBlackBoxTo()->bbGetFullName()
-                            <<"'"
-                            <<std::endl);
-         }
-       else
-         {
-           bbtkDebugMessage("process",3,
-                            "-> Output 'Widget' connected to '"
-                            <<to->bbGetFullName()<<"'"
-                            <<std::endl);
-         }
-       if ((caller==0) ||
-           ( (caller!=0) && 
-             (caller->GetBlackBoxTo() != to)&&
-             (!bbGetUpdateTransferedToParent())&&
-             (!to->bbGetExecuting()) 
-             )
-           )
-         {
-           bbtkDebugMessage("process",3,
-                            "   ... Transfering update order to parent"
-                            <<std::endl);
-           
-           bbSetUpdateTransferedToParent(true);
-           i->second->GetConnectionVector().front() //.lock()
-             ->GetBlackBoxTo()->bbExecute(false);
-         }
-       else
-         {
-           bbSetUpdateTransferedToParent(false);
-           bbtkDebugMessage("process",3,
-                            "   ... No need to transfer to parent"
-                            <<std::endl);
-         }
-      
-         }
-    */
-    /*    
-
-    // If the caller is not the connection to the output widget
-    // and the output 'Widget' is connected then 
-    // we must execute the parent box 
-    // but only one time 
-    // (this is the role of the flag UpdateTransferedToParent)
-    if ( (caller==0) ||
-        ((caller!=0)&&(caller->GetBlackBoxFromOutput()!="Widget"))
-        )
-      {
-      }
-    */
-    // call 'standard' BlackBox execution method
-    //if (!bbGetUpdateTransferedToParent()) 
-      { 
-         return AtomicBlackBox::bbBackwardUpdate(caller);
-      }
-      /*
-    bbtkDebugMessageDec("process",3,
-                       "<= KWBlackBox::bbBackwardUpdate() ["
-                       <<bbGetFullName()<<"]"<<std::endl);
-      */
-   return bbGetStatus();
-     
-
+    bbtkWarning("KW: Frame windows not supported: creating a Dialog!");
+    bbCreateDialogWindow();
   }
+  //==================================================================    
 
-  //=========================================================================
-  void KWBlackBox::bbProcess()
-  { 
-/*
-         if (bbGetOutputWidget()==0) this->bbUserCreateWidget();
-    this->bbUserProcess(); 
-    bbShowWindow();
-    //    this->bbUserOnShow();
-*/
-    this->bbUserProcess(); 
 
-    // If output widget not connected create the window 
-    if ( (*bbGetOutputConnectorMap().find("Widget")).second
-        ->GetConnectionVector().size() == 0 ) 
-      {
-       Window* show = 0;
-       // If the window already exists : no need creating it
-       if (bbGetWindow()!=0)
-         {
-           bbtkDebugMessage("kw",2,
-                            "-> Window already exists"
-                            <<std::endl);
-           show = bbGetWindow();
-         }
-       // Else create window 
-       else 
-         {
-           bbtkDebugMessage("kw",2,
-                            "-> Creating the window"
-                            <<std::endl);
-           KW::GetApplication();
-           
-           // Input WinDialog set to true : creating a Dialog
-           /*
-           if (bbGetInputWinDialog()) 
-             {
-               bbtkDebugMessage("kw",2,
-                                "   Input WinDialog set to true : creating a Dialog"
-                                <<std::endl);
-           */
-               vtkKWBlackBoxDialog* win = vtkKWBlackBoxDialog::New();
-               show = (Window*) win;
-               win->bbSetBlackBox( GetThisPointer<KWBlackBox>());
-               KW::GetApplication()->AddWindow((vtkKWWindowBase*)win);
-               win->Create();
-               win->SetResizable(0,0);
-
-               bbUserCreateWidget(win->GetFrame());            
-               KW::GetApplication()->Script("place %s -x 0 -y 0 -width %d -height %d",
-                                            bbGetOutputWidget()->GetWidgetName(),
-                                            bbGetInputWinWidth(),
-                                            bbGetInputWinHeight());
-               
-
-
-
-
-               /*
-               bbGetOutputWidget()->SetParent(win);
-               bbGetOutputWidget()->Create();
-               KW::GetApplication()->Script("pack %s -side left -anchor c -expand y",
-                       
-                                    //"pack %s -side top -anchor nw -expand y -fill none -padx 2 -pady 2", 
-                                            bbGetOutputWidget()->GetWidgetName());
-               */                           
-               /*      
-                 }
-       
-           // Input WinDialog set to false : creating a Frame
-           else 
-             {
-               bbtkDebugMessage("process",2,
-                                "   Input WinDialog set to false : creating a Frame"
-                                <<std::endl);
-               vtkKWBlackBoxFrame* win = vtkKWBlackBoxFrame::New();
-               show = (Window*) win;
-               win->bbSetBlackBox( GetThisPointer<KWBlackBox>());
-               //              win->SetName( bbGetInputWinTitle() + " - bbtk (c) CREATIS LRMN" );
-               //              win->SetWidth( bbGetInputWinWidth() );
-               //              win->SetHeight( bbGetInputWinHeight() );
-               KW::GetApplication()->AddWindow((vtkKWWindowBase*)win);
-               win->Create();
-               
-               bbGetOutputWidget()->SetParent(win);
-               bbGetOutputWidget()->Create();
-               KW::GetApplication()->Script("pack %s -side top -anchor nw -expand y -fill none -padx 2 -pady 2", 
-                                            bbGetOutputWidget()->GetWidgetName());           }
-       */
-       
-               //      win->Invoke();
-         }
-       
-       // Show the window
-
-       show->bbShow(); 
-       //      std::cout << "KW::GetApplication()->Start();"<<std::endl;
-       //      KW::GetApplication()->Start();
-       //      std::cout << "AFTER KW::GetApplication()->Start();"<<std::endl;
-       
-      }                  
-    //   
-    
-  }
-  //=========================================================================
-  
-  /*
-  //=========================================================================
-  void KWBlackBox::bbPlaceWidget()
-  {
-    vtkKWFrame* parent = (vtkKWFrame*)(bbGetOutputWidget()->GetParent());
-    bbGetOutputWidget->GetApplication()->Script("place %s -x 0 -y 0 -width %s -height %s",
-                                               bbGetOutputWidget()->GetWidgetName(),
-                                               parent->GetWidth(),
-                                               parent->GetHeight());
-  }
-  //=========================================================================
-  */
-
-  /*
-  // LG 24/11/08 : New widget pipeline
-  void KWBlackBox::bbCreateWidgetAndEventHandler(vtkKWWidget* parent)
-  {
-    if (bbGetOutputWidget()==0)
-      {
-       this->bbUserCreateWidget(parent);
-      }        
-    
-    // If Event Handler for the widget does not exist or is obsolete : create it 
-    
-      if (bbGetOutputWidget()!=0)
-      {
-       if (bbGetWidgetEventHandler()==0)
-         {
-           bbtkDebugMessage("kw",3,
-                            "-> No widget event handler : creating one"
-                            <<std::endl);
-           new KWBlackBoxWidgetEventHandler(GetThisPointer<KWBlackBox>(),
-                                            bbGetOutputWidget());
-         }
-       else if ( ! bbGetWidgetEventHandler()->IsHandlerOf 
-                 ( bbGetOutputWidget() ) )
-         {
-           bbtkDebugMessage("kw",3,
-                            "-> Obsolete widget event handler : re-creating one"
-                            <<std::endl);
-           delete bbGetWidgetEventHandler();
-           new KWBlackBoxWidgetEventHandler(GetThisPointer<KWBlackBox>(),
-                                            bbGetOutputWidget());
-         }
-       // Sets the name of the vtkKWWidget to the input WinTitle
-       bbGetOutputWidget()->SetName(bbtk::std2kw(bbGetInputWinTitle()));
-      }
-   
-  }
-    
-  */
-  
-  vtkKWWidget*  KWBlackBox::bbCreateWidgetOfInput(const std::string& in, vtkKWFrame* parent)
+  //==================================================================
+  vtkKWWidget*  KWBlackBox::bbCreateWidgetOfInput(const std::string& in, 
+                                                 vtkKWFrame* parent)
   {
     vtkKWWidget* w = 0;
     // If input is connected 
@@ -486,192 +115,23 @@ namespace bbtk
       }
     return w;
   }
-  
-  
-/*
   //==================================================================
-  /// Specific methods for window creation during pipeline execution
-  /// Shows the window associated to the box 
-  /// (called after bbProcess during bbExecute)
-  void KWBlackBox::bbShowWindow()
-  {
-    bbtkDebugMessageInc("kw",1,"=> KWBlackBox::bbShowWindow() ["
-                       <<bbGetFullName()<<"]"<<std::endl);
-    // If Event Handler for the widget does not exist or is obsolete : create it 
-    if (bbGetOutputWidget()!=0)
-      {
-       if (bbGetWidgetEventHandler()==0)
-         {
-           bbtkDebugMessage("kw",3,
-                            "-> No widget event handler : creating one"
-                            <<std::endl);
-           new KWBlackBoxWidgetEventHandler(GetThisPointer<KWBlackBox>(),
-                                            bbGetOutputWidget());
-         }
-       else if ( ! bbGetWidgetEventHandler()->IsHandlerOf 
-                 ( bbGetOutputWidget() ) )
-         {
-           bbtkDebugMessage("kw",3,
-                            "-> Obsolete widget event handler : re-creating one"
-                            <<std::endl);
-           delete bbGetWidgetEventHandler();
-           new KWBlackBoxWidgetEventHandler(GetThisPointer<KWBlackBox>(),
-                                            bbGetOutputWidget());
-         }
-       // Sets the name of the vtkKWWidget to the input WinTitle
-       bbGetOutputWidget()->SetName(bbtk::std2kw(bbGetInputWinTitle()));
-      }
-
-    // If the output 'Widget' is connected then it's gonna 
-    // be captured by its parent window : nothing to do 
-    if ( (*bbGetOutputConnectorMap().find("Widget")).second
-        ->GetConnectionVector().size() != 0 ) 
-      {
-       
-       bbtkDebugMessage("kw",2,
-                        "-> Output 'Widget' connected : nothing to do"
-                        <<std::endl);
-       return;
-      }
-
-
-    Window* show = 0;
-    // If the window already exists : no need creating it
-    if (bbGetWindow()!=0)
-      {
-       bbtkDebugMessage("kw",2,
-                        "-> Window already exists"
-                        <<std::endl);
-       show = bbGetWindow();
-      }
-    // Else if the widget exists : create window 
-    else if (bbGetOutputWidget()!=0) 
-      {
-       bbtkDebugMessage("kw",2,
-                        "-> Widget exists : creating the window"
-                        <<std::endl);
 
 
-       // Input WinDialog set to true : creating a Dialog
-       if (bbGetInputWinDialog()) 
-         {
-           bbtkDebugMessage("kw",2,
-                            "   Input WinDialog set to true : creating a Dialog"
-                            <<std::endl);
-           show = (Window*) new KWBlackBoxDialog( GetThisPointer<KWBlackBox>(),
-                                                 // bbGetKWParent(), 
-                                                                                         // LG 24/11/08 : New widget pipeline
-                                                                                         KW::GetTopWindow(),
-                                                  std2kw( bbGetInputWinTitle() + " - bbtk (c) CREATIS LRMN"),
-                                                  kwSize( bbGetInputWinWidth() , bbGetInputWinHeight() ) );
-         }
-       // Input WinDialog set to false : creating a Frame
-       else 
-         {
-           bbtkDebugMessage("process",2,
-                            "   Input WinDialog set to false : creating a Frame"
-                            <<std::endl);
-           show = (Window*) new KWBlackBoxFrame( GetThisPointer<KWBlackBox>(),
-                                                 // bbGetKWParent(), 
-                                                                                        // LG 24/11/08 : New widget pipeline
-                                                                                        KW::GetTopWindow(),
-                                                 std2kw( bbGetInputWinTitle()  + " - bbtk (c) CREATIS LRMN"),
-                                                 kwSize( bbGetInputWinWidth() , bbGetInputWinHeight() ) );
-         }
-
-      }
-    // No window nor widget : error
-    else
-      {
-       bbtkError("KWBlackBox::bbShowWindow() ["
-                 <<bbGetFullName()
-                 <<"] : No widget. Did you set the box output 'Widget' in the processing method of the box ?");
-      }
-    
-    // Show the window
-    if (true) //!show->IsShown())
-      {
-       show->bbShow(); 
-      }
-    else 
-      {
-       bbtkDebugMessage("kw",2,"-> Already shown : nothing to do"<<std::endl);
-      }
-  
-
-    bbtkDebugMessage("kw",2,"<= KWBlackBox::bbShowWindow() ["
-                       <<bbGetFullName()<<"]"<<std::endl);
-
-  }
-  //==================================================================
-*/
-
-
-
-  //==================================================================
-   void KWBlackBox::bbHideWindow()
-  {
-    bbtkDebugMessageInc("kw",1,"=> KWBlackBox::bbHideWindow() ["
-                       <<bbGetFullName()<<"]"<<std::endl);
-
-    if (bbGetWindow()!=0) bbGetWindow()->bbHide();
-
-    bbtkDebugMessageDec("kw",2,"<= KWBlackBox::bbHideWindow() ["
-                       <<bbGetFullName()<<"]"<<std::endl);
-  }
-  //==================================================================
-
-
-  //==================================================================
-   void KWBlackBox::bbCloseWindow()
-  {
-    bbtkDebugMessageInc("kw",1,"=> KWBlackBox::bbCloseWindow() ["
-                       <<bbGetFullName()<<"]"<<std::endl);
-
-    if (bbGetWindow()!=0) bbGetWindow()->bbClose();
-
-    bbtkDebugMessageDec("kw",2,"<= KWBlackBox::bbCloseWindow() ["
-                       <<bbGetFullName()<<"]"<<std::endl);
-  }
-  //==================================================================
-
-  //==================================================================
-  KWBlackBox::Window* KWBlackBox::bbGetContainingWindow()
-  {
-    if (bbGetWindow()!=0) return bbGetWindow();
-    BlackBox::OutputConnectorMapType::const_iterator i 
-      = bbGetOutputConnectorMap().find("Widget");
-    if ( i->second->GetConnectionVector().size() != 0 ) 
-      {
-       return boost::static_pointer_cast<KWBlackBox>
-         (i->second->GetConnectionVector().front() //.lock()
-          ->GetBlackBoxTo())->bbGetContainingWindow();
-      }
-    return 0;
-  }
-  //==================================================================
-
-
-  //==================================================================
-       // LG 24/11/08 : New widget pipeline
-       //  vtkKWWidget* KWBlackBox::bbGetKWParent() { return KW::GetTopWindow(); }
   //==================================================================
+  //  void KWBlackBox::InitWindowManagerIfNeeded() { KW::
+  void KWBlackBox::IncNbWindowsAlive() { KW::IncNbWindowsAlive(); }
+  void KWBlackBox::DecNbWindowsAlive() { KW::DecNbWindowsAlive(); }
+  int  KWBlackBox::GetNbWindowsAlive() { return KW::GetNbWindowsAlive(); }
+  bool KWBlackBox::IsSomeWindowAlive() { return KW::IsSomeWindowAlive(); }
   
-  
+  void KWBlackBox::IncNbWindowsShown() { KW::IncNbWindowsShown(); }
+  void KWBlackBox::DecNbWindowsShown() { KW::DecNbWindowsShown(); }
+  int  KWBlackBox::GetNbWindowsShown() { return KW::GetNbWindowsShown(); }
+  bool KWBlackBox::IsSomeWindowShown() { return KW::GetNbWindowsShown(); }
   //==================================================================
-  bool KWBlackBox::bbIsShown()
-  {
-    if (bbGetContainingWindow()!=0)
-      return bbGetContainingWindow()->bbIsShown();
-    return false;
-  }
-  //==================================================================
-
-
+  
 }//namespace bbtk
 
-
 #endif