]> Creatis software - bbtk.git/blobdiff - kernel/src/bbtkWxBlackBox.h
Fixed X Window Server errors with wxvtk::Viewer2D (bad synchro between wx and vtk...
[bbtk.git] / kernel / src / bbtkWxBlackBox.h
index b7a3eab5bd44307d07818496ce838692c397af10..700fa3e044a32849732f2995e398f759f1a3c0c0 100644 (file)
@@ -3,8 +3,8 @@
   Program:   bbtk
   Module:    $RCSfile: bbtkWxBlackBox.h,v $
   Language:  C++
-  Date:      $Date: 2008/03/06 09:23:43 $
-  Version:   $Revision: 1.8 $
+  Date:      $Date: 2008/03/10 12:28:43 $
+  Version:   $Revision: 1.9 $
                                                                                 
   Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de
   l'Image). All rights reserved. See Doc/License.txt or
@@ -74,15 +74,37 @@ namespace bbtk
   public:
     typedef WxBlackBoxWindow Window;
     
-    /// Returns the window associated to the box
+    /// Returns the **OWN** window associated to the box
     /// If 0 returned = no window
     Window* bbGetWindow() { return bbmWindow; }
 
-    /// Returns the Parent Window that must be used to create the widget 
-    wxWindow* bbGetWxParent() { return Wx::GetTopWindow(); }
+    /// Returns the window containing the widget associated to the box
+    /// Which can be the own window of **ANOTHER** box in case of 
+    /// a hierarchy of widgets.
+    /// More precisely :
+    /// If bbGetWindow() != 0 then returns bbGetWindow()
+    /// Else if the output 'Widget' is connected 
+    ///  then returns bbGetContainingWindow() of the box connected to 'Widget'
+    /// Else returns 0;
+    Window* bbGetContainingWindow();
 
+    /// Returns the parent wxWindow that must be used to create the widget 
+    wxWindow* bbGetWxParent();
 
+    /// Returns true iff the 'containing window' exists and is shown 
+    /// (see bbGetContainingWindow).
+    bool bbIsShown();
+
+    //==================================================================    
+    /// User callback invoked when the containing window is shown
+    virtual void bbUserOnShow() {}
+    //==================================================================    
  
+    //==================================================================    
+    /// User callback invoked when the containing window is hidden
+    virtual void bbUserOnHide() {}
+    //==================================================================    
+
   protected:
     
   
@@ -100,24 +122,35 @@ namespace bbtk
     /// ** Must be defined **
     virtual void bbUserCreateWidget() 
     {
-      bbtkError(bbGetTypeName()<<" is a WxBlackBox whose bbUserCreateWidget methods is undefined : cannot work !!");
+      bbtkError(bbGetTypeName()<<" is a WxBlackBox whose bbUserCreateWidget methods is not overloaded : is it a feature or a bug ?!?");
     }
     //==================================================================    
+
+
     
+
+
+
+
+
+
     //==================================================================
-    /// Calls the user defined widget creation method 
-    /// and the user processing method and then displays the window
-    virtual void bbProcess() 
-    { 
-      if (bbGetOutputWidget()==0) this->bbUserCreateWidget();
-      this->bbUserProcess(); 
-      bbShowWindow();
-    }
+    /// Overloaded processing method for WxBlackBoxes :
+    /// 1) if the widget is null then 
+    ///    calls the user defined widget creation method : bbUserCreateWidget()
+    /// 2) calls the user defined processing method : bbUserProcess()
+    /// 3) displays the window : bbShowWindow();
+    virtual void bbProcess();
     //==================================================================
 
     //==================================================================
-    /// Specific methods for windows creation during pipeline execution
+    /// If necessary creates the WxBlackBoxWindow associated to the box
+    /// and shows it 
+    /// (does nothing if the box output 'Widget' is connected which 
+    /// means that the box does not have its own window but is contained 
+    /// into another window)
     void bbShowWindow();
+    /// Hides the WxBlackBoxWindow associated to the box (if exists)
     void bbHideWindow();
     //==================================================================