diff --git a/src/Model/Geometry/Reach.py b/src/Model/Geometry/Reach.py index 1f429be72f204978a78f09b2be5496adbdc3aaf8..b18f2ade5860d865bcc7ddcd57ae6c8c0893ba9f 100644 --- a/src/Model/Geometry/Reach.py +++ b/src/Model/Geometry/Reach.py @@ -55,8 +55,8 @@ class Reach(SQLSubModel): def _sql_save(self, execute, data = None): # Delete old data - execute(f"DELETE FROM geometry_profileXYZ") - execute(f"DELETE FROM geometry_pointXYZ") + execute(f"DELETE FROM geometry_profileXYZ WHERE reach = {self.id}") + # execute(f"DELETE FROM geometry_pointXYZ") if data is None: data = {} diff --git a/src/Solver/Mage.py b/src/Solver/Mage.py index 78a89931a93e879441e0c1c885600ddfb8baacfc..eedd12154e45f20d7b4bb2383d7e4c1ca36299a6 100644 --- a/src/Solver/Mage.py +++ b/src/Solver/Mage.py @@ -119,18 +119,11 @@ class Mage(AbstractSolver): return files @timer - def _export_BC(self, bound, repertory, qlog): + def _export_BC(self, t, bounds, repertory, qlog): files = [] - t = "XX" - if bound.bctype == "ZD": - t = "AVA" - elif bound.bctype == "TD": - t = "HYD" - elif bound.bctype == "TZ": - t = "LIM" - else: - return None + if len(bounds) == 0: + return files if qlog is not None: qlog.put(f"Export {t} file") @@ -140,14 +133,15 @@ class Mage(AbstractSolver): f.write("* This file is generate by PAMHYR, please don't modify\n") - name = f"{bound.node.id:3}".replace(" ", "x") - f.write(f"* {bound.node.name} ({name}) {bound.bctype}\n") - f.write(f"${name}\n") - header = bound.header - f.write(f"*{header[0]:>9}|{header[1]:>10}\n") + for bound in bounds: + name = f"{bound.node.id:3}".replace(" ", "x") + f.write(f"* {bound.node.name} ({name}) {bound.bctype}\n") + f.write(f"${name}\n") + header = bound.header + f.write(f"*{header[0]:>9}|{header[1]:>10}\n") - for d in bound.data: - f.write(f"{d[0]:10.3f}{d[1]:10.3f}\n") + for d in bound.data: + f.write(f"{d[0]:10.3f}{d[1]:10.3f}\n") return files @@ -156,9 +150,22 @@ class Mage(AbstractSolver): files = [] lst = study.river.boundary_condition + AVA = [] + HYD = [] + LIM = [] + for tab in ["liquid", "solid", "suspenssion"]: for bound in lst.get_tab(tab): - files = files + self._export_BC(bound, repertory, qlog) + if bound.bctype == "ZD": + AVA.append(bound) + elif bound.bctype == "TD" or bound.bctype == "PC": + HYD.append(bound) + elif bound.bctype == "TZ": + LIM.append(bound) + + files = files + self._export_BC("AVA", AVA, repertory, qlog) + files = files + self._export_BC("HYD", HYD, repertory, qlog) + files = files + self._export_BC("LIM", LIM, repertory, qlog) return files @@ -247,12 +254,7 @@ class Mage(AbstractSolver): # Write header with open(os.path.join(repertory, "0.INI"), "w+") as f: - files.append("0.INI") - f.write("* This file is generate by PAMHYR, please don't modify\n") - # TODO put real date... - f.write(f"$ date en minutes : 0.00\n") - f.write(f"* IB IS discharge elevation kp\n") - + has_ini = False id = 1 reachs = study.river.edges() reachs = list( @@ -262,10 +264,19 @@ class Mage(AbstractSolver): ) ) + f.write("* This file is generate by PAMHYR, please don't modify\n") + # TODO put real date... + f.write(f"$ date en minutes : 0.00\n") + f.write(f"* IB IS discharge elevation kp\n") + id = 1 for reach in reachs: cond = study.river.initial_conditions.get(reach) data = cond.data + if len(data) == 0: + continue + + has_ini = True id_sec = 1 for d in data: @@ -280,6 +291,8 @@ class Mage(AbstractSolver): id += 1 + if has_ini: + files.append("0.INI") return files @timer diff --git a/src/View/Geometry/Window.py b/src/View/Geometry/Window.py index 37f83aff3aeaaad6781e7603e805e510cecf54e9..8efea1c3ca40ba021693e81fd98f0bbd7fc9b81e 100644 --- a/src/View/Geometry/Window.py +++ b/src/View/Geometry/Window.py @@ -111,24 +111,21 @@ class GeometryWindow(QMainWindow, WindowToolKit): def open_file_dialog(self): options = QFileDialog.Options() - DEFAULT_DIRECTORY = os.getenv("HOME") settings = QSettings(QSettings.IniFormat, QSettings.UserScope, 'MyOrg', ) - current_dir = settings.value('current_directory', DEFAULT_DIRECTORY, type=str) options |= QFileDialog.DontUseNativeDialog filename, _ = QtWidgets.QFileDialog.getOpenFileName( self, _translate("MainWindow_reach", "Ouvrir un fichier"), - current_dir, + "", _translate("MainWindow_reach", "Fichiers .ST (*.ST)") + ";; " + - _translate("MainWindow_reach", "Fichiers textes (*.txt)") + + _translate("MainWindow_reach", "Fichiers .M (*.M)") + ";; " + _translate("MainWindow_reach", "Tous les fichiers (*)"), options=options ) - current_dir = os.path.split(filename)[0] or DEFAULT_DIRECTORY if filename != "": size = os.stat(filename).st_size self._reach.import_geometry(filename)