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