diff --git a/src/View/BoundaryCondition/Edit/Plot.py b/src/View/BoundaryCondition/Edit/Plot.py index b27380a59742ec12bf4fde1c0aaf3ecbc815584d..a7815e609662172368b5e2412b8dae14b749c78a 100644 --- a/src/View/BoundaryCondition/Edit/Plot.py +++ b/src/View/BoundaryCondition/Edit/Plot.py @@ -27,7 +27,7 @@ from PyQt5.QtCore import ( QCoreApplication ) -from View.BoundaryCondition.Edit.translate import * +from View.BoundaryCondition.Edit.translate import BCETranslate _translate = QCoreApplication.translate @@ -42,6 +42,8 @@ class Plot(APlot): toolbar=toolbar ) + self._trad = BCETranslate() + self._table_headers = self._trad.get_dict("table_headers") self._mode = mode def custom_ticks(self): @@ -109,10 +111,10 @@ class Plot(APlot): # Plot label header = self.data.header self.canvas.axes.set_xlabel( - table_headers[header[0]], color='black', fontsize=10 + self._table_headers[header[0]], color='black', fontsize=10 ) self.canvas.axes.set_ylabel( - table_headers[header[1]], color='black', fontsize=10 + self._table_headers[header[1]], color='black', fontsize=10 ) self.canvas.axes.autoscale_view(True, True, True) diff --git a/src/View/BoundaryCondition/Edit/Table.py b/src/View/BoundaryCondition/Edit/Table.py index e89e6d0d87fbb19e97232b1580486a9887c48213..7f86fc8aefeff783aeceef2c11e0b0817624d38a 100644 --- a/src/View/BoundaryCondition/Edit/Table.py +++ b/src/View/BoundaryCondition/Edit/Table.py @@ -46,7 +46,6 @@ from View.BoundaryCondition.Edit.UndoCommand import ( SortCommand, MoveCommand, PasteCommand, DuplicateCommand, ) -from View.BoundaryCondition.Edit.translate import * _translate = QCoreApplication.translate diff --git a/src/View/BoundaryCondition/Edit/Window.py b/src/View/BoundaryCondition/Edit/Window.py index 249a34cb80da10b764191d99aa18b510c22d6238..13d277e6d524504b5e4404850271c12c0be199b9 100644 --- a/src/View/BoundaryCondition/Edit/Window.py +++ b/src/View/BoundaryCondition/Edit/Window.py @@ -44,8 +44,7 @@ from PyQt5.QtWidgets import ( from View.Plot.MplCanvas import MplCanvas from View.Plot.PamhyrToolbar import PamhyrPlotToolbar -from View.BoundaryCondition.translate import long_types -from View.BoundaryCondition.Edit.translate import table_headers, retranslate +from View.BoundaryCondition.Edit.translate import BCETranslate from View.BoundaryCondition.Edit.UndoCommand import SetMetaDataCommand from View.BoundaryCondition.Edit.Table import TableModel from View.BoundaryCondition.Edit.Plot import Plot @@ -101,6 +100,8 @@ class EditBoundaryConditionWindow(PamhyrWindow): def __init__(self, data=None, study=None, config=None, parent=None): self._data = data + trad = BCETranslate() + self._long_types = trad.get_dict("long_types") name = self._pamhyr_name if self._data is not None: @@ -110,13 +111,14 @@ class EditBoundaryConditionWindow(PamhyrWindow): _translate("Edit boundary condition", self._pamhyr_name) + f" - {study.name} " + f" - {self._data.name} ({self._data.id}) " + - f"({long_types[self._data.bctype]} - {node_name})" + f"({self._long_types[self._data.bctype]} - {node_name})" ) super(EditBoundaryConditionWindow, self).__init__( title = name, study = study, config = config, + trad = trad, parent = parent ) @@ -139,8 +141,8 @@ class EditBoundaryConditionWindow(PamhyrWindow): self._d50sigma.set_sigma(self._data.sigma) def setup_table(self): - retranslate() headers = {} + table_headers = self._trad.get_dict("table_headers") for h in self._data.header: headers[h] = table_headers[h] diff --git a/src/View/BoundaryCondition/Edit/translate.py b/src/View/BoundaryCondition/Edit/translate.py index 28b6ec985c2b8b4273cebb40882aa491639187d8..d97ac6dee075c1002737b24a8be39f9feff2fa6f 100644 --- a/src/View/BoundaryCondition/Edit/translate.py +++ b/src/View/BoundaryCondition/Edit/translate.py @@ -18,23 +18,22 @@ from PyQt5.QtCore import QCoreApplication +from View.Tools.PamhyrTranslate import PamhyrTranslate + +from View.BoundaryCondition.translate import BCTranslate + _translate = QCoreApplication.translate -table_headers = { - "x": _translate("BoundaryCondition", "X"), - "y": _translate("BoundaryCondition", "Y"), - "time": _translate("BoundaryCondition", "Time"), - "date": _translate("BoundaryCondition", "Date"), - "discharge": _translate("BoundaryCondition", "Discharge (m³/s)"), - "z": _translate("BoundaryCondition", "Z (m)"), - "solid": _translate("BoundaryCondition", "Solid (kg/s)"), -} +class BCETranslate(BCTranslate): + def __init__(self): + super(BCETranslate, self).__init__() -def retranslate(): - table_headers["x"] = _translate("BoundaryCondition", "X") - table_headers["y"] = _translate("BoundaryCondition", "Y") - table_headers["time"] = _translate("BoundaryCondition", "Time") - table_headers["date"] = _translate("BoundaryCondition", "Date") - table_headers["discharge"] = _translate("BoundaryCondition", "Discharge (m³/s)") - table_headers["z"] = _translate("BoundaryCondition", "Z (m)") - table_headers["solid"] = _translate("BoundaryCondition", "Solid (kg/s)") + self._sub_dict["table_headers"] = { + "x": _translate("BoundaryCondition", "X"), + "y": _translate("BoundaryCondition", "Y"), + "time": _translate("BoundaryCondition", "Time"), + "date": _translate("BoundaryCondition", "Date"), + "discharge": _translate("BoundaryCondition", "Discharge (m³/s)"), + "z": _translate("BoundaryCondition", "Z (m)"), + "solid": _translate("BoundaryCondition", "Solid (kg/s)"), + } diff --git a/src/View/BoundaryCondition/Table.py b/src/View/BoundaryCondition/Table.py index 377d9aab41c6cec5dd78ea8bb2f085ad89c94d32..77141dff82ad74f5236b0f1e6a5a905aabde3beb 100644 --- a/src/View/BoundaryCondition/Table.py +++ b/src/View/BoundaryCondition/Table.py @@ -46,19 +46,24 @@ from View.BoundaryCondition.UndoCommand import ( AddCommand, DelCommand, SortCommand, MoveCommand, PasteCommand, DuplicateCommand, ) -from View.BoundaryCondition.translate import * +from View.BoundaryCondition.translate import BC_types logger = logging.getLogger() _translate = QCoreApplication.translate class ComboBoxDelegate(QItemDelegate): - def __init__(self, data=None, mode="type", tab="", parent=None): + def __init__(self, data=None, mode="type", tab="", trad=None, parent=None): super(ComboBoxDelegate, self).__init__(parent) self._data = data self._mode = mode self._tab = tab + self._trad = trad + + self._long_types = {} + if self._trad is not None: + self._long_types = self._trad.get_dict("long_types") def createEditor(self, parent, option, index): self.editor = QComboBox(parent) @@ -66,7 +71,7 @@ class ComboBoxDelegate(QItemDelegate): if self._mode == "type": lst = list( map( - lambda k: long_types[k], + lambda k: self._long_types[k], filter( lambda k: self._tab in BC_types[k].compatibility(), BC_types.keys() @@ -107,6 +112,13 @@ class ComboBoxDelegate(QItemDelegate): class TableModel(PamhyrTableModel): + def __init__(self, **kwargs): + super(TableModel, self).__init__(**kwargs) + + self._long_types = {} + if self._trad is not None: + self._long_types = self._trad.get_dict("long_types") + def _setup_lst(self): self._lst = self._data.boundary_condition self._tab = self._opt_data @@ -125,7 +137,7 @@ class TableModel(PamhyrTableModel): return self._lst.get(self._tab, row).name elif self._headers[column] == "type": t = self._lst.get(self._tab, row).bctype - return long_types[t] + return self._long_types[t] elif self._headers[column] == "node": n = self._lst.get(self._tab, row).node if n is None: @@ -149,7 +161,7 @@ class TableModel(PamhyrTableModel): ) ) elif self._headers[column] == "type": - key = next(k for k, v in long_types.items() if v == value) + key = next(k for k, v in self._long_types.items() if v == value) self._undo.push( SetTypeCommand( self._lst, self._tab,row, BC_types[key] diff --git a/src/View/BoundaryCondition/Window.py b/src/View/BoundaryCondition/Window.py index 5f08ecf8ef6ab92d01eb90bfee30682a5ab46ce5..99758c5ac9de410f5186f63f703050e600c0e72b 100644 --- a/src/View/BoundaryCondition/Window.py +++ b/src/View/BoundaryCondition/Window.py @@ -55,7 +55,7 @@ from View.BoundaryCondition.Table import ( ) from View.Network.GraphWidget import GraphWidget -from View.BoundaryCondition.translate import table_headers, retranslate +from View.BoundaryCondition.translate import BCTranslate from View.BoundaryCondition.Edit.Window import EditBoundaryConditionWindow _translate = QCoreApplication.translate @@ -73,6 +73,7 @@ class BoundaryConditionWindow(PamhyrWindow): title = name, study = study, config = config, + trad = BCTranslate(), parent=parent ) @@ -85,17 +86,18 @@ class BoundaryConditionWindow(PamhyrWindow): self.ui.setWindowTitle(self._title) def setup_table(self): - retranslate() self._table = {} for t in ["liquid", "solid", "suspenssion"]: self._delegate_type = ComboBoxDelegate( + trad = self._trad, data = self._study.river, mode = "type", tab = t, parent=self ) self._delegate_node = ComboBoxDelegate( + trad = self._trad, data = self._study.river, mode = "node", tab = t, @@ -105,12 +107,13 @@ class BoundaryConditionWindow(PamhyrWindow): table = self.find(QTableView, f"tableView_{t}") self._table[t] = TableModel( table_view = table, - table_headers = table_headers, + table_headers = self._trad.get_dict("table_headers"), editable_headers = ["name", "type", "node"], delegates = { "type": self._delegate_type, "node": self._delegate_node, }, + trad = self._trad, data = self._study.river, undo = self._undo_stack, opt_data = t, diff --git a/src/View/BoundaryCondition/translate.py b/src/View/BoundaryCondition/translate.py index 78aaec075c652436decbdbeea0ebb5a535631713..00077f5fa50dbee4797bae49cb4266507f0264c0 100644 --- a/src/View/BoundaryCondition/translate.py +++ b/src/View/BoundaryCondition/translate.py @@ -18,6 +18,8 @@ from PyQt5.QtCore import QCoreApplication +from View.Tools.PamhyrTranslate import PamhyrTranslate + from Model.BoundaryCondition.BoundaryConditionTypes import ( NotDefined, PonctualContribution, TimeOverZ, TimeOverDischarge, ZOverDischarge, @@ -26,21 +28,6 @@ from Model.BoundaryCondition.BoundaryConditionTypes import ( _translate = QCoreApplication.translate -long_types = { - "ND": _translate("BoundaryCondition", "Not defined"), - "PC": _translate("BoundaryCondition", "Ponctual contribution"), - "TZ": _translate("BoundaryCondition", "TimeZ"), - "TD": _translate("BoundaryCondition", "TimeDischarge"), - "ZD": _translate("BoundaryCondition", "ZDischarge"), - "SL": _translate("BoundaryCondition", "Solid"), -} - -table_headers = { - "name": _translate("BoundaryCondition", "Name"), - "type": _translate("BoundaryCondition", "Type"), - "node": _translate("BoundaryCondition", "Node") -} - BC_types = { "ND": NotDefined, "PC": PonctualContribution, @@ -50,7 +37,21 @@ BC_types = { "SL": Solid, } -def retranslate(): - table_headers["name"] = _translate("BoundaryCondition", "Name") - table_headers["type"] = _translate("BoundaryCondition", "Type") - table_headers["node"] = _translate("BoundaryCondition", "Node") +class BCTranslate(PamhyrTranslate): + def __init__(self): + super(BCTranslate, self).__init__() + + self._sub_dict["long_types"] = { + "ND": _translate("BoundaryCondition", "Not defined"), + "PC": _translate("BoundaryCondition", "Ponctual contribution"), + "TZ": _translate("BoundaryCondition", "TimeZ"), + "TD": _translate("BoundaryCondition", "TimeDischarge"), + "ZD": _translate("BoundaryCondition", "ZDischarge"), + "SL": _translate("BoundaryCondition", "Solid"), + } + + self._sub_dict["table_headers"] = { + "name": _translate("BoundaryCondition", "Name"), + "type": _translate("BoundaryCondition", "Type"), + "node": _translate("BoundaryCondition", "Node") + } diff --git a/src/View/Tools/PamhyrTable.py b/src/View/Tools/PamhyrTable.py index 623ebd3b0a91dd964b17fd319b6defdddc8c24dc..08e36c8430e5e225b5e43ce70ba78035b57b3957 100644 --- a/src/View/Tools/PamhyrTable.py +++ b/src/View/Tools/PamhyrTable.py @@ -75,13 +75,14 @@ class PamhyrTableModel(QAbstractTableModel): ) def __init__(self, - table_view=None, - table_headers={}, - editable_headers=[], + table_view = None, + table_headers = {}, + editable_headers = [], delegates = {}, - data=None, - undo=None, - opt_data=None): + trad = None, + data = None, + undo = None, + opt_data = None): super(PamhyrTableModel, self).__init__() self._table_view = table_view @@ -90,6 +91,7 @@ class PamhyrTableModel(QAbstractTableModel): self._headers = list(table_headers.keys()) self._editable_headers = editable_headers self._delegates = delegates + self._trad = trad self._data = data self._opt_data = opt_data