Program: bbtk
Module: $RCSfile: bbtkWxBlackBox.cxx,v $
Language: C++
- Date: $Date: 2008/04/23 14:49:28 $
- Version: $Revision: 1.15 $
+ Date: $Date: 2008/07/25 07:44:12 $
+ Version: $Revision: 1.26 $
Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de
l'Image). All rights reserved. See Doc/License.txt or
mBox.lock()->bbGetFullName()<<")"<<std::endl);
mBox.lock()->bbSetWindow(this);
Wx::IncNbWindowsAlive();
- bbtkDebugMessage("wx",5," -> Number of windows alive = "
- <<Wx::GetNbWindowsAlive()<<std::endl);
}
//=========================================================================
{
mBox.lock()->bbSetWindow(0);
}
- else
- {
- }
- bbtkDebugMessage("wx",5," -> Number of windows alive = "
- <<Wx::GetNbWindowsAlive()<<std::endl);
}
//=========================================================================
bbtkDebugMessage("wx",9,"WxBlackBoxWindow::bbShow()"<<std::endl);
Wx::IncNbWindowsShown();
mShown = true;
- bbtkDebugMessage("wx",5," -> Number of windows shown = "
- <<Wx::GetNbWindowsShown()<<std::endl);
}
//=========================================================================
bbtkDebugMessage("wx",9,"WxBlackBoxWindow::bbHide()"<<std::endl);
Wx::DecNbWindowsShown();
mShown = false;
- bbtkDebugMessage("wx",5," -> Number of windows shown = "
- <<Wx::GetNbWindowsShown()<<std::endl);
}
//=========================================================================
+ //=========================================================================
+ void WxBlackBoxWindow::bbClose()
+ {
+ }
+ //=========================================================================
//=========================================================================
wxString title,
wxSize size)
:
- WxBlackBoxWindow(box),
wxDialog( parent,
-1,
title,
wxMAXIMIZE_BOX |
wxMINIMIZE_BOX |
wxCAPTION
- )
+ ),
+ WxBlackBoxWindow(box)
{
bbtkDebugMessage("wx",9,"WxBlackBoxDialog::WxBlackBoxDialog("<<
bbGetBlackBox()->bbGetFullName()<<","<<parent<<","
//=========================================================================
void WxBlackBoxDialog::bbShow()
{
+ if (bbIsShown()) return;
bbtkDebugMessage("wx",5,"WxBlackBoxDialog::bbShow() ["
<<bbGetBlackBox()->bbGetFullName()<<"]"<<std::endl);
WxBlackBoxWindow::bbShow();
SetReturnCode( wxDialog::ShowModal() );
+ bbClose();
}
//=========================================================================
}
//=========================================================================
+ //=========================================================================
+ void WxBlackBoxDialog::bbClose()
+ {
+ bbtkDebugMessage("wx",9,"WxBlackBoxDialog::bbClose()"<<std::endl);
+ wxDialog::Destroy();
+ }
+ //=========================================================================
+
//=========================================================================
WxBlackBoxDialog::~WxBlackBoxDialog()
{
wxWindow *parent,
wxString title,
wxSize size)
- : WxBlackBoxWindow(box),
- wxFrame( parent,
+ : wxFrame( parent,
-1,
title,
wxDefaultPosition,
wxMAXIMIZE_BOX |
wxMINIMIZE_BOX |
wxCAPTION
- )
+ ),
+ WxBlackBoxWindow(box)
{
bbtkDebugMessage("wx",9,"WxBlackBoxFrame::WxBlackBoxFrame("<<
bbGetBlackBox()->bbGetFullName()<<","<<parent<<","
//=========================================================================
void WxBlackBoxFrame::bbShow()
{
+ if (bbIsShown()) return;
bbtkDebugMessage("wx",5,"WxBlackBoxFrame::bbShow("
<<bbGetBlackBox()->bbGetFullName()<<")"<<std::endl);
WxBlackBoxWindow::bbShow();
- wxFrame::Show();
+ wxFrame::Show();
// This Update is ** MANDATORY **
// to synchronize wxvtkRenderWindowInteractor objects
// (force wx objects creation **NOW**)
- wxFrame::Update();
+
+
+#if defined(_WIN32)
+ wxFrame::Refresh();
+#endif
+
+ wxFrame::Update();
+ wxFrame::SetFocus();
if (bbGetBlackBox()) bbGetBlackBox()->bbUserOnShow();
- // wxFrame::SetFocus();
}
//=========================================================================
}
//=========================================================================
+ //=========================================================================
+ void WxBlackBoxFrame::bbClose()
+ {
+ bbtkDebugMessage("wx",9,"WxBlackBoxFrame::bbClose()"<<std::endl);
+ wxFrame::Close();
+ }
+ //=========================================================================
/// Main processing method of the box.
void WxBlackBox::bbExecute(bool force)
{
- bbtkDebugMessageInc("Process",1,
+ bbtkDebugMessageInc("process",2,
"=> WxBlackBox::bbExecute() ["
<<bbGetFullName()<<"]"<<std::endl);
if ( i->second->GetConnectionVector().size() != 0 )
{
- bbtkDebugMessage("Process",2,
+ bbtkDebugMessage("process",3,
"-> Output 'Widget' connected : transfering execution to parent"
<<std::endl);
}
//
- bbtkDebugMessageDec("Process",1,
+ bbtkDebugMessageDec("process",2,
"<= WxBlackBox::bbExecute() ["
<<bbGetFullName()<<"]"<<std::endl);
}
/// Main processing method of the box.
IOStatus WxBlackBox::bbBackwardUpdate( Connection::Pointer caller )
{
- bbtkDebugMessage("Process",1,
+ bbtkDebugMessage("process",3,
"=> WxBlackBox::bbBackwardUpdate("
<<(caller?caller->GetFullName():"0")<<") ["
<<bbGetFullName()<<"]"<<std::endl);
if ( ! (( bbGetStatus() == MODIFIED ) ||
( bbBoxProcessModeIsAlways() )) )
{
- bbtkDebugMessage("Process",2,"Up-to-date : nothing to do"<<std::endl);
- bbtkDebugMessage("Process",1,
+ bbtkDebugMessage("process",3,"Up-to-date : nothing to do"<<std::endl);
+ bbtkDebugMessage("process",3,
"<= WxBlackBox::bbBackwardUpdate("
<<(caller?caller->GetFullName():"0")<<") ["
<<bbGetFullName()<<"]"<<std::endl);
if (caller)
{
- bbtkDebugMessage("Process",2,
+ bbtkDebugMessage("process",3,
"-> Output 'Widget' connected to '"
<<to->bbGetFullName()<<"' - caller->to = '"
<<caller->GetBlackBoxTo()->bbGetFullName()
}
else
{
- bbtkDebugMessage("Process",2,
+ bbtkDebugMessage("process",3,
"-> Output 'Widget' connected to '"
<<to->bbGetFullName()<<"'"
<<std::endl);
if ((caller==0) ||
((caller!=0) &&
(caller->GetBlackBoxTo() != to))&&
- (!bbGetUpdateTransferedToParent()))
+ (!bbGetUpdateTransferedToParent())&&
+ (to->bbGetStatus()!=UPDATING))
{
- bbtkDebugMessage("Process",2,
+ bbtkDebugMessage("process",3,
" ... Transfering update order to parent"
<<std::endl);
else
{
bbSetUpdateTransferedToParent(false);
- bbtkDebugMessage("Process",2,
+ bbtkDebugMessage("process",3,
" ... No need to transfer to parent"
<<std::endl);
}
// call 'standard' BlackBox execution method
if (!bbGetUpdateTransferedToParent())
{
- AtomicBlackBox::bbBackwardUpdate(caller);
+ AtomicBlackBox::bbBackwardUpdate(caller);
}
- bbtkDebugMessageDec("Process",1,
+ bbtkDebugMessageDec("process",3,
"<= WxBlackBox::bbBackwardUpdate() ["
<<bbGetFullName()<<"]"<<std::endl);
+ return bbGetStatus();
+
+
}
//=========================================================================
if (bbGetOutputWidget()==0) this->bbUserCreateWidget();
this->bbUserProcess();
bbShowWindow();
+ // this->bbUserOnShow();
}
//=========================================================================
/// (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(GetThisPointer<WxBlackBox>(),
else if ( ! bbGetWidgetEventHandler()->IsHandlerOf
( bbGetOutputWidget() ) )
{
- bbtkDebugMessage("Process",3,
+ bbtkDebugMessage("wx",3,
"-> Obsolete widget event handler : re-creating one"
<<std::endl);
delete bbGetWidgetEventHandler();
->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( GetThisPointer<WxBlackBox>(),
// 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( GetThisPointer<WxBlackBox>(),
}
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()
{