From 1367dce9a8c0d1e9c780fc6b58ed098ae54c5e4647d8e1b8f5507dc13df7d961 Mon Sep 17 00:00:00 2001 From: Wojciech Kazubski Date: Fri, 20 Sep 2019 11:59:51 +0000 Subject: [PATCH] OBS-URL: https://build.opensuse.org/package/show/hardware:sdr/gnuradio?expand=0&rev=55 --- ...fixed-examples-for-Qt5-compatibility.patch | 4737 +++++++++++++++++ 1 file changed, 4737 insertions(+) create mode 100644 qt5-maint-0006-qtgui-fixed-examples-for-Qt5-compatibility.patch diff --git a/qt5-maint-0006-qtgui-fixed-examples-for-Qt5-compatibility.patch b/qt5-maint-0006-qtgui-fixed-examples-for-Qt5-compatibility.patch new file mode 100644 index 0000000..4ba103d --- /dev/null +++ b/qt5-maint-0006-qtgui-fixed-examples-for-Qt5-compatibility.patch @@ -0,0 +1,4737 @@ +From 8abc28b44c65bf710235be7d1528c5ad92f53e53 Mon Sep 17 00:00:00 2001 +From: Tom Rondeau +Date: Tue, 13 Oct 2015 18:47:32 -0400 +Subject: [PATCH 06/22] qtgui: fixed examples for Qt5 compatibility. + +--- + gr-qtgui/examples/pyqt_const_c.py | 62 +- + gr-qtgui/examples/pyqt_example_c.py | 59 +- + gr-qtgui/examples/pyqt_example_f.py | 59 +- + gr-qtgui/examples/pyqt_freq_c.py | 59 +- + gr-qtgui/examples/pyqt_freq_f.py | 60 +- + gr-qtgui/examples/pyqt_histogram_f.py | 73 +- + gr-qtgui/examples/pyqt_time_c.py | 66 +- + gr-qtgui/examples/pyqt_time_f.py | 67 +- + gr-qtgui/examples/pyqt_time_raster_b.py | 19 +- + gr-qtgui/examples/pyqt_time_raster_f.py | 19 +- + gr-qtgui/examples/pyqt_waterfall_c.py | 59 +- + gr-qtgui/examples/pyqt_waterfall_f.py | 62 +- + gr-qtgui/examples/qtgui_tags_viewing.grc | 2399 +++++++++++++++++++++++------- + 13 files changed, 2164 insertions(+), 899 deletions(-) + +diff --git a/gr-qtgui/examples/pyqt_const_c.py b/gr-qtgui/examples/pyqt_const_c.py +index 3a43bf9a92..0bb6c20d59 100755 +--- a/gr-qtgui/examples/pyqt_const_c.py ++++ b/gr-qtgui/examples/pyqt_const_c.py +@@ -1,6 +1,6 @@ + #!/usr/bin/env python + # +-# Copyright 2011,2012 Free Software Foundation, Inc. ++# Copyright 2011,2012,2015 Free Software Foundation, Inc. + # + # This file is part of GNU Radio + # +@@ -26,10 +26,10 @@ import sys + + try: + from gnuradio import qtgui +- from PyQt4 import QtGui, QtCore ++ from PyQt5 import QtWidgets, Qt + import sip + except ImportError: +- sys.stderr.write("Error: Program requires PyQt4 and gr-qtgui.\n") ++ sys.stderr.write("Error: Program requires PyQt5 and gr-qtgui.\n") + sys.exit(1) + + try: +@@ -44,71 +44,65 @@ except ImportError: + sys.stderr.write("Error: Program requires gr-channels.\n") + sys.exit(1) + +-class dialog_box(QtGui.QWidget): ++class dialog_box(QtWidgets.QWidget): + def __init__(self, display, control): +- QtGui.QWidget.__init__(self, None) ++ QtWidgets.QWidget.__init__(self, None) + self.setWindowTitle('PyQt Test GUI') + +- self.boxlayout = QtGui.QBoxLayout(QtGui.QBoxLayout.LeftToRight, self) ++ self.boxlayout = QtWidgets.QBoxLayout(QtWidgets.QBoxLayout.LeftToRight, self) + self.boxlayout.addWidget(display, 1) + self.boxlayout.addWidget(control) + + self.resize(800, 500) + +-class control_box(QtGui.QWidget): ++class control_box(QtWidgets.QWidget): + def __init__(self, parent=None): +- QtGui.QWidget.__init__(self, parent) ++ QtWidgets.QWidget.__init__(self, parent) + self.setWindowTitle('Control Panel') + + self.setToolTip('Control the signals') +- QtGui.QToolTip.setFont(QtGui.QFont('OldEnglish', 10)) ++ QtWidgets.QToolTip.setFont(Qt.QFont('OldEnglish', 10)) + +- self.layout = QtGui.QFormLayout(self) ++ self.layout = QtWidgets.QFormLayout(self) + + # Control the first signal +- self.freq1Edit = QtGui.QLineEdit(self) ++ self.freq1Edit = QtWidgets.QLineEdit(self) + self.freq1Edit.setMinimumWidth(100) + self.layout.addRow("Signal 1 Frequency:", self.freq1Edit) +- self.connect(self.freq1Edit, QtCore.SIGNAL("editingFinished()"), +- self.freq1EditText) ++ self.freq1Edit.editingFinished.connect(self.freq1EditText) + +- self.amp1Edit = QtGui.QLineEdit(self) ++ self.amp1Edit = QtWidgets.QLineEdit(self) + self.amp1Edit.setMinimumWidth(100) + self.layout.addRow("Signal 1 Amplitude:", self.amp1Edit) +- self.connect(self.amp1Edit, QtCore.SIGNAL("editingFinished()"), +- self.amp1EditText) ++ self.amp1Edit.editingFinished.connect(self.amp1EditText) + + + # Control the second signal +- self.freq2Edit = QtGui.QLineEdit(self) ++ self.freq2Edit = QtWidgets.QLineEdit(self) + self.freq2Edit.setMinimumWidth(100) + self.layout.addRow("Signal 2 Frequency:", self.freq2Edit) +- self.connect(self.freq2Edit, QtCore.SIGNAL("editingFinished()"), +- self.freq2EditText) ++ self.freq2Edit.editingFinished.connect(self.freq2EditText) + + +- self.amp2Edit = QtGui.QLineEdit(self) ++ self.amp2Edit = QtWidgets.QLineEdit(self) + self.amp2Edit.setMinimumWidth(100) + self.layout.addRow("Signal 2 Amplitude:", self.amp2Edit) +- self.connect(self.amp2Edit, QtCore.SIGNAL("editingFinished()"), +- self.amp2EditText) ++ self.amp2Edit.editingFinished.connect(self.amp2EditText) + +- self.quit = QtGui.QPushButton('Close', self) ++ self.quit = QtWidgets.QPushButton('Close', self) + self.quit.setMinimumWidth(100) ++ self.quit.clicked.connect(QtWidgets.qApp.quit) + self.layout.addWidget(self.quit) + +- self.connect(self.quit, QtCore.SIGNAL('clicked()'), +- QtGui.qApp, QtCore.SLOT('quit()')) +- + def attach_signal1(self, signal): + self.signal1 = signal +- self.freq1Edit.setText(QtCore.QString("%1").arg(self.signal1.frequency())) +- self.amp1Edit.setText(QtCore.QString("%1").arg(self.signal1.amplitude())) ++ self.freq1Edit.setText("{0}".format(self.signal1.frequency())) ++ self.amp1Edit.setText("{0}".format(self.signal1.amplitude())) + + def attach_signal2(self, signal): + self.signal2 = signal +- self.freq2Edit.setText(QtCore.QString("%1").arg(self.signal2.frequency())) +- self.amp2Edit.setText(QtCore.QString("%1").arg(self.signal2.amplitude())) ++ self.freq2Edit.setText("{0}".format(self.signal2.frequency())) ++ self.amp2Edit.setText("{0}".format(self.signal2.amplitude())) + + def freq1EditText(self): + try: +@@ -150,7 +144,7 @@ class my_top_block(gr.top_block): + + npts = 2048 + +- self.qapp = QtGui.QApplication(sys.argv) ++ self.qapp = QtWidgets.QApplication(sys.argv) + + src1 = analog.sig_source_c(Rs, analog.GR_SIN_WAVE, f1, 0.5, 0) + src2 = analog.sig_source_c(Rs, analog.GR_SIN_WAVE, f2, 0.5, 0) +@@ -158,6 +152,7 @@ class my_top_block(gr.top_block): + channel = channels.channel_model(0.001) + thr = blocks.throttle(gr.sizeof_gr_complex, 100*npts) + self.snk1 = qtgui.const_sink_c(npts, "Constellation Example", 1) ++ self.snk1.disable_legend() + + self.connect(src1, (src,0)) + self.connect(src2, (src,1)) +@@ -171,8 +166,8 @@ class my_top_block(gr.top_block): + pyQt = self.snk1.pyqwidget() + + # Wrap the pointer as a PyQt SIP object +- # This can now be manipulated as a PyQt4.QtGui.QWidget +- pyWin = sip.wrapinstance(pyQt, QtGui.QWidget) ++ # This can now be manipulated as a PyQt5.QtWidgets.QWidget ++ pyWin = sip.wrapinstance(pyQt, QtWidgets.QWidget) + + self.main_box = dialog_box(pyWin, self.ctrl_win) + self.main_box.show() +@@ -182,4 +177,3 @@ if __name__ == "__main__": + tb.start() + tb.qapp.exec_() + tb.stop() +- +diff --git a/gr-qtgui/examples/pyqt_example_c.py b/gr-qtgui/examples/pyqt_example_c.py +index 1bf61d949d..89ca7b2820 100755 +--- a/gr-qtgui/examples/pyqt_example_c.py ++++ b/gr-qtgui/examples/pyqt_example_c.py +@@ -1,6 +1,6 @@ + #!/usr/bin/env python + # +-# Copyright 2011,2012 Free Software Foundation, Inc. ++# Copyright 2011,2012,2015 Free Software Foundation, Inc. + # + # This file is part of GNU Radio + # +@@ -26,10 +26,10 @@ import sys + + try: + from gnuradio import qtgui +- from PyQt4 import QtGui, QtCore ++ from PyQt5 import QtWidgets, Qt + import sip + except ImportError: +- sys.stderr.write("Error: Program requires PyQt4 and gr-qtgui.\n") ++ sys.stderr.write("Error: Program requires PyQt5 and gr-qtgui.\n") + sys.exit(1) + + try: +@@ -44,71 +44,66 @@ except ImportError: + sys.stderr.write("Error: Program requires gr-channels.\n") + sys.exit(1) + +-class dialog_box(QtGui.QWidget): ++class dialog_box(QtWidgets.QWidget): + def __init__(self, display, control): +- QtGui.QWidget.__init__(self, None) ++ QtWidgets.QWidget.__init__(self, None) + self.setWindowTitle('PyQt Test GUI') + +- self.boxlayout = QtGui.QBoxLayout(QtGui.QBoxLayout.LeftToRight, self) ++ self.boxlayout = QtWidgets.QBoxLayout(QtWidgets.QBoxLayout.LeftToRight, self) + self.boxlayout.addWidget(display, 1) + self.boxlayout.addWidget(control) + + self.resize(800, 500) + +-class control_box(QtGui.QWidget): ++class control_box(QtWidgets.QWidget): + def __init__(self, parent=None): +- QtGui.QWidget.__init__(self, parent) ++ QtWidgets.QWidget.__init__(self, parent) + self.setWindowTitle('Control Panel') + + self.setToolTip('Control the signals') +- QtGui.QToolTip.setFont(QtGui.QFont('OldEnglish', 10)) ++ QtWidgets.QToolTip.setFont(Qt.QFont('OldEnglish', 10)) + +- self.layout = QtGui.QFormLayout(self) ++ self.layout = QtWidgets.QFormLayout(self) + + # Control the first signal +- self.freq1Edit = QtGui.QLineEdit(self) ++ self.freq1Edit = QtWidgets.QLineEdit(self) + self.freq1Edit.setMinimumWidth(100) + self.layout.addRow("Signal 1 Frequency:", self.freq1Edit) +- self.connect(self.freq1Edit, QtCore.SIGNAL("editingFinished()"), +- self.freq1EditText) ++ self.freq1Edit.editingFinished.connect(self.freq1EditText) + +- self.amp1Edit = QtGui.QLineEdit(self) ++ self.amp1Edit = QtWidgets.QLineEdit(self) + self.amp1Edit.setMinimumWidth(100) + self.layout.addRow("Signal 1 Amplitude:", self.amp1Edit) +- self.connect(self.amp1Edit, QtCore.SIGNAL("editingFinished()"), +- self.amp1EditText) ++ self.amp1Edit.editingFinished.connect(self.amp1EditText) + + + # Control the second signal +- self.freq2Edit = QtGui.QLineEdit(self) ++ self.freq2Edit = QtWidgets.QLineEdit(self) + self.freq2Edit.setMinimumWidth(100) + self.layout.addRow("Signal 2 Frequency:", self.freq2Edit) +- self.connect(self.freq2Edit, QtCore.SIGNAL("editingFinished()"), +- self.freq2EditText) ++ self.freq2Edit.editingFinished.connect(self.freq2EditText) + + +- self.amp2Edit = QtGui.QLineEdit(self) ++ self.amp2Edit = QtWidgets.QLineEdit(self) + self.amp2Edit.setMinimumWidth(100) + self.layout.addRow("Signal 2 Amplitude:", self.amp2Edit) +- self.connect(self.amp2Edit, QtCore.SIGNAL("editingFinished()"), +- self.amp2EditText) ++ self.amp2Edit.editingFinished.connect(self.amp2EditText) + +- self.quit = QtGui.QPushButton('Close', self) ++ self.quit = QtWidgets.QPushButton('Close', self) + self.quit.setMinimumWidth(100) + self.layout.addWidget(self.quit) + +- self.connect(self.quit, QtCore.SIGNAL('clicked()'), +- QtGui.qApp, QtCore.SLOT('quit()')) ++ self.quit.clicked.connect(QtWidgets.qApp.quit) + + def attach_signal1(self, signal): + self.signal1 = signal +- self.freq1Edit.setText(QtCore.QString("%1").arg(self.signal1.frequency())) +- self.amp1Edit.setText(QtCore.QString("%1").arg(self.signal1.amplitude())) ++ self.freq1Edit.setText(("{0}").format(self.signal1.frequency())) ++ self.amp1Edit.setText(("{0}").format(self.signal1.amplitude())) + + def attach_signal2(self, signal): + self.signal2 = signal +- self.freq2Edit.setText(QtCore.QString("%1").arg(self.signal2.frequency())) +- self.amp2Edit.setText(QtCore.QString("%1").arg(self.signal2.amplitude())) ++ self.freq2Edit.setText(("{0}").format(self.signal2.frequency())) ++ self.amp2Edit.setText(("{0}").format(self.signal2.amplitude())) + + def freq1EditText(self): + try: +@@ -150,7 +145,7 @@ class my_top_block(gr.top_block): + + fftsize = 2048 + +- self.qapp = QtGui.QApplication(sys.argv) ++ self.qapp = QtWidgets.QApplication(sys.argv) + ss = open(gr.prefix() + '/share/gnuradio/themes/dark.qss') + sstext = ss.read() + ss.close() +@@ -178,8 +173,8 @@ class my_top_block(gr.top_block): + pyQt = self.snk1.pyqwidget() + + # Wrap the pointer as a PyQt SIP object +- # This can now be manipulated as a PyQt4.QtGui.QWidget +- pyWin = sip.wrapinstance(pyQt, QtGui.QWidget) ++ # This can now be manipulated as a PyQt5.QtWidgets.QWidget ++ pyWin = sip.wrapinstance(pyQt, QtWidgets.QWidget) + + self.main_box = dialog_box(pyWin, self.ctrl_win) + +diff --git a/gr-qtgui/examples/pyqt_example_f.py b/gr-qtgui/examples/pyqt_example_f.py +index 5bd582d1e1..77a7478aa2 100755 +--- a/gr-qtgui/examples/pyqt_example_f.py ++++ b/gr-qtgui/examples/pyqt_example_f.py +@@ -1,6 +1,6 @@ + #!/usr/bin/env python + # +-# Copyright 2011,2012 Free Software Foundation, Inc. ++# Copyright 2011,2012,2015 Free Software Foundation, Inc. + # + # This file is part of GNU Radio + # +@@ -26,10 +26,10 @@ import sys + + try: + from gnuradio import qtgui +- from PyQt4 import QtGui, QtCore ++ from PyQt5 import QtWidgets, Qt + import sip + except ImportError: +- sys.stderr.write("Error: Program requires PyQt4 and gr-qtgui.\n") ++ sys.stderr.write("Error: Program requires PyQt5 and gr-qtgui.\n") + sys.exit(1) + + try: +@@ -38,71 +38,66 @@ except ImportError: + sys.stderr.write("Error: Program requires gr-analog.\n") + sys.exit(1) + +-class dialog_box(QtGui.QWidget): ++class dialog_box(QtWidgets.QWidget): + def __init__(self, display, control): +- QtGui.QWidget.__init__(self, None) ++ QtWidgets.QWidget.__init__(self, None) + self.setWindowTitle('PyQt Test GUI') + +- self.boxlayout = QtGui.QBoxLayout(QtGui.QBoxLayout.LeftToRight, self) ++ self.boxlayout = QtWidgets.QBoxLayout(QtWidgets.QBoxLayout.LeftToRight, self) + self.boxlayout.addWidget(display, 1) + self.boxlayout.addWidget(control) + + self.resize(800, 500) + +-class control_box(QtGui.QWidget): ++class control_box(QtWidgets.QWidget): + def __init__(self, parent=None): +- QtGui.QWidget.__init__(self, parent) ++ QtWidgets.QWidget.__init__(self, parent) + self.setWindowTitle('Control Panel') + + self.setToolTip('Control the signals') +- QtGui.QToolTip.setFont(QtGui.QFont('OldEnglish', 10)) ++ QtWidgets.QToolTip.setFont(Qt.QFont('OldEnglish', 10)) + +- self.layout = QtGui.QFormLayout(self) ++ self.layout = QtWidgets.QFormLayout(self) + + # Control the first signal +- self.freq1Edit = QtGui.QLineEdit(self) ++ self.freq1Edit = QtWidgets.QLineEdit(self) + self.freq1Edit.setMinimumWidth(100) + self.layout.addRow("Signal 1 Frequency:", self.freq1Edit) +- self.connect(self.freq1Edit, QtCore.SIGNAL("editingFinished()"), +- self.freq1EditText) ++ self.freq1Edit.editingFinished.connect(self.freq1EditText) + +- self.amp1Edit = QtGui.QLineEdit(self) ++ self.amp1Edit = QtWidgets.QLineEdit(self) + self.amp1Edit.setMinimumWidth(100) + self.layout.addRow("Signal 1 Amplitude:", self.amp1Edit) +- self.connect(self.amp1Edit, QtCore.SIGNAL("editingFinished()"), +- self.amp1EditText) ++ self.amp1Edit.editingFinished.connect(self.amp1EditText) + + + # Control the second signal +- self.freq2Edit = QtGui.QLineEdit(self) ++ self.freq2Edit = QtWidgets.QLineEdit(self) + self.freq2Edit.setMinimumWidth(100) + self.layout.addRow("Signal 2 Frequency:", self.freq2Edit) +- self.connect(self.freq2Edit, QtCore.SIGNAL("editingFinished()"), +- self.freq2EditText) ++ self.freq2Edit.editingFinished.connect(self.freq2EditText) + + +- self.amp2Edit = QtGui.QLineEdit(self) ++ self.amp2Edit = QtWidgets.QLineEdit(self) + self.amp2Edit.setMinimumWidth(100) + self.layout.addRow("Signal 2 Amplitude:", self.amp2Edit) +- self.connect(self.amp2Edit, QtCore.SIGNAL("editingFinished()"), +- self.amp2EditText) ++ self.amp2Edit.editingFinished.connect(self.amp2EditText) + +- self.quit = QtGui.QPushButton('Close', self) ++ self.quit = QtWidgets.QPushButton('Close', self) + self.quit.setMinimumWidth(100) + self.layout.addWidget(self.quit) + +- self.connect(self.quit, QtCore.SIGNAL('clicked()'), +- QtGui.qApp, QtCore.SLOT('quit()')) ++ self.quit.clicked.connect(QtWidgets.qApp.quit) + + def attach_signal1(self, signal): + self.signal1 = signal +- self.freq1Edit.setText(QtCore.QString("%1").arg(self.signal1.frequency())) +- self.amp1Edit.setText(QtCore.QString("%1").arg(self.signal1.amplitude())) ++ self.freq1Edit.setText(("{0}").format(self.signal1.frequency())) ++ self.amp1Edit.setText(("{0}").format(self.signal1.amplitude())) + + def attach_signal2(self, signal): + self.signal2 = signal +- self.freq2Edit.setText(QtCore.QString("%1").arg(self.signal2.frequency())) +- self.amp2Edit.setText(QtCore.QString("%1").arg(self.signal2.amplitude())) ++ self.freq2Edit.setText(("{0}").format(self.signal2.frequency())) ++ self.amp2Edit.setText(("{0}").format(self.signal2.amplitude())) + + def freq1EditText(self): + try: +@@ -144,7 +139,7 @@ class my_top_block(gr.top_block): + + fftsize = 2048 + +- self.qapp = QtGui.QApplication(sys.argv) ++ self.qapp = QtWidgets.QApplication(sys.argv) + + src1 = analog.sig_source_f(Rs, analog.GR_SIN_WAVE, f1, 0.1, 0) + src2 = analog.sig_source_f(Rs, analog.GR_SIN_WAVE, f2, 0.1, 0) +@@ -171,8 +166,8 @@ class my_top_block(gr.top_block): + pyQt = self.snk1.pyqwidget() + + # Wrap the pointer as a PyQt SIP object +- # This can now be manipulated as a PyQt4.QtGui.QWidget +- pyWin = sip.wrapinstance(pyQt, QtGui.QWidget) ++ # This can now be manipulated as a PyQt5.QtWidgets.QWidget ++ pyWin = sip.wrapinstance(pyQt, QtWidgets.QWidget) + + self.main_box = dialog_box(pyWin, self.ctrl_win) + +diff --git a/gr-qtgui/examples/pyqt_freq_c.py b/gr-qtgui/examples/pyqt_freq_c.py +index c53feb93d4..954a078df8 100755 +--- a/gr-qtgui/examples/pyqt_freq_c.py ++++ b/gr-qtgui/examples/pyqt_freq_c.py +@@ -1,6 +1,6 @@ + #!/usr/bin/env python + # +-# Copyright 2012 Free Software Foundation, Inc. ++# Copyright 2012,2015 Free Software Foundation, Inc. + # + # This file is part of GNU Radio + # +@@ -26,10 +26,10 @@ import sys + + try: + from gnuradio import qtgui +- from PyQt4 import QtGui, QtCore ++ from PyQt5 import QtWidgets, Qt + import sip + except ImportError: +- sys.stderr.write("Error: Program requires PyQt4 and gr-qtgui.\n") ++ sys.stderr.write("Error: Program requires PyQt5 and gr-qtgui.\n") + sys.exit(1) + + try: +@@ -44,71 +44,66 @@ except ImportError: + sys.stderr.write("Error: Program requires gr-channels.\n") + sys.exit(1) + +-class dialog_box(QtGui.QWidget): ++class dialog_box(QtWidgets.QWidget): + def __init__(self, display, control): +- QtGui.QWidget.__init__(self, None) ++ QtWidgets.QWidget.__init__(self, None) + self.setWindowTitle('PyQt Test GUI') + +- self.boxlayout = QtGui.QBoxLayout(QtGui.QBoxLayout.LeftToRight, self) ++ self.boxlayout = QtWidgets.QBoxLayout(QtWidgets.QBoxLayout.LeftToRight, self) + self.boxlayout.addWidget(display, 1) + self.boxlayout.addWidget(control) + + self.resize(800, 500) + +-class control_box(QtGui.QWidget): ++class control_box(QtWidgets.QWidget): + def __init__(self, parent=None): +- QtGui.QWidget.__init__(self, parent) ++ QtWidgets.QWidget.__init__(self, parent) + self.setWindowTitle('Control Panel') + + self.setToolTip('Control the signals') +- QtGui.QToolTip.setFont(QtGui.QFont('OldEnglish', 10)) ++ QtWidgets.QToolTip.setFont(Qt.QFont('OldEnglish', 10)) + +- self.layout = QtGui.QFormLayout(self) ++ self.layout = QtWidgets.QFormLayout(self) + + # Control the first signal +- self.freq1Edit = QtGui.QLineEdit(self) ++ self.freq1Edit = QtWidgets.QLineEdit(self) + self.freq1Edit.setMinimumWidth(100) + self.layout.addRow("Signal 1 Frequency:", self.freq1Edit) +- self.connect(self.freq1Edit, QtCore.SIGNAL("editingFinished()"), +- self.freq1EditText) ++ self.freq1Edit.editingFinished.connect(self.freq1EditText) + +- self.amp1Edit = QtGui.QLineEdit(self) ++ self.amp1Edit = QtWidgets.QLineEdit(self) + self.amp1Edit.setMinimumWidth(100) + self.layout.addRow("Signal 1 Amplitude:", self.amp1Edit) +- self.connect(self.amp1Edit, QtCore.SIGNAL("editingFinished()"), +- self.amp1EditText) ++ self.amp1Edit.editingFinished.connect(self.amp1EditText) + + + # Control the second signal +- self.freq2Edit = QtGui.QLineEdit(self) ++ self.freq2Edit = QtWidgets.QLineEdit(self) + self.freq2Edit.setMinimumWidth(100) + self.layout.addRow("Signal 2 Frequency:", self.freq2Edit) +- self.connect(self.freq2Edit, QtCore.SIGNAL("editingFinished()"), +- self.freq2EditText) ++ self.freq2Edit.editingFinished.connect(self.freq2EditText) + + +- self.amp2Edit = QtGui.QLineEdit(self) ++ self.amp2Edit = QtWidgets.QLineEdit(self) + self.amp2Edit.setMinimumWidth(100) + self.layout.addRow("Signal 2 Amplitude:", self.amp2Edit) +- self.connect(self.amp2Edit, QtCore.SIGNAL("editingFinished()"), +- self.amp2EditText) ++ self.amp2Edit.editingFinished.connect(self.amp2EditText) + +- self.quit = QtGui.QPushButton('Close', self) ++ self.quit = QtWidgets.QPushButton('Close', self) + self.quit.setMinimumWidth(100) + self.layout.addWidget(self.quit) + +- self.connect(self.quit, QtCore.SIGNAL('clicked()'), +- QtGui.qApp, QtCore.SLOT('quit()')) ++ self.quit.clicked.connect(QtWidgets.qApp.quit) + + def attach_signal1(self, signal): + self.signal1 = signal +- self.freq1Edit.setText(QtCore.QString("%1").arg(self.signal1.frequency())) +- self.amp1Edit.setText(QtCore.QString("%1").arg(self.signal1.amplitude())) ++ self.freq1Edit.setText(("{0}").format(self.signal1.frequency())) ++ self.amp1Edit.setText(("{0}").format(self.signal1.amplitude())) + + def attach_signal2(self, signal): + self.signal2 = signal +- self.freq2Edit.setText(QtCore.QString("%1").arg(self.signal2.frequency())) +- self.amp2Edit.setText(QtCore.QString("%1").arg(self.signal2.amplitude())) ++ self.freq2Edit.setText(("{0}").format(self.signal2.frequency())) ++ self.amp2Edit.setText(("{0}").format(self.signal2.amplitude())) + + def freq1EditText(self): + try: +@@ -150,7 +145,7 @@ class my_top_block(gr.top_block): + + npts = 2048 + +- self.qapp = QtGui.QApplication(sys.argv) ++ self.qapp = QtWidgets.QApplication(sys.argv) + ss = open(gr.prefix() + '/share/gnuradio/themes/dark.qss') + sstext = ss.read() + ss.close() +@@ -179,8 +174,8 @@ class my_top_block(gr.top_block): + pyQt = self.snk1.pyqwidget() + + # Wrap the pointer as a PyQt SIP object +- # This can now be manipulated as a PyQt4.QtGui.QWidget +- pyWin = sip.wrapinstance(pyQt, QtGui.QWidget) ++ # This can now be manipulated as a PyQt5.QtWidgets.QWidget ++ pyWin = sip.wrapinstance(pyQt, QtWidgets.QWidget) + + #pyWin.show() + self.main_box = dialog_box(pyWin, self.ctrl_win) +diff --git a/gr-qtgui/examples/pyqt_freq_f.py b/gr-qtgui/examples/pyqt_freq_f.py +index 668b54d249..d7d389b736 100755 +--- a/gr-qtgui/examples/pyqt_freq_f.py ++++ b/gr-qtgui/examples/pyqt_freq_f.py +@@ -1,6 +1,6 @@ + #!/usr/bin/env python + # +-# Copyright 2012 Free Software Foundation, Inc. ++# Copyright 2012,2015 Free Software Foundation, Inc. + # + # This file is part of GNU Radio + # +@@ -26,10 +26,10 @@ import sys + + try: + from gnuradio import qtgui +- from PyQt4 import QtGui, QtCore ++ from PyQt5 import QtWidgets, Qt + import sip + except ImportError: +- sys.stderr.write("Error: Program requires PyQt4 and gr-qtgui.\n") ++ sys.stderr.write("Error: Program requires PyQt5 and gr-qtgui.\n") + sys.exit(1) + + try: +@@ -39,71 +39,66 @@ except ImportError: + sys.exit(1) + + +-class dialog_box(QtGui.QWidget): ++class dialog_box(QtWidgets.QWidget): + def __init__(self, display, control): +- QtGui.QWidget.__init__(self, None) ++ QtWidgets.QWidget.__init__(self, None) + self.setWindowTitle('PyQt Test GUI') + +- self.boxlayout = QtGui.QBoxLayout(QtGui.QBoxLayout.LeftToRight, self) ++ self.boxlayout = QtWidgets.QBoxLayout(QtWidgets.QBoxLayout.LeftToRight, self) + self.boxlayout.addWidget(display, 1) + self.boxlayout.addWidget(control) + + self.resize(800, 500) + +-class control_box(QtGui.QWidget): ++class control_box(QtWidgets.QWidget): + def __init__(self, parent=None): +- QtGui.QWidget.__init__(self, parent) ++ QtWidgets.QWidget.__init__(self, parent) + self.setWindowTitle('Control Panel') + + self.setToolTip('Control the signals') +- QtGui.QToolTip.setFont(QtGui.QFont('OldEnglish', 10)) ++ QtWidgets.QToolTip.setFont(Qt.QFont('OldEnglish', 10)) + +- self.layout = QtGui.QFormLayout(self) ++ self.layout = QtWidgets.QFormLayout(self) + + # Control the first signal +- self.freq1Edit = QtGui.QLineEdit(self) ++ self.freq1Edit = QtWidgets.QLineEdit(self) + self.freq1Edit.setMinimumWidth(100) + self.layout.addRow("Signal 1 Frequency:", self.freq1Edit) +- self.connect(self.freq1Edit, QtCore.SIGNAL("editingFinished()"), +- self.freq1EditText) ++ self.freq1Edit.editingFinished.connect(self.freq1EditText) + +- self.amp1Edit = QtGui.QLineEdit(self) ++ self.amp1Edit = QtWidgets.QLineEdit(self) + self.amp1Edit.setMinimumWidth(100) + self.layout.addRow("Signal 1 Amplitude:", self.amp1Edit) +- self.connect(self.amp1Edit, QtCore.SIGNAL("editingFinished()"), +- self.amp1EditText) ++ self.amp1Edit.editingFinished.connect(self.amp1EditText) + + + # Control the second signal +- self.freq2Edit = QtGui.QLineEdit(self) ++ self.freq2Edit = QtWidgets.QLineEdit(self) + self.freq2Edit.setMinimumWidth(100) + self.layout.addRow("Signal 2 Frequency:", self.freq2Edit) +- self.connect(self.freq2Edit, QtCore.SIGNAL("editingFinished()"), +- self.freq2EditText) ++ self.freq2Edit.editingFinished.connect(self.freq2EditText) + + +- self.amp2Edit = QtGui.QLineEdit(self) ++ self.amp2Edit = QtWidgets.QLineEdit(self) + self.amp2Edit.setMinimumWidth(100) + self.layout.addRow("Signal 2 Amplitude:", self.amp2Edit) +- self.connect(self.amp2Edit, QtCore.SIGNAL("editingFinished()"), +- self.amp2EditText) ++ self.amp2Edit.editingFinished.connect(self.amp2EditText) + +- self.quit = QtGui.QPushButton('Close', self) ++ self.quit = QtWidgets.QPushButton('Close', self) + self.quit.setMinimumWidth(100) + self.layout.addWidget(self.quit) + +- self.connect(self.quit, QtCore.SIGNAL('clicked()'), +- QtGui.qApp, QtCore.SLOT('quit()')) ++ self.quit.clicked.connect(QtWidgets.qApp.quit) + + def attach_signal1(self, signal): + self.signal1 = signal +- self.freq1Edit.setText(QtCore.QString("%1").arg(self.signal1.frequency())) +- self.amp1Edit.setText(QtCore.QString("%1").arg(self.signal1.amplitude())) ++ self.freq1Edit.setText(("{0}").format(self.signal1.frequency())) ++ self.amp1Edit.setText(("{0}").format(self.signal1.amplitude())) + + def attach_signal2(self, signal): + self.signal2 = signal +- self.freq2Edit.setText(QtCore.QString("%1").arg(self.signal2.frequency())) +- self.amp2Edit.setText(QtCore.QString("%1").arg(self.signal2.amplitude())) ++ self.freq2Edit.setText(("{0}").format(self.signal2.frequency())) ++ self.amp2Edit.setText(("{0}").format(self.signal2.amplitude())) + + def freq1EditText(self): + try: +@@ -145,7 +140,7 @@ class my_top_block(gr.top_block): + + npts = 2048 + +- self.qapp = QtGui.QApplication(sys.argv) ++ self.qapp = QtWidgets.QApplication(sys.argv) + + src1 = analog.sig_source_f(Rs, analog.GR_SIN_WAVE, f1, 0.1, 0) + src2 = analog.sig_source_f(Rs, analog.GR_SIN_WAVE, f2, 0.1, 0) +@@ -169,8 +164,8 @@ class my_top_block(gr.top_block): + pyQt = self.snk1.pyqwidget() + + # Wrap the pointer as a PyQt SIP object +- # This can now be manipulated as a PyQt4.QtGui.QWidget +- pyWin = sip.wrapinstance(pyQt, QtGui.QWidget) ++ # This can now be manipulated as a PyQt5.QtWidgets.QWidget ++ pyWin = sip.wrapinstance(pyQt, QtWidgets.QWidget) + + #pyWin.show() + self.main_box = dialog_box(pyWin, self.ctrl_win) +@@ -181,4 +176,3 @@ if __name__ == "__main__": + tb.start() + tb.qapp.exec_() + tb.stop() +- +diff --git a/gr-qtgui/examples/pyqt_histogram_f.py b/gr-qtgui/examples/pyqt_histogram_f.py +index a960275f41..81f7b9d40b 100755 +--- a/gr-qtgui/examples/pyqt_histogram_f.py ++++ b/gr-qtgui/examples/pyqt_histogram_f.py +@@ -1,6 +1,6 @@ + #!/usr/bin/env python + # +-# Copyright 2013 Free Software Foundation, Inc. ++# Copyright 2013,2015 Free Software Foundation, Inc. + # + # This file is part of GNU Radio + # +@@ -26,10 +26,10 @@ import sys + + try: + from gnuradio import qtgui +- from PyQt4 import QtGui, QtCore ++ from PyQt5 import QtWidgets, Qt + import sip + except ImportError: +- sys.stderr.write("Error: Program requires PyQt4 and gr-qtgui.\n") ++ sys.stderr.write("Error: Program requires PyQt5 and gr-qtgui.\n") + sys.exit(1) + + try: +@@ -38,87 +38,80 @@ except ImportError: + sys.stderr.write("Error: Program requires gr-analog.\n") + sys.exit(1) + +-class dialog_box(QtGui.QWidget): ++class dialog_box(QtWidgets.QWidget): + def __init__(self, display, control): +- QtGui.QWidget.__init__(self, None) ++ QtWidgets.QWidget.__init__(self, None) + self.setWindowTitle('PyQt Test GUI') + +- self.boxlayout = QtGui.QBoxLayout(QtGui.QBoxLayout.LeftToRight, self) ++ self.boxlayout = QtWidgets.QBoxLayout(QtWidgets.QBoxLayout.LeftToRight, self) + self.boxlayout.addWidget(display, 1) + self.boxlayout.addWidget(control) + + self.resize(800, 500) + +-class control_box(QtGui.QWidget): ++class control_box(QtWidgets.QWidget): + def __init__(self, snk, parent=None): +- QtGui.QWidget.__init__(self, parent) ++ QtWidgets.QWidget.__init__(self, parent) + self.setWindowTitle('Control Panel') + self.snk = snk + + self.setToolTip('Control the signals') +- QtGui.QToolTip.setFont(QtGui.QFont('OldEnglish', 10)) ++ QtWidgets.QToolTip.setFont(Qt.QFont('OldEnglish', 10)) + +- self.layout = QtGui.QFormLayout(self) ++ self.layout = QtWidgets.QFormLayout(self) + + # Control the first signal +- self.freq1Edit = QtGui.QLineEdit(self) ++ self.freq1Edit = QtWidgets.QLineEdit(self) + self.freq1Edit.setMinimumWidth(100) + self.layout.addRow("Sine Frequency:", self.freq1Edit) +- self.connect(self.freq1Edit, QtCore.SIGNAL("editingFinished()"), +- self.freq1EditText) ++ self.freq1Edit.editingFinished.connect(self.freq1EditText) + +- self.amp1Edit = QtGui.QLineEdit(self) ++ self.amp1Edit = QtWidgets.QLineEdit(self) + self.amp1Edit.setMinimumWidth(100) + self.layout.addRow("Sine Amplitude:", self.amp1Edit) +- self.connect(self.amp1Edit, QtCore.SIGNAL("editingFinished()"), +- self.amp1EditText) ++ self.amp1Edit.editingFinished.connect(self.amp1EditText) + + + # Control the second signal +- self.amp2Edit = QtGui.QLineEdit(self) ++ self.amp2Edit = QtWidgets.QLineEdit(self) + self.amp2Edit.setMinimumWidth(100) + self.layout.addRow("Noise Amplitude:", self.amp2Edit) +- self.connect(self.amp2Edit, QtCore.SIGNAL("editingFinished()"), +- self.amp2EditText) ++ self.amp2Edit.editingFinished.connect(self.amp2EditText) + + # Control the histogram +- self.hist_npts = QtGui.QLineEdit(self) ++ self.hist_npts = QtWidgets.QLineEdit(self) + self.hist_npts.setMinimumWidth(100) +- self.hist_npts.setValidator(QtGui.QIntValidator(0, 8191)) ++ self.hist_npts.setValidator(Qt.QIntValidator(0, 8191)) + self.hist_npts.setText("{0}".format(self.snk.nsamps())) + self.layout.addRow("Number of Points:", self.hist_npts) +- self.connect(self.hist_npts, QtCore.SIGNAL("editingFinished()"), +- self.set_nsamps) ++ self.hist_npts.editingFinished.connect(self.set_nsamps) + +- self.hist_bins = QtGui.QLineEdit(self) ++ self.hist_bins = QtWidgets.QLineEdit(self) + self.hist_bins.setMinimumWidth(100) +- self.hist_bins.setValidator(QtGui.QIntValidator(0, 1000)) ++ self.hist_bins.setValidator(Qt.QIntValidator(0, 1000)) + self.hist_bins.setText("{0}".format(self.snk.bins())) + self.layout.addRow("Number of Bins:", self.hist_bins) +- self.connect(self.hist_bins, QtCore.SIGNAL("editingFinished()"), +- self.set_bins) ++ self.hist_bins.editingFinished.connect(self.set_bins) + +- self.hist_auto = QtGui.QPushButton("scale", self) ++ self.hist_auto = QtWidgets.QPushButton("scale", self) + self.layout.addRow("Autoscale X:", self.hist_auto) +- self.connect(self.hist_auto, QtCore.SIGNAL("pressed()"), +- self.autoscalex) ++ self.hist_auto.pressed.connect(self.autoscalex) + +- self.quit = QtGui.QPushButton('Close', self) ++ self.quit = QtWidgets.QPushButton('Close', self) + self.quit.setMinimumWidth(100) + self.layout.addWidget(self.quit) + +- self.connect(self.quit, QtCore.SIGNAL('clicked()'), +- QtGui.qApp, QtCore.SLOT('quit()')) ++ self.quit.clicked.connect(QtWidgets.qApp.quit) + + + def attach_signal1(self, signal): + self.signal1 = signal +- self.freq1Edit.setText(QtCore.QString("%1").arg(self.signal1.frequency())) +- self.amp1Edit.setText(QtCore.QString("%1").arg(self.signal1.amplitude())) ++ self.freq1Edit.setText(("{0}").format(self.signal1.frequency())) ++ self.amp1Edit.setText(("{0}").format(self.signal1.amplitude())) + + def attach_signal2(self, signal): + self.signal2 = signal +- self.amp2Edit.setText(QtCore.QString("%1").arg(self.signal2.amplitude())) ++ self.amp2Edit.setText(("{0}").format(self.signal2.amplitude())) + + def freq1EditText(self): + try: +@@ -164,7 +157,7 @@ class my_top_block(gr.top_block): + + npts = 2048 + +- self.qapp = QtGui.QApplication(sys.argv) ++ self.qapp = QtWidgets.QApplication(sys.argv) + + src1 = analog.sig_source_f(Rs, analog.GR_SIN_WAVE, f1, 0, 0) + src2 = analog.noise_source_f(analog.GR_GAUSSIAN, 1) +@@ -172,6 +165,7 @@ class my_top_block(gr.top_block): + thr = blocks.throttle(gr.sizeof_float, 100*npts) + self.snk1 = qtgui.histogram_sink_f(npts, 200, -5, 5, + "Histogram") ++ self.snk1.disable_legend() + + self.connect(src1, (src,0)) + self.connect(src2, (src,1)) +@@ -185,8 +179,8 @@ class my_top_block(gr.top_block): + pyQt = self.snk1.pyqwidget() + + # Wrap the pointer as a PyQt SIP object +- # This can now be manipulated as a PyQt4.QtGui.QWidget +- pyWin = sip.wrapinstance(pyQt, QtGui.QWidget) ++ # This can now be manipulated as a PyQt5.QtWidgets.QWidget ++ pyWin = sip.wrapinstance(pyQt, QtWidgets.QWidget) + + #pyWin.show() + self.main_box = dialog_box(pyWin, self.ctrl_win) +@@ -197,4 +191,3 @@ if __name__ == "__main__": + tb.start() + tb.qapp.exec_() + tb.stop() +- +diff --git a/gr-qtgui/examples/pyqt_time_c.py b/gr-qtgui/examples/pyqt_time_c.py +index 0162bb6ffc..b595c8ff85 100755 +--- a/gr-qtgui/examples/pyqt_time_c.py ++++ b/gr-qtgui/examples/pyqt_time_c.py +@@ -1,6 +1,6 @@ + #!/usr/bin/env python + # +-# Copyright 2011,2012 Free Software Foundation, Inc. ++# Copyright 2011,2012,2015 Free Software Foundation, Inc. + # + # This file is part of GNU Radio + # +@@ -26,10 +26,10 @@ import sys + + try: + from gnuradio import qtgui +- from PyQt4 import QtGui, QtCore ++ from PyQt5 import QtWidgets, Qt + import sip + except ImportError: +- sys.stderr.write("Error: Program requires PyQt4 and gr-qtgui.\n") ++ sys.stderr.write("Error: Program requires PyQt5 and gr-qtgui.\n") + sys.exit(1) + + try: +@@ -44,71 +44,66 @@ except ImportError: + sys.stderr.write("Error: Program requires gr-channels.\n") + sys.exit(1) + +-class dialog_box(QtGui.QWidget): ++class dialog_box(QtWidgets.QWidget): + def __init__(self, display, control): +- QtGui.QWidget.__init__(self, None) ++ QtWidgets.QWidget.__init__(self, None) + self.setWindowTitle('PyQt Test GUI') + +- self.boxlayout = QtGui.QBoxLayout(QtGui.QBoxLayout.LeftToRight, self) ++ self.boxlayout = QtWidgets.QBoxLayout(QtWidgets.QBoxLayout.LeftToRight, self) + self.boxlayout.addWidget(display, 1) + self.boxlayout.addWidget(control) + + self.resize(800, 500) + +-class control_box(QtGui.QWidget): ++class control_box(QtWidgets.QWidget): + def __init__(self, parent=None): +- QtGui.QWidget.__init__(self, parent) ++ QtWidgets.QWidget.__init__(self, parent) + self.setWindowTitle('Control Panel') + + self.setToolTip('Control the signals') +- QtGui.QToolTip.setFont(QtGui.QFont('OldEnglish', 10)) ++ QtWidgets.QToolTip.setFont(Qt.QFont('OldEnglish', 10)) + +- self.layout = QtGui.QFormLayout(self) ++ self.layout = QtWidgets.QFormLayout(self) + + # Control the first signal +- self.freq1Edit = QtGui.QLineEdit(self) ++ self.freq1Edit = QtWidgets.QLineEdit(self) + self.freq1Edit.setMinimumWidth(100) + self.layout.addRow("Signal 1 Frequency:", self.freq1Edit) +- self.connect(self.freq1Edit, QtCore.SIGNAL("editingFinished()"), +- self.freq1EditText) ++ self.freq1Edit.editingFinished.connect(self.freq1EditText) + +- self.amp1Edit = QtGui.QLineEdit(self) ++ self.amp1Edit = QtWidgets.QLineEdit(self) + self.amp1Edit.setMinimumWidth(100) + self.layout.addRow("Signal 1 Amplitude:", self.amp1Edit) +- self.connect(self.amp1Edit, QtCore.SIGNAL("editingFinished()"), +- self.amp1EditText) ++ self.amp1Edit.editingFinished.connect(self.amp1EditText) + + + # Control the second signal +- self.freq2Edit = QtGui.QLineEdit(self) ++ self.freq2Edit = QtWidgets.QLineEdit(self) + self.freq2Edit.setMinimumWidth(100) + self.layout.addRow("Signal 2 Frequency:", self.freq2Edit) +- self.connect(self.freq2Edit, QtCore.SIGNAL("editingFinished()"), +- self.freq2EditText) ++ self.freq2Edit.editingFinished.connect(self.freq2EditText) + + +- self.amp2Edit = QtGui.QLineEdit(self) ++ self.amp2Edit = QtWidgets.QLineEdit(self) + self.amp2Edit.setMinimumWidth(100) + self.layout.addRow("Signal 2 Amplitude:", self.amp2Edit) +- self.connect(self.amp2Edit, QtCore.SIGNAL("editingFinished()"), +- self.amp2EditText) ++ self.amp2Edit.editingFinished.connect(self.amp2EditText) + +- self.quit = QtGui.QPushButton('Close', self) ++ self.quit = QtWidgets.QPushButton('Close', self) + self.quit.setMinimumWidth(100) + self.layout.addWidget(self.quit) + +- self.connect(self.quit, QtCore.SIGNAL('clicked()'), +- QtGui.qApp, QtCore.SLOT('quit()')) ++ self.quit.clicked.connect(QtWidgets.qApp.quit) + + def attach_signal1(self, signal): + self.signal1 = signal +- self.freq1Edit.setText(QtCore.QString("%1").arg(self.signal1.frequency())) +- self.amp1Edit.setText(QtCore.QString("%1").arg(self.signal1.amplitude())) ++ self.freq1Edit.setText(("{0}").format(self.signal1.frequency())) ++ self.amp1Edit.setText(("{0}").format(self.signal1.amplitude())) + + def attach_signal2(self, signal): + self.signal2 = signal +- self.freq2Edit.setText(QtCore.QString("%1").arg(self.signal2.frequency())) +- self.amp2Edit.setText(QtCore.QString("%1").arg(self.signal2.amplitude())) ++ self.freq2Edit.setText(("{0}").format(self.signal2.frequency())) ++ self.amp2Edit.setText(("{0}").format(self.signal2.amplitude())) + + def freq1EditText(self): + try: +@@ -150,7 +145,7 @@ class my_top_block(gr.top_block): + + npts = 2048 + +- self.qapp = QtGui.QApplication(sys.argv) ++ self.qapp = QtWidgets.QApplication(sys.argv) + ss = open(gr.prefix() + '/share/gnuradio/themes/dark.qss') + sstext = ss.read() + ss.close() +@@ -178,13 +173,14 @@ class my_top_block(gr.top_block): + pyQt = self.snk1.pyqwidget() + + # Wrap the pointer as a PyQt SIP object +- # This can now be manipulated as a PyQt4.QtGui.QWidget +- pyWin = sip.wrapinstance(pyQt, QtGui.QWidget) ++ # This can now be manipulated as a PyQt5.QtWidgets.QWidget ++ pyWin = sip.wrapinstance(pyQt, QtWidgets.QWidget) + + # Example of using signal/slot to set the title of a curve +- pyWin.connect(pyWin, QtCore.SIGNAL("setLineLabel(int, QString)"), +- pyWin, QtCore.SLOT("setLineLabel(int, QString)")) +- pyWin.emit(QtCore.SIGNAL("setLineLabel(int, QString)"), 0, "Re{sum}") ++ # FIXME: update for Qt5 ++ #pyWin.setLineLabel.connect(pyWin.setLineLabel) ++ #pyWin.emit(QtCore.SIGNAL("setLineLabel(int, QString)"), 0, "Re{sum}") ++ self.snk1.set_line_label(0, "Re{Sum}") + self.snk1.set_line_label(1, "Im{Sum}") + #self.snk1.set_line_label(2, "Re{src1}") + #self.snk1.set_line_label(3, "Im{src1}") +diff --git a/gr-qtgui/examples/pyqt_time_f.py b/gr-qtgui/examples/pyqt_time_f.py +index b733a5a809..3689ebff54 100755 +--- a/gr-qtgui/examples/pyqt_time_f.py ++++ b/gr-qtgui/examples/pyqt_time_f.py +@@ -1,6 +1,6 @@ + #!/usr/bin/env python + # +-# Copyright 2011,2012 Free Software Foundation, Inc. ++# Copyright 2011,2012,2015 Free Software Foundation, Inc. + # + # This file is part of GNU Radio + # +@@ -26,10 +26,10 @@ import sys + + try: + from gnuradio import qtgui +- from PyQt4 import QtGui, QtCore ++ from PyQt5 import QtWidgets, Qt + import sip + except ImportError: +- sys.stderr.write("Error: Program requires PyQt4 and gr-qtgui.\n") ++ sys.stderr.write("Error: Program requires PyQt5 and gr-qtgui.\n") + sys.exit(1) + + try: +@@ -38,71 +38,66 @@ except ImportError: + sys.stderr.write("Error: Program requires gr-analog.\n") + sys.exit(1) + +-class dialog_box(QtGui.QWidget): ++class dialog_box(QtWidgets.QWidget): + def __init__(self, display, control): +- QtGui.QWidget.__init__(self, None) ++ QtWidgets.QWidget.__init__(self, None) + self.setWindowTitle('PyQt Test GUI') + +- self.boxlayout = QtGui.QBoxLayout(QtGui.QBoxLayout.LeftToRight, self) ++ self.boxlayout = QtWidgets.QBoxLayout(QtWidgets.QBoxLayout.LeftToRight, self) + self.boxlayout.addWidget(display, 1) + self.boxlayout.addWidget(control) + + self.resize(800, 500) + +-class control_box(QtGui.QWidget): ++class control_box(QtWidgets.QWidget): + def __init__(self, parent=None): +- QtGui.QWidget.__init__(self, parent) ++ QtWidgets.QWidget.__init__(self, parent) + self.setWindowTitle('Control Panel') + + self.setToolTip('Control the signals') +- QtGui.QToolTip.setFont(QtGui.QFont('OldEnglish', 10)) ++ QtWidgets.QToolTip.setFont(Qt.QFont('OldEnglish', 10)) + +- self.layout = QtGui.QFormLayout(self) ++ self.layout = QtWidgets.QFormLayout(self) + + # Control the first signal +- self.freq1Edit = QtGui.QLineEdit(self) ++ self.freq1Edit = QtWidgets.QLineEdit(self) + self.freq1Edit.setMinimumWidth(100) + self.layout.addRow("Signal 1 Frequency:", self.freq1Edit) +- self.connect(self.freq1Edit, QtCore.SIGNAL("editingFinished()"), +- self.freq1EditText) ++ self.freq1Edit.editingFinished.connect(self.freq1EditText) + +- self.amp1Edit = QtGui.QLineEdit(self) ++ self.amp1Edit = QtWidgets.QLineEdit(self) + self.amp1Edit.setMinimumWidth(100) + self.layout.addRow("Signal 1 Amplitude:", self.amp1Edit) +- self.connect(self.amp1Edit, QtCore.SIGNAL("editingFinished()"), +- self.amp1EditText) ++ self.amp1Edit.editingFinished.connect(self.amp1EditText) + + + # Control the second signal +- self.freq2Edit = QtGui.QLineEdit(self) ++ self.freq2Edit = QtWidgets.QLineEdit(self) + self.freq2Edit.setMinimumWidth(100) + self.layout.addRow("Signal 2 Frequency:", self.freq2Edit) +- self.connect(self.freq2Edit, QtCore.SIGNAL("editingFinished()"), +- self.freq2EditText) ++ self.freq2Edit.editingFinished.connect(self.freq2EditText) + + +- self.amp2Edit = QtGui.QLineEdit(self) ++ self.amp2Edit = QtWidgets.QLineEdit(self) + self.amp2Edit.setMinimumWidth(100) + self.layout.addRow("Signal 2 Amplitude:", self.amp2Edit) +- self.connect(self.amp2Edit, QtCore.SIGNAL("editingFinished()"), +- self.amp2EditText) ++ self.amp2Edit.editingFinished.connect(self.amp2EditText) + +- self.quit = QtGui.QPushButton('Close', self) ++ self.quit = QtWidgets.QPushButton('Close', self) + self.quit.setMinimumWidth(100) + self.layout.addWidget(self.quit) + +- self.connect(self.quit, QtCore.SIGNAL('clicked()'), +- QtGui.qApp, QtCore.SLOT('quit()')) ++ self.quit.clicked.connect(QtWidgets.qApp.quit) + + def attach_signal1(self, signal): + self.signal1 = signal +- self.freq1Edit.setText(QtCore.QString("%1").arg(self.signal1.frequency())) +- self.amp1Edit.setText(QtCore.QString("%1").arg(self.signal1.amplitude())) ++ self.freq1Edit.setText(("{0}").format(self.signal1.frequency())) ++ self.amp1Edit.setText(("{0}").format(self.signal1.amplitude())) + + def attach_signal2(self, signal): + self.signal2 = signal +- self.freq2Edit.setText(QtCore.QString("%1").arg(self.signal2.frequency())) +- self.amp2Edit.setText(QtCore.QString("%1").arg(self.signal2.amplitude())) ++ self.freq2Edit.setText(("{0}").format(self.signal2.frequency())) ++ self.amp2Edit.setText(("{0}").format(self.signal2.amplitude())) + + def freq1EditText(self): + try: +@@ -144,7 +139,7 @@ class my_top_block(gr.top_block): + + npts = 2048 + +- self.qapp = QtGui.QApplication(sys.argv) ++ self.qapp = QtWidgets.QApplication(sys.argv) + + src1 = analog.sig_source_f(Rs, analog.GR_SIN_WAVE, f1, 0.1, 0) + src2 = analog.sig_source_f(Rs, analog.GR_SIN_WAVE, f2, 0.1, 0) +@@ -171,13 +166,14 @@ class my_top_block(gr.top_block): + pyQt = self.snk1.pyqwidget() + + # Wrap the pointer as a PyQt SIP object +- # This can now be manipulated as a PyQt4.QtGui.QWidget +- pyWin = sip.wrapinstance(pyQt, QtGui.QWidget) ++ # This can now be manipulated as a PyQt5.QtWidgets.QWidget ++ pyWin = sip.wrapinstance(pyQt, QtWidgets.QWidget) + + # Example of using signal/slot to set the title of a curve +- pyWin.connect(pyWin, QtCore.SIGNAL("setLineLabel(int, QString)"), +- pyWin, QtCore.SLOT("setLineLabel(int, QString)")) +- pyWin.emit(QtCore.SIGNAL("setLineLabel(int, QString)"), 0, "sum") ++ # FIXME: update for Qt5 ++ #pyWin.setLineLabel.connect(pyWin.setLineLabel) ++ #pyWin.emit(QtCore.SIGNAL("setLineLabel(int, QString)"), 0, "Re{sum}") ++ self.snk1.set_line_label(0, "Re{sum}") + self.snk1.set_line_label(1, "src1") + self.snk1.set_line_label(2, "src2") + +@@ -193,4 +189,3 @@ if __name__ == "__main__": + tb.start() + tb.qapp.exec_() + tb.stop() +- +diff --git a/gr-qtgui/examples/pyqt_time_raster_b.py b/gr-qtgui/examples/pyqt_time_raster_b.py +index 4cad9de601..7a94400283 100755 +--- a/gr-qtgui/examples/pyqt_time_raster_b.py ++++ b/gr-qtgui/examples/pyqt_time_raster_b.py +@@ -1,6 +1,6 @@ + #!/usr/bin/env python + # +-# Copyright 2012,2013 Free Software Foundation, Inc. ++# Copyright 2012,2013,2015 Free Software Foundation, Inc. + # + # This file is part of GNU Radio + # +@@ -27,18 +27,18 @@ import sys + + try: + from gnuradio import qtgui +- from PyQt4 import QtGui, QtCore ++ from PyQt5 import QtWidgets, Qt + import sip + except ImportError: +- print "Error: Program requires PyQt4 and gr-qtgui." ++ print "Error: Program requires PyQt5 and gr-qtgui." + sys.exit(1) + +-class dialog_box(QtGui.QWidget): ++class dialog_box(QtWidgets.QWidget): + def __init__(self, display): +- QtGui.QWidget.__init__(self, None) ++ QtWidgets.QWidget.__init__(self, None) + self.setWindowTitle('PyQt Test GUI') + +- self.boxlayout = QtGui.QBoxLayout(QtGui.QBoxLayout.LeftToRight, self) ++ self.boxlayout = QtWidgets.QBoxLayout(QtWidgets.QBoxLayout.LeftToRight, self) + self.boxlayout.addWidget(display, 1) + + self.resize(800, 500) +@@ -47,7 +47,7 @@ class my_top_block(gr.top_block): + def __init__(self): + gr.top_block.__init__(self) + +- self.qapp = QtGui.QApplication(sys.argv) ++ self.qapp = QtWidgets.QApplication(sys.argv) + + data0 = 10*[0,] + 40*[1,0] + 10*[0,] + data0 += 10*[0,] + 40*[0,1] + 10*[0,] +@@ -73,8 +73,8 @@ class my_top_block(gr.top_block): + pyQt = self.snk1.pyqwidget() + + # Wrap the pointer as a PyQt SIP object +- # This can now be manipulated as a PyQt4.QtGui.QWidget +- pyWin = sip.wrapinstance(pyQt, QtGui.QWidget) ++ # This can now be manipulated as a PyQt5.QtWidgets.QWidget ++ pyWin = sip.wrapinstance(pyQt, QtWidgets.QWidget) + + self.main_box = dialog_box(pyWin) + self.main_box.show() +@@ -84,4 +84,3 @@ if __name__ == "__main__": + tb.start() + tb.qapp.exec_() + tb.stop() +- +diff --git a/gr-qtgui/examples/pyqt_time_raster_f.py b/gr-qtgui/examples/pyqt_time_raster_f.py +index c5261520db..0f9de94bcb 100755 +--- a/gr-qtgui/examples/pyqt_time_raster_f.py ++++ b/gr-qtgui/examples/pyqt_time_raster_f.py +@@ -1,6 +1,6 @@ + #!/usr/bin/env python + # +-# Copyright 2012,2013 Free Software Foundation, Inc. ++# Copyright 2012,2013,2015 Free Software Foundation, Inc. + # + # This file is part of GNU Radio + # +@@ -26,18 +26,18 @@ import sys + + try: + from gnuradio import qtgui +- from PyQt4 import QtGui, QtCore ++ from PyQt5 import QtWidgets, Qt + import sip + except ImportError: +- print "Error: Program requires PyQt4 and gr-qtgui." ++ print "Error: Program requires PyQt5 and gr-qtgui." + sys.exit(1) + +-class dialog_box(QtGui.QWidget): ++class dialog_box(QtWidgets.QWidget): + def __init__(self, display): +- QtGui.QWidget.__init__(self, None) ++ QtWidgets.QWidget.__init__(self, None) + self.setWindowTitle('PyQt Test GUI') + +- self.boxlayout = QtGui.QBoxLayout(QtGui.QBoxLayout.LeftToRight, self) ++ self.boxlayout = QtWidgets.QBoxLayout(QtWidgets.QBoxLayout.LeftToRight, self) + self.boxlayout.addWidget(display, 1) + + self.resize(800, 500) +@@ -46,7 +46,7 @@ class my_top_block(gr.top_block): + def __init__(self): + gr.top_block.__init__(self) + +- self.qapp = QtGui.QApplication(sys.argv) ++ self.qapp = QtWidgets.QApplication(sys.argv) + + data0 = 10*[0,] + 40*[1,0] + 10*[0,] + data0 += 10*[0,] + 40*[0,1] + 10*[0,] +@@ -72,8 +72,8 @@ class my_top_block(gr.top_block): + pyQt = self.snk1.pyqwidget() + + # Wrap the pointer as a PyQt SIP object +- # This can now be manipulated as a PyQt4.QtGui.QWidget +- pyWin = sip.wrapinstance(pyQt, QtGui.QWidget) ++ # This can now be manipulated as a PyQt5.QtWidgets.QWidget ++ pyWin = sip.wrapinstance(pyQt, QtWidgets.QWidget) + + self.main_box = dialog_box(pyWin) + self.main_box.show() +@@ -83,4 +83,3 @@ if __name__ == "__main__": + tb.start() + tb.qapp.exec_() + tb.stop() +- +diff --git a/gr-qtgui/examples/pyqt_waterfall_c.py b/gr-qtgui/examples/pyqt_waterfall_c.py +index 8ec62fc1e2..3f7119f97f 100755 +--- a/gr-qtgui/examples/pyqt_waterfall_c.py ++++ b/gr-qtgui/examples/pyqt_waterfall_c.py +@@ -1,6 +1,6 @@ + #!/usr/bin/env python + # +-# Copyright 2012 Free Software Foundation, Inc. ++# Copyright 2012,2015 Free Software Foundation, Inc. + # + # This file is part of GNU Radio + # +@@ -26,7 +26,7 @@ import sys + + try: + from gnuradio import qtgui +- from PyQt4 import QtGui, QtCore ++ from PyQt5 import QtWidgets, Qt + import sip + except ImportError: + sys.stderr.write("Error: Program requires PyQt4 and gr-qtgui.\n") +@@ -44,71 +44,66 @@ except ImportError: + sys.stderr.write("Error: Program requires gr-channels.\n") + sys.exit(1) + +-class dialog_box(QtGui.QWidget): ++class dialog_box(QtWidgets.QWidget): + def __init__(self, display, control): +- QtGui.QWidget.__init__(self, None) ++ QtWidgets.QWidget.__init__(self, None) + self.setWindowTitle('PyQt Test GUI') + +- self.boxlayout = QtGui.QBoxLayout(QtGui.QBoxLayout.LeftToRight, self) ++ self.boxlayout = QtWidgets.QBoxLayout(QtWidgets.QBoxLayout.LeftToRight, self) + self.boxlayout.addWidget(display, 1) + self.boxlayout.addWidget(control) + + self.resize(800, 500) + +-class control_box(QtGui.QWidget): ++class control_box(QtWidgets.QWidget): + def __init__(self, parent=None): +- QtGui.QWidget.__init__(self, parent) ++ QtWidgets.QWidget.__init__(self, parent) + self.setWindowTitle('Control Panel') + + self.setToolTip('Control the signals') +- QtGui.QToolTip.setFont(QtGui.QFont('OldEnglish', 10)) ++ QtWidgets.QToolTip.setFont(Qt.QFont('OldEnglish', 10)) + +- self.layout = QtGui.QFormLayout(self) ++ self.layout = QtWidgets.QFormLayout(self) + + # Control the first signal +- self.freq1Edit = QtGui.QLineEdit(self) ++ self.freq1Edit = QtWidgets.QLineEdit(self) + self.freq1Edit.setMinimumWidth(100) + self.layout.addRow("Signal 1 Frequency:", self.freq1Edit) +- self.connect(self.freq1Edit, QtCore.SIGNAL("editingFinished()"), +- self.freq1EditText) ++ self.freq1Edit.editingFinished.connect(self.freq1EditText) + +- self.amp1Edit = QtGui.QLineEdit(self) ++ self.amp1Edit = QtWidgets.QLineEdit(self) + self.amp1Edit.setMinimumWidth(100) + self.layout.addRow("Signal 1 Amplitude:", self.amp1Edit) +- self.connect(self.amp1Edit, QtCore.SIGNAL("editingFinished()"), +- self.amp1EditText) ++ self.amp1Edit.editingFinished.connect(self.amp1EditText) + + + # Control the second signal +- self.freq2Edit = QtGui.QLineEdit(self) ++ self.freq2Edit = QtWidgets.QLineEdit(self) + self.freq2Edit.setMinimumWidth(100) + self.layout.addRow("Signal 2 Frequency:", self.freq2Edit) +- self.connect(self.freq2Edit, QtCore.SIGNAL("editingFinished()"), +- self.freq2EditText) ++ self.freq2Edit.editingFinished.connect(self.freq2EditText) + + +- self.amp2Edit = QtGui.QLineEdit(self) ++ self.amp2Edit = QtWidgets.QLineEdit(self) + self.amp2Edit.setMinimumWidth(100) + self.layout.addRow("Signal 2 Amplitude:", self.amp2Edit) +- self.connect(self.amp2Edit, QtCore.SIGNAL("editingFinished()"), +- self.amp2EditText) ++ self.amp2Edit.editingFinished.connect(self.amp2EditText) + +- self.quit = QtGui.QPushButton('Close', self) ++ self.quit = QtWidgets.QPushButton('Close', self) + self.quit.setMinimumWidth(100) + self.layout.addWidget(self.quit) + +- self.connect(self.quit, QtCore.SIGNAL('clicked()'), +- QtGui.qApp, QtCore.SLOT('quit()')) ++ self.quit.clicked.connect(QtWidgets.qApp.quit) + + def attach_signal1(self, signal): + self.signal1 = signal +- self.freq1Edit.setText(QtCore.QString("%1").arg(self.signal1.frequency())) +- self.amp1Edit.setText(QtCore.QString("%1").arg(self.signal1.amplitude())) ++ self.freq1Edit.setText(("{0}").format(self.signal1.frequency())) ++ self.amp1Edit.setText(("{0}").format(self.signal1.amplitude())) + + def attach_signal2(self, signal): + self.signal2 = signal +- self.freq2Edit.setText(QtCore.QString("%1").arg(self.signal2.frequency())) +- self.amp2Edit.setText(QtCore.QString("%1").arg(self.signal2.amplitude())) ++ self.freq2Edit.setText(("{0}").format(self.signal2.frequency())) ++ self.amp2Edit.setText(("{0}").format(self.signal2.amplitude())) + + def freq1EditText(self): + try: +@@ -152,7 +147,7 @@ class my_top_block(gr.top_block): + + taps = filter.firdes.complex_band_pass_2(1, Rs, 1500, 2500, 100, 60) + +- self.qapp = QtGui.QApplication(sys.argv) ++ self.qapp = QtWidgets.QApplication(sys.argv) + ss = open(gr.prefix() + '/share/gnuradio/themes/dark.qss') + sstext = ss.read() + ss.close() +@@ -167,6 +162,8 @@ class my_top_block(gr.top_block): + self.snk1 = qtgui.waterfall_sink_c(npts, filter.firdes.WIN_BLACKMAN_hARRIS, + 0, Rs, + "Complex Waterfall Example", 2) ++ self.snk1.set_color_map(0, qtgui.INTENSITY_COLOR_MAP_TYPE_COOL) ++ self.snk1.set_color_map(1, qtgui.INTENSITY_COLOR_MAP_TYPE_COOL) + + self.connect(src1, (src,0)) + self.connect(src2, (src,1)) +@@ -181,8 +178,8 @@ class my_top_block(gr.top_block): + pyQt = self.snk1.pyqwidget() + + # Wrap the pointer as a PyQt SIP object +- # This can now be manipulated as a PyQt4.QtGui.QWidget +- pyWin = sip.wrapinstance(pyQt, QtGui.QWidget) ++ # This can now be manipulated as a PyQt5.QtWidgets.QWidget ++ pyWin = sip.wrapinstance(pyQt, QtWidgets.QWidget) + + #pyWin.show() + self.main_box = dialog_box(pyWin, self.ctrl_win) +diff --git a/gr-qtgui/examples/pyqt_waterfall_f.py b/gr-qtgui/examples/pyqt_waterfall_f.py +index f9680c28cf..71c72afad6 100755 +--- a/gr-qtgui/examples/pyqt_waterfall_f.py ++++ b/gr-qtgui/examples/pyqt_waterfall_f.py +@@ -1,6 +1,6 @@ + #!/usr/bin/env python + # +-# Copyright 2012 Free Software Foundation, Inc. ++# Copyright 2012,2015 Free Software Foundation, Inc. + # + # This file is part of GNU Radio + # +@@ -26,10 +26,10 @@ import sys + + try: + from gnuradio import qtgui +- from PyQt4 import QtGui, QtCore ++ from PyQt5 import QtWidgets, Qt + import sip + except ImportError: +- sys.stderr.write("Error: Program requires PyQt4 and gr-qtgui.\n") ++ sys.stderr.write("Error: Program requires PyQt5 and gr-qtgui.\n") + sys.exit(1) + + try: +@@ -38,71 +38,66 @@ except ImportError: + sys.stderr.write("Error: Program requires gr-analog.\n") + sys.exit(1) + +-class dialog_box(QtGui.QWidget): ++class dialog_box(QtWidgets.QWidget): + def __init__(self, display, control): +- QtGui.QWidget.__init__(self, None) ++ QtWidgets.QWidget.__init__(self, None) + self.setWindowTitle('PyQt Test GUI') + +- self.boxlayout = QtGui.QBoxLayout(QtGui.QBoxLayout.LeftToRight, self) ++ self.boxlayout = QtWidgets.QBoxLayout(QtWidgets.QBoxLayout.LeftToRight, self) + self.boxlayout.addWidget(display, 1) + self.boxlayout.addWidget(control) + + self.resize(800, 500) + +-class control_box(QtGui.QWidget): ++class control_box(QtWidgets.QWidget): + def __init__(self, parent=None): +- QtGui.QWidget.__init__(self, parent) ++ QtWidgets.QWidget.__init__(self, parent) + self.setWindowTitle('Control Panel') + + self.setToolTip('Control the signals') +- QtGui.QToolTip.setFont(QtGui.QFont('OldEnglish', 10)) ++ QtWidgets.QToolTip.setFont(Qt.QFont('OldEnglish', 10)) + +- self.layout = QtGui.QFormLayout(self) ++ self.layout = QtWidgets.QFormLayout(self) + + # Control the first signal +- self.freq1Edit = QtGui.QLineEdit(self) ++ self.freq1Edit = QtWidgets.QLineEdit(self) + self.freq1Edit.setMinimumWidth(100) + self.layout.addRow("Signal 1 Frequency:", self.freq1Edit) +- self.connect(self.freq1Edit, QtCore.SIGNAL("editingFinished()"), +- self.freq1EditText) ++ self.freq1Edit.editingFinished.connect(self.freq1EditText) + +- self.amp1Edit = QtGui.QLineEdit(self) ++ self.amp1Edit = QtWidgets.QLineEdit(self) + self.amp1Edit.setMinimumWidth(100) + self.layout.addRow("Signal 1 Amplitude:", self.amp1Edit) +- self.connect(self.amp1Edit, QtCore.SIGNAL("editingFinished()"), +- self.amp1EditText) ++ self.amp1Edit.editingFinished.connect(self.amp1EditText) + + + # Control the second signal +- self.freq2Edit = QtGui.QLineEdit(self) ++ self.freq2Edit = QtWidgets.QLineEdit(self) + self.freq2Edit.setMinimumWidth(100) + self.layout.addRow("Signal 2 Frequency:", self.freq2Edit) +- self.connect(self.freq2Edit, QtCore.SIGNAL("editingFinished()"), +- self.freq2EditText) ++ self.freq2Edit.editingFinished.connect(self.freq2EditText) + + +- self.amp2Edit = QtGui.QLineEdit(self) ++ self.amp2Edit = QtWidgets.QLineEdit(self) + self.amp2Edit.setMinimumWidth(100) + self.layout.addRow("Signal 2 Amplitude:", self.amp2Edit) +- self.connect(self.amp2Edit, QtCore.SIGNAL("editingFinished()"), +- self.amp2EditText) ++ self.amp2Edit.editingFinished.connect(self.amp2EditText) + +- self.quit = QtGui.QPushButton('Close', self) ++ self.quit = QtWidgets.QPushButton('Close', self) + self.quit.setMinimumWidth(100) + self.layout.addWidget(self.quit) + +- self.connect(self.quit, QtCore.SIGNAL('clicked()'), +- QtGui.qApp, QtCore.SLOT('quit()')) ++ self.quit.clicked.connect(QtWidgets.qApp.quit) + + def attach_signal1(self, signal): + self.signal1 = signal +- self.freq1Edit.setText(QtCore.QString("%1").arg(self.signal1.frequency())) +- self.amp1Edit.setText(QtCore.QString("%1").arg(self.signal1.amplitude())) ++ self.freq1Edit.setText(("{0}").format(self.signal1.frequency())) ++ self.amp1Edit.setText(("{0}").format(self.signal1.amplitude())) + + def attach_signal2(self, signal): + self.signal2 = signal +- self.freq2Edit.setText(QtCore.QString("%1").arg(self.signal2.frequency())) +- self.amp2Edit.setText(QtCore.QString("%1").arg(self.signal2.amplitude())) ++ self.freq2Edit.setText(("{0}").format(self.signal2.frequency())) ++ self.amp2Edit.setText(("{0}").format(self.signal2.amplitude())) + + def freq1EditText(self): + try: +@@ -144,7 +139,7 @@ class my_top_block(gr.top_block): + + npts = 2048 + +- self.qapp = QtGui.QApplication(sys.argv) ++ self.qapp = QtWidgets.QApplication(sys.argv) + + src1 = analog.sig_source_f(Rs, analog.GR_SIN_WAVE, f1, 0.1, 0) + src2 = analog.sig_source_f(Rs, analog.GR_SIN_WAVE, f2, 0.1, 0) +@@ -153,6 +148,8 @@ class my_top_block(gr.top_block): + self.snk1 = qtgui.waterfall_sink_f(npts, filter.firdes.WIN_BLACKMAN_hARRIS, + 0, Rs, + "Real Waterfall Example", 2) ++ self.snk1.set_color_map(0, qtgui.INTENSITY_COLOR_MAP_TYPE_COOL) ++ self.snk1.set_color_map(1, qtgui.INTENSITY_COLOR_MAP_TYPE_COOL) + + self.connect(src1, (src,0)) + self.connect(src2, (src,1)) +@@ -167,8 +164,8 @@ class my_top_block(gr.top_block): + pyQt = self.snk1.pyqwidget() + + # Wrap the pointer as a PyQt SIP object +- # This can now be manipulated as a PyQt4.QtGui.QWidget +- pyWin = sip.wrapinstance(pyQt, QtGui.QWidget) ++ # This can now be manipulated as a PyQt5.QtWidgets.QWidget ++ pyWin = sip.wrapinstance(pyQt, QtWidgets.QWidget) + + #pyWin.show() + self.main_box = dialog_box(pyWin, self.ctrl_win) +@@ -179,4 +176,3 @@ if __name__ == "__main__": + tb.start() + tb.qapp.exec_() + tb.stop() +- +diff --git a/gr-qtgui/examples/qtgui_tags_viewing.grc b/gr-qtgui/examples/qtgui_tags_viewing.grc +index 4c6454537a..635b1e43fa 100644 +--- a/gr-qtgui/examples/qtgui_tags_viewing.grc ++++ b/gr-qtgui/examples/qtgui_tags_viewing.grc +@@ -1,22 +1,23 @@ +- ++ ++ + + Wed Nov 6 11:52:40 2013 + + options + +- id +- qtgui_tags_viewing ++ author ++ + + +- _enabled +- True ++ window_size ++ 1280, 1024 + + +- title +- ++ category ++ Custom + + +- author ++ comment + + + +@@ -24,241 +25,260 @@ + + + +- window_size +- 1280, 1024 ++ _enabled ++ True + + +- generate_options +- qt_gui ++ _coordinate ++ (10, 10) + + +- category +- Custom ++ _rotation ++ 0 + + +- run_options +- run ++ generate_options ++ qt_gui + + +- run +- True ++ id ++ qtgui_tags_viewing + + + max_nouts + 0 + + +- realtime_scheduling ++ qt_qss_theme + + + +- _coordinate +- (10, 10) ++ realtime_scheduling ++ + + +- _rotation +- 0 ++ run_command ++ {python} -u {filename} + +- +- +- variable + +- id +- samp_rate ++ run_options ++ run + + +- _enabled ++ run + True + + +- value +- 32000 +- +- +- _coordinate +- (172, 10) ++ thread_safe_setters ++ + + +- _rotation +- 0 ++ title ++ + + + +- import ++ variable_qtgui_range + +- id +- import_1 ++ comment ++ ++ ++ ++ value ++ 300 + + + _enabled + True + + +- import +- from gnuradio.digital.utils import tagged_streams ++ _coordinate ++ (814, 390) + + +- _coordinate +- (99, 72) ++ gui_hint ++ + + + _rotation + 0 + +- +- +- import + + id +- import_0 ++ delay + + +- _enabled +- True ++ label ++ Delay + + +- import +- import scipy ++ min_len ++ 200 + + +- _coordinate +- (9, 71) ++ orient ++ Qt.Horizontal + + +- _rotation ++ start + 0 + ++ ++ step ++ 1 ++ ++ ++ stop ++ 1000 ++ ++ ++ rangeType ++ float ++ ++ ++ widget ++ counter_slider ++ + + +- import ++ variable_qtgui_range + +- id +- import_2 ++ comment ++ ++ ++ ++ value ++ 30 + + + _enabled + True + + +- import +- import time ++ _coordinate ++ (936, 392) + + +- _coordinate +- (253, 71) ++ gui_hint ++ + + + _rotation + 0 + +- +- +- blocks_delay + + id +- blocks_delay_0 ++ ntaps + + +- _enabled +- True ++ label ++ Num Taps + + +- type +- complex ++ min_len ++ 200 + + +- delay +- 1000 ++ orient ++ Qt.Horizontal + + +- num_ports ++ start + 1 + + +- vlen ++ step + 1 + + +- affinity +- +- +- +- minoutbuf +- 0 ++ stop ++ 100 + + +- _coordinate +- (300, 240) ++ rangeType ++ float + + +- _rotation +- 0 ++ widget ++ counter_slider + + + +- blocks_tags_strobe ++ variable + +- id +- blocks_tags_strobe_0 ++ comment ++ + + + _enabled + True + + +- type +- complex ++ _coordinate ++ (172, 10) ++ ++ ++ _rotation ++ 0 ++ ++ ++ id ++ samp_rate + + + value +- pmt.intern("TEST") ++ 32000 + ++ ++ ++ analog_fastnoise_source_x + +- nsamps +- 10000 ++ amp ++ 0.004 + + +- vlen +- 1 ++ alias ++ ++ ++ ++ comment ++ + + + affinity + + + +- minoutbuf +- 0 ++ _enabled ++ True + + + _coordinate +- (16, 232) ++ (350, 39) + + + _rotation + 0 + +- +- +- analog_fastnoise_source_x + + id + analog_fastnoise_source_x_0 + + +- _enabled +- True ++ maxoutbuf ++ 0 + + +- type +- complex ++ minoutbuf ++ 0 + + + noise_type + analog.GR_GAUSSIAN + + +- amp +- 0.004 ++ type ++ complex + + + seed +@@ -268,85 +288,101 @@ + samples + 8192 + ++ ++ ++ blocks_add_xx ++ ++ alias ++ ++ ++ ++ comment ++ ++ + + affinity + + + +- minoutbuf +- 0 ++ _enabled ++ True + + + _coordinate +- (350, 39) ++ (482, 193) + + + _rotation + 0 + +- +- +- blocks_vector_source_x + + id +- blocks_vector_source_x_0 +- +- +- _enabled +- True ++ blocks_add_xx_0 + + + type + complex + + +- vector +- [0.85+0.5j, 0.85, 0.85, 0.85+0.5j] + (10000-4)*[0,] ++ maxoutbuf ++ 0 + + +- tags +- tagged_streams.make_lengthtags((1024,), (0,), "testing tags 0") ++ minoutbuf ++ 0 + + +- repeat +- True ++ num_inputs ++ 2 + + + vlen + 1 + ++ ++ ++ blocks_add_xx + +- affinity ++ alias + + + +- minoutbuf +- 0 ++ comment ++ ++ ++ ++ affinity ++ ++ ++ ++ _enabled ++ True + + + _coordinate +- (13, 132) ++ (707, 176) + + + _rotation + 0 + +- +- +- blocks_add_xx + + id +- blocks_add_xx_0 +- +- +- _enabled +- True ++ blocks_add_xx_1 + + + type + complex + + ++ maxoutbuf ++ 0 ++ ++ ++ minoutbuf ++ 0 ++ ++ + num_inputs + 2 + +@@ -354,439 +390,1691 @@ + vlen + 1 + ++ ++ ++ blocks_delay ++ ++ alias ++ ++ ++ ++ comment ++ ++ + + affinity + + + +- minoutbuf +- 0 ++ delay ++ 1000 ++ ++ ++ _enabled ++ True + + + _coordinate +- (482, 193) ++ (300, 240) + + + _rotation + 0 + +- +- +- blocks_add_xx + + id +- blocks_add_xx_1 ++ blocks_delay_0 + + +- _enabled +- True ++ maxoutbuf ++ 0 + + +- type +- complex ++ minoutbuf ++ 0 + + +- num_inputs +- 2 ++ num_ports ++ 1 ++ ++ ++ type ++ complex + + + vlen + 1 + ++ ++ ++ blocks_delay ++ ++ alias ++ ++ ++ ++ comment ++ ++ + + affinity + + + +- minoutbuf +- 0 ++ delay ++ int(delay) ++ ++ ++ _enabled ++ True + + + _coordinate +- (707, 176) ++ (890, 44) + + + _rotation + 0 + +- +- +- blocks_throttle + + id +- blocks_throttle_0 ++ blocks_delay_0_0 + + +- _enabled +- True ++ maxoutbuf ++ 0 + + +- type +- complex ++ minoutbuf ++ 0 + + +- samples_per_second +- 50e3 ++ num_ports ++ 1 ++ ++ ++ type ++ complex + + + vlen + 1 + ++ ++ ++ blocks_tags_strobe ++ ++ alias ++ ++ ++ ++ comment ++ ++ + + affinity + + + +- minoutbuf +- 0 ++ _enabled ++ True + + + _coordinate +- (266, 149) ++ (16, 232) + + + _rotation + 0 + +- +- +- variable_qtgui_range + + id +- ntaps ++ blocks_tags_strobe_0 + + +- _enabled +- True ++ key ++ pmt.intern("strobe") + + +- label +- Num Taps ++ maxoutbuf ++ 0 + + +- value +- 30 ++ minoutbuf ++ 0 + + +- start +- 1 ++ nsamps ++ 10000 + + +- stop +- 100 ++ type ++ complex + + +- step +- 1 ++ value ++ pmt.intern("TEST") + + +- widget +- counter_slider ++ vlen ++ 1 + ++ ++ ++ blocks_throttle + +- orient +- Qt.Horizontal ++ alias ++ + + +- min_len +- 200 ++ comment ++ + + +- gui_hint ++ affinity + + + ++ _enabled ++ True ++ ++ + _coordinate +- (936, 392) ++ (266, 149) + + + _rotation + 0 + +- +- +- qtgui_time_sink_x + + id +- qtgui_time_sink_x_0_1_0 ++ blocks_throttle_0 + + +- _enabled ++ ignoretag + True + + ++ maxoutbuf ++ 0 ++ ++ ++ minoutbuf ++ 0 ++ ++ ++ samples_per_second ++ 50e3 ++ ++ + type + complex + + +- name ++ vlen ++ 1 ++ ++ ++ ++ blocks_throttle ++ ++ alias + + + +- size +- 5100 ++ comment ++ + + +- srate +- samp_rate ++ affinity ++ + + +- ymin +- -0.1 ++ _enabled ++ False + + +- ymax +- 1.5 ++ _coordinate ++ (267, 414) + + +- nconnections +- 1 ++ _rotation ++ 0 + + +- update_time +- 0.001 ++ id ++ blocks_throttle_0_0 + + +- tr_mode +- qtgui.TRIG_MODE_TAG ++ ignoretag ++ True + + +- tr_slope +- qtgui.TRIG_SLOPE_POS ++ maxoutbuf ++ 0 + + +- tr_level +- .5 ++ minoutbuf ++ 0 + + +- tr_delay +- 0.06 ++ samples_per_second ++ samp_rate + + +- tr_chan +- 0 ++ type ++ float + + +- tr_tag +- strobe ++ vlen ++ 1 + ++ ++ ++ blocks_vector_source_x + +- entags +- True ++ alias ++ + + +- gui_hint +- 1,1,1,1 ++ comment ++ + + + affinity + + + ++ _enabled ++ True ++ ++ + _coordinate +- (857, 173) ++ (13, 132) ++ ++ ++ _rotation ++ 0 ++ ++ ++ id ++ blocks_vector_source_x_0 ++ ++ ++ maxoutbuf ++ 0 ++ ++ ++ minoutbuf ++ 0 ++ ++ ++ type ++ complex ++ ++ ++ repeat ++ True ++ ++ ++ tags ++ tagged_streams.make_lengthtags((1024,), (0,), "testing tags 0") ++ ++ ++ vlen ++ 1 ++ ++ ++ vector ++ [0.85+0.5j, 0.85, 0.85, 0.85+0.5j] + (10000-4)*[0,] ++ ++ ++ ++ blocks_vector_source_x ++ ++ alias ++ ++ ++ ++ comment ++ ++ ++ ++ affinity ++ ++ ++ ++ _enabled ++ True ++ ++ ++ _coordinate ++ (15, 315) ++ ++ ++ _rotation ++ 0 ++ ++ ++ id ++ blocks_vector_source_x_0_0 ++ ++ ++ maxoutbuf ++ 0 ++ ++ ++ minoutbuf ++ 0 ++ ++ ++ type ++ complex ++ ++ ++ repeat ++ True ++ ++ ++ tags ++ tagged_streams.make_lengthtags((128,), (1500,), "second stream") ++ ++ ++ vlen ++ 1 ++ ++ ++ vector ++ 1500*[0,] + [0.25+0j,] + (10000-1500-1)*[0,] ++ ++ ++ ++ blocks_vector_source_x ++ ++ alias ++ ++ ++ ++ comment ++ ++ ++ ++ affinity ++ ++ ++ ++ _enabled ++ False ++ ++ ++ _coordinate ++ (15, 489) ++ ++ ++ _rotation ++ 0 ++ ++ ++ id ++ blocks_vector_source_x_0_0_0 ++ ++ ++ maxoutbuf ++ 0 ++ ++ ++ minoutbuf ++ 0 ++ ++ ++ type ++ float ++ ++ ++ repeat ++ True ++ ++ ++ tags ++ tagged_streams.make_lengthtags((128,), (110,), "second stream") ++ ++ ++ vlen ++ 1 ++ ++ ++ vector ++ 10*[0,] + [0.5,] + (100-10-1)*[0,] ++ ++ ++ ++ blocks_vector_source_x ++ ++ alias ++ ++ ++ ++ comment ++ ++ ++ ++ affinity ++ ++ ++ ++ _enabled ++ False ++ ++ ++ _coordinate ++ (15, 398) ++ ++ ++ _rotation ++ 0 ++ ++ ++ id ++ blocks_vector_source_x_0_1 ++ ++ ++ maxoutbuf ++ 0 ++ ++ ++ minoutbuf ++ 0 ++ ++ ++ type ++ float ++ ++ ++ repeat ++ True ++ ++ ++ tags ++ tagged_streams.make_lengthtags((1024,), (0,), "testing tags") ++ ++ ++ vlen ++ 1 ++ ++ ++ vector ++ [-0.85,] + (100-1)*[0,] ++ ++ ++ ++ fir_filter_xxx ++ ++ alias ++ ++ ++ ++ comment ++ ++ ++ ++ affinity ++ ++ ++ ++ decim ++ 1 ++ ++ ++ _enabled ++ True ++ ++ ++ _coordinate ++ (660, 76) ++ ++ ++ _rotation ++ 0 ++ ++ ++ id ++ fir_filter_xxx_0 ++ ++ ++ maxoutbuf ++ 0 ++ ++ ++ minoutbuf ++ 0 ++ ++ ++ samp_delay ++ int(ntaps) ++ ++ ++ taps ++ int(ntaps)*[1,]+[1,] ++ ++ ++ type ++ ccc ++ ++ ++ ++ import ++ ++ alias ++ ++ ++ ++ comment ++ ++ ++ ++ _enabled ++ True ++ ++ ++ _coordinate ++ (9, 71) ++ ++ ++ _rotation ++ 0 ++ ++ ++ id ++ import_0 ++ ++ ++ import ++ import scipy ++ ++ ++ ++ import ++ ++ alias ++ ++ ++ ++ comment ++ ++ ++ ++ _enabled ++ True ++ ++ ++ _coordinate ++ (99, 72) ++ ++ ++ _rotation ++ 0 ++ ++ ++ id ++ import_1 ++ ++ ++ import ++ from gnuradio.digital.utils import tagged_streams ++ ++ ++ ++ import ++ ++ alias ++ ++ ++ ++ comment ++ ++ ++ ++ _enabled ++ True ++ ++ ++ _coordinate ++ (253, 71) ++ ++ ++ _rotation ++ 0 ++ ++ ++ id ++ import_2 ++ ++ ++ import ++ import time ++ ++ ++ ++ qtgui_time_sink_x ++ ++ autoscale ++ False ++ ++ ++ alias ++ ++ ++ ++ comment ++ ++ ++ ++ ctrlpanel ++ False ++ ++ ++ affinity ++ ++ ++ ++ entags ++ True ++ ++ ++ _enabled ++ True ++ ++ ++ _coordinate ++ (860, 298) ++ ++ ++ gui_hint ++ ++ ++ ++ _rotation ++ 0 ++ ++ ++ grid ++ False ++ ++ ++ id ++ qtgui_time_sink_x_0 ++ ++ ++ legend ++ True ++ ++ ++ alpha1 ++ 1.0 ++ ++ ++ color1 ++ "blue" ++ ++ ++ label1 ++ ++ ++ ++ marker1 ++ -1 ++ ++ ++ style1 ++ 1 ++ ++ ++ width1 ++ 1 ++ ++ ++ alpha10 ++ 1.0 ++ ++ ++ color10 ++ "blue" ++ ++ ++ label10 ++ ++ ++ ++ marker10 ++ -1 ++ ++ ++ style10 ++ 1 ++ ++ ++ width10 ++ 1 ++ ++ ++ alpha2 ++ 1.0 ++ ++ ++ color2 ++ "red" ++ ++ ++ label2 ++ ++ ++ ++ marker2 ++ -1 ++ ++ ++ style2 ++ 1 ++ ++ ++ width2 ++ 1 ++ ++ ++ alpha3 ++ 1.0 ++ ++ ++ color3 ++ "green" ++ ++ ++ label3 ++ ++ ++ ++ marker3 ++ -1 ++ ++ ++ style3 ++ 1 ++ ++ ++ width3 ++ 1 ++ ++ ++ alpha4 ++ 1.0 ++ ++ ++ color4 ++ "black" ++ ++ ++ label4 ++ ++ ++ ++ marker4 ++ -1 ++ ++ ++ style4 ++ 1 ++ ++ ++ width4 ++ 1 ++ ++ ++ alpha5 ++ 1.0 ++ ++ ++ color5 ++ "cyan" ++ ++ ++ label5 ++ ++ ++ ++ marker5 ++ -1 ++ ++ ++ style5 ++ 1 ++ ++ ++ width5 ++ 1 ++ ++ ++ alpha6 ++ 1.0 ++ ++ ++ color6 ++ "magenta" ++ ++ ++ label6 ++ ++ ++ ++ marker6 ++ -1 ++ ++ ++ style6 ++ 1 ++ ++ ++ width6 ++ 1 ++ ++ ++ alpha7 ++ 1.0 ++ ++ ++ color7 ++ "yellow" ++ ++ ++ label7 ++ ++ ++ ++ marker7 ++ -1 ++ ++ ++ style7 ++ 1 ++ ++ ++ width7 ++ 1 ++ ++ ++ alpha8 ++ 1.0 ++ ++ ++ color8 ++ "dark red" ++ ++ ++ label8 ++ ++ ++ ++ marker8 ++ -1 ++ ++ ++ style8 ++ 1 ++ ++ ++ width8 ++ 1 ++ ++ ++ alpha9 ++ 1.0 ++ ++ ++ color9 ++ "dark green" ++ ++ ++ label9 ++ ++ ++ ++ marker9 ++ -1 ++ ++ ++ style9 ++ 1 ++ ++ ++ width9 ++ 1 ++ ++ ++ name ++ ++ ++ ++ nconnections ++ 2 ++ ++ ++ size ++ 18000 ++ ++ ++ srate ++ samp_rate ++ ++ ++ tr_chan ++ 0 ++ ++ ++ tr_delay ++ 0 ++ ++ ++ tr_level ++ 0.1 ++ ++ ++ tr_mode ++ qtgui.TRIG_MODE_NORM ++ ++ ++ tr_slope ++ qtgui.TRIG_SLOPE_POS ++ ++ ++ tr_tag ++ "" ++ ++ ++ type ++ complex ++ ++ ++ update_time ++ 0.10 ++ ++ ++ ylabel ++ Amplitude ++ ++ ++ yunit ++ "" ++ ++ ++ ymax ++ 1.5 ++ ++ ++ ymin ++ -0.1 ++ ++ ++ ++ qtgui_time_sink_x ++ ++ autoscale ++ False ++ ++ ++ alias ++ ++ ++ ++ comment ++ ++ ++ ++ ctrlpanel ++ False ++ ++ ++ affinity ++ ++ ++ ++ entags ++ True ++ ++ ++ _enabled ++ False ++ ++ ++ _coordinate ++ (475, 444) ++ ++ ++ gui_hint ++ ++ ++ ++ _rotation ++ 0 ++ ++ ++ grid ++ False ++ ++ ++ id ++ qtgui_time_sink_x_0_0 ++ ++ ++ legend ++ True ++ ++ ++ alpha1 ++ 1.0 ++ ++ ++ color1 ++ "blue" ++ ++ ++ label1 ++ ++ ++ ++ marker1 ++ -1 ++ ++ ++ style1 ++ 1 ++ ++ ++ width1 ++ 1 ++ ++ ++ alpha10 ++ 1.0 ++ ++ ++ color10 ++ "blue" ++ ++ ++ label10 ++ ++ ++ ++ marker10 ++ -1 ++ ++ ++ style10 ++ 1 ++ ++ ++ width10 ++ 1 ++ ++ ++ alpha2 ++ 1.0 ++ ++ ++ color2 ++ "red" ++ ++ ++ label2 ++ ++ ++ ++ marker2 ++ -1 ++ ++ ++ style2 ++ 1 ++ ++ ++ width2 ++ 1 ++ ++ ++ alpha3 ++ 1.0 ++ ++ ++ color3 ++ "green" ++ ++ ++ label3 ++ ++ ++ ++ marker3 ++ -1 ++ ++ ++ style3 ++ 1 ++ ++ ++ width3 ++ 1 ++ ++ ++ alpha4 ++ 1.0 ++ ++ ++ color4 ++ "black" ++ ++ ++ label4 ++ ++ ++ ++ marker4 ++ -1 ++ ++ ++ style4 ++ 1 ++ ++ ++ width4 ++ 1 ++ ++ ++ alpha5 ++ 1.0 ++ ++ ++ color5 ++ "cyan" ++ ++ ++ label5 ++ ++ ++ ++ marker5 ++ -1 ++ ++ ++ style5 ++ 1 ++ ++ ++ width5 ++ 1 ++ ++ ++ alpha6 ++ 1.0 ++ ++ ++ color6 ++ "magenta" ++ ++ ++ label6 ++ ++ ++ ++ marker6 ++ -1 ++ ++ ++ style6 ++ 1 ++ ++ ++ width6 ++ 1 ++ ++ ++ alpha7 ++ 1.0 ++ ++ ++ color7 ++ "yellow" ++ ++ ++ label7 ++ ++ ++ ++ marker7 ++ -1 ++ ++ ++ style7 ++ 1 ++ ++ ++ width7 ++ 1 ++ ++ ++ alpha8 ++ 1.0 ++ ++ ++ color8 ++ "dark red" ++ ++ ++ label8 ++ ++ ++ ++ marker8 ++ -1 ++ ++ ++ style8 ++ 1 ++ ++ ++ width8 ++ 1 ++ ++ ++ alpha9 ++ 1.0 ++ ++ ++ color9 ++ "dark green" ++ ++ ++ label9 ++ ++ ++ ++ marker9 ++ -1 ++ ++ ++ style9 ++ 1 ++ ++ ++ width9 ++ 1 ++ ++ ++ name ++ ++ ++ ++ nconnections ++ 2 ++ ++ ++ size ++ 1024 ++ ++ ++ srate ++ samp_rate ++ ++ ++ tr_chan ++ 1 ++ ++ ++ tr_delay ++ 0 ++ ++ ++ tr_level ++ 0.0 ++ ++ ++ tr_mode ++ qtgui.TRIG_MODE_TAG ++ ++ ++ tr_slope ++ qtgui.TRIG_SLOPE_POS ++ ++ ++ tr_tag ++ second stream ++ ++ ++ type ++ float ++ ++ ++ update_time ++ 0.10 ++ ++ ++ ylabel ++ Amplitude ++ ++ ++ yunit ++ "" ++ ++ ++ ymax ++ 1 ++ ++ ++ ymin ++ -1 ++ ++ ++ ++ qtgui_time_sink_x ++ ++ autoscale ++ False ++ ++ ++ alias ++ ++ ++ ++ comment ++ ++ ++ ++ ctrlpanel ++ False ++ ++ ++ affinity ++ ++ ++ ++ entags ++ True ++ ++ ++ _enabled ++ True ++ ++ ++ _coordinate ++ (1072, 77) ++ ++ ++ gui_hint ++ 1,0,1,1 ++ ++ ++ _rotation ++ 0 ++ ++ ++ grid ++ False ++ ++ ++ id ++ qtgui_time_sink_x_0_1 ++ ++ ++ legend ++ True ++ ++ ++ alpha1 ++ 1.0 ++ ++ ++ color1 ++ "blue" ++ ++ ++ label1 ++ ++ ++ ++ marker1 ++ -1 ++ ++ ++ style1 ++ 1 ++ ++ ++ width1 ++ 1 ++ ++ ++ alpha10 ++ 1.0 ++ ++ ++ color10 ++ "blue" ++ ++ ++ label10 ++ ++ ++ ++ marker10 ++ -1 ++ ++ ++ style10 ++ 1 + + +- _rotation +- 0 ++ width10 ++ 1 + +- +- +- blocks_vector_source_x + +- id +- blocks_vector_source_x_0_0 ++ alpha2 ++ 1.0 + + +- _enabled +- True ++ color2 ++ "red" + + +- type +- complex ++ label2 ++ + + +- vector +- 1500*[0,] + [0.25+0j,] + (10000-1500-1)*[0,] ++ marker2 ++ -1 + + +- tags +- tagged_streams.make_lengthtags((128,), (1500,), "second stream") ++ style2 ++ 1 + + +- repeat +- True ++ width2 ++ 1 + + +- vlen +- 1 ++ alpha3 ++ 1.0 + + +- affinity +- ++ color3 ++ "green" + + +- minoutbuf +- 0 ++ label3 ++ + + +- _coordinate +- (15, 315) ++ marker3 ++ -1 + + +- _rotation +- 0 ++ style3 ++ 1 + +- +- +- qtgui_time_sink_x + +- id +- qtgui_time_sink_x_0 ++ width3 ++ 1 + + +- _enabled +- True ++ alpha4 ++ 1.0 + + +- type +- complex ++ color4 ++ "black" + + +- name ++ label4 + + + +- size +- 18000 ++ marker4 ++ -1 + + +- srate +- samp_rate ++ style4 ++ 1 + + +- ymin +- -0.1 ++ width4 ++ 1 + + +- ymax +- 1.5 ++ alpha5 ++ 1.0 + + +- nconnections +- 2 ++ color5 ++ "cyan" + + +- update_time +- 0.10 ++ label5 ++ + + +- tr_mode +- qtgui.TRIG_MODE_NORM ++ marker5 ++ -1 + + +- tr_slope +- qtgui.TRIG_SLOPE_POS ++ style5 ++ 1 + + +- tr_level +- 0.1 ++ width5 ++ 1 + + +- tr_delay +- 0 ++ alpha6 ++ 1.0 + + +- tr_chan +- 0 ++ color6 ++ "magenta" + + +- tr_tag +- "" ++ label6 ++ + + +- entags +- True ++ marker6 ++ -1 + + +- gui_hint +- ++ style6 ++ 1 + + +- affinity +- ++ width6 ++ 1 + + +- _coordinate +- (860, 298) ++ alpha7 ++ 1.0 + + +- _rotation +- 0 ++ color7 ++ "yellow" + +- +- +- fir_filter_xxx + +- id +- fir_filter_xxx_0 ++ label7 ++ + + +- _enabled +- True ++ marker7 ++ -1 + + +- type +- ccc ++ style7 ++ 1 + + +- decim ++ width7 + 1 + + +- taps +- int(ntaps)*[1,]+[1,] ++ alpha8 ++ 1.0 + + +- samp_delay +- int(ntaps) ++ color8 ++ "dark red" + + +- affinity ++ label8 + + + +- minoutbuf +- 0 ++ marker8 ++ -1 + + +- _coordinate +- (660, 76) ++ style8 ++ 1 + + +- _rotation +- 0 ++ width8 ++ 1 + +- +- +- qtgui_time_sink_x + +- id +- qtgui_time_sink_x_0_1 ++ alpha9 ++ 1.0 + + +- _enabled +- True ++ color9 ++ "dark green" + + +- type +- complex ++ label9 ++ ++ ++ ++ marker9 ++ -1 ++ ++ ++ style9 ++ 1 ++ ++ ++ width9 ++ 1 + + + name + + + ++ nconnections ++ 2 ++ ++ + size + 1000 + +@@ -795,20 +2083,16 @@ + samp_rate + + +- ymin +- -0.1 +- +- +- ymax +- 4.5 ++ tr_chan ++ 0 + + +- nconnections +- 2 ++ tr_delay ++ 0.015 + + +- update_time +- 0.10 ++ tr_level ++ .1 + + + tr_mode +@@ -819,379 +2103,394 @@ + qtgui.TRIG_SLOPE_POS + + +- tr_level +- .1 ++ tr_tag ++ "" + + +- tr_delay +- 0.015 ++ type ++ complex + + +- tr_chan +- 0 ++ update_time ++ 0.10 + + +- tr_tag ++ ylabel ++ Amplitude ++ ++ ++ yunit + "" + + +- entags +- True ++ ymax ++ 4.5 + + +- gui_hint +- 1,0,1,1 ++ ymin ++ -0.1 ++ ++ ++ ++ qtgui_time_sink_x ++ ++ autoscale ++ False ++ ++ ++ alias ++ ++ ++ ++ comment ++ ++ ++ ++ ctrlpanel ++ False + + + affinity + + + ++ entags ++ True ++ ++ ++ _enabled ++ True ++ ++ + _coordinate +- (1072, 77) ++ (857, 173) ++ ++ ++ gui_hint ++ 1,1,1,1 + + + _rotation + 0 + +- +- +- qtgui_time_sink_x + +- id +- qtgui_time_sink_x_0_0 ++ grid ++ False + + +- _enabled +- False ++ id ++ qtgui_time_sink_x_0_1_0 + + +- type +- float ++ legend ++ True + + +- name +- ++ alpha1 ++ 1.0 + + +- size +- 1024 ++ color1 ++ "blue" + + +- srate +- samp_rate ++ label1 ++ + + +- ymin ++ marker1 + -1 + + +- ymax ++ style1 + 1 + + +- nconnections +- 2 ++ width1 ++ 1 + + +- update_time +- 0.10 ++ alpha10 ++ 1.0 + + +- tr_mode +- qtgui.TRIG_MODE_TAG ++ color10 ++ "blue" + + +- tr_slope +- qtgui.TRIG_SLOPE_POS ++ label10 ++ + + +- tr_level +- 0.0 ++ marker10 ++ -1 ++ ++ ++ style10 ++ 1 ++ ++ ++ width10 ++ 1 ++ ++ ++ alpha2 ++ 1.0 ++ ++ ++ color2 ++ "red" ++ ++ ++ label2 ++ + + +- tr_delay +- 0 ++ marker2 ++ -1 + + +- tr_chan ++ style2 + 1 + + +- tr_tag +- second stream ++ width2 ++ 1 + + +- entags +- True ++ alpha3 ++ 1.0 + + +- gui_hint +- ++ color3 ++ "green" + + +- affinity ++ label3 + + + +- _coordinate +- (475, 444) ++ marker3 ++ -1 + + +- _rotation +- 0 ++ style3 ++ 1 + +- +- +- blocks_vector_source_x + +- id +- blocks_vector_source_x_0_0_0 ++ width3 ++ 1 + + +- _enabled +- False ++ alpha4 ++ 1.0 + + +- type +- float ++ color4 ++ "black" + + +- vector +- 10*[0,] + [0.5,] + (100-10-1)*[0,] ++ label4 ++ + + +- tags +- tagged_streams.make_lengthtags((128,), (110,), "second stream") ++ marker4 ++ -1 + + +- repeat +- True ++ style4 ++ 1 + + +- vlen ++ width4 + 1 + + +- affinity +- ++ alpha5 ++ 1.0 + + +- minoutbuf +- 0 ++ color5 ++ "cyan" + + +- _coordinate +- (15, 489) ++ label5 ++ + + +- _rotation +- 0 ++ marker5 ++ -1 + +- +- +- blocks_vector_source_x + +- id +- blocks_vector_source_x_0_1 ++ style5 ++ 1 + + +- _enabled +- False ++ width5 ++ 1 + + +- type +- float ++ alpha6 ++ 1.0 + + +- vector +- [-0.85,] + (100-1)*[0,] ++ color6 ++ "magenta" + + +- tags +- tagged_streams.make_lengthtags((1024,), (0,), "testing tags") ++ label6 ++ + + +- repeat +- True ++ marker6 ++ -1 + + +- vlen ++ style6 + 1 + + +- affinity +- ++ width6 ++ 1 + + +- minoutbuf +- 0 ++ alpha7 ++ 1.0 + + +- _coordinate +- (15, 398) ++ color7 ++ "yellow" + + +- _rotation +- 0 ++ label7 ++ + +- +- +- blocks_throttle + +- id +- blocks_throttle_0_0 ++ marker7 ++ -1 + + +- _enabled +- False ++ style7 ++ 1 + + +- type +- float ++ width7 ++ 1 + + +- samples_per_second +- samp_rate ++ alpha8 ++ 1.0 + + +- vlen +- 1 ++ color8 ++ "dark red" + + +- affinity ++ label8 + + + +- minoutbuf +- 0 ++ marker8 ++ -1 + + +- _coordinate +- (267, 414) ++ style8 ++ 1 + + +- _rotation +- 0 ++ width8 ++ 1 + +- +- +- blocks_delay + +- id +- blocks_delay_0_0 ++ alpha9 ++ 1.0 + + +- _enabled +- True ++ color9 ++ "dark green" + + +- type +- complex ++ label9 ++ + + +- delay +- int(delay) ++ marker9 ++ -1 + + +- num_ports ++ style9 + 1 + + +- vlen ++ width9 + 1 + + +- affinity ++ name + + + +- minoutbuf +- 0 +- +- +- _coordinate +- (890, 44) ++ nconnections ++ 1 + + +- _rotation +- 0 ++ size ++ 5100 + +- +- +- variable_qtgui_range + +- id +- delay ++ srate ++ samp_rate + + +- _enabled +- True ++ tr_chan ++ 0 + + +- label +- Delay ++ tr_delay ++ 0.06 + + +- value +- 300 ++ tr_level ++ .5 + + +- start +- 0 ++ tr_mode ++ qtgui.TRIG_MODE_TAG + + +- stop +- 1000 ++ tr_slope ++ qtgui.TRIG_SLOPE_POS + + +- step +- 1 ++ tr_tag ++ strobe + + +- widget +- counter_slider ++ type ++ complex + + +- orient +- Qt.Horizontal ++ update_time ++ 0.001 + + +- min_len +- 200 ++ ylabel ++ Amplitude + + +- gui_hint +- ++ yunit ++ "" + + +- _coordinate +- (814, 390) ++ ymax ++ 1.5 + + +- _rotation +- 0 ++ ymin ++ -0.1 + + + +- blocks_vector_source_x_0 +- blocks_throttle_0 +- 0 +- 0 +- +- +- blocks_throttle_0 +- blocks_add_xx_0 +- 0 +- 0 +- +- +- blocks_delay_0 +- blocks_add_xx_0 +- 0 +- 1 +- +- + analog_fastnoise_source_x_0 + blocks_add_xx_1 + 0 +@@ -1210,28 +2509,28 @@ + 0 + + +- fir_filter_xxx_0 +- blocks_delay_0_0 ++ blocks_add_xx_1 ++ qtgui_time_sink_x_0 + 0 + 0 + + +- blocks_delay_0_0 +- qtgui_time_sink_x_0_1 ++ blocks_add_xx_1 ++ qtgui_time_sink_x_0_1_0 + 0 + 0 + + +- fir_filter_xxx_0 +- qtgui_time_sink_x_0_1 ++ blocks_delay_0 ++ blocks_add_xx_0 + 0 + 1 + + +- blocks_vector_source_x_0_0 +- qtgui_time_sink_x_0 ++ blocks_delay_0_0 ++ qtgui_time_sink_x_0_1 + 0 +- 1 ++ 0 + + + blocks_tags_strobe_0 +@@ -1240,28 +2539,34 @@ + 0 + + +- blocks_add_xx_1 +- qtgui_time_sink_x_0_1_0 ++ blocks_throttle_0 ++ blocks_add_xx_0 + 0 + 0 + + +- blocks_add_xx_1 +- qtgui_time_sink_x_0 ++ blocks_throttle_0_0 ++ qtgui_time_sink_x_0_0 + 0 + 0 + + +- blocks_vector_source_x_0_0_0 +- qtgui_time_sink_x_0_0 ++ blocks_vector_source_x_0 ++ blocks_throttle_0 ++ 0 ++ 0 ++ ++ ++ blocks_vector_source_x_0_0 ++ qtgui_time_sink_x_0 + 0 + 1 + + +- blocks_throttle_0_0 ++ blocks_vector_source_x_0_0_0 + qtgui_time_sink_x_0_0 + 0 +- 0 ++ 1 + + + blocks_vector_source_x_0_1 +@@ -1269,4 +2574,16 @@ + 0 + 0 + ++ ++ fir_filter_xxx_0 ++ blocks_delay_0_0 ++ 0 ++ 0 ++ ++ ++ fir_filter_xxx_0 ++ qtgui_time_sink_x_0_1 ++ 0 ++ 1 ++ + +-- +2.11.0 +