X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=kernel%2Fsrc%2FbbtkWxBlackBox.cxx;h=d543faa5df26920e6cfc82f2ea1ff5442b333860;hb=28479cf7460f053625842de2e8df98b2e3363ede;hp=86c3775d77addaf0331ff993bea6306d8fad4db7;hpb=ffe082cfc10dbb2c326c513563286caa2606110f;p=bbtk.git diff --git a/kernel/src/bbtkWxBlackBox.cxx b/kernel/src/bbtkWxBlackBox.cxx index 86c3775..d543faa 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: 2009/03/23 13:06:41 $ - Version: $Revision: 1.37 $ + Date: $Date: 2009/05/19 10:19:23 $ + Version: $Revision: 1.40 $ =========================================================================*/ /* --------------------------------------------------------------------- @@ -56,65 +56,6 @@ namespace bbtk - //========================================================================= - // WxBlackBoxWindow - //========================================================================= - - - - //========================================================================= - WxBlackBoxWindow::WxBlackBoxWindow(WxBlackBox::Pointer box) - : mBox(box), mShown(false) - { - bbtkDebugMessage("wx",9,"WxBlackBoxWindow::WxBlackBoxWindow("<< - mBox.lock()->bbGetFullName()<<")"<bbSetWindow(this); - Wx::IncNbWindowsAlive(); - } - //========================================================================= - - //========================================================================= - WxBlackBoxWindow::~WxBlackBoxWindow() - { - bbtkDebugMessage("wx",9,"WxBlackBoxWindow::~WxBlackBoxWindow() " - <bbSetWindow(0); - } - } - //========================================================================= - - - //========================================================================= - void WxBlackBoxWindow::bbShow() - { - if (bbIsShown()) return; - bbtkDebugMessage("wx",9,"WxBlackBoxWindow::bbShow()"<bbUserOnShow(); - } - //========================================================================= - - //========================================================================= - void WxBlackBoxWindow::bbHide() - { - if (!bbIsShown()) return; - bbtkDebugMessage("wx",9,"WxBlackBoxWindow::bbHide()"<bbGetFullName()<<","<bbCreateWidgetAndEventHandler(this); + // Create the widget + box->bbCreateWidgetAndEventHandler(this); wxWindow* widget = bbGetBlackBox()->bbGetOutputWidget(); -// old : widget->Reparent(this); sizer->Add( widget, 1, wxALL|wxEXPAND, 2); //SetAutoLayout(true); SetSizer(sizer); @@ -162,10 +102,10 @@ namespace bbtk if (bbIsShown()) return; bbtkDebugMessage("wx",5,"WxBlackBoxDialog::bbShow() [" <bbGetFullName()<<"]"<bbGetFullName()<<","<bbCreateWidgetAndEventHandler(this); + box->bbCreateWidgetAndEventHandler(this); wxWindow* widget = bbGetBlackBox()->bbGetOutputWidget(); wxFrame* frame = (wxFrame*)this; -// old : widget->Reparent(frame); sizer->Add( widget, 1, wxALL|wxGROW, 2); // frame->SetAutoLayout(true); frame->SetSizer(sizer); @@ -240,6 +180,8 @@ namespace bbtk //========================================================================= WxBlackBoxFrame::~WxBlackBoxFrame() { + bbtkDebugMessage("wx",9,"WxBlackBoxFrame::~WxBlackBoxFrame()" + <bbGetFullName()<<")"<bbUserOnHide(); } //========================================================================= //========================================================================= - void WxBlackBoxFrame::bbClose() + void WxBlackBoxFrame::bbDestroy() { - bbtkDebugMessage("wx",9,"WxBlackBoxFrame::bbClose()"<GetId() ); + if (mBox.expired()) return; bbtkDebugMessage("wx",9, "WxBlackBoxWidgetEventHandler::~WxBlackBoxWidgetEventHandler() [" <bbGetFullName()<<"]"<bbSetWidgetEventHandler(0); + + mBox.lock()->bbSetWidgetEventHandler(0); } //========================================================================= //========================================================================= void WxBlackBoxWidgetEventHandler::OnWindowDestroy(wxWindowDestroyEvent&) { + bbtkDebugMessage("wx",9,"WxBlackBoxWidgetEventHandler::OnWindowDestroy() []"<bbGetFullName()<<"]"<bbSetOutputWidget(0); - // LGSIGNAL - // mBox.lock()->bbSetModifiedStatus(); } //========================================================================= @@ -350,207 +299,68 @@ namespace bbtk //========================================================================= //========================================================================= //========================================================================= - BBTK_BLACK_BOX_IMPLEMENTATION(WxBlackBox,AtomicBlackBox); + BBTK_BLACK_BOX_IMPLEMENTATION(WxBlackBox,WidgetBlackBox); //========================================================================= //========================================================================= - void WxBlackBox::bbUserConstructor() + void WxBlackBox::bbUserSetDefaultValues() { - bbtkDebugMessage("Kernel",9,"WxBlackBox::bbUserConstructor()"< WxBlackBox::bbUserDestructor() ["<(), + Wx::GetTopWindow(), + std2wx( bbGetInputWinTitle() + + " - bbtk (c) CREATIS LRMN"), + wxSize( bbGetInputWinWidth() , + bbGetInputWinHeight() )); + w->Show(true); } - //========================================================================= - + //================================================================== - //========================================================================= - void WxBlackBox::bbCreateWidget() - { - // If output widget not connected : have to create and show the window - 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" - <(), - Wx::GetTopWindow(), - std2wx( bbGetInputWinTitle() + " - bbtk (c) CREATIS LRMN"), - wxSize( bbGetInputWinWidth() , bbGetInputWinHeight() )); - //bbGetInputWinWidth() , bbGetInputWinHeight() ) ); -// show->bbGetDialog()->Update(); -// show->bbGetDialog()->Refresh(); - - //show->bbGetDialog()->Iconize(true); - show->bbGetDialog()->Show(true); -// show->bbGetDialog()->Show(false); -// show->bbGetDialog()->SetSize(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() ) ); -// show->bbGetFrame()->Update(); -// show->bbGetFrame()->Refresh(); - show->bbGetFrame()->Show(); - } - - } // else bbGetWindow -// show->bbShow(); - - } // bbGetOutputConnectorMap().find("Widget")).second->GetConnectionVector().size() - } - //========================================================================= - - - //========================================================================= - void WxBlackBox::bbShowWidget() - { - // Show the window - Window *show = bbGetWindow(); - if (show!=NULL) - { - show->bbShow(); - } - } - //========================================================================= - - - //========================================================================= - void WxBlackBox::bbProcess() - { - // TODO : update the window size and title - this->bbUserProcess(); - } - //========================================================================= - - /* EED BORRAME original 18 mars 2009 - //========================================================================= - void WxBlackBox::bbProcess() - { - // If output widget not connected : have to create and show the window - 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" - <(), - 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() ) ); - } - - } - - // Show the window - show->bbShow(); - - - } - this->bbUserProcess(); - + //================================================================== + /// Callback for creating a Frame window + void WxBlackBox::bbCreateFrameWindow() + { + WxBlackBoxFrame* w = 0; + w = new WxBlackBoxFrame( GetThisPointer(), + Wx::GetTopWindow(), + std2wx( bbGetInputWinTitle() + + " - bbtk (c) CREATIS LRMN"), + wxSize( bbGetInputWinWidth() , + bbGetInputWinHeight() ) ); + w->Show(); } - //========================================================================= -*/ - + //================================================================== + + + //========================================================================= void WxBlackBox::bbCreateWidgetAndEventHandler(wxWindow* parent) @@ -559,7 +369,8 @@ namespace bbtk { this->bbUserCreateWidget(parent); } - // If Event Handler for the widget does not exist or is obsolete : create it + // If Event Handler for the widget does not exist or is obsolete: + // create it if (bbGetOutputWidget()!=0) { if (bbGetWidgetEventHandler()==0) @@ -589,83 +400,19 @@ namespace bbtk //========================================================================= - //========================================================================= - 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; - } - //================================================================== - - //================================================================== - void WxBlackBox::bbHideWindow() - { - bbtkDebugMessageInc("wx",1,"=> WxBlackBox::bbHideWindow() [" - <bbHide(); - - bbtkDebugMessageDec("wx",2,"<= WxBlackBox::bbHideWindow() [" - < WxBlackBox::bbCloseWindow() [" - <bbClose(); - - bbtkDebugMessageDec("wx",2,"<= WxBlackBox::bbCloseWindow() [" - <second->GetConnectionVector().size() != 0 ) - { - return boost::static_pointer_cast - (i->second->GetConnectionVector().front() //.lock() - ->GetBlackBoxTo())->bbGetContainingWindow(); - } - return 0; - } - //================================================================== - - - //================================================================== - bool WxBlackBox::bbIsShown() - { - if (bbGetContainingWindow()!=0) - return bbGetContainingWindow()->bbIsShown(); - return false; - } + // void WxBlackBox::InitWindowManagerIfNeeded() { Wx:: + void WxBlackBox::IncNbWindowsAlive() { Wx::IncNbWindowsAlive(); } + void WxBlackBox::DecNbWindowsAlive() { Wx::DecNbWindowsAlive(); } + int WxBlackBox::GetNbWindowsAlive() { return Wx::GetNbWindowsAlive(); } + bool WxBlackBox::IsSomeWindowAlive() { return Wx::IsSomeWindowAlive(); } + + void WxBlackBox::IncNbWindowsShown() { Wx::IncNbWindowsShown(); } + void WxBlackBox::DecNbWindowsShown() { Wx::DecNbWindowsShown(); } + int WxBlackBox::GetNbWindowsShown() { return Wx::GetNbWindowsShown(); } + bool WxBlackBox::IsSomeWindowShown() { return Wx::GetNbWindowsShown(); } //================================================================== - + }//namespace bbtk