summaryrefslogtreecommitdiff
path: root/gr-qtgui/python/qtgui/range.py.cmakein
diff options
context:
space:
mode:
Diffstat (limited to 'gr-qtgui/python/qtgui/range.py.cmakein')
-rwxr-xr-xgr-qtgui/python/qtgui/range.py.cmakein81
1 files changed, 51 insertions, 30 deletions
diff --git a/gr-qtgui/python/qtgui/range.py.cmakein b/gr-qtgui/python/qtgui/range.py.cmakein
index 05f2f421e0..1fc85b8e4c 100755
--- a/gr-qtgui/python/qtgui/range.py.cmakein
+++ b/gr-qtgui/python/qtgui/range.py.cmakein
@@ -37,21 +37,22 @@ class Range(object):
self.precision = (precision + 2) if precision > 0 else 0
def find_nsteps(self):
- self.nsteps = (self.max + self.step - self.min)/self.step
+ self.nsteps = (self.max + self.step - self.min) / self.step
def demap_range(self, val):
if val > self.max:
val = self.max
if val < self.min:
val = self.min
- return ((val-self.min)/self.step)
+ return ((val - self.min) / self.step)
def map_range(self, val):
if val > self.nsteps:
val = self.max
if val < 0:
val = 0
- return (val*self.step+self.min)
+ return (val * self.step + self.min)
+
class QEngValidator(Qt.QValidator):
def __init__(self, minimum, maximum, parent):
@@ -63,9 +64,9 @@ class QEngValidator(Qt.QValidator):
def validate(self, s, pos):
try:
- val=eng_notation.str_to_num(s)
+ val = eng_notation.str_to_num(s)
except (IndexError, ValueError) as e:
- if re.match(self.re,s):
+ if re.match(self.re, s):
self.parent.setStyleSheet("background-color: yellow;")
return (Qt.QValidator.Intermediate, s, pos)
else:
@@ -83,6 +84,7 @@ class QEngValidator(Qt.QValidator):
def fixup(self, s):
pass
+
class RangeWidget(QtWidgets.QWidget):
def __init__(self, ranges, slot, label, style, rangeType=float, orientation=QtCore.Qt.Horizontal):
""" Creates the QT Range widget """
@@ -100,38 +102,45 @@ class RangeWidget(QtWidgets.QWidget):
self.notifyChanged = slot
layout = Qt.QHBoxLayout()
- layout.setContentsMargins( 0,0,0,0 )
+ layout.setContentsMargins(0, 0, 0, 0)
label = Qt.QLabel(label)
layout.addWidget(label)
if style == "dial":
- self.d_widget = self.Dial(self, self.range, self.notifyChanged, rangeType)
+ self.d_widget = self.Dial(
+ self, self.range, self.notifyChanged, rangeType)
elif style == "slider":
- self.d_widget = self.Slider(self, self.range, self.notifyChanged, rangeType, orientation)
+ self.d_widget = self.Slider(
+ self, self.range, self.notifyChanged, rangeType, orientation)
elif style == "counter":
# The counter widget can be directly wired to the notifyChanged slot
- self.d_widget = self.Counter(self, self.range, self.notifyChanged, rangeType)
+ self.d_widget = self.Counter(
+ self, self.range, self.notifyChanged, rangeType)
elif style == "eng":
# Text input with engineering notation support
- self.d_widget = self.Eng(self, self.range, self.notifyChanged, rangeType)
+ self.d_widget = self.Eng(
+ self, self.range, self.notifyChanged, rangeType)
elif style == "eng_slider":
- self.d_widget = self.EngSlider(self, self.range, self.notifyChanged, rangeType, orientation)
+ self.d_widget = self.EngSlider(
+ self, self.range, self.notifyChanged, rangeType, orientation)
else:
# The CounterSlider needs its own internal handlers before calling notifyChanged
- self.d_widget = self.CounterSlider(self, self.range, self.notifyChanged, rangeType, orientation)
+ self.d_widget = self.CounterSlider(
+ self, self.range, self.notifyChanged, rangeType, orientation)
layout.addWidget(self.d_widget)
self.setLayout(layout)
class Dial(QtWidgets.QDial):
""" Creates the range using a dial """
+
def __init__(self, parent, ranges, slot, rangeType=float):
QtWidgets.QDial.__init__(self, parent)
self.rangeType = rangeType
# Setup the dial
- self.setRange(0, int(ranges.nsteps-1))
+ self.setRange(0, int(ranges.nsteps - 1))
self.setSingleStep(1)
self.setNotchesVisible(True)
self.range = ranges
@@ -151,13 +160,14 @@ class RangeWidget(QtWidgets.QWidget):
class Slider(QtWidgets.QSlider):
""" Creates the range using a slider """
+
def __init__(self, parent, ranges, slot, rangeType=float, orientation=QtCore.Qt.Horizontal):
QtWidgets.QSlider.__init__(self, orientation, parent)
self.rangeType = rangeType
# Setup the slider
- #self.setFocusPolicy(QtCore.Qt.NoFocus)
+ # self.setFocusPolicy(QtCore.Qt.NoFocus)
self.setRange(0, int(ranges.nsteps - 1))
self.setTickPosition(2)
self.setSingleStep(1)
@@ -169,7 +179,7 @@ class RangeWidget(QtWidgets.QWidget):
self.setValue(temp)
if ranges.nsteps > ranges.min_length:
- interval = int(ranges.nsteps/ranges.min_length)
+ interval = int(ranges.nsteps / ranges.min_length)
self.setTickInterval(interval)
self.setPageStep(interval)
else:
@@ -188,9 +198,9 @@ class RangeWidget(QtWidgets.QWidget):
def mousePressEvent(self, event):
if((event.button() == QtCore.Qt.LeftButton)):
if self.orientation == QtCore.Qt.Horizontal:
- new = self.minimum() + ((self.maximum()-self.minimum()) * event.x()) / self.width()
+ new = self.minimum() + ((self.maximum() - self.minimum()) * event.x()) / self.width()
else:
- new = self.minimum() + ((self.maximum()-self.minimum()) * event.y()) / self.height()
+ new = self.minimum() + ((self.maximum() - self.minimum()) * event.y()) / self.height()
self.setValue(int(new))
event.accept()
# Use repaint rather than calling the super mousePressEvent.
@@ -199,15 +209,16 @@ class RangeWidget(QtWidgets.QWidget):
def mouseMoveEvent(self, event):
if self.orientation == QtCore.Qt.Horizontal:
- new = self.minimum() + ((self.maximum()-self.minimum()) * event.x()) / self.width()
+ new = self.minimum() + ((self.maximum() - self.minimum()) * event.x()) / self.width()
else:
- new = self.minimum() + ((self.maximum()-self.minimum()) * event.y()) / self.height()
+ new = self.minimum() + ((self.maximum() - self.minimum()) * event.y()) / self.height()
self.setValue(int(new))
event.accept()
QtWidgets.QSlider.repaint(self)
class Counter(QtWidgets.QDoubleSpinBox):
""" Creates the range using a counter """
+
def __init__(self, parent, ranges, slot, rangeType=float):
QtWidgets.QDoubleSpinBox.__init__(self, parent)
@@ -230,6 +241,7 @@ class RangeWidget(QtWidgets.QWidget):
class Eng(QtWidgets.QLineEdit):
""" Creates the range using a text input """
+
def __init__(self, parent, ranges, slot, rangeType=float):
QtWidgets.QLineEdit.__init__(self)
@@ -251,6 +263,7 @@ class RangeWidget(QtWidgets.QWidget):
class CounterSlider(QtWidgets.QWidget):
""" Creates the range using a counter and slider """
+
def __init__(self, parent, ranges, slot, rangeType=float, orientation=QtCore.Qt.Horizontal):
QtWidgets.QWidget.__init__(self, parent)
@@ -259,12 +272,14 @@ class RangeWidget(QtWidgets.QWidget):
# Slot to call in the parent
self.notifyChanged = slot
- self.slider = RangeWidget.Slider(parent, ranges, self.sliderChanged, rangeType, orientation)
- self.counter = RangeWidget.Counter(parent, ranges, self.counterChanged, rangeType)
+ self.slider = RangeWidget.Slider(
+ parent, ranges, self.sliderChanged, rangeType, orientation)
+ self.counter = RangeWidget.Counter(
+ parent, ranges, self.counterChanged, rangeType)
# Need another horizontal layout to wrap the other widgets.
layout = Qt.QHBoxLayout()
- layout.setContentsMargins( 0,0,0,0 )
+ layout.setContentsMargins(0, 0, 0, 0)
layout.setSpacing(10)
layout.addWidget(self.slider)
layout.addWidget(self.counter)
@@ -308,6 +323,7 @@ class RangeWidget(QtWidgets.QWidget):
class EngSlider(QtWidgets.QWidget):
""" Creates the range using a counter and slider """
+
def __init__(self, parent, ranges, slot, rangeType=float, orientation=QtCore.Qt.Horizontal):
QtWidgets.QWidget.__init__(self, parent)
@@ -317,8 +333,10 @@ class RangeWidget(QtWidgets.QWidget):
# Slot to call in the parent
self.notifyChanged = slot
- self.slider = RangeWidget.Slider(parent, ranges, self.sliderChanged, rangeType, orientation)
- self.counter = RangeWidget.Eng(parent, ranges, self.counterChanged, rangeType)
+ self.slider = RangeWidget.Slider(
+ parent, ranges, self.sliderChanged, rangeType, orientation)
+ self.counter = RangeWidget.Eng(
+ parent, ranges, self.counterChanged, rangeType)
# Need another horizontal layout to wrap the other widgets.
layout = Qt.QHBoxLayout()
@@ -338,7 +356,8 @@ class RangeWidget(QtWidgets.QWidget):
if not self.ignoreSlider:
# convert Value to eng string
self.ignoreCounter = True
- self.counter.setText(eng_notation.num_to_str(self.rangeType(value)))
+ self.counter.setText(
+ eng_notation.num_to_str(self.rangeType(value)))
self.notifyChanged(self.rangeType(value))
self.ignoreSlider = False
@@ -346,17 +365,17 @@ class RangeWidget(QtWidgets.QWidget):
""" Handles changing the slider when the counter is updated """
# Get the current slider value and check to see if the new value changes it
current = self.slider.value()
- print("counterChanged",value,"ign",self.ignoreCounter)
+ print("counterChanged", value, "ign", self.ignoreCounter)
new = int(round(self.range.demap_range(value), 0))
# If it needs to change, ignore the slider event
# Otherwise, the slider will cause the counter to round to the nearest tick
if current != new:
- self.ignoreSlider = True
- self.slider.setValue(new)
+ self.ignoreSlider = True
+ self.slider.setValue(new)
if not self.ignoreCounter:
- print("to notify",self.rangeType(value))
+ print("to notify", self.rangeType(value))
self.notifyChanged(self.rangeType(value))
self.ignoreCounter = False
@@ -369,6 +388,7 @@ class RangeWidget(QtWidgets.QWidget):
self.slider.setValue(new)
self.first = False
+
if __name__ == "__main__":
from PyQt5 import Qt
import sys
@@ -377,7 +397,8 @@ if __name__ == "__main__":
print("Value updated - " + str(frequency))
app = Qt.QApplication(sys.argv)
- widget = RangeWidget(Range(0, 100, 10, 1, 100), valueChanged, "Test", "counter_slider", int)
+ widget = RangeWidget(Range(0, 100, 10, 1, 100),
+ valueChanged, "Test", "counter_slider", int)
widget.show()
widget.setWindowTitle("Test Qt Range")