2 # ---------------------------------------------------------------------
4 # Copyright (c) CREATIS (Centre de Recherche en Acquisition et Traitement de l'Image
6 # Authors : Eduardo Davila, Frederic Cervenansky, Claire Mouton
7 # Previous Authors : Laurent Guigues, Jean-Pierre Roux
8 # CreaTools website : www.creatis.insa-lyon.fr/site/fr/creatools_accueil
10 # This software is governed by the CeCILL-B license under French law and
11 # abiding by the rules of distribution of free software. You can use,
12 # modify and/ or redistribute the software under the terms of the CeCILL-B
13 # license as circulated by CEA, CNRS and INRIA at the following URL
14 # http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.html
15 # or in the file LICENSE.txt.
17 # As a counterpart to the access to the source code and rights to copy,
18 # modify and redistribute granted by the license, users are provided only
19 # with a limited warranty and the software's author, the holder of the
20 # economic rights, and the successive licensors have only limited
23 # The fact that you are presently reading this means that you have had
24 # knowledge of the CeCILL-B license and that you accept its terms.
25 # ------------------------------------------------------------------------ */
28 /*=========================================================================
30 Module: $RCSfile: bbtkWxBlackBox.cxx,v $
32 Date: $Date: 2012/11/16 08:49:01 $
33 Version: $Revision: 1.45 $
34 =========================================================================*/
38 #ifdef _USE_WXWIDGETS_
45 #include "bbtkWxBlackBox.h"
46 #include "bbtkBlackBoxOutputConnector.h"
48 //#include "bbtkWxContainerBlackBox.h"
49 #include <wx/dialog.h>
51 //#include "bbtkData.h"
52 //#include "bbtkFactory.h"
56 //=========================================================================
58 //=========================================================================
60 //==================================================================
61 class WxFrame : public wxFrame
64 WxFrame(WxBlackBox::Pointer b,
69 void OnCloseWindow(wxCloseEvent& event);
72 WxBlackBox::WeakPointer mBox;
73 DECLARE_EVENT_TABLE();
77 BEGIN_EVENT_TABLE(WxFrame, wxFrame)
78 // EVT_CLOSE(WxFrame::OnCloseWindow)
80 //==========================================Window ========================
82 //==================================================================
83 WxFrame::WxFrame(WxBlackBox::Pointer b,
102 std::cout<<"Creando Widget DELETE ME bbtkWxBlackBox.cxx--"<<std::endl;
103 std::cout<<"NAME : "<<bbtk::wx2std(title);
105 std::cout<<"PARENT : "<<bbtk::wx2std(parent->GetName())<<std::endl;
107 std::cout<<" SIN PADRE "<<std::endl;
108 bbtkDebugMessage("widget",9,"["<<b->bbGetName()<<"] WxFrame()"
110 Wx::IncNbWindowsAlive();
111 b->bbSetWindow(this);
112 // Insert the widget into the window
113 wxBoxSizer *sizer = new wxBoxSizer(wxVERTICAL);
114 std::cout<<"------------------------------------USER CREATE WIDGET pre DELETE ME bbtkWxBlackBox.cxx--"<<std::endl;
115 b->bbUserCreateWidget(this);
116 std::cout<<"------------------------------------USER CREATE WIDGET post DELETE ME bbtkWxBlackBox.cxx--"<<std::endl;
117 wxWindow* widget = b->bbGetOutputWidget();
118 sizer->Add( widget, 1, wxALL|wxGROW, 2);
122 //==================================================================
123 //==================================================================
127 bbtkDebugMessage("widget",9,"["<<mBox.lock()->bbGetName()
128 <<"] $$$$$$$$$$$$$$$$$$$ ~WxFrame()"
131 bbtkDebugMessage("widget",9,"[DEAD] $$$$$$$$$$$$$$$$$$$$$ ~WxFrame()"<<std::endl);
132 //bbtkDebugMessage("widget",9,"WxFrame::~WxFrame()"<<std::endl);
133 if (mBox.lock()) mBox.lock()->bbSetWindow(0);
134 Wx::DecNbWindowsAlive();
136 //==================================================================
137 //==================================================================
138 void WxFrame::OnCloseWindow(wxCloseEvent& event)
141 bbtkDebugMessage("widget",9,"["<<mBox.lock()->bbGetName()
142 <<"] $$$$$$$$$$$$$$$ WxFrame::OnCloseWindow()"<<std::endl);
144 bbtkDebugMessage("widget",9,"[DEAD] WxFrame::OnCloseWindow()"
146 if (mBox.lock()) mBox.lock()->bbSetWindow(0);
147 Wx::DecNbWindowsAlive();
149 bbtkDebugMessage("widget",9,
150 "$$$$$$$$$$$$$$$ Destroy !!!"<<std::endl);
153 //==================================================================
155 //====================================================SetWin=====================
157 //=========================================================================
159 //==================================================================
160 // Dialog window which is modal
161 class BBTK_EXPORT WxDialog : public wxDialog
164 WxDialog(WxBlackBox::Pointer box,
169 void OnCloseWindow(wxCloseEvent& event);
172 WxBlackBox::WeakPointer mBox;
173 DECLARE_EVENT_TABLE();
177 BEGIN_EVENT_TABLE(WxDialog, wxDialog)
178 EVT_CLOSE(WxDialog::OnCloseWindow)
180 //=========================================================================
182 //=========================================================================
183 WxDialog::WxDialog(WxBlackBox::Pointer b,
203 bbtkDebugMessage("widget",9,"WxDialog::WxDialog ["<<b->bbGetName()<<"]"
205 Wx::IncNbWindowsAlive();
206 b->bbSetWindow(this);
207 // Insert the widget into the window
208 wxBoxSizer *sizer = new wxBoxSizer(wxVERTICAL);
209 b->bbUserCreateWidget(this);
210 wxWindow* widget = b->bbGetOutputWidget();
211 sizer->Add( widget, 1, wxALL|wxGROW, 2);
215 //==================================================================
216 //==================================================================
217 WxDialog::~WxDialog()
219 bbtkDebugMessage("widget",9,"WxDialog::~WxDialog()"<<std::endl);
220 //bbtkDebugMessage("widget",9,"WxFrame::~WxFrame()"<<std::endl);
221 // if (mBox.lock()) mBox.lock()->bbSetWindow(0);
222 // Wx::DecNbWindowsAlive();
224 //==================================================================
225 //==================================================================
226 void WxDialog::OnCloseWindow(wxCloseEvent& event)
228 bbtkDebugMessage("widget",9,"WxDialog::OnCloseWindow()"<<std::endl);
229 if (mBox.lock()) mBox.lock()->bbSetWindow(0);
230 Wx::DecNbWindowsAlive();
233 //==================================================================
236 //=========================================================================
238 //=========================================================================
240 //=========================================================================
241 //=========================================================================
242 //=========================================================================
243 //=========================================================================
244 BBTK_BLACK_BOX_IMPLEMENTATION(WxBlackBox,WidgetBlackBox<wxWindow>);
245 //=========================================================================
247 //=========================================================================
248 void WxBlackBox::bbUserSetDefaultValues()
250 bbtkBlackBoxDebugMessage("widget",5,"WxBlackBox::bbUserSetDefaultValues()"<<std::endl);
253 //=========================================================================
255 //=========================================================================
256 void WxBlackBox::bbUserInitializeProcessing()
259 //==================================================================
261 //=========================================================================
262 void WxBlackBox::bbUserFinalizeProcessing()
264 bbtkBlackBoxDebugMessage("widget",5,"==> WxBlackBox::bbUserFinalizeProcessing()"<<std::endl);
266 bbtkBlackBoxDebugMessage("widget",5,"<== WxBlackBox::bbUserFinalizeProcessing()"<<std::endl);
268 //==================================================================
270 //==================================================================
271 /// Callback for creating a Dialog window (modal)
272 void WxBlackBox::bbCreateDialogWindow()
274 bbtkBlackBoxDebugMessage("widget",3,
275 "==> WxBlackBox::bbCreateDialogWindow() - parent = "
279 w = new WxDialog( GetThisPointer<WxBlackBox>(),
281 std2wx( bbGetInputWinTitle()
282 + " - bbtk (c) CREATIS"),
283 wxSize( bbGetInputWinWidth() ,
284 bbGetInputWinHeight() ) );
288 //=========================================================================
290 //==================================================================
292 //==================================================================
293 /// Callback for creating a Frame window
294 void WxBlackBox::bbCreateFrameWindow()
296 std::cout<<"--/////////////*****////////////////--JFGA Testing bbCreateFrameWindow Starting ....."<<bbGetInputWinTitle()<<"......!! D E L E T M E !! bbtkWxBlackBox.cxx"<<std::endl;
297 bbtkBlackBoxDebugMessage("widget",3,
298 "==> WxBlackBox::bbCreateFrameWindow() - parent = "
302 w = new WxFrame( GetThisPointer<WxBlackBox>(),
304 std2wx( bbGetInputWinTitle()
305 + " - bbtk (c) CREATIS"),
306 wxSize( bbGetInputWinWidth() ,
307 bbGetInputWinHeight() ) );
308 std::cout<<"--/////////////*****////////////////!!--JFGA Testing bbCreateFrameWindow Done ........"<<bbGetInputWinTitle()<<"......!! D E L E T M E !! bbtkWxBlackBox.cxx"<<std::endl;
312 //==================================================================
314 //==================================================================
315 void WxBlackBox::bbSetWindow(wxWindow* w)
317 bbtkBlackBoxDebugMessage("widget",9,"==> WxBlackBox::bbSetWindow("<<w<<")"<<std::endl);
318 if ((bbmWindow != 0)&&(w!=0))
320 std::cout << "ERRRRRRRROOOOR"<<std::endl;
322 std::cout<<"SetWindow DELETE ME bbtkWxBlackBox.cxx ------"<<std::endl;
323 std::cout<<"WINDOW : "<<bbtk::wx2std(w->GetName())<<std::endl;
326 //==================================================================
328 //==================================================================
329 void WxBlackBox::bbShowWindow()
331 std::cout<<"--!!--JFGA Testing bbShowWindow PRE IF "<<bbGetInputWinTitle()<<"......!! D E L E T M E !! bbtkWxBlackBox.cxx"<<std::endl;
332 if ((bbmWindow) && (!bbIsShown()))
334 bbtkBlackBoxDebugMessage("widget",3,"==> WxBlackBox::bbShowWindow()"
336 if (bbGetInputWinDialog())
338 ((WxDialog*)bbmWindow)->ShowModal();
342 std::cout<<"--!!--JFGA Testing bbShowWindow "<<bbGetInputWinTitle()<<"......!! D E L E T M E !! bbtkWxBlackBox.cxx"<<std::endl;
343 bbGetWindow()->Show();
348 //==================================================================
350 //==================================================================
351 void WxBlackBox::bbDestroyWindow()
353 bbtkBlackBoxDebugMessage("widget",3,"==> WxBlackBox::bbDestroyWindow("<<bbmWindow<<")"<<std::endl);
354 if (bbGetWindow()!=NULL)
356 // wxWindow* w = bbGetWindow();
358 // WE SHOULD DESTROY THE WINDOW WITH THE Close METHOD
362 delete bbGetWindow();
365 bbtkBlackBoxDebugMessage("widget",3,"<== WxBlackBox::bbDestroyWindow("<<bbmWindow<<")"<<std::endl);
368 //==================================================================