#include <bbwxSlider.h>
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 | |
Slider * | mBox |
wxSlider * | mwxSlider |
wxSlider * | mResolutionOfSlider |
int | min |
int | max |
int | reactiveOnTrack |
wxStaticText * | label_vertical |
wxStaticText * | label_min |
wxStaticText * | label_max |
Definition at line 72 of file bbwxSlider.h.
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 | ( | ) |
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 }
Slider* bbwx::SliderWidget::mBox [private] |
wxSlider* bbwx::SliderWidget::mwxSlider [private] |
Definition at line 106 of file bbwxSlider.h.
Referenced by GetValue(), OnResolutionOfSlider(), OnSliderRelease(), OnSliderTrack(), RefreshLabels(), SetRange(), and SliderWidget().
wxSlider* bbwx::SliderWidget::mResolutionOfSlider [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().
int bbwx::SliderWidget::reactiveOnTrack [private] |
wxStaticText* bbwx::SliderWidget::label_vertical [private] |
wxStaticText* bbwx::SliderWidget::label_min [private] |
wxStaticText* bbwx::SliderWidget::label_max [private] |