itom 2.2.1
|
00001 /* ******************************************************************** 00002 itom software 00003 URL: http://www.uni-stuttgart.de/ito 00004 Copyright (C) 2016, Institut fuer Technische Optik (ITO), 00005 Universitaet Stuttgart, Germany 00006 00007 This file is part of itom and its software development toolkit (SDK). 00008 00009 itom is free software; you can redistribute it and/or modify it 00010 under the terms of the GNU Library General Public Licence as published by 00011 the Free Software Foundation; either version 2 of the Licence, or (at 00012 your option) any later version. 00013 00014 In addition, as a special exception, the Institut fuer Technische 00015 Optik (ITO) gives you certain additional rights. 00016 These rights are described in the ITO LGPL Exception version 1.0, 00017 which can be found in the file LGPL_EXCEPTION.txt in this package. 00018 00019 itom is distributed in the hope that it will be useful, but 00020 WITHOUT ANY WARRANTY; without even the implied warranty of 00021 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library 00022 General Public Licence for more details. 00023 00024 You should have received a copy of the GNU Library General Public License 00025 along with itom. If not, see <http://www.gnu.org/licenses/>. 00026 00027 This file is a port and modified version of the 00028 Common framework (http://www.commontk.org) 00029 *********************************************************************** */ 00030 00031 #ifndef DOUBLERANGEWIDGET_H 00032 #define DOUBLERANGEWIDGET_H 00033 00034 // Qt includes 00035 #include <QSlider> 00036 00037 00038 #include "commonWidgets.h" 00039 00040 class DoubleRangeSlider; 00041 class DoubleSpinBox; 00042 class DoubleRangeWidgetPrivate; 00043 class ValueProxy; 00044 00050 class ITOMWIDGETS_EXPORT DoubleRangeWidget : public QWidget 00051 { 00052 Q_OBJECT 00053 Q_PROPERTY(int decimals READ decimals WRITE setDecimals) 00054 Q_PROPERTY(double singleStep READ singleStep WRITE setSingleStep) 00055 Q_PROPERTY(double minimum READ minimum WRITE setMinimum) 00056 Q_PROPERTY(double maximum READ maximum WRITE setMaximum) 00057 Q_PROPERTY(double minimumValue READ minimumValue WRITE setMinimumValue) 00058 Q_PROPERTY(double maximumValue READ maximumValue WRITE setMaximumValue) 00059 Q_PROPERTY(QString prefix READ prefix WRITE setPrefix) 00060 Q_PROPERTY(QString suffix READ suffix WRITE setSuffix) 00061 Q_PROPERTY(double tickInterval READ tickInterval WRITE setTickInterval) 00062 Q_PROPERTY(bool autoSpinBoxWidth READ isAutoSpinBoxWidth WRITE setAutoSpinBoxWidth) 00063 Q_PROPERTY(Qt::Alignment spinBoxTextAlignment READ spinBoxTextAlignment WRITE setSpinBoxTextAlignment) 00064 Q_PROPERTY(Qt::Alignment spinBoxAlignment READ spinBoxAlignment WRITE setSpinBoxAlignment) 00065 Q_PROPERTY(bool tracking READ hasTracking WRITE setTracking) 00066 Q_PROPERTY(bool symmetricMoves READ symmetricMoves WRITE setSymmetricMoves) 00067 00068 public: 00070 typedef QWidget Superclass; 00071 00075 explicit DoubleRangeWidget(QWidget* parent = 0); 00076 00078 virtual ~DoubleRangeWidget(); 00079 00086 virtual double minimum()const; 00087 virtual void setMinimum(double minimum); 00088 00095 virtual double maximum()const; 00096 virtual void setMaximum(double maximum); 00099 virtual void setRange(double min, double max); 00100 virtual void range(double minimumAndMaximum[2])const; 00101 00106 virtual double minimumValue()const; 00107 00112 virtual double maximumValue()const; 00113 00117 virtual void values(double &minValue, double &maxValue)const; 00118 00124 virtual double singleStep()const; 00125 virtual void setSingleStep(double step); 00126 00129 virtual int decimals()const; 00130 00135 virtual QString prefix()const; 00136 virtual void setPrefix(const QString& prefix); 00137 00142 virtual QString suffix()const; 00143 virtual void setSuffix(const QString& suffix); 00144 00150 virtual double tickInterval()const; 00151 virtual void setTickInterval(double ti); 00152 00157 virtual void setSpinBoxAlignment(Qt::Alignment alignment); 00158 virtual Qt::Alignment spinBoxAlignment()const; 00159 00164 virtual void setSpinBoxTextAlignment(Qt::Alignment alignment); 00165 virtual Qt::Alignment spinBoxTextAlignment()const; 00166 00173 virtual void setTracking(bool enable); 00174 virtual bool hasTracking()const; 00175 00180 // RangeWidget siblings. 00181 virtual bool isAutoSpinBoxWidth()const; 00182 virtual void setAutoSpinBoxWidth(bool autoWidth); 00183 00187 virtual bool symmetricMoves()const; 00188 virtual void setSymmetricMoves(bool symmetry); 00189 00192 virtual DoubleRangeSlider* slider()const; 00195 virtual DoubleSpinBox* minimumSpinBox()const; 00198 virtual DoubleSpinBox* maximumSpinBox()const; 00199 00202 virtual void setValueProxy(ValueProxy* proxy); 00203 virtual ValueProxy* valueProxy() const; 00204 00205 public Q_SLOTS: 00208 virtual void reset(); 00209 virtual void setMinimumValue(double value); 00210 virtual void setMaximumValue(double value); 00213 virtual void setValues(double minValue, double maxValue); 00214 00217 virtual void setDecimals(int decimals); 00218 00219 Q_SIGNALS: 00222 //void sliderMoved(double position); 00223 void minimumValueChanged(double value); 00224 void minimumValueIsChanging(double value); 00225 void maximumValueChanged(double value); 00226 void maximumValueIsChanging(double value); 00227 void valuesChanged(double minValue, double maxValue); 00228 void rangeChanged(double min, double max); 00229 00230 protected Q_SLOTS: 00231 virtual void startChanging(); 00232 virtual void stopChanging(); 00233 virtual void changeValues(double newMinValue, double newMaxValue); 00234 virtual void changeMinimumValue(double value); 00235 virtual void changeMaximumValue(double value); 00237 virtual void setSliderValues(); 00238 virtual void setMinimumToMaximumSpinBox(double minimum); 00239 virtual void setMaximumToMinimumSpinBox(double maximum); 00240 virtual void onSliderRangeChanged(double min, double max); 00241 00242 virtual void onValueProxyAboutToBeModified(); 00243 virtual void onValueProxyModified(); 00244 00245 protected: 00246 virtual bool eventFilter(QObject *obj, QEvent *event); 00247 00249 virtual void setSlider(DoubleRangeSlider* slider); 00250 00251 protected: 00252 QScopedPointer<DoubleRangeWidgetPrivate> d_ptr; 00253 00254 private: 00255 Q_DECLARE_PRIVATE(DoubleRangeWidget); 00256 Q_DISABLE_COPY(DoubleRangeWidget); 00257 00258 }; 00259 00260 #endif