]> Creatis software - bbtk.git/blobdiff - kernel/src/bbtkWx.h
*** empty log message ***
[bbtk.git] / kernel / src / bbtkWx.h
index c03b4d52c9a7f9406b5a63857794602623d992d8..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...)
-
-  struct BBTK_EXPORT wx
-   {     public:
-                         static void ResetCursor();
-                         static void BeginBusyCursor(); 
-                         static void EndBusyCursor();
-                         static int mBeginBusyCallsCount;
-               }; // struct wx
-//==================================================================
+  
+// 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 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();
+    static void DecNbWindowsAlive();
+    static int  GetNbWindowsAlive();
+    static bool IsSomeWindowAlive();
+    
+    static void IncNbWindowsShown();
+    static void DecNbWindowsShown();
+    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
+  //==================================================================
+  
 
 
   //==================================================================
@@ -88,12 +132,24 @@ namespace bbtk
 namespace bbtk
 {
 
-   struct BBTK_EXPORT wx
-       {
-               static void ResetCursor() {}
-               static void BeginBusyCursor() {}
-               static void EndBusyCursor() {}
-       }; // struct wx
+  struct BBTK_EXPORT Wx
+  {
+    static void ResetCursor() {}
+    static void BeginBusyCursor() {}
+    static void EndBusyCursor() {}
+    static void CreateInvisibleTopWindow() {}
+    static wxWindow* GetTopWindow() { return 0; }
+    static void SetTopWindow(wxWindow*) {}
+    static void IncNbWindowsAlive() {}
+    static void DecNbWindowsAlive() {}
+    static int  GetNbWindowsAlive() { return 0; }
+    static bool IsSomeWindowAlive() { return false; }
+    
+    static void IncNbWindowsShown() {}
+    static void DecNbWindowsShown() {}
+    static int  GetNbWindowsShown() { return 0; }
+    static bool IsSomeWindowShown() { return false; }
+  }; // struct Wx
 
 } // namespace bbtk