From 14eb3cc5bf6ba94c120f5dceb3c715fe7f0a099c Mon Sep 17 00:00:00 2001
From: Seth Hitefield <sdhitefield@gmail.com>
Date: Wed, 1 Apr 2015 15:03:30 -0700
Subject: qtgui: Replaced pyqwt range block with working pyqt version.

---
 gr-qtgui/python/qtgui/range.py | 152 +++++++++++++++++++++++------------------
 1 file changed, 85 insertions(+), 67 deletions(-)

(limited to 'gr-qtgui/python/qtgui/range.py')

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)
-- 
cgit v1.2.3