X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=kernel%2Fsrc%2FbbtkWxBlackBox.cxx;h=a9b4f0b6215b75dae564b8362599d31626395add;hb=85be7d05390ee84a66308c17c740565456ce15d2;hp=d543faa5df26920e6cfc82f2ea1ff5442b333860;hpb=28479cf7460f053625842de2e8df98b2e3363ede;p=bbtk.git diff --git a/kernel/src/bbtkWxBlackBox.cxx b/kernel/src/bbtkWxBlackBox.cxx index d543faa..a9b4f0b 100644 --- a/kernel/src/bbtkWxBlackBox.cxx +++ b/kernel/src/bbtkWxBlackBox.cxx @@ -1,38 +1,42 @@ -/*========================================================================= +/* + # --------------------------------------------------------------------- + # + # Copyright (c) CREATIS (Centre de Recherche en Acquisition et Traitement de l'Image + # pour la SantÈ) + # Authors : Eduardo Davila, Frederic Cervenansky, Claire Mouton + # Previous Authors : Laurent Guigues, Jean-Pierre Roux + # CreaTools website : www.creatis.insa-lyon.fr/site/fr/creatools_accueil + # + # This software is governed by the CeCILL-B license under French law and + # abiding by the rules of distribution of free software. You can use, + # modify and/ or redistribute the software under the terms of the CeCILL-B + # license as circulated by CEA, CNRS and INRIA at the following URL + # http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.html + # or in the file LICENSE.txt. + # + # As a counterpart to the access to the source code and rights to copy, + # modify and redistribute granted by the license, users are provided only + # with a limited warranty and the software's author, the holder of the + # economic rights, and the successive licensors have only limited + # liability. + # + # The fact that you are presently reading this means that you have had + # knowledge of the CeCILL-B license and that you accept its terms. + # ------------------------------------------------------------------------ */ + + +/*========================================================================= Program: bbtk Module: $RCSfile: bbtkWxBlackBox.cxx,v $ Language: C++ - Date: $Date: 2009/05/19 10:19:23 $ - Version: $Revision: 1.40 $ + Date: $Date: 2012/11/16 08:49:01 $ + Version: $Revision: 1.45 $ =========================================================================*/ -/* --------------------------------------------------------------------- - -* Copyright (c) CREATIS-LRMN (Centre de Recherche en Imagerie Medicale) -* Authors : Eduardo Davila, Laurent Guigues, Jean-Pierre Roux -* -* This software is governed by the CeCILL-B license under French law and -* abiding by the rules of distribution of free software. You can use, -* modify and/ or redistribute the software under the terms of the CeCILL-B -* license as circulated by CEA, CNRS and INRIA at the following URL -* http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.html -* or in the file LICENSE.txt. -* -* As a counterpart to the access to the source code and rights to copy, -* modify and redistribute granted by the license, users are provided only -* with a limited warranty and the software's author, the holder of the -* economic rights, and the successive licensors have only limited -* liability. -* -* The fact that you are presently reading this means that you have had -* knowledge of the CeCILL-B license and that you accept its terms. -* ------------------------------------------------------------------------ */ #ifdef _USE_WXWIDGETS_ - - /** * \file * \brief @@ -47,25 +51,139 @@ //#include "bbtkData.h" //#include "bbtkFactory.h" - - - namespace bbtk { + //========================================================================= + // WxFrame + //========================================================================= + //================================================================== + class WxFrame : public wxFrame + { + public: + WxFrame(WxBlackBox::Pointer b, + wxWindow *parent, + wxString title, + wxSize size); + ~WxFrame(); + void OnCloseWindow(wxCloseEvent& event); + WxBlackBox::WeakPointer mBox; + DECLARE_EVENT_TABLE(); + + }; + + BEGIN_EVENT_TABLE(WxFrame, wxFrame) + // EVT_CLOSE(WxFrame::OnCloseWindow) + END_EVENT_TABLE(); + //==========================================Window ======================== + + //================================================================== + WxFrame::WxFrame(WxBlackBox::Pointer b, + wxWindow *parent, + wxString title, + wxSize size) + : + wxFrame( parent, + -1, + title, + wxDefaultPosition, + size, + wxRESIZE_BORDER | + wxSYSTEM_MENU | + wxCLOSE_BOX | + wxMAXIMIZE_BOX | + wxMINIMIZE_BOX | + wxCAPTION + ), + mBox(b) + { + std::cout<<"Creando Widget DELETE ME bbtkWxBlackBox.cxx--"<GetName())<bbGetName()<<"] WxFrame()" + <bbSetWindow(this); + // Insert the widget into the window + wxBoxSizer *sizer = new wxBoxSizer(wxVERTICAL); + std::cout<<"------------------------------------USER CREATE WIDGET pre DELETE ME bbtkWxBlackBox.cxx--"<bbUserCreateWidget(this); + std::cout<<"------------------------------------USER CREATE WIDGET post DELETE ME bbtkWxBlackBox.cxx--"<bbGetOutputWidget(); + sizer->Add( widget, 1, wxALL|wxGROW, 2); + SetSizer(sizer); + Layout(); + } + //================================================================== + //================================================================== + WxFrame::~WxFrame() + { + if (mBox.lock()) + bbtkDebugMessage("widget",9,"["<bbGetName() + <<"] $$$$$$$$$$$$$$$$$$$ ~WxFrame()" + <bbSetWindow(0); + Wx::DecNbWindowsAlive(); + } + //================================================================== + //================================================================== + void WxFrame::OnCloseWindow(wxCloseEvent& event) + { + if (mBox.lock()) + bbtkDebugMessage("widget",9,"["<bbGetName() + <<"] $$$$$$$$$$$$$$$ WxFrame::OnCloseWindow()"<bbSetWindow(0); + Wx::DecNbWindowsAlive(); + + bbtkDebugMessage("widget",9, + "$$$$$$$$$$$$$$$ Destroy !!!"<Destroy(); + } + //================================================================== + + //====================================================SetWin===================== + // WxDialog + //========================================================================= + + //================================================================== + // Dialog window which is modal + class BBTK_EXPORT WxDialog : public wxDialog + { + public: + WxDialog(WxBlackBox::Pointer box, + wxWindow *parent, + wxString title, + wxSize size); + ~WxDialog(); + void OnCloseWindow(wxCloseEvent& event); - //========================================================================= - // WxBlackBoxDialog + WxBlackBox::WeakPointer mBox; + DECLARE_EVENT_TABLE(); + + }; + + BEGIN_EVENT_TABLE(WxDialog, wxDialog) + EVT_CLOSE(WxDialog::OnCloseWindow) + END_EVENT_TABLE(); //========================================================================= //========================================================================= - WxBlackBoxDialog::WxBlackBoxDialog(WxBlackBox::Pointer box, - wxWindow *parent, - wxString title, - wxSize size) + WxDialog::WxDialog(WxBlackBox::Pointer b, + wxWindow *parent, + wxString title, + wxSize size) : wxDialog( parent, -1, @@ -79,219 +197,43 @@ namespace bbtk wxMINIMIZE_BOX | wxCAPTION ), - Parent(box) - { - bbtkDebugMessage("wx",9,"WxBlackBoxDialog::WxBlackBoxDialog("<< - bbGetBlackBox()->bbGetFullName()<<","<bbCreateWidgetAndEventHandler(this); - wxWindow* widget = bbGetBlackBox()->bbGetOutputWidget(); - sizer->Add( widget, 1, wxALL|wxEXPAND, 2); - //SetAutoLayout(true); - SetSizer(sizer); - Layout(); - } - //========================================================================= - - //========================================================================= - void WxBlackBoxDialog::bbShow() - { - if (bbIsShown()) return; - bbtkDebugMessage("wx",5,"WxBlackBoxDialog::bbShow() [" - <bbGetFullName()<<"]"<bbGetName()<<"]" <bbGetFullName()<<","<bbSetWindow(this); // Insert the widget into the window wxBoxSizer *sizer = new wxBoxSizer(wxVERTICAL); - box->bbCreateWidgetAndEventHandler(this); - wxWindow* widget = bbGetBlackBox()->bbGetOutputWidget(); - wxFrame* frame = (wxFrame*)this; + b->bbUserCreateWidget(this); + wxWindow* widget = b->bbGetOutputWidget(); sizer->Add( widget, 1, wxALL|wxGROW, 2); - // frame->SetAutoLayout(true); - frame->SetSizer(sizer); - //frame->Fit(); - frame->Layout(); - } - //========================================================================= - - //========================================================================= - WxBlackBoxFrame::~WxBlackBoxFrame() - { - bbtkDebugMessage("wx",9,"WxBlackBoxFrame::~WxBlackBoxFrame()" - <bbGetFullName()<<")"<bbUserOnShow(); - } - //========================================================================= - - //========================================================================= - void WxBlackBoxFrame::bbHide() - { - bbtkDebugMessage("wx",9,"WxBlackBoxFrame::bbHide()"<bbUserOnHide(); - } - //========================================================================= - - //========================================================================= - void WxBlackBoxFrame::bbDestroy() - { - bbtkDebugMessage("wx",9,"WxBlackBoxFrame::bbDestroy()"<bbGetFullName()<<")"<bbSetWidgetEventHandler(this); - - Connect ( mWindow->GetId(), - wxEVT_DESTROY, - (wxObjectEventFunction) - (void (wxEvtHandler::*)(wxWindowDestroyEvent& c)) - &WxBlackBoxWidgetEventHandler::OnWindowDestroy ); - - mWindow->PushEventHandler(this); - - } - //========================================================================= - - //========================================================================= - WxBlackBoxWidgetEventHandler::~WxBlackBoxWidgetEventHandler() - { - bbtkDebugMessage("wx",9, - "WxBlackBoxWidgetEventHandler::~WxBlackBoxWidgetEventHandler() [" - <GetId() ); - - if (mBox.expired()) return; - bbtkDebugMessage("wx",9, - "WxBlackBoxWidgetEventHandler::~WxBlackBoxWidgetEventHandler() [" - <bbGetFullName()<<"]"<bbSetWidgetEventHandler(0); - } - //========================================================================= - - //========================================================================= - void WxBlackBoxWidgetEventHandler::OnWindowDestroy(wxWindowDestroyEvent&) - { - bbtkDebugMessage("wx",9,"WxBlackBoxWidgetEventHandler::OnWindowDestroy() []"<bbGetFullName()<<"]"<bbSetOutputWidget(0); + SetSizer(sizer); + Layout(); } - //========================================================================= - - - - - - - - //========================================================================= + //================================================================== + //================================================================== + WxDialog::~WxDialog() + { + bbtkDebugMessage("widget",9,"WxDialog::~WxDialog()"<bbSetWindow(0); + // Wx::DecNbWindowsAlive(); + } + //================================================================== + //================================================================== + void WxDialog::OnCloseWindow(wxCloseEvent& event) + { + bbtkDebugMessage("widget",9,"WxDialog::OnCloseWindow()"<bbSetWindow(0); + Wx::DecNbWindowsAlive(); + this->Destroy(); + } + //================================================================== + + + //========================================================================= // WxBlackBox //========================================================================= @@ -305,8 +247,8 @@ namespace bbtk //========================================================================= void WxBlackBox::bbUserSetDefaultValues() { - bbtkDebugMessage("Kernel",9,"WxBlackBox::bbUserSetDefaultValues()"< WxBlackBox::bbUserFinalizeProcessing()"<(), - Wx::GetTopWindow(), - std2wx( bbGetInputWinTitle() - + " - bbtk (c) CREATIS LRMN"), - wxSize( bbGetInputWinWidth() , - bbGetInputWinHeight() )); - w->Show(true); - } + bbtkBlackBoxDebugMessage("widget",3, + "==> WxBlackBox::bbCreateDialogWindow() - parent = " + <(), + Wx::GetTopWindow(), + std2wx( bbGetInputWinTitle() + + " - bbtk (c) CREATIS"), + wxSize( bbGetInputWinWidth() , + bbGetInputWinHeight() ) ); + w->Show(false); + // w->ShowModal(); + } + //========================================================================= + //================================================================== //================================================================== /// 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() ) ); + std::cout<<"--/////////////*****////////////////--JFGA Testing bbCreateFrameWindow Starting ....."< WxBlackBox::bbCreateFrameWindow() - parent = " + <(), + Wx::GetTopWindow(), + std2wx( bbGetInputWinTitle() + + " - bbtk (c) CREATIS"), + wxSize( bbGetInputWinWidth() , + bbGetInputWinHeight() ) ); + std::cout<<"--/////////////*****////////////////!!--JFGA Testing bbCreateFrameWindow Done ........"<Show(); + } + + //================================================================== + + //================================================================== + void WxBlackBox::bbSetWindow(wxWindow* w) + { + bbtkBlackBoxDebugMessage("widget",9,"==> WxBlackBox::bbSetWindow("<GetName())<bbUserCreateWidget(parent); - } - // If Event Handler for the widget does not exist or is obsolete: - // create it - if (bbGetOutputWidget()!=0) + std::cout<<"--!!--JFGA Testing bbShowWindow PRE IF "< WxBlackBox::bbShowWindow()" + < No widget event handler : creating one" - <(), - bbGetOutputWidget()); + ((WxDialog*)bbmWindow)->ShowModal(); } - else if ( ! bbGetWidgetEventHandler()->IsHandlerOf - ( bbGetOutputWidget() ) ) + else { - 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())); + std::cout<<"--!!--JFGA Testing bbShowWindow "<Show(); + bbSetShown(true); + } } - - } - //========================================================================= - - - //================================================================== - // 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 + //================================================================== + void WxBlackBox::bbDestroyWindow() + { + bbtkBlackBoxDebugMessage("widget",3,"==> WxBlackBox::bbDestroyWindow("<Close(true); + // + delete bbGetWindow(); + bbSetShown(false); + } + bbtkBlackBoxDebugMessage("widget",3,"<== WxBlackBox::bbDestroyWindow("<