mirror of https://gitlab.com/pamhyr/pamhyr2
load boundary conditions from file
parent
7c4c772f43
commit
b582e133a1
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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"),
|
||||
|
|
|
|||
|
|
@ -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,
|
||||
|
|
|
|||
|
|
@ -70,6 +70,7 @@
|
|||
<attribute name="toolBarBreak">
|
||||
<bool>false</bool>
|
||||
</attribute>
|
||||
<addaction name="action_import"/>
|
||||
<addaction name="action_add"/>
|
||||
<addaction name="action_del"/>
|
||||
<addaction name="action_sort"/>
|
||||
|
|
@ -149,6 +150,18 @@
|
|||
<string>Remove points to make the curve increasing</string>
|
||||
</property>
|
||||
</action>
|
||||
<action name="action_import">
|
||||
<property name="icon">
|
||||
<iconset>
|
||||
<normaloff>ressources/import.png</normaloff>ressources/import.png</iconset>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Import</string>
|
||||
</property>
|
||||
<property name="toolTip">
|
||||
<string>Import from file</string>
|
||||
</property>
|
||||
</action>
|
||||
</widget>
|
||||
<resources/>
|
||||
<connections/>
|
||||
|
|
|
|||
|
|
@ -192,17 +192,17 @@
|
|||
<translation>Éditer les conditions aux limites</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../View/BoundaryCondition/Edit/translate.py" line="39"/>
|
||||
<location filename="../View/BoundaryCondition/Edit/translate.py" line="50"/>
|
||||
<source>X</source>
|
||||
<translation>X</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../View/BoundaryCondition/Edit/translate.py" line="40"/>
|
||||
<location filename="../View/BoundaryCondition/Edit/translate.py" line="51"/>
|
||||
<source>Y</source>
|
||||
<translation>Y</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../View/BoundaryCondition/Edit/translate.py" line="45"/>
|
||||
<location filename="../View/BoundaryCondition/Edit/translate.py" line="56"/>
|
||||
<source>Solid (kg/s)</source>
|
||||
<translation>Solide (kg/s)</translation>
|
||||
</message>
|
||||
|
|
@ -242,19 +242,19 @@
|
|||
<translation>Options des conditions limites</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../View/BoundaryCondition/Edit/translate.py" line="48"/>
|
||||
<location filename="../View/BoundaryCondition/Edit/translate.py" line="59"/>
|
||||
<source>No geometry</source>
|
||||
<translation>Pas de géométrie</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../View/BoundaryCondition/Edit/translate.py" line="51"/>
|
||||
<location filename="../View/BoundaryCondition/Edit/translate.py" line="62"/>
|
||||
<source>No geometry found for this reach.
|
||||
This feature requires a reach with a geometry.</source>
|
||||
<translation>Aucune géométrie n'a été trouvée sur ce bief.
|
||||
Cette fonctionnalité nécessite un bief muni d'une géométrie.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../View/BoundaryCondition/Edit/translate.py" line="56"/>
|
||||
<location filename="../View/BoundaryCondition/Edit/translate.py" line="67"/>
|
||||
<source>Warning</source>
|
||||
<translation>Avertissement</translation>
|
||||
</message>
|
||||
|
|
@ -263,6 +263,31 @@ Cette fonctionnalité nécessite un bief muni d'une géométrie.</translati
|
|||
<source>Pollutant</source>
|
||||
<translation>Polluant</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../View/BoundaryCondition/Edit/translate.py" line="38"/>
|
||||
<source>Open a file</source>
|
||||
<translation>Ouvrir un fichier</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../View/BoundaryCondition/Edit/translate.py" line="40"/>
|
||||
<source>Mage hydrograph file (*.HYD)</source>
|
||||
<translation>Hydrogramme Mage (*.HYD)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../View/BoundaryCondition/Edit/translate.py" line="42"/>
|
||||
<source>Mage limnigraph file (*.LIM)</source>
|
||||
<translation>Limnigramme Mage (*.LIM)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../View/BoundaryCondition/Edit/translate.py" line="44"/>
|
||||
<source>Mage rating curve file (*.AVA)</source>
|
||||
<translation>Courbe de tarage Mage (*.AVA)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../View/BoundaryCondition/Edit/translate.py" line="46"/>
|
||||
<source>All files (*)</source>
|
||||
<translation>Tous les fichiers (*)</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>BoundaryConditions</name>
|
||||
|
|
@ -2622,32 +2647,32 @@ Cette fonctionnalité nécessite un bief muni d'une géométrie.</translati
|
|||
<translation>Exporter les données au format CSV</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../View/ui/EditBoundaryConditions.ui" line="130"/>
|
||||
<location filename="../View/ui/EditBoundaryConditions.ui" line="131"/>
|
||||
<source>Generate uniform</source>
|
||||
<translation>Générer un regime uniforme</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../View/ui/EditBoundaryConditions.ui" line="133"/>
|
||||
<location filename="../View/ui/EditBoundaryConditions.ui" line="134"/>
|
||||
<source>Generate rating curve from Manning law</source>
|
||||
<translation>Générer une courbe de tarage (loi de Maning)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../View/ui/EditBoundaryConditions.ui" line="138"/>
|
||||
<location filename="../View/ui/EditBoundaryConditions.ui" line="139"/>
|
||||
<source>Generate critical</source>
|
||||
<translation>Générer régime critique</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../View/ui/EditBoundaryConditions.ui" line="141"/>
|
||||
<location filename="../View/ui/EditBoundaryConditions.ui" line="142"/>
|
||||
<source>Generate rating curve as Q(z) = Sqrt(g*S(z)^3/L(z))</source>
|
||||
<translation>Générer une courbe de tarage (Q(z) = Sqrt(g*S(z)^3/L(z)))</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../View/ui/EditBoundaryConditions.ui" line="146"/>
|
||||
<location filename="../View/ui/EditBoundaryConditions.ui" line="147"/>
|
||||
<source>Make increasing</source>
|
||||
<translation>Augmenter</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../View/ui/EditBoundaryConditions.ui" line="149"/>
|
||||
<location filename="../View/ui/EditBoundaryConditions.ui" line="150"/>
|
||||
<source>Remove points to make the curve increasing</source>
|
||||
<translation>Supprimer des points pour rendre la courbe croissante</translation>
|
||||
</message>
|
||||
|
|
|
|||
Loading…
Reference in New Issue