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