From 2de2c8e077e369232cdb351d2f528acb64945072 Mon Sep 17 00:00:00 2001
From: Pierre-Antoine Rouby <pierre-antoine.rouby@inrae.fr>
Date: Wed, 23 Aug 2023 16:17:45 +0200
Subject: [PATCH] Pamhyr: Add plot toolbar in most of window.

---
 src/View/BoundaryCondition/Edit/Window.py     |  6 +++++
 src/View/InitialConditions/Window.py          | 14 +++++++++--
 src/View/LateralContribution/Edit/Window.py   |  6 +++++
 src/View/Results/PlotH.py                     |  2 +-
 src/View/SedimentLayers/Edit/Window.py        | 23 ++++++++++++++++++-
 .../SedimentLayers/Reach/Profile/Window.py    |  9 ++++++--
 src/View/SedimentLayers/Reach/Window.py       |  9 ++++++--
 7 files changed, 61 insertions(+), 8 deletions(-)

diff --git a/src/View/BoundaryCondition/Edit/Window.py b/src/View/BoundaryCondition/Edit/Window.py
index efcf0993..652aa22d 100644
--- a/src/View/BoundaryCondition/Edit/Window.py
+++ b/src/View/BoundaryCondition/Edit/Window.py
@@ -37,6 +37,7 @@ from PyQt5.QtWidgets import (
 )
 
 from View.Plot.MplCanvas import MplCanvas
+from View.Plot.navigation_toolbar_2qt import PamHyrNavigationToolbar2QT
 
 from View.BoundaryCondition.translate import long_types
 from View.BoundaryCondition.Edit.Table import TableModel, ExTimeDelegate
@@ -110,12 +111,17 @@ class EditBoundaryConditionWindow(ASubMainWindow, ListedSubWindow):
     def setup_plot(self):
         self.canvas = MplCanvas(width=5, height=4, dpi=100)
         self.canvas.setObjectName("canvas")
+        self.toolbar = PamHyrNavigationToolbar2QT(
+            self.canvas, self
+        )
+        self.verticalLayout.addWidget(self.toolbar)
         self.verticalLayout.addWidget(self.canvas)
 
         self.plot = Plot(
             canvas = self.canvas,
             data = self._data,
             mode = self._study.time_system,
+            toolbar = self.toolbar,
         )
         self.plot.draw()
 
diff --git a/src/View/InitialConditions/Window.py b/src/View/InitialConditions/Window.py
index 95f6004a..2d4e8077 100644
--- a/src/View/InitialConditions/Window.py
+++ b/src/View/InitialConditions/Window.py
@@ -49,6 +49,8 @@ from View.InitialConditions.UndoCommand import (
 from View.InitialConditions.Table import TableModel, ComboBoxDelegate
 
 from View.Plot.MplCanvas import MplCanvas
+from View.Plot.navigation_toolbar_2qt import PamHyrNavigationToolbar2QT
+
 from View.InitialConditions.PlotDKP import PlotDKP
 from View.InitialConditions.PlotDischarge import PlotDischarge
 from View.InitialConditions.translate import *
@@ -120,25 +122,33 @@ class InitialConditionsWindow(ASubMainWindow, ListedSubWindow):
     def setup_graph(self):
         self.canvas_1 = MplCanvas(width=5, height=4, dpi=100)
         self.canvas_1.setObjectName("canvas_1")
+        self.toolbar_1 = PamHyrNavigationToolbar2QT(
+            self.canvas_1, self
+        )
         self.plot_layout_1 = self.find(QVBoxLayout, "verticalLayout_1")
+        self.plot_layout_1.addWidget(self.toolbar_1)
         self.plot_layout_1.addWidget(self.canvas_1)
 
         self.plot_1 = PlotDKP(
             canvas = self.canvas_1,
             data = self._ics,
-            toolbar = None,
+            toolbar = self.toolbar_1,
         )
         self.plot_1.draw()
 
         self.canvas_2 = MplCanvas(width=5, height=4, dpi=100)
         self.canvas_2.setObjectName("canvas_2")
+        self.toolbar_2 = PamHyrNavigationToolbar2QT(
+            self.canvas_2, self
+        )
         self.plot_layout_2 = self.find(QVBoxLayout, "verticalLayout_2")
+        self.plot_layout_2.addWidget(self.toolbar_2)
         self.plot_layout_2.addWidget(self.canvas_2)
 
         self.plot_2 = PlotDischarge(
             canvas = self.canvas_2,
             data = self._ics,
-            toolbar = None,
+            toolbar = self.toolbar_2,
         )
         self.plot_2.draw()
 
diff --git a/src/View/LateralContribution/Edit/Window.py b/src/View/LateralContribution/Edit/Window.py
index 3a801591..413667d0 100644
--- a/src/View/LateralContribution/Edit/Window.py
+++ b/src/View/LateralContribution/Edit/Window.py
@@ -37,6 +37,7 @@ from PyQt5.QtWidgets import (
 )
 
 from View.Plot.MplCanvas import MplCanvas
+from View.Plot.navigation_toolbar_2qt import PamHyrNavigationToolbar2QT
 
 from View.LateralContribution.translate import long_types
 from View.LateralContribution.Edit.Table import TableModel, ExTimeDelegate
@@ -110,12 +111,17 @@ class EditLateralContributionWindow(ASubMainWindow, ListedSubWindow):
     def setup_plot(self):
         self.canvas = MplCanvas(width=5, height=4, dpi=100)
         self.canvas.setObjectName("canvas")
+        self.toolbar = PamHyrNavigationToolbar2QT(
+            self.canvas, self
+        )
+        self.verticalLayout.addWidget(self.toolbar)
         self.verticalLayout.addWidget(self.canvas)
 
         self.plot = Plot(
             canvas = self.canvas,
             data = self._data,
             mode = self._study.time_system,
+            toolbar = self.toolbar,
         )
         self.plot.draw()
 
diff --git a/src/View/Results/PlotH.py b/src/View/Results/PlotH.py
index 47c3f1bf..557c7cec 100644
--- a/src/View/Results/PlotH.py
+++ b/src/View/Results/PlotH.py
@@ -101,7 +101,7 @@ class PlotH(APlot):
             return
 
         self.canvas.axes.set_ylim(
-            [min(min(y),0), max(y)]
+            [min(min(y),0), max(y) + 10]
         )
 
         self._line = [
diff --git a/src/View/SedimentLayers/Edit/Window.py b/src/View/SedimentLayers/Edit/Window.py
index 965895d2..ac141ce7 100644
--- a/src/View/SedimentLayers/Edit/Window.py
+++ b/src/View/SedimentLayers/Edit/Window.py
@@ -1,3 +1,19 @@
+# Window.py -- Pamhyr
+# Copyright (C) 2023  INRAE
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <https://www.gnu.org/licenses/>.
+
 # -*- coding: utf-8 -*-
 
 import logging
@@ -25,6 +41,7 @@ from PyQt5.QtWidgets import (
 )
 
 from View.Plot.MplCanvas import MplCanvas
+from View.Plot.navigation_toolbar_2qt import PamHyrNavigationToolbar2QT
 
 from View.SedimentLayers.Edit.UndoCommand import *
 from View.SedimentLayers.Edit.Table import *
@@ -89,7 +106,11 @@ class EditSedimentLayersWindow(ASubMainWindow, ListedSubWindow):
     def setup_graph(self):
         self.canvas = MplCanvas(width=5, height=4, dpi=100)
         self.canvas.setObjectName("canvas")
+        self.toolbar = PamHyrNavigationToolbar2QT(
+            self.canvas, self
+        )
         self.plot_layout = self.find(QVBoxLayout, "verticalLayout")
+        self.plot_layout.addWidget(self.toolbar)
         self.plot_layout.addWidget(self.canvas)
         self._set_plot()
 
@@ -97,7 +118,7 @@ class EditSedimentLayersWindow(ASubMainWindow, ListedSubWindow):
         self.plot = Plot(
             canvas = self.canvas,
             data = self._sl,
-            toolbar = None,
+            toolbar = self.toolbar,
             display_current = False
         )
         self.plot.draw()
diff --git a/src/View/SedimentLayers/Reach/Profile/Window.py b/src/View/SedimentLayers/Reach/Profile/Window.py
index d1dd5e69..aafd719b 100644
--- a/src/View/SedimentLayers/Reach/Profile/Window.py
+++ b/src/View/SedimentLayers/Reach/Profile/Window.py
@@ -29,8 +29,9 @@ from View.SedimentLayers.Reach.Profile.Table import *
 from View.SedimentLayers.Reach.Profile.Plot import Plot
 
 from View.Plot.MplCanvas import MplCanvas
-from View.SedimentLayers.Reach.Profile.translate import *
+from View.Plot.navigation_toolbar_2qt import PamHyrNavigationToolbar2QT
 
+from View.SedimentLayers.Reach.Profile.translate import *
 from View.SedimentLayers.Window import SedimentLayersWindow
 
 _translate = QCoreApplication.translate
@@ -109,7 +110,11 @@ class ProfileSedimentLayersWindow(ASubMainWindow, ListedSubWindow):
     def setup_graph(self):
         self.canvas = MplCanvas(width=5, height=4, dpi=100)
         self.canvas.setObjectName("canvas")
+        self.toolbar = PamHyrNavigationToolbar2QT(
+            self.canvas, self
+        )
         self.plot_layout = self.find(QVBoxLayout, "verticalLayout")
+        self.plot_layout.addWidget(self.toolbar)
         self.plot_layout.addWidget(self.canvas)
 
         self._update_plot()
@@ -118,7 +123,7 @@ class ProfileSedimentLayersWindow(ASubMainWindow, ListedSubWindow):
         self.plot = Plot(
             canvas = self.canvas,
             data = self._profile,
-            toolbar = None,
+            toolbar = self.toolbar,
             display_current = False
         )
         self.plot.draw()
diff --git a/src/View/SedimentLayers/Reach/Window.py b/src/View/SedimentLayers/Reach/Window.py
index ee477edc..f70049ae 100644
--- a/src/View/SedimentLayers/Reach/Window.py
+++ b/src/View/SedimentLayers/Reach/Window.py
@@ -30,8 +30,9 @@ from View.SedimentLayers.Reach.Plot import Plot
 from View.SedimentLayers.Reach.SLDialog import SLDialog
 
 from View.Plot.MplCanvas import MplCanvas
-from View.SedimentLayers.Reach.translate import *
+from View.Plot.navigation_toolbar_2qt import PamHyrNavigationToolbar2QT
 
+from View.SedimentLayers.Reach.translate import *
 from View.SedimentLayers.Window import SedimentLayersWindow
 from View.SedimentLayers.Reach.Profile.Window import ProfileSedimentLayersWindow
 
@@ -97,7 +98,11 @@ class ReachSedimentLayersWindow(ASubMainWindow, ListedSubWindow):
     def setup_graph(self):
         self.canvas = MplCanvas(width=5, height=4, dpi=100)
         self.canvas.setObjectName("canvas")
+        self.toolbar = PamHyrNavigationToolbar2QT(
+            self.canvas, self
+        )
         self.plot_layout = self.find(QVBoxLayout, "verticalLayout_2")
+        self.plot_layout.addWidget(self.toolbar)
         self.plot_layout.addWidget(self.canvas)
 
         self._update_plot()
@@ -106,7 +111,7 @@ class ReachSedimentLayersWindow(ASubMainWindow, ListedSubWindow):
         self.plot = Plot(
             canvas = self.canvas,
             data = self._reach,
-            toolbar = None,
+            toolbar = self.toolbar,
             display_current = False
         )
         self.plot.draw()
-- 
GitLab