mirror of
https://github.com/nqrduck/nqrduck-broadband.git
synced 2024-12-22 07:40:27 +00:00
Initial commit
This commit is contained in:
commit
a2e76ea80b
11 changed files with 783 additions and 0 deletions
22
.gitignore
vendored
Normal file
22
.gitignore
vendored
Normal file
|
@ -0,0 +1,22 @@
|
||||||
|
# Byte-compiled / optimized / DLL files
|
||||||
|
__pycache__/
|
||||||
|
*.pyc
|
||||||
|
*$py.class
|
||||||
|
|
||||||
|
# Distribution / packaging
|
||||||
|
dist/
|
||||||
|
build/
|
||||||
|
*.egg-info/
|
||||||
|
|
||||||
|
# IDE-specific files
|
||||||
|
.idea/
|
||||||
|
.vscode/
|
||||||
|
|
||||||
|
# Logs
|
||||||
|
*.log
|
||||||
|
|
||||||
|
# Virtual environments
|
||||||
|
venv/
|
||||||
|
|
||||||
|
# Other
|
||||||
|
*.DS_Store
|
21
LICENSE
Normal file
21
LICENSE
Normal file
|
@ -0,0 +1,21 @@
|
||||||
|
MIT License
|
||||||
|
|
||||||
|
Copyright (c) 2023 Julia Pfitzer
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
in the Software without restriction, including without limitation the rights
|
||||||
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
copies of the Software, and to permit persons to whom the Software is
|
||||||
|
furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in all
|
||||||
|
copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
|
SOFTWARE.
|
0
README.md
Normal file
0
README.md
Normal file
28
pyproject.toml
Normal file
28
pyproject.toml
Normal file
|
@ -0,0 +1,28 @@
|
||||||
|
[build-system]
|
||||||
|
requires = ["hatchling"]
|
||||||
|
build-backend = "hatchling.build"
|
||||||
|
|
||||||
|
[project]
|
||||||
|
name = "Broadband"
|
||||||
|
version = "0.0.1"
|
||||||
|
authors = [
|
||||||
|
{ name="Julia Pfitzer", email="git@jupfi.me" },
|
||||||
|
]
|
||||||
|
|
||||||
|
description = "A module for the NQRduck program (a simple python script™) to do broadband NQR measurements."
|
||||||
|
readme = "README.md"
|
||||||
|
license = { file="LICENSE" }
|
||||||
|
requires-python = ">=3.8"
|
||||||
|
|
||||||
|
classifiers = [
|
||||||
|
"Programming Language :: Python :: 3",
|
||||||
|
"License :: OSI Approved :: MIT License",
|
||||||
|
"Operating System :: OS Independent",
|
||||||
|
]
|
||||||
|
|
||||||
|
dependencies = [
|
||||||
|
"matplotlib",
|
||||||
|
"pyqt5",
|
||||||
|
"NQRduck",
|
||||||
|
]
|
||||||
|
|
0
src/__init__.py
Normal file
0
src/__init__.py
Normal file
35
src/broadband.py
Normal file
35
src/broadband.py
Normal file
|
@ -0,0 +1,35 @@
|
||||||
|
from PyQt5.QtCore import pyqtSignal, QObject
|
||||||
|
from core.module.module_model import ModuleModel
|
||||||
|
|
||||||
|
|
||||||
|
class Broadband(ModuleModel):
|
||||||
|
start_frequency_changed = pyqtSignal(float)
|
||||||
|
stop_frequency_changed = pyqtSignal(float)
|
||||||
|
widget_changed = pyqtSignal(QObject)
|
||||||
|
|
||||||
|
@property
|
||||||
|
def start_frequency(self):
|
||||||
|
return self._start_frequency
|
||||||
|
|
||||||
|
@start_frequency.setter
|
||||||
|
def start_frequency(self, value):
|
||||||
|
self._start_frequency = value
|
||||||
|
self.start_frequency_changed.emit(value)
|
||||||
|
|
||||||
|
@property
|
||||||
|
def stop_frequency(self):
|
||||||
|
return self._stop_frequency
|
||||||
|
|
||||||
|
@stop_frequency.setter
|
||||||
|
def stop_frequency(self, value):
|
||||||
|
self._stop_frequency = value
|
||||||
|
self.stop_frequency_changed.emit(value)
|
||||||
|
|
||||||
|
@property
|
||||||
|
def widget(self):
|
||||||
|
return self._widget
|
||||||
|
|
||||||
|
@widget.setter
|
||||||
|
def widget(self, value):
|
||||||
|
self._widget = value
|
||||||
|
self.widget_changed.emit(value)
|
23
src/broadband_controller.py
Normal file
23
src/broadband_controller.py
Normal file
|
@ -0,0 +1,23 @@
|
||||||
|
from core.module.module_controller import ModuleController
|
||||||
|
|
||||||
|
|
||||||
|
class BroadbandController(ModuleController):
|
||||||
|
MIN_FREQUENCY = 30.0
|
||||||
|
MAX_FREQUENCY = 200.0
|
||||||
|
|
||||||
|
def __init__(self, model):
|
||||||
|
super().__init__(model)
|
||||||
|
|
||||||
|
def change_start_frequency(self, value):
|
||||||
|
value = float(value)
|
||||||
|
if value > self.MIN_FREQUENCY:
|
||||||
|
self._model.start_frequency = value
|
||||||
|
else:
|
||||||
|
self._model_start_frequency = self.MIN_FREQUENCY
|
||||||
|
|
||||||
|
def change_stop_frequency(self, value):
|
||||||
|
value = float(value)
|
||||||
|
if value < self.MAX_FREQUENCY:
|
||||||
|
self._model.stop_frequency = value
|
||||||
|
else:
|
||||||
|
self._model.stop_frequency = self.MAX_FREQUENCY
|
61
src/broadband_view.py
Normal file
61
src/broadband_view.py
Normal file
|
@ -0,0 +1,61 @@
|
||||||
|
import logging
|
||||||
|
from PyQt5.QtWidgets import QWidget
|
||||||
|
from core.module.module_view import ModuleView
|
||||||
|
from modules.broadband.broadband_widget import Ui_Form
|
||||||
|
|
||||||
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
|
||||||
|
class BroadbandView(ModuleView):
|
||||||
|
def __init__(self, _model, controller):
|
||||||
|
super().__init__(_model, controller)
|
||||||
|
|
||||||
|
widget = QWidget()
|
||||||
|
self._ui_form = Ui_Form()
|
||||||
|
self._ui_form.setupUi(widget)
|
||||||
|
self._model.widget = widget
|
||||||
|
|
||||||
|
self._ui_form.start_frequencyField.editingFinished.connect(
|
||||||
|
lambda: self._controller.change_start_frequency(
|
||||||
|
self._ui_form.start_frequencyField.text()
|
||||||
|
)
|
||||||
|
)
|
||||||
|
self._ui_form.stop_frequencyField.editingFinished.connect(
|
||||||
|
lambda: self._controller.change_stop_frequency(
|
||||||
|
self._ui_form.stop_frequencyField.text()
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
self._model.start_frequency_changed.connect(self.on_start_frequency_change)
|
||||||
|
self._model.stop_frequency_changed.connect(self.on_stop_frequency_change)
|
||||||
|
|
||||||
|
self.init_plots()
|
||||||
|
|
||||||
|
def init_plots(self):
|
||||||
|
# Initialization of broadband spectrum
|
||||||
|
self._ui_form.broadbandPlot.canvas.ax.set_title("Broadband Spectrum")
|
||||||
|
self._ui_form.broadbandPlot.canvas.ax.set_xlim([0, 250])
|
||||||
|
self._ui_form.broadbandPlot.canvas.ax.set_xlabel("Frequency in MHz")
|
||||||
|
self._ui_form.broadbandPlot.canvas.ax.set_ylabel("Amplitude a.u.")
|
||||||
|
|
||||||
|
# Initialization of last measurement time domain
|
||||||
|
self._ui_form.time_domainPlot.canvas.ax.set_title("Last Time Domain")
|
||||||
|
self._ui_form.time_domainPlot.canvas.ax.set_xlim([0, 250])
|
||||||
|
self._ui_form.time_domainPlot.canvas.ax.set_xlabel("time in us")
|
||||||
|
self._ui_form.time_domainPlot.canvas.ax.set_ylabel("Amplitude a.u.")
|
||||||
|
|
||||||
|
# Initialization of last measurement frequency domain
|
||||||
|
self._ui_form.frequency_domainPlot.canvas.ax.set_title("Last Frequency Domain")
|
||||||
|
self._ui_form.frequency_domainPlot.canvas.ax.set_xlim([0, 250])
|
||||||
|
self._ui_form.frequency_domainPlot.canvas.ax.set_xlabel("time in us")
|
||||||
|
self._ui_form.frequency_domainPlot.canvas.ax.set_ylabel("Amplitude a.u.")
|
||||||
|
|
||||||
|
def on_start_frequency_change(self, start_frequency):
|
||||||
|
self._ui_form.broadbandPlot.canvas.ax.set_xlim(left=start_frequency)
|
||||||
|
self._ui_form.broadbandPlot.canvas.draw()
|
||||||
|
self._ui_form.broadbandPlot.canvas.flush_events()
|
||||||
|
|
||||||
|
def on_stop_frequency_change(self, stop_frequency):
|
||||||
|
self._ui_form.broadbandPlot.canvas.ax.set_xlim(right=stop_frequency)
|
||||||
|
self._ui_form.broadbandPlot.canvas.draw()
|
||||||
|
self._ui_form.broadbandPlot.canvas.flush_events()
|
189
src/broadband_widget.py
Normal file
189
src/broadband_widget.py
Normal file
|
@ -0,0 +1,189 @@
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
|
# Form implementation generated from reading ui file 'modules/broadband/resources/broadband_widget.ui'
|
||||||
|
#
|
||||||
|
# Created by: PyQt5 UI code generator 5.15.7
|
||||||
|
#
|
||||||
|
# WARNING: Any manual changes made to this file will be lost when pyuic5 is
|
||||||
|
# run again. Do not edit this file unless you know what you are doing.
|
||||||
|
|
||||||
|
|
||||||
|
from PyQt5 import QtCore, QtGui, QtWidgets
|
||||||
|
|
||||||
|
|
||||||
|
class Ui_Form(object):
|
||||||
|
def setupUi(self, Form):
|
||||||
|
Form.setObjectName("Form")
|
||||||
|
Form.resize(1280, 645)
|
||||||
|
self.verticalLayoutWidget_5 = QtWidgets.QWidget(Form)
|
||||||
|
self.verticalLayoutWidget_5.setGeometry(QtCore.QRect(310, 0, 831, 651))
|
||||||
|
self.verticalLayoutWidget_5.setObjectName("verticalLayoutWidget_5")
|
||||||
|
self.verticalLayout_5 = QtWidgets.QVBoxLayout(self.verticalLayoutWidget_5)
|
||||||
|
self.verticalLayout_5.setContentsMargins(0, 0, 0, 0)
|
||||||
|
self.verticalLayout_5.setObjectName("verticalLayout_5")
|
||||||
|
self.broadbandPlot = MplWidget(self.verticalLayoutWidget_5)
|
||||||
|
self.broadbandPlot.setObjectName("broadbandPlot")
|
||||||
|
self.verticalLayout_5.addWidget(self.broadbandPlot)
|
||||||
|
self.horizontalLayout_5 = QtWidgets.QHBoxLayout()
|
||||||
|
self.horizontalLayout_5.setObjectName("horizontalLayout_5")
|
||||||
|
self.time_domainPlot = MplWidget(self.verticalLayoutWidget_5)
|
||||||
|
self.time_domainPlot.setObjectName("time_domainPlot")
|
||||||
|
self.horizontalLayout_5.addWidget(self.time_domainPlot)
|
||||||
|
self.frequency_domainPlot = MplWidget(self.verticalLayoutWidget_5)
|
||||||
|
self.frequency_domainPlot.setObjectName("frequency_domainPlot")
|
||||||
|
self.horizontalLayout_5.addWidget(self.frequency_domainPlot)
|
||||||
|
self.verticalLayout_5.addLayout(self.horizontalLayout_5)
|
||||||
|
self.verticalLayoutWidget_4 = QtWidgets.QWidget(Form)
|
||||||
|
self.verticalLayoutWidget_4.setGeometry(QtCore.QRect(0, 0, 311, 651))
|
||||||
|
self.verticalLayoutWidget_4.setObjectName("verticalLayoutWidget_4")
|
||||||
|
self.verticalLayout_4 = QtWidgets.QVBoxLayout(self.verticalLayoutWidget_4)
|
||||||
|
self.verticalLayout_4.setContentsMargins(0, 0, 0, 0)
|
||||||
|
self.verticalLayout_4.setObjectName("verticalLayout_4")
|
||||||
|
self.verticalLayout = QtWidgets.QVBoxLayout()
|
||||||
|
self.verticalLayout.setObjectName("verticalLayout")
|
||||||
|
self.label_8 = QtWidgets.QLabel(self.verticalLayoutWidget_4)
|
||||||
|
font = QtGui.QFont()
|
||||||
|
font.setPointSize(12)
|
||||||
|
font.setBold(False)
|
||||||
|
font.setItalic(False)
|
||||||
|
font.setWeight(50)
|
||||||
|
self.label_8.setFont(font)
|
||||||
|
self.label_8.setAlignment(QtCore.Qt.AlignCenter)
|
||||||
|
self.label_8.setObjectName("label_8")
|
||||||
|
self.verticalLayout.addWidget(self.label_8)
|
||||||
|
self.horizontalLayout = QtWidgets.QHBoxLayout()
|
||||||
|
self.horizontalLayout.setObjectName("horizontalLayout")
|
||||||
|
self.label = QtWidgets.QLabel(self.verticalLayoutWidget_4)
|
||||||
|
self.label.setObjectName("label")
|
||||||
|
self.horizontalLayout.addWidget(self.label)
|
||||||
|
spacerItem = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
|
||||||
|
self.horizontalLayout.addItem(spacerItem)
|
||||||
|
self.start_frequencyField = QtWidgets.QLineEdit(self.verticalLayoutWidget_4)
|
||||||
|
self.start_frequencyField.setLayoutDirection(QtCore.Qt.LeftToRight)
|
||||||
|
self.start_frequencyField.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter)
|
||||||
|
self.start_frequencyField.setObjectName("start_frequencyField")
|
||||||
|
self.horizontalLayout.addWidget(self.start_frequencyField)
|
||||||
|
spacerItem1 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
|
||||||
|
self.horizontalLayout.addItem(spacerItem1)
|
||||||
|
self.label_2 = QtWidgets.QLabel(self.verticalLayoutWidget_4)
|
||||||
|
self.label_2.setObjectName("label_2")
|
||||||
|
self.horizontalLayout.addWidget(self.label_2)
|
||||||
|
self.verticalLayout.addLayout(self.horizontalLayout)
|
||||||
|
self.horizontalLayout_2 = QtWidgets.QHBoxLayout()
|
||||||
|
self.horizontalLayout_2.setObjectName("horizontalLayout_2")
|
||||||
|
self.label_3 = QtWidgets.QLabel(self.verticalLayoutWidget_4)
|
||||||
|
self.label_3.setObjectName("label_3")
|
||||||
|
self.horizontalLayout_2.addWidget(self.label_3)
|
||||||
|
spacerItem2 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
|
||||||
|
self.horizontalLayout_2.addItem(spacerItem2)
|
||||||
|
self.stop_frequencyField = QtWidgets.QLineEdit(self.verticalLayoutWidget_4)
|
||||||
|
self.stop_frequencyField.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter)
|
||||||
|
self.stop_frequencyField.setObjectName("stop_frequencyField")
|
||||||
|
self.horizontalLayout_2.addWidget(self.stop_frequencyField)
|
||||||
|
spacerItem3 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
|
||||||
|
self.horizontalLayout_2.addItem(spacerItem3)
|
||||||
|
self.label_4 = QtWidgets.QLabel(self.verticalLayoutWidget_4)
|
||||||
|
self.label_4.setObjectName("label_4")
|
||||||
|
self.horizontalLayout_2.addWidget(self.label_4)
|
||||||
|
self.verticalLayout.addLayout(self.horizontalLayout_2)
|
||||||
|
self.horizontalLayout_3 = QtWidgets.QHBoxLayout()
|
||||||
|
self.horizontalLayout_3.setObjectName("horizontalLayout_3")
|
||||||
|
self.label_5 = QtWidgets.QLabel(self.verticalLayoutWidget_4)
|
||||||
|
self.label_5.setObjectName("label_5")
|
||||||
|
self.horizontalLayout_3.addWidget(self.label_5)
|
||||||
|
spacerItem4 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
|
||||||
|
self.horizontalLayout_3.addItem(spacerItem4)
|
||||||
|
self.frequency_stepField = QtWidgets.QLineEdit(self.verticalLayoutWidget_4)
|
||||||
|
self.frequency_stepField.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter)
|
||||||
|
self.frequency_stepField.setObjectName("frequency_stepField")
|
||||||
|
self.horizontalLayout_3.addWidget(self.frequency_stepField)
|
||||||
|
spacerItem5 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
|
||||||
|
self.horizontalLayout_3.addItem(spacerItem5)
|
||||||
|
self.label_6 = QtWidgets.QLabel(self.verticalLayoutWidget_4)
|
||||||
|
self.label_6.setObjectName("label_6")
|
||||||
|
self.horizontalLayout_3.addWidget(self.label_6)
|
||||||
|
self.verticalLayout.addLayout(self.horizontalLayout_3)
|
||||||
|
self.horizontalLayout_4 = QtWidgets.QHBoxLayout()
|
||||||
|
self.horizontalLayout_4.setObjectName("horizontalLayout_4")
|
||||||
|
self.label_7 = QtWidgets.QLabel(self.verticalLayoutWidget_4)
|
||||||
|
self.label_7.setObjectName("label_7")
|
||||||
|
self.horizontalLayout_4.addWidget(self.label_7)
|
||||||
|
spacerItem6 = QtWidgets.QSpacerItem(80, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
|
||||||
|
self.horizontalLayout_4.addItem(spacerItem6)
|
||||||
|
self.averagesField = QtWidgets.QLineEdit(self.verticalLayoutWidget_4)
|
||||||
|
self.averagesField.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter)
|
||||||
|
self.averagesField.setObjectName("averagesField")
|
||||||
|
self.horizontalLayout_4.addWidget(self.averagesField)
|
||||||
|
spacerItem7 = QtWidgets.QSpacerItem(75, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
|
||||||
|
self.horizontalLayout_4.addItem(spacerItem7)
|
||||||
|
self.verticalLayout.addLayout(self.horizontalLayout_4)
|
||||||
|
self.start_measurementButton = QtWidgets.QPushButton(self.verticalLayoutWidget_4)
|
||||||
|
self.start_measurementButton.setObjectName("start_measurementButton")
|
||||||
|
self.verticalLayout.addWidget(self.start_measurementButton)
|
||||||
|
self.verticalLayout_4.addLayout(self.verticalLayout)
|
||||||
|
self.verticalLayout_3 = QtWidgets.QVBoxLayout()
|
||||||
|
self.verticalLayout_3.setObjectName("verticalLayout_3")
|
||||||
|
self.label_10 = QtWidgets.QLabel(self.verticalLayoutWidget_4)
|
||||||
|
font = QtGui.QFont()
|
||||||
|
font.setPointSize(12)
|
||||||
|
font.setBold(False)
|
||||||
|
font.setItalic(False)
|
||||||
|
font.setWeight(50)
|
||||||
|
self.label_10.setFont(font)
|
||||||
|
self.label_10.setAlignment(QtCore.Qt.AlignCenter)
|
||||||
|
self.label_10.setObjectName("label_10")
|
||||||
|
self.verticalLayout_3.addWidget(self.label_10)
|
||||||
|
self.load_fileButton = QtWidgets.QPushButton(self.verticalLayoutWidget_4)
|
||||||
|
self.load_fileButton.setObjectName("load_fileButton")
|
||||||
|
self.verticalLayout_3.addWidget(self.load_fileButton)
|
||||||
|
self.file_pathLabel = QtWidgets.QLabel(self.verticalLayoutWidget_4)
|
||||||
|
self.file_pathLabel.setText("")
|
||||||
|
self.file_pathLabel.setObjectName("file_pathLabel")
|
||||||
|
self.verticalLayout_3.addWidget(self.file_pathLabel)
|
||||||
|
self.verticalLayout_2 = QtWidgets.QVBoxLayout()
|
||||||
|
self.verticalLayout_2.setObjectName("verticalLayout_2")
|
||||||
|
self.label_9 = QtWidgets.QLabel(self.verticalLayoutWidget_4)
|
||||||
|
font = QtGui.QFont()
|
||||||
|
font.setPointSize(12)
|
||||||
|
self.label_9.setFont(font)
|
||||||
|
self.label_9.setAlignment(QtCore.Qt.AlignCenter)
|
||||||
|
self.label_9.setObjectName("label_9")
|
||||||
|
self.verticalLayout_2.addWidget(self.label_9)
|
||||||
|
self.measurementProgress = QtWidgets.QProgressBar(self.verticalLayoutWidget_4)
|
||||||
|
self.measurementProgress.setProperty("value", 0)
|
||||||
|
self.measurementProgress.setObjectName("measurementProgress")
|
||||||
|
self.verticalLayout_2.addWidget(self.measurementProgress)
|
||||||
|
self.infoBox = QtWidgets.QScrollArea(self.verticalLayoutWidget_4)
|
||||||
|
self.infoBox.setWidgetResizable(True)
|
||||||
|
self.infoBox.setObjectName("infoBox")
|
||||||
|
self.scrollAreaWidgetContents = QtWidgets.QWidget()
|
||||||
|
self.scrollAreaWidgetContents.setGeometry(QtCore.QRect(0, 0, 301, 256))
|
||||||
|
self.scrollAreaWidgetContents.setObjectName("scrollAreaWidgetContents")
|
||||||
|
self.infoBox.setWidget(self.scrollAreaWidgetContents)
|
||||||
|
self.verticalLayout_2.addWidget(self.infoBox)
|
||||||
|
self.verticalLayout_3.addLayout(self.verticalLayout_2)
|
||||||
|
self.verticalLayout_4.addLayout(self.verticalLayout_3)
|
||||||
|
|
||||||
|
self.retranslateUi(Form)
|
||||||
|
QtCore.QMetaObject.connectSlotsByName(Form)
|
||||||
|
|
||||||
|
def retranslateUi(self, Form):
|
||||||
|
_translate = QtCore.QCoreApplication.translate
|
||||||
|
Form.setWindowTitle(_translate("Form", "Form"))
|
||||||
|
self.label_8.setText(_translate("Form", "Measurement Settings:"))
|
||||||
|
self.label.setText(_translate("Form", "Start Frequency:"))
|
||||||
|
self.start_frequencyField.setText(_translate("Form", "50.0"))
|
||||||
|
self.label_2.setText(_translate("Form", "MHz"))
|
||||||
|
self.label_3.setText(_translate("Form", "Stop Frequency:"))
|
||||||
|
self.stop_frequencyField.setText(_translate("Form", "70.0"))
|
||||||
|
self.label_4.setText(_translate("Form", "MHz"))
|
||||||
|
self.label_5.setText(_translate("Form", "Frequency Step:"))
|
||||||
|
self.frequency_stepField.setText(_translate("Form", "0.1"))
|
||||||
|
self.label_6.setText(_translate("Form", "MHz"))
|
||||||
|
self.label_7.setText(_translate("Form", "Averages:"))
|
||||||
|
self.averagesField.setText(_translate("Form", "1000"))
|
||||||
|
self.start_measurementButton.setText(_translate("Form", "Start Measurement"))
|
||||||
|
self.label_10.setText(_translate("Form", "Sequence Settings:"))
|
||||||
|
self.load_fileButton.setText(_translate("Form", "Load TNMR File"))
|
||||||
|
self.label_9.setText(_translate("Form", "Info Box:"))
|
||||||
|
from contrib.mplwidget import MplWidget
|
20
src/resources/broadband.ini
Normal file
20
src/resources/broadband.ini
Normal file
|
@ -0,0 +1,20 @@
|
||||||
|
[META]
|
||||||
|
name = Broadband
|
||||||
|
category = Measurement
|
||||||
|
tooltip = Application used for broadband measurements
|
||||||
|
|
||||||
|
[MVC]
|
||||||
|
model_file = broadband.py
|
||||||
|
model_class = Broadband
|
||||||
|
view_file = broadband_view.py
|
||||||
|
view_class = BroadbandView
|
||||||
|
controller_file = broadband_controller.py
|
||||||
|
controller_class = BroadbandController
|
||||||
|
|
||||||
|
[FILES]
|
||||||
|
config = resources/broadband.ini
|
||||||
|
widget_file = broadband_widget
|
||||||
|
toolbox_logo = resources/toolbox_logo.png
|
||||||
|
|
||||||
|
[DEPENDECIES]
|
||||||
|
spectrometer
|
384
src/resources/broadband_widget.ui
Normal file
384
src/resources/broadband_widget.ui
Normal file
|
@ -0,0 +1,384 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<ui version="4.0">
|
||||||
|
<class>Form</class>
|
||||||
|
<widget class="QWidget" name="Form">
|
||||||
|
<property name="geometry">
|
||||||
|
<rect>
|
||||||
|
<x>0</x>
|
||||||
|
<y>0</y>
|
||||||
|
<width>1280</width>
|
||||||
|
<height>645</height>
|
||||||
|
</rect>
|
||||||
|
</property>
|
||||||
|
<property name="windowTitle">
|
||||||
|
<string>Form</string>
|
||||||
|
</property>
|
||||||
|
<widget class="QWidget" name="verticalLayoutWidget_5">
|
||||||
|
<property name="geometry">
|
||||||
|
<rect>
|
||||||
|
<x>310</x>
|
||||||
|
<y>0</y>
|
||||||
|
<width>831</width>
|
||||||
|
<height>651</height>
|
||||||
|
</rect>
|
||||||
|
</property>
|
||||||
|
<layout class="QVBoxLayout" name="verticalLayout_5">
|
||||||
|
<item>
|
||||||
|
<widget class="MplWidget" name="broadbandPlot" native="true"/>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<layout class="QHBoxLayout" name="horizontalLayout_5">
|
||||||
|
<item>
|
||||||
|
<widget class="MplWidget" name="time_domainPlot" native="true"/>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="MplWidget" name="frequency_domainPlot" native="true"/>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</widget>
|
||||||
|
<widget class="QWidget" name="verticalLayoutWidget_4">
|
||||||
|
<property name="geometry">
|
||||||
|
<rect>
|
||||||
|
<x>0</x>
|
||||||
|
<y>0</y>
|
||||||
|
<width>311</width>
|
||||||
|
<height>651</height>
|
||||||
|
</rect>
|
||||||
|
</property>
|
||||||
|
<layout class="QVBoxLayout" name="verticalLayout_4">
|
||||||
|
<item>
|
||||||
|
<layout class="QVBoxLayout" name="verticalLayout">
|
||||||
|
<item>
|
||||||
|
<widget class="QLabel" name="label_8">
|
||||||
|
<property name="font">
|
||||||
|
<font>
|
||||||
|
<pointsize>12</pointsize>
|
||||||
|
<weight>50</weight>
|
||||||
|
<italic>false</italic>
|
||||||
|
<bold>false</bold>
|
||||||
|
</font>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>Measurement Settings:</string>
|
||||||
|
</property>
|
||||||
|
<property name="alignment">
|
||||||
|
<set>Qt::AlignCenter</set>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<layout class="QHBoxLayout" name="horizontalLayout">
|
||||||
|
<item>
|
||||||
|
<widget class="QLabel" name="label">
|
||||||
|
<property name="text">
|
||||||
|
<string>Start Frequency:</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<spacer name="horizontalSpacer">
|
||||||
|
<property name="orientation">
|
||||||
|
<enum>Qt::Horizontal</enum>
|
||||||
|
</property>
|
||||||
|
<property name="sizeHint" stdset="0">
|
||||||
|
<size>
|
||||||
|
<width>40</width>
|
||||||
|
<height>20</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
</spacer>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QLineEdit" name="start_frequencyField">
|
||||||
|
<property name="layoutDirection">
|
||||||
|
<enum>Qt::LeftToRight</enum>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>50.0</string>
|
||||||
|
</property>
|
||||||
|
<property name="alignment">
|
||||||
|
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<spacer name="horizontalSpacer_4">
|
||||||
|
<property name="orientation">
|
||||||
|
<enum>Qt::Horizontal</enum>
|
||||||
|
</property>
|
||||||
|
<property name="sizeHint" stdset="0">
|
||||||
|
<size>
|
||||||
|
<width>40</width>
|
||||||
|
<height>20</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
</spacer>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QLabel" name="label_2">
|
||||||
|
<property name="text">
|
||||||
|
<string>MHz</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<layout class="QHBoxLayout" name="horizontalLayout_2">
|
||||||
|
<item>
|
||||||
|
<widget class="QLabel" name="label_3">
|
||||||
|
<property name="text">
|
||||||
|
<string>Stop Frequency:</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<spacer name="horizontalSpacer_2">
|
||||||
|
<property name="orientation">
|
||||||
|
<enum>Qt::Horizontal</enum>
|
||||||
|
</property>
|
||||||
|
<property name="sizeHint" stdset="0">
|
||||||
|
<size>
|
||||||
|
<width>40</width>
|
||||||
|
<height>20</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
</spacer>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QLineEdit" name="stop_frequencyField">
|
||||||
|
<property name="text">
|
||||||
|
<string>70.0</string>
|
||||||
|
</property>
|
||||||
|
<property name="alignment">
|
||||||
|
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<spacer name="horizontalSpacer_5">
|
||||||
|
<property name="orientation">
|
||||||
|
<enum>Qt::Horizontal</enum>
|
||||||
|
</property>
|
||||||
|
<property name="sizeHint" stdset="0">
|
||||||
|
<size>
|
||||||
|
<width>40</width>
|
||||||
|
<height>20</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
</spacer>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QLabel" name="label_4">
|
||||||
|
<property name="text">
|
||||||
|
<string>MHz</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<layout class="QHBoxLayout" name="horizontalLayout_3">
|
||||||
|
<item>
|
||||||
|
<widget class="QLabel" name="label_5">
|
||||||
|
<property name="text">
|
||||||
|
<string>Frequency Step:</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<spacer name="horizontalSpacer_3">
|
||||||
|
<property name="orientation">
|
||||||
|
<enum>Qt::Horizontal</enum>
|
||||||
|
</property>
|
||||||
|
<property name="sizeHint" stdset="0">
|
||||||
|
<size>
|
||||||
|
<width>40</width>
|
||||||
|
<height>20</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
</spacer>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QLineEdit" name="frequency_stepField">
|
||||||
|
<property name="text">
|
||||||
|
<string>0.1</string>
|
||||||
|
</property>
|
||||||
|
<property name="alignment">
|
||||||
|
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<spacer name="horizontalSpacer_6">
|
||||||
|
<property name="orientation">
|
||||||
|
<enum>Qt::Horizontal</enum>
|
||||||
|
</property>
|
||||||
|
<property name="sizeHint" stdset="0">
|
||||||
|
<size>
|
||||||
|
<width>40</width>
|
||||||
|
<height>20</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
</spacer>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QLabel" name="label_6">
|
||||||
|
<property name="text">
|
||||||
|
<string>MHz</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<layout class="QHBoxLayout" name="horizontalLayout_4">
|
||||||
|
<item>
|
||||||
|
<widget class="QLabel" name="label_7">
|
||||||
|
<property name="text">
|
||||||
|
<string>Averages:</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<spacer name="horizontalSpacer_7">
|
||||||
|
<property name="orientation">
|
||||||
|
<enum>Qt::Horizontal</enum>
|
||||||
|
</property>
|
||||||
|
<property name="sizeHint" stdset="0">
|
||||||
|
<size>
|
||||||
|
<width>80</width>
|
||||||
|
<height>20</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
</spacer>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QLineEdit" name="averagesField">
|
||||||
|
<property name="text">
|
||||||
|
<string>1000</string>
|
||||||
|
</property>
|
||||||
|
<property name="alignment">
|
||||||
|
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<spacer name="horizontalSpacer_8">
|
||||||
|
<property name="orientation">
|
||||||
|
<enum>Qt::Horizontal</enum>
|
||||||
|
</property>
|
||||||
|
<property name="sizeHint" stdset="0">
|
||||||
|
<size>
|
||||||
|
<width>75</width>
|
||||||
|
<height>20</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
</spacer>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QPushButton" name="start_measurementButton">
|
||||||
|
<property name="text">
|
||||||
|
<string>Start Measurement</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<layout class="QVBoxLayout" name="verticalLayout_3">
|
||||||
|
<item>
|
||||||
|
<widget class="QLabel" name="label_10">
|
||||||
|
<property name="font">
|
||||||
|
<font>
|
||||||
|
<pointsize>12</pointsize>
|
||||||
|
<weight>50</weight>
|
||||||
|
<italic>false</italic>
|
||||||
|
<bold>false</bold>
|
||||||
|
</font>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>Sequence Settings:</string>
|
||||||
|
</property>
|
||||||
|
<property name="alignment">
|
||||||
|
<set>Qt::AlignCenter</set>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QPushButton" name="load_fileButton">
|
||||||
|
<property name="text">
|
||||||
|
<string>Load TNMR File</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QLabel" name="file_pathLabel">
|
||||||
|
<property name="text">
|
||||||
|
<string/>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<layout class="QVBoxLayout" name="verticalLayout_2">
|
||||||
|
<item>
|
||||||
|
<widget class="QLabel" name="label_9">
|
||||||
|
<property name="font">
|
||||||
|
<font>
|
||||||
|
<pointsize>12</pointsize>
|
||||||
|
</font>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>Info Box:</string>
|
||||||
|
</property>
|
||||||
|
<property name="alignment">
|
||||||
|
<set>Qt::AlignCenter</set>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QProgressBar" name="measurementProgress">
|
||||||
|
<property name="value">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QScrollArea" name="infoBox">
|
||||||
|
<property name="widgetResizable">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
<widget class="QWidget" name="scrollAreaWidgetContents">
|
||||||
|
<property name="geometry">
|
||||||
|
<rect>
|
||||||
|
<x>0</x>
|
||||||
|
<y>0</y>
|
||||||
|
<width>301</width>
|
||||||
|
<height>256</height>
|
||||||
|
</rect>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</widget>
|
||||||
|
</widget>
|
||||||
|
<customwidgets>
|
||||||
|
<customwidget>
|
||||||
|
<class>MplWidget</class>
|
||||||
|
<extends>QWidget</extends>
|
||||||
|
<header>contrib/mplwidget.h</header>
|
||||||
|
<container>1</container>
|
||||||
|
</customwidget>
|
||||||
|
</customwidgets>
|
||||||
|
<resources/>
|
||||||
|
<connections/>
|
||||||
|
</ui>
|
Loading…
Reference in a new issue