From 05411c468daba087ef29fa09e2ef702332bb9c71 Mon Sep 17 00:00:00 2001 From: Pierre-Antoine Rouby <pierre-antoine.rouby@inrae.fr> Date: Wed, 9 Aug 2023 11:54:52 +0200 Subject: [PATCH] Results: Connect sliders. --- src/View/Results/Window.py | 36 ++++++++++++++++++++++++++++++++++-- src/View/ui/Results.ui | 6 +++--- 2 files changed, 37 insertions(+), 5 deletions(-) diff --git a/src/View/Results/Window.py b/src/View/Results/Window.py index 66845431..dbf335f0 100644 --- a/src/View/Results/Window.py +++ b/src/View/Results/Window.py @@ -37,6 +37,7 @@ from PyQt5.QtWidgets import ( QFileDialog, QTableView, QAbstractItemView, QUndoStack, QShortcut, QAction, QItemDelegate, QComboBox, QVBoxLayout, QHeaderView, QTabWidget, + QSlider, ) from View.Plot.MplCanvas import MplCanvas @@ -58,6 +59,8 @@ class ResultsWindow(ASubMainWindow, ListedSubWindow): self._solver = solver self._results = results + self._timestamps = sorted(list(self._results.get("timestamps"))) + self.setup_title(title) super(ResultsWindow, self).__init__( @@ -67,6 +70,7 @@ class ResultsWindow(ASubMainWindow, ListedSubWindow): self.setup_sc() self.setup_table() self.setup_graph() + self.setup_slider() self.setup_connections() self.ui.setWindowTitle(self._title) @@ -104,6 +108,14 @@ class ResultsWindow(ASubMainWindow, ListedSubWindow): table.horizontalHeader().setSectionResizeMode(QHeaderView.Stretch) table.setAlternatingRowColors(True) + def setup_slider(self): + self._slider_profile = self.find(QSlider, f"verticalSlider_profile") + default_reach = self._results.river.reach(0) + self._slider_profile.setMaximum(len(default_reach.profiles) - 1) + + self._slider_time = self.find(QSlider, f"horizontalSlider_time") + self._slider_time.setMaximum(len(self._timestamps) - 1) + def setup_graph(self): self.canvas = MplCanvas(width=5, height=4, dpi=100) self.canvas.setObjectName("canvas") @@ -158,7 +170,11 @@ class ResultsWindow(ASubMainWindow, ListedSubWindow): self._table[t].dataChanged.connect(fun[t]) - def plotXY(self, reach_id = None, profile_id = None, timestamp = None): + self._slider_profile.valueChanged.connect(self._set_current_profile_slider) + self._slider_time.valueChanged.connect(self._set_current_timestamp) + + + def update(self, reach_id = None, profile_id = None, timestamp = None): if reach_id is not None: self.plot_xy.set_reach(reach_id) if profile_id is not None: @@ -170,11 +186,27 @@ class ResultsWindow(ASubMainWindow, ListedSubWindow): def _set_current_reach(self): - return + table = self.find(QTableView, f"tableView_reach") + indexes = table.selectedIndexes() + + self.update(reach_id = indexes[0]) def _set_current_profile(self): + table = self.find(QTableView, f"tableView_profile") + indexes = table.selectedIndexes() + + self.update(profile_id = indexes[0]) + + def _set_current_profile_slider(self): + pid = self._slider_profile.value() + self.update(profile_id = pid) + return + def _set_current_timestamp(self): + timestamp = self._timestamps[self._slider_time.value()] + self.update(timestamp = timestamp) + def copy(self): logger.info("TODO: copy") diff --git a/src/View/ui/Results.ui b/src/View/ui/Results.ui index 2f886339..64cde207 100644 --- a/src/View/ui/Results.ui +++ b/src/View/ui/Results.ui @@ -30,17 +30,17 @@ <widget class="QTableView" name="tableView_reach"/> <widget class="QTableView" name="tableView_profile"/> </widget> - <widget class="QWidget" name=""> + <widget class="QWidget" name="layoutWidget"> <layout class="QGridLayout" name="gridLayout"> <item row="1" column="0"> - <widget class="QSlider" name="horizontalSlider"> + <widget class="QSlider" name="horizontalSlider_time"> <property name="orientation"> <enum>Qt::Horizontal</enum> </property> </widget> </item> <item row="0" column="1"> - <widget class="QSlider" name="verticalSlider"> + <widget class="QSlider" name="verticalSlider_profile"> <property name="orientation"> <enum>Qt::Vertical</enum> </property> -- GitLab