]> Creatis software - bbtk.git/blobdiff - kernel/src/bbtkWxBlackBox.h
Fixed Window deletion mechanism
[bbtk.git] / kernel / src / bbtkWxBlackBox.h
index b93adeb4553c841ced0a3509a9cab8183ef9e287..a345000daa0a1b920a4bf403cf2f507b5b30c8db 100644 (file)
@@ -2,8 +2,8 @@
   Program:   bbtk
   Module:    $RCSfile: bbtkWxBlackBox.h,v $
   Language:  C++
-  Date:      $Date: 2009/05/19 10:19:23 $
-  Version:   $Revision: 1.28 $
+  Date:      $Date: 2009/05/28 08:12:06 $
+  Version:   $Revision: 1.29 $
 ========================================================================*/
 
 
 #define __bbtkWxBlackBox_h__
 
 
-#include "bbtkWx.h"
+
 #include "bbtkWidgetBlackBox.h"
+#include "bbtkWx.h"
 
 
 namespace bbtk
 {
 
-
-
-
-
-  //==================================================================
-  // Forward declaration of the widget event handler class
-  class WxBlackBoxWidgetEventHandler;
-  //==================================================================
-
 
   //==================================================================
   /// Widget black boxes
@@ -92,47 +85,32 @@ namespace bbtk
     virtual void bbCreateFrameWindow();
     //==================================================================    
 
-  
-  
-    //==================================================================
-    //    virtual void InitWindowManagerIfNeeded();
-    virtual void IncNbWindowsAlive();
-    virtual void DecNbWindowsAlive();
-    virtual int  GetNbWindowsAlive();
-    virtual bool IsSomeWindowAlive();
-    
-    virtual void IncNbWindowsShown();
-    virtual void DecNbWindowsShown();
-    virtual int  GetNbWindowsShown();
-    virtual bool IsSomeWindowShown();
-    //==================================================================
+     
+    //==================================================================    
+    wxWindow* bbGetWindow() { return bbmWindow; }
+    void bbSetWindow(wxWindow*) ;
+    bool bbWindowIsCreated() { return (bbGetWindow() != 0); }
+    //==================================================================    
 
 
-         
     //==================================================================    
-    void bbCreateWidgetAndEventHandler(wxWindow* parent); 
+    virtual void bbShowWindow();
+    //==================================================================   
     //==================================================================    
-    
+    virtual void bbDestroyWindow();
     //==================================================================    
 
   private:
-    /// friendship
-    friend class WxBlackBoxWidgetEventHandler;
-    /// Sets the Widget Event Handler
-    inline void bbSetWidgetEventHandler(WxBlackBoxWidgetEventHandler* w) 
-    { bbmWidgetEventHandler = w; }
-    /// Gets the Widget Event Handler
-    inline WxBlackBoxWidgetEventHandler* bbGetWidgetEventHandler()
-    { return bbmWidgetEventHandler; }
-    /// The WxBlackBoxWidgetEventHandler associated to the box
-    WxBlackBoxWidgetEventHandler* bbmWidgetEventHandler;
+
+    wxWindow* bbmWindow;
   };
   //=================================================================
  
 
   //=================================================================
   // WxBlackBoxDescriptor declaration
-  //
   class WxBlackBoxDescriptor : public WidgetBlackBoxDescriptor<wxWindow>
   BBTK_BEGIN_DESCRIBE_BLACK_BOX_BODY(WxBlackBox);
   BBTK_NAME("WxBlackBox");
@@ -148,73 +126,6 @@ namespace bbtk
 
 
 
-  //==================================================================
-  // Dialog window which is modal
-  class BBTK_EXPORT  WxBlackBoxDialog : public wxDialog, 
-                                       public WidgetBlackBoxWindow<wxWindow>
-  {
-  public:
-    typedef WidgetBlackBoxWindow<wxWindow> Parent;
-    WxBlackBoxDialog(WxBlackBox::Pointer box, 
-                    wxWindow *parent, wxString title, wxSize size);
-    ~WxBlackBoxDialog();
-    void bbShow();  
-    void bbHide();
-    void bbDestroy();
-    bool IsDialog() { return true; }
-    bool IsFrame() { return false; }
-    wxDialog* bbGetDialog() { return this; } 
-  };
-  //==================================================================
-
-  //==================================================================
-  // Frame window which is not modal
-  class BBTK_EXPORT  WxBlackBoxFrame : public wxFrame, 
-                                      public WidgetBlackBoxWindow<wxWindow>
-  {
-  public:
-    typedef WidgetBlackBoxWindow<wxWindow> Parent;
-    WxBlackBoxFrame(WxBlackBox::Pointer box,
-                   wxWindow *parent, wxString title, wxSize size);
-    ~WxBlackBoxFrame();
-    void bbShow();
-    void bbHide();
-    void bbDestroy();
-    bool IsDialog() { return false; }
-    bool IsFrame() { return true; }
-    wxFrame* bbGetFrame() { return this; } 
-  };
-  //==================================================================
-
-
-
-  //=================================================================
-  // Handles the destroy events of a widget associated to a WxBlackBox 
-  // in order to signal the widget death to its associated box
-  class BBTK_EXPORT WxBlackBoxWidgetEventHandler : public wxEvtHandler
-  {
-  public:
-    /// Ctor with the box and widget 
-    WxBlackBoxWidgetEventHandler( WxBlackBox::Pointer box, wxWindow *widget );
-    /// Dtor
-    ~WxBlackBoxWidgetEventHandler();
-    /// Returns true iff is the handler for that window  
-    bool IsHandlerOf( wxWindow* w ) { return mWindow == w; }
-    // wxWindow* GetWxWindow() { return mWindow; }
-    /// Method processing the destroy event of the widget
-    void OnWindowDestroy(wxWindowDestroyEvent&);
-    //
-    //bool IsDead() { return mDead; }
-
-  private:
-    WxBlackBox::WeakPointer mBox;
-    wxWindow* mWindow;
-    //bool mDead;
-  };  
-  //=================================================================
-
-
-
 } //namespace bbtk
 
 #endif  //__bbtkWxBlackBox_h__