Program: bbtk
Module: $RCSfile: bbtkWxBlackBox.cxx,v $
Language: C++
- Date: $Date: 2008/02/05 13:23:46 $
- Version: $Revision: 1.4 $
+ Date: $Date: 2008/06/27 08:12:46 $
+ Version: $Revision: 1.23 $
Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de
l'Image). All rights reserved. See Doc/License.txt or
namespace bbtk
{
- //=========================================================================
- wxWindow* WxBlackBox::bbGlobalGetTopWindow()
- {
- return bbmgTopWindow;
- }
- //=========================================================================
-
- //=========================================================================
- void WxBlackBox::bbGlobalSetTopWindow(wxWindow* w)
- {
- if ( bbmgTopWindow )
- {
- bbtkGlobalError("WxBlackBox::bbGlobalSetTopWindow : top window already set !");
- }
- bbmgTopWindow = w;
- }
- //=========================================================================
-
-
- //=========================================================================
- void WxBlackBox::bbGlobalDecNbWindowsAlive()
- {
- bbmgNbWindowsAlive--;
- /*
- if ( (bbmgNbWindowsAlive==0) &&
- bbmgTopWindow && (!bbmgTopWindow->IsShown()))
- {
- bbmgTopWindow->Close();
- }
- */
- }
- //=========================================================================
-
- //=========================================================================
- void WxBlackBox::bbGlobalDecNbWindowsShown()
- {
- bbmgNbWindowsShown--;
- if ( (bbmgNbWindowsShown==0) &&
- bbmgTopWindow && (!bbmgTopWindow->IsShown()))
- {
- bbmgTopWindow->Close();
- }
- }
- //=========================================================================
-
- //=========================================================================
- // Static members
- wxWindow* WxBlackBox::bbmgTopWindow =0;
- int WxBlackBox::bbmgNbWindowsAlive = 0;
- int WxBlackBox::bbmgNbWindowsShown = 0;
- //=========================================================================
-
-
//=========================================================================
- WxBlackBoxWindow::WxBlackBoxWindow(WxBlackBox* box)
+ WxBlackBoxWindow::WxBlackBoxWindow(WxBlackBox::Pointer box)
: mBox(box), mShown(false)
{
- bbtkDebugMessage("Wx",9,"WxBlackBoxWindow::WxBlackBoxWindow("<<
- mBox->bbGetFullName()<<")"<<std::endl);
- mBox->bbSetWindow(this);
- WxBlackBox::bbGlobalIncNbWindowsAlive();
- bbtkDebugMessage("Wx",9," -> Number of windows alive = "
- <<WxBlackBox::bbGlobalGetNbWindowsAlive()<<std::endl);
+ bbtkDebugMessage("wx",9,"WxBlackBoxWindow::WxBlackBoxWindow("<<
+ mBox.lock()->bbGetFullName()<<")"<<std::endl);
+ mBox.lock()->bbSetWindow(this);
+ Wx::IncNbWindowsAlive();
}
//=========================================================================
//=========================================================================
WxBlackBoxWindow::~WxBlackBoxWindow()
{
- bbtkDebugMessage("Wx",9,"WxBlackBoxWindow::~WxBlackBoxWindow() ["<<
- mBox->bbGetFullName()<<"]"<<std::endl);
+ bbtkDebugMessage("wx",9,"WxBlackBoxWindow::~WxBlackBoxWindow() "
+ <<this<<std::endl);
bbHide();
- mBox->bbSetWindow(0);
- WxBlackBox::bbGlobalDecNbWindowsAlive();
- bbtkDebugMessage("Wx",9," -> Number of windows alive = "
- <<WxBlackBox::bbGlobalGetNbWindowsAlive()<<std::endl);
-
-
+ Wx::DecNbWindowsAlive();
+ if (!mBox.expired())
+ {
+ mBox.lock()->bbSetWindow(0);
+ }
}
//=========================================================================
+
//=========================================================================
void WxBlackBoxWindow::bbShow()
{
if (bbIsShown()) return;
- bbtkDebugMessage("Wx",9,"WxBlackBoxWindow::bbShow() ["<<
- mBox->bbGetFullName()<<"]"<<std::endl);
- WxBlackBox::bbGlobalIncNbWindowsShown();
+ bbtkDebugMessage("wx",9,"WxBlackBoxWindow::bbShow()"<<std::endl);
+ Wx::IncNbWindowsShown();
mShown = true;
- bbtkDebugMessage("Wx",9," -> Number of windows shown = "
- <<WxBlackBox::bbGlobalGetNbWindowsShown()<<std::endl);
}
//=========================================================================
void WxBlackBoxWindow::bbHide()
{
if (!bbIsShown()) return;
- bbtkDebugMessage("Wx",9,"WxBlackBoxWindow::bbHide() ["<<
- mBox->bbGetFullName()<<"]"<<std::endl);
- WxBlackBox::bbGlobalDecNbWindowsShown();
+ bbtkDebugMessage("wx",9,"WxBlackBoxWindow::bbHide()"<<std::endl);
+ Wx::DecNbWindowsShown();
mShown = false;
- bbtkDebugMessage("Wx",9," -> Number of windows shown = "
- <<WxBlackBox::bbGlobalGetNbWindowsShown()<<std::endl);
}
//=========================================================================
+ //=========================================================================
+ void WxBlackBoxWindow::bbClose()
+ {
+ }
+ //=========================================================================
//=========================================================================
//=========================================================================
//=========================================================================
- WxBlackBoxDialog::WxBlackBoxDialog(WxBlackBox* box,
+ WxBlackBoxDialog::WxBlackBoxDialog(WxBlackBox::Pointer box,
wxWindow *parent,
wxString title,
wxSize size)
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() );
+ bbHide();
}
//=========================================================================
//=========================================================================
void WxBlackBoxDialog::bbHide()
{
- bbtkDebugMessage("Wx",9,"WxBlackBoxDialog::bbHide() ["<<
- bbGetBlackBox()->bbGetFullName()<<"]"<<std::endl);
+ bbtkDebugMessage("wx",9,"WxBlackBoxDialog::bbHide()"<<std::endl);
WxBlackBoxWindow::bbHide();
Hide();
}
//=========================================================================
+ //=========================================================================
+ void WxBlackBoxDialog::bbClose()
+ {
+ wxDialog::Close();
+ }
+ //=========================================================================
+
//=========================================================================
WxBlackBoxDialog::~WxBlackBoxDialog()
{
//=========================================================================
//=========================================================================
- WxBlackBoxFrame::WxBlackBoxFrame(WxBlackBox* box,
+ WxBlackBoxFrame::WxBlackBoxFrame(WxBlackBox::Pointer box,
wxWindow *parent,
wxString title,
wxSize size)
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();
- }
- //=========================================================================
-
- //=========================================================================
- void WxBlackBoxFrame::bbHide()
- {
- bbtkDebugMessage("Wx",9,"WxBlackBoxFrame::bbHide() ["<<
- bbGetBlackBox()->bbGetFullName()<<"]"<<std::endl);
- WxBlackBoxWindow::bbHide();
- Hide();
- }
- //=========================================================================
-
+ wxFrame::Show();
+ // This Update is ** MANDATORY **
+ // to synchronize wxvtkRenderWindowInteractor objects
+ // (force wx objects creation **NOW**)
- //=========================================================================
- // WxBlackBoxDialogWrapper
- //=========================================================================
- /*
- //=========================================================================
- WxBlackBoxDialogWrapper::WxBlackBoxDialogWrapper(WxBlackBox* box,
- wxDialog *wrapped)
- : WxBlackBoxWindow(box),
- mWrapped(wrapped)
- {
- bbtkDebugMessage("Wx",9,
- "WxBlackBoxDialogWrapper::WxBlackBoxDialogWrapper("
- <<bbGetBlackBox()->bbGetFullName()<<","<<wrapped
- <<")"<<std::endl);
- }
- //=========================================================================
-
- //=========================================================================
- WxBlackBoxDialogWrapper::~WxBlackBoxDialogWrapper()
- {
- }
- //=========================================================================
+#if defined(_WIN32)
+ wxFrame::Refresh();
+#endif
- //=========================================================================
- void WxBlackBoxDialogWrapper::bbShow()
- {
- bbtkDebugMessage("Wx",5,"WxBlackBoxDialogWrapper::bbShow("
- <<bbGetBlackBox()->bbGetFullName()<<")"<<std::endl);
- WxBlackBoxWindow::bbShow();
- int i = mWrapped->ShowModal();
- // For Windows :
- mWrapped->SetReturnCode( i );
+ wxFrame::Update();
+ wxFrame::SetFocus();
+ if (bbGetBlackBox()) bbGetBlackBox()->bbUserOnShow();
}
//=========================================================================
//=========================================================================
- void WxBlackBoxDialogWrapper::bbHide()
+ void WxBlackBoxFrame::bbHide()
{
- bbtkDebugMessage("Wx",9,"WxBlackBoxDialogWrapper::bbHide() ["<<
- bbGetBlackBox()->bbGetFullName()<<"]"<<std::endl);
+ bbtkDebugMessage("wx",9,"WxBlackBoxFrame::bbHide()"<<std::endl);
WxBlackBoxWindow::bbHide();
- mWrapped->Hide();
- }
- //=========================================================================
-
- */
-
- /*
- //=========================================================================
- // WxBlackBoxWidget
- //=========================================================================
-
- //=========================================================================
- WxBlackBoxWidget::WxBlackBoxWidget( WxBlackBox* box)
- : mBox(box)
- {
- bbtkDebugMessage("Wx",9,"WxBlackBoxWidget::WxBlackBoxWidget("<<box->bbGetFullName()<<")"<<std::endl);
- mBox->bbSetWidget(this);
+ wxFrame::Hide();
+ if (bbGetBlackBox()) bbGetBlackBox()->bbUserOnHide();
}
//=========================================================================
//=========================================================================
- WxBlackBoxWidget::~WxBlackBoxWidget()
+ void WxBlackBoxFrame::bbClose()
{
- bbtkDebugMessage("Wx",9,"WxBlackBoxWidget::~WxBlackBoxWidget("<<mBox->bbGetFullName()<<")"<<std::endl);
- mBox->bbSetWidget(0);
- //bbtkDebugMessage("Wx",9,"EO WxBlackBoxWidget::~WxBlackBoxWidget("<<mBox->bbGetFullName()<<")"<<std::endl);
+ wxFrame::Close();
}
//=========================================================================
- */
//=========================================================================
//=========================================================================
- WxBlackBoxWidgetEventHandler::WxBlackBoxWidgetEventHandler( WxBlackBox* box,
- wxWindow *widget )
+ WxBlackBoxWidgetEventHandler::
+ WxBlackBoxWidgetEventHandler( WxBlackBox::Pointer box,
+ wxWindow *widget )
:
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
//=========================================================================
//=========================================================================
//=========================================================================
//=========================================================================
- BBTK_USER_BLACK_BOX_IMPLEMENTATION(WxBlackBox,UserBlackBox);
+ BBTK_BLACK_BOX_IMPLEMENTATION(WxBlackBox,AtomicBlackBox);
//=========================================================================
//=========================================================================
//=========================================================================
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();
bbmWindow = 0;
// bbmWidget = 0;
// bbSetInputWinParent(0);
- bbSetInputWinTitle("...");
+ bbSetInputWinTitle(bbGetName());
bbSetInputWinWidth(800);
bbSetInputWinHeight(800);
bbSetInputWinDialog(false);
bbSetOutputWidget(0);
bbSetWidgetEventHandler(0);
+ bbSetUpdateTransferedToParent(false);
}
//=========================================================================
+ //=========================================================================
+ /// Main processing method of the box.
+ void WxBlackBox::bbExecute(bool force)
+ {
+ bbtkDebugMessageInc("process",2,
+ "=> WxBlackBox::bbExecute() ["
+ <<bbGetFullName()<<"]"<<std::endl);
+
+ // If the output 'Widget' is connected then
+ // we must execute the parent box
+ BlackBox::OutputConnectorMapType::const_iterator i
+ = bbGetOutputConnectorMap().find("Widget");
+
+ if ( i->second->GetConnectionVector().size() != 0 )
+ {
+ bbtkDebugMessage("process",3,
+ "-> Output 'Widget' connected : transfering execution to parent"
+ <<std::endl);
+
+ i->second->GetConnectionVector().front() //.lock()
+ ->GetBlackBoxTo()->bbExecute(force);
+
+ }
+ // else call 'standard' BlackBox execution method
+ else
+ {
+ BlackBox::bbExecute(force);
+ }
+ //
+
+ bbtkDebugMessageDec("process",2,
+ "<= WxBlackBox::bbExecute() ["
+ <<bbGetFullName()<<"]"<<std::endl);
+ }
+ //=========================================================================
+
+
+ //=========================================================================
+ /// Main processing method of the box.
+ IOStatus WxBlackBox::bbBackwardUpdate( Connection::Pointer caller )
+ {
+ bbtkDebugMessage("process",3,
+ "=> WxBlackBox::bbBackwardUpdate("
+ <<(caller?caller->GetFullName():"0")<<") ["
+ <<bbGetFullName()<<"]"<<std::endl);
+ // If the caller's box to is not the box to connected to the
+ // output 'Widget'
+ if ( ! (( bbGetStatus() == MODIFIED ) ||
+ ( bbBoxProcessModeIsAlways() )) )
+ {
+ bbtkDebugMessage("process",3,"Up-to-date : nothing to do"<<std::endl);
+ bbtkDebugMessage("process",3,
+ "<= WxBlackBox::bbBackwardUpdate("
+ <<(caller?caller->GetFullName():"0")<<") ["
+ <<bbGetFullName()<<"]"<<std::endl);
+ return bbGetStatus();
+ }
+
+ BlackBox::OutputConnectorMapType::const_iterator i
+ = bbGetOutputConnectorMap().find("Widget") ;
+ if ( i->second->GetConnectionVector().size() != 0 )
+
+ {
+ BlackBox::Pointer to =
+ i->second->GetConnectionVector()[0]->GetBlackBoxTo();
+
+ if (caller)
+ {
+ bbtkDebugMessage("process",3,
+ "-> Output 'Widget' connected to '"
+ <<to->bbGetFullName()<<"' - caller->to = '"
+ <<caller->GetBlackBoxTo()->bbGetFullName()
+ <<"'"
+ <<std::endl);
+ }
+ else
+ {
+ bbtkDebugMessage("process",3,
+ "-> Output 'Widget' connected to '"
+ <<to->bbGetFullName()<<"'"
+ <<std::endl);
+ }
+ if ((caller==0) ||
+ ((caller!=0) &&
+ (caller->GetBlackBoxTo() != to))&&
+ (!bbGetUpdateTransferedToParent())&&
+ (to->bbGetStatus()!=UPDATING))
+ {
+ bbtkDebugMessage("process",3,
+ " ... Transfering update order to parent"
+ <<std::endl);
+
+ bbSetUpdateTransferedToParent(true);
+ i->second->GetConnectionVector().front() //.lock()
+ ->GetBlackBoxTo()->bbExecute(false);
+ }
+ else
+ {
+ bbSetUpdateTransferedToParent(false);
+ bbtkDebugMessage("process",3,
+ " ... No need to transfer to parent"
+ <<std::endl);
+ }
+ }
+ /*
+
+ // If the caller is not the connection to the output widget
+ // and the output 'Widget' is connected then
+ // we must execute the parent box
+ // but only one time
+ // (this is the role of the flag UpdateTransferedToParent)
+ if ( (caller==0) ||
+ ((caller!=0)&&(caller->GetBlackBoxFromOutput()!="Widget"))
+ )
+ {
+ }
+ */
+ // call 'standard' BlackBox execution method
+ if (!bbGetUpdateTransferedToParent())
+ {
+ AtomicBlackBox::bbBackwardUpdate(caller);
+ }
+
+ bbtkDebugMessageDec("process",3,
+ "<= WxBlackBox::bbBackwardUpdate() ["
+ <<bbGetFullName()<<"]"<<std::endl);
+
+ return bbGetStatus();
+
+ }
+ //=========================================================================
+ void WxBlackBox::bbProcess()
+ {
+ if (bbGetOutputWidget()==0) this->bbUserCreateWidget();
+ this->bbUserProcess();
+ bbShowWindow();
+ // this->bbUserOnShow();
+ }
+ //=========================================================================
+
//==================================================================
/// Specific methods for window creation during pipeline execution
/// Shows the window associated to the box
/// (called after bbProcess during bbExecute)
void WxBlackBox::bbShowWindow()
{
- bbtkDebugMessageInc("Process",1,"=> WxBlackBox::bbShowWindow() ["
+ bbtkDebugMessageInc("wx",1,"=> WxBlackBox::bbShowWindow() ["
<<bbGetFullName()<<"]"<<std::endl);
// If Event Handler for the widget does not exist or is obsolete : create it
{
if (bbGetWidgetEventHandler()==0)
{
- bbtkDebugMessage("Process",3,
+ bbtkDebugMessage("wx",3,
"-> No widget event handler : creating one"
<<std::endl);
- new WxBlackBoxWidgetEventHandler(this,bbGetOutputWidget());
+ new WxBlackBoxWidgetEventHandler(GetThisPointer<WxBlackBox>(),
+ bbGetOutputWidget());
}
else if ( ! bbGetWidgetEventHandler()->IsHandlerOf
( bbGetOutputWidget() ) )
{
- bbtkDebugMessage("Process",3,
+ bbtkDebugMessage("wx",3,
"-> Obsolete widget event handler : re-creating one"
<<std::endl);
delete bbGetWidgetEventHandler();
- new WxBlackBoxWidgetEventHandler(this,bbGetOutputWidget());
+ new WxBlackBoxWidgetEventHandler(GetThisPointer<WxBlackBox>(),
+ bbGetOutputWidget());
}
+ // Sets the name of the wxWindow to the input WinTitle
+ bbGetOutputWidget()->SetName(bbtk::std2wx(bbGetInputWinTitle()));
}
// If the output 'Widget' is connected then it's gonna
->GetConnectionVector().size() != 0 )
{
- bbtkDebugMessage("Process",2,
+ bbtkDebugMessage("wx",2,
"-> Output 'Widget' connected : nothing to do"
<<std::endl);
- bbtkDebugDecTab("Process",1);
return;
}
// If the window already exists : no need creating it
if (bbGetWindow()!=0)
{
- bbtkDebugMessage("Process",2,
+ bbtkDebugMessage("wx",2,
"-> Window already exists"
<<std::endl);
show = bbGetWindow();
// Else if the widget exists : create window
else if (bbGetOutputWidget()!=0)
{
- bbtkDebugMessage("Process",2,
+ bbtkDebugMessage("wx",2,
"-> Widget exists : creating the window"
<<std::endl);
// Input WinDialog set to true : creating a Dialog
if (bbGetInputWinDialog())
{
- bbtkDebugMessage("Process",2,
+ bbtkDebugMessage("wx",2,
" Input WinDialog set to true : creating a Dialog"
<<std::endl);
- show = (Window*) new WxBlackBoxDialog( this,
- bbGlobalGetTopWindow(),
+ show = (Window*) new WxBlackBoxDialog( GetThisPointer<WxBlackBox>(),
+ bbGetWxParent(),
std2wx( bbGetInputWinTitle() + " - bbtk (c) CREATIS LRMN"),
wxSize( bbGetInputWinWidth() , bbGetInputWinHeight() ) );
}
// Input WinDialog set to false : creating a Frame
else
{
- bbtkDebugMessage("Process",2,
+ bbtkDebugMessage("process",2,
" Input WinDialog set to false : creating a Frame"
<<std::endl);
- show = (Window*) new WxBlackBoxFrame( this,
- bbGlobalGetTopWindow(),
+ show = (Window*) new WxBlackBoxFrame( GetThisPointer<WxBlackBox>(),
+ bbGetWxParent(),
std2wx( bbGetInputWinTitle() + " - bbtk (c) CREATIS LRMN"),
wxSize( bbGetInputWinWidth() , bbGetInputWinHeight() ) );
}
}
else
{
- bbtkDebugMessage("Process",2,"-> Already shown : nothing to do"<<std::endl);
+ bbtkDebugMessage("wx",2,"-> Already shown : nothing to do"<<std::endl);
}
- bbtkDebugMessage("Process",1,"<= WxBlackBox::bbShowWindow() ["
+ bbtkDebugMessage("wx",1,"<= WxBlackBox::bbShowWindow() ["
<<bbGetFullName()<<"]"<<std::endl);
- bbtkDebugDecTab("Process",1);
+
}
//==================================================================
//==================================================================
void WxBlackBox::bbHideWindow()
{
- bbtkDebugMessageInc("Process",1,"=> WxBlackBox::bbHideWindow() ["
+ bbtkDebugMessageInc("wx",1,"=> WxBlackBox::bbHideWindow() ["
<<bbGetFullName()<<"]"<<std::endl);
if (bbGetWindow()!=0) bbGetWindow()->bbHide();
- bbtkDebugMessageDec("Process",1,"<= WxBlackBox::bbHideWindow() ["
+ bbtkDebugMessageDec("wx",1,"<= WxBlackBox::bbHideWindow() ["
<<bbGetFullName()<<"]"<<std::endl);
}
//==================================================================
+ //==================================================================
+ void WxBlackBox::bbCloseWindow()
+ {
+ bbtkDebugMessageInc("wx",1,"=> WxBlackBox::bbCloseWindow() ["
+ <<bbGetFullName()<<"]"<<std::endl);
+
+ if (bbGetWindow()!=0) bbGetWindow()->bbClose();
+
+ bbtkDebugMessageDec("wx",1,"<= WxBlackBox::bbCloseWindow() ["
+ <<bbGetFullName()<<"]"<<std::endl);
+ }
+ //==================================================================
+
+ //==================================================================
+ WxBlackBox::Window* WxBlackBox::bbGetContainingWindow()
+ {
+ if (bbGetWindow()!=0) return bbGetWindow();
+ BlackBox::OutputConnectorMapType::const_iterator i
+ = bbGetOutputConnectorMap().find("Widget");
+ if ( i->second->GetConnectionVector().size() != 0 )
+ {
+ return boost::static_pointer_cast<WxBlackBox>
+ (i->second->GetConnectionVector().front() //.lock()
+ ->GetBlackBoxTo())->bbGetContainingWindow();
+ }
+ return 0;
+ }
+ //==================================================================
+
+
+ //==================================================================
+ wxWindow* WxBlackBox::bbGetWxParent() { return Wx::GetTopWindow(); }
+ //==================================================================
+
+
+ //==================================================================
+ bool WxBlackBox::bbIsShown()
+ {
+ if (bbGetContainingWindow()!=0)
+ return bbGetContainingWindow()->bbIsShown();
+ return false;
+ }
+ //==================================================================
}//namespace bbtk