]> Creatis software - bbtk.git/blobdiff - kernel/src/bbtkWx.h
*** empty log message ***
[bbtk.git] / kernel / src / bbtkWx.h
index a27aae1e88a87b5f3439313b68db913facb5d193..30c86f8ab7335c3a02ea5fcc1efa72217e322edb 100644 (file)
 
 #include "bbtkSystem.h"
 
+// SIGNAL/SLOT MECHANISM 
+// FOR bbtk WINDOWS CREATION/DESTRUCTION OBSERVATION 
+// BBTKWXSIG
+#include <boost/signal.hpp>
+#include <boost/bind.hpp>
+// \BBTKWXSIG
+
 namespace bbtk
 {
   //==================================================================
   /// Global wx handlers (cursor...)
   
+// BBTKWXSIG
+#define bbtkAddWxSignalObserver(METHOD)                \
+  Wx::AddSignalObserver(boost::bind(&METHOD, this))
+// \BBTKWXSIG
+
   struct BBTK_EXPORT Wx
   {    
   public:
+    // BBTKWXSIG
+    typedef boost::signals::trackable SignalObserver;
+    typedef boost::signal<void ()>  Signal_type;
+    typedef Signal_type::slot_function_type Slot_function_type;
+    // \BBTKWXSIG
+
     static void ResetCursor();
     static void BeginBusyCursor(); 
     static void EndBusyCursor();
-    static int mBeginBusyCallsCount;
 
-    /// Returns the global parent of all bbtk windows
-    static wxWindow* GetTopWindow() { return mgTopWindow; }
-    /// Sets the global parent of all bbtk windows
-    static void SetTopWindow(wxWindow*);
+    static void CreateTopWindow(wxWindow* parent=0, bool autodestroy=true);
+    /// Returns the creation time parent of all bbtk windows 
+    /// (window can be reparented after creation)
+    static wxWindow* GetTopWindow();
+    static bool TopWindowExists();
+
+    static void AutoDestroyTopWindow(bool);
     
-    static void IncNbWindowsAlive() { mgNbWindowsAlive++; }
+    static void IncNbWindowsAlive();
     static void DecNbWindowsAlive();
-    static int  GetNbWindowsAlive() { return mgNbWindowsAlive; }
-    static bool IsSomeWindowAlive() { return (mgNbWindowsAlive>0);}
+    static int  GetNbWindowsAlive();
+    static bool IsSomeWindowAlive();
     
-    static void IncNbWindowsShown() { mgNbWindowsShown++; }
+    static void IncNbWindowsShown();
     static void DecNbWindowsShown();
-    static int  GetNbWindowsShown() { return mgNbWindowsShown; }
-    static bool IsSomeWindowShown() { return (mgNbWindowsShown>0);}
-    
-  private:
-    static wxWindow* mgTopWindow;
-    static int mgNbWindowsAlive;
-    static int mgNbWindowsShown;
+    static int  GetNbWindowsShown();
+    static bool IsSomeWindowShown();
 
+    // BBTKWXSIG
+    static void AddSignalObserver(Slot_function_type);
+    // \BBTKWXSIG
+  private:
+    /// Sets the creation time parent of all bbtk windows
+    static void SetTopWindow(wxWindow*);
   }; // struct Wx
   //==================================================================
   
-  
+
+
   //==================================================================
   /// Conversion std::string to wxString 
   inline wxString std2wx(const std::string& s){
@@ -115,6 +137,7 @@ namespace bbtk
     static void ResetCursor() {}
     static void BeginBusyCursor() {}
     static void EndBusyCursor() {}
+    static void CreateInvisibleTopWindow() {}
     static wxWindow* GetTopWindow() { return 0; }
     static void SetTopWindow(wxWindow*) {}
     static void IncNbWindowsAlive() {}