- //=========================================================================
- /// Main processing method of the box.
- void WxBlackBox::bbExecute(bool force)
- {
-
- bbtkDebugMessageInc("process",2,
- "=> WxBlackBox::bbExecute("<<(int)force<<") ["
- <<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 )
- {
- bbtkWarning("Execution called on '"<<bbGetFullName()
- <<"' although its Output 'Widget' is connected: "
- <<"if the widget is not created yet then it will not be! "
- <<"Execute the top level Layout widget to create and "
- <<"display the widget.");
- }
-*/
- AtomicBlackBox::bbExecute(force);
-
- bbtkDebugMessageDec("process",2,
- "<= WxBlackBox::bbExecute() ["
- <<bbGetFullName()<<"]"<<std::endl);
- }
- //=========================================================================
-
-
- //=========================================================================
- void WxBlackBox::bbProcess()
- {
-/*
- if (bbGetOutputWidget()==0) this->bbUserCreateWidget();
- 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"
- <<std::endl);
- show = bbGetWindow();
- }
- // Else create window
- else
- {
- bbtkDebugMessage("wx",2,
- "-> Creating the window"
- <<std::endl);
-
-
- // Input WinDialog set to true : creating a Dialog
- if (bbGetInputWinDialog())
- {
- bbtkDebugMessage("wx",2,
- " Input WinDialog set to true : creating a Dialog"
- <<std::endl);
- show = (Window*) new WxBlackBoxDialog( GetThisPointer<WxBlackBox>(),
- // 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"
- <<std::endl);
- show = (Window*) new WxBlackBoxFrame( GetThisPointer<WxBlackBox>(),
- // 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"
- <<std::endl);
- new WxBlackBoxWidgetEventHandler(GetThisPointer<WxBlackBox>(),
- bbGetOutputWidget());
- }
- else if ( ! bbGetWidgetEventHandler()->IsHandlerOf
- ( bbGetOutputWidget() ) )
- {
- bbtkDebugMessage("wx",3,
- "-> Obsolete widget event handler : re-creating one"
- <<std::endl);
- delete bbGetWidgetEventHandler();
- new WxBlackBoxWidgetEventHandler(GetThisPointer<WxBlackBox>(),
- 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<WxBlackBox>(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)