]> Creatis software - bbtk.git/blobdiff - kernel/src/bbtkWx.cxx
Created a bbs editor : bbed
[bbtk.git] / kernel / src / bbtkWx.cxx
index 0c6b568845000dac95201c57b6bde2aa1cbef2bd..fc42e4788c5af29040172211e5356159f30d6256 100644 (file)
 
 namespace bbtk
 {
-  void wx::ResetCursor() 
+
+//EED
+  static wxWindow* mgTopWindow = 0;
+  static int mgNbWindowsAlive  = 0;
+  static int mgNbWindowsShown  = 0;
+
+
+  void Wx::ResetCursor() 
   {
+    if (!GetTopWindow()) return;
     bbtkDebugMessage("Wx",9,"wx::ResetCursor()"<<std::endl);
     while (wxIsBusy()) ::wxEndBusyCursor();
   }
-  void wx::BeginBusyCursor() 
+  void Wx::BeginBusyCursor() 
   {
+    if (!GetTopWindow()) return;
     bbtkDebugMessage("Wx",9,"wx::BeginBusyCursor()"<<std::endl);
     ::wxBeginBusyCursor();
   }
-  void wx::EndBusyCursor()
+  void Wx::EndBusyCursor()
   {
+    if (!GetTopWindow()) return;
     bbtkDebugMessage("Wx",9,"wx::EndBusyCursor()"<<std::endl);
     ::wxEndBusyCursor();
   }
   
+  //=========================================================================
+  void Wx::SetTopWindow(wxWindow* w) 
+  {
+    if ( mgTopWindow ) 
+      {
+       bbtkGlobalError("wx::SetTopWindow : top window already set !");
+      } 
+    mgTopWindow = w;
+  }
+  //=========================================================================
+  //=========================================================================
+  void Wx::DecNbWindowsAlive()
+  { 
+    mgNbWindowsAlive--; 
+    /*
+    if ( (bbmgNbWindowsAlive==0) && 
+        bbmgTopWindow && (!bbmgTopWindow->IsShown()))
+      {
+       bbmgTopWindow->Close();
+      }
+    */
+  }
+  //=========================================================================
+
+  //=========================================================================
+  void Wx::DecNbWindowsShown()
+  { 
+    mgNbWindowsShown--; 
+    if ( (mgNbWindowsShown==0) && 
+        mgTopWindow && (!mgTopWindow->IsShown()))
+      {
+       mgTopWindow->Close();
+      }
+  }
+  //=========================================================================
+
+  //=========================================================================
+/*EED
+  // Static members 
+  wxWindow* Wx::mgTopWindow = 0;
+  int Wx::mgNbWindowsAlive  = 0;
+  int Wx::mgNbWindowsShown  = 0;
+*/
+  //=========================================================================
+
+
+//EED
+    wxWindow* Wx::GetTopWindow() 
+       { 
+               return mgTopWindow; 
+       }
+
+    void Wx::IncNbWindowsAlive() 
+       { 
+               mgNbWindowsAlive++; 
+       }
+
+    int  Wx::GetNbWindowsAlive() 
+       { 
+               return mgNbWindowsAlive; 
+       }
+
+    bool Wx::IsSomeWindowAlive() 
+       { 
+               return (mgNbWindowsAlive>0);
+       }
+
+    void Wx::IncNbWindowsShown() 
+       { 
+               mgNbWindowsShown++; 
+       }
+
+    int  Wx::GetNbWindowsShown() 
+       { 
+               return mgNbWindowsShown; 
+       }
+
+    bool Wx::IsSomeWindowShown() 
+       { 
+               return (mgNbWindowsShown>0);
+       }
 
 }