diff --git a/src/View/InitialConditions/Table.py b/src/View/InitialConditions/Table.py index a008979d..13e02ab4 100644 --- a/src/View/InitialConditions/Table.py +++ b/src/View/InitialConditions/Table.py @@ -244,7 +244,7 @@ class InitialConditionTableModel(PamhyrTableModel): self.layoutAboutToBeChanged.emit() self.layoutChanged.emit() - def import_from_results(self, index, results): + def import_from_results(self, results): if results is None: logger.error("No results data") return @@ -281,6 +281,36 @@ class InitialConditionTableModel(PamhyrTableModel): self.layoutAboutToBeChanged.emit() self.layoutChanged.emit() + def read_from_ini(self, file_name): + + reach_id = self._data.river.enable_edges().index(self._reach) + 1 + print(f"reach : {reach_id}") + + logger.debug(f"Import initial conditions from {file_name}") + data = [] + 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() + if int(line[0]) == reach_id: + data.append([line[4], line[2], line[3]]) + + print(data) + + self._undo.push( + ReplaceDataCommand( + self._lst, + list( + map( + lambda d: self._lst.new_from_data(*d), + data + ) + ) + ) + ) + def undo(self): self._undo.undo() self.layoutChanged.emit() diff --git a/src/View/InitialConditions/Window.py b/src/View/InitialConditions/Window.py index e671a547..1946706f 100644 --- a/src/View/InitialConditions/Window.py +++ b/src/View/InitialConditions/Window.py @@ -265,20 +265,29 @@ class InitialConditionsWindow(PamhyrWindow): settings = QSettings(QSettings.IniFormat, QSettings.UserScope, 'MyOrg', ) options |= QFileDialog.DontUseNativeDialog - filename, _ = QtWidgets.QFileDialog.getOpenFileName( + + file_types = [ + self._trad["file_bin"], + self._trad["file_ini"], + self._trad["file_all"], + ] + file_name, _ = QtWidgets.QFileDialog.getOpenFileName( self, self._trad["open_file"], "", - ";; ".join(["Mage (*.BIN)"]), + ";; ".join(file_types), options=options ) - if filename != "": - size = os.stat(filename).st_size - # self._table.import_geometry(0, filename) - self._import_from_file(filename) + if file_name != "": + size = os.stat(file_name).st_size + # self._table.import_geometry(0, file_name) + if file_name[-4:] == ".BIN": + self._import_from_bin_file(file_name) + elif file_name[-4:].upper() == ".INI": + self._import_from_ini_file(file_name) - def _import_from_file(self, file_name): + def _import_from_bin_file(self, file_name): solver = Mage8("dummy") name = os.path.basename(file_name)\ .replace(".BIN", "") @@ -305,10 +314,11 @@ class InitialConditionsWindow(PamhyrWindow): def _import_from_results(self, results): logger.debug(f"import from results: {results}") - row = self.index_selected_row() - self._table.import_from_results(row, results) + def _import_from_ini_file(self, file_name): + self._table.read_from_ini(file_name) + def move_up(self): row = self.index_selected_row() self._table.move_up(row) diff --git a/src/View/InitialConditions/translate.py b/src/View/InitialConditions/translate.py index 0b782f21..8b29f98b 100644 --- a/src/View/InitialConditions/translate.py +++ b/src/View/InitialConditions/translate.py @@ -34,6 +34,15 @@ class ICTranslate(MainTranslate): self._dict["discharge"] = self._dict["unit_discharge"] self._dict["rk"] = self._dict["unit_rk"] + self._dict["open_file"] = _translate( + "InitialCondition", "Open a file") + self._dict["file_bin"] = _translate( + "InitialCondition", "Mage results file (*.BIN)") + self._dict["file_ini"] = _translate( + "InitialCondition", "Mage initial conditions file (*.INI *.ini)") + self._dict["file_all"] = _translate( + "InitialCondition", "All files (*)") + self._sub_dict["table_headers"] = { # "name": _translate("InitialCondition", "Name"), "rk": self._dict["unit_rk"], diff --git a/src/lang/fr.ts b/src/lang/fr.ts index 91bf0e67..592dbdd7 100644 --- a/src/lang/fr.ts +++ b/src/lang/fr.ts @@ -1,6 +1,5 @@ - - + About @@ -448,27 +447,27 @@ Cette fonctionnalité nécessite un bief muni d'une géométrie.Biefs - + Main channel Lit mineur - + Floodway Lit moyen - + Not defined Non défini - + Not associated Non associé - + Cross-section Section en travers @@ -478,10 +477,15 @@ Cette fonctionnalité nécessite un bief muni d'une géométrie.Titre - + Method Méthode + + + Select reach + Sélectionner un bief + Configure @@ -1267,9 +1271,14 @@ Cette fonctionnalité nécessite un bief muni d'une géométrie. - Copyright © 2022-2025 INRAE + Copyright © 2022-2025 INRAE Copyright © 2022-2025 INRAE + + + Copyright © 2022-2025 INRAE + + Frictions @@ -1485,6 +1494,26 @@ Cette fonctionnalité nécessite un bief muni d'une géométrie.Initial conditions Conditions initiales + + + Open a file + Ouvrir un fichier + + + + Mage results file (*.BIN) + Fichier de résultats Mage (*.BIN) + + + + Mage initial conditions file (*.INI *.ini) + Fichiers de conditions initiales Mage (*.INI *.ini) + + + + All files (*) + Tous les fichiers (*) + InitialConditionAdisTS @@ -1573,17 +1602,17 @@ Cette fonctionnalité nécessite un bief muni d'une géométrie. MainWindow - + Open debug window Ouvrir la fenêtre de débogage - + Open SQLite debuging tool ('sqlitebrowser') Ouvrir l'outil de débogage SQLite ('sqlitebrowser') - + Enable this window Activer cette fenêtre @@ -1803,12 +1832,12 @@ Cette fonctionnalité nécessite un bief muni d'une géométrie.Éditer la géométrie - + Import geometry Importer une géométrie - + Export geometry Exporter la géométrie @@ -2388,52 +2417,52 @@ Cette fonctionnalité nécessite un bief muni d'une géométrie.Importer - + Add a cross-section Ajouter une section en travers - + Delete selected cross-section(s) Supprimer les sections en travers sélectionnées - + Edit selected cross section(s) Éditer les sections en travers sélectionnées - + Sort cross-sections by ascending position Trier les sections en travers par PK croissant - + Sort cross-sections by descending position Trier les sections en travers par PK décroissant - + Move up selected cross-section(s) Déplacer les sections en travers vers le haut - + Move down selected cross-section(s) Déplacer les sections en travers vers le bas - + Meshing Maillage - + Summary Résumé - + Checks Vérifications @@ -2568,17 +2597,17 @@ Cette fonctionnalité nécessite un bief muni d'une géométrie.Importer depuis un fichier - + Update RK Mise à jour des PK - + Recompute RK Recalcule des PK - + Purge cross-sections to keep a given number of points Purger les profiles pour garder un nombre fixer de points @@ -2623,12 +2652,12 @@ Cette fonctionnalité nécessite un bief muni d'une géométrie.Supprimer des points pour rendre la courbe croissante - + Shift Translater - + Shift selected sections coordinates Translater les coordonnées des sections sélectionnées @@ -2653,47 +2682,47 @@ Cette fonctionnalité nécessite un bief muni d'une géométrie.Données - + Please select a reach Veuillez sélectionner un bief - + Last open study Dernière étude ouverte - + Do you want to open again the last open study? Voulez-vous rouvrir la dernière étude ? - + This edition window need a reach selected into the river network to work on it Cette fenêtre d'édition a besoin d'un bief sélectionné dans le réseau pour travailler dessus - + Close without saving study Fermer sans sauvegarder l'étude - + Do you want to save current study before closing it? Souhaitez-vous sauvegarder l'étude en cours avant de la fermer ? - + Warning Avertissement - + X (m) X (m) - + Y (m) Y (m) @@ -2868,12 +2897,12 @@ Cette fonctionnalité nécessite un bief muni d'une géométrie.Export données brutes - + Yes Oui - + No Non @@ -2892,6 +2921,16 @@ Cette fonctionnalité nécessite un bief muni d'une géométrie.Import background image Importer une image de fond + + + Select reach + Sélectionner un bief + + + + Change current reach + Changer le bief courrant + MainWindow_reach @@ -3618,87 +3657,87 @@ Cette fonctionnalité nécessite un bief muni d'une géométrie. Unit - + Width (m) Largeur (m) - + Depth (m) Profondeur (m) - + Diameter (m) Diamètre (m) - + Thickness (m) Épaisseur (m) - + Elevation (m) Cote (m) - + Area (hectare) Aire (hectare) - + Time (sec) Temps (s) - + Time (JJJ:HH:MM:SS) Temps (JJJ:HH:MM:SS) - + Date (sec) Date (s) - + Date (ISO format) Date (format ISO) - + River Kilometer (m) Point Kilométrique (m) - + Max Depth (m) Profondeur max (m) - + Mean Depth (m) Profondeur moyenne (m) - + Velocity (m/s) Vitesse (m/s) - + Wet Perimeter (m) Périmètre mouillé (m) - + Hydraulic Radius (m) Rayon hydraulique (m) - + Froude number Nombre de Froude @@ -3741,132 +3780,132 @@ moyen droit (m) D90 - + Width Envelop (m) Enveloppe de la argeur (m) - + Max Width (m) Largeur max (m) - + Min Width (m) Largeur min (m) - + Min Depth (m) Profondeur min (m) - + Depth Envelop (m) Enveloppe de la profondeur (m) - + Bed Elevation (m) Cote du fond (m) - + Bed Elevation Envelop (m) Enveloppe de la cote du fond (m) - + Max Bed Elevation (m) Cote du fond max (m) - + Min Bed Elevation (m) Cote du fond min (m) - + Water Elevation (m) Cote de l'eau (m) - + Water Elevation Envelop (m) Enveloppe de la cote de l'eau (m) - + Max Water Elevation (m) Cote de l'eau max (m) - + Min Water Elevation (m) Cote de l'eau min (m) - + Velocity Envelop (m/s) Enveloppe de la vitesse (m/s) - + Max Velocity (m/s) Vitesse max (m/s) - + Min Velocity (m/s) Vitesse min (m/s) - + Area Aire - + Rho Rho - + Porosity Porosité - + CDC_RIV CDC_RIV - + CDC_CAS CDC_CAS - + APD APD - + AC AC - + BC BC - + Concentration (g/l) Concentration (g/l) - + Mass (kg) Masse @@ -3886,32 +3925,32 @@ moyen droit (m) Coeff c - + Discharge Débit - + Discharge Envelop Enveloppe du débit - + Max Discharge Débit max - + Min Discharge Débit min - + Concentration Concentration - + Wet Area Aire mouillée