2024-11-25 14:01:09 +03:00
|
|
|
from datetime import datetime as dt
|
2024-11-26 18:28:05 +03:00
|
|
|
from typing import Optional
|
2024-11-25 14:01:09 +03:00
|
|
|
|
|
|
|
|
from PyQt5 import QtWidgets
|
|
|
|
|
from PyQt5.QtCore import Qt
|
2024-12-05 13:18:53 +03:00
|
|
|
from utils.base.base import BaseMainWindow, BaseController
|
|
|
|
|
from gui.settings_window import settingsWindow
|
2024-11-25 14:01:09 +03:00
|
|
|
|
|
|
|
|
class MainWindow(BaseMainWindow):
|
2024-11-26 18:28:05 +03:00
|
|
|
def __init__(self,
|
|
|
|
|
controller: Optional[BaseController] = None):
|
2024-11-25 14:01:09 +03:00
|
|
|
super().__init__()
|
2024-11-26 18:28:05 +03:00
|
|
|
self._controller = controller
|
2024-11-25 14:01:09 +03:00
|
|
|
self.initUI()
|
|
|
|
|
self.set_style(self)
|
2024-11-25 17:20:00 +03:00
|
|
|
self.settings_button.clicked.connect(self._show_settings)
|
2024-12-05 13:18:53 +03:00
|
|
|
self.operSettings = settingsWindow("params/operator_params.json", 'Operator', self._updater_trigger)
|
|
|
|
|
self.sysSettings = settingsWindow("params/system_params.json", 'System', self._updater_trigger)
|
2024-11-25 14:01:09 +03:00
|
|
|
|
|
|
|
|
def initUI(self) -> None:
|
|
|
|
|
self.tabWidget = QtWidgets.QTabWidget()
|
2024-12-02 11:21:22 +03:00
|
|
|
self.tabWidget.setTabsClosable(True)
|
|
|
|
|
self.tabWidget.tabCloseRequested.connect(self._close_tab)
|
2024-11-25 14:01:09 +03:00
|
|
|
layout = QtWidgets.QVBoxLayout()
|
|
|
|
|
layout.addWidget(self.tabWidget)
|
2024-11-25 17:20:00 +03:00
|
|
|
self.settings_button = QtWidgets.QPushButton("Show settings")
|
|
|
|
|
self.settings_button.setFixedWidth(160)
|
|
|
|
|
layout.addWidget(self.settings_button)
|
2024-11-25 14:01:09 +03:00
|
|
|
self.setLayout(layout)
|
|
|
|
|
|
|
|
|
|
def show_plot_tabs(self, plot_widgets: list[QtWidgets.QWidget]) -> None:
|
|
|
|
|
for plot_widget in plot_widgets:
|
|
|
|
|
tab = QtWidgets.QWidget()
|
|
|
|
|
grid = QtWidgets.QGridLayout()
|
|
|
|
|
grid.addWidget(plot_widget)
|
|
|
|
|
tab.setLayout(grid)
|
|
|
|
|
self.tabWidget.addTab(tab, "SF_trace_" + dt.now().strftime('%Y_%m_%d-%H_%M_%S'))
|
|
|
|
|
self.tabWidget.setCurrentWidget(tab)
|
|
|
|
|
|
2024-12-02 11:21:22 +03:00
|
|
|
tab_count = self.tabWidget.count()
|
|
|
|
|
if tab_count > 10:
|
|
|
|
|
for i in range(0, tab_count-2):
|
|
|
|
|
self._close_tab(i)
|
|
|
|
|
|
|
|
|
|
|
2024-11-25 14:01:09 +03:00
|
|
|
def keyPressEvent(self, a0):
|
|
|
|
|
if a0.key() == Qt.Key_F5:
|
2024-12-04 20:01:30 +03:00
|
|
|
pass
|
2024-11-25 14:01:09 +03:00
|
|
|
|
2024-11-25 17:20:00 +03:00
|
|
|
def _show_settings(self):
|
|
|
|
|
self.operSettings.show()
|
|
|
|
|
self.sysSettings.show()
|
|
|
|
|
|
|
|
|
|
def push_settings(self) -> None:
|
|
|
|
|
self._updater_trigger()
|
|
|
|
|
|
|
|
|
|
def _updater_trigger(self) -> None:
|
|
|
|
|
self.tabWidget.clear()
|
|
|
|
|
operator_params = self.operSettings.getParams()
|
|
|
|
|
system_params = self.sysSettings.getParams()
|
2024-11-26 18:16:55 +03:00
|
|
|
self._controller.push_settings([operator_params, system_params])
|
2024-11-25 17:20:00 +03:00
|
|
|
|
2024-12-02 11:21:22 +03:00
|
|
|
def _close_tab(self, index:int) -> None:
|
|
|
|
|
self.tabWidget.removeTab(index)
|
2024-11-25 17:20:00 +03:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2024-11-25 14:01:09 +03:00
|
|
|
|