diff --git a/src/controller/__pycache__/controller.cpython-310.pyc b/src/controller/__pycache__/controller.cpython-310.pyc index e534f39..d35f371 100644 Binary files a/src/controller/__pycache__/controller.cpython-310.pyc and b/src/controller/__pycache__/controller.cpython-310.pyc differ diff --git a/src/controller/__pycache__/mediator.cpython-310.pyc b/src/controller/__pycache__/mediator.cpython-310.pyc index bb4e17d..e1b40d9 100644 Binary files a/src/controller/__pycache__/mediator.cpython-310.pyc and b/src/controller/__pycache__/mediator.cpython-310.pyc differ diff --git a/src/controller/__pycache__/monitor.cpython-310.pyc b/src/controller/__pycache__/monitor.cpython-310.pyc index 5adb3fe..3591fbc 100644 Binary files a/src/controller/__pycache__/monitor.cpython-310.pyc and b/src/controller/__pycache__/monitor.cpython-310.pyc differ diff --git a/src/controller/controller.py b/src/controller/controller.py index 538e498..02eec45 100644 --- a/src/controller/controller.py +++ b/src/controller/controller.py @@ -8,8 +8,10 @@ class Controller(BaseController): signal_widgets = pyqtSignal(list) signal_settings = pyqtSignal(list) - signal_raport_mode = pyqtSignal(str) + signal_open_file = pyqtSignal(str) + signal_raport_mode = pyqtSignal() signal_seeking_mode = pyqtSignal() + signal_update_plots = pyqtSignal() def send_widgets(self, widgets: list[QWidget]) -> None: self.signal_widgets.emit(widgets) @@ -17,12 +19,17 @@ class Controller(BaseController): def update_settings(self, settings: list[dict]) -> None: self.signal_settings.emit(settings) - def raport_mode(self, filepath: str) -> None: - self.signal_raport_mode.emit(filepath) + def raport_mode(self) -> None: + self.signal_raport_mode.emit() def seeking_mode(self) -> None: self.signal_seeking_mode.emit() + def open_file(self, filepath: str) -> None: + self.signal_open_file.emit(filepath) + + def update_plots(self) -> None: + self.signal_update_plots.emit() \ No newline at end of file diff --git a/src/controller/mediator.py b/src/controller/mediator.py index 38e4657..8587b17 100644 --- a/src/controller/mediator.py +++ b/src/controller/mediator.py @@ -29,6 +29,5 @@ class Mediator(BaseMediator): def update_settings(self, settings: list[dict]): self._monitor.update_settings(settings) self._passportFormer.update_settings(settings) - self._monitor.update_plots() diff --git a/src/controller/monitor.py b/src/controller/monitor.py index ee1bed6..cac2975 100644 --- a/src/controller/monitor.py +++ b/src/controller/monitor.py @@ -51,18 +51,26 @@ class DirectoryMonitor(BaseDirectoryMonitor): def update_plots(self): if self._files is not None: + print("updPlot") self._mediator.notify(self, self._files) def custom_csv_extract_only(self, path: str): - self.stop() self._files.append(path) if path is not None: self._mediator.notify(self, [path]) else: self._mediator.notify(self, [None]) + + def start_raport(self) -> None: + print("startRaport") + self.stop() + self._files = [] + print(self._files) + self._mediator.notify(self, [None]) def start_seeking(self) -> None: + print("startSeeking") self._init_state() self.start() diff --git a/src/gui/__pycache__/mainGui.cpython-310.pyc b/src/gui/__pycache__/mainGui.cpython-310.pyc index df10a6f..0765f31 100644 Binary files a/src/gui/__pycache__/mainGui.cpython-310.pyc and b/src/gui/__pycache__/mainGui.cpython-310.pyc differ diff --git a/src/gui/__pycache__/reportGui.cpython-310.pyc b/src/gui/__pycache__/reportGui.cpython-310.pyc index 844c044..26aef5c 100644 Binary files a/src/gui/__pycache__/reportGui.cpython-310.pyc and b/src/gui/__pycache__/reportGui.cpython-310.pyc differ diff --git a/src/gui/mainGui.py b/src/gui/mainGui.py index a0ad32b..130e88c 100644 --- a/src/gui/mainGui.py +++ b/src/gui/mainGui.py @@ -8,6 +8,8 @@ from utils.base.base import BaseMainWindow, BaseController from gui.settings_window import SystemSettings, OperatorSettings from gui.reportGui import ReportSettings + +# FIXME: При отркытии RaportMode все прочитанные трейсы должны удаляться, но они открываются... class MainWindow(BaseMainWindow): def __init__(self, controller: Optional[BaseController] = None) -> None: @@ -18,17 +20,19 @@ class MainWindow(BaseMainWindow): self._init_menu() - - def _init_startUI(self) -> None: - self.operSettings = OperatorSettings("params/operator_params.json", 'Operator', self._transfer_settings) - self.sysSettings = SystemSettings("params/system_params.json", 'System', self._transfer_settings) - self.repSettings = ReportSettings() + def _init_TabWidget(self) -> None: self.tabWidget = QtWidgets.QTabWidget() self.tabWidget.setTabsClosable(True) self.tabWidget.tabCloseRequested.connect(self._close_tab) self.tabWidget.currentChanged.connect(self._on_tab_changed) + def _init_startUI(self) -> None: + self.operSettings = OperatorSettings("params/operator_params.json", 'Operator', self._upd_settings) + self.sysSettings = SystemSettings("params/system_params.json", 'System', self._upd_settings) + self.repSettings = ReportSettings() + self._clear() + self.resize(800,800) seeking_mode_btn = QtWidgets.QPushButton("Real time folder scanning") seeking_mode_btn.setFixedWidth(300) seeking_mode_btn.clicked.connect(self._init_seekingUI) @@ -153,6 +157,7 @@ class MainWindow(BaseMainWindow): def _init_seekingUI(self) -> None: self._clear() + self._init_TabWidget() self._transfer_settings() button_layout = QtWidgets.QHBoxLayout() @@ -164,11 +169,11 @@ class MainWindow(BaseMainWindow): self._central_layout.addWidget(self.tabWidget) self._central_layout.addWidget(button_widget) self._central_layout.addWidget(title, alignment=Qt.AlignRight) - self.resize(800,800) self._controller.seeking_mode() def _init_raportUI(self) -> None: self._clear() + self._init_TabWidget() self._transfer_settings() save_screen_btn = QtWidgets.QPushButton("Save state") @@ -190,8 +195,8 @@ class MainWindow(BaseMainWindow): self._central_layout.addWidget(self.tabWidget) self._central_layout.addWidget(button_widget) self._central_layout.addWidget(title, alignment=Qt.AlignRight) - self.resize(800,800) - self._controller.raport_mode(None) + + self._controller.raport_mode() def show_plot_tabs(self, plot_widgets: list[QtWidgets.QWidget]) -> None: for plot_widget in plot_widgets: @@ -229,12 +234,16 @@ class MainWindow(BaseMainWindow): system_params = self.sysSettings.getParams() self._controller.update_settings([operator_params, system_params]) + def _upd_settings(self) -> None: + self._transfer_settings() + self._controller.update_plots() + def _close_tab(self, index:int) -> None: self.tabWidget.removeTab(index) def _open_file(self) -> None: path = self._select_csv() - self._controller.raport_mode(path) + self._controller.open_file(path) def _select_csv(self) -> Optional[str]: CSV_path, _ = QtWidgets.QFileDialog.getOpenFileName(self,"Select csv file", "", "CSV Files (*.csv)") diff --git a/src/main.py b/src/main.py index 06e3e3a..018ac49 100644 --- a/src/main.py +++ b/src/main.py @@ -25,8 +25,10 @@ def main(): controller.signal_widgets.connect(window.show_plot_tabs) controller.signal_settings.connect(mediator.update_settings) - controller.signal_raport_mode.connect(monitor.custom_csv_extract_only) + controller.signal_open_file.connect(monitor.custom_csv_extract_only) + controller.signal_raport_mode.connect(monitor.start_raport) controller.signal_seeking_mode.connect(monitor.start_seeking) + controller.signal_update_plots.connect(monitor.update_plots) sys.exit(app.exec_()) diff --git a/src/utils/base/__pycache__/base.cpython-310.pyc b/src/utils/base/__pycache__/base.cpython-310.pyc index 61a7458..600bf3f 100644 Binary files a/src/utils/base/__pycache__/base.cpython-310.pyc and b/src/utils/base/__pycache__/base.cpython-310.pyc differ diff --git a/src/utils/base/base.py b/src/utils/base/base.py index 9306920..65f5096 100644 --- a/src/utils/base/base.py +++ b/src/utils/base/base.py @@ -343,12 +343,18 @@ class BaseController(QObject): def update_settings(self, settings: list[dict]) -> None: ... - def raport_mode (self, filepath: str) -> None: + def raport_mode (self) -> None: ... def seeking_mode(self) -> None: ... + def open_file(self, filepath: str) -> None: + ... + + def update_plots(self) -> None: + ... + class BaseIdealDataBuilder(OptAlgorithm): def __init__(self, params: list[dict]):