X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=kernel%2Fsrc%2FbbtkWxBlackBox.cxx;h=d543faa5df26920e6cfc82f2ea1ff5442b333860;hb=28479cf7460f053625842de2e8df98b2e3363ede;hp=3c99040dd699188f425cddfa1ae99d50442e393e;hpb=bfd7e9034cbfd9c535e98ccb302c08e5e42da8c6;p=bbtk.git diff --git a/kernel/src/bbtkWxBlackBox.cxx b/kernel/src/bbtkWxBlackBox.cxx index 3c99040..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: 2008/12/11 09:50:35 $ - Version: $Revision: 1.35 $ + Date: $Date: 2009/05/19 10:19:23 $ + Version: $Revision: 1.40 $ =========================================================================*/ /* --------------------------------------------------------------------- @@ -56,64 +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()"<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); @@ -161,9 +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); @@ -238,6 +180,8 @@ namespace bbtk //========================================================================= WxBlackBoxFrame::~WxBlackBoxFrame() { + bbtkDebugMessage("wx",9,"WxBlackBoxFrame::~WxBlackBoxFrame()" + <bbGetFullName()<<")"<bbUserOnShow(); + + wxFrame::Update(); + wxFrame::SetFocus(); + // if (bbGetBlackBox()) bbGetBlackBox()->bbUserOnShow(); } //========================================================================= @@ -268,17 +212,17 @@ namespace bbtk void WxBlackBoxFrame::bbHide() { bbtkDebugMessage("wx",9,"WxBlackBoxFrame::bbHide()"<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(); } //========================================================================= @@ -348,120 +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::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) @@ -470,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) @@ -500,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