diff options
author | Seth Hitefield <sdhitefield@gmail.com> | 2015-04-01 15:03:30 -0700 |
---|---|---|
committer | Tom Rondeau <tom@trondeau.com> | 2015-04-02 13:27:53 -0700 |
commit | 14eb3cc5bf6ba94c120f5dceb3c715fe7f0a099c (patch) | |
tree | 0a2f86f0a2565704dfcaef0b515614ca17375076 /gr-qtgui/python/qtgui/range.py | |
parent | cde6a28977dc2affddb76b6f7f1ffff822581c46 (diff) |
qtgui: Replaced pyqwt range block with working pyqt version.
Diffstat (limited to 'gr-qtgui/python/qtgui/range.py')
-rwxr-xr-x | gr-qtgui/python/qtgui/range.py | 152 |
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) |