1 #include "wxManualPaintPanel.h"
2 #include <wx/radiobox.h>
4 wxManualPaintPanel::wxManualPaintPanel( wxWindow * parent )
5 : wxPanel( parent, -1 )
7 wxSizer *sizer = new wxFlexGridSizer( 1 );
10 wxStaticText *tittleText = new wxStaticText( this, -1,
11 _T(" Manual Paint") );
13 sizer->Add( tittleText );
14 //giving some blank spaces
15 sizer->Add( new wxStaticText( this, -1, _T(" ") ) );
17 this->ConfigureBrushToolRadioButton( );
18 this->Configure2D3DRadioButton( );
19 this->ConfigureBrushFormRadioButton( );
20 this->ConfigureRangeBar( );
21 this->ConfigureGrayLevelSld( );
22 this->ConfigureBrushSizeSld( );
23 this->ConfigureDistanceFillSld( );
24 this->ConfigureTolFillSld( );
25 this->ConfigureEditButtons( );
28 wxStaticText *editButtonsText = new wxStaticText( this, -1,
30 sizer->Add( editButtonsText );
31 this->_buttonsSizer = new wxFlexGridSizer( 4 );
32 this->_buttonsSizer->Add( _btnUndo, 1, wxGROW );
33 this->_buttonsSizer->Add( _btnRedo, 1, wxGROW );
34 this->_buttonsSizer->Add( _btnCopy, 1, wxGROW );
36 this->_gConfigSizer = new wxFlexGridSizer( 1 );
37 //BrushTool Radio Button
39 this->_gConfigSizer->Add(
40 new wxStaticText( this, -1, _T(" ") ) );
42 this->_gConfigSizer->Add( _rbBrushTool, 1, wxGROW );
44 this->_gConfigSizer->Add( _rb2D3D, 1, wxGROW );
46 this->_gConfigSizer->Add(
47 new wxStaticText( this, -1, _T( "Select Range" ) ), 1, wxGROW );
48 this->_gConfigSizer->Add( _mBarSlices, 1, wxGROW );
50 this->_gConfigSizer->Add( _txtGrayLevel );
51 wxFlexGridSizer *sizerGrayLevel = new wxFlexGridSizer( 2, wxHORIZONTAL );
52 sizerGrayLevel->Add( _sldGrayLevel, 1, wxGROW );
53 sizerGrayLevel->Add( _graylevelCtrl, 1,
54 wxALIGN_BOTTOM | wxALIGN_LEFT | wxALL, 5 );
55 this->_gConfigSizer->Add( sizerGrayLevel, 1, wxGROW );
58 this->_brushSizer = new wxFlexGridSizer( 1 );
60 this->_brushSizer->Add( new wxStaticText( this, -1, _T(" ") ) );
62 this->_brushSizer->Add(
63 new wxStaticText( this, -1, _T("Brush Settings") ) );
65 this->_brushSizer->Add( _txtBrushSize );
66 wxFlexGridSizer *sizersdlBrushSize = new wxFlexGridSizer( 2, wxHORIZONTAL );
67 sizersdlBrushSize->Add( _sldBrushSize, 1, wxGROW );
68 sizersdlBrushSize->Add( _BrushSizeCtrl, 1,
69 wxALIGN_BOTTOM | wxALIGN_LEFT | wxALL, 5 );
70 this->_brushSizer->Add( sizersdlBrushSize );
71 //BrushForm RadioButton
72 this->_brushSizer->Add( _rbBrushForm, 1, wxGROW );
74 this->_FillSizer = new wxFlexGridSizer( 1 );
76 this->_FillSizer->Add( new wxStaticText( this, -1, _T(" ") ) );
78 this->_FillSizer->Add( new wxStaticText( this, -1, _T("Fill Settings") ) );
80 this->_FillSizer->Add( _txtToleranceFill );
81 wxFlexGridSizer *sizerTolerance = new wxFlexGridSizer( 2 );
82 sizerTolerance->Add( _sldToleranceFill, 1, wxGROW );
83 sizerTolerance->Add( _tolerancefillCtrl, 1,
84 wxALIGN_BOTTOM | wxALIGN_LEFT | wxALL, 5 );
85 this->_FillSizer->Add( sizerTolerance, 1, wxGROW );
87 this->_FillSizer->Add( _txtDistanceFill );
88 wxFlexGridSizer *sizerDistance = new wxFlexGridSizer( 2 );
89 sizerDistance->Add( _sldDistanceFill, 1, wxGROW );
90 sizerDistance->Add( _distancefillCtrl, 1,
91 wxALIGN_BOTTOM | wxALIGN_LEFT | wxALL, 5 );
92 this->_FillSizer->Add( sizerDistance );
94 sizer->Add( _buttonsSizer );
95 sizer->Add( _gConfigSizer );
96 sizer->Add( _brushSizer );
97 sizer->Add( _FillSizer );
99 this->ConnectComponents( ); //DFCH
100 this->_FillSizer->Show( false );
102 this->SetSizer( sizer );
103 this->SetAutoLayout( true );
108 //---------------------------------------------------------------------------
109 wxManualPaintPanel::~wxManualPaintPanel( )
113 //--------------------------------------------------------------------------
116 void wxManualPaintPanel::ConfigureBrushToolRadioButton( )
118 wxString lstBrushForm[ 2 ];
119 lstBrushForm[ 0 ] = _T("rectangle/cube");
120 lstBrushForm[ 1 ] = _T("circle/sphere");
121 _rbBrushForm = new wxRadioBox( this, -1, _T("Brush form"),
122 wxDefaultPosition, wxSize( 270, 45 ), 2, lstBrushForm, 2,
125 //--------------------------------------------------------------------------
126 void wxManualPaintPanel::Configure2D3DRadioButton( )
128 wxString lst2D3D[ 2 ];
129 lst2D3D[ 0 ] = _T("2D");
130 lst2D3D[ 1 ] = _T("3D");
131 _rb2D3D = new wxRadioBox( this, -1, _T("2D / 3D"), wxDefaultPosition,
132 wxSize( 270, 45 ), 2, lst2D3D, 2, wxRA_SPECIFY_COLS );
133 _rb2D3D->SetSelection( 1 );
137 //--------------------------------------------------------------------------
138 void wxManualPaintPanel::ConfigureBrushFormRadioButton( )
140 wxString lstBrushTool[ 2 ];
141 lstBrushTool[ 0 ] = _T("Brush");
142 lstBrushTool[ 1 ] = _T("Fill");
143 _rbBrushTool = new wxRadioBox( this, -1, _T("Brush tool"),
144 wxDefaultPosition, wxSize( 270, 45 ), 2, lstBrushTool, 2,
148 //--------------------------------------------------------------------------
149 void wxManualPaintPanel::ConfigureRangeBar( )
153 GetScalarRange( range );
154 int min = 0; //range[0];
155 int max = 6000; //range[1];
156 _mBarSlices = new mBarRange( this, 70, 65 );
157 _mBarSlices->SetMin( 0 );
158 _mBarSlices->SetStart( 0 );
159 _mBarSlices->SetOrientation( true );
160 _mBarSlices->setActiveStateTo( true );
161 _mBarSlices->setVisibleLabels( true );
162 _mBarSlices->setDeviceEndMargin( 10 );
163 _mBarSlices->setDeviceBlitStart( 10, 10 );
164 _mBarSlices->setIfWithActualDrawed( false );
165 _mBarSlices->setRepresentedValues( min, max );
166 _mBarSlices->SetStart( min );
167 _mBarSlices->SetEnd( max );
168 _mBarSlices->Update( );
169 //DFCH -- End BarSlices
171 //--------------------------------------------------------------------------
172 void wxManualPaintPanel::ConfigureGrayLevelSld( )
174 _txtGrayLevel = new wxStaticText( this, -1,
175 wxString( _T(" Gray Level ") ) );
176 _sldGrayLevel = new wxSlider( this, -1, 0, 0, 50, wxDefaultPosition,
177 wxDefaultSize, wxSL_LABELS );
178 _sldGrayLevel->SetMinSize( wxSize( 200, -1 ) );
179 _sldGrayLevel->SetMaxSize( wxSize( 200, -1 ) );
180 _graylevelCtrl = new wxSpinCtrl( this, wxID_ANY, wxEmptyString,
181 wxDefaultPosition, wxDefaultSize, wxSP_ARROW_KEYS, 0, 50, 0 );
183 //--------------------------------------------------------------------------
184 void wxManualPaintPanel::ConfigureBrushSizeSld( )
186 _txtBrushSize = new wxStaticText( this, -1,
187 wxString( _T(" Brush size ") ) );
188 _sldBrushSize = new wxSlider( this, -1, 1, 1, 20, wxDefaultPosition,
189 wxDefaultSize, wxSL_LABELS );
190 _BrushSizeCtrl = new wxSpinCtrl( this, wxID_ANY, wxEmptyString,
191 wxDefaultPosition, wxDefaultSize, wxSP_ARROW_KEYS, 0, 20, 0 );
192 _sldBrushSize->SetMinSize( wxSize( 200, -1 ) );
193 _sldBrushSize->SetMaxSize( wxSize( 200, -1 ) );
195 //--------------------------------------------------------------------------
196 void wxManualPaintPanel::ConfigureDistanceFillSld( )
198 _txtDistanceFill = new wxStaticText( this, -1,
199 wxString( _T(" Distance fill ") ) );
200 _sldDistanceFill = new wxSlider( this, -1, 500, 1, 500, wxDefaultPosition,
201 wxDefaultSize, wxSL_LABELS );
202 _sldDistanceFill->SetMinSize( wxSize( 200, -1 ) );
203 _sldDistanceFill->SetMaxSize( wxSize( 200, -1 ) );
204 _distancefillCtrl = new wxSpinCtrl( this, wxID_ANY, wxEmptyString,
205 wxDefaultPosition, wxDefaultSize, wxSP_ARROW_KEYS, 0, 500, 500 );
206 _txtDistanceFill->Disable( );
207 _sldDistanceFill->Disable( );
208 _distancefillCtrl->Disable( );
210 //--------------------------------------------------------------------------
211 void wxManualPaintPanel::ConfigureTolFillSld( )
213 _txtToleranceFill = new wxStaticText( this, -1,
214 wxString( _T(" Tolerance fill ") ) );
215 _sldToleranceFill = new wxSlider( this, -1, 50, 0, 50, wxDefaultPosition,
216 wxDefaultSize, wxSL_LABELS );
217 _sldToleranceFill->SetMinSize( wxSize( 200, -1 ) );
218 _sldToleranceFill->SetMaxSize( wxSize( 200, -1 ) );
219 _tolerancefillCtrl = new wxSpinCtrl( this, wxID_ANY, wxEmptyString,
220 wxDefaultPosition, wxDefaultSize, wxSP_ARROW_KEYS, 0, 50, 50 );
221 _txtToleranceFill->Disable( );
222 _sldToleranceFill->Disable( );
223 _tolerancefillCtrl->Disable( );
226 //--------------------------------------------------------------------------
227 void wxManualPaintPanel::ConfigureEditButtons( )
229 _btnCopy = new wxButton( this, -1, _T("Copy") );
230 _btnCopy->Disable( );
231 _btnUndo = new wxButton( this, -1, _T("Undo") );
232 _btnRedo = new wxButton( this, -1, _T("Redo") );
233 //btnUndo->Disable();
235 //--------------------------------------------------------------------------
238 * The following function allows the management of the events
240 void wxManualPaintPanel::ConnectComponents( ) //DFCH
243 _sldBrushSize->GetId( ),
244 wxEVT_SCROLL_THUMBRELEASE,
245 (wxObjectEventFunction) (void(wxPanel::*)(
246 wxScrollEvent& )) (&wxManualPaintPanel::OnBrushSize) );this ->Connect (_sldGrayLevel->GetId(),
247 wxEVT_SCROLL_THUMBRELEASE,
248 (wxObjectEventFunction) (void(wxPanel::*)(
249 wxScrollEvent&)) &wxManualPaintPanel::OnSldGrayLevel);
252 _graylevelCtrl->GetId(),
253 wxEVT_COMMAND_TEXT_UPDATED,
254 (wxObjectEventFunction) (void(wxPanel::*)(
255 wxCommandEvent&)) &wxManualPaintPanel::OnCtrTxtGrayLevel);
258 _sldToleranceFill->GetId(),
259 wxEVT_SCROLL_THUMBRELEASE,
260 (wxObjectEventFunction) (void(wxPanel::*)(
261 wxScrollEvent&)) &wxManualPaintPanel::OnSldToleranceFill);this->Connect
263 _tolerancefillCtrl->GetId(),
264 wxEVT_COMMAND_TEXT_UPDATED,
265 (wxObjectEventFunction) (void(wxPanel::*)(
266 wxCommandEvent&)) &wxManualPaintPanel::OnCtrTxtToleranceFill);
269 _sldDistanceFill->GetId(),
270 wxEVT_SCROLL_THUMBRELEASE,
271 (wxObjectEventFunction) (void(wxPanel::*)(
272 wxScrollEvent&)) &wxManualPaintPanel::OnSldDistanceFill);this->Connect
274 _distancefillCtrl->GetId(),
275 wxEVT_COMMAND_TEXT_UPDATED,
276 (wxObjectEventFunction) (void(wxPanel::*)(
277 wxCommandEvent&)) &wxManualPaintPanel::OnCtrTxtDistanceFill);
281 wxEVT_COMMAND_RADIOBOX_SELECTED,
282 (wxObjectEventFunction) (void(wxPanel::*)(
283 wxCommandEvent&)) &wxManualPaintPanel::On2D3D);this->Connect
285 _rbBrushForm->GetId(),
286 wxEVT_COMMAND_RADIOBOX_SELECTED,
287 (wxObjectEventFunction) (void(wxPanel::*)(
288 wxCommandEvent&)) &wxManualPaintPanel::OnBrushForm);this->Connect
290 _rbBrushTool->GetId(),
291 wxEVT_COMMAND_RADIOBOX_SELECTED,
292 (wxObjectEventFunction) (void(wxPanel::*)(
293 wxCommandEvent&)) &wxManualPaintPanel::OnBrushTool);this->Connect
296 wxEVT_COMMAND_BUTTON_CLICKED,
297 (wxObjectEventFunction) (void(wxPanel::*)(
298 wxCommandEvent&)) &wxManualPaintPanel::OnCopy);
302 wxEVT_COMMAND_BUTTON_CLICKED,
303 (wxObjectEventFunction) (void(wxPanel::*)(
304 wxCommandEvent&)) &wxManualPaintPanel::OnUndo);
305 this->Connect(_btnRedo->GetId(),
306 wxEVT_COMMAND_BUTTON_CLICKED,
307 (wxObjectEventFunction) (void(wxPanel::*)(
308 wxCommandEvent&)) &wxManualPaintPanel::OnRedo); //DFCH
311 _mBarSlices->GetId(),
313 (wxObjectEventFunction) (wxCommandEventFunction) &wxManualPaintPanel::onBarrange);
314 // Connect(modBarRange->GetId(),98765,(wxObjectEventFunction) (wxCommandEventFunction) &wxWidgetSliderMinMax::onActualChange_Bar );
316 _mBarSlices->GetId(),
318 (wxObjectEventFunction) (wxCommandEventFunction) &wxManualPaintPanel::onActualChange_Bar);
320 _mBarSlices->GetId(),
322 (wxObjectEventFunction) (wxCommandEventFunction) &wxManualPaintPanel::onStartChange_Bar);
324 _mBarSlices->GetId(),
326 (wxObjectEventFunction) (wxCommandEventFunction) &wxManualPaintPanel::onEndChange_Bar);
328 _mBarSlices->GetId(),
330 (wxObjectEventFunction) (wxCommandEventFunction) &wxManualPaintPanel::onSelectionEnd);
332 _mBarSlices->GetId(),
334 (wxObjectEventFunction) (wxCommandEventFunction) &wxManualPaintPanel::onMovedBar);
337 _BrushSizeCtrl->GetId(),
338 wxEVT_COMMAND_TEXT_UPDATED,
339 (wxObjectEventFunction) (void(wxPanel::*)(
340 wxCommandEvent&)) &wxManualPaintPanel::OnCtrBrushSize);
344 //---------------------------------------------------------------------------
345 void wxManualPaintPanel::OnBrushSize( wxScrollEvent& event )
347 SetBrushSize( this->_sldBrushSize->GetValue( ) );
349 text.Printf( wxT("%d"), this->_sldBrushSize->GetValue( ) );
350 _BrushSizeCtrl->SetValue( text );
353 //---------------------------------------------------------------------------
354 void wxManualPaintPanel::OnSldGrayLevel( wxScrollEvent& event )
356 SetGrayLevel( (double) ( _sldGrayLevel->GetValue( )) );
359 text.Printf( wxT("%d"), _sldGrayLevel->GetValue( ) );
360 _graylevelCtrl->SetValue( text );
363 //---------------------------------------------------------------------------
364 void wxManualPaintPanel::OnCtrTxtGrayLevel( wxCommandEvent &event )
366 int graylevel = this->_graylevelCtrl->GetValue( );
367 this->_sldGrayLevel->SetValue( graylevel );
368 SetGrayLevel( graylevel );
371 //---------------------------------------------------------------------------
372 void wxManualPaintPanel::OnSldDistanceFill( wxScrollEvent& event )
374 SetDistanceFill( (double) ( _sldDistanceFill->GetValue( )) );
377 text.Printf( wxT("%d"), _sldDistanceFill->GetValue( ) );
378 _distancefillCtrl->SetValue( text );
381 //---------------------------------------------------------------------------
382 void wxManualPaintPanel::OnCtrTxtDistanceFill( wxCommandEvent &event )
384 int distancefill = this->_distancefillCtrl->GetValue( );
385 this->_sldDistanceFill->SetValue( distancefill );
386 SetDistanceFill( distancefill );
388 //---------------------------------------------------------------------------
389 void wxManualPaintPanel::OnCtrBrushSize( wxCommandEvent &event )
391 int brushSize = _BrushSizeCtrl->GetValue( );
392 this->_sldBrushSize->SetValue( brushSize );
393 SetBrushSize( brushSize );
396 //---------------------------------------------------------------------------
397 void wxManualPaintPanel::OnSldToleranceFill( wxScrollEvent& event )
399 SetToleranceFill( (double) ( _sldToleranceFill->GetValue( )) );
402 text.Printf( wxT("%d"), _sldToleranceFill->GetValue( ) );
403 _tolerancefillCtrl->SetValue( text );
406 //---------------------------------------------------------------------------
407 void wxManualPaintPanel::OnCtrTxtToleranceFill( wxCommandEvent &event )
409 int tolerance = _tolerancefillCtrl->GetValue( );
410 this->_sldToleranceFill->SetValue( tolerance );
411 SetToleranceFill( tolerance );
414 //---------------------------------------------------------------------------
415 void wxManualPaintPanel::DisableControls( )
417 _txtBrushSize->Disable( );
418 _sldBrushSize->Disable( );
419 _rbBrushForm->Disable( );
421 _txtToleranceFill->Disable( );
422 _sldToleranceFill->Disable( );
423 _tolerancefillCtrl->Disable( );
425 _txtDistanceFill->Disable( );
426 _sldDistanceFill->Disable( );
427 _distancefillCtrl->Disable( );
430 //---------------------------------------------------------------------------
431 void wxManualPaintPanel::On2D3D( wxCommandEvent &event )
433 Set2D3D( _rb2D3D->GetSelection( ) );
436 //---------------------------------------------------------------------------
437 void wxManualPaintPanel::OnBrushForm( wxCommandEvent &event )
439 SetBrushForm( _rbBrushForm->GetSelection( ) );
442 //---------------------------------------------------------------------------
443 void wxManualPaintPanel::OnBrushTool( wxCommandEvent &event )
446 SetTool( _rbBrushTool->GetSelection( ) );
448 if( _rbBrushTool->GetSelection( ) == 0 ) //Brush tool
450 _txtBrushSize->Enable( );
451 _sldBrushSize->Enable( );
452 _rbBrushForm->Enable( );
453 _brushSizer->Show( true );
454 _FillSizer->Show( false );
458 if( _rbBrushTool->GetSelection( ) == 1 ) //Fill tool
460 _txtToleranceFill->Enable( );
461 _sldToleranceFill->Enable( );
462 _tolerancefillCtrl->Enable( );
464 _txtDistanceFill->Enable( );
465 _sldDistanceFill->Enable( );
466 _distancefillCtrl->Enable( );
467 _FillSizer->Show( true );
468 _brushSizer->Show( false );
473 //---------------------------------------------------------------------------
474 void wxManualPaintPanel::OnCopy( wxCommandEvent &event )
478 //---------------------------------------------------------------------------
479 void wxManualPaintPanel::OnUndo( wxCommandEvent &event )
481 this->_manualPaintModel->Undo( );
484 //---------------------------------------------------------------------------
485 void wxManualPaintPanel::OnRedo( wxCommandEvent &event )
487 this->_manualPaintModel->Redo( );
490 //--------------------------------------------------------------------------------------------------------------------------------
491 // Min-Max Barrange received events
492 //--------------------------------------------------------------------------------------------------------------------------------
493 void wxManualPaintPanel::onBarrange( wxCommandEvent& event )
496 void wxManualPaintPanel::onActualChange_Bar( wxCommandEvent& event )
498 /*mbbtkSliderMinMax->bbSetOutputOutActual(modBarRange->GetActual());
499 mbbtkSliderMinMax->bbSignalOutputModification(std::string("OutActual"));*/
501 void wxManualPaintPanel::onStartChange_Bar( wxCommandEvent& event )
503 SetRangeMin( _mBarSlices->GetStart( ) );
506 void wxManualPaintPanel::onEndChange_Bar( wxCommandEvent& event )
508 SetRangeMax( _mBarSlices->GetEnd( ) );
511 void wxManualPaintPanel::onSelectionEnd( wxCommandEvent& event )
515 void wxManualPaintPanel::onMovedBar( wxCommandEvent& event )
518 //-------------------------------------------------------------------------
519 //--------------------------------------------------------------------------
520 //--------------------------------------------------------------------------