summaryrefslogtreecommitdiff
path: root/gr-filter/python
diff options
context:
space:
mode:
authorJosh Morman <jmorman@gnuradio.org>2021-10-27 21:50:09 -0400
committermormj <34754695+mormj@users.noreply.github.com>2021-11-21 16:20:13 -0500
commit1fb203afd0dc3ab5681210c94bfbefe26c8e22f5 (patch)
treeab63c8c41d49e5cee1ec664fded0f7a194a35d03 /gr-filter/python
parent177e60e2726989718a138c84dbb4734ad7a3ff4e (diff)
filter: remove pyqwt and qt4 from filter_design
Signed-off-by: Josh Morman <jmorman@gnuradio.org>
Diffstat (limited to 'gr-filter/python')
-rw-r--r--gr-filter/python/filter/design/filter_design.py136
-rw-r--r--gr-filter/python/filter/gui/banditems.py42
2 files changed, 90 insertions, 88 deletions
diff --git a/gr-filter/python/filter/design/filter_design.py b/gr-filter/python/filter/design/filter_design.py
index 19ba6d5e87..f815ba1a83 100644
--- a/gr-filter/python/filter/design/filter_design.py
+++ b/gr-filter/python/filter/design/filter_design.py
@@ -84,9 +84,9 @@ except AttributeError:
def _fromUtf8(s): return s
# Gnuradio Filter design tool main window
-class gr_plot_filter(QtGui.QMainWindow):
+class gr_plot_filter(QtWidgets.QMainWindow):
def __init__(self, options, callback=None, restype=""):
- QtGui.QWidget.__init__(self, None)
+ QtWidgets.QWidget.__init__(self, None)
self.gui = Ui_MainWindow()
self.callback = callback
@@ -189,7 +189,8 @@ class gr_plot_filter(QtGui.QMainWindow):
self.gui.mtimpPush.clicked.connect(self.set_mtimpulse)
- self.gui.checkKeepcur.stateChanged['int'].connect(self.set_bufferplots)
+ # Not working as of 3.8
+ # self.gui.checkKeepcur.stateChanged['int'].connect(self.set_bufferplots)
self.gui.checkGrid.stateChanged['int'].connect(self.set_grid)
@@ -396,7 +397,7 @@ class gr_plot_filter(QtGui.QMainWindow):
self.bnfitems[0].attenChanged.connect(self.set_fatten)
# Populate the Band-diagram scene.
- self.scene = QtGui.QGraphicsScene()
+ self.scene = QtWidgets.QGraphicsScene()
self.scene.setSceneRect(0,0,250,250)
lightback = QtGui.qRgb(0xf8, 0xf8, 0xff)
backbrush = Qt.QBrush(Qt.QColor(lightback))
@@ -414,17 +415,17 @@ class gr_plot_filter(QtGui.QMainWindow):
self.cpicker2.mouseposChanged.connect(self.set_mstatusbar)
# Edit boxes for band-diagrams (Not required todate so may be remove?).
"""
- self.lpfpassEdit = QtGui.QLineEdit()
+ self.lpfpassEdit = QtWidgets.QLineEdit()
self.lpfpassEdit.setMaximumSize(QtCore.QSize(75,20))
self.lpfpassEdit.setText('Not set')
- self.lpfstartproxy = QtGui.QGraphicsProxyWidget()
+ self.lpfstartproxy = QtWidgets.QGraphicsProxyWidget()
self.lpfstartproxy.setWidget(self.lpfpassEdit)
self.lpfstartproxy.setPos(400,30)
- self.lpfstopEdit = QtGui.QLineEdit()
+ self.lpfstopEdit = QtWidgets.QLineEdit()
self.lpfstopEdit.setMaximumSize(QtCore.QSize(75,20))
self.lpfstopEdit.setText('Not set')
- self.lpfstopproxy = QtGui.QGraphicsProxyWidget()
+ self.lpfstopproxy = QtWidgets.QGraphicsProxyWidget()
self.lpfstopproxy.setWidget(self.lpfstopEdit)
self.lpfstopproxy.setPos(400,50)
self.lpfitems.append(self.lpfstartproxy)
@@ -781,9 +782,9 @@ class gr_plot_filter(QtGui.QMainWindow):
warnings.simplefilter("always")
self.design_iir()
if len(w):
- reply = QtGui.QMessageBox.information(self, "BadCoefficients",
+ reply = QtWidgets.QMessageBox.information(self, "BadCoefficients",
str(w[-1].message),
- QtGui.QMessageBox.Ok)
+ QtWidgets.QMessageBox.Ok)
# Do FIR design.
def design_fir(self, ftype, fs, gain, winstr):
@@ -909,8 +910,8 @@ class gr_plot_filter(QtGui.QMainWindow):
(self.b, self.a) = signal.iirfilter(order, besselparams, btype=iirbtype.replace(' ', '').lower(),
analog=sanalog[atype], ftype=iirft[iirftype], output='ba')
except Exception as e:
- reply = QtGui.QMessageBox.information(self, "IIR design error", e.args[0],
- QtGui.QMessageBox.Ok)
+ reply = QtWidgets.QMessageBox.information(self, "IIR design error", e.args[0],
+ QtWidgets.QMessageBox.Ok)
(self.z, self.p, self.k) = signal.tf2zpk(self.b, self.a)
@@ -921,8 +922,8 @@ class gr_plot_filter(QtGui.QMainWindow):
(self.b, self.a) = signal.iirdesign(params[0], params[1], params[2], params[3],
analog=sanalog[atype], ftype=iirft[iirftype], output='ba')
except Exception as e:
- reply = QtGui.QMessageBox.information(self, "IIR design error", e.args[0],
- QtGui.QMessageBox.Ok)
+ reply = QtWidgets.QMessageBox.information(self, "IIR design error", e.args[0],
+ QtWidgets.QMessageBox.Ok)
(self.z, self.p, self.k) = signal.tf2zpk(self.b, self.a)
# Create parameters.
@@ -1427,39 +1428,40 @@ class gr_plot_filter(QtGui.QMainWindow):
else:
self.gui.filterFrame.hide()
- # Saves and attach the plots for comparison.
- def set_bufferplots(self):
- if (self.gui.checkKeepcur.checkState() == 0 ):
- # Detach and delete all plots if unchecked.
- for c in self.bufferplots:
- c.detach()
- self.replot_all()
- self.bufferplots = []
- else:
- self.bufferplots = []
- # Iterate through tabgroup children and copy curves.
- for i in range(self.gui.tabGroup.count()):
- page = self.gui.tabGroup.widget(i)
- for item in page.children():
- if isinstance(item, Qwt.QwtPlot):
- # Change colours as both plots overlay.
- colours = [QtCore.Qt.darkYellow,QtCore.Qt.black]
- for c in item.itemList():
- if isinstance(c, Qwt.QwtPlotCurve):
- dup = Qwt.QwtPlotCurve()
- dpen = c.pen()
- dsym = c.symbol()
- dsym.setPen(Qt.QPen(colours[0]))
- dsym.setSize(Qt.QSize(6, 6))
- dpen.setColor(colours[0])
- del colours[0]
- dup.setPen(dpen)
- dup.setSymbol(dsym)
- dup.setRenderHint(Qwt.QwtPlotItem.RenderAntialiased)
- dup.setData([c.x(i) for i in range(c.dataSize())],
- [c.y(i) for i in range(c.dataSize())])
- self.bufferplots.append(dup)
- self.bufferplots[-1].attach(item)
+ # TODO: method still uses QWT - migrate to pyqtgraph
+ # # Saves and attach the plots for comparison.
+ # def set_bufferplots(self):
+ # if (self.gui.checkKeepcur.checkState() == 0 ):
+ # # Detach and delete all plots if unchecked.
+ # for c in self.bufferplots:
+ # c.detach()
+ # self.replot_all()
+ # self.bufferplots = []
+ # else:
+ # self.bufferplots = []
+ # # Iterate through tabgroup children and copy curves.
+ # for i in range(self.gui.tabGroup.count()):
+ # page = self.gui.tabGroup.widget(i)
+ # for item in page.children():
+ # if isinstance(item, Qwt.QwtPlot):
+ # # Change colours as both plots overlay.
+ # colours = [QtCore.Qt.darkYellow,QtCore.Qt.black]
+ # for c in item.itemList():
+ # if isinstance(c, Qwt.QwtPlotCurve):
+ # dup = Qwt.QwtPlotCurve()
+ # dpen = c.pen()
+ # dsym = c.symbol()
+ # dsym.setPen(Qt.QPen(colours[0]))
+ # dsym.setSize(Qt.QSize(6, 6))
+ # dpen.setColor(colours[0])
+ # del colours[0]
+ # dup.setPen(dpen)
+ # dup.setSymbol(dsym)
+ # dup.setRenderHint(Qwt.QwtPlotItem.RenderAntialiased)
+ # dup.setData([c.x(i) for i in range(c.dataSize())],
+ # [c.y(i) for i in range(c.dataSize())])
+ # self.bufferplots.append(dup)
+ # self.bufferplots[-1].attach(item)
def set_grid(self):
if (self.gui.checkGrid.checkState() == 0):
@@ -1620,20 +1622,20 @@ class gr_plot_filter(QtGui.QMainWindow):
else:
return False
- def detach_firstattached(self, plot):
- items = plot.itemList()
- plot.enableAxis(Qwt.QwtPlot.yRight)
- if len(items) > 2:
- yaxis=items[0].yAxis()
- items[2].setPen(items[0].pen())
- items[2].setYAxis(yaxis)
- items[0].detach()
- else:
- items[1].setYAxis(Qwt.QwtPlot.yRight)
- if plot is self.mplots['mFREQ']:
- items[1].setPen(QtGui.QPen(QtCore.Qt.red, 1, QtCore.Qt.SolidLine))
- self.set_actgrid()
-
+ # TODO: method still uses QWT - migrate to pyqtgraph
+ # def detach_firstattached(self, plot):
+ # items = plot.itemList()
+ # plot.enableAxis(Qwt.QwtPlot.yRight)
+ # if len(items) > 2:
+ # yaxis=items[0].yAxis()
+ # items[2].setPen(items[0].pen())
+ # items[2].setYAxis(yaxis)
+ # items[0].detach()
+ # else:
+ # items[1].setYAxis(Qwt.QwtPlot.yRight)
+ # if plot is self.mplots['mFREQ']:
+ # items[1].setPen(QtGui.QPen(QtCore.Qt.red, 1, QtCore.Qt.SolidLine))
+ # self.set_actgrid()
def update_fft(self, taps, params):
self.params = params
@@ -1968,14 +1970,14 @@ class gr_plot_filter(QtGui.QMainWindow):
self.gui.mfilterCoeff.setText(fcoeff)
def action_save_dialog(self):
- file_dialog_output = QtGui.QFileDialog.getSaveFileName(self, "Save CSV Filter File", ".", "")
+ file_dialog_output = QtWidgets.QFileDialog.getSaveFileName(self, "Save CSV Filter File", ".", "")
filename = file_dialog_output[0]
try:
handle = open(filename, "w")
except IOError:
- reply = QtGui.QMessageBox.information(self, 'File Name',
+ reply = QtWidgets.QMessageBox.information(self, 'File Name',
("Could not save to file: %s" % filename),
- QtGui.QMessageBox.Ok)
+ QtWidgets.QMessageBox.Ok)
return
csvhandle = csv.writer(handle, delimiter=",")
@@ -2005,7 +2007,7 @@ class gr_plot_filter(QtGui.QMainWindow):
self.replot_all()
def action_open_dialog(self):
- file_dialog_output = QtGui.QFileDialog.getOpenFileName(self, "Open CSV Filter File", ".", "")
+ file_dialog_output = QtWidgets.QFileDialog.getOpenFileName(self, "Open CSV Filter File", ".", "")
if(len(file_dialog_output) == 0):
return
# file_dialog_output returns tuple of (filename, file filter)
@@ -2013,9 +2015,9 @@ class gr_plot_filter(QtGui.QMainWindow):
try:
handle = open(filename, "r")
except IOError:
- reply = QtGui.QMessageBox.information(self, 'File Name',
+ reply = QtWidgets.QMessageBox.information(self, 'File Name',
("Could not open file: %s" % filename),
- QtGui.QMessageBox.Ok)
+ QtWidgets.QMessageBox.Ok)
return
csvhandle = csv.reader(handle, delimiter=",")
diff --git a/gr-filter/python/filter/gui/banditems.py b/gr-filter/python/filter/gui/banditems.py
index 4fc0071a77..1b1289a77b 100644
--- a/gr-filter/python/filter/gui/banditems.py
+++ b/gr-filter/python/filter/gui/banditems.py
@@ -8,18 +8,18 @@
try:
- from PyQt5 import Qt, QtCore, QtGui
+ from PyQt5 import Qt, QtCore, QtGui, QtWidgets
except ImportError:
raise SystemExit('Please install PyQt5 to run this script (http://www.riverbankcomputing.co.uk/software/pyqt/download)')
# Movable solid line for filter ideal-band diagram.
# Enable split to cut the line into two (for bpf).
-class filtermovlineItem(QtGui.QGraphicsObject):
+class filtermovlineItem(QtWidgets.QGraphicsObject):
attenChanged = QtCore.pyqtSignal(float)
def __init__(self, x1, y1, x2, y2, lower, upper, split=False, sx1=0, sy1=0, sx2=0, sy2=0):
- QtGui.QGraphicsObject.__init__(self)
+ QtWidgets.QGraphicsObject.__init__(self)
self.lower = lower
self.upper = upper
self.x1, self.y1 = x1, y1
@@ -43,7 +43,7 @@ class filtermovlineItem(QtGui.QGraphicsObject):
# Allow only vertical movement and emit signals.
def itemChange(self, change, value):
- if (change == QtGui.QGraphicsItem.ItemPositionChange):
+ if (change == QtWidgets.QGraphicsItem.ItemPositionChange):
newpos = value.toPointF()
div = 0
if newpos.y() < self.pos().y():
@@ -61,13 +61,13 @@ class filtermovlineItem(QtGui.QGraphicsObject):
if not(hit):
self.attenChanged.emit(div)
return QtCore.QPointF(self.pos().x(), newpos.y())
- return QtGui.QGraphicsItem.itemChange(self, change, value)
+ return QtWidgets.QGraphicsItem.itemChange(self, change, value)
# Static lines in lpf band diagram.
-class lpfsLines(QtGui.QGraphicsObject):
+class lpfsLines(QtWidgets.QGraphicsObject):
def __init__(self):
- QtGui.QGraphicsObject.__init__(self)
+ QtWidgets.QGraphicsObject.__init__(self)
def paint(self, painter, option, widget):
painter.setPen(QtGui.QPen(QtCore.Qt.darkGray, 2, QtCore.Qt.SolidLine))
@@ -92,9 +92,9 @@ class lpfsLines(QtGui.QGraphicsObject):
# Static lines in hpf band diagram.
-class hpfsLines(QtGui.QGraphicsObject):
+class hpfsLines(QtWidgets.QGraphicsObject):
def __init__(self):
- QtGui.QGraphicsObject.__init__(self)
+ QtWidgets.QGraphicsObject.__init__(self)
def paint(self, painter, option, widget):
painter.setPen(QtGui.QPen(QtCore.Qt.darkGray, 2, QtCore.Qt.SolidLine))
@@ -115,9 +115,9 @@ class hpfsLines(QtGui.QGraphicsObject):
# Static lines in bpf band diagram.
-class bpfsLines(QtGui.QGraphicsObject):
+class bpfsLines(QtWidgets.QGraphicsObject):
def __init__(self):
- QtGui.QGraphicsObject.__init__(self)
+ QtWidgets.QGraphicsObject.__init__(self)
def paint(self, painter, option, widget):
painter.setPen(QtGui.QPen(QtCore.Qt.darkGray, 2, QtCore.Qt.SolidLine))
@@ -143,9 +143,9 @@ class bpfsLines(QtGui.QGraphicsObject):
# Static lines in bnf band diagram.
-class bnfsLines(QtGui.QGraphicsObject):
+class bnfsLines(QtWidgets.QGraphicsObject):
def __init__(self):
- QtGui.QGraphicsObject.__init__(self)
+ QtWidgets.QGraphicsObject.__init__(self)
def paint(self, painter, option, widget):
painter.setPen(QtGui.QPen(QtCore.Qt.darkGray, 2, QtCore.Qt.SolidLine))
@@ -178,24 +178,24 @@ bnfItems = []
# lpfitems list.
lpfItems.append(filtermovlineItem(200, 175, 400, 175, 0, -60))
# lpfItems.append(filtermovlineItem(200, 145, 400, 145, 30, -30))
-lpfItems[0].setFlags(QtGui.QGraphicsItem.ItemIsSelectable | QtGui.QGraphicsItem.ItemIsMovable |
- QtGui.QGraphicsItem.ItemSendsGeometryChanges)
+lpfItems[0].setFlags(QtWidgets.QGraphicsItem.ItemIsSelectable | QtWidgets.QGraphicsItem.ItemIsMovable |
+ QtWidgets.QGraphicsItem.ItemSendsGeometryChanges)
lpfItems.append(lpfsLines())
# hpfitems list.
hpfItems.append(filtermovlineItem(6, 175, 150, 175, 0, -60))
-hpfItems[0].setFlags(QtGui.QGraphicsItem.ItemIsSelectable | QtGui.QGraphicsItem.ItemIsMovable |
- QtGui.QGraphicsItem.ItemSendsGeometryChanges)
+hpfItems[0].setFlags(QtWidgets.QGraphicsItem.ItemIsSelectable | QtWidgets.QGraphicsItem.ItemIsMovable |
+ QtWidgets.QGraphicsItem.ItemSendsGeometryChanges)
hpfItems.append(hpfsLines())
# bpfitems list.
bpfItems.append(filtermovlineItem(6, 175, 110, 175, 0, -60, True, 300, 175, 400, 175))
-bpfItems[0].setFlags(QtGui.QGraphicsItem.ItemIsSelectable | QtGui.QGraphicsItem.ItemIsMovable |
- QtGui.QGraphicsItem.ItemSendsGeometryChanges)
+bpfItems[0].setFlags(QtWidgets.QGraphicsItem.ItemIsSelectable | QtWidgets.QGraphicsItem.ItemIsMovable |
+ QtWidgets.QGraphicsItem.ItemSendsGeometryChanges)
bpfItems.append(bpfsLines())
# bnfitems list.
bnfItems.append(filtermovlineItem(155, 175, 255, 175, 0, -60))
-bnfItems[0].setFlags(QtGui.QGraphicsItem.ItemIsSelectable | QtGui.QGraphicsItem.ItemIsMovable |
- QtGui.QGraphicsItem.ItemSendsGeometryChanges)
+bnfItems[0].setFlags(QtWidgets.QGraphicsItem.ItemIsSelectable | QtWidgets.QGraphicsItem.ItemIsMovable |
+ QtWidgets.QGraphicsItem.ItemSendsGeometryChanges)
bnfItems.append(bnfsLines())