Program: bbtk
Module: $RCSfile: bbtkWxBlackBox.cxx,v $
Language: C++
- Date: $Date: 2008/04/21 12:43:05 $
- Version: $Revision: 1.13 $
+ Date: $Date: 2008/04/22 14:30:25 $
+ Version: $Revision: 1.14 $
Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de
l'Image). All rights reserved. See Doc/License.txt or
WxBlackBoxWindow::WxBlackBoxWindow(WxBlackBox::Pointer box)
: mBox(box), mShown(false)
{
- bbtkDebugMessage("Wx",9,"WxBlackBoxWindow::WxBlackBoxWindow("<<
- mBox->bbGetFullName()<<")"<<std::endl);
- mBox->bbSetWindow(this);
+ bbtkDebugMessage("wx",9,"WxBlackBoxWindow::WxBlackBoxWindow("<<
+ mBox.lock()->bbGetFullName()<<")"<<std::endl);
+ mBox.lock()->bbSetWindow(this);
Wx::IncNbWindowsAlive();
- bbtkDebugMessage("Wx",5," -> Number of windows alive = "
+ bbtkDebugMessage("wx",5," -> Number of windows alive = "
<<Wx::GetNbWindowsAlive()<<std::endl);
}
//=========================================================================
//=========================================================================
WxBlackBoxWindow::~WxBlackBoxWindow()
{
- bbtkDebugMessage("Wx",9,"WxBlackBoxWindow::~WxBlackBoxWindow() ["<<
- mBox->bbGetFullName()<<"]"<<std::endl);
+ bbtkDebugMessage("wx",9,"WxBlackBoxWindow::~WxBlackBoxWindow() "
+ <<this<<std::endl);
bbHide();
- mBox->bbSetWindow(0);
Wx::DecNbWindowsAlive();
- bbtkDebugMessage("Wx",5," -> Number of windows alive = "
+ if (!mBox.expired())
+ {
+ mBox.lock()->bbSetWindow(0);
+ }
+ else
+ {
+ }
+ bbtkDebugMessage("wx",5," -> Number of windows alive = "
<<Wx::GetNbWindowsAlive()<<std::endl);
-
-
}
//=========================================================================
void WxBlackBoxWindow::bbShow()
{
if (bbIsShown()) return;
- bbtkDebugMessage("Wx",9,"WxBlackBoxWindow::bbShow() ["<<
- mBox->bbGetFullName()<<"]"<<std::endl);
+ bbtkDebugMessage("wx",9,"WxBlackBoxWindow::bbShow()"<<std::endl);
Wx::IncNbWindowsShown();
mShown = true;
- bbtkDebugMessage("Wx",5," -> Number of windows shown = "
+ bbtkDebugMessage("wx",5," -> Number of windows shown = "
<<Wx::GetNbWindowsShown()<<std::endl);
}
//=========================================================================
void WxBlackBoxWindow::bbHide()
{
if (!bbIsShown()) return;
- bbtkDebugMessage("Wx",9,"WxBlackBoxWindow::bbHide() ["<<
- mBox->bbGetFullName()<<"]"<<std::endl);
+ bbtkDebugMessage("wx",9,"WxBlackBoxWindow::bbHide()"<<std::endl);
Wx::DecNbWindowsShown();
mShown = false;
- bbtkDebugMessage("Wx",5," -> Number of windows shown = "
+ bbtkDebugMessage("wx",5," -> Number of windows shown = "
<<Wx::GetNbWindowsShown()<<std::endl);
}
//=========================================================================
wxCAPTION
)
{
- bbtkDebugMessage("Wx",9,"WxBlackBoxDialog::WxBlackBoxDialog("<<
+ bbtkDebugMessage("wx",9,"WxBlackBoxDialog::WxBlackBoxDialog("<<
bbGetBlackBox()->bbGetFullName()<<","<<parent<<","
<<title<<",size)"<<std::endl);
// Insert the widget into the window
//=========================================================================
void WxBlackBoxDialog::bbShow()
{
- bbtkDebugMessage("Wx",5,"WxBlackBoxDialog::bbShow() ["
+ bbtkDebugMessage("wx",5,"WxBlackBoxDialog::bbShow() ["
<<bbGetBlackBox()->bbGetFullName()<<"]"<<std::endl);
WxBlackBoxWindow::bbShow();
SetReturnCode( wxDialog::ShowModal() );
//=========================================================================
void WxBlackBoxDialog::bbHide()
{
- bbtkDebugMessage("Wx",9,"WxBlackBoxDialog::bbHide() ["<<
- bbGetBlackBox()->bbGetFullName()<<"]"<<std::endl);
+ bbtkDebugMessage("wx",9,"WxBlackBoxDialog::bbHide()"<<std::endl);
WxBlackBoxWindow::bbHide();
Hide();
}
wxCAPTION
)
{
- bbtkDebugMessage("Wx",9,"WxBlackBoxFrame::WxBlackBoxFrame("<<
+ bbtkDebugMessage("wx",9,"WxBlackBoxFrame::WxBlackBoxFrame("<<
bbGetBlackBox()->bbGetFullName()<<","<<parent<<","
<<title<<",size)"<<std::endl);
// Insert the widget into the window
//=========================================================================
void WxBlackBoxFrame::bbShow()
{
- bbtkDebugMessage("Wx",5,"WxBlackBoxFrame::bbShow("
+ bbtkDebugMessage("wx",5,"WxBlackBoxFrame::bbShow("
<<bbGetBlackBox()->bbGetFullName()<<")"<<std::endl);
WxBlackBoxWindow::bbShow();
wxFrame::Show();
// to synchronize wxvtkRenderWindowInteractor objects
// (force wx objects creation **NOW**)
wxFrame::Update();
- bbGetBlackBox()->bbUserOnShow();
+ if (bbGetBlackBox()) bbGetBlackBox()->bbUserOnShow();
// wxFrame::SetFocus();
}
//=========================================================================
//=========================================================================
void WxBlackBoxFrame::bbHide()
{
- bbtkDebugMessage("Wx",9,"WxBlackBoxFrame::bbHide() ["<<
- bbGetBlackBox()->bbGetFullName()<<"]"<<std::endl);
+ bbtkDebugMessage("wx",9,"WxBlackBoxFrame::bbHide()"<<std::endl);
WxBlackBoxWindow::bbHide();
wxFrame::Hide();
- bbGetBlackBox()->bbUserOnHide();
- }
- //=========================================================================
-
-
-
- //=========================================================================
- // WxBlackBoxDialogWrapper
- //=========================================================================
- /*
- //=========================================================================
- WxBlackBoxDialogWrapper::WxBlackBoxDialogWrapper(WxBlackBox* box,
- wxDialog *wrapped)
- : WxBlackBoxWindow(box),
- mWrapped(wrapped)
- {
- bbtkDebugMessage("Wx",9,
- "WxBlackBoxDialogWrapper::WxBlackBoxDialogWrapper("
- <<bbGetBlackBox()->bbGetFullName()<<","<<wrapped
- <<")"<<std::endl);
- }
- //=========================================================================
-
- //=========================================================================
- WxBlackBoxDialogWrapper::~WxBlackBoxDialogWrapper()
- {
- }
- //=========================================================================
-
- //=========================================================================
- void WxBlackBoxDialogWrapper::bbShow()
- {
- bbtkDebugMessage("Wx",5,"WxBlackBoxDialogWrapper::bbShow("
- <<bbGetBlackBox()->bbGetFullName()<<")"<<std::endl);
- WxBlackBoxWindow::bbShow();
- int i = mWrapped->ShowModal();
- // For Windows :
- mWrapped->SetReturnCode( i );
- }
- //=========================================================================
-
- //=========================================================================
- void WxBlackBoxDialogWrapper::bbHide()
- {
- bbtkDebugMessage("Wx",9,"WxBlackBoxDialogWrapper::bbHide() ["<<
- bbGetBlackBox()->bbGetFullName()<<"]"<<std::endl);
- WxBlackBoxWindow::bbHide();
- mWrapped->Hide();
+ if (bbGetBlackBox()) bbGetBlackBox()->bbUserOnHide();
}
//=========================================================================
- */
-
- /*
- //=========================================================================
- // WxBlackBoxWidget
- //=========================================================================
-
- //=========================================================================
- WxBlackBoxWidget::WxBlackBoxWidget( WxBlackBox* box)
- : mBox(box)
- {
- bbtkDebugMessage("Wx",9,"WxBlackBoxWidget::WxBlackBoxWidget("<<box->bbGetFullName()<<")"<<std::endl);
- mBox->bbSetWidget(this);
- }
- //=========================================================================
-
- //=========================================================================
- WxBlackBoxWidget::~WxBlackBoxWidget()
- {
- bbtkDebugMessage("Wx",9,"WxBlackBoxWidget::~WxBlackBoxWidget("<<mBox->bbGetFullName()<<")"<<std::endl);
- mBox->bbSetWidget(0);
- //bbtkDebugMessage("Wx",9,"EO WxBlackBoxWidget::~WxBlackBoxWidget("<<mBox->bbGetFullName()<<")"<<std::endl);
- }
- //=========================================================================
- */
:
mBox(box),
mWindow(widget)
- // mDead(false)
{
- bbtkDebugMessage("Wx",9,"WxBlackBoxWidgetEventHandler::WxBlackBoxWidgetEventHandler("<<mBox->bbGetFullName()<<")"<<std::endl);
+ bbtkDebugMessage("wx",9,"WxBlackBoxWidgetEventHandler::WxBlackBoxWidgetEventHandler("<<mBox.lock()->bbGetFullName()<<")"<<std::endl);
- mBox->bbSetWidgetEventHandler(this);
+ mBox.lock()->bbSetWidgetEventHandler(this);
Connect ( mWindow->GetId(),
wxEVT_DESTROY,
//=========================================================================
WxBlackBoxWidgetEventHandler::~WxBlackBoxWidgetEventHandler()
{
- bbtkDebugMessage("Wx",9,
- "WxBlackBoxWidgetEventHandler::~WxBlackBoxWidgetEventHandler("
- <<mBox->bbGetFullName()<<")"<<std::endl);
- mBox->bbSetWidgetEventHandler(0);
+ if (mBox.expired()) return;
+ bbtkDebugMessage("wx",9,
+ "WxBlackBoxWidgetEventHandler::~WxBlackBoxWidgetEventHandler() ["
+ <<mBox.lock()->bbGetFullName()<<"]"<<std::endl);
+ mBox.lock()->bbSetWidgetEventHandler(0);
}
//=========================================================================
//=========================================================================
void WxBlackBoxWidgetEventHandler::OnWindowDestroy(wxWindowDestroyEvent&)
{
- bbtkDebugMessage("Wx",9,"WxBlackBoxWidgetEventHandler::OnWindowDestroy() ["
- <<mBox->bbGetFullName()<<"]"<<std::endl);
- mBox->bbSetOutputWidget(0);
- mBox->bbSetModifiedStatus();
- //mDead = true;
- //delete this;
+ if (mBox.expired()) return;
+ bbtkDebugMessage("wx",9,"WxBlackBoxWidgetEventHandler::OnWindowDestroy() ["
+ <<mBox.lock()->bbGetFullName()<<"]"<<std::endl);
+ mBox.lock()->bbSetOutputWidget(0);
+ mBox.lock()->bbSetModifiedStatus();
}
//=========================================================================
- /*
- //=========================================================================
- wxWindow* WxParentToChildData::GetWindowInWhichToInsert( const BlackBox* b)
- const
- {
- bbtkDebugMessageInc("Kernel",9,"WxParentToChildData::GetWindowInWhichToInsert("<<b->bbGetFullName()<<")"<<std::endl);
-
- BlackBox::InputConnectorMapType::const_iterator i = b->bbGetInputConnectorMap().find("WinParent");
- if (i==b->bbGetInputConnectorMap().end())
- {
- bbtkError("WxParentToChildData::GetWindowInWhichToInsert : the box "
- <<b->bbGetFullName()
- <<" does not have any 'Parent' input ?!?");
- }
- Connection* c = i->second->GetConnection();
- if (!c)
- {
- bbtkDebugMessage("Kernel",9,
- "-> The input 'Parent' of the box "
- <<b->bbGetFullName()
- <<" is not connected."<<std::endl);
- return 0;
- }
-
- std::map< Connection*, wxWindow *>::const_iterator j
- = mConnectionToWindowMap.find(c);
-
- if (j==mConnectionToWindowMap.end())
- {
- bbtkError("WxParentToChildData::GetWindowInWhichToInsert("
- <<b->bbGetFullName()
- <<") no window provided by parent ?!?");
- }
-
- bbtkDebugDecTab("Kernel",9);
- return j->second;
- }
- //=========================================================================
- */
-
//=========================================================================
// WxBlackBox
//=========================================================================
//=========================================================================
void WxBlackBox::bbUserDestructor()
{
- bbtkDebugMessage("Kernel",9,"WxBlackBox::bbUserDestructor()"<<std::endl);
+ bbtkDebugMessage("wx",9,"==> WxBlackBox::bbUserDestructor() ["<<bbGetFullName()<<"]"<<std::endl);
if (bbGetWindow()) {
delete bbGetWindow();
- // bbSetWindow(0);
+ bbSetWindow(0);
}
- bbtkDebugMessage("Kernel",9,"EO WxBlackBox::bbUserDestructor()"<<std::endl);
+ bbtkDebugMessage("wx",9,"<== WxBlackBox::bbUserDestructor() ["<<bbGetFullName()<<"]"<<std::endl);
}
//=========================================================================
{
if (bbGetOutputWidget() && bbGetOutputWidget()->IsDead())
{
- bbtkDebugMessage("Wx",9,"WxBlackBox::bbGetWidget() ["<<
+ bbtkDebugMessage("wx",9,"WxBlackBox::bbGetWidget() ["<<
bbGetFullName()<<"] : Widget is dead : deleting it"
<<std::endl);
delete bbGetOutputWidget();
"-> Output 'Widget' connected : transfering execution to parent"
<<std::endl);
- i->second->GetConnectionVector().front().lock()
+ i->second->GetConnectionVector().front() //.lock()
->GetBlackBoxTo()->bbExecute(force);
}
else
{
bbSetUpdateTransferedToParent(true);
- i->second->GetConnectionVector().front().lock()
+ i->second->GetConnectionVector().front() //.lock()
->GetBlackBoxTo()->bbExecute(false);
}
}
if ( i->second->GetConnectionVector().size() != 0 )
{
return boost::static_pointer_cast<WxBlackBox>
- (i->second->GetConnectionVector().front().lock()->GetBlackBoxTo())
- ->bbGetContainingWindow();
+ (i->second->GetConnectionVector().front() //.lock()
+ ->GetBlackBoxTo())->bbGetContainingWindow();
}
return 0;
}