summaryrefslogtreecommitdiff
path: root/gr-qtgui/python/qtgui/range.py
diff options
context:
space:
mode:
authorSeth Hitefield <sdhitefield@gmail.com>2015-04-01 15:03:30 -0700
committerTom Rondeau <tom@trondeau.com>2015-04-02 13:27:53 -0700
commit14eb3cc5bf6ba94c120f5dceb3c715fe7f0a099c (patch)
tree0a2f86f0a2565704dfcaef0b515614ca17375076 /gr-qtgui/python/qtgui/range.py
parentcde6a28977dc2affddb76b6f7f1ffff822581c46 (diff)
qtgui: Replaced pyqwt range block with working pyqt version.
Diffstat (limited to 'gr-qtgui/python/qtgui/range.py')
-rwxr-xr-xgr-qtgui/python/qtgui/range.py152
1 files changed, 85 insertions, 67 deletions
diff --git a/gr-qtgui/python/qtgui/range.py b/gr-qtgui/python/qtgui/range.py
index 1d19818692..7a647bd622 100755
--- a/gr-qtgui/python/qtgui/range.py
+++ b/gr-qtgui/python/qtgui/range.py
@@ -23,83 +23,101 @@
from PyQt4 import Qt, QtCore, QtGui
-
-class Range(QtGui.QWidget):
-
- def __init__(self, min, max, step, default, style):
- QtGui.QWidget.__init__(self)
-
+class Range(object):
+ def __init__(self, min, max, step, default):
self.min = min
self.max = max
self.step = step
self.default = default
- if style == "dial":
- self.setupDial()
- elif style == "slider":
- self.setupSlider()
- elif style == "counter":
- self.setupCounter()
- elif style == "counter_slider":
- self.setupCounterSlider()
-
+class RangeWidget(QtGui.QWidget):
+ def __init__(self, range, slot, label, style):
+ """ Creates the QT Range widget """
+ QtGui.QWidget.__init__(self)
- def setupCounterSlider(self):
- """ Creates the range using a counter and slider """
+ self.range = range
layout = Qt.QHBoxLayout()
- slider = QtGui.QSlider(QtCore.Qt.Horizontal, self)
- slider.setFocusPolicy(QtCore.Qt.NoFocus)
- slider.setRange(self.min, self.max)
- slider.setPageStep(self.step)
- slider.setSingleStep(self.step)
- slider.setTracking(False)
- slider.setInvertedControls(True)
- layout.addWidget(slider)
-
- counter = QtGui.QDoubleSpinBox(self)
- counter.setRange(self.min, self.max)
- counter.setSingleStep(self.step)
- counter.setDecimals(0)
- layout.addWidget(counter)
-
- # Wire the events to each other
- counter.valueChanged.connect(slider.setValue)
- slider.valueChanged.connect(counter.setValue)
+ label = Qt.QLabel(label)
+ layout.addWidget(label)
- self.setLayout(layout)
-
- def setupCounter(self):
- """ Creates the range using a counter """
+ if style == "dial":
+ layout.addWidget(self.Dial(self, range, slot))
+ elif style == "slider":
+ layout.addWidget(self.Slider(self, range, slot))
+ elif style == "counter":
+ layout.addWidget(self.Counter(self, range, slot))
+ elif style == "counter_slider":
+ layout.addWidget(self.CounterSlider(self, range, slot))
+ else:
+ layout.addWidget(self.CounterSlider(self, range, slot))
- layout = Qt.QHBoxLayout()
- counter = QtGui.QDoubleSpinBox(self)
- counter.setRange(self.min, self.max)
- counter.setSingleStep(self.step)
- counter.setDecimals(0)
- layout.addWidget(counter)
self.setLayout(layout)
- def setupSlider(self):
+ class Dial(QtGui.QDial):
+ """ Creates the range using a dial """
+ def __init__(self, parent, range, slot):
+ QtGui.QDial.__init__(self, parent)
+ self.setRange(range.min, range.max)
+ self.setSingleStep(range.step)
+ self.setNotchesVisible(True)
+ self.setValue(range.default)
+ self.valueChanged.connect(slot)
+
+ class Slider(QtGui.QSlider):
""" Creates the range using a slider """
-
- layout = Qt.QHBoxLayout()
- slider = QtGui.QSlider(QtCore.Qt.Horizontal, self)
- slider.setFocusPolicy(QtCore.Qt.NoFocus)
- slider.setRange(self.min, self.max)
- slider.setPageStep(self.step)
- slider.setSingleStep(self.step)
- slider.setTracking(False)
- slider.setInvertedControls(True)
- layout.addWidget(slider)
- self.setLayout(layout)
-
- def init_dial(self):
- layout = Qt.QHBoxLayout()
- dial = QtGui.QDial(self)
- dial.setRange(min, max)
- dial.setSingleStep(step)
- dial.setNotchesVisible(True)
- dial.setValue(init_value)
- layout.addWidget(dial)
- self.setLayout(layout)
+ def __init__(self, parent, range, slot):
+ QtGui.QSlider.__init__(self, QtCore.Qt.Horizontal, parent)
+ self.setFocusPolicy(QtCore.Qt.NoFocus)
+ self.setRange(range.min, range.max)
+ self.setValue(range.default)
+ self.setPageStep(range.step)
+ self.setSingleStep(range.step)
+ self.setTracking(False)
+ self.setInvertedControls(True)
+ self.valueChanged.connect(slot)
+
+ class Counter(QtGui.QDoubleSpinBox):
+ """ Creates the range using a counter """
+ def __init__(self, parent, range, slot):
+ QtGui.QDoubleSpinBox.__init__(self, parent)
+ self.setRange(range.min, range.max)
+ self.setValue(range.default)
+ self.setSingleStep(range.step)
+ self.setDecimals(0)
+ self.valueChanged.connect(slot)
+
+ class CounterSlider(QtGui.QWidget):
+ """ Creates the range using a counter and slider """
+ def __init__(self, parent, range, slot):
+ QtGui.QWidget.__init__(self, parent)
+
+ # Need another horizontal layout
+ layout = Qt.QHBoxLayout()
+
+ # Create a slider with the top-level widget as the parent
+ slider = QtGui.QSlider(QtCore.Qt.Horizontal, self)
+ slider.setFocusPolicy(QtCore.Qt.NoFocus)
+ slider.setRange(range.min, range.max)
+ slider.setValue(range.default)
+ slider.setPageStep(range.step)
+ slider.setSingleStep(range.step)
+ slider.setTracking(False)
+ slider.setInvertedControls(True)
+ layout.addWidget(slider)
+
+ # Setup the counter
+ counter = QtGui.QDoubleSpinBox(self)
+ counter.setRange(range.min, range.max)
+ counter.setValue(range.default)
+ counter.setSingleStep(range.step)
+ counter.setDecimals(0)
+ layout.addWidget(counter)
+
+ # Wire the events to each other
+ counter.valueChanged.connect(slider.setValue)
+ slider.valueChanged.connect(counter.setValue)
+ counter.valueChanged.connect(slot)
+ slider.valueChanged.connect(slot)
+
+ self.setLayout(layout)