diff --git a/src/View/InitialConditions/DialogDischarge.py b/src/View/InitialConditions/DialogDischarge.py index 7bbe8abd81324948bf19ef5479367b57c40b0f3b..7be75bafe17e745fe6db0339499dd835fed3ee6a 100644 --- a/src/View/InitialConditions/DialogDischarge.py +++ b/src/View/InitialConditions/DialogDischarge.py @@ -37,7 +37,7 @@ class DischargeDialog(PamhyrDialog): def __init__(self, title="Discharge", parent=None): super(DischargeDialog, self).__init__( - title = _pamhyr_name, + title = self._pamhyr_name, options = [], parent = parent ) diff --git a/src/View/InitialConditions/DialogHeight.py b/src/View/InitialConditions/DialogHeight.py index 9ccadbd6126bacb0809624b678606205c43dd5eb..8a2a3c122667779e78054cd22fed7b32e3accc30 100644 --- a/src/View/InitialConditions/DialogHeight.py +++ b/src/View/InitialConditions/DialogHeight.py @@ -37,7 +37,7 @@ class HeightDialog(PamhyrDialog): def __init__(self, parent=None): super(HeightDialog, self).__init__( - title = name, + title = self._pamhyr_name, options = [], parent = parent ) diff --git a/src/View/InitialConditions/PlotDKP.py b/src/View/InitialConditions/PlotDKP.py index 58a83219e3afea0ccc3672433ded6550a080f17e..d604179a0082760d8ae98f0b33b19478b66b5330 100644 --- a/src/View/InitialConditions/PlotDKP.py +++ b/src/View/InitialConditions/PlotDKP.py @@ -17,7 +17,7 @@ # -*- coding: utf-8 -*- from tools import timer -from View.Plot.APlot import APlot +from View.Tools.PamhyrPlot import PamhyrPlot from PyQt5.QtCore import ( QCoreApplication @@ -25,14 +25,7 @@ from PyQt5.QtCore import ( _translate = QCoreApplication.translate -class PlotDKP(APlot): - def __init__(self, canvas=None, data=None, toolbar=None): - super(PlotDKP, self).__init__( - canvas=canvas, - data=data, - toolbar=toolbar - ) - +class PlotDKP(PamhyrPlot): @timer def draw(self, highlight=None): self.canvas.axes.cla() @@ -42,11 +35,11 @@ class PlotDKP(APlot): return self.canvas.axes.set_ylabel( - _translate("MainWindow_reach", "Elevation (m)"), + self._trad["elevation"], color='green', fontsize=11 ) self.canvas.axes.set_xlabel( - _translate("MainWindow_reach", "KP (m)"), + self._trad["kp"], color='green', fontsize=11 ) diff --git a/src/View/InitialConditions/PlotDischarge.py b/src/View/InitialConditions/PlotDischarge.py index 1fe05defc0abfe05d64b17bae5c2f79e515a3ac6..1ad2a266eb0c9e2a59acb06e07dbc16566596ffb 100644 --- a/src/View/InitialConditions/PlotDischarge.py +++ b/src/View/InitialConditions/PlotDischarge.py @@ -17,22 +17,9 @@ # -*- coding: utf-8 -*- from tools import timer -from View.Plot.APlot import APlot - -from PyQt5.QtCore import ( - QCoreApplication -) - -_translate = QCoreApplication.translate - -class PlotDischarge(APlot): - def __init__(self, canvas=None, data=None, toolbar=None): - super(PlotDischarge, self).__init__( - canvas=canvas, - data=data, - toolbar=toolbar - ) +from View.Tools.PamhyrPlot import PamhyrPlot +class PlotDischarge(PamhyrPlot): @timer def draw(self, highlight=None): self.canvas.axes.cla() @@ -42,11 +29,11 @@ class PlotDischarge(APlot): return self.canvas.axes.set_ylabel( - _translate("MainWindow_reach", "Discharge (m^3/s)"), + self._trad["discharge"], color='green', fontsize=11 ) self.canvas.axes.set_xlabel( - _translate("MainWindow_reach", "KP (m)"), + self._trad["kp"], color='green', fontsize=11 ) diff --git a/src/View/InitialConditions/Table.py b/src/View/InitialConditions/Table.py index 5e704ba921635b633a2c947cc0b922d8bfaa422d..f7ad1020cb4827d407180e3bcb4000227101d0e1 100644 --- a/src/View/InitialConditions/Table.py +++ b/src/View/InitialConditions/Table.py @@ -33,14 +33,14 @@ from PyQt5.QtWidgets import ( QComboBox, ) +from View.Tools.PamhyrTable import PamhyrTableModel + from View.InitialConditions.UndoCommand import ( SetCommand, AddCommand, DelCommand, SortCommand, MoveCommand, PasteCommand, DuplicateCommand, GenerateCommand, ) -from View.InitialConditions.translate import * - logger = logging.getLogger() _translate = QCoreApplication.translate @@ -87,29 +87,13 @@ class ComboBoxDelegate(QItemDelegate): self.commitData.emit(self.sender()) -class TableModel(QAbstractTableModel): - def __init__(self, river=None, reach=None, undo=None): - super(QAbstractTableModel, self).__init__() - self._headers = list(table_headers.keys()) - self._river = river +class InitialConditionTableModel(PamhyrTableModel): + def __init__(self, reach=None, **kwargs): self._reach = reach - self._undo = undo - self._ics = self._river.initial_conditions.get(reach) - - def flags(self, index): - column = index.column() - - options = Qt.ItemIsSelectable - if self._headers[column] != "speed": - options |= Qt.ItemIsEnabled | Qt.ItemIsEditable + super(InitialConditionTableModel, self).__init__(**kwargs) - return options - - def rowCount(self, parent): - return len(self._ics) - - def columnCount(self, parent): - return len(self._headers) + def _setup_lst(self): + self._lst = self._data.river.initial_conditions.get(self._reach) def data(self, index, role): if role != Qt.ItemDataRole.DisplayRole: @@ -119,16 +103,10 @@ class TableModel(QAbstractTableModel): column = index.column() if self._headers[column] not in ["name", "comment"]: - v = self._ics.get(row)[self._headers[column]] + v = self._lst.get(row)[self._headers[column]] return f"{v:.4f}" else: - return self._ics.get(row)[self._headers[column]] - - return QVariant() - - def headerData(self, section, orientation, role): - if role == Qt.ItemDataRole.DisplayRole and orientation == Qt.Orientation.Horizontal: - return table_headers[self._headers[section]] + return self._lst.get(row)[self._headers[column]] return QVariant() @@ -143,7 +121,7 @@ class TableModel(QAbstractTableModel): if self._headers[column] is not None: self._undo.push( SetCommand( - self._ics, row, self._headers[column], value + self._lst, row, self._headers[column], value ) ) except Exception as e: @@ -158,7 +136,7 @@ class TableModel(QAbstractTableModel): self._undo.push( AddCommand( - self._ics, row + self._lst, row ) ) @@ -170,7 +148,7 @@ class TableModel(QAbstractTableModel): self._undo.push( DelCommand( - self._ics, rows + self._lst, rows ) ) @@ -182,7 +160,7 @@ class TableModel(QAbstractTableModel): self._undo.push( SortCommand( - self._ics, False + self._lst, False ) ) @@ -199,7 +177,7 @@ class TableModel(QAbstractTableModel): self._undo.push( MoveCommand( - self._ics, "up", row + self._lst, "up", row ) ) @@ -207,7 +185,7 @@ class TableModel(QAbstractTableModel): self.layoutChanged.emit() def move_down(self, index, parent=QModelIndex()): - if row > len(self._ics): + if row > len(self._lst): return target = row @@ -216,7 +194,7 @@ class TableModel(QAbstractTableModel): self._undo.push( MoveCommand( - self._ics, "down", row + self._lst, "down", row ) ) @@ -234,7 +212,7 @@ class TableModel(QAbstractTableModel): def generate(self, generator, param): self._undo.push( GenerateCommand( - self._ics, generator, param + self._lst, generator, param ) ) self.layoutChanged.emit() diff --git a/src/View/InitialConditions/Window.py b/src/View/InitialConditions/Window.py index 3f5ee1d8508f45cadef04eab0376badde6a6bcef..90cf8e0889f88ee0b87997b22f8350e041628099 100644 --- a/src/View/InitialConditions/Window.py +++ b/src/View/InitialConditions/Window.py @@ -45,14 +45,14 @@ from View.InitialConditions.UndoCommand import ( DuplicateCommand, ) -from View.InitialConditions.Table import TableModel, ComboBoxDelegate +from View.InitialConditions.Table import InitialConditionTableModel, ComboBoxDelegate -from View.Plot.MplCanvas import MplCanvas -from View.Plot.PamhyrToolbar import PamhyrPlotToolbar +from View.Tools.Plot.PamhyrCanvas import MplCanvas +from View.Tools.Plot.PamhyrToolbar import PamhyrPlotToolbar from View.InitialConditions.PlotDKP import PlotDKP from View.InitialConditions.PlotDischarge import PlotDischarge -from View.InitialConditions.translate import table_headers, retranslate +from View.InitialConditions.translate import ICTranslate from View.InitialConditions.DialogHeight import HeightDialog from View.InitialConditions.DialogDischarge import DischargeDialog @@ -80,43 +80,42 @@ class InitialConditionsWindow(PamhyrWindow): title = name, study = study, config = config, + trad = ICTranslate(), parent = parent ) self._ics = study.river.initial_conditions.get(self._reach) self.setup_table() - self.setup_graph() + self.setup_plot() self.setup_connections() self.ui.setWindowTitle(self._title) def setup_table(self): - retranslate() - table = self.find(QTableView, f"tableView") - self._table = TableModel( - river = self._study.river, - reach = self._reach, - undo = self._undo_stack, - ) - table.setModel(self._table) - self._delegate_kp = ComboBoxDelegate( reach = self._reach, - parent=self + parent = self ) - table.setItemDelegateForColumn( - list(table_headers).index("kp"), - self._delegate_kp + self._table = InitialConditionTableModel( + reach = self._reach, + table_view = table, + table_headers = self._trad.get_dict("table_headers"), + editable_headers = ["kp", "discharge", "elevation", "height"], + delegates = {"kp": self._delegate_kp}, + data = self._study, + undo = self._undo_stack, + trad = self._trad ) + table.setModel(self._table) table.setSelectionBehavior(QAbstractItemView.SelectRows) table.horizontalHeader().setSectionResizeMode(QHeaderView.Stretch) table.setAlternatingRowColors(True) - def setup_graph(self): + def setup_plot(self): self.canvas_1 = MplCanvas(width=5, height=4, dpi=100) self.canvas_1.setObjectName("canvas_1") self.toolbar_1 = PamhyrPlotToolbar( @@ -129,7 +128,9 @@ class InitialConditionsWindow(PamhyrWindow): self.plot_1 = PlotDKP( canvas = self.canvas_1, data = self._ics, + trad = self._trad, toolbar = self.toolbar_1, + parent = self ) self.plot_1.draw() @@ -145,7 +146,9 @@ class InitialConditionsWindow(PamhyrWindow): self.plot_2 = PlotDischarge( canvas = self.canvas_2, data = self._ics, + trad = self._trad, toolbar = self.toolbar_2, + parent = self ) self.plot_2.draw() diff --git a/src/View/InitialConditions/translate.py b/src/View/InitialConditions/translate.py index 54f194e9f014c1ed01e93e365239d039553a6a64..f65306cb4752d969b3bcf8473b1fe1cdc1e0fb32 100644 --- a/src/View/InitialConditions/translate.py +++ b/src/View/InitialConditions/translate.py @@ -18,23 +18,24 @@ from PyQt5.QtCore import QCoreApplication +from View.Tools.PamhyrTranslate import PamhyrTranslate + _translate = QCoreApplication.translate -table_headers = { - # "name": _translate("LateralContribution", "Name"), - "kp": _translate("LateralContribution", "KP (m)"), - # "speed": _translate("LateralContribution", "Speed (m/s)"), - "discharge": _translate("LateralContribution", "Discharge (m³/s)"), - "elevation": _translate("LateralContribution", "Elevation (m)"), - "height": _translate("LateralContribution", "Height (m)"), - # "comment": _translate("LateralContribution", "Comment"), -} +class ICTranslate(PamhyrTranslate): + def __init__(self): + super(ICTranslate, self).__init__() + + self._dict["elevation"] = _translate("InitialCondition", "Elevation (m)") + self._dict["discharge"] = _translate("InitialCondition", "Discharge (m³/s)") + self._dict["kp"] = _translate("InitialCondition", "KP (m)") -def retranslate(): - # table_headers["name"] = _translate("LateralContribution", "Name") - table_headers["kp"] = _translate("LateralContribution", "KP (m)") - # table_headers["speed"] = _translate("LateralContribution", "Speed (m/s)") - table_headers["discharge"] = _translate("LateralContribution", "Discharge (m³/s)") - table_headers["elevation"] = _translate("LateralContribution", "Elevation (m)") - table_headers["height"] = _translate("LateralContribution", "Height (m)") - # table_headers["comment"] = _translate("LateralContribution", "Comment") + self._sub_dict["table_headers"] = { + # "name": _translate("InitialCondition", "Name"), + "kp": _translate("InitialCondition", "KP (m)"), + # "speed": _translate("InitialCondition", "Speed (m/s)"), + "discharge": _translate("InitialCondition", "Discharge (m³/s)"), + "elevation": _translate("InitialCondition", "Elevation (m)"), + "height": _translate("InitialCondition", "Height (m)"), + # "comment": _translate("InitialCondition", "Comment"), + } diff --git a/src/View/MainWindow.py b/src/View/MainWindow.py index 5ee7a3828fd8ccbdcf3d6d26b3122f16f92f3e27..c3ec403cd1016d22ac2c37083513c24db039629c 100644 --- a/src/View/MainWindow.py +++ b/src/View/MainWindow.py @@ -47,7 +47,7 @@ from View.Network.Window import NetworkWindow from View.Geometry.Window import GeometryWindow from View.BoundaryCondition.Window import BoundaryConditionWindow from View.LateralContribution.Window import LateralContributionWindow -# from View.InitialConditions.Window import InitialConditionsWindow +from View.InitialConditions.Window import InitialConditionsWindow # from View.Stricklers.Window import StricklersWindow # from View.Frictions.Window import FrictionsWindow # from View.SedimentLayers.Window import SedimentLayersWindow diff --git a/src/View/Tools/PamhyrTranslate.py b/src/View/Tools/PamhyrTranslate.py index 83c8da644d3ed35da282f961526789bcde610904..67befa2359778ba7eae322a78eb5ca2036aa02d3 100644 --- a/src/View/Tools/PamhyrTranslate.py +++ b/src/View/Tools/PamhyrTranslate.py @@ -28,6 +28,8 @@ class PamhyrTranslate(object): # Module sub dictionnary self._sub_dict = {} + self._dict["pamhyr"] = _translate("Pamhyr", "Pamhyr2") + def __getitem__(self, index): if index not in self._dict: return None