2 //----------------------------------------------------------------------------------------------------------------
3 // Class definition include
4 //----------------------------------------------------------------------------------------------------------------
5 #include "wxConceptControl.h"
7 //----------------------------------------------------------------------------------------------------------------
8 // Class implementation
9 //----------------------------------------------------------------------------------------------------------------
10 /** @file wxConceptControl.cxx */
11 //IMPLEMENT_CLASS(wxConceptControl, wxScrolledWindow)
12 //------------------------------------------------------------------------------------------------------------
13 // Generated events declaration and definition
14 //------------------------------------------------------------------------------------------------------------
17 DEFINE_EVENT_TYPE( wxEVT_CONCEPT_RELEASE )
19 //------------------------------------------------------------------------------------------------------------
20 // Constructors & Destructors
21 //------------------------------------------------------------------------------------------------------------
23 wxConceptControl :: wxConceptControl(wxWindow *parent, bool orientation, int minV, int maxV, int actualV, std::string &aConceptName, std::string elementsDef )
24 :wxPanel(parent, -1, wxDefaultPosition, parent->GetSize(), wxTAB_TRAVERSAL)
33 wxFlexGridSizer* sizer = new wxFlexGridSizer (1, 3, 15, 15);
35 conceptName = new wxStaticText(this, -1, wxString(aConceptName.c_str(),wxConvUTF8), wxDefaultPosition, wxSize(90,20), wxALIGN_CENTRE );
36 sizer->Add( conceptName, 0, wxALIGN_CENTRE |wxALIGN_CENTER_HORIZONTAL);
40 sizer->AddGrowableCol(1);
41 conceptSlider = new wxSlider(this, -1, actualV, minV, maxV, wxDefaultPosition, wxDefaultSize, wxSL_HORIZONTAL| wxSL_AUTOTICKS | wxSL_LABELS, wxDefaultValidator, wxString(aConceptName.c_str(),wxConvUTF8));
45 sizer->AddGrowableRow(1);
46 conceptSlider = new wxSlider(this, -1, actualV, minV, maxV, wxDefaultPosition, wxDefaultSize, wxSL_LEFT| wxSL_AUTOTICKS | wxSL_LABELS, wxDefaultValidator, wxString(aConceptName.c_str(),wxConvUTF8) );
48 sizer->Add(conceptSlider, 0, wxGROW |wxALL );
49 createElements( sizer, elementsDef );
52 Connect( conceptSlider->GetId(), wxEVT_SCROLL_THUMBTRACK, wxScrollEventHandler(wxConceptControl::onSliderTrack));//(wxObjectEventFunction) &wxConceptControl :: onSliderRelease );
53 Connect( conceptSlider->GetId(), wxEVT_SCROLL_THUMBRELEASE, wxScrollEventHandler(wxConceptControl::onSliderRelease));//(wxObjectEventFunction) &wxConceptControl :: onSliderTrack );
55 this->SetAutoLayout( true );
59 wxConceptControl :: ~wxConceptControl()
64 //------------------------------------------------------------------------------------------------------------
65 // Methods for capturing events
66 //------------------------------------------------------------------------------------------------------------
69 void wxConceptControl ::onUpdateUICheckBox( wxCommandEvent& event )
71 lastUpdate = (wxCheckBox * ) event.GetEventObject();
72 std::string groupId = std::string(lastUpdate->GetName().ToAscii());
73 event.SetClientData( (void *) atoi(groupId.c_str()) );
74 event.SetId( GetId() );
75 event.SetEventObject( this );
76 GetEventHandler()->ProcessEvent( event );
78 //------------------------------------------------------------------------------------------------------------
79 void wxConceptControl :: onSliderTrack( wxScrollEvent& event )
84 //------------------------------------------------------------------------------------------------------------
86 void wxConceptControl :: onSliderRelease( wxScrollEvent& event )
88 // if( !resolutionChange )
89 sendEnvent( wxEVT_CONCEPT_RELEASE );
93 //------------------------------------------------------------------------------------------------------------
94 // Methods for sending events
95 //------------------------------------------------------------------------------------------------------------
97 void wxConceptControl :: sendEnvent(WXTYPE theEventType)
99 wxCommandEvent cevent( theEventType, GetId() );
100 cevent.SetEventObject( this );
101 GetEventHandler()->ProcessEvent( cevent );
104 //------------------------------------------------------------------------------------------------------------
105 // Attributes getters and setters
106 //------------------------------------------------------------------------------------------------------------
108 std::string wxConceptControl :: getName()
110 return std::string(conceptName->GetLabel().ToAscii()); //wxString to std::string convertor ?
113 int wxConceptControl :: getMinShowedValue()
115 return conceptSlider->GetMin();
118 int wxConceptControl :: getMaxShowedValue()
120 return conceptSlider->GetMax();
123 void wxConceptControl :: setMinValue(int theMin)
128 int wxConceptControl :: getMinValue()
133 void wxConceptControl :: setMaxValue(int theMax)
138 int wxConceptControl :: getMaxValue()
143 void wxConceptControl :: setActualValue(int theActual)
145 conceptSlider->SetValue(theActual);
148 int wxConceptControl :: getActualValue()
150 return conceptSlider->GetValue();
153 void wxConceptControl :: setShowLables(bool ifShowCondition)
155 showLabels = ifShowCondition;
156 //TODO -----UPDATE the slider too!!
161 //------------------------------------------------------------------------------------------------------------
162 // Other functional methods
163 //------------------------------------------------------------------------------------------------------------
165 void wxConceptControl :: clearCheckAt( int position )
167 checkBoxes[position]->SetValue( false );
169 //------------------------------------------------------------------------------------------------------------
170 bool wxConceptControl :: getIfChecked( int position )
172 return checkBoxes[position]->GetValue();
174 //------------------------------------------------------------------------------------------------------------
175 void wxConceptControl :: setRange(int minShow, int maxShow)
178 if( minShow < minVal )
180 if( maxShow > maxVal )
183 conceptSlider->SetRange(minShow, maxShow);
184 int actual = getActualValue();
186 conceptSlider->SetValue( minShow );
187 else if( actual>maxShow )
188 conceptSlider->SetValue( maxShow );
190 //------------------------------------------------------------------------------------------------------------
191 void wxConceptControl :: reset()
193 conceptSlider->SetRange(minValue, maxValue);
194 conceptSlider->SetValue(minValue);
195 int i, size = checkBoxes.size();
196 for(i=0; i<size; i++)
198 (checkBoxes[i])->SetValue( false );
200 size = textBoxes.size();
201 for ( i =0; i<size; i++)
203 textBoxes[i]->Clear();
207 //------------------------------------------------------------------------------------------------------------
208 // Creational and initialization methods
209 //------------------------------------------------------------------------------------------------------------
210 void wxConceptControl :: createElements(wxSizer *sizer , std::string elementsDef )
212 const char * elements = elementsDef.c_str();
213 int elementsNum = elementsDef.size();
214 wxFlexGridSizer* checkSizer = new wxFlexGridSizer (1, elementsNum, 5, 5);
216 for( i = 0;*elements!= 0; elements++)
219 if( a == 67 || a == 99 )// Including C:67 or c:99 as a checkBox (ASCII)
222 createCheckBoxAndAddToSizer( checkSizer, "X", -1, ckecks);
224 createCheckBoxAndAddToSizer( checkSizer, "Y", -1, ckecks);
226 createCheckBoxAndAddToSizer( checkSizer, "X", -1, ckecks);
229 else if ( a == 84 || a==116 )// Including T:84 or t t:116 as textCtrl (ASCII)
235 _numCheckBox = ckecks;
236 sizer->Add(checkSizer, 0, wxGROW |wxALL );
239 int wxConceptControl :: getNumCheckBox(){
243 //------------------------------------------------------------------------------------------------------------
244 wxCheckBox * wxConceptControl :: createCheckBoxAndAddToSizer(wxSizer *sizer, std::string label, wxWindowID id,int groupID)
247 //itoa( groupID, buffer, 10);
256 char temp = k % 10 + 48;
258 buffer = temp + buffer;
262 //wxCheckBox *checkbox = new wxCheckBox( this, -1, wxString( label.c_str(), wxConvUTF8), wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator, wxString( buffer, wxConvUTF8) );
263 wxCheckBox *checkbox = new wxCheckBox( this, -1, wxString( label.c_str(), wxConvUTF8), wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator, wxString( buffer.c_str(), wxConvUTF8) );
264 sizer->Add(checkbox, 0, wxLEFT | wxRIGHT, 5);
265 sizer->Add(0, 2, 0, wxGROW);
266 checkBoxes.push_back( checkbox );
267 Connect( checkbox->GetId(), wxEVT_COMMAND_CHECKBOX_CLICKED, (wxObjectEventFunction) (wxCommandEventFunction) &wxConceptControl::onUpdateUICheckBox );
272 //------------------------------------------------------------------------------------------------------------
273 /*wxCheckBox * wxConceptControl :: createCheckBoxAndAddToSizer(wxSizer *sizer, std::string label, wxWindowID id,int groupID)
275 wxCheckBox *checkbox = new wxCheckBox(this, -1, wxString( label.c_str(), wxConvUTF8));
276 sizer->Add(checkbox, 0, wxLEFT | wxRIGHT, 5);
277 sizer->Add(0, 2, 0, wxGROW);