diff --git a/src/View/BoundaryCondition/Edit/Table.py b/src/View/BoundaryCondition/Edit/Table.py index a7481666..ad4ba66d 100644 --- a/src/View/BoundaryCondition/Edit/Table.py +++ b/src/View/BoundaryCondition/Edit/Table.py @@ -211,3 +211,23 @@ class TableModel(PamhyrTableModel): ) self.layoutAboutToBeChanged.emit() self.update() + + def read_from_file(self, file_name, bctype): + + logger.debug(f"Import initial conditions from {file_name}") + data0 = [] + data1 = [] + if bctype == "ZD": + mult = 1 + else: + mult = 60 + with open(file_name, encoding="utf-8") as ini_file: + for line in ini_file: + if not (line.startswith("#") or + line.startswith("*") or + line.startswith("$")): + line = line.split() + data0.append(float(line[0]) * mult) + data1.append(line[1]) + + self.replace_data(data0, data1) diff --git a/src/View/BoundaryCondition/Edit/Window.py b/src/View/BoundaryCondition/Edit/Window.py index 88dbae69..64dccbf3 100644 --- a/src/View/BoundaryCondition/Edit/Window.py +++ b/src/View/BoundaryCondition/Edit/Window.py @@ -30,10 +30,10 @@ from PyQt5.QtGui import ( QKeySequence, ) -from PyQt5 import QtCore +from PyQt5 import QtCore, QtWidgets from PyQt5.QtCore import ( Qt, QVariant, QAbstractTableModel, QCoreApplication, - pyqtSlot, pyqtSignal, + pyqtSlot, pyqtSignal, QSettings, ) from PyQt5.QtWidgets import ( @@ -198,6 +198,8 @@ class EditBoundaryConditionWindow(PamhyrWindow): self.find(QAction, "action_add").triggered.connect(self.add) self.find(QAction, "action_del").triggered.connect(self.delete) self.find(QAction, "action_sort").triggered.connect(self.sort) + self.find(QAction, "action_import").triggered\ + .connect(self.import_from_file) self.find(QAction, "action_generate_uniform").triggered.connect( self.generate_uniform ) @@ -293,6 +295,31 @@ class EditBoundaryConditionWindow(PamhyrWindow): self._table.sort(False) self.plot.update() + def import_from_file(self): + options = QFileDialog.Options() + settings = QSettings(QSettings.IniFormat, + QSettings.UserScope, 'MyOrg', ) + options |= QFileDialog.DontUseNativeDialog + + if self._data.bctype == "TD": + file_types = [self._trad["file_hyd"]] + if self._data.bctype == "TZ": + file_types = [self._trad["file_lim"]] + if self._data.bctype == "ZD": + file_types = [self._trad["file_ava"]] + file_types.append(self._trad["file_all"]) + + file_name, _ = QtWidgets.QFileDialog.getOpenFileName( + self, + self._trad["open_file"], + "", + ";; ".join(file_types), + options=options + ) + + if file_name != "": + self._table.read_from_file(file_name, self._data.bctype) + def move_up(self): row = self.index_selected_row() self._table.move_up(row) diff --git a/src/View/BoundaryCondition/Edit/translate.py b/src/View/BoundaryCondition/Edit/translate.py index 76b8ff3e..efc180d1 100644 --- a/src/View/BoundaryCondition/Edit/translate.py +++ b/src/View/BoundaryCondition/Edit/translate.py @@ -35,6 +35,17 @@ class BCETranslate(BCTranslate): self._dict["Boundary Condition Options"] = _translate( "BoundaryCondition", "Boundary Condition Options") + self._dict["open_file"] = _translate( + "BoundaryCondition", "Open a file") + self._dict["file_hyd"] = _translate( + "BoundaryCondition", "Mage hydrograph file (*.HYD)") + self._dict["file_lim"] = _translate( + "BoundaryCondition", "Mage limnigraph file (*.LIM)") + self._dict["file_lim"] = _translate( + "BoundaryCondition", "Mage rating curve file (*.AVA)") + self._dict["file_all"] = _translate( + "BoundaryCondition", "All files (*)") + self._sub_dict["table_headers"] = { "x": _translate("BoundaryCondition", "X"), "y": _translate("BoundaryCondition", "Y"), diff --git a/src/View/InitialConditions/Table.py b/src/View/InitialConditions/Table.py index 13e02ab4..e61f0d9d 100644 --- a/src/View/InitialConditions/Table.py +++ b/src/View/InitialConditions/Table.py @@ -297,8 +297,6 @@ class InitialConditionTableModel(PamhyrTableModel): if int(line[0]) == reach_id: data.append([line[4], line[2], line[3]]) - print(data) - self._undo.push( ReplaceDataCommand( self._lst, diff --git a/src/View/ui/EditBoundaryConditions.ui b/src/View/ui/EditBoundaryConditions.ui index 056c02a8..9d4f9293 100644 --- a/src/View/ui/EditBoundaryConditions.ui +++ b/src/View/ui/EditBoundaryConditions.ui @@ -70,6 +70,7 @@ false + @@ -149,6 +150,18 @@ Remove points to make the curve increasing + + + + ressources/import.pngressources/import.png + + + Import + + + Import from file + + diff --git a/src/lang/fr.ts b/src/lang/fr.ts index 592dbdd7..b25cab15 100644 --- a/src/lang/fr.ts +++ b/src/lang/fr.ts @@ -192,17 +192,17 @@ Éditer les conditions aux limites - + X X - + Y Y - + Solid (kg/s) Solide (kg/s) @@ -242,19 +242,19 @@ Options des conditions limites - + No geometry Pas de géométrie - + No geometry found for this reach. This feature requires a reach with a geometry. Aucune géométrie n'a été trouvée sur ce bief. Cette fonctionnalité nécessite un bief muni d'une géométrie. - + Warning Avertissement @@ -263,6 +263,31 @@ Cette fonctionnalité nécessite un bief muni d'une géométrie.Pollutant Polluant + + + Open a file + Ouvrir un fichier + + + + Mage hydrograph file (*.HYD) + Hydrogramme Mage (*.HYD) + + + + Mage limnigraph file (*.LIM) + Limnigramme Mage (*.LIM) + + + + Mage rating curve file (*.AVA) + Courbe de tarage Mage (*.AVA) + + + + All files (*) + Tous les fichiers (*) + BoundaryConditions @@ -2622,32 +2647,32 @@ Cette fonctionnalité nécessite un bief muni d'une géométrie.Exporter les données au format CSV - + Generate uniform Générer un regime uniforme - + Generate rating curve from Manning law Générer une courbe de tarage (loi de Maning) - + Generate critical Générer régime critique - + Generate rating curve as Q(z) = Sqrt(g*S(z)^3/L(z)) Générer une courbe de tarage (Q(z) = Sqrt(g*S(z)^3/L(z))) - + Make increasing Augmenter - + Remove points to make the curve increasing Supprimer des points pour rendre la courbe croissante