]> Creatis software - creaMaracasVisu.git/blob - lib/maracasVisuLib/src/interface/wxWindows/widgets/manualPaint/wxManualPaintPanel.cpp
*** empty log message ***
[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         wxStaticText    *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, 50, 1, 50, wxDefaultPosition, wxDefaultSize, wxSL_LABELS);
24                      _distancefillCtrl  = new wxTextCtrl(panel , -1,_T("50") );
25
26
27         wxString lst2D3D[2];
28         lst2D3D[0]=_T("2D circle");
29         lst2D3D[1]=_T("3D sphere");
30                     _rb2D3D         = new wxRadioBox(panel, -1, _T("2D / 3D"), wxDefaultPosition, wxSize(270,45), 2 , lst2D3D,  2, wxRA_SPECIFY_COLS);
31     _rb2D3D->SetSelection(1);
32
33         wxString lstBrushForm[2];
34         lstBrushForm[0]=_T("rectangle/cube");
35         lstBrushForm[1]=_T("circle/sphere");
36                     _rbBrushForm    = new wxRadioBox(panel, -1, _T("Brush form"), wxDefaultPosition, wxSize(270,45), 2 , lstBrushForm,  2, wxRA_SPECIFY_COLS);
37
38     _txtToleranceFill->Disable();
39     _sldToleranceFill->Disable();
40     _tolerancefillCtrl->Disable();
41
42     _txtDistanceFill->Disable();
43     _sldDistanceFill->Disable();
44     _distancefillCtrl->Disable();
45
46         wxString lstBrushTool[2];
47         lstBrushTool[0]=_T("Brush");
48         lstBrushTool[1]=_T("Fill");
49                     _rbBrushTool    = new wxRadioBox(panel, -1, _T("Brush tool"), wxDefaultPosition, wxSize(270,45), 2 , lstBrushTool,  2, wxRA_SPECIFY_COLS);
50
51         wxButton     *btnCopy           = new wxButton( panel, -1, _T("Copy"));
52     btnCopy->Disable();
53         wxButton     *btnUndo           = new wxButton( panel, -1, _T("Undo"));
54     btnUndo->Disable();
55
56     Connect(_sldBrushSize->GetId()      , wxEVT_SCROLL_THUMBRELEASE             , (wxObjectEventFunction) &wxManualPaintPanel::OnBrushSize);
57
58     Connect(_sldGrayLevel->GetId()      , wxEVT_SCROLL_THUMBRELEASE             , (wxObjectEventFunction) &wxManualPaintPanel::OnSldGrayLevel);
59     Connect(_graylevelCtrl->GetId()     , wxEVT_COMMAND_TEXT_UPDATED        , (wxObjectEventFunction) &wxManualPaintPanel::OnCtrTxtGrayLevel);
60
61     Connect(_sldToleranceFill->GetId()  , wxEVT_SCROLL_THUMBRELEASE             , (wxObjectEventFunction) &wxManualPaintPanel::OnSldToleranceFill);
62     Connect(_tolerancefillCtrl->GetId() , wxEVT_COMMAND_TEXT_UPDATED        , (wxObjectEventFunction) &wxManualPaintPanel::OnCtrTxtToleranceFill);
63
64     Connect(_sldDistanceFill->GetId()   , wxEVT_SCROLL_THUMBRELEASE             , (wxObjectEventFunction) &wxManualPaintPanel::OnSldDistanceFill);
65     Connect(_distancefillCtrl->GetId()  , wxEVT_COMMAND_TEXT_UPDATED        , (wxObjectEventFunction) &wxManualPaintPanel::OnCtrTxtDistanceFill);
66
67     Connect(_rb2D3D->GetId()            , wxEVT_COMMAND_RADIOBOX_SELECTED       , (wxObjectEventFunction) &wxManualPaintPanel::On2D3D);
68     Connect(_rbBrushForm->GetId()       , wxEVT_COMMAND_RADIOBOX_SELECTED       , (wxObjectEventFunction) &wxManualPaintPanel::OnBrushForm);
69     Connect(_rbBrushTool->GetId()       , wxEVT_COMMAND_RADIOBOX_SELECTED       , (wxObjectEventFunction) &wxManualPaintPanel::OnBrushTool);
70         Connect(btnCopy->GetId()                , wxEVT_COMMAND_BUTTON_CLICKED      , (wxObjectEventFunction) &wxManualPaintPanel::OnCopy);
71         Connect(btnUndo->GetId()                , wxEVT_COMMAND_BUTTON_CLICKED      , (wxObjectEventFunction) &wxManualPaintPanel::OnUndo);
72
73         wxFlexGridSizer *sizer1         = new wxFlexGridSizer(1);
74
75     sizer1->Add(new wxStaticText(panel,-1,_T("  ")));
76     sizer1->Add(tittleText);
77
78     sizer1->Add(new wxStaticText(panel,-1,_T("  ")));
79     sizer1->Add(txtGrayLevel);
80     sizer1->Add(_sldGrayLevel, 1, wxGROW );
81     sizer1->Add(_graylevelCtrl);
82
83     sizer1->Add(new wxStaticText(panel,-1,_T("  ")));
84     sizer1->Add(_rb2D3D, 1, wxGROW );
85
86     sizer1->Add(new wxStaticText(panel,-1,_T("  ")));
87     sizer1->Add(_rbBrushTool, 1, wxGROW );
88
89     sizer1->Add(new wxStaticText(panel,-1,_T("  ")));
90     sizer1->Add(txtBrushSize);
91     sizer1->Add(_sldBrushSize, 1, wxGROW );
92
93     sizer1->Add(new wxStaticText(panel,-1,_T("  ")));
94     sizer1->Add(_rbBrushForm, 1, wxGROW );
95
96
97     sizer1->Add(new wxStaticText(panel,-1,_T("  ")));
98     sizer1->Add(_txtToleranceFill);
99     sizer1->Add(_sldToleranceFill, 1, wxGROW );
100     sizer1->Add(_tolerancefillCtrl);
101
102     sizer1->Add(new wxStaticText(panel,-1,_T("  ")));
103     sizer1->Add(_txtDistanceFill);
104     sizer1->Add(_sldDistanceFill, 1, wxGROW );
105     sizer1->Add(_distancefillCtrl);
106
107
108     sizer1->Add(new wxStaticText(panel,-1,_T("  ")));
109     sizer1->Add(btnCopy, 1, wxGROW );
110     sizer1->Add(new wxStaticText(panel,-1,_T("  ")));
111     sizer1->Add(btnUndo, 1, wxGROW );
112
113     sizer = sizer1;
114     panel->SetSizer(sizer);
115     panel->SetAutoLayout(true);
116     panel->Layout();
117 }
118
119 //---------------------------------------------------------------------------
120 wxManualPaintPanel::~wxManualPaintPanel()
121 {
122 }
123
124 //---------------------------------------------------------------------------
125 void wxManualPaintPanel::OnBrushSize(wxScrollEvent& event)
126 {
127     SetBrushSize( _sldBrushSize->GetValue() );
128 }
129
130 //---------------------------------------------------------------------------
131 void wxManualPaintPanel::OnSldGrayLevel(wxScrollEvent& event)
132 {
133     SetGrayLevel( (double)(_sldGrayLevel->GetValue()) );
134
135     wxString text;
136     text.Printf( wxT("%d"), _sldGrayLevel->GetValue() );
137     _graylevelCtrl->SetValue(text);
138 }
139
140 //---------------------------------------------------------------------------
141 void wxManualPaintPanel::OnCtrTxtGrayLevel(wxCommandEvent &event)
142 {
143     double graylevel;
144     wxString text=_graylevelCtrl->GetValue();
145     if (text.ToDouble(&graylevel))
146     {
147         SetGrayLevel( graylevel );
148     }
149 }
150
151 //---------------------------------------------------------------------------
152 void wxManualPaintPanel::OnSldDistanceFill(wxScrollEvent& event)
153 {
154     SetDistanceFill( (double)(_sldDistanceFill->GetValue()) );
155
156     wxString text;
157     text.Printf( wxT("%d"), _sldDistanceFill->GetValue() );
158     _distancefillCtrl->SetValue(text);
159 }
160
161 //---------------------------------------------------------------------------
162 void wxManualPaintPanel::OnCtrTxtDistanceFill(wxCommandEvent &event)
163 {
164     double distancefill;
165     wxString text=_distancefillCtrl->GetValue();
166     if (text.ToDouble(&distancefill))
167     {
168         SetDistanceFill( distancefill );
169     }
170 }
171
172 //---------------------------------------------------------------------------
173 void wxManualPaintPanel::OnSldToleranceFill(wxScrollEvent& event)
174 {
175     SetToleranceFill( (double)(_sldToleranceFill->GetValue()) );
176
177     wxString text;
178     text.Printf( wxT("%d"), _sldToleranceFill->GetValue() );
179     _tolerancefillCtrl->SetValue(text);
180 }
181
182 //---------------------------------------------------------------------------
183 void wxManualPaintPanel::OnCtrTxtToleranceFill(wxCommandEvent &event)
184 {
185     double tolerance;
186     wxString text=_tolerancefillCtrl->GetValue();
187     if (text.ToDouble(&tolerance))
188     {
189         SetToleranceFill( tolerance );
190     }
191 }
192
193
194
195 //---------------------------------------------------------------------------
196 void wxManualPaintPanel::DisableControls()
197 {
198     _sldBrushSize->Disable();
199     _rbBrushForm->Disable();
200
201     _txtToleranceFill->Disable();
202     _sldToleranceFill->Disable();
203     _tolerancefillCtrl->Disable();
204
205     _txtDistanceFill->Disable();
206     _sldDistanceFill->Disable();
207     _distancefillCtrl->Disable();
208 }
209
210 //---------------------------------------------------------------------------
211 void wxManualPaintPanel::On2D3D(wxCommandEvent &event)
212 {
213     Set2D3D( _rb2D3D->GetSelection() );
214 }
215
216 //---------------------------------------------------------------------------
217 void wxManualPaintPanel::OnBrushForm(wxCommandEvent &event)
218 {
219     printf("EED wxManualPaintPanel::OnBrushForm BrushForm=%d \n", _rbBrushForm->GetSelection());
220     SetBrushForm( _rbBrushForm->GetSelection() );
221 }
222
223 //---------------------------------------------------------------------------
224 void wxManualPaintPanel::OnBrushTool(wxCommandEvent &event)
225 {
226     DisableControls();
227     SetBrushTool( _rbBrushTool->GetSelection() );
228
229     if (_rbBrushTool->GetSelection()==0)  //Brush tool
230     {
231         _sldBrushSize->Enable();
232         _rbBrushForm->Enable();
233     }
234
235     if (_rbBrushTool->GetSelection()==1)  //Fill tool
236     {
237         _txtToleranceFill->Enable();
238         _sldToleranceFill->Enable();
239         _tolerancefillCtrl->Enable();
240
241         _txtDistanceFill->Enable();
242         _sldDistanceFill->Enable();
243         _distancefillCtrl->Enable();
244     }
245 }
246
247 //---------------------------------------------------------------------------
248 void wxManualPaintPanel::OnCopy(wxCommandEvent &event)
249 {
250 }
251
252 //---------------------------------------------------------------------------
253 void wxManualPaintPanel::OnUndo(wxCommandEvent &event)
254 {
255 }