mirror of
https://gitlab.com/pamhyr/pamhyr2.git
synced 2026-10-30 03:20:41 +01:00
load initial state from .INI
This commit is contained in:
1 parent
5fc4e3903a
commit
7c4c772f43
4 files changed
+187
-99
No files matched your search
@@ -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()
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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"],
|
||||
|
||||
Reference in new issue
Block a user