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