/*========================================================================= Program: bbtk Module: $RCSfile: bbtkWxBlackBox.cxx,v $ Language: C++ Date: $Date: 2009/05/28 14:22:11 $ Version: $Revision: 1.42 $ =========================================================================*/ /* --------------------------------------------------------------------- * 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 */ #include "bbtkWxBlackBox.h" #include "bbtkBlackBoxOutputConnector.h" //#include "bbtkWxContainerBlackBox.h" #include //#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(); //================================================================== //================================================================== 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) { bbtkDebugMessage("widget",9,"["<bbGetName()<<"] WxFrame()" <bbSetWindow(this); // Insert the widget into the window wxBoxSizer *sizer = new wxBoxSizer(wxVERTICAL); b->bbUserCreateWidget(this); wxWindow* widget = b->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(); } //================================================================== //========================================================================= // 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); WxBlackBox::WeakPointer mBox; DECLARE_EVENT_TABLE(); }; BEGIN_EVENT_TABLE(WxDialog, wxDialog) EVT_CLOSE(WxDialog::OnCloseWindow) END_EVENT_TABLE(); //================================================================== //========================================================================= WxDialog::WxDialog(WxBlackBox::Pointer b, wxWindow *parent, wxString title, wxSize size) : wxDialog( parent, -1, title, wxDefaultPosition, size, wxRESIZE_BORDER | wxSYSTEM_MENU | wxCLOSE_BOX | wxMAXIMIZE_BOX | wxMINIMIZE_BOX | wxCAPTION ), mBox(b) { bbtkDebugMessage("widget",9,"WxDialog::WxDialog ["<bbGetName()<<"]" <bbSetWindow(this); // Insert the widget into the window wxBoxSizer *sizer = new wxBoxSizer(wxVERTICAL); b->bbUserCreateWidget(this); wxWindow* widget = b->bbGetOutputWidget(); sizer->Add( widget, 1, wxALL|wxGROW, 2); 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 //========================================================================= //========================================================================= //========================================================================= //========================================================================= //========================================================================= BBTK_BLACK_BOX_IMPLEMENTATION(WxBlackBox,WidgetBlackBox); //========================================================================= //========================================================================= void WxBlackBox::bbUserSetDefaultValues() { bbtkBlackBoxDebugMessage("widget",5,"WxBlackBox::bbUserSetDefaultValues()"< WxBlackBox::bbUserFinalizeProcessing()"< WxBlackBox::bbCreateDialogWindow() - parent = " <(), Wx::GetTopWindow(), std2wx( bbGetInputWinTitle() + " - bbtk (c) CREATIS-LRMN"), wxSize( bbGetInputWinWidth() , bbGetInputWinHeight() ) ); w->Show(false); // w->ShowModal(); } //========================================================================= //================================================================== //================================================================== /// Callback for creating a Frame window void WxBlackBox::bbCreateFrameWindow() { bbtkBlackBoxDebugMessage("widget",3, "==> WxBlackBox::bbCreateFrameWindow() - parent = " <(), Wx::GetTopWindow(), std2wx( bbGetInputWinTitle() + " - bbtk (c) CREATIS-LRMN"), wxSize( bbGetInputWinWidth() , bbGetInputWinHeight() ) ); w->Show(); } //================================================================== //================================================================== void WxBlackBox::bbSetWindow(wxWindow* w) { bbtkBlackBoxDebugMessage("widget",9,"==> WxBlackBox::bbSetWindow("< WxBlackBox::bbShowWindow()" <ShowModal(); } else { bbGetWindow()->Show(); bbSetShown(true); } } } //================================================================== //================================================================== void WxBlackBox::bbDestroyWindow() { bbtkBlackBoxDebugMessage("widget",3,"==> WxBlackBox::bbDestroyWindow("<Close(true); // delete bbGetWindow(); bbSetShown(false); } bbtkBlackBoxDebugMessage("widget",3,"<== WxBlackBox::bbDestroyWindow("<