1 #include "wxManualPaintPanel.h"
2 #include <wx/radiobox.h>
4 wxManualPaintPanel::wxManualPaintPanel( wxWindow * parent )
5 : wxPanel( parent, -1 )
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") );
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
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 );
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,
66 _txtToleranceFill->Disable( );
67 _sldToleranceFill->Disable( );
68 _tolerancefillCtrl->Disable( );
70 _txtDistanceFill->Disable( );
71 _sldDistanceFill->Disable( );
72 _distancefillCtrl->Disable( );
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,
81 _btnCopy = new wxButton( panel, -1, _T("Copy") );
83 _btnUndo = new wxButton( panel, -1, _T("Undo") );
84 _btnRedo = new wxButton( panel, -1, _T("Redo") );
87 wxFlexGridSizer *sizer1 = new wxFlexGridSizer( 1 );
89 sizer1->Add( new wxStaticText( panel, -1, _T(" ") ) );
90 sizer1->Add( tittleText );
92 sizer1->Add( new wxStaticText( panel, -1, _T(" ") ) );
93 sizer1->Add( _rbBrushTool, 1, wxGROW );
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 );
101 sizer1->Add( new wxStaticText( this, -1, _T( "Select Range" ) ), 1,
103 sizer1->Add( _mBarSlices, 1, wxGROW );
105 sizer1->Add( new wxStaticText( panel, -1, _T(" ") ) );
106 sizer1->Add( _rb2D3D, 1, wxGROW );
108 sizer1->Add( new wxStaticText( panel, -1, _T(" ") ) );
109 sizer1->Add( _txtBrushSize );
110 sizer1->Add( _sldBrushSize, 1, wxGROW );
112 sizer1->Add( new wxStaticText( panel, -1, _T(" ") ) );
113 sizer1->Add( _rbBrushForm, 1, wxGROW );
115 wxFlexGridSizer *sizerTolerance = new wxFlexGridSizer( 2 );
116 sizerTolerance->Add( _txtToleranceFill );
117 sizerTolerance->Add( _tolerancefillCtrl );
118 sizer1->Add( sizerTolerance );
119 sizer1->Add( _sldToleranceFill, 1, wxGROW );
121 wxFlexGridSizer *sizerDistance = new wxFlexGridSizer( 2 );
122 sizerDistance->Add( _txtDistanceFill );
123 sizerDistance->Add( _distancefillCtrl );
124 sizer1->Add( sizerDistance );
125 sizer1->Add( _sldDistanceFill, 1, wxGROW );
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 );
135 this->ConnectComponents( ); //DFCH
137 panel->SetSizer( sizer );
138 panel->SetAutoLayout( true );
143 //---------------------------------------------------------------------------
144 wxManualPaintPanel::~wxManualPaintPanel( )
148 //--------------------------------------------------------------------------
150 * The following function allows the management of the events
152 void wxManualPaintPanel::ConnectComponents( ) //DFCH
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);
164 _graylevelCtrl->GetId(),
165 wxEVT_COMMAND_TEXT_UPDATED,
166 (wxObjectEventFunction) (void(wxPanel::*)(
167 wxCommandEvent&)) &wxManualPaintPanel::OnCtrTxtGrayLevel);
170 _sldToleranceFill->GetId(),
171 wxEVT_SCROLL_THUMBRELEASE,
172 (wxObjectEventFunction) (void(wxPanel::*)(
173 wxScrollEvent&)) &wxManualPaintPanel::OnSldToleranceFill);this->Connect
175 _tolerancefillCtrl->GetId(),
176 wxEVT_COMMAND_TEXT_UPDATED,
177 (wxObjectEventFunction) (void(wxPanel::*)(
178 wxCommandEvent&)) &wxManualPaintPanel::OnCtrTxtToleranceFill);
181 _sldDistanceFill->GetId(),
182 wxEVT_SCROLL_THUMBRELEASE,
183 (wxObjectEventFunction) (void(wxPanel::*)(
184 wxScrollEvent&)) &wxManualPaintPanel::OnSldDistanceFill);this->Connect
186 _distancefillCtrl->GetId(),
187 wxEVT_COMMAND_TEXT_UPDATED,
188 (wxObjectEventFunction) (void(wxPanel::*)(
189 wxCommandEvent&)) &wxManualPaintPanel::OnCtrTxtDistanceFill);
193 wxEVT_COMMAND_RADIOBOX_SELECTED,
194 (wxObjectEventFunction) (void(wxPanel::*)(
195 wxCommandEvent&)) &wxManualPaintPanel::On2D3D);this->Connect
197 _rbBrushForm->GetId(),
198 wxEVT_COMMAND_RADIOBOX_SELECTED,
199 (wxObjectEventFunction) (void(wxPanel::*)(
200 wxCommandEvent&)) &wxManualPaintPanel::OnBrushForm);this->Connect
202 _rbBrushTool->GetId(),
203 wxEVT_COMMAND_RADIOBOX_SELECTED,
204 (wxObjectEventFunction) (void(wxPanel::*)(
205 wxCommandEvent&)) &wxManualPaintPanel::OnBrushTool);this->Connect
208 wxEVT_COMMAND_BUTTON_CLICKED,
209 (wxObjectEventFunction) (void(wxPanel::*)(
210 wxCommandEvent&)) &wxManualPaintPanel::OnCopy);
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
223 _mBarSlices->GetId(),
225 (wxObjectEventFunction) (wxCommandEventFunction) &wxManualPaintPanel::onBarrange);
226 // Connect(modBarRange->GetId(),98765,(wxObjectEventFunction) (wxCommandEventFunction) &wxWidgetSliderMinMax::onActualChange_Bar );
228 _mBarSlices->GetId(),
230 (wxObjectEventFunction) (wxCommandEventFunction) &wxManualPaintPanel::onActualChange_Bar);
232 _mBarSlices->GetId(),
234 (wxObjectEventFunction) (wxCommandEventFunction) &wxManualPaintPanel::onStartChange_Bar);
236 _mBarSlices->GetId(),
238 (wxObjectEventFunction) (wxCommandEventFunction) &wxManualPaintPanel::onEndChange_Bar);
240 _mBarSlices->GetId(),
242 (wxObjectEventFunction) (wxCommandEventFunction) &wxManualPaintPanel::onSelectionEnd);
244 _mBarSlices->GetId(),
246 (wxObjectEventFunction) (wxCommandEventFunction) &wxManualPaintPanel::onMovedBar);
249 //---------------------------------------------------------------------------
250 void wxManualPaintPanel::OnBrushSize( wxScrollEvent& event )
252 SetBrushSize( _sldBrushSize->GetValue( ) );
255 //---------------------------------------------------------------------------
256 void wxManualPaintPanel::OnSldGrayLevel( wxScrollEvent& event )
258 SetGrayLevel( (double) ( _sldGrayLevel->GetValue( )) );
261 text.Printf( wxT("%d"), _sldGrayLevel->GetValue( ) );
262 _graylevelCtrl->SetValue( text );
265 //---------------------------------------------------------------------------
266 void wxManualPaintPanel::OnCtrTxtGrayLevel( wxCommandEvent &event )
269 wxString text = _graylevelCtrl->GetValue( );
270 if( text.ToDouble( &graylevel ) )
272 SetGrayLevel( graylevel );
276 //---------------------------------------------------------------------------
277 void wxManualPaintPanel::OnSldDistanceFill( wxScrollEvent& event )
279 SetDistanceFill( (double) ( _sldDistanceFill->GetValue( )) );
282 text.Printf( wxT("%d"), _sldDistanceFill->GetValue( ) );
283 _distancefillCtrl->SetValue( text );
286 //---------------------------------------------------------------------------
287 void wxManualPaintPanel::OnCtrTxtDistanceFill( wxCommandEvent &event )
290 wxString text = _distancefillCtrl->GetValue( );
291 if( text.ToDouble( &distancefill ) )
293 SetDistanceFill( distancefill );
297 //---------------------------------------------------------------------------
298 void wxManualPaintPanel::OnSldToleranceFill( wxScrollEvent& event )
300 SetToleranceFill( (double) ( _sldToleranceFill->GetValue( )) );
303 text.Printf( wxT("%d"), _sldToleranceFill->GetValue( ) );
304 _tolerancefillCtrl->SetValue( text );
307 //---------------------------------------------------------------------------
308 void wxManualPaintPanel::OnCtrTxtToleranceFill( wxCommandEvent &event )
311 wxString text = _tolerancefillCtrl->GetValue( );
312 if( text.ToDouble( &tolerance ) )
314 SetToleranceFill( tolerance );
318 //---------------------------------------------------------------------------
319 void wxManualPaintPanel::DisableControls( )
321 _txtBrushSize->Disable( );
322 _sldBrushSize->Disable( );
323 _rbBrushForm->Disable( );
325 _txtToleranceFill->Disable( );
326 _sldToleranceFill->Disable( );
327 _tolerancefillCtrl->Disable( );
329 _txtDistanceFill->Disable( );
330 _sldDistanceFill->Disable( );
331 _distancefillCtrl->Disable( );
334 //---------------------------------------------------------------------------
335 void wxManualPaintPanel::On2D3D( wxCommandEvent &event )
337 Set2D3D( _rb2D3D->GetSelection( ) );
340 //---------------------------------------------------------------------------
341 void wxManualPaintPanel::OnBrushForm( wxCommandEvent &event )
343 SetBrushForm( _rbBrushForm->GetSelection( ) );
346 //---------------------------------------------------------------------------
347 void wxManualPaintPanel::OnBrushTool( wxCommandEvent &event )
350 SetTool( _rbBrushTool->GetSelection( ) );
352 if( _rbBrushTool->GetSelection( ) == 0 ) //Brush tool
354 _txtBrushSize->Enable( );
355 _sldBrushSize->Enable( );
356 _rbBrushForm->Enable( );
359 if( _rbBrushTool->GetSelection( ) == 1 ) //Fill tool
361 _txtToleranceFill->Enable( );
362 _sldToleranceFill->Enable( );
363 _tolerancefillCtrl->Enable( );
365 _txtDistanceFill->Enable( );
366 _sldDistanceFill->Enable( );
367 _distancefillCtrl->Enable( );
371 //---------------------------------------------------------------------------
372 void wxManualPaintPanel::OnCopy( wxCommandEvent &event )
376 //---------------------------------------------------------------------------
377 void wxManualPaintPanel::OnUndo( wxCommandEvent &event )
379 this->_manualPaintModel->Undo( );
382 //---------------------------------------------------------------------------
383 void wxManualPaintPanel::OnRedo( wxCommandEvent &event )
385 this->_manualPaintModel->Redo( );
388 //--------------------------------------------------------------------------------------------------------------------------------
389 // Min-Max Barrange received events
390 //--------------------------------------------------------------------------------------------------------------------------------
391 void wxManualPaintPanel::onBarrange( wxCommandEvent& event )
394 void wxManualPaintPanel::onActualChange_Bar( wxCommandEvent& event )
396 /*mbbtkSliderMinMax->bbSetOutputOutActual(modBarRange->GetActual());
397 mbbtkSliderMinMax->bbSignalOutputModification(std::string("OutActual"));*/
399 void wxManualPaintPanel::onStartChange_Bar( wxCommandEvent& event )
401 SetRangeMin( _mBarSlices->GetStart( ) );
404 void wxManualPaintPanel::onEndChange_Bar( wxCommandEvent& event )
406 SetRangeMax( _mBarSlices->GetEnd( ) );
409 void wxManualPaintPanel::onSelectionEnd( wxCommandEvent& event )
413 void wxManualPaintPanel::onMovedBar( wxCommandEvent& event )
416 //-------------------------------------------------------------------------
417 //--------------------------------------------------------------------------
418 //--------------------------------------------------------------------------