X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=kernel%2Fsrc%2FbbtkWxBlackBox.cxx;h=91d10850435988e294add1de283877514472d1c7;hb=d9a9ad1dfc4015176c8e6220b56f9246e112fd87;hp=01ee4712626af54419e49df5e12a8f8e631fbaa1;hpb=1e2df7fb6ae571ce1cf72e6af1715f0e34675cbf;p=bbtk.git diff --git a/kernel/src/bbtkWxBlackBox.cxx b/kernel/src/bbtkWxBlackBox.cxx index 01ee471..91d1085 100644 --- a/kernel/src/bbtkWxBlackBox.cxx +++ b/kernel/src/bbtkWxBlackBox.cxx @@ -2,8 +2,8 @@ Program: bbtk Module: $RCSfile: bbtkWxBlackBox.cxx,v $ Language: C++ - Date: $Date: 2008/11/25 11:17:13 $ - Version: $Revision: 1.31 $ + Date: $Date: 2008/12/12 12:56:28 $ + Version: $Revision: 1.36 $ =========================================================================*/ /* --------------------------------------------------------------------- @@ -39,6 +39,8 @@ */ #include "bbtkWxBlackBox.h" +#include "bbtkBlackBoxOutputConnector.h" + //#include "bbtkWxContainerBlackBox.h" #include @@ -93,6 +95,7 @@ namespace bbtk bbtkDebugMessage("wx",9,"WxBlackBoxWindow::bbShow()"<bbUserOnShow(); } //========================================================================= @@ -246,19 +249,19 @@ namespace bbtk bbtkDebugMessage("wx",5,"WxBlackBoxFrame::bbShow(" <bbGetFullName()<<")"<bbUserOnShow(); + + wxFrame::Update(); + wxFrame::SetFocus(); + // if (bbGetBlackBox()) bbGetBlackBox()->bbUserOnShow(); } //========================================================================= @@ -327,7 +330,8 @@ namespace bbtk bbtkDebugMessage("wx",9,"WxBlackBoxWidgetEventHandler::OnWindowDestroy() [" <bbGetFullName()<<"]"<bbSetOutputWidget(0); - mBox.lock()->bbSetModifiedStatus(); + // LGSIGNAL + // mBox.lock()->bbSetModifiedStatus(); } //========================================================================= @@ -379,24 +383,6 @@ namespace bbtk //========================================================================= - /* - //========================================================================= - WxBlackBox::Widget* WxBlackBox::bbGetWidget() - { - if (bbGetOutputWidget() && bbGetOutputWidget()->IsDead()) - { - bbtkDebugMessage("wx",9,"WxBlackBox::bbGetWidget() ["<< - bbGetFullName()<<"] : Widget is dead : deleting it" - < WxBlackBox::bbExecute("<<(int)force<<") [" - <second->GetConnectionVector().size() != 0 ) - { - bbtkDebugMessage("process",3, - "-> Output 'Widget' connected : transfering execution to parent" - <second->GetConnectionVector().front() //.lock() - ->GetBlackBoxTo()->bbExecute(force); - - } - // else call 'standard' BlackBox execution method - else - { - BlackBox::bbExecute(force); - } - // - - bbtkDebugMessageDec("process",2, - "<= WxBlackBox::bbExecute() [" - < WxBlackBox::bbBackwardUpdate(" - <<(caller?caller->GetFullName():"0")<<") [" - <GetFullName():"0")<<") [" - <second->GetConnectionVector().size() != 0 ) - + void WxBlackBox::bbProcess() + { + // If output widget not connected : have to create and show the window + if ( (*bbGetOutputConnectorMap().find("Widget")).second + ->GetConnectionVector().size() == 0 ) { - BlackBox::Pointer to = - i->second->GetConnectionVector()[0]->GetBlackBoxTo(); - - if (caller) - { - bbtkDebugMessage("process",3, - "-> Output 'Widget' connected to '" - <bbGetFullName()<<"' - caller->to = '" - <GetBlackBoxTo()->bbGetFullName() - <<"'" - < Output 'Widget' connected to '" - <bbGetFullName()<<"'" + bbtkDebugMessage("wx",2, + "-> Window already exists" <GetBlackBoxTo() != to)&& - (!bbGetUpdateTransferedToParent())&& - (!to->bbGetExecuting()) - ) - ) + // Else create window + else { - bbtkDebugMessage("process",3, - " ... Transfering update order to parent" + bbtkDebugMessage("wx",2, + "-> Creating the window" <second->GetConnectionVector().front() //.lock() - ->GetBlackBoxTo()->bbExecute(false); - } - else - { - bbSetUpdateTransferedToParent(false); - bbtkDebugMessage("process",3, - " ... No need to transfer to parent" - <(), + Wx::GetTopWindow(), + std2wx( bbGetInputWinTitle() + " - bbtk (c) CREATIS LRMN"), + wxSize( bbGetInputWinWidth() , bbGetInputWinHeight() ) ); + } + // Input WinDialog set to false : creating a Frame + else + { + bbtkDebugMessage("process",2, + " Input WinDialog set to false : creating a Frame" + <(), + Wx::GetTopWindow(), + std2wx( bbGetInputWinTitle() + " - bbtk (c) CREATIS LRMN"), + wxSize( bbGetInputWinWidth() , bbGetInputWinHeight() ) ); + } + } - } - /* - - // 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() [" - <bbUserCreateWidget(); + + // Show the window + show->bbShow(); + + + } this->bbUserProcess(); - bbShowWindow(); - // this->bbUserOnShow(); -*/ - // LG 22/11/08 : new widget pipeline - // If output widget not connected : - if ( (*bbGetOutputConnectorMap().find("Widget")).second - ->GetConnectionVector().size() == 0 ) - { - Window* show = 0; - // If the window already exists : no need creating it - if (bbGetWindow()!=0) - { - bbtkDebugMessage("wx",2, - "-> Window already exists" - < Creating the window" - <(), - // bbGetWxParent(), - // LG 24/11/08 : New widget pipeline - Wx::GetTopWindow(), - std2wx( bbGetInputWinTitle() + " - bbtk (c) CREATIS LRMN"), - wxSize( bbGetInputWinWidth() , bbGetInputWinHeight() ) ); - } - // Input WinDialog set to false : creating a Frame - else - { - bbtkDebugMessage("process",2, - " Input WinDialog set to false : creating a Frame" - <(), - // bbGetWxParent(), - // LG 24/11/08 : New widget pipeline - Wx::GetTopWindow(), - std2wx( bbGetInputWinTitle() + " - bbtk (c) CREATIS LRMN"), - wxSize( bbGetInputWinWidth() , bbGetInputWinHeight() ) ); - } - - } - - // Show the window - show->bbShow(); - - - } - this->bbUserProcess(); - + } //========================================================================= - // LG 24/11/08 : New widget pipeline - void WxBlackBox::bbCreateWidgetAndEventHandler(wxWindow* parent) - { - if (bbGetOutputWidget()==0) - { - this->bbUserCreateWidget(parent); - } - // If Event Handler for the widget does not exist or is obsolete : create it - if (bbGetOutputWidget()!=0) - { - if (bbGetWidgetEventHandler()==0) - { - bbtkDebugMessage("wx",3, - "-> No widget event handler : creating one" - <(), - bbGetOutputWidget()); - } - else if ( ! bbGetWidgetEventHandler()->IsHandlerOf - ( bbGetOutputWidget() ) ) - { - bbtkDebugMessage("wx",3, - "-> Obsolete widget event handler : re-creating one" - <(), - bbGetOutputWidget()); - } - // Sets the name of the wxWindow to the input WinTitle - bbGetOutputWidget()->SetName(bbtk::std2wx(bbGetInputWinTitle())); - } - - - } - - - - wxWindow* WxBlackBox::bbCreateWidgetOfInput(const std::string& in, wxWindow* parent) - { - wxWindow* w = 0; - // If input is connected - BlackBoxInputConnector* c = bbGetInputConnectorMap().find(in)->second ; - if ( c->IsConnected() ) - { - // Get black box from - BlackBox::Pointer from = - c->GetConnection()->GetBlackBoxFrom(); - // Cast it into a WxBlackBox - WxBlackBox::Pointer wfrom = boost::dynamic_pointer_cast(from); - // Call bbCreateWidgetAndEventHandler - wfrom->bbCreateWidgetAndEventHandler(parent); - // Get the widget created - w = wfrom->bbGetOutputWidget(); - } - return w; - } - - /* - //================================================================== - /// Specific methods for window creation during pipeline execution - /// Shows the window associated to the box - /// (called after bbProcess during bbExecute) - void WxBlackBox::bbShowWindow() + //========================================================================= + void WxBlackBox::bbCreateWidgetAndEventHandler(wxWindow* parent) { - bbtkDebugMessageInc("wx",1,"=> WxBlackBox::bbShowWindow() [" - <bbUserCreateWidget(parent); + } // If Event Handler for the widget does not exist or is obsolete : create it if (bbGetOutputWidget()!=0) { @@ -717,92 +495,34 @@ namespace bbtk // 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 - // be captured by its parent window : nothing to do - if ( (*bbGetOutputConnectorMap().find("Widget")).second - ->GetConnectionVector().size() != 0 ) - { - - bbtkDebugMessage("wx",2, - "-> Output 'Widget' connected : nothing to do" - < Window already exists" - < Widget exists : creating the window" - <(), - // bbGetWxParent(), - // LG 24/11/08 : New widget pipeline - Wx::GetTopWindow(), - std2wx( bbGetInputWinTitle() + " - bbtk (c) CREATIS LRMN"), - wxSize( bbGetInputWinWidth() , bbGetInputWinHeight() ) ); - } - // Input WinDialog set to false : creating a Frame - else - { - bbtkDebugMessage("process",2, - " Input WinDialog set to false : creating a Frame" - <(), - // bbGetWxParent(), - // LG 24/11/08 : New widget pipeline - Wx::GetTopWindow(), - std2wx( bbGetInputWinTitle() + " - bbtk (c) CREATIS LRMN"), - wxSize( bbGetInputWinWidth() , bbGetInputWinHeight() ) ); - } - - } - // No window nor widget : error - else - { - bbtkError("WxBlackBox::bbShowWindow() [" - <IsShown()) - { - show->bbShow(); - } - else + + } + //========================================================================= + + + //========================================================================= + wxWindow* WxBlackBox::bbCreateWidgetOfInput(const std::string& in, + wxWindow* parent) + { + wxWindow* w = 0; + // If input is connected + BlackBoxInputConnector* c = bbGetInputConnectorMap().find(in)->second ; + if ( c->IsConnected() ) { - bbtkDebugMessage("wx",2,"-> Already shown : nothing to do"<GetConnection()->GetBlackBoxFrom(); + // Cast it into a WxBlackBox + WxBlackBox::Pointer wfrom = boost::dynamic_pointer_cast(from); + // Call bbCreateWidgetAndEventHandler + wfrom->bbCreateWidgetAndEventHandler(parent); + // Get the widget created + w = wfrom->bbGetOutputWidget(); } - - - bbtkDebugMessage("wx",2,"<= WxBlackBox::bbShowWindow() [" - <