IC: Propagate update, update at gemometry change and minor change.

setup.py
Pierre-Antoine Rouby 2024-02-20 10:25:04 +01:00
parent d2f275c49f
commit 9cc3bb23c0
5 changed files with 58 additions and 28 deletions

View File

@ -233,7 +233,7 @@ class GeometryProfileTableModel(PamhyrTableModel):
self.endMoveRows() self.endMoveRows()
self.layoutChanged.emit() 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: if row > self._data.number_points:
return return

View File

@ -129,7 +129,11 @@ class ProfileWindow(PamhyrWindow):
self.find(QAction, action)\ self.find(QAction, action)\
.triggered.connect(actions[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): def update_plot(self):
self._tablemodel.blockSignals(True) self._tablemodel.blockSignals(True)
@ -155,7 +159,7 @@ class ProfileWindow(PamhyrWindow):
else: else:
row = self.index_selected_row() row = self.index_selected_row()
self._tablemodel.insert_row(row + 1) self._tablemodel.insert_row(row + 1)
self.update_plot() self.update()
def delete(self): def delete(self):
table = self.find(QTableView, "tableView") table = self.find(QTableView, "tableView")
@ -169,23 +173,23 @@ class ProfileWindow(PamhyrWindow):
if len(rows) > 0: if len(rows) > 0:
self._tablemodel.remove_rows(rows) self._tablemodel.remove_rows(rows)
self.update_plot() self.update()
def sort_X_ascending(self): def sort_X_ascending(self):
self._tablemodel.sort('x', order=Qt.AscendingOrder) self._tablemodel.sort('x', order=Qt.AscendingOrder)
self.update_plot() self.update()
def sort_X_descending(self): def sort_X_descending(self):
self._tablemodel.sort('x', order=Qt.DescendingOrder) self._tablemodel.sort('x', order=Qt.DescendingOrder)
self.update_plot() self.update()
def sort_Y_ascending(self): def sort_Y_ascending(self):
self._tablemodel.sort('y', order=Qt.AscendingOrder) self._tablemodel.sort('y', order=Qt.AscendingOrder)
self.update_plot() self.update()
def sort_Y_descending(self): def sort_Y_descending(self):
self._tablemodel.sort('y', order=Qt.DescendingOrder) self._tablemodel.sort('y', order=Qt.DescendingOrder)
self.update_plot() self.update()
def move_down(self): def move_down(self):
rows = list( rows = list(
@ -199,7 +203,7 @@ class ProfileWindow(PamhyrWindow):
if row < self._tablemodel.rowCount() - 1: if row < self._tablemodel.rowCount() - 1:
self._tablemodel.move_down(row) self._tablemodel.move_down(row)
self.update_plot() self.update()
def move_up(self): def move_up(self):
rows = list( rows = list(
@ -213,7 +217,7 @@ class ProfileWindow(PamhyrWindow):
if 0 < row: if 0 < row:
self._tablemodel.move_up(row) self._tablemodel.move_up(row)
self.update_plot() self.update()
def _copy(self): def _copy(self):
table = self.find(QTableView, "tableView") table = self.find(QTableView, "tableView")
@ -245,12 +249,12 @@ class ProfileWindow(PamhyrWindow):
row = self.index_selected_row() row = self.index_selected_row()
self._tablemodel.paste(row, header, data) self._tablemodel.paste(row, header, data)
self.update_plot() self.update()
def _undo(self): def _undo(self):
self._tablemodel.undo() self._tablemodel.undo()
self.update_plot() self.update()
def _redo(self): def _redo(self):
self._tablemodel.redo() self._tablemodel.redo()
self.update_plot() self.update()

View File

@ -16,6 +16,8 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
import logging
from tools import timer from tools import timer
from View.Tools.PamhyrPlot import PamhyrPlot from View.Tools.PamhyrPlot import PamhyrPlot
@ -23,6 +25,8 @@ from PyQt5.QtCore import (
QCoreApplication QCoreApplication
) )
logger = logging.getLogger()
_translate = QCoreApplication.translate _translate = QCoreApplication.translate
@ -80,9 +84,20 @@ class PlotDKP(PamhyrPlot):
) )
z_min = self.data.reach.reach.get_z_min() 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( self.collection = self.canvas.axes.fill_between(
kp, z_min, elevation, geometry_kp, z_min, filtred_elevation,
color=self.color_plot_river_water_zone, color=self.color_plot_river_water_zone,
alpha=0.7, interpolate=True alpha=0.7, interpolate=True
) )

View File

@ -181,10 +181,20 @@ class InitialConditionsWindow(PamhyrWindow):
.selectedRows()[0]\ .selectedRows()[0]\
.row() .row()
def update(self):
self._update_plot()
self._propagate_update(key="initial_condition")
def _update_plot(self): def _update_plot(self):
self.plot_1.draw() self.plot_1.draw()
self.plot_2.draw() self.plot_2.draw()
def _propagated_update(self, key=None):
if key != "geometry":
return
self.update()
def index_selected_rows(self): def index_selected_rows(self):
table = self.find(QTableView, f"tableView") table = self.find(QTableView, f"tableView")
return list( return list(
@ -204,7 +214,7 @@ class InitialConditionsWindow(PamhyrWindow):
else: else:
self._table.add(rows[0]) self._table.add(rows[0])
self._update_plot() self._update()
def delete(self): def delete(self):
rows = self.index_selected_rows() rows = self.index_selected_rows()
@ -212,48 +222,48 @@ class InitialConditionsWindow(PamhyrWindow):
return return
self._table.delete(rows) self._table.delete(rows)
self._update_plot() self._update()
def sort(self): def sort(self):
self._table.sort(False) self._table.sort(False)
self._update_plot() self._update()
def move_up(self): def move_up(self):
row = self.index_selected_row() row = self.index_selected_row()
self._table.move_up(row) self._table.move_up(row)
self._update_plot() self._update()
def move_down(self): def move_down(self):
row = self.index_selected_row() row = self.index_selected_row()
self._table.move_down(row) self._table.move_down(row)
self._update_plot() self._update()
def _copy(self): def _copy(self):
logger.info("TODO: copy") logger.info("TODO: copy")
self._update_plot() self._update()
def _paste(self): def _paste(self):
logger.info("TODO: paste") logger.info("TODO: paste")
self._update_plot() self._update()
def _undo(self): def _undo(self):
self._table.undo() self._table.undo()
self._update_plot() self._update()
def _redo(self): def _redo(self):
self._table.redo() self._table.redo()
self._update_plot() self._update()
def generate_growing_constante_height(self): def generate_growing_constante_height(self):
dlg = HeightDialog(trad=self._trad, parent=self) dlg = HeightDialog(trad=self._trad, parent=self)
if dlg.exec(): if dlg.exec():
value = dlg.value value = dlg.value
self._table.generate("growing", value) self._table.generate("growing", value)
self._update_plot() self._update()
def generate_discharge(self): def generate_discharge(self):
dlg = DischargeDialog(trad=self._trad, parent=self) dlg = DischargeDialog(trad=self._trad, parent=self)
if dlg.exec(): if dlg.exec():
value = dlg.value value = dlg.value
self._table.generate("discharge", value) self._table.generate("discharge", value)
self._update_plot() self._update()

View File

@ -351,7 +351,10 @@ class ApplicationWindow(QMainWindow, ListedSubWindow, WindowToolKit):
logger.debug(f"Propagation keys: {self._propagation_keys}") logger.debug(f"Propagation keys: {self._propagation_keys}")
def _do_propagate_update(self): 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": if key == "window_list":
logger.debug(f"Update window list") logger.debug(f"Update window list")
self._do_update_window_list() self._do_update_window_list()
@ -361,8 +364,6 @@ class ApplicationWindow(QMainWindow, ListedSubWindow, WindowToolKit):
for _, window in self.sub_win_list: for _, window in self.sub_win_list:
window._propagated_update(key=key) window._propagated_update(key=key)
self._init_propagation_keys()
######### #########
# MODEL # # MODEL #
######### #########