1 #include "vvIntensityValueSlider.h"
3 //------------------------------------------------------------------------------
4 vvIntensityValueSlider::vvIntensityValueSlider(QWidget * parent, Qt::WindowFlags f)
5 :QWidget(parent,f), Ui::vvIntensityValueSlider()
10 mButtonPlus->setHidden(true);
11 mButtonMinus->setHidden(true);
13 // Connect signals & slots
14 connect(mSpinBox, SIGNAL(valueChanged(double)), this, SLOT(valueChangedFromSpinBox(double)));
15 connect(mSlider, SIGNAL(valueChanged(int)), this, SLOT(valueChangedFromSlider(int)));
16 connect(mButtonPlus, SIGNAL(clicked()), this, SLOT(SingleStepPlusClicked()));
17 connect(mButtonMinus, SIGNAL(clicked()), this, SLOT(SingleStepMinusClicked()));
19 //------------------------------------------------------------------------------
22 //------------------------------------------------------------------------------
23 vvIntensityValueSlider::~vvIntensityValueSlider() {
25 //------------------------------------------------------------------------------
28 //------------------------------------------------------------------------------
29 void vvIntensityValueSlider::SingleStepMinusClicked() {
30 mSpinBox->setSingleStep(mSpinBox->singleStep()*10);
31 mSpinBox->setDecimals(mSpinBox->decimals()-1);
33 //------------------------------------------------------------------------------
36 //------------------------------------------------------------------------------
37 void vvIntensityValueSlider::SetSingleStep(double step) {
38 mSpinBox->setSingleStep(step);
40 //------------------------------------------------------------------------------
43 //------------------------------------------------------------------------------
44 void vvIntensityValueSlider::SingleStepPlusClicked() {
45 mSpinBox->setSingleStep(mSpinBox->singleStep()/10);
46 mSpinBox->setDecimals(mSpinBox->decimals()+1);
48 //------------------------------------------------------------------------------
51 //------------------------------------------------------------------------------
52 void vvIntensityValueSlider::valueChangedFromSpinBox(double v) {
53 if (v == mValue) return;
54 mSpinBox->setValue(v);
55 v = mSpinBox->value(); // this is needed to 'round' value according to spinBox precision
58 vv = ((v-mMin)/mWidth)/mSliderFactor;
61 mSlider->setValue(vv);
65 //------------------------------------------------------------------------------
68 //------------------------------------------------------------------------------
69 void vvIntensityValueSlider::valueChangedFromSlider(int vv) {
72 v = ((double)vv*mSliderFactor)*mWidth+mMin;
78 if (mValue == v) return;
79 mSpinBox->setValue(v);
82 //------------------------------------------------------------------------------
85 //------------------------------------------------------------------------------
86 void vvIntensityValueSlider::SetText(QString t) {
89 //------------------------------------------------------------------------------
92 //------------------------------------------------------------------------------
93 void vvIntensityValueSlider::SetImage(vvImage * im) {
97 //------------------------------------------------------------------------------
100 //------------------------------------------------------------------------------
101 void vvIntensityValueSlider::SetValue(double v) {
103 mSpinBox->setValue(v);
105 //------------------------------------------------------------------------------
108 //------------------------------------------------------------------------------
109 void vvIntensityValueSlider::SetMaximum(double max) {
111 mSpinBox->setMaximum(max);
113 // If integer values : update slider max
114 if (mIsInteger == 1) {
115 mSlider->setMaximum(max);
118 double step = mWidth/1000.0;
119 mSpinBox->setSingleStep(step);
122 if (mValue > max) { SetValue(max); }
123 QString tip = QString("Min = %1 Max = %2").arg(mSpinBox->minimum()).arg(max);
126 //------------------------------------------------------------------------------
129 //------------------------------------------------------------------------------
130 void vvIntensityValueSlider::SetMinimum(double min) {
132 mSpinBox->setMinimum(min);
134 if (mIsInteger == 1) {
135 mSlider->setMinimum(min);
138 double step = mWidth/1000.0;
139 mSpinBox->setSingleStep(step);
143 if (mValue < min) { SetValue(min); }
144 QString tip = QString("Min = %1 Max = %2").arg(min).arg(mSpinBox->maximum());
147 //------------------------------------------------------------------------------
150 //------------------------------------------------------------------------------
151 void vvIntensityValueSlider::Update() {
153 mImage->GetFirstVTKImageData()->GetScalarRange(range);
156 double step = (mMax-mMin)/1000.0;
158 if (mImage->IsScalarTypeInteger()) {
160 mSpinBox->setSingleStep(1.0);
161 mSpinBox->setDecimals(0);
162 mSlider->setMaximum(mMax);
163 mSlider->setMinimum(mMin);
164 mSlider->setSingleStep(1);
170 mButtonPlus->setHidden(false);
171 mButtonMinus->setHidden(false);
172 mSpinBox->sizePolicy().setHorizontalPolicy(QSizePolicy::Expanding);
173 mSpinBox->setSingleStep(step);
174 mSpinBox->setDecimals(4);
175 mSlider->setMaximum(1000);
176 mSlider->setMinimum(0);
177 mSlider->setSingleStep(1);
178 mSliderFactor = 1.0/1000.0;
182 mSpinBox->setMaximum(mMax);
183 mSpinBox->setMinimum(mMin);
184 mSpinBox->setValue((mMax-mMin)/2.0+mMin);
186 QString tip = QString("Min = %1 Max = %2").arg(mMin).arg(mMax);
189 //------------------------------------------------------------------------------