]> Creatis software - creaMaracasVisu.git/blob - lib/maracasVisuLib/src/interface/wxWindows/widgets/manualPaint/wxManualPaintPanel.cpp
58f644d0102170082bd5fed2b96d1b6031e96b30
[creaMaracasVisu.git] / lib / maracasVisuLib / src / interface / wxWindows / widgets / manualPaint / wxManualPaintPanel.cpp
1 #include "wxManualPaintPanel.h"
2 #include <wx/radiobox.h>
3
4 wxManualPaintPanel::wxManualPaintPanel( wxWindow * parent )
5                 : wxPanel( parent, -1 )
6 {
7         wxPanel *panel = this;
8         wxSizer *sizer = NULL;
9
10         // Widget interface
11         wxStaticText *tittleText = new wxStaticText( panel, -1,
12                 _T("             Manual Paint") );
13         _txtBrushSize = new wxStaticText( panel, -1,
14                 wxString( _T("  Brush size  ") ) );
15         _sldBrushSize = new wxSlider( panel, -1, 1, 1, 20, wxDefaultPosition,
16                 wxDefaultSize, wxSL_LABELS );
17         wxStaticText *txtGrayLevel = new wxStaticText( panel, -1,
18                 wxString( _T("  Gray Level  ") ) );
19         _sldGrayLevel = new wxSlider( panel, -1, 0, 0, 50, wxDefaultPosition,
20                 wxDefaultSize, wxSL_LABELS );
21         _graylevelCtrl = new wxTextCtrl( panel, -1 );
22         _txtToleranceFill = new wxStaticText( panel, -1,
23                 wxString( _T("  Tolerance fill  ") ) );
24         _sldToleranceFill = new wxSlider( panel, -1, 50, 0, 50, wxDefaultPosition,
25                 wxDefaultSize, wxSL_LABELS );
26         _tolerancefillCtrl = new wxTextCtrl( panel, -1, _T("50") );
27         _txtDistanceFill = new wxStaticText( panel, -1,
28                 wxString( _T("  Distance fill  ") ) );
29         _sldDistanceFill = new wxSlider( panel, -1, 500, 1, 500, wxDefaultPosition,
30                 wxDefaultSize, wxSL_LABELS );
31         _distancefillCtrl = new wxTextCtrl( panel, -1, _T("500") );
32         //DFCH -- BarSlices
33         double range[ 2 ];
34         GetScalarRange( range );
35         int min = 0; //range[0];
36         int max = 6000; //range[1];
37         _mBarSlices = new mBarRange( panel, 70, 65 );
38         _mBarSlices->SetMin( 0 );
39         _mBarSlices->SetStart( 0 );
40         _mBarSlices->SetOrientation( true );
41         _mBarSlices->setActiveStateTo( true );
42         _mBarSlices->setVisibleLabels( true );
43         _mBarSlices->setDeviceEndMargin( 10 );
44         _mBarSlices->setDeviceBlitStart( 10, 10 );
45         _mBarSlices->setIfWithActualDrawed( false );
46         _mBarSlices->setRepresentedValues( min, max );
47         _mBarSlices->SetStart( min );
48         _mBarSlices->SetEnd( max );
49         _mBarSlices->Update( );
50         //DFCH -- End BarSlices
51
52         wxString lst2D3D[ 2 ];
53         lst2D3D[ 0 ] = _T("2D");
54         lst2D3D[ 1 ] = _T("3D");
55         _rb2D3D = new wxRadioBox( panel, -1, _T("2D / 3D"), wxDefaultPosition,
56                 wxSize( 270, 45 ), 2, lst2D3D, 2, wxRA_SPECIFY_COLS );
57         _rb2D3D->SetSelection( 1 );
58
59         wxString lstBrushForm[ 2 ];
60         lstBrushForm[ 0 ] = _T("rectangle/cube");
61         lstBrushForm[ 1 ] = _T("circle/sphere");
62         _rbBrushForm = new wxRadioBox( panel, -1, _T("Brush form"),
63                 wxDefaultPosition, wxSize( 270, 45 ), 2, lstBrushForm, 2,
64                 wxRA_SPECIFY_COLS );
65
66         _txtToleranceFill->Disable( );
67         _sldToleranceFill->Disable( );
68         _tolerancefillCtrl->Disable( );
69
70         _txtDistanceFill->Disable( );
71         _sldDistanceFill->Disable( );
72         _distancefillCtrl->Disable( );
73
74         wxString lstBrushTool[ 2 ];
75         lstBrushTool[ 0 ] = _T("Brush");
76         lstBrushTool[ 1 ] = _T("Fill");
77         _rbBrushTool = new wxRadioBox( panel, -1, _T("Brush tool"),
78                 wxDefaultPosition, wxSize( 270, 45 ), 2, lstBrushTool, 2,
79                 wxRA_SPECIFY_COLS );
80
81         _btnCopy = new wxButton( panel, -1, _T("Copy") );
82         _btnCopy->Disable( );
83         _btnUndo = new wxButton( panel, -1, _T("Undo") );
84         _btnRedo = new wxButton( panel, -1, _T("Redo") );
85         //btnUndo->Disable();
86
87         wxFlexGridSizer *sizer1 = new wxFlexGridSizer( 1 );
88
89         sizer1->Add( new wxStaticText( panel, -1, _T("  ") ) );
90         sizer1->Add( tittleText );
91
92         sizer1->Add( new wxStaticText( panel, -1, _T("  ") ) );
93         sizer1->Add( _rbBrushTool, 1, wxGROW );
94
95         wxFlexGridSizer *sizerGrayLevel = new wxFlexGridSizer( 2 );
96         sizerGrayLevel->Add( txtGrayLevel );
97         sizerGrayLevel->Add( _graylevelCtrl );
98         sizer1->Add( sizerGrayLevel, 1, wxGROW );
99         sizer1->Add( _sldGrayLevel, 1, wxGROW );
100
101         sizer1->Add( new wxStaticText( this, -1, _T( "Select Range" ) ), 1,
102                 wxGROW );
103         sizer1->Add( _mBarSlices, 1, wxGROW );
104
105         sizer1->Add( new wxStaticText( panel, -1, _T("  ") ) );
106         sizer1->Add( _rb2D3D, 1, wxGROW );
107
108         sizer1->Add( new wxStaticText( panel, -1, _T("  ") ) );
109         sizer1->Add( _txtBrushSize );
110         sizer1->Add( _sldBrushSize, 1, wxGROW );
111
112         sizer1->Add( new wxStaticText( panel, -1, _T("  ") ) );
113         sizer1->Add( _rbBrushForm, 1, wxGROW );
114
115         wxFlexGridSizer *sizerTolerance = new wxFlexGridSizer( 2 );
116         sizerTolerance->Add( _txtToleranceFill );
117         sizerTolerance->Add( _tolerancefillCtrl );
118         sizer1->Add( sizerTolerance );
119         sizer1->Add( _sldToleranceFill, 1, wxGROW );
120
121         wxFlexGridSizer *sizerDistance = new wxFlexGridSizer( 2 );
122         sizerDistance->Add( _txtDistanceFill );
123         sizerDistance->Add( _distancefillCtrl );
124         sizer1->Add( sizerDistance );
125         sizer1->Add( _sldDistanceFill, 1, wxGROW );
126
127         sizer1->Add( new wxStaticText( panel, -1, _T("  ") ) );
128         sizer1->Add( _btnCopy, 1, wxGROW );
129         sizer1->Add( new wxStaticText( panel, -1, _T("  ") ) );
130         sizer1->Add( _btnUndo, 1, wxGROW );
131         sizer1->Add( _btnRedo, 1, wxGROW );
132
133         sizer = sizer1;
134
135         this->ConnectComponents( ); //DFCH
136
137         panel->SetSizer( sizer );
138         panel->SetAutoLayout( true );
139         panel->Layout( );
140
141 }
142
143 //---------------------------------------------------------------------------
144 wxManualPaintPanel::~wxManualPaintPanel( )
145 {
146 }
147
148 //--------------------------------------------------------------------------
149 /*
150  * The following function allows the management of the events
151  */
152 void wxManualPaintPanel::ConnectComponents( ) //DFCH
153 {
154         this->Connect(
155                 _sldBrushSize->GetId( ),
156                 wxEVT_SCROLL_THUMBRELEASE,
157                 (wxObjectEventFunction) (void(wxPanel::*)(
158                         wxScrollEvent& )) (&wxManualPaintPanel::OnBrushSize) );this ->Connect (_sldGrayLevel->GetId(),
159                                 wxEVT_SCROLL_THUMBRELEASE,
160                                 (wxObjectEventFunction) (void(wxPanel::*)(
161                                                                 wxScrollEvent&)) &wxManualPaintPanel::OnSldGrayLevel);
162                 this->Connect
163                 (
164                                 _graylevelCtrl->GetId(),
165                                 wxEVT_COMMAND_TEXT_UPDATED,
166                                 (wxObjectEventFunction) (void(wxPanel::*)(
167                                                                 wxCommandEvent&)) &wxManualPaintPanel::OnCtrTxtGrayLevel);
168
169                 this->Connect (
170                                 _sldToleranceFill->GetId(),
171                                 wxEVT_SCROLL_THUMBRELEASE,
172                                 (wxObjectEventFunction) (void(wxPanel::*)(
173                                                                 wxScrollEvent&)) &wxManualPaintPanel::OnSldToleranceFill);this->Connect
174                 (
175                                 _tolerancefillCtrl->GetId(),
176                                 wxEVT_COMMAND_TEXT_UPDATED,
177                                 (wxObjectEventFunction) (void(wxPanel::*)(
178                                                                 wxCommandEvent&)) &wxManualPaintPanel::OnCtrTxtToleranceFill);
179
180                 this->Connect (
181                                 _sldDistanceFill->GetId(),
182                                 wxEVT_SCROLL_THUMBRELEASE,
183                                 (wxObjectEventFunction) (void(wxPanel::*)(
184                                                                 wxScrollEvent&)) &wxManualPaintPanel::OnSldDistanceFill);this->Connect
185                 (
186                                 _distancefillCtrl->GetId(),
187                                 wxEVT_COMMAND_TEXT_UPDATED,
188                                 (wxObjectEventFunction) (void(wxPanel::*)(
189                                                                 wxCommandEvent&)) &wxManualPaintPanel::OnCtrTxtDistanceFill);
190
191                 this->Connect (
192                                 _rb2D3D->GetId(),
193                                 wxEVT_COMMAND_RADIOBOX_SELECTED,
194                                 (wxObjectEventFunction) (void(wxPanel::*)(
195                                                                 wxCommandEvent&)) &wxManualPaintPanel::On2D3D);this->Connect
196                 (
197                                 _rbBrushForm->GetId(),
198                                 wxEVT_COMMAND_RADIOBOX_SELECTED,
199                                 (wxObjectEventFunction) (void(wxPanel::*)(
200                                                                 wxCommandEvent&)) &wxManualPaintPanel::OnBrushForm);this->Connect
201                 (
202                                 _rbBrushTool->GetId(),
203                                 wxEVT_COMMAND_RADIOBOX_SELECTED,
204                                 (wxObjectEventFunction) (void(wxPanel::*)(
205                                                                 wxCommandEvent&)) &wxManualPaintPanel::OnBrushTool);this->Connect
206                 (
207                                 _btnCopy->GetId(),
208                                 wxEVT_COMMAND_BUTTON_CLICKED,
209                                 (wxObjectEventFunction) (void(wxPanel::*)(
210                                                                 wxCommandEvent&)) &wxManualPaintPanel::OnCopy);
211
212                 this->Connect (
213                                 _btnUndo->GetId(),
214                                 wxEVT_COMMAND_BUTTON_CLICKED,
215                                 (wxObjectEventFunction) (void(wxPanel::*)(
216                                                                 wxCommandEvent&)) &wxManualPaintPanel::OnUndo);
217                 this->Connect(_btnRedo->GetId(),
218                                 wxEVT_COMMAND_BUTTON_CLICKED,
219                                 (wxObjectEventFunction) (void(wxPanel::*)(
220                                                                 wxCommandEvent&)) &wxManualPaintPanel::OnRedo); //DFCH
221
222                 this->Connect(
223                                 _mBarSlices->GetId(),
224                                 wxEVT_TSBAR,
225                                 (wxObjectEventFunction) (wxCommandEventFunction) &wxManualPaintPanel::onBarrange);
226                 //                      Connect(modBarRange->GetId(),98765,(wxObjectEventFunction) (wxCommandEventFunction)  &wxWidgetSliderMinMax::onActualChange_Bar );
227                 this->Connect(
228                                 _mBarSlices->GetId(),
229                                 wxEVT_TSBAR_ACTUAL,
230                                 (wxObjectEventFunction) (wxCommandEventFunction) &wxManualPaintPanel::onActualChange_Bar);
231                 this->Connect(
232                                 _mBarSlices->GetId(),
233                                 wxEVT_TSBAR_START,
234                                 (wxObjectEventFunction) (wxCommandEventFunction) &wxManualPaintPanel::onStartChange_Bar);
235                 this->Connect(
236                                 _mBarSlices->GetId(),
237                                 wxEVT_TSBAR_END,
238                                 (wxObjectEventFunction) (wxCommandEventFunction) &wxManualPaintPanel::onEndChange_Bar);
239                 this->Connect(
240                                 _mBarSlices->GetId(),
241                                 wxEVT_SELECTION_END,
242                                 (wxObjectEventFunction) (wxCommandEventFunction) &wxManualPaintPanel::onSelectionEnd);
243                 this->Connect(
244                                 _mBarSlices->GetId(),
245                                 wxEVT_TSBAR_MOVED,
246                                 (wxObjectEventFunction) (wxCommandEventFunction) &wxManualPaintPanel::onMovedBar);
247         }
248
249 //---------------------------------------------------------------------------
250 void wxManualPaintPanel::OnBrushSize( wxScrollEvent& event )
251 {
252         SetBrushSize( _sldBrushSize->GetValue( ) );
253 }
254
255 //---------------------------------------------------------------------------
256 void wxManualPaintPanel::OnSldGrayLevel( wxScrollEvent& event )
257 {
258         SetGrayLevel( (double) ( _sldGrayLevel->GetValue( )) );
259
260         wxString text;
261         text.Printf( wxT("%d"), _sldGrayLevel->GetValue( ) );
262         _graylevelCtrl->SetValue( text );
263 }
264
265 //---------------------------------------------------------------------------
266 void wxManualPaintPanel::OnCtrTxtGrayLevel( wxCommandEvent &event )
267 {
268         double graylevel;
269         wxString text = _graylevelCtrl->GetValue( );
270         if( text.ToDouble( &graylevel ) )
271         {
272                 SetGrayLevel( graylevel );
273         }
274 }
275
276 //---------------------------------------------------------------------------
277 void wxManualPaintPanel::OnSldDistanceFill( wxScrollEvent& event )
278 {
279         SetDistanceFill( (double) ( _sldDistanceFill->GetValue( )) );
280
281         wxString text;
282         text.Printf( wxT("%d"), _sldDistanceFill->GetValue( ) );
283         _distancefillCtrl->SetValue( text );
284 }
285
286 //---------------------------------------------------------------------------
287 void wxManualPaintPanel::OnCtrTxtDistanceFill( wxCommandEvent &event )
288 {
289         double distancefill;
290         wxString text = _distancefillCtrl->GetValue( );
291         if( text.ToDouble( &distancefill ) )
292         {
293                 SetDistanceFill( distancefill );
294         }
295 }
296
297 //---------------------------------------------------------------------------
298 void wxManualPaintPanel::OnSldToleranceFill( wxScrollEvent& event )
299 {
300         SetToleranceFill( (double) ( _sldToleranceFill->GetValue( )) );
301
302         wxString text;
303         text.Printf( wxT("%d"), _sldToleranceFill->GetValue( ) );
304         _tolerancefillCtrl->SetValue( text );
305 }
306
307 //---------------------------------------------------------------------------
308 void wxManualPaintPanel::OnCtrTxtToleranceFill( wxCommandEvent &event )
309 {
310         double tolerance;
311         wxString text = _tolerancefillCtrl->GetValue( );
312         if( text.ToDouble( &tolerance ) )
313         {
314                 SetToleranceFill( tolerance );
315         }
316 }
317
318 //---------------------------------------------------------------------------
319 void wxManualPaintPanel::DisableControls( )
320 {
321         _txtBrushSize->Disable( );
322         _sldBrushSize->Disable( );
323         _rbBrushForm->Disable( );
324
325         _txtToleranceFill->Disable( );
326         _sldToleranceFill->Disable( );
327         _tolerancefillCtrl->Disable( );
328
329         _txtDistanceFill->Disable( );
330         _sldDistanceFill->Disable( );
331         _distancefillCtrl->Disable( );
332 }
333
334 //---------------------------------------------------------------------------
335 void wxManualPaintPanel::On2D3D( wxCommandEvent &event )
336 {
337         Set2D3D( _rb2D3D->GetSelection( ) );
338 }
339
340 //---------------------------------------------------------------------------
341 void wxManualPaintPanel::OnBrushForm( wxCommandEvent &event )
342 {
343         SetBrushForm( _rbBrushForm->GetSelection( ) );
344 }
345
346 //---------------------------------------------------------------------------
347 void wxManualPaintPanel::OnBrushTool( wxCommandEvent &event )
348 {
349         DisableControls( );
350         SetTool( _rbBrushTool->GetSelection( ) );
351
352         if( _rbBrushTool->GetSelection( ) == 0 ) //Brush tool
353         {
354                 _txtBrushSize->Enable( );
355                 _sldBrushSize->Enable( );
356                 _rbBrushForm->Enable( );
357         }
358
359         if( _rbBrushTool->GetSelection( ) == 1 ) //Fill tool
360         {
361                 _txtToleranceFill->Enable( );
362                 _sldToleranceFill->Enable( );
363                 _tolerancefillCtrl->Enable( );
364
365                 _txtDistanceFill->Enable( );
366                 _sldDistanceFill->Enable( );
367                 _distancefillCtrl->Enable( );
368         }
369 }
370
371 //---------------------------------------------------------------------------
372 void wxManualPaintPanel::OnCopy( wxCommandEvent &event )
373 {
374 }
375
376 //---------------------------------------------------------------------------
377 void wxManualPaintPanel::OnUndo( wxCommandEvent &event )
378 {
379         this->_manualPaintModel->Undo( );
380 }
381
382 //---------------------------------------------------------------------------
383 void wxManualPaintPanel::OnRedo( wxCommandEvent &event )
384 {
385         this->_manualPaintModel->Redo( );
386 }
387
388 //--------------------------------------------------------------------------------------------------------------------------------
389 // Min-Max Barrange received events
390 //--------------------------------------------------------------------------------------------------------------------------------
391 void wxManualPaintPanel::onBarrange( wxCommandEvent& event )
392 {
393 }
394 void wxManualPaintPanel::onActualChange_Bar( wxCommandEvent& event )
395 {
396         /*mbbtkSliderMinMax->bbSetOutputOutActual(modBarRange->GetActual());
397          mbbtkSliderMinMax->bbSignalOutputModification(std::string("OutActual"));*/
398 }
399 void wxManualPaintPanel::onStartChange_Bar( wxCommandEvent& event )
400 {
401         SetRangeMin( _mBarSlices->GetStart( ) );
402 }
403
404 void wxManualPaintPanel::onEndChange_Bar( wxCommandEvent& event )
405 {
406         SetRangeMax( _mBarSlices->GetEnd( ) );
407 }
408
409 void wxManualPaintPanel::onSelectionEnd( wxCommandEvent& event )
410 {
411 }
412
413 void wxManualPaintPanel::onMovedBar( wxCommandEvent& event )
414 {
415 }
416 //-------------------------------------------------------------------------
417 //--------------------------------------------------------------------------
418 //--------------------------------------------------------------------------
419