summaryrefslogtreecommitdiff
path: root/gr-qtgui/python/qtgui/range.py
diff options
context:
space:
mode:
authorSeth Hitefield <sdhitefield@gmail.com>2015-03-31 18:39:35 -0700
committerTom Rondeau <tom@trondeau.com>2015-04-02 13:27:48 -0700
commitcde6a28977dc2affddb76b6f7f1ffff822581c46 (patch)
tree18322d8d8aefd346dc30d3e5b428b871a8865caf /gr-qtgui/python/qtgui/range.py
parent3061e4797af6d308c1f65efca3444923e6beb4fe (diff)
qtgui: Initial removal of pyqwt. Replaced with pyqt4.
Diffstat (limited to 'gr-qtgui/python/qtgui/range.py')
-rwxr-xr-xgr-qtgui/python/qtgui/range.py105
1 files changed, 105 insertions, 0 deletions
diff --git a/gr-qtgui/python/qtgui/range.py b/gr-qtgui/python/qtgui/range.py
new file mode 100755
index 0000000000..1d19818692
--- /dev/null
+++ b/gr-qtgui/python/qtgui/range.py
@@ -0,0 +1,105 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+#
+# Copyright 2015 Free Software Foundation, Inc.
+#
+# This file is part of GNU Radio
+#
+# GNU Radio 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; either version 3, or (at your option)
+# any later version.
+#
+# GNU Radio 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 GNU Radio; see the file COPYING. If not, write to
+# the Free Software Foundation, Inc., 51 Franklin Street,
+# Boston, MA 02110-1301, USA.
+#
+
+from PyQt4 import Qt, QtCore, QtGui
+
+
+class Range(QtGui.QWidget):
+
+ def __init__(self, min, max, step, default, style):
+ QtGui.QWidget.__init__(self)
+
+ 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()
+
+
+ def setupCounterSlider(self):
+ """ Creates the range using a counter and 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)
+
+ 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)
+
+ self.setLayout(layout)
+
+ def setupCounter(self):
+ """ Creates the range using a counter """
+
+ 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):
+ """ 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)