ParaView
ctkDoubleRangeSlider.h
Go to the documentation of this file.
1 /*=========================================================================
2 
3  Program: ParaView
4  Module: $RCSfile$
5 
6  Copyright (c) 2005,2006 Sandia Corporation, Kitware Inc.
7  All rights reserved.
8 
9  ParaView is a free software; you can redistribute it and/or modify it
10  under the terms of the ParaView license version 1.2.
11 
12  See License_v1.2.txt for the full ParaView license.
13  A copy of this license can be obtained by contacting
14  Kitware Inc.
15  28 Corporate Drive
16  Clifton Park, NY 12065
17  USA
18 
19 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
20 ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
21 LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
22 A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHORS OR
23 CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
24 EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
25 PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
26 PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
27 LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
28 NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
29 SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
30 
31 ========================================================================*/
32 /*=========================================================================
33 
34  Library: CTK
35 
36  Copyright (c) Kitware Inc.
37 
38  Licensed under the Apache License, Version 2.0 (the "License");
39  you may not use this file except in compliance with the License.
40  You may obtain a copy of the License at
41 
42  http://www.apache.org/licenses/LICENSE-2.0.txt
43 
44  Unless required by applicable law or agreed to in writing, software
45  distributed under the License is distributed on an "AS IS" BASIS,
46  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
47  See the License for the specific language governing permissions and
48  limitations under the License.
49 
50 =========================================================================*/
51 
52 #ifndef ctkDoubleRangeSlider_h
53 #define ctkDoubleRangeSlider_h
54 
55 // Qt includes
56 #include <QSlider>
57 #include <QWidget>
58 
59 // PQ includes
60 #include "pqWidgetsModule.h"
61 
62 class ctkRangeSlider;
63 class ctkDoubleRangeSliderPrivate;
64 
72 class PQWIDGETS_EXPORT ctkDoubleRangeSlider : public QWidget
73 {
74  Q_OBJECT
75  Q_PROPERTY(double minimum READ minimum WRITE setMinimum)
76  Q_PROPERTY(double maximum READ maximum WRITE setMaximum)
77  Q_PROPERTY(double singleStep READ singleStep WRITE setSingleStep)
78  Q_PROPERTY(double minimumValue READ minimumValue WRITE setMinimumValue)
79  Q_PROPERTY(double maximumValue READ maximumValue WRITE setMaximumValue)
80  Q_PROPERTY(double minimumPosition READ minimumPosition WRITE setMinimumPosition)
81  Q_PROPERTY(double maximumPosition READ maximumPosition WRITE setMaximumPosition)
82  Q_PROPERTY(bool tracking READ hasTracking WRITE setTracking)
83  Q_PROPERTY(Qt::Orientation orientation READ orientation WRITE setOrientation)
84  Q_PROPERTY(double tickInterval READ tickInterval WRITE setTickInterval)
85  Q_PROPERTY(QSlider::TickPosition tickPosition READ tickPosition WRITE setTickPosition)
86  Q_PROPERTY(bool symmetricMoves READ symmetricMoves WRITE setSymmetricMoves)
87 public:
88  // Superclass typedef
89  typedef QWidget Superclass;
90 
95  ctkDoubleRangeSlider(Qt::Orientation o, QWidget* par = 0);
96 
101  ctkDoubleRangeSlider(QWidget* par = 0);
102 
106  virtual ~ctkDoubleRangeSlider();
107 
114  void setSingleStep(double ss);
115  double singleStep() const;
116 
124  void setTickInterval(double ti);
125  double tickInterval() const;
126 
133  void setTickPosition(QSlider::TickPosition position);
134  QSlider::TickPosition tickPosition() const;
135 
143  double minimum() const;
144  void setMinimum(double min);
145 
153  double maximum() const;
154  void setMaximum(double max);
155 
161  void setRange(double min, double max);
162 
170  double minimumValue() const;
171 
179  double maximumValue() const;
180 
186  double minimumPosition() const;
187  void setMinimumPosition(double minPos);
188 
194  double maximumPosition() const;
195  void setMaximumPosition(double maxPos);
196 
202  void setPositions(double minPos, double maxPos);
203 
213  void setTracking(bool enable);
214  bool hasTracking() const;
215 
222  void triggerAction(QAbstractSlider::SliderAction action);
223 
229  Qt::Orientation orientation() const;
230  void setOrientation(Qt::Orientation orientation);
231 
237  bool symmetricMoves() const;
238  void setSymmetricMoves(bool symmetry);
239 
240 Q_SIGNALS:
246  void minimumValueChanged(double minVal);
247 
253  void maximumValueChanged(double maxVal);
254 
259  void valuesChanged(double minVal, double maxVal);
260 
268  void minimumPositionChanged(double minPos);
269 
277  void maximumPositionChanged(double maxPos);
278 
284  void positionsChanged(double minPos, double maxPos);
285 
291  void sliderPressed();
292 
298  void sliderReleased();
299 
307  void rangeChanged(double min, double max);
308 
309 public Q_SLOTS:
317  void setMinimumValue(double minVal);
318 
326  void setMaximumValue(double maxVal);
327 
332  void setValues(double minVal, double maxVal);
333 
334 protected Q_SLOTS:
335  void onValuesChanged(int min, int max);
336 
337  void onMinPosChanged(int value);
338  void onMaxPosChanged(int value);
339  void onPositionsChanged(int min, int max);
340  void onRangeChanged(int min, int max);
341 
342 protected:
343  ctkRangeSlider* slider() const;
347  void setSlider(ctkRangeSlider* slider);
348 
349 protected:
350  QScopedPointer<ctkDoubleRangeSliderPrivate> d_ptr;
351 
352 private:
353  Q_DECLARE_PRIVATE(ctkDoubleRangeSlider);
354  Q_DISABLE_COPY(ctkDoubleRangeSlider)
355 };
356 
357 #endif
A ctkRangeSlider is a slider that lets you input 2 values instead of one (see QSlider).
ctkDoubleRangeSlider is a slider that controls 2 numbers as double.