From 330761a372890c382bdbb17757e11cbceff7087b Mon Sep 17 00:00:00 2001
From: Pierre-Antoine Rouby <pierre-antoine.rouby@inrae.fr>
Date: Wed, 28 Feb 2024 16:27:09 +0100
Subject: [PATCH] MainWindow: Info: Add some informations.

---
 src/View/MainWindowTabInfo.py            |  96 ++++++++++++++++--
 src/View/ui/Widgets/MainWindowTabInfo.ui | 122 +++++++++++++++++++----
 2 files changed, 192 insertions(+), 26 deletions(-)

diff --git a/src/View/MainWindowTabInfo.py b/src/View/MainWindowTabInfo.py
index bdfb7e63..2013cf7a 100644
--- a/src/View/MainWindowTabInfo.py
+++ b/src/View/MainWindowTabInfo.py
@@ -59,6 +59,10 @@ class WidgetInfo(PamhyrWidget):
         self.set_label_text("label_cs", "0")
         self.set_label_text("label_points", "0")
 
+        self.set_label_text("label_res", "0")
+        self.set_label_text("label_bc", "0")
+        self.set_label_text("label_lc", "0")
+
     def update(self):
         if self._study is None:
             self.set_initial_values()
@@ -71,10 +75,12 @@ class WidgetInfo(PamhyrWidget):
         self.set_geometry_values()
 
     def set_network_values(self):
-        n_nodes = self._study.river.enable_nodes_counts()
-        n_d_nodes = self._study.river.nodes_counts() - n_nodes
-        n_edges = self._study.river.enable_edges_counts()
-        n_d_edges = self._study.river.edges_counts() - n_edges
+        river = self._study.river
+
+        n_nodes = river.enable_nodes_counts()
+        n_d_nodes = river.nodes_counts() - n_nodes
+        n_edges = river.enable_edges_counts()
+        n_d_edges = river.edges_counts() - n_edges
 
         self.set_label_text(
             "label_nodes",
@@ -85,20 +91,77 @@ class WidgetInfo(PamhyrWidget):
             f"{n_edges} {self.color_grey}({n_d_edges}){self.color_end}"
         )
 
-        current = self._study.river.current_reach()
+        current = river.current_reach()
         if current is not None:
             name = current.reach.name
         else:
             name = "None"
         self.set_label_text("label_current_reach", name)
 
+        self.set_network_values_ext(river)
+
+    def set_network_values_ext(self, river):
+        self.set_network_values_ext_reservoir(river)
+        self.set_network_values_ext_bc(river)
+        self.set_network_values_ext_lc(river)
+
+    def set_network_values_ext_reservoir(self, river):
+        n_res = 0
+        n_na_res = 0
+        for res in river.reservoir.lst:
+            if res.node is not None:
+                n_res += 1
+            else:
+                n_na_res += 1
+
+        self.set_label_text(
+            "label_res",
+            f"{n_res} {self.color_grey}({n_na_res}){self.color_end}"
+        )
+
+    def set_network_values_ext_bc(self, river):
+        bc = river.boundary_condition
+        n_bc = 0
+        n_na_bc = 0
+
+        for tab in bc._tabs_list:
+            for c in bc.get_tab(tab):
+                if c.node is not None:
+                    n_bc += 1
+                else:
+                    n_na_bc += 1
+
+        self.set_label_text(
+            "label_bc",
+            f"{n_bc} {self.color_grey}({n_na_bc}){self.color_end}"
+        )
+
+    def set_network_values_ext_lc(self, river):
+        lc = river.lateral_contribution
+        n_lc = 0
+        n_na_lc = 0
+
+        for tab in lc._tabs_list:
+            for c in lc.get_tab(tab):
+                if c.edge is not None:
+                    n_lc += 1
+                else:
+                    n_na_lc += 1
+
+        self.set_label_text(
+            "label_lc",
+            f"{n_lc} {self.color_grey}({n_na_lc}){self.color_end}"
+        )
+
     def set_geometry_values(self):
+        river = self._study.river
+
         n_cs = 0
         n_d_cs = 0
         n_points = 0
         n_d_points = 0
 
-        for edge in self._study.river.edges():
+        for edge in river.edges():
             for profile in edge.reach.profiles:
                 if edge.is_enable():
                     n_points += len(profile)
@@ -115,3 +178,24 @@ class WidgetInfo(PamhyrWidget):
             "label_points",
             f"{n_points} {self.color_grey}({n_d_points}){self.color_end}"
         )
+
+        self.set_geometry_values_ext(river)
+
+    def set_geometry_values_ext(self, river):
+        self.set_geometry_values_ext_hs(river)
+
+    def set_geometry_values_ext_hs(self, river):
+        hs = river.hydraulic_structures
+        n_hs = 0
+        n_na_hs = 0
+
+        for h in hs.lst:
+            if h.input_reach is not None and h.input_kp is not None:
+                n_hs += 1
+            else:
+                n_na_hs += 1
+
+        self.set_label_text(
+            "label_hs",
+            f"{n_hs} {self.color_grey}({n_na_hs}){self.color_end}"
+        )
diff --git a/src/View/ui/Widgets/MainWindowTabInfo.ui b/src/View/ui/Widgets/MainWindowTabInfo.ui
index c037b248..8f528f22 100644
--- a/src/View/ui/Widgets/MainWindowTabInfo.ui
+++ b/src/View/ui/Widgets/MainWindowTabInfo.ui
@@ -88,6 +88,16 @@
               <string>River network</string>
              </property>
              <layout class="QGridLayout" name="gridLayout">
+              <item row="0" column="1">
+               <widget class="QLabel" name="label_current_reach">
+                <property name="whatsThis">
+                 <string notr="true"/>
+                </property>
+                <property name="text">
+                 <string>@current_reach</string>
+                </property>
+               </widget>
+              </item>
               <item row="2" column="0">
                <widget class="QLabel" name="label_7">
                 <property name="text">
@@ -95,7 +105,7 @@
                 </property>
                </widget>
               </item>
-              <item row="1" column="2">
+              <item row="1" column="5">
                <spacer name="horizontalSpacer">
                 <property name="orientation">
                  <enum>Qt::Horizontal</enum>
@@ -108,6 +118,13 @@
                 </property>
                </spacer>
               </item>
+              <item row="0" column="0">
+               <widget class="QLabel" name="label_2">
+                <property name="text">
+                 <string>Current reach:</string>
+                </property>
+               </widget>
+              </item>
               <item row="1" column="0">
                <widget class="QLabel" name="label_5">
                 <property name="text">
@@ -125,6 +142,13 @@
                 </property>
                </widget>
               </item>
+              <item row="0" column="4">
+               <widget class="QLabel" name="label_res">
+                <property name="text">
+                 <string>@nb_res</string>
+                </property>
+               </widget>
+              </item>
               <item row="2" column="1">
                <widget class="QLabel" name="label_edges">
                 <property name="whatsThis">
@@ -135,20 +159,51 @@
                 </property>
                </widget>
               </item>
-              <item row="0" column="0">
-               <widget class="QLabel" name="label_2">
+              <item row="1" column="3">
+               <widget class="QLabel" name="label_8">
                 <property name="text">
-                 <string>Current reach:</string>
+                 <string>Boundary conditions:</string>
                 </property>
                </widget>
               </item>
-              <item row="0" column="1">
-               <widget class="QLabel" name="label_current_reach">
-                <property name="whatsThis">
-                 <string notr="true"/>
+              <item row="0" column="3">
+               <widget class="QLabel" name="label_4">
+                <property name="text">
+                 <string>Reservoir:</string>
                 </property>
+               </widget>
+              </item>
+              <item row="1" column="4">
+               <widget class="QLabel" name="label_bc">
                 <property name="text">
-                 <string>@current_reach</string>
+                 <string>@nb_bc</string>
+                </property>
+               </widget>
+              </item>
+              <item row="1" column="2">
+               <spacer name="horizontalSpacer_3">
+                <property name="orientation">
+                 <enum>Qt::Horizontal</enum>
+                </property>
+                <property name="sizeHint" stdset="0">
+                 <size>
+                  <width>40</width>
+                  <height>20</height>
+                 </size>
+                </property>
+               </spacer>
+              </item>
+              <item row="2" column="3">
+               <widget class="QLabel" name="label_11">
+                <property name="text">
+                 <string>Lateral contributions:</string>
+                </property>
+               </widget>
+              </item>
+              <item row="2" column="4">
+               <widget class="QLabel" name="label_lc">
+                <property name="text">
+                 <string>@nb_lc</string>
                 </property>
                </widget>
               </item>
@@ -161,6 +216,39 @@
               <string>Geometry</string>
              </property>
              <layout class="QGridLayout" name="gridLayout_2">
+              <item row="0" column="2">
+               <spacer name="horizontalSpacer_2">
+                <property name="orientation">
+                 <enum>Qt::Horizontal</enum>
+                </property>
+                <property name="sizeHint" stdset="0">
+                 <size>
+                  <width>40</width>
+                  <height>20</height>
+                 </size>
+                </property>
+               </spacer>
+              </item>
+              <item row="0" column="5">
+               <spacer name="horizontalSpacer_4">
+                <property name="orientation">
+                 <enum>Qt::Horizontal</enum>
+                </property>
+                <property name="sizeHint" stdset="0">
+                 <size>
+                  <width>40</width>
+                  <height>20</height>
+                 </size>
+                </property>
+               </spacer>
+              </item>
+              <item row="0" column="3">
+               <widget class="QLabel" name="label_6">
+                <property name="text">
+                 <string>Hydraulic stuctures:</string>
+                </property>
+               </widget>
+              </item>
               <item row="1" column="1">
                <widget class="QLabel" name="label_points">
                 <property name="whatsThis">
@@ -195,18 +283,12 @@
                 </property>
                </widget>
               </item>
-              <item row="0" column="2">
-               <spacer name="horizontalSpacer_2">
-                <property name="orientation">
-                 <enum>Qt::Horizontal</enum>
-                </property>
-                <property name="sizeHint" stdset="0">
-                 <size>
-                  <width>40</width>
-                  <height>20</height>
-                 </size>
+              <item row="0" column="4">
+               <widget class="QLabel" name="label_hs">
+                <property name="text">
+                 <string>@nb_hs</string>
                 </property>
-               </spacer>
+               </widget>
               </item>
              </layout>
             </widget>
-- 
GitLab