wxConceptControl.cxx

Go to the documentation of this file.
00001 
00002 //----------------------------------------------------------------------------------------------------------------
00003 // Class definition include
00004 //----------------------------------------------------------------------------------------------------------------
00005 #include "wxConceptControl.h"
00006 
00007 //----------------------------------------------------------------------------------------------------------------
00008 // Class implementation
00009 //----------------------------------------------------------------------------------------------------------------
00011 //IMPLEMENT_CLASS(wxConceptControl, wxScrolledWindow)
00012 //------------------------------------------------------------------------------------------------------------
00013 // Generated events declaration and definition
00014 //------------------------------------------------------------------------------------------------------------
00015 
00016 
00017 DEFINE_EVENT_TYPE( wxEVT_CONCEPT_RELEASE )
00018 
00019         //------------------------------------------------------------------------------------------------------------
00020         // Constructors & Destructors
00021         //------------------------------------------------------------------------------------------------------------
00022         
00023         wxConceptControl :: wxConceptControl(wxWindow *parent, bool orientation, int minV, int maxV,  int actualV, std::string &aConceptName, std::string elementsDef )
00024         :wxPanel(parent, -1, wxDefaultPosition, parent->GetSize(), wxTAB_TRAVERSAL)
00025         {
00026 
00027                 minValue = minV;
00028                 maxValue = maxV;
00029                 _numCheckBox = 0;
00030                 
00031                 showLabels = true;
00032 
00033                 wxFlexGridSizer* sizer = new wxFlexGridSizer (1, 3, 15, 15);
00034 
00035                 conceptName = new wxStaticText(this, -1, wxString(aConceptName.c_str(),wxConvUTF8), wxDefaultPosition, wxSize(90,20), wxALIGN_CENTRE );         
00036                 sizer->Add( conceptName, 0, wxALIGN_CENTRE |wxALIGN_CENTER_HORIZONTAL);
00037                 
00038                 if(orientation)
00039                 {
00040                         sizer->AddGrowableCol(1);
00041                         conceptSlider = new wxSlider(this, -1, actualV, minV, maxV, wxDefaultPosition, wxDefaultSize, wxSL_HORIZONTAL| wxSL_AUTOTICKS | wxSL_LABELS, wxDefaultValidator, wxString(aConceptName.c_str(),wxConvUTF8));                    
00042                 }
00043                 else
00044                 {                       
00045                         sizer->AddGrowableRow(1);
00046                         conceptSlider = new wxSlider(this, -1, actualV, minV, maxV, wxDefaultPosition, wxDefaultSize, wxSL_LEFT| wxSL_AUTOTICKS | wxSL_LABELS, wxDefaultValidator, wxString(aConceptName.c_str(),wxConvUTF8) );                 
00047                 }
00048                 sizer->Add(conceptSlider, 0, wxGROW |wxALL );           
00049                 createElements( sizer, elementsDef );
00050                 SetSizer( sizer );
00051 
00052                 Connect( conceptSlider->GetId(), wxEVT_SCROLL_THUMBTRACK, wxScrollEventHandler(wxConceptControl::onSliderTrack));//(wxObjectEventFunction) &wxConceptControl :: onSliderRelease ); 
00053                 Connect( conceptSlider->GetId(),  wxEVT_SCROLL_THUMBRELEASE, wxScrollEventHandler(wxConceptControl::onSliderRelease));//(wxObjectEventFunction) &wxConceptControl :: onSliderTrack );     
00054 
00055                 this->SetAutoLayout( true );
00056                 this->Layout(); 
00057         }
00058 
00059         wxConceptControl :: ~wxConceptControl()
00060         {
00061 
00062         }
00063 
00064         //------------------------------------------------------------------------------------------------------------
00065         // Methods for capturing events
00066         //------------------------------------------------------------------------------------------------------------
00067         
00068 
00069         void wxConceptControl ::onUpdateUICheckBox( wxCommandEvent& event )
00070         {
00071                 lastUpdate = (wxCheckBox * ) event.GetEventObject();
00072                 std::string groupId = std::string(lastUpdate->GetName().ToAscii());
00073                 event.SetClientData( (void *) atoi(groupId.c_str()) );
00074                 event.SetId( GetId() );
00075                 event.SetEventObject( this );
00076                 GetEventHandler()->ProcessEvent( event );
00077         }
00078         //------------------------------------------------------------------------------------------------------------
00079         void wxConceptControl :: onSliderTrack( wxScrollEvent& event )
00080         {
00081                 
00082         }
00083   
00084         //------------------------------------------------------------------------------------------------------------
00085 
00086         void wxConceptControl :: onSliderRelease( wxScrollEvent& event )
00087         {
00088         //      if( !resolutionChange )
00089                 sendEnvent( wxEVT_CONCEPT_RELEASE );            
00090         }
00091 
00092         
00093         //------------------------------------------------------------------------------------------------------------
00094         //  Methods for sending events
00095         //------------------------------------------------------------------------------------------------------------
00096 
00097         void wxConceptControl :: sendEnvent(WXTYPE theEventType)
00098         {
00099                 wxCommandEvent cevent( theEventType, GetId() );
00100                 cevent.SetEventObject( this );
00101                 GetEventHandler()->ProcessEvent( cevent );
00102         }
00103 
00104         //------------------------------------------------------------------------------------------------------------
00105         //  Attributes getters and setters
00106         //------------------------------------------------------------------------------------------------------------
00107 
00108         std::string wxConceptControl :: getName()
00109         {
00110                 return std::string(conceptName->GetLabel().ToAscii());  //wxString to std::string convertor ?
00111         }
00112 
00113         int wxConceptControl :: getMinShowedValue()
00114         {
00115                 return conceptSlider->GetMin();
00116         }
00117 
00118         int wxConceptControl :: getMaxShowedValue()
00119         {
00120                 return conceptSlider->GetMax();
00121         }
00122 
00123         void wxConceptControl :: setMinValue(int theMin)
00124         {
00125                 minValue = theMin;
00126         }
00127 
00128         int  wxConceptControl :: getMinValue()
00129         {
00130                 return minValue;
00131         }
00132 
00133         void wxConceptControl :: setMaxValue(int theMax)
00134         {
00135                 maxValue = theMax;
00136         }
00137 
00138         int  wxConceptControl :: getMaxValue()
00139         {
00140                 return maxValue;
00141         }
00142 
00143         void wxConceptControl :: setActualValue(int theActual)
00144         {
00145                 conceptSlider->SetValue(theActual);
00146         }
00147 
00148         int  wxConceptControl :: getActualValue()
00149         {
00150                 return conceptSlider->GetValue();
00151         }
00152 
00153         void wxConceptControl :: setShowLables(bool ifShowCondition)
00154         {
00155                 showLabels = ifShowCondition;
00156                 //TODO -----UPDATE the slider too!!
00157         }
00158 
00159         
00160 
00161         //------------------------------------------------------------------------------------------------------------
00162         //  Other functional methods
00163         //------------------------------------------------------------------------------------------------------------
00164 
00165         void wxConceptControl :: clearCheckAt( int position )
00166         {
00167                 checkBoxes[position]->SetValue( false );
00168         }
00169         //------------------------------------------------------------------------------------------------------------
00170         bool wxConceptControl :: getIfChecked( int position )
00171         {
00172                 return checkBoxes[position]->GetValue();
00173         }
00174         //------------------------------------------------------------------------------------------------------------
00175         void wxConceptControl :: setRange(int minShow, int maxShow)
00176         {
00177                 /*
00178                 if( minShow < minVal )
00179                         minShow = minVal;
00180                 if( maxShow > maxVal )
00181                         maxShow = maxVal;
00182                 */
00183                 conceptSlider->SetRange(minShow, maxShow);
00184                 int actual = getActualValue();
00185                 if( actual<minShow )
00186                         conceptSlider->SetValue( minShow );
00187                 else if( actual>maxShow )
00188                         conceptSlider->SetValue( maxShow );             
00189         }
00190         //------------------------------------------------------------------------------------------------------------
00191         void wxConceptControl :: reset()
00192         {
00193                 conceptSlider->SetRange(minValue, maxValue);
00194                 conceptSlider->SetValue(minValue);
00195                 int i, size = checkBoxes.size();
00196                 for(i=0; i<size; i++)
00197                 {
00198                         (checkBoxes[i])->SetValue( false );
00199                 }
00200                 size = textBoxes.size();
00201                 for ( i =0; i<size; i++)
00202                 {
00203                         textBoxes[i]->Clear();
00204                 }
00205         }
00206 
00207         //------------------------------------------------------------------------------------------------------------
00208         // Creational and initialization methods
00209         //------------------------------------------------------------------------------------------------------------
00210         void wxConceptControl :: createElements(wxSizer *sizer , std::string elementsDef )
00211         {
00212                 const char * elements = elementsDef.c_str();
00213                 int elementsNum = elementsDef.size();
00214                 wxFlexGridSizer* checkSizer = new wxFlexGridSizer (1, elementsNum, 5, 5);
00215                 int i,ckecks = 0;
00216                 for( i = 0;*elements!= 0; elements++)
00217                 {                       
00218                         char a = *elements;     
00219                         if( a == 67 || a == 99 )// Including C:67 or c:99 as a checkBox (ASCII)
00220                         {
00221                                 /*if(ckecks==0){
00222                                         createCheckBoxAndAddToSizer( checkSizer, "X", -1, ckecks);
00223                                 }else{
00224                                         createCheckBoxAndAddToSizer( checkSizer, "Y", -1, ckecks);
00225                                 }*/
00226                                 createCheckBoxAndAddToSizer( checkSizer, "X", -1, ckecks);
00227                                 ckecks++;
00228                         }
00229                         else if ( a == 84 || a==116 )// Including T:84 or t t:116 as textCtrl (ASCII)
00230                         {
00231 
00232                         }
00233                         i++;
00234                 }
00235                 _numCheckBox = ckecks;
00236                 sizer->Add(checkSizer, 0, wxGROW |wxALL );      
00237         }
00238 
00239         int wxConceptControl :: getNumCheckBox(){
00240                 return _numCheckBox;
00241         }
00242 
00243         //------------------------------------------------------------------------------------------------------------
00244         wxCheckBox * wxConceptControl :: createCheckBoxAndAddToSizer(wxSizer *sizer, std::string label, wxWindowID id,int groupID)
00245         {
00246                 //char buffer[33];
00247                 //itoa( groupID, buffer, 10);
00248 
00249                 std::string buffer;
00250                 
00251                 if(groupID == 0){
00252                         buffer = "0";
00253                 }else{
00254                         int k=groupID;
00255                         while (k > 0){
00256                                 char temp = k % 10 + 48;
00257                                 k = k / 10;
00258                                 buffer = temp + buffer; 
00259                         }
00260                 }
00261 
00262                 //wxCheckBox *checkbox = new wxCheckBox( this, -1, wxString(  label.c_str(), wxConvUTF8), wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator, wxString( buffer, wxConvUTF8) );
00263                 wxCheckBox *checkbox = new wxCheckBox( this, -1, wxString(  label.c_str(), wxConvUTF8), wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator, wxString( buffer.c_str(), wxConvUTF8) );
00264                 sizer->Add(checkbox, 0, wxLEFT | wxRIGHT, 5);
00265                 sizer->Add(0, 2, 0, wxGROW); 
00266                 checkBoxes.push_back( checkbox );
00267                 Connect( checkbox->GetId(), wxEVT_COMMAND_CHECKBOX_CLICKED, (wxObjectEventFunction) (wxCommandEventFunction) &wxConceptControl::onUpdateUICheckBox );
00268 
00269                 return checkbox;                
00270         }
00271 
00272         //------------------------------------------------------------------------------------------------------------
00273         /*wxCheckBox * wxConceptControl :: createCheckBoxAndAddToSizer(wxSizer *sizer, std::string label, wxWindowID id,int groupID)
00274         {
00275                 wxCheckBox *checkbox = new wxCheckBox(this, -1, wxString(  label.c_str(), wxConvUTF8));
00276                 sizer->Add(checkbox, 0, wxLEFT | wxRIGHT, 5);
00277                 sizer->Add(0, 2, 0, wxGROW);            
00278                 return checkbox;                
00279         }*/
00280         
00281    

Generated on Wed Jun 27 23:28:32 2012 for creaContours_lib by  doxygen 1.5.7.1