diff --git a/src/View/Geometry/Profile/Table.py b/src/View/Geometry/Profile/Table.py index 1dd251576960e86fa1cf4b796cedfcca6b476546..c23eeb6f803b115b9c95ef8017e3b2316a19a1e4 100644 --- a/src/View/Geometry/Profile/Table.py +++ b/src/View/Geometry/Profile/Table.py @@ -233,7 +233,7 @@ class GeometryProfileTableModel(PamhyrTableModel): self.endMoveRows() self.layoutChanged.emit() - def move_down(self, row_to_move, parent=QModelIndex()): + def move_down(self, row, parent=QModelIndex()): if row > self._data.number_points: return diff --git a/src/View/Geometry/Profile/Window.py b/src/View/Geometry/Profile/Window.py index ee4f53839d1338e2908ef185279fb6e941a5ac30..96468c7741589b943231fb5ef1c5af8e76bcf620 100644 --- a/src/View/Geometry/Profile/Window.py +++ b/src/View/Geometry/Profile/Window.py @@ -129,7 +129,11 @@ class ProfileWindow(PamhyrWindow): self.find(QAction, action)\ .triggered.connect(actions[action]) - self._tablemodel.dataChanged.connect(self.update_plot) + self._tablemodel.dataChanged.connect(self.update) + + def update(self): + self.update_plot() + self._propagate_update(key="geometry") def update_plot(self): self._tablemodel.blockSignals(True) @@ -155,7 +159,7 @@ class ProfileWindow(PamhyrWindow): else: row = self.index_selected_row() self._tablemodel.insert_row(row + 1) - self.update_plot() + self.update() def delete(self): table = self.find(QTableView, "tableView") @@ -169,23 +173,23 @@ class ProfileWindow(PamhyrWindow): if len(rows) > 0: self._tablemodel.remove_rows(rows) - self.update_plot() + self.update() def sort_X_ascending(self): self._tablemodel.sort('x', order=Qt.AscendingOrder) - self.update_plot() + self.update() def sort_X_descending(self): self._tablemodel.sort('x', order=Qt.DescendingOrder) - self.update_plot() + self.update() def sort_Y_ascending(self): self._tablemodel.sort('y', order=Qt.AscendingOrder) - self.update_plot() + self.update() def sort_Y_descending(self): self._tablemodel.sort('y', order=Qt.DescendingOrder) - self.update_plot() + self.update() def move_down(self): rows = list( @@ -199,7 +203,7 @@ class ProfileWindow(PamhyrWindow): if row < self._tablemodel.rowCount() - 1: self._tablemodel.move_down(row) - self.update_plot() + self.update() def move_up(self): rows = list( @@ -213,7 +217,7 @@ class ProfileWindow(PamhyrWindow): if 0 < row: self._tablemodel.move_up(row) - self.update_plot() + self.update() def _copy(self): table = self.find(QTableView, "tableView") @@ -245,12 +249,12 @@ class ProfileWindow(PamhyrWindow): row = self.index_selected_row() self._tablemodel.paste(row, header, data) - self.update_plot() + self.update() def _undo(self): self._tablemodel.undo() - self.update_plot() + self.update() def _redo(self): self._tablemodel.redo() - self.update_plot() + self.update() diff --git a/src/View/InitialConditions/PlotDKP.py b/src/View/InitialConditions/PlotDKP.py index d7a442864e507a4baca1e28f7c0b3811349a242b..d29356fa01fc1d0b2d9480db5a113189287c078b 100644 --- a/src/View/InitialConditions/PlotDKP.py +++ b/src/View/InitialConditions/PlotDKP.py @@ -16,6 +16,8 @@ # -*- coding: utf-8 -*- +import logging + from tools import timer from View.Tools.PamhyrPlot import PamhyrPlot @@ -23,6 +25,8 @@ from PyQt5.QtCore import ( QCoreApplication ) +logger = logging.getLogger() + _translate = QCoreApplication.translate @@ -80,9 +84,20 @@ class PlotDKP(PamhyrPlot): ) z_min = self.data.reach.reach.get_z_min() + geometry_kp = self.data.reach.reach.get_kp() + + filtred_elevation = list( + map( + lambda x: elevation[x[0]], + filter( + lambda x: x[1] in geometry_kp, + enumerate(kp) + ) + ) + ) self.collection = self.canvas.axes.fill_between( - kp, z_min, elevation, + geometry_kp, z_min, filtred_elevation, color=self.color_plot_river_water_zone, alpha=0.7, interpolate=True ) diff --git a/src/View/InitialConditions/Window.py b/src/View/InitialConditions/Window.py index 1696e361fe94bafd7c4abe2e8ed8cc7b97613e3d..fb3361bc47d0923d05644ea0e4584c26488605bf 100644 --- a/src/View/InitialConditions/Window.py +++ b/src/View/InitialConditions/Window.py @@ -181,10 +181,20 @@ class InitialConditionsWindow(PamhyrWindow): .selectedRows()[0]\ .row() + def update(self): + self._update_plot() + self._propagate_update(key="initial_condition") + def _update_plot(self): self.plot_1.draw() self.plot_2.draw() + def _propagated_update(self, key=None): + if key != "geometry": + return + + self.update() + def index_selected_rows(self): table = self.find(QTableView, f"tableView") return list( @@ -204,7 +214,7 @@ class InitialConditionsWindow(PamhyrWindow): else: self._table.add(rows[0]) - self._update_plot() + self._update() def delete(self): rows = self.index_selected_rows() @@ -212,48 +222,48 @@ class InitialConditionsWindow(PamhyrWindow): return self._table.delete(rows) - self._update_plot() + self._update() def sort(self): self._table.sort(False) - self._update_plot() + self._update() def move_up(self): row = self.index_selected_row() self._table.move_up(row) - self._update_plot() + self._update() def move_down(self): row = self.index_selected_row() self._table.move_down(row) - self._update_plot() + self._update() def _copy(self): logger.info("TODO: copy") - self._update_plot() + self._update() def _paste(self): logger.info("TODO: paste") - self._update_plot() + self._update() def _undo(self): self._table.undo() - self._update_plot() + self._update() def _redo(self): self._table.redo() - self._update_plot() + self._update() def generate_growing_constante_height(self): dlg = HeightDialog(trad=self._trad, parent=self) if dlg.exec(): value = dlg.value self._table.generate("growing", value) - self._update_plot() + self._update() def generate_discharge(self): dlg = DischargeDialog(trad=self._trad, parent=self) if dlg.exec(): value = dlg.value self._table.generate("discharge", value) - self._update_plot() + self._update() diff --git a/src/View/MainWindow.py b/src/View/MainWindow.py index 4f32e70a989bda7cb1f56cea2b764dcfe5545131..231cf1b376a0a4059a232f0fd99b0524b27b1021 100644 --- a/src/View/MainWindow.py +++ b/src/View/MainWindow.py @@ -351,7 +351,10 @@ class ApplicationWindow(QMainWindow, ListedSubWindow, WindowToolKit): logger.debug(f"Propagation keys: {self._propagation_keys}") def _do_propagate_update(self): - for key in self._propagation_keys: + keys = self._propagation_keys.copy() + self._init_propagation_keys() + + for key in keys: if key == "window_list": logger.debug(f"Update window list") self._do_update_window_list() @@ -361,8 +364,6 @@ class ApplicationWindow(QMainWindow, ListedSubWindow, WindowToolKit): for _, window in self.sub_win_list: window._propagated_update(key=key) - self._init_propagation_keys() - ######### # MODEL # #########