+ //=========================================================================
+
+ //=========================================================================
+ void Wx::DestroyTopWindowIfNeeded()
+ {
+ if ( (mgNbWindowsAlive==0) &&
+ (mgAutoDestroyTopWindow) )
+ {
+ bbtkDebugMessage("wx",1," --> Destructing bbtk top window"<<std::endl);
+ mgTopWindow->Close();
+ mgTopWindow = 0;
+
+ DestroyWxAppIfNeeded();
+ }
+ }
+ //=========================================================================
+
+ //=========================================================================
+ void Wx::LoopUntilAllWindowsClose()
+ {
+ int i = 0;
+ while (mgTopWindow != 0)
+ {
+ if (i % 100 == 0)
+ {
+ bbtkDebugMessage("wx",2,"Wx::Loop "<<i << std::endl);
+ }
+ i++;
+ wxMilliSleep(10);
+
+ }
+ }
+ //=========================================================================
+
+ //=========================================================================
+ wxWindow* Wx::GetTopWindow()
+ {
+ Wx::CreateTopWindowIfNeeded();
+ return mgTopWindow;
+ }
+ //=========================================================================
+
+ //=========================================================================
+ bool Wx::TopWindowExists()
+ {
+ return (mgTopWindow!=0);
+ }
+ //=========================================================================
+
+ // BBTKWXSIG
+ //=========================================================================
+ void Wx::AddSignalObserver(Slot_function_type f)
+ {
+ mgWxSignal.connect(f);
+ }
+ //=========================================================================
+ // \BBTKWXSIG
+
+ //=========================================================================
+ void Wx::SetAutoDestroyTopWindow(bool b)
+ {
+ mgAutoDestroyTopWindow = b;
+ }
+ //=========================================================================