X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;ds=sidebyside;f=kernel%2Fsrc%2FbbtkWxBlackBox.cxx;h=2413e4a55aba8e69c9e067adafb05c2db8b156db;hb=4ad5b5ee44357ad873bc8c43230defb6d0a79879;hp=5b8e52f0efb5602342b05dae1757008387228853;hpb=141959873bfc3610f427de9a7690458a8b18bd2a;p=bbtk.git diff --git a/kernel/src/bbtkWxBlackBox.cxx b/kernel/src/bbtkWxBlackBox.cxx index 5b8e52f..2413e4a 100644 --- a/kernel/src/bbtkWxBlackBox.cxx +++ b/kernel/src/bbtkWxBlackBox.cxx @@ -3,8 +3,8 @@ Program: bbtk Module: $RCSfile: bbtkWxBlackBox.cxx,v $ Language: C++ - Date: $Date: 2008/03/10 12:28:43 $ - Version: $Revision: 1.10 $ + Date: $Date: 2008/04/18 12:59:16 $ + Version: $Revision: 1.12 $ Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de l'Image). All rights reserved. See Doc/License.txt or @@ -48,7 +48,7 @@ namespace bbtk //========================================================================= - WxBlackBoxWindow::WxBlackBoxWindow(WxBlackBox* box) + WxBlackBoxWindow::WxBlackBoxWindow(WxBlackBox::Pointer box) : mBox(box), mShown(false) { bbtkDebugMessage("Wx",9,"WxBlackBoxWindow::WxBlackBoxWindow("<< @@ -109,7 +109,7 @@ namespace bbtk //========================================================================= //========================================================================= - WxBlackBoxDialog::WxBlackBoxDialog(WxBlackBox* box, + WxBlackBoxDialog::WxBlackBoxDialog(WxBlackBox::Pointer box, wxWindow *parent, wxString title, wxSize size) @@ -177,7 +177,7 @@ namespace bbtk //========================================================================= //========================================================================= - WxBlackBoxFrame::WxBlackBoxFrame(WxBlackBox* box, + WxBlackBoxFrame::WxBlackBoxFrame(WxBlackBox::Pointer box, wxWindow *parent, wxString title, wxSize size) @@ -324,8 +324,9 @@ namespace bbtk //========================================================================= //========================================================================= - WxBlackBoxWidgetEventHandler::WxBlackBoxWidgetEventHandler( WxBlackBox* box, - wxWindow *widget ) + WxBlackBoxWidgetEventHandler:: + WxBlackBoxWidgetEventHandler( WxBlackBox::Pointer box, + wxWindow *widget ) : mBox(box), mWindow(widget) @@ -422,7 +423,7 @@ namespace bbtk //========================================================================= //========================================================================= //========================================================================= - BBTK_USER_BLACK_BOX_IMPLEMENTATION(WxBlackBox,AtomicBlackBox); + BBTK_BLACK_BOX_IMPLEMENTATION(WxBlackBox,AtomicBlackBox); //========================================================================= //========================================================================= @@ -513,7 +514,7 @@ namespace bbtk "-> Output 'Widget' connected : transfering execution to parent" <second->GetConnectionVector().front() + i->second->GetConnectionVector().front().lock() ->GetBlackBoxTo()->bbExecute(force); } @@ -531,6 +532,58 @@ namespace bbtk //========================================================================= + //========================================================================= + /// Main processing method of the box. + IOStatus WxBlackBox::bbBackwardUpdate( Connection::Pointer caller ) + { + bbtkDebugMessageInc("Process",1, + "=> WxBlackBox::bbBackwardUpdate(" + <<(caller?caller->GetFullName():"0")<<") [" + <GetBlackBoxFromOutput()!="Widget")) + ) + { + BlackBox::OutputConnectorMapType::const_iterator i + = bbGetOutputConnectorMap().find("Widget") ; + if ( + i->second->GetConnectionVector().size() != 0 ) + { + bbtkDebugMessage("Process",2, + "-> Output 'Widget' connected : transfering execution to parent" + <second->GetConnectionVector().front().lock() + ->GetBlackBoxTo()->bbExecute(false); + done = true; + } + } + // call 'standard' BlackBox execution method + if (!done) + { + bbSetExecuting(false); + AtomicBlackBox::bbBackwardUpdate(caller); + } + + bbtkDebugMessageDec("Process",1, + "<= WxBlackBox::bbBackwardUpdate() [" + < No widget event handler : creating one" <(), + bbGetOutputWidget()); } else if ( ! bbGetWidgetEventHandler()->IsHandlerOf ( bbGetOutputWidget() ) ) @@ -566,7 +620,8 @@ namespace bbtk "-> Obsolete widget event handler : re-creating one" <(), + bbGetOutputWidget()); } // Sets the name of the wxWindow to the input WinTitle bbGetOutputWidget()->SetName(bbtk::std2wx(bbGetInputWinTitle())); @@ -609,7 +664,7 @@ namespace bbtk bbtkDebugMessage("Process",2, " Input WinDialog set to true : creating a Dialog" <(), bbGetWxParent(), std2wx( bbGetInputWinTitle() + " - bbtk (c) CREATIS LRMN"), wxSize( bbGetInputWinWidth() , bbGetInputWinHeight() ) ); @@ -620,7 +675,7 @@ namespace bbtk bbtkDebugMessage("Process",2, " Input WinDialog set to false : creating a Frame" <(), bbGetWxParent(), std2wx( bbGetInputWinTitle() + " - bbtk (c) CREATIS LRMN"), wxSize( bbGetInputWinWidth() , bbGetInputWinHeight() ) ); @@ -678,8 +733,9 @@ namespace bbtk = bbGetOutputConnectorMap().find("Widget"); if ( i->second->GetConnectionVector().size() != 0 ) { - return ((WxBlackBox*)i->second->GetConnectionVector().front() - ->GetBlackBoxTo())->bbGetContainingWindow(); + return boost::static_pointer_cast + (i->second->GetConnectionVector().front().lock()->GetBlackBoxTo()) + ->bbGetContainingWindow(); } return 0; }