diff --git a/Widgets/MainWidget.py b/Widgets/MainWidget.py index 81138ee..e112ddc 100644 --- a/Widgets/MainWidget.py +++ b/Widgets/MainWidget.py @@ -1,13 +1,13 @@ -import threading - import qdarktheme -from PyQt6.QtCore import QThread +from PyQt6 import QtGui +from PyQt6.QtCore import QThread, Qt, QModelIndex -from PyQt6.QtWidgets import QWidget, QGridLayout +from PyQt6.QtWidgets import QWidget, QGridLayout, QSizePolicy, QPushButton from DataManager import DataManager from Widgets.AddSignal import AddSignal from Widgets.FFTPlot import FFTPlot +from Widgets.Settings import Settings from Widgets.SignalTable import SignalTable from Widgets.TimePlot import TimePlot @@ -19,40 +19,76 @@ def __init__(self): # Setup vars self.mainGridLayout = QGridLayout() + self.addSignalButton = QPushButton() + self.removeSignalButton = QPushButton() self.timePlot = TimePlot() self.fftPlot = FFTPlot() self.signalTable = SignalTable() self.addSignalMenu = AddSignal() self.dataManager = DataManager() + self.settings = Settings() - self.dataManager.addSignal({"name": "Example_sin_10_t", - "operator": "+", + signalData = {"name": "Example_sin_1_t", + "operator": "*", "function": "sin", "alpha": 1, - "beta": 10, - "gamma": 0}) - + "beta": 1, + "gamma": 0} + self.dataManager.addSignal(signalData) + self.signalTable.signalAdded(signalData) self.addSignalMenu.addSignalSignal.connect(self.dataManager.addSignal) self.addSignalMenu.addSignalSignal.connect(self.signalTable.signalAdded) + self.settings.settingsDisplay.speedChanged.connect(self.dataManager.setSpeed) + self.settings.settingsDisplay.modChanged.connect(self.dataManager.setMod) + self.signalTable.signalDeleted.connect(self.dataManager.removeSignal) + self.signalTable.signalDeleted.connect(self.addSignalMenu.removeSignal) + + self.addSignalButton.pressed.connect(self.addSignalMenu.show) + + self.dataManager.newTimeData.connect(self.timePlot.requestPlot) + self.dataManager.newFFTData.connect(self.fftPlot.requestPlot) + + self.timePlot.setSizePolicy(QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Expanding) + self.mainGridLayout.addWidget(self.timePlot, 0, 0) + self.fftPlot.setSizePolicy(QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Expanding) + self.mainGridLayout.addWidget(self.fftPlot, 1, 0, 1, 1) - self.dataThread = QThread() - self.dataManager.moveToThread(self.dataThread) - self.dataThread.started.connect(self.dataManager.startGatherData) - self.dataThread.start() + self.signalTable.setSizePolicy(QSizePolicy.Policy.Fixed, QSizePolicy.Policy.Expanding) + self.mainGridLayout.addWidget(self.signalTable, 0, 1, 1, 1) - self.signalTable.addSignalButton.pressed.connect(self.addSignalMenu.show) + self.buttonsLayout = QGridLayout() + self.buttonsLayout.setAlignment(Qt.AlignmentFlag.AlignBottom) - self.dataManager.newTimeData.connect(self.timePlot.plot) - self.dataManager.newFFTData.connect(self.fftPlot.plot) + self.addSignalButton.setStyleSheet("border:none; text-align:center; color: green; font-size: 24pt;") + self.addSignalButton.setText("+") + self.buttonsLayout.addWidget(self.addSignalButton, 0, 0, Qt.AlignmentFlag.AlignBottom) - self.mainGridLayout.addWidget(self.timePlot) - self.mainGridLayout.addWidget(self.fftPlot, 2, 0) - self.mainGridLayout.addWidget(self.signalTable, 3, 0) + self.removeSignalButton.pressed.connect(self.removePressed) + + self.removeSignalButton.setStyleSheet("border:none; text-align:center; color: red; font-size: 24pt;") + self.removeSignalButton.setText("-") + self.buttonsLayout.addWidget(self.removeSignalButton, 1, 0, Qt.AlignmentFlag.AlignBottom) + + self.buttonsLayout.addWidget(self.settings, 2, 0, Qt.AlignmentFlag.AlignBottom) + + self.mainGridLayout.addLayout(self.buttonsLayout, 1, 1, Qt.AlignmentFlag.AlignBottom) qdarktheme.setup_theme("dark") self.setLayout(self.mainGridLayout) + + def removePressed(self): + curRow = self.signalTable.tableView.selectionModel().currentIndex().row() + print(curRow) + signalName = self.signalTable.tableModel.item(curRow, 0).text() + + self.dataManager.removeSignal(signalName) + self.signalTable.tableModel.clearItemData(curRow) + def close(self): + super().close() + + self.dataManager.continueFlag = False \ No newline at end of file