summaryrefslogtreecommitdiff
path: root/gr-utils
diff options
context:
space:
mode:
authorTom Rondeau2011-03-17 11:11:56 -0700
committerTom Rondeau2011-03-17 11:11:56 -0700
commitcc4cd11bb3443f79771b6b18aaf40105a2f9f088 (patch)
tree093b2bd665fbe890a584a732c72ae04ecd4b6c5c /gr-utils
parent4d1426b8db5be20583a6efb380d564a55a28fd09 (diff)
downloadgnuradio-cc4cd11bb3443f79771b6b18aaf40105a2f9f088.tar.gz
gnuradio-cc4cd11bb3443f79771b6b18aaf40105a2f9f088.tar.bz2
gnuradio-cc4cd11bb3443f79771b6b18aaf40105a2f9f088.zip
gr-utils: Adding save and open actions to filter designer.
Diffstat (limited to 'gr-utils')
-rwxr-xr-xgr-utils/src/python/gr_filter_design.py105
-rw-r--r--gr-utils/src/python/pyqt_filter.py61
-rw-r--r--gr-utils/src/python/pyqt_filter.ui505
3 files changed, 385 insertions, 286 deletions
diff --git a/gr-utils/src/python/gr_filter_design.py b/gr-utils/src/python/gr_filter_design.py
index 56ca84d78..265bb3a03 100755
--- a/gr-utils/src/python/gr_filter_design.py
+++ b/gr-utils/src/python/gr_filter_design.py
@@ -1,6 +1,6 @@
#!/usr/bin/env python
-import sys, os
+import sys, os, csv
from optparse import OptionParser
from gnuradio import gr, blks2, eng_notation
@@ -24,7 +24,7 @@ except ImportError:
raise SystemExit, 1
try:
- from gnuradio.pyqt_filter import Ui_MainWindow
+ from pyqt_filter import Ui_MainWindow
except ImportError:
print "Could not import from pyqt_filter. Please build with \"pyuic4 pyqt_filter.ui -o pyqt_filter.py\""
raise SystemExit, 1
@@ -36,6 +36,14 @@ class gr_plot_filter(QtGui.QMainWindow):
self.gui = Ui_MainWindow()
self.gui.setupUi(self)
+ self.connect(self.gui.action_save,
+ Qt.SIGNAL("activated()"),
+ self.action_save_dialog)
+ self.connect(self.gui.action_open,
+ Qt.SIGNAL("activated()"),
+ self.action_open_dialog)
+
+
self.connect(self.gui.filterTypeComboBox,
Qt.SIGNAL("currentIndexChanged(const QString&)"),
self.changed_filter_type)
@@ -306,17 +314,10 @@ class gr_plot_filter(QtGui.QMainWindow):
"Root Raised Cosine" : self.design_win_rrc,
"Gaussian" : self.design_win_gaus}
wintype = self.filterWindows[winstr]
- taps,r = designer[ftype](fs, gain, wintype)
+ taps,design,r = designer[ftype](fs, gain, wintype)
if(r):
- self.taps = scipy.array(taps)
- self.get_fft(fs, self.taps, self.nfftpts)
- self.update_time_curves()
- self.update_freq_curves()
- self.update_phase_curves()
- self.update_group_curves()
-
- self.gui.nTapsEdit.setText(Qt.QString("%1").arg(self.taps.size))
+ self.draw_plots(taps, design)
# Filter design functions using a window
@@ -334,9 +335,12 @@ class gr_plot_filter(QtGui.QMainWindow):
taps = gr.firdes.low_pass_2(gain, fs, pb, tb,
atten, wintype)
- return (taps, ret)
+ design = {"fs": fs, "gain": gain, "wintype": wintype,
+ "filttype": "lpf", "passband": pb, "stopband": sb,
+ "atten": atten}
+ return (taps, design, ret)
else:
- return ([], ret)
+ return ([], [], ret)
def design_win_bpf(self, fs, gain, wintype):
ret = True
@@ -651,6 +655,81 @@ class gr_plot_filter(QtGui.QMainWindow):
self.gui.groupPlot.replot()
+ def action_save_dialog(self):
+ filename = QtGui.QFileDialog.getSaveFileName(self, "Save CSV Filter File", ".", "")
+ handle = open(filename, "wb")
+ csvhandle = csv.writer(handle, delimiter=",")
+ for k in self.design.keys():
+ csvhandle.writerow([k, self.design[k]])
+ csvhandle.writerow(["taps",] + self.taps.tolist())
+ handle.close()
+
+ def action_open_dialog(self):
+ filename = QtGui.QFileDialog.getOpenFileName(self, "Open CSV Filter File", ".", "")
+ handle = open(filename, "rb")
+ csvhandle = csv.reader(handle, delimiter=",")
+ taps = []
+ design = {}
+ for row in csvhandle:
+ if(row[0] != "taps"):
+ try: # if it's not a float, its a string
+ design[row[0]] = float(row[1])
+ except ValueError:
+ design[row[0]] = row[1]
+ else:
+ taps = [float(r) for r in row[1:]]
+ handle.close()
+ self.draw_plots(taps, design)
+
+ self.gui.sampleRateEdit.setText(Qt.QString("%1").arg(design["fs"]))
+ self.gui.filterGainEdit.setText(Qt.QString("%1").arg(design["gain"]))
+
+ #FIXME: work on setting filter type and window type dropdown boxes
+ #FIXME: enable this and design for all other filt types
+ if(design["filttype"] == "lpf"):
+ self.gui.endofLpfPassBandEdit.setText(Qt.QString("%1").arg(design["passband"]))
+ self.gui.startofLpfStopBandEdit.setText(Qt.QString("%1").arg(design["stopband"]))
+ self.gui.lpfStopBandAttenEdit.setText(Qt.QString("%1").arg(design["atten"]))
+ elif(design["filttype"] == "bpf"):
+ self.gui.startofBpfPassBandEdit
+ self.gui.endofBpfPassBandEdit
+ self.gui.bpfTransitionEdit
+ self.gui.bpfStopBandAttenEdit
+ elif(design["filttype"] == "cbpf"):
+ self.gui.startofBpfPassBandEdit
+ self.gui.endofBpfPassBandEdit
+ self.gui.bpfTransitionEdit
+ self.gui.bpfStopBandAttenEdit
+ elif(design["filttype"] == "bnf"):
+ self.gui.startofBnfStopBandEdit
+ self.gui.endofBnfStopBandEdit
+ self.gui.bnfTransitionEdit
+ self.gui.bnfStopBandAttenEdit
+ elif(design["filttype"] == "hpf"):
+ self.gui.endofHpfStopBandEdit
+ self.gui.startofHpfPassBandEdit
+ self.gui.hpfStopBandAttenEdit
+ elif(design["filttype"] == "rrc"):
+ self.gui.rrcSymbolRateEdit
+ self.gui.rrcAlphaEdit
+ self.gui.rrcNumTapsEdit
+ elif(design["filttype"] == "gauss"):
+ self.gui.gausSymbolRateEdit
+ self.gui.gausBTEdit
+ self.gui.gausNumTapsEdit
+
+
+ def draw_plots(self, taps, design):
+ self.design = design
+ self.taps = scipy.array(taps)
+ self.get_fft(self.design["fs"], self.taps, self.nfftpts)
+ self.update_time_curves()
+ self.update_freq_curves()
+ self.update_phase_curves()
+ self.update_group_curves()
+
+ self.gui.nTapsEdit.setText(Qt.QString("%1").arg(self.taps.size))
+
def setup_options():
usage="%prog: [options] (input_filename)"
diff --git a/gr-utils/src/python/pyqt_filter.py b/gr-utils/src/python/pyqt_filter.py
index 12ad183b0..0c781f234 100644
--- a/gr-utils/src/python/pyqt_filter.py
+++ b/gr-utils/src/python/pyqt_filter.py
@@ -2,8 +2,8 @@
# Form implementation generated from reading ui file 'pyqt_filter.ui'
#
-# Created: Tue Aug 25 11:13:57 2009
-# by: PyQt4 UI code generator 4.4.3
+# Created: Thu Mar 17 10:51:17 2011
+# by: PyQt4 UI code generator 4.7.4
#
# WARNING! All changes made in this file will be lost!
@@ -27,23 +27,23 @@ class Ui_MainWindow(object):
self.verticalLayout.setObjectName("verticalLayout")
self.filterTypeComboBox = QtGui.QComboBox(self.filterFrame)
self.filterTypeComboBox.setObjectName("filterTypeComboBox")
- self.filterTypeComboBox.addItem(QtCore.QString())
- self.filterTypeComboBox.addItem(QtCore.QString())
- self.filterTypeComboBox.addItem(QtCore.QString())
- self.filterTypeComboBox.addItem(QtCore.QString())
- self.filterTypeComboBox.addItem(QtCore.QString())
- self.filterTypeComboBox.addItem(QtCore.QString())
- self.filterTypeComboBox.addItem(QtCore.QString())
+ self.filterTypeComboBox.addItem("")
+ self.filterTypeComboBox.addItem("")
+ self.filterTypeComboBox.addItem("")
+ self.filterTypeComboBox.addItem("")
+ self.filterTypeComboBox.addItem("")
+ self.filterTypeComboBox.addItem("")
+ self.filterTypeComboBox.addItem("")
self.verticalLayout.addWidget(self.filterTypeComboBox)
self.filterDesignTypeComboBox = QtGui.QComboBox(self.filterFrame)
self.filterDesignTypeComboBox.setObjectName("filterDesignTypeComboBox")
- self.filterDesignTypeComboBox.addItem(QtCore.QString())
- self.filterDesignTypeComboBox.addItem(QtCore.QString())
- self.filterDesignTypeComboBox.addItem(QtCore.QString())
- self.filterDesignTypeComboBox.addItem(QtCore.QString())
- self.filterDesignTypeComboBox.addItem(QtCore.QString())
- self.filterDesignTypeComboBox.addItem(QtCore.QString())
- self.filterDesignTypeComboBox.addItem(QtCore.QString())
+ self.filterDesignTypeComboBox.addItem("")
+ self.filterDesignTypeComboBox.addItem("")
+ self.filterDesignTypeComboBox.addItem("")
+ self.filterDesignTypeComboBox.addItem("")
+ self.filterDesignTypeComboBox.addItem("")
+ self.filterDesignTypeComboBox.addItem("")
+ self.filterDesignTypeComboBox.addItem("")
self.verticalLayout.addWidget(self.filterDesignTypeComboBox)
self.globalParamsLayout = QtGui.QFormLayout()
self.globalParamsLayout.setFieldGrowthPolicy(QtGui.QFormLayout.AllNonFixedFieldsGrow)
@@ -255,6 +255,7 @@ class Ui_MainWindow(object):
self.nTapsEdit.setMaximumSize(QtCore.QSize(100, 16777215))
self.nTapsEdit.setFrameShape(QtGui.QFrame.Box)
self.nTapsEdit.setFrameShadow(QtGui.QFrame.Raised)
+ self.nTapsEdit.setText("")
self.nTapsEdit.setObjectName("nTapsEdit")
self.formLayout_8.setWidget(1, QtGui.QFormLayout.FieldRole, self.nTapsEdit)
self.verticalLayout.addWidget(self.filterPropsBox)
@@ -285,7 +286,7 @@ class Ui_MainWindow(object):
self.freqTab.setObjectName("freqTab")
self.horizontalLayout_2 = QtGui.QHBoxLayout(self.freqTab)
self.horizontalLayout_2.setObjectName("horizontalLayout_2")
- self.freqPlot = Qwt5.QwtPlot(self.freqTab)
+ self.freqPlot = QwtPlot(self.freqTab)
self.freqPlot.setObjectName("freqPlot")
self.horizontalLayout_2.addWidget(self.freqPlot)
self.tabGroup.addTab(self.freqTab, "")
@@ -293,7 +294,7 @@ class Ui_MainWindow(object):
self.timeTab.setObjectName("timeTab")
self.horizontalLayout = QtGui.QHBoxLayout(self.timeTab)
self.horizontalLayout.setObjectName("horizontalLayout")
- self.timePlot = Qwt5.QwtPlot(self.timeTab)
+ self.timePlot = QwtPlot(self.timeTab)
self.timePlot.setObjectName("timePlot")
self.horizontalLayout.addWidget(self.timePlot)
self.tabGroup.addTab(self.timeTab, "")
@@ -301,7 +302,7 @@ class Ui_MainWindow(object):
self.phaseTab.setObjectName("phaseTab")
self.horizontalLayout_3 = QtGui.QHBoxLayout(self.phaseTab)
self.horizontalLayout_3.setObjectName("horizontalLayout_3")
- self.phasePlot = Qwt5.QwtPlot(self.phaseTab)
+ self.phasePlot = QwtPlot(self.phaseTab)
self.phasePlot.setObjectName("phasePlot")
self.horizontalLayout_3.addWidget(self.phasePlot)
self.tabGroup.addTab(self.phaseTab, "")
@@ -309,14 +310,14 @@ class Ui_MainWindow(object):
self.groupTab.setObjectName("groupTab")
self.horizontalLayout_4 = QtGui.QHBoxLayout(self.groupTab)
self.horizontalLayout_4.setObjectName("horizontalLayout_4")
- self.groupPlot = Qwt5.QwtPlot(self.groupTab)
+ self.groupPlot = QwtPlot(self.groupTab)
self.groupPlot.setObjectName("groupPlot")
self.horizontalLayout_4.addWidget(self.groupPlot)
self.tabGroup.addTab(self.groupTab, "")
self.gridLayout.addWidget(self.tabGroup, 1, 1, 1, 1)
MainWindow.setCentralWidget(self.centralwidget)
self.menubar = QtGui.QMenuBar(MainWindow)
- self.menubar.setGeometry(QtCore.QRect(0, 0, 1124, 24))
+ self.menubar.setGeometry(QtCore.QRect(0, 0, 1124, 27))
self.menubar.setObjectName("menubar")
self.menu_File = QtGui.QMenu(self.menubar)
self.menu_File.setObjectName("menu_File")
@@ -324,15 +325,19 @@ class Ui_MainWindow(object):
self.statusbar = QtGui.QStatusBar(MainWindow)
self.statusbar.setObjectName("statusbar")
MainWindow.setStatusBar(self.statusbar)
- self.action_open = QtGui.QAction(MainWindow)
- self.action_open.setObjectName("action_open")
self.action_exit = QtGui.QAction(MainWindow)
self.action_exit.setObjectName("action_exit")
+ self.action_save = QtGui.QAction(MainWindow)
+ self.action_save.setObjectName("action_save")
+ self.action_open = QtGui.QAction(MainWindow)
+ self.action_open.setObjectName("action_open")
+ self.menu_File.addAction(self.action_open)
+ self.menu_File.addAction(self.action_save)
self.menu_File.addAction(self.action_exit)
self.menubar.addAction(self.menu_File.menuAction())
self.retranslateUi(MainWindow)
- self.filterTypeWidget.setCurrentIndex(0)
+ self.filterTypeWidget.setCurrentIndex(5)
self.tabGroup.setCurrentIndex(0)
QtCore.QObject.connect(self.action_exit, QtCore.SIGNAL("activated()"), MainWindow.close)
QtCore.QMetaObject.connectSlotsByName(MainWindow)
@@ -419,8 +424,12 @@ class Ui_MainWindow(object):
self.tabGroup.setTabText(self.tabGroup.indexOf(self.phaseTab), QtGui.QApplication.translate("MainWindow", "Phase", None, QtGui.QApplication.UnicodeUTF8))
self.tabGroup.setTabText(self.tabGroup.indexOf(self.groupTab), QtGui.QApplication.translate("MainWindow", "Group Delay", None, QtGui.QApplication.UnicodeUTF8))
self.menu_File.setTitle(QtGui.QApplication.translate("MainWindow", "&File", None, QtGui.QApplication.UnicodeUTF8))
+ self.action_exit.setText(QtGui.QApplication.translate("MainWindow", "E&xit", None, QtGui.QApplication.UnicodeUTF8))
+ self.action_save.setText(QtGui.QApplication.translate("MainWindow", "&Save", None, QtGui.QApplication.UnicodeUTF8))
+ self.action_save.setShortcut(QtGui.QApplication.translate("MainWindow", "Ctrl+S", None, QtGui.QApplication.UnicodeUTF8))
self.action_open.setText(QtGui.QApplication.translate("MainWindow", "&Open", None, QtGui.QApplication.UnicodeUTF8))
self.action_open.setShortcut(QtGui.QApplication.translate("MainWindow", "Ctrl+O", None, QtGui.QApplication.UnicodeUTF8))
- self.action_exit.setText(QtGui.QApplication.translate("MainWindow", "E&xit", None, QtGui.QApplication.UnicodeUTF8))
-from PyQt4 import Qwt5
+#from qwt_plot import QwtPlot
+from PyQt4.Qwt5 import QwtPlot
+
diff --git a/gr-utils/src/python/pyqt_filter.ui b/gr-utils/src/python/pyqt_filter.ui
index 9b31112e8..9853352e2 100644
--- a/gr-utils/src/python/pyqt_filter.ui
+++ b/gr-utils/src/python/pyqt_filter.ui
@@ -1,7 +1,8 @@
-<ui version="4.0" >
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
<class>MainWindow</class>
- <widget class="QMainWindow" name="MainWindow" >
- <property name="geometry" >
+ <widget class="QMainWindow" name="MainWindow">
+ <property name="geometry">
<rect>
<x>0</x>
<y>0</y>
@@ -9,131 +10,131 @@
<height>696</height>
</rect>
</property>
- <property name="windowTitle" >
+ <property name="windowTitle">
<string>GNU Radio Filter Design Tool</string>
</property>
- <widget class="QWidget" name="centralwidget" >
- <layout class="QGridLayout" name="gridLayout" >
- <item row="1" column="0" >
- <widget class="QFrame" name="filterFrame" >
- <property name="minimumSize" >
+ <widget class="QWidget" name="centralwidget">
+ <layout class="QGridLayout" name="gridLayout">
+ <item row="1" column="0">
+ <widget class="QFrame" name="filterFrame">
+ <property name="minimumSize">
<size>
<width>300</width>
<height>0</height>
</size>
</property>
- <property name="maximumSize" >
+ <property name="maximumSize">
<size>
<width>300</width>
<height>16777215</height>
</size>
</property>
- <property name="frameShape" >
+ <property name="frameShape">
<enum>QFrame::StyledPanel</enum>
</property>
- <property name="frameShadow" >
+ <property name="frameShadow">
<enum>QFrame::Raised</enum>
</property>
- <layout class="QVBoxLayout" name="verticalLayout" >
+ <layout class="QVBoxLayout" name="verticalLayout">
<item>
- <widget class="QComboBox" name="filterTypeComboBox" >
+ <widget class="QComboBox" name="filterTypeComboBox">
<item>
- <property name="text" >
+ <property name="text">
<string>Low Pass</string>
</property>
</item>
<item>
- <property name="text" >
+ <property name="text">
<string>Band Pass</string>
</property>
</item>
<item>
- <property name="text" >
+ <property name="text">
<string>Complex Band Pass</string>
</property>
</item>
<item>
- <property name="text" >
+ <property name="text">
<string>Band Notch</string>
</property>
</item>
<item>
- <property name="text" >
+ <property name="text">
<string>High Pass</string>
</property>
</item>
<item>
- <property name="text" >
+ <property name="text">
<string>Root Raised Cosine</string>
</property>
</item>
<item>
- <property name="text" >
+ <property name="text">
<string>Gaussian</string>
</property>
</item>
</widget>
</item>
<item>
- <widget class="QComboBox" name="filterDesignTypeComboBox" >
+ <widget class="QComboBox" name="filterDesignTypeComboBox">
<item>
- <property name="text" >
+ <property name="text">
<string>Hamming Window</string>
</property>
</item>
<item>
- <property name="text" >
+ <property name="text">
<string>Hann Window</string>
</property>
</item>
<item>
- <property name="text" >
+ <property name="text">
<string>Blackman Window</string>
</property>
</item>
<item>
- <property name="text" >
+ <property name="text">
<string>Rectangular Window</string>
</property>
</item>
<item>
- <property name="text" >
+ <property name="text">
<string>Kaiser Window</string>
</property>
</item>
<item>
- <property name="text" >
+ <property name="text">
<string>Blackman-harris Window</string>
</property>
</item>
<item>
- <property name="text" >
+ <property name="text">
<string>Equiripple</string>
</property>
</item>
</widget>
</item>
<item>
- <layout class="QFormLayout" name="globalParamsLayout" >
- <property name="fieldGrowthPolicy" >
+ <layout class="QFormLayout" name="globalParamsLayout">
+ <property name="fieldGrowthPolicy">
<enum>QFormLayout::AllNonFixedFieldsGrow</enum>
</property>
- <item row="0" column="0" >
- <widget class="QLabel" name="sampleRateLabel" >
- <property name="maximumSize" >
+ <item row="0" column="0">
+ <widget class="QLabel" name="sampleRateLabel">
+ <property name="maximumSize">
<size>
<width>16777215</width>
<height>30</height>
</size>
</property>
- <property name="text" >
+ <property name="text">
<string>Sample Rate (sps)</string>
</property>
</widget>
</item>
- <item row="0" column="1" >
- <widget class="QLineEdit" name="sampleRateEdit" >
- <property name="maximumSize" >
+ <item row="0" column="1">
+ <widget class="QLineEdit" name="sampleRateEdit">
+ <property name="maximumSize">
<size>
<width>16777215</width>
<height>30</height>
@@ -141,332 +142,332 @@
</property>
</widget>
</item>
- <item row="1" column="0" >
- <widget class="QLabel" name="filterGainLabel" >
- <property name="text" >
+ <item row="1" column="0">
+ <widget class="QLabel" name="filterGainLabel">
+ <property name="text">
<string>Filter Gain</string>
</property>
</widget>
</item>
- <item row="1" column="1" >
- <widget class="QLineEdit" name="filterGainEdit" />
+ <item row="1" column="1">
+ <widget class="QLineEdit" name="filterGainEdit"/>
</item>
</layout>
</item>
<item>
- <widget class="QStackedWidget" name="filterTypeWidget" >
- <property name="currentIndex" >
- <number>0</number>
+ <widget class="QStackedWidget" name="filterTypeWidget">
+ <property name="currentIndex">
+ <number>5</number>
</property>
- <widget class="QWidget" name="firlpfPage" >
- <layout class="QFormLayout" name="formLayout" >
- <item row="0" column="0" >
- <widget class="QLabel" name="endofLpfPassBandLabel" >
- <property name="text" >
+ <widget class="QWidget" name="firlpfPage">
+ <layout class="QFormLayout" name="formLayout">
+ <item row="0" column="0">
+ <widget class="QLabel" name="endofLpfPassBandLabel">
+ <property name="text">
<string>End of Pass Band (Hz)</string>
</property>
</widget>
</item>
- <item row="0" column="1" >
- <widget class="QLineEdit" name="endofLpfPassBandEdit" />
+ <item row="0" column="1">
+ <widget class="QLineEdit" name="endofLpfPassBandEdit"/>
</item>
- <item row="1" column="0" >
- <widget class="QLabel" name="startofLpfStopBandLabel" >
- <property name="text" >
+ <item row="1" column="0">
+ <widget class="QLabel" name="startofLpfStopBandLabel">
+ <property name="text">
<string>Start of Stop Band (Hz)</string>
</property>
</widget>
</item>
- <item row="1" column="1" >
- <widget class="QLineEdit" name="startofLpfStopBandEdit" />
+ <item row="1" column="1">
+ <widget class="QLineEdit" name="startofLpfStopBandEdit"/>
</item>
- <item row="2" column="0" >
- <widget class="QLabel" name="lpfStopBandAttenLabel" >
- <property name="text" >
+ <item row="2" column="0">
+ <widget class="QLabel" name="lpfStopBandAttenLabel">
+ <property name="text">
<string>Stop Band Attenuation (dB)</string>
</property>
</widget>
</item>
- <item row="2" column="1" >
- <widget class="QLineEdit" name="lpfStopBandAttenEdit" />
+ <item row="2" column="1">
+ <widget class="QLineEdit" name="lpfStopBandAttenEdit"/>
</item>
- <item row="3" column="1" >
- <widget class="QLineEdit" name="lpfPassBandRippleEdit" />
+ <item row="3" column="1">
+ <widget class="QLineEdit" name="lpfPassBandRippleEdit"/>
</item>
- <item row="3" column="0" >
- <widget class="QLabel" name="lpfPassBandRippleLabel" >
- <property name="text" >
+ <item row="3" column="0">
+ <widget class="QLabel" name="lpfPassBandRippleLabel">
+ <property name="text">
<string>Pass Band Ripple (dB)</string>
</property>
</widget>
</item>
</layout>
</widget>
- <widget class="QWidget" name="firbpfPage" >
- <layout class="QFormLayout" name="formLayout_2" >
- <item row="0" column="0" >
- <widget class="QLabel" name="startofBpfPassBandLabel" >
- <property name="text" >
+ <widget class="QWidget" name="firbpfPage">
+ <layout class="QFormLayout" name="formLayout_2">
+ <item row="0" column="0">
+ <widget class="QLabel" name="startofBpfPassBandLabel">
+ <property name="text">
<string>Start of Pass Band (Hz)</string>
</property>
</widget>
</item>
- <item row="0" column="1" >
- <widget class="QLineEdit" name="startofBpfPassBandEdit" />
+ <item row="0" column="1">
+ <widget class="QLineEdit" name="startofBpfPassBandEdit"/>
</item>
- <item row="1" column="0" >
- <widget class="QLabel" name="endofBpfPassBandLabel" >
- <property name="text" >
+ <item row="1" column="0">
+ <widget class="QLabel" name="endofBpfPassBandLabel">
+ <property name="text">
<string>End of Pass Band (Hz)</string>
</property>
</widget>
</item>
- <item row="1" column="1" >
- <widget class="QLineEdit" name="endofBpfPassBandEdit" />
+ <item row="1" column="1">
+ <widget class="QLineEdit" name="endofBpfPassBandEdit"/>
</item>
- <item row="3" column="1" >
- <widget class="QLineEdit" name="bpfStopBandAttenEdit" />
+ <item row="3" column="1">
+ <widget class="QLineEdit" name="bpfStopBandAttenEdit"/>
</item>
- <item row="3" column="0" >
- <widget class="QLabel" name="bpfStopBandAttenLabel" >
- <property name="text" >
+ <item row="3" column="0">
+ <widget class="QLabel" name="bpfStopBandAttenLabel">
+ <property name="text">
<string>Stop Band Attenuation (dB)</string>
</property>
</widget>
</item>
- <item row="2" column="0" >
- <widget class="QLabel" name="bpfTransitionLabel" >
- <property name="text" >
+ <item row="2" column="0">
+ <widget class="QLabel" name="bpfTransitionLabel">
+ <property name="text">
<string>Transition Width (Hz)</string>
</property>
</widget>
</item>
- <item row="2" column="1" >
- <widget class="QLineEdit" name="bpfTransitionEdit" />
+ <item row="2" column="1">
+ <widget class="QLineEdit" name="bpfTransitionEdit"/>
</item>
- <item row="4" column="1" >
- <widget class="QLineEdit" name="bpfPassBandRippleEdit" />
+ <item row="4" column="1">
+ <widget class="QLineEdit" name="bpfPassBandRippleEdit"/>
</item>
- <item row="4" column="0" >
- <widget class="QLabel" name="bpfPassBandRippleLabel" >
- <property name="text" >
+ <item row="4" column="0">
+ <widget class="QLabel" name="bpfPassBandRippleLabel">
+ <property name="text">
<string>Pass Band Ripple (dB)</string>
</property>
</widget>
</item>
</layout>
</widget>
- <widget class="QWidget" name="firbnfPage" >
- <layout class="QFormLayout" name="formLayout_5" >
- <property name="fieldGrowthPolicy" >
+ <widget class="QWidget" name="firbnfPage">
+ <layout class="QFormLayout" name="formLayout_5">
+ <property name="fieldGrowthPolicy">
<enum>QFormLayout::AllNonFixedFieldsGrow</enum>
</property>
- <item row="0" column="0" >
- <widget class="QLabel" name="startofBnfStopBandLabel" >
- <property name="text" >
+ <item row="0" column="0">
+ <widget class="QLabel" name="startofBnfStopBandLabel">
+ <property name="text">
<string>Start of Stop Band (Hz)</string>
</property>
</widget>
</item>
- <item row="0" column="1" >
- <widget class="QLineEdit" name="startofBnfStopBandEdit" />
+ <item row="0" column="1">
+ <widget class="QLineEdit" name="startofBnfStopBandEdit"/>
</item>
- <item row="1" column="0" >
- <widget class="QLabel" name="endofBnfStopBandLabel" >
- <property name="text" >
+ <item row="1" column="0">
+ <widget class="QLabel" name="endofBnfStopBandLabel">
+ <property name="text">
<string>End of Stop Band (Hz)</string>
</property>
</widget>
</item>
- <item row="1" column="1" >
- <widget class="QLineEdit" name="endofBnfStopBandEdit" />
+ <item row="1" column="1">
+ <widget class="QLineEdit" name="endofBnfStopBandEdit"/>
</item>
- <item row="2" column="0" >
- <widget class="QLabel" name="bnfTransitionLabel" >
- <property name="text" >
+ <item row="2" column="0">
+ <widget class="QLabel" name="bnfTransitionLabel">
+ <property name="text">
<string>Transition Width (Hz)</string>
</property>
</widget>
</item>
- <item row="2" column="1" >
- <widget class="QLineEdit" name="bnfTransitionEdit" />
+ <item row="2" column="1">
+ <widget class="QLineEdit" name="bnfTransitionEdit"/>
</item>
- <item row="3" column="0" >
- <widget class="QLabel" name="bnfStopBandAttenLabel" >
- <property name="text" >
+ <item row="3" column="0">
+ <widget class="QLabel" name="bnfStopBandAttenLabel">
+ <property name="text">
<string>Stop Band Attenuation (dB)</string>
</property>
</widget>
</item>
- <item row="3" column="1" >
- <widget class="QLineEdit" name="bnfStopBandAttenEdit" />
+ <item row="3" column="1">
+ <widget class="QLineEdit" name="bnfStopBandAttenEdit"/>
</item>
- <item row="4" column="0" >
- <widget class="QLabel" name="bnfPassBandRippleLabel" >
- <property name="text" >
+ <item row="4" column="0">
+ <widget class="QLabel" name="bnfPassBandRippleLabel">
+ <property name="text">
<string>Pass Band Ripple (dB)</string>
</property>
</widget>
</item>
- <item row="4" column="1" >
- <widget class="QLineEdit" name="bnfPassBandRippleEdit" />
+ <item row="4" column="1">
+ <widget class="QLineEdit" name="bnfPassBandRippleEdit"/>
</item>
</layout>
</widget>
- <widget class="QWidget" name="firhpfPage" >
- <layout class="QFormLayout" name="formLayout_3" >
- <property name="fieldGrowthPolicy" >
+ <widget class="QWidget" name="firhpfPage">
+ <layout class="QFormLayout" name="formLayout_3">
+ <property name="fieldGrowthPolicy">
<enum>QFormLayout::AllNonFixedFieldsGrow</enum>
</property>
- <item row="0" column="0" >
- <widget class="QLabel" name="endofHpfStopBandLabel" >
- <property name="text" >
+ <item row="0" column="0">
+ <widget class="QLabel" name="endofHpfStopBandLabel">
+ <property name="text">
<string>End of Stop Band (Hz)</string>
</property>
</widget>
</item>
- <item row="0" column="1" >
- <widget class="QLineEdit" name="endofHpfStopBandEdit" />
+ <item row="0" column="1">
+ <widget class="QLineEdit" name="endofHpfStopBandEdit"/>
</item>
- <item row="1" column="0" >
- <widget class="QLabel" name="startofHpfPassBandLabel" >
- <property name="text" >
+ <item row="1" column="0">
+ <widget class="QLabel" name="startofHpfPassBandLabel">
+ <property name="text">
<string>Start of Pass Band (Hz)</string>
</property>
</widget>
</item>
- <item row="1" column="1" >
- <widget class="QLineEdit" name="startofHpfPassBandEdit" />
+ <item row="1" column="1">
+ <widget class="QLineEdit" name="startofHpfPassBandEdit"/>
</item>
- <item row="2" column="0" >
- <widget class="QLabel" name="hpfStopBandAttenLabel" >
- <property name="text" >
+ <item row="2" column="0">
+ <widget class="QLabel" name="hpfStopBandAttenLabel">
+ <property name="text">
<string>Stop Band Attenuation (dB)</string>
</property>
</widget>
</item>
- <item row="2" column="1" >
- <widget class="QLineEdit" name="hpfStopBandAttenEdit" />
+ <item row="2" column="1">
+ <widget class="QLineEdit" name="hpfStopBandAttenEdit"/>
</item>
- <item row="3" column="0" >
- <widget class="QLabel" name="hpfPassBandRippleLabel" >
- <property name="text" >
+ <item row="3" column="0">
+ <widget class="QLabel" name="hpfPassBandRippleLabel">
+ <property name="text">
<string>Pass Band Ripple (dB)</string>
</property>
</widget>
</item>
- <item row="3" column="1" >
- <widget class="QLineEdit" name="hpfPassBandRippleEdit" />
+ <item row="3" column="1">
+ <widget class="QLineEdit" name="hpfPassBandRippleEdit"/>
</item>
</layout>
</widget>
- <widget class="QWidget" name="rrcPage" >
- <layout class="QFormLayout" name="formLayout_6" >
- <item row="0" column="0" >
- <widget class="QLabel" name="rrcSymbolRateLabel" >
- <property name="text" >
+ <widget class="QWidget" name="rrcPage">
+ <layout class="QFormLayout" name="formLayout_6">
+ <item row="0" column="0">
+ <widget class="QLabel" name="rrcSymbolRateLabel">
+ <property name="text">
<string>Symbol Rate (sps)</string>
</property>
</widget>
</item>
- <item row="1" column="0" >
- <widget class="QLabel" name="rrcAlphaLabel" >
- <property name="text" >
+ <item row="1" column="0">
+ <widget class="QLabel" name="rrcAlphaLabel">
+ <property name="text">
<string>Roll-off Factor</string>
</property>
</widget>
</item>
- <item row="2" column="0" >
- <widget class="QLabel" name="rrcNumTapsLabel" >
- <property name="text" >
+ <item row="2" column="0">
+ <widget class="QLabel" name="rrcNumTapsLabel">
+ <property name="text">
<string>Number of Taps</string>
</property>
</widget>
</item>
- <item row="0" column="1" >
- <widget class="QLineEdit" name="rrcSymbolRateEdit" />
+ <item row="0" column="1">
+ <widget class="QLineEdit" name="rrcSymbolRateEdit"/>
</item>
- <item row="1" column="1" >
- <widget class="QLineEdit" name="rrcAlphaEdit" />
+ <item row="1" column="1">
+ <widget class="QLineEdit" name="rrcAlphaEdit"/>
</item>
- <item row="2" column="1" >
- <widget class="QLineEdit" name="rrcNumTapsEdit" />
+ <item row="2" column="1">
+ <widget class="QLineEdit" name="rrcNumTapsEdit"/>
</item>
</layout>
</widget>
- <widget class="QWidget" name="gausPage" >
- <layout class="QFormLayout" name="formLayout_7" >
- <item row="0" column="0" >
- <widget class="QLabel" name="gausSymbolRateLabel" >
- <property name="text" >
+ <widget class="QWidget" name="gausPage">
+ <layout class="QFormLayout" name="formLayout_7">
+ <item row="0" column="0">
+ <widget class="QLabel" name="gausSymbolRateLabel">
+ <property name="text">
<string>Symbol Rate (sps)</string>
</property>
</widget>
</item>
- <item row="0" column="1" >
- <widget class="QLineEdit" name="gausSymbolRateEdit" />
+ <item row="0" column="1">
+ <widget class="QLineEdit" name="gausSymbolRateEdit"/>
</item>
- <item row="1" column="0" >
- <widget class="QLabel" name="gausBTLabel" >
- <property name="text" >
+ <item row="1" column="0">
+ <widget class="QLabel" name="gausBTLabel">
+ <property name="text">
<string>Roll-off Factor</string>
</property>
</widget>
</item>
- <item row="1" column="1" >
- <widget class="QLineEdit" name="gausBTEdit" />
+ <item row="1" column="1">
+ <widget class="QLineEdit" name="gausBTEdit"/>
</item>
- <item row="2" column="0" >
- <widget class="QLabel" name="gausNumTapsLabel" >
- <property name="text" >
+ <item row="2" column="0">
+ <widget class="QLabel" name="gausNumTapsLabel">
+ <property name="text">
<string>Number of Taps</string>
</property>
</widget>
</item>
- <item row="2" column="1" >
- <widget class="QLineEdit" name="gausNumTapsEdit" />
+ <item row="2" column="1">
+ <widget class="QLineEdit" name="gausNumTapsEdit"/>
</item>
</layout>
</widget>
</widget>
</item>
<item>
- <widget class="QGroupBox" name="filterPropsBox" >
- <property name="title" >
+ <widget class="QGroupBox" name="filterPropsBox">
+ <property name="title">
<string>Filter Properties</string>
</property>
- <layout class="QFormLayout" name="formLayout_8" >
- <property name="fieldGrowthPolicy" >
+ <layout class="QFormLayout" name="formLayout_8">
+ <property name="fieldGrowthPolicy">
<enum>QFormLayout::AllNonFixedFieldsGrow</enum>
</property>
- <item row="1" column="0" >
- <widget class="QLabel" name="nTapsLabel" >
- <property name="minimumSize" >
+ <item row="1" column="0">
+ <widget class="QLabel" name="nTapsLabel">
+ <property name="minimumSize">
<size>
<width>150</width>
<height>0</height>
</size>
</property>
- <property name="text" >
+ <property name="text">
<string>Number of Taps:</string>
</property>
</widget>
</item>
- <item row="1" column="1" >
- <widget class="QLabel" name="nTapsEdit" >
- <property name="maximumSize" >
+ <item row="1" column="1">
+ <widget class="QLabel" name="nTapsEdit">
+ <property name="maximumSize">
<size>
<width>100</width>
<height>16777215</height>
</size>
</property>
- <property name="frameShape" >
+ <property name="frameShape">
<enum>QFrame::Box</enum>
</property>
- <property name="frameShadow" >
+ <property name="frameShadow">
<enum>QFrame::Raised</enum>
</property>
- <property name="text" >
+ <property name="text">
<string/>
</property>
</widget>
@@ -475,23 +476,23 @@
</widget>
</item>
<item>
- <widget class="QGroupBox" name="sysParamsBox" >
- <property name="title" >
+ <widget class="QGroupBox" name="sysParamsBox">
+ <property name="title">
<string>System Parameters</string>
</property>
- <layout class="QFormLayout" name="formLayout_4" >
- <item row="1" column="1" >
- <widget class="QLineEdit" name="nfftEdit" />
+ <layout class="QFormLayout" name="formLayout_4">
+ <item row="1" column="1">
+ <widget class="QLineEdit" name="nfftEdit"/>
</item>
- <item row="1" column="0" >
- <widget class="QLabel" name="nfftLabel" >
- <property name="minimumSize" >
+ <item row="1" column="0">
+ <widget class="QLabel" name="nfftLabel">
+ <property name="minimumSize">
<size>
<width>150</width>
<height>0</height>
</size>
</property>
- <property name="text" >
+ <property name="text">
<string>Num FFT points</string>
</property>
</widget>
@@ -500,26 +501,26 @@
</widget>
</item>
<item>
- <widget class="QPushButton" name="designButton" >
- <property name="minimumSize" >
+ <widget class="QPushButton" name="designButton">
+ <property name="minimumSize">
<size>
<width>0</width>
<height>0</height>
</size>
</property>
- <property name="maximumSize" >
+ <property name="maximumSize">
<size>
<width>200</width>
<height>16777215</height>
</size>
</property>
- <property name="text" >
+ <property name="text">
<string>Design</string>
</property>
- <property name="autoDefault" >
+ <property name="autoDefault">
<bool>true</bool>
</property>
- <property name="default" >
+ <property name="default">
<bool>true</bool>
</property>
</widget>
@@ -527,54 +528,54 @@
</layout>
</widget>
</item>
- <item row="1" column="1" >
- <widget class="QTabWidget" name="tabGroup" >
- <property name="minimumSize" >
+ <item row="1" column="1">
+ <widget class="QTabWidget" name="tabGroup">
+ <property name="minimumSize">
<size>
<width>800</width>
<height>0</height>
</size>
</property>
- <property name="currentIndex" >
+ <property name="currentIndex">
<number>0</number>
</property>
- <widget class="QWidget" name="freqTab" >
- <attribute name="title" >
+ <widget class="QWidget" name="freqTab">
+ <attribute name="title">
<string>Frequency Domain</string>
</attribute>
- <layout class="QHBoxLayout" name="horizontalLayout_2" >
+ <layout class="QHBoxLayout" name="horizontalLayout_2">
<item>
- <widget class="QwtPlot" name="freqPlot" />
+ <widget class="QwtPlot" name="freqPlot"/>
</item>
</layout>
</widget>
- <widget class="QWidget" name="timeTab" >
- <attribute name="title" >
+ <widget class="QWidget" name="timeTab">
+ <attribute name="title">
<string>Time Domain</string>
</attribute>
- <layout class="QHBoxLayout" name="horizontalLayout" >
+ <layout class="QHBoxLayout" name="horizontalLayout">
<item>
- <widget class="QwtPlot" name="timePlot" />
+ <widget class="QwtPlot" name="timePlot"/>
</item>
</layout>
</widget>
- <widget class="QWidget" name="phaseTab" >
- <attribute name="title" >
+ <widget class="QWidget" name="phaseTab">
+ <attribute name="title">
<string>Phase</string>
</attribute>
- <layout class="QHBoxLayout" name="horizontalLayout_3" >
+ <layout class="QHBoxLayout" name="horizontalLayout_3">
<item>
- <widget class="QwtPlot" name="phasePlot" />
+ <widget class="QwtPlot" name="phasePlot"/>
</item>
</layout>
</widget>
- <widget class="QWidget" name="groupTab" >
- <attribute name="title" >
+ <widget class="QWidget" name="groupTab">
+ <attribute name="title">
<string>Group Delay</string>
</attribute>
- <layout class="QHBoxLayout" name="horizontalLayout_4" >
+ <layout class="QHBoxLayout" name="horizontalLayout_4">
<item>
- <widget class="QwtPlot" name="groupPlot" />
+ <widget class="QwtPlot" name="groupPlot"/>
</item>
</layout>
</widget>
@@ -582,35 +583,45 @@
</item>
</layout>
</widget>
- <widget class="QMenuBar" name="menubar" >
- <property name="geometry" >
+ <widget class="QMenuBar" name="menubar">
+ <property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>1124</width>
- <height>24</height>
+ <height>27</height>
</rect>
</property>
- <widget class="QMenu" name="menu_File" >
- <property name="title" >
+ <widget class="QMenu" name="menu_File">
+ <property name="title">
<string>&amp;File</string>
</property>
- <addaction name="action_exit" />
+ <addaction name="action_open"/>
+ <addaction name="action_save"/>
+ <addaction name="action_exit"/>
</widget>
- <addaction name="menu_File" />
+ <addaction name="menu_File"/>
</widget>
- <widget class="QStatusBar" name="statusbar" />
- <action name="action_open" >
- <property name="text" >
- <string>&amp;Open</string>
+ <widget class="QStatusBar" name="statusbar"/>
+ <action name="action_exit">
+ <property name="text">
+ <string>E&amp;xit</string>
</property>
- <property name="shortcut" >
- <string>Ctrl+O</string>
+ </action>
+ <action name="action_save">
+ <property name="text">
+ <string>&amp;Save</string>
+ </property>
+ <property name="shortcut">
+ <string>Ctrl+S</string>
</property>
</action>
- <action name="action_exit" >
- <property name="text" >
- <string>E&amp;xit</string>
+ <action name="action_open">
+ <property name="text">
+ <string>&amp;Open</string>
+ </property>
+ <property name="shortcut">
+ <string>Ctrl+O</string>
</property>
</action>
</widget>
@@ -662,11 +673,11 @@
<receiver>MainWindow</receiver>
<slot>close()</slot>
<hints>
- <hint type="sourcelabel" >
+ <hint type="sourcelabel">
<x>-1</x>
<y>-1</y>
</hint>
- <hint type="destinationlabel" >
+ <hint type="destinationlabel">
<x>399</x>
<y>347</y>
</hint>