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