-#ifdef _USE_WXWIDGETS_
+/*=========================================================================
+ Program: bbtk
+ Module: $RCSfile: bbtkWx.cxx,v $
+ Language: C++
+ Date: $Date: 2010/01/14 13:17:27 $
+ Version: $Revision: 1.16 $
+=========================================================================*/
+
+/* ---------------------------------------------------------------------
+
+* Copyright (c) CREATIS-LRMN (Centre de Recherche en Imagerie Medicale)
+* Authors : Eduardo Davila, Laurent Guigues, Jean-Pierre Roux
+*
+* This software is governed by the CeCILL-B license under French law and
+* abiding by the rules of distribution of free software. You can use,
+* modify and/ or redistribute the software under the terms of the CeCILL-B
+* license as circulated by CEA, CNRS and INRIA at the following URL
+* http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.html
+* or in the file LICENSE.txt.
+*
+* As a counterpart to the access to the source code and rights to copy,
+* modify and redistribute granted by the license, users are provided only
+* with a limited warranty and the software's author, the holder of the
+* economic rights, and the successive licensors have only limited
+* liability.
+*
+* The fact that you are presently reading this means that you have had
+* knowledge of the CeCILL-B license and that you accept its terms.
+* ------------------------------------------------------------------------ */
#include "bbtkWx.h"
#include "bbtkMessageManager.h"
+#ifdef _USE_WXWIDGETS_
+
namespace bbtk
{
//=========================================================================
//=========================================================================
static WxApp* mgWxApp = 0;
static wxWindow* mgTopWindow = 0;
- static wxWindow* mgTopWindowParent = 0;
- static bool mgAutoDestroyTopWindow = true;
static int mgNbWindowsAlive = 0;
- static int mgNbWindowsShown = 0;
//=========================================================================
-
+
//=========================================================================
// BBTKWXSIG
static Wx::Signal_type mgWxSignal;
{
if (mgWxApp!= 0)
{
- bbtkDebugMessage("wx",1," --> Destructing bbtk WxApp"<<std::endl);
+ // bbtkDebugMessage("wx",1," --> Destructing bbtk WxApp"<<std::endl);
//delete mgWxApp;
// mgWxApp = 0;
// Uninit wx
}
//=========================================================================
- //=========================================================================
- void Wx::SetTopWindowParent(wxWindow* w)
- {
- if (mgTopWindowParent != 0)
- {
- bbtkGlobalError("Wx::SetTopWindowParent : top window parent != 0");
- }
- mgTopWindowParent = w;
- }
- //=========================================================================
-
- //=========================================================================
- void Wx::CreateTopWindowIfNeeded()
- {
- if (mgTopWindow!=0) return;
- bbtkDebugMessage("wx",1," --> Creating bbtk top window"<<std::endl);
-
- CreateWxAppIfNeeded();
- wxWindow* top =
- new wxFrame(mgTopWindowParent,
- -1,
- _T("TOP BBTK FRAME (YOU SHOULD NOT SEE ME !!)"));
- top->Hide();
-
- Wx::SetTopWindow(top);
- }
//=========================================================================
-
- //=========================================================================
- void Wx::DestroyTopWindowIfNeeded()
+ void Wx::ProcessPendingEvents()
{
- if ( (mgNbWindowsAlive==0) &&
- (mgAutoDestroyTopWindow) )
+ /*
+ if (Wx::GetTopWindow() != 0)
{
- bbtkDebugMessage("wx",1," --> Destructing bbtk top window"<<std::endl);
- mgTopWindow->Close();
- mgTopWindow = 0;
-
- DestroyWxAppIfNeeded();
+ Wx::GetTopWindow()->DestroyChildren();
}
- }
- //=========================================================================
+ */
- //=========================================================================
- void Wx::LoopUntilAllWindowsClose()
- {
- int i = 0;
- while (mgTopWindow != 0)
- {
- if (i % 100 == 0)
- {
- bbtkDebugMessage("wx",2,"Wx::Loop "<<i << std::endl);
- }
- i++;
- wxMilliSleep(10);
-
- }
+ /*
+ wxApp* a = (wxApp*)wxApp::GetInstance();
+ if (a==0) return;
+
+ std::cout << "$$$$$$$$$$$$$$ PROCESS PENDING "<<std::endl;
+ while (a->Pending())
+ a->Dispatch();
+ std::cout << "$$$$$$$$$$$$$$ PROCESS PENDING DONE"<<std::endl;
+ */
}
- //=========================================================================
+
//=========================================================================
wxWindow* Wx::GetTopWindow()
{
- Wx::CreateTopWindowIfNeeded();
return mgTopWindow;
}
//=========================================================================
- //=========================================================================
- bool Wx::TopWindowExists()
- {
- return (mgTopWindow!=0);
- }
- //=========================================================================
// BBTKWXSIG
//=========================================================================
//=========================================================================
// \BBTKWXSIG
- //=========================================================================
- void Wx::SetAutoDestroyTopWindow(bool b)
- {
- mgAutoDestroyTopWindow = b;
- }
- //=========================================================================
//=========================================================================
void Wx::SetTopWindow(wxWindow* w)
{
if ( mgTopWindow )
{
- bbtkGlobalError("wx::SetTopWindow : top window already set !");
+ bbtkGlobalError("Wx::SetTopWindow : top window already set !");
}
- mgTopWindow = w;
+ //mgTopWindow = w;
}
//=========================================================================
bbtkDebugMessage("wx",2,"* Number of windows alive = "<<mgNbWindowsAlive
<<std::endl);
- DestroyTopWindowIfNeeded();
- // BBTKWXSIG
- mgWxSignal();
- // \BBTKWXSIG
- }
- //=========================================================================
-
- //=========================================================================
- void Wx::IncNbWindowsShown()
- {
- mgNbWindowsShown++;
- bbtkDebugMessage("wx",2,"* Number of windows shown = "<<mgNbWindowsShown
- <<std::endl);
- // BBTKWXSIG
- mgWxSignal();
- // \BBTKWXSIG
- }
- //=========================================================================
-
- //=========================================================================
- void Wx::DecNbWindowsShown()
- {
- mgNbWindowsShown--;
- bbtkDebugMessage("wx",2,"* Number of windows shown = "<<mgNbWindowsShown
- <<std::endl);
-
- DestroyTopWindowIfNeeded();
-
// BBTKWXSIG
mgWxSignal();
// \BBTKWXSIG
}
//=========================================================================
-
//=========================================================================
int Wx::GetNbWindowsAlive()
{
//=========================================================================
bool Wx::IsSomeWindowAlive()
{
- return (mgNbWindowsAlive>0);
- }
- //=========================================================================
-
-
- //=========================================================================
- int Wx::GetNbWindowsShown()
- {
- return mgNbWindowsShown;
- }
- //=========================================================================
-
- //=========================================================================
- bool Wx::IsSomeWindowShown()
- {
- return (mgNbWindowsShown>0);
+ return (mgNbWindowsAlive!=0);
}
//=========================================================================
//=========================================================================
Wx::BusyCursor::BusyCursor()
{
- if (TopWindowExists())
+ mCursor = 0;
+ if (wxApp::GetInstance()!=0)
{
bbtkDebugMessage("wx",2,
- "Wx::BusyCursor::BusyCursor()"<<std::endl);
- ::wxBeginBusyCursor();
+ "Wx::BusyCursor::BusyCursor() : creating new cursor"
+ <<std::endl);
+ //mCursor = new wxBusyCursor;
}
}
+ //=========================================================================
+ //=========================================================================
Wx::BusyCursor::~BusyCursor()
{
- if (TopWindowExists())
- {
+ if (mCursor)
+ {
+ //delete mCursor;
bbtkDebugMessage("wx",2,
- "Wx::BusyCursor::~BusyCursor()"<<std::endl);
- ::wxEndBusyCursor();
+ "Wx::BusyCursor::~BusyCursor() : deleting cursor"<<std::endl);
}
}
//=========================================================================
- /*
- //=========================================================================
- void Wx::ResetCursor()
- {
- if (!TopWindowExists()) return;
- bbtkDebugMessage("wx",9,"Wx::ResetCursor()"<<std::endl);
- while (wxIsBusy()) ::wxEndBusyCursor();
- }
- //=========================================================================
- //=========================================================================
- void Wx::BeginBusyCursor()
+
+
+} // namespace bbtk
+
+#else
+//=======================================================================
+// WITHOUT WX
+//=========================================================================
+namespace bbtk
+{
+ //=========================================================================
+ Wx::BusyCursor::BusyCursor()
{
- if (!TopWindowExists()) return;
- bbtkDebugMessage("wx",9,"Wx::BeginBusyCursor()"<<std::endl);
- ::wxBeginBusyCursor();
}
- //=========================================================================
- //=========================================================================
- void Wx::EndBusyCursor()
+ Wx::BusyCursor::~BusyCursor()
{
- if (!TopWindowExists()) return;
- bbtkDebugMessage("wx",9,"Wx::EndBusyCursor()"<<std::endl);
- ::wxEndBusyCursor();
}
//=========================================================================
- */
-
-}
+} // namespace bbtk
#endif
+