-#ifdef _USE_WXWIDGETS_
+/*
+ # ---------------------------------------------------------------------
+ #
+ # Copyright (c) CREATIS (Centre de Recherche en Acquisition et Traitement de l'Image
+ # pour la SantÈ)
+ # Authors : Eduardo Davila, Frederic Cervenansky, Claire Mouton
+ # Previous Authors : Laurent Guigues, Jean-Pierre Roux
+ # CreaTools website : www.creatis.insa-lyon.fr/site/fr/creatools_accueil
+ #
+ # 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.
+ # ------------------------------------------------------------------------ */
+
+
+/*=========================================================================
+ Program: bbtk
+ Module: $RCSfile: bbtkWx.cxx,v $
+ Language: C++
+ Date: $Date: 2012/11/16 08:49:01 $
+ Version: $Revision: 1.17 $
+=========================================================================*/
+
+
#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;
IMPLEMENT_APP_NO_MAIN(WxApp);
//=========================================================================
bool WxApp::OnInit( )
- {
+ {
+ std::cout<<"Testing OnINIT Wx ---- JFGA !!!DELETE ME!!! bbtkWx"<<std::endl;
wxApp::OnInit();
#ifdef __WXGTK__
//See http://www.wxwindows.org/faqgtk.htm#locale
//=========================================================================
void Wx::CreateWxAppIfNeeded()
{
+
+ std::cout<<"Testing CreateWxAppIfNeeded --- DELETE ME ----"<<std::endl;
if (wxApp::GetInstance()==0)
{
if (mgWxApp != 0)
bbtkDebugMessage("wx",1," --> Creating bbtk wxApp"<<std::endl);
mgWxApp = new WxApp;
wxApp::SetInstance(mgWxApp);
- //int argc = 0;
- //wxEntry(argc,0);
wxInitialize();
}
}
{
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
+