1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
|
//=============================================================================
// Awl
// Audio Widget Library
// $Id:$
//
// Copyright (C) 1999-2011 by Werner Schweer and others
//
// This program is free software; you can redistribute it and/or modify
// it under the terms of the GNU General Public License
// as published by the Free Software Foundation; version 2 of
// the License, or (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program; if not, write to the Free Software
// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
//=============================================================================
#ifndef __FLOATLABEL_H__
#define __FLOATLABEL_H__
#include <QLineEdit>
class QMouseEvent;
class QTimer;
class QWheelEvent;
namespace Awl {
//---------------------------------------------------------
// FloatEntry
//---------------------------------------------------------
class FloatEntry : public QLineEdit {
Q_OBJECT
Q_PROPERTY(int id READ id WRITE setId)
Q_PROPERTY(double minValue READ minValue WRITE setMinValue)
Q_PROPERTY(double maxValue READ maxValue WRITE setMaxValue)
Q_PROPERTY(QString specialText READ specialText WRITE setSpecialText)
Q_PROPERTY(QString suffix READ suffix WRITE setSuffix)
Q_PROPERTY(int precision READ precision WRITE setPrecision)
Q_PROPERTY(bool log READ log WRITE setLog)
int button;
int starty;
QTimer* timer;
double evx;
int timecount;
double _minValue, _maxValue;
QString _specialText; // text to show if value outside min,max
QString _suffix;
int _precision;
bool _log;
double calcIncrement() const;
virtual void wheelEvent(QWheelEvent*);
virtual void mousePressEvent(QMouseEvent*);
virtual void mouseMoveEvent(QMouseEvent*);
virtual void mouseDoubleClickEvent(QMouseEvent*);
virtual void mouseReleaseEvent(QMouseEvent*);
virtual void setSValue(const QString&);
virtual bool setString(double);
virtual void incValue(double);
virtual void decValue(double);
void contextMenuEvent(QContextMenuEvent*);
void updateValue();
protected:
int _id;
double _value;
virtual void valueChange();
private slots:
void repeat();
protected slots:
void endEdit();
public slots:
virtual void setValue(double);
signals:
void valueChanged(double, int);
public:
FloatEntry(QWidget*);
virtual QSize sizeHint() const;
virtual double value() const;
int id() const { return _id; }
void setId(int i) { _id = i; }
double minValue() const { return _minValue; }
double maxValue() const { return _maxValue; }
void setMinValue(double v) { _minValue = v; }
void setMinLogValue(double v);
void setMaxValue(double v) { _maxValue = v; }
void setMaxLogValue(double v);
void setRange(double a, double b) {
_minValue = a;
_maxValue = b;
}
void setLogRange(double a, double b) {
setMinLogValue(a);
setMaxLogValue(b);
}
int precision() const { return _precision; }
void setPrecision(int val);
QString specialText() const { return _specialText; }
void setSpecialText(const QString& s) {
_specialText = s;
update();
}
QString suffix() const { return _suffix; }
void setSuffix(const QString& s) { _suffix = s; }
bool log() const { return _log; }
void setLog(bool v) { _log = v; }
};
}
#endif
|