bbwx::SliderWidget Class Reference

#include <bbwxSlider.h>

Collaboration diagram for bbwx::SliderWidget:

Collaboration graph
[legend]

List of all members.

Public Member Functions

 SliderWidget (Slider *box, wxWindow *parent, int orientation, bool changeresolution, bool label, wxString title, int vmin, int vmax, int value, int track)
 ~SliderWidget ()
 Dtor.
void OnSliderTrack (wxScrollEvent &event)
void OnSliderRelease (wxScrollEvent &event)
 Called when the slider is released.
void OnResolutionOfSlider (wxScrollEvent &event)
int GetValue ()
void SetRange (int min, int max)
void RefreshLabels ()

Private Attributes

SlidermBox
wxSlider * mwxSlider
wxSlider * mResolutionOfSlider
int min
int max
int reactiveOnTrack
wxStaticText * label_vertical
wxStaticText * label_min
wxStaticText * label_max


Detailed Description

Definition at line 72 of file bbwxSlider.h.


Constructor & Destructor Documentation

bbwx::SliderWidget::SliderWidget ( Slider box,
wxWindow *  parent,
int  orientation,
bool  changeresolution,
bool  label,
wxString  title,
int  vmin,
int  vmax,
int  value,
int  track 
)

Ctor with the two first params the parent window and the creator box which must be passed to the WxBlackBoxWidget constructor. The other params initialize the widget

Definition at line 50 of file bbwxSlider.cxx.

References label_max, label_min, label_vertical, max, min, mResolutionOfSlider, mwxSlider, OnResolutionOfSlider(), OnSliderRelease(), OnSliderTrack(), and RefreshLabels().

00059     :  
00060     wxPanel( parent, -1, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL),
00061     mBox(box),
00062     min(vmin),
00063     max(vmax),
00064     reactiveOnTrack(reactiveontrack)
00065   {
00066     wxPanel * panel = this;
00067     
00068     label_min           = NULL;
00069     label_max           = NULL;
00070     label_vertical      = NULL;
00071     mResolutionOfSlider = NULL;
00072 
00073     int sizeX,sizeY;
00074     long wxlabels=0;
00075     long wxorientation=0;
00076     if (orientation==0) 
00077       {
00078         sizeX                   = 2;
00079         sizeY                   = 40;
00080         wxorientation   = wxSL_HORIZONTAL;
00081         if (labels==true)
00082           {
00083             wxlabels = wxSL_LABELS;
00084           }
00085       } 
00086     else 
00087       {
00088         sizeX                   = 20;
00089         sizeY                   = 2;
00090         wxorientation   = wxSL_VERTICAL;
00091       }
00092     
00093     //---------------------------------------------------------------------
00094     // 1) Creation of the components of the widget
00095     // Any top level sub-widget must have the panel returned by panel
00096     // for parent
00097     mwxSlider = new wxSlider( panel, 
00098                               -1, 0 , 0, 500 , 
00099                               wxDefaultPosition, 
00100                               wxSize(sizeX,sizeY), 
00101                               wxorientation  | wxlabels );
00102 
00103     //    mwxSlider->SetInitialSize(wxSize(sizeX,sizeY));
00104 
00105     //  mwxSlider->SetTickFreq(100,0);
00106     mwxSlider->SetRange(min,max);
00107     mwxSlider->SetValue(value);
00108 
00109     //    RefreshLabels();
00110 
00111     // Connecting events to callbacks
00112     Connect( mwxSlider->GetId(), 
00113              wxEVT_SCROLL_THUMBRELEASE, 
00114 
00115              (wxObjectEventFunction) 
00116              (void (wxPanel::*)(wxScrollEvent&))
00117              &SliderWidget::OnSliderRelease ); 
00118 
00119     Connect( mwxSlider->GetId(),  
00120              wxEVT_SCROLL_THUMBTRACK, 
00121 
00122              (wxObjectEventFunction) 
00123              (void (wxPanel::*)(wxScrollEvent&))
00124               &SliderWidget::OnSliderTrack ); 
00125     
00126     Connect( mwxSlider->GetId(),  
00127              wxEVT_SCROLL_CHANGED, 
00128 
00129              (wxObjectEventFunction) 
00130              (void (wxPanel::*)(wxScrollEvent&))
00131               &SliderWidget::OnSliderTrack );
00132                
00133     // If asked : creation of the other little slider which allows to change 
00134     // the resolution of the main slider
00135     if (changeresolution==true){
00136       // has panel for parent too
00137       mResolutionOfSlider = new wxSlider(panel,
00138                                          -1,5,1,10,
00139                                          wxDefaultPosition,
00140                                          wxSize(25,45),
00141                                          wxSL_VERTICAL | 
00142                                          wxSL_AUTOTICKS |
00143                                          wxSL_LEFT  );
00144    
00145 
00146       mResolutionOfSlider->SetRange(1,8);
00147       mResolutionOfSlider->SetValue(5);
00148       // Is wxEVT_COMMAND_SLIDER_UPDATED event 
00149       // is connected to the method OnResolutionOfSlider
00150       Connect(mResolutionOfSlider->GetId(),
00151               wxEVT_COMMAND_SLIDER_UPDATED,
00152               (wxObjectEventFunction) 
00153               (void (wxPanel::*)(wxScrollEvent&))
00154               &SliderWidget::OnResolutionOfSlider ); 
00155     }
00156     //---------------------------------------------------------------------
00157 
00158     //---------------------------------------------------------------------
00159     // 2) Insertion of the components in the window
00160     
00161     // We use a FlexGridSizer
00162     wxFlexGridSizer *sizer;
00163 
00164 
00165     if (orientation==0) 
00166       {
00167         // HORIZONTAL
00168         if (mResolutionOfSlider!=NULL) 
00169           {
00170             sizer       = new wxFlexGridSizer(2);
00171             if (title!=_T(""))
00172               {
00173                 sizer   -> Add( new wxStaticText(panel,-1, title ) ); 
00174                 sizer   -> Add( new wxStaticText(panel,-1, _T("") ) ); 
00175               }
00176           } 
00177         else 
00178           {
00179             sizer       = new wxFlexGridSizer(1);
00180             if (title!=_T(""))
00181               {
00182                 sizer   -> Add( new wxStaticText(panel,-1, title ) ); 
00183               }
00184           }
00185         sizer   -> Add( mwxSlider,1,wxGROW ); 
00186         sizer   -> AddGrowableCol(0);
00187         if (mResolutionOfSlider!=NULL) 
00188           {
00189             sizer       -> Add( mResolutionOfSlider ); 
00190           }
00191       } 
00192     else 
00193       {
00194         // VERTICAL 
00195         sizer   = new wxFlexGridSizer(1);
00196         if (labels==true)  // with lable
00197           {
00198             label_vertical = new wxStaticText(panel,-1,_T(""));
00199             label_min = new wxStaticText(panel,-1,_T(""));
00200             label_max = new wxStaticText(panel,-1,_T(""));
00201             if (title!=_T(""))
00202               {
00203                 sizer   -> Add( new wxStaticText(panel,-1, title ) );
00204                 sizer   -> AddGrowableRow(3);
00205               } 
00206             else 
00207               {
00208                 sizer   -> AddGrowableRow(2);
00209               }
00210             sizer       -> Add( label_vertical );
00211             sizer       -> Add( label_min );
00212             sizer       -> Add( mwxSlider,1,wxGROW );
00213             sizer       -> Add( label_max );
00214             if (mResolutionOfSlider!=NULL) 
00215               {
00216                 sizer   -> Add( mResolutionOfSlider ); 
00217               }
00218           } 
00219         else 
00220           {
00221             if (title!=_T(""))
00222               {
00223                 sizer   -> Add( new wxStaticText(panel,-1, title ) );
00224                 sizer   -> AddGrowableRow(1);
00225               } 
00226             else 
00227               {
00228                 sizer   -> AddGrowableRow(0);
00229               }
00230             sizer       -> Add( mwxSlider,1,wxGROW );
00231             if (mResolutionOfSlider!=NULL) 
00232               {
00233                 sizer   -> Add( mResolutionOfSlider ); 
00234               }
00235           }
00236       }
00237     // Initialize the labels 
00238     RefreshLabels();  
00239     // Insert the sizer in the main panel and refresh the layout
00240     panel->SetSizer(sizer);
00241   }

bbwx::SliderWidget::~SliderWidget (  ) 

Dtor.

Definition at line 246 of file bbwxSlider.cxx.

00247   {
00248   }


Member Function Documentation

void bbwx::SliderWidget::OnSliderTrack ( wxScrollEvent &  event  ) 

Events callbacks Called when the slider is moved

Definition at line 276 of file bbwxSlider.cxx.

References mBox, mwxSlider, reactiveOnTrack, and RefreshLabels().

Referenced by SliderWidget().

00277   {
00278     if(reactiveOnTrack)
00279     {
00280     // When user releases the slider 
00281     // we update the output of the box
00282     
00283     mBox->bbSetOutputOut( mwxSlider->GetValue() );
00284     mBox->bbSetInputIn( mwxSlider->GetValue() );
00285     // and signal that the output has changed
00286     mBox->bbSignalOutputModification("Out");    
00287     }
00288     RefreshLabels();
00289   }

void bbwx::SliderWidget::OnSliderRelease ( wxScrollEvent &  event  ) 

Called when the slider is released.

Definition at line 294 of file bbwxSlider.cxx.

References mBox, and mwxSlider.

Referenced by SliderWidget().

00295   {
00296     // When user releases the slider 
00297     // we update the output of the box
00298     mBox->bbSetOutputOut( mwxSlider->GetValue() );
00299     mBox->bbSetInputIn( mwxSlider->GetValue() );
00300     // and signal that the output has changed
00301     mBox->bbSignalOutputModification("Out");
00302   }

void bbwx::SliderWidget::OnResolutionOfSlider ( wxScrollEvent &  event  ) 

Called when the little slider which controls the resolution of the main slider is moved (if activated)

Definition at line 253 of file bbwxSlider.cxx.

References max, min, mResolutionOfSlider, mwxSlider, and RefreshLabels().

Referenced by SliderWidget().

00254   {
00255     int value = mwxSlider->GetValue();
00256     int delta = (int) (pow( 4 , mResolutionOfSlider->GetValue() ));
00257     int minTmp   = value - delta/2;
00258     int maxTmp   = value + delta/2;
00259     if (minTmp<min)
00260       {
00261         minTmp = min;
00262         //              maxTmp = delta;
00263       }
00264     if (maxTmp>max)
00265       {
00266         maxTmp = max;
00267       }
00268     mwxSlider->SetRange(minTmp,maxTmp);
00269     RefreshLabels();
00270   }

int bbwx::SliderWidget::GetValue (  )  [inline]

Definition at line 99 of file bbwxSlider.h.

References mwxSlider.

00099 { return mwxSlider->GetValue(); }

void bbwx::SliderWidget::SetRange ( int  min,
int  max 
)

Definition at line 330 of file bbwxSlider.cxx.

References mwxSlider, and RefreshLabels().

00331   {
00332     this->min = min;
00333     this->max = max;
00334     mwxSlider->SetRange(min,max);
00335     RefreshLabels();
00336   }

void bbwx::SliderWidget::RefreshLabels (  ) 

Definition at line 307 of file bbwxSlider.cxx.

References label_max, label_min, label_vertical, and mwxSlider.

Referenced by OnResolutionOfSlider(), OnSliderTrack(), SetRange(), and SliderWidget().

00308   {
00309     wxString strValue;
00310     if (label_vertical!=NULL)
00311       {
00312         strValue.Printf( _T("%d"), mwxSlider->GetValue() );
00313         label_vertical->SetLabel(strValue);
00314       }
00315     if (label_min!=NULL)
00316       {
00317         strValue.Printf( _T("%d"), mwxSlider->GetMin() );
00318         label_min->SetLabel(strValue);
00319       }
00320     if (label_max!=NULL)
00321       {
00322         strValue.Printf( _T("%d"), mwxSlider->GetMax() );
00323         label_max->SetLabel(strValue);
00324       }  
00325   }


Member Data Documentation

Definition at line 105 of file bbwxSlider.h.

Referenced by OnSliderRelease(), and OnSliderTrack().

wxSlider* bbwx::SliderWidget::mwxSlider [private]

Definition at line 107 of file bbwxSlider.h.

Referenced by OnResolutionOfSlider(), and SliderWidget().

int bbwx::SliderWidget::min [private]

Definition at line 108 of file bbwxSlider.h.

Referenced by OnResolutionOfSlider(), and SliderWidget().

int bbwx::SliderWidget::max [private]

Definition at line 109 of file bbwxSlider.h.

Referenced by OnResolutionOfSlider(), and SliderWidget().

Definition at line 110 of file bbwxSlider.h.

Referenced by OnSliderTrack().

wxStaticText* bbwx::SliderWidget::label_vertical [private]

Definition at line 111 of file bbwxSlider.h.

Referenced by RefreshLabels(), and SliderWidget().

wxStaticText* bbwx::SliderWidget::label_min [private]

Definition at line 112 of file bbwxSlider.h.

Referenced by RefreshLabels(), and SliderWidget().

wxStaticText* bbwx::SliderWidget::label_max [private]

Definition at line 113 of file bbwxSlider.h.

Referenced by RefreshLabels(), and SliderWidget().


The documentation for this class was generated from the following files:

Generated on Tue Oct 21 16:06:53 2008 for wx by  doxygen 1.5.6