//===== // Before editing this file, make sure it's a file of your own (i.e.: it wasn't generated from xml description; if so : your modifications will be lost) //===== #include "bbwtSlider.h" #include "bbwtPackage.h" #include "bbtkUtilities.h" namespace bbwt { class SliderWidget : public Wt::WContainerWidget { public: SliderWidget(Slider* box, Wt::WContainerWidget *parent, int orientation, bool changeresolution, Wt::WString title, int vmin, int vmax, int value, bool reactiveontrack); ~SliderWidget(); /// Events callbacks /// Called when the slider is moved void OnSliderTrack(); /// Called when the little slider which controls the resolution /// of the main slider is moved (if activated) void OnResolutionOfSlider(); // Accessors void SetValue(int v) { mwtSlider->setValue(v); } int GetValue() { return mwtSlider->value(); } int GetMin() {return min;} int GetMax() {return max;} void SetRange(int min, int max); void SetReactiveOnTrack(bool ok); private: Slider* mBox; Wt::WSlider *mwtSlider; Wt::WSlider *mResolutionOfSlider; int min; int max; bool reactiveOnTrack; }; //------------------------------------------------------------------------ //------------------------------------------------------------------------ //------------------------------------------------------------------------ //------------------------------------------------------------------------- SliderWidget::SliderWidget(Slider* box, Wt::WContainerWidget *parent, int orientation, bool changeresolution, Wt::WString title, int vmin, int vmax, int value, bool reactiveontrack) : Wt::WContainerWidget(parent), mBox(box), min(vmin), max(vmax), reactiveOnTrack(reactiveontrack) { std::cout<<"Creando SLIDER -- 0 "<resize(sizeX,sizeY); mwtSlider->setMinimum(min); mwtSlider->setMaximum(max); mwtSlider->setValue(value); mwtSlider->setTickPosition(Wt::WSlider::TicksBothSides); mwtSlider->setValueText(title); mwtSlider->valueChanged().connect(this,&SliderWidget::OnSliderTrack); mwtSlider->sliderMoved().connect(this,&SliderWidget::OnSliderTrack); // If asked : creation of the other little slider which allows to change // the resolution of the main slider std::cout<<"Creando SLIDER -- 3 "<setMinimum(1); mResolutionOfSlider->setMaximum(8); mResolutionOfSlider->setValue(5); mResolutionOfSlider->valueChanged().connect(this,&SliderWidget::OnResolutionOfSlider); mResolutionOfSlider->resize(5,10); if (orientation==0) { // HORIZONTAL layout->addWidget(mResolutionOfSlider,Wt::WBorderLayout::West); } else { // VERTICAL layout->addWidget(mResolutionOfSlider,Wt::WBorderLayout::South); } } //--------------------------------------------------------------------- //--------------------------------------------------------------------- // 2) Insertion of the components in the window std::cout<<"Creando SLIDER -- 4 "<addWidget(mwtSlider,Wt::WBorderLayout::Center); std::cout<<"Creando SLIDER -- 5 "<setLayout(layout); std::cout<<"Creando SLIDER -- 6 "<value(); int delta = (int) (pow((double) 4 ,(double) mResolutionOfSlider->value() )); int minTmp = value - delta/2; int maxTmp = value + delta/2; if (minTmpmax) { maxTmp = max; } mwtSlider->setMinimum(minTmp); mwtSlider->setMaximum(maxTmp); } //------------------------------------------------------------------------- //------------------------------------------------------------------------- void SliderWidget::OnSliderTrack() { // When user releases the slider // we update the output of the box if(reactiveOnTrack) { mBox->bbSetOutputOut( mwtSlider->value() ); mBox->bbSetInputIn( mwtSlider->value() ); } // and signal that the output has changed mBox->bbSignalOutputModification(std::string("Out")); } //------------------------------------------------------------------------- //------------------------------------------------------------------------- void SliderWidget::SetRange(int min, int max) { this->min = min; this->max = max; mwtSlider->setMinimum(min); mwtSlider->setMaximum(max); } //------------------------------------------------------------------------- void SliderWidget::SetReactiveOnTrack(bool ok) { reactiveOnTrack = ok; } BBTK_ADD_BLACK_BOX_TO_PACKAGE(wt,Slider); BBTK_BLACK_BOX_IMPLEMENTATION(Slider,bbtk::WtBlackBox); //===== // Before editing this file, make sure it's a file of your own (i.e.: it wasn't generated from xml description; if so : your modifications will be lost) //===== void Slider::Process() { bbtkDebugMessage("process",3, "Slider "<