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