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