Compare commits

...

4 Commits

Author SHA1 Message Date
Dylan Jeannin 7a91969f41 refacto variable names for D90 2026-04-28 10:27:19 +02:00
Dylan Jeannin e755459004 Merge branch 'scenarios' into dev_dylan 2026-04-27 16:54:52 +02:00
Theophile Terraz 260efc17a9 pep8 + debug 2026-04-23 09:27:29 +02:00
Theophile Terraz 00b89635f3 add a warning window when opening Adis-TS results from file if wrong directory 2026-04-22 11:46:25 +02:00
5 changed files with 55 additions and 28 deletions

View File

@ -46,21 +46,21 @@ _translate = QCoreApplication.translate
class ComboBoxDelegate(QItemDelegate): class ComboBoxDelegate(QItemDelegate):
def __init__(self, data=None, ic_spec_lst=None, def __init__(self, data=None, d90_spec_lst=None,
trad=None, parent=None, mode="reaches"): trad=None, parent=None, mode="reaches"):
super(ComboBoxDelegate, self).__init__(parent) super(ComboBoxDelegate, self).__init__(parent)
self._data = data self._data = data
self._mode = mode self._mode = mode
self._trad = trad self._trad = trad
self._ic_spec_lst = ic_spec_lst self._d90_spec_lst = d90_spec_lst
def createEditor(self, parent, option, index): def createEditor(self, parent, option, index):
self.editor = QComboBox(parent) self.editor = QComboBox(parent)
val = [] val = []
if self._mode == "rk": if self._mode == "rk":
reach_id = self._ic_spec_lst[index.row()].reach reach_id = self._d90_spec_lst[index.row()].reach
reach = next(filter( reach = next(filter(
lambda edge: edge.id == reach_id, self._data.edges() lambda edge: edge.id == reach_id, self._data.edges()

View File

@ -112,11 +112,11 @@ class SetCommandSpec(QUndoCommand):
class AddCommand(QUndoCommand): class AddCommand(QUndoCommand):
def __init__(self, data, ics_spec, index): def __init__(self, data, d90_spec, index):
QUndoCommand.__init__(self) QUndoCommand.__init__(self)
self._data = data self._data = data
self._ics_spec = ics_spec self._d90_spec = d90_spec
self._index = index self._index = index
self._new = None self._new = None
@ -131,21 +131,20 @@ class AddCommand(QUndoCommand):
class DelCommand(QUndoCommand): class DelCommand(QUndoCommand):
def __init__(self, data, ics_spec, rows): def __init__(self, data, d90_spec, rows):
QUndoCommand.__init__(self) QUndoCommand.__init__(self)
self._data = data self._data = data
self._ics_spec = ics_spec self._d90_spec = d90_spec
self._rows = rows self._rows = rows
# self._data = data
self._ic = [] self._d90 = []
for row in rows: for row in rows:
self._ic.append((row, self._ics_spec[row])) self._d90.append((row, self._d90_spec[row]))
self._ic.sort() self._d90.sort()
def undo(self): def undo(self):
for row, el in self._ic: for row, el in self._d90:
self._data.insert(row, el) self._data.insert(row, el)
def redo(self): def redo(self):

View File

@ -138,14 +138,14 @@ class D90AdisTSWindow(PamhyrWindow):
self._delegate_reach = ComboBoxDelegate( self._delegate_reach = ComboBoxDelegate(
trad=self._trad, trad=self._trad,
data=self._study.river, data=self._study.river,
ic_spec_lst=self._data[0]._data, d90_spec_lst=self._data[0]._data,
parent=self, parent=self,
mode="reaches" mode="reaches"
) )
self._delegate_rk = ComboBoxDelegate( self._delegate_rk = ComboBoxDelegate(
trad=self._trad, trad=self._trad,
data=self._study.river, data=self._study.river,
ic_spec_lst=self._data[0]._data, d90_spec_lst=self._data[0]._data,
parent=self, parent=self,
mode="rk" mode="rk"
) )
@ -227,15 +227,15 @@ class D90AdisTSWindow(PamhyrWindow):
table = list( table = list(
map( map(
lambda eic: list( lambda ed90: list(
map( map(
lambda k: eic[1][k], lambda k: ed90[1][k],
["rk", "discharge", "elevation"] ["rk", "discharge", "elevation"]
) )
), ),
filter( filter(
lambda eic: eic[0] in rows, lambda ed90: ed90[0] in rows,
enumerate(self._ics.lst()) enumerate(self._d90.lst())
) )
) )
) )

View File

@ -951,6 +951,13 @@ class ApplicationWindow(QMainWindow, ListedSubWindow, WindowToolKit):
elif res == QMessageBox.Cancel: elif res == QMessageBox.Cancel:
return False return False
def msg_results_warning(self, text="", info=""):
self.message_box(
window_title=self._trad["Warning"],
text=text,
informative_text=info
)
######################### #########################
# SUB WINDOWS MENU LIST # # SUB WINDOWS MENU LIST #
######################### #########################
@ -2033,12 +2040,22 @@ class ApplicationWindow(QMainWindow, ListedSubWindow, WindowToolKit):
bin_list = list(filter(lambda s: "bin" in s, dir_list)) bin_list = list(filter(lambda s: "bin" in s, dir_list))
if len(bin_list) < 1: if len(bin_list) < 1:
# TODO message self.msg_results_warning(
info=self._trad["mb_results_not_found"],
text=self._trad["mb_results_bin_not_found"]
)
return return
path = os.path.normpath(dir_path) path = os.path.normpath(dir_path)
solver_name = path.split(os.sep)[-2] solver_name = path.split(os.sep)[-2]
solver_results = next(filter(lambda x: x.name == solver_name, solver_results = next(filter(lambda x: x.name == solver_name,
self.conf.solvers)) self.conf.solvers), None)
if solver_results is None:
self.msg_results_warning(
info=self._trad["mb_results_not_found"],
text=self._trad["mb_results_folder_not_found"]
)
return
solver_results_adists = solver_results.results( solver_results_adists = solver_results.results(
self._study, self._study,
repertory=dir_path, qlog=None) # self._output) repertory=dir_path, qlog=None) # self._output)
@ -2050,13 +2067,10 @@ class ApplicationWindow(QMainWindow, ListedSubWindow, WindowToolKit):
results=solver_results_adists, results=solver_results_adists,
) )
else: else:
dlg = QDialog(self) self.msg_results_warning(
dlg.setWindowTitle("AdisTS Results") info=self._trad["mb_results_not_found"],
layout = QVBoxLayout() text=self._trad["mb_results_bin_not_found"]
message = QLabel("AdisTS Results not found") )
layout.addWidget(message)
dlg.setLayout(layout)
dlg.exec()
################# #################
# DOCUMENTATION # # DOCUMENTATION #
@ -2100,7 +2114,7 @@ class ApplicationWindow(QMainWindow, ListedSubWindow, WindowToolKit):
def open_doc_user(self): def open_doc_user(self):
self.open_doc( self.open_doc(
"https://gitlab.irstea.fr/theophile.terraz/pamhyr/-/wikis/home" "https://gitlab.com/pamhyr/pamhyr2/-/wikis/home"
) )
def open_doc_dev(self, ext="pdf"): def open_doc_dev(self, ext="pdf"):

View File

@ -283,3 +283,17 @@ class MainTranslate(UnitTranslate):
self._dict["Save"] = _translate("MainWindow", "Save") self._dict["Save"] = _translate("MainWindow", "Save")
self._dict["Close"] = _translate("MainWindow", "Close") self._dict["Close"] = _translate("MainWindow", "Close")
self._dict["Solver"] = _translate("MainWindow", "Solver") self._dict["Solver"] = _translate("MainWindow", "Solver")
self._dict["mb_results_not_found"] = _translate(
"MainWindow", "Results can not be loaded"
)
self._dict["mb_results_folder_not_found"] = _translate(
"MainWindow",
"Results folder does not correspond to a Pamhyr2 solver name"
)
self._dict["mb_results_bin_not_found"] = _translate(
"MainWindow", "Results binary files not found"
)
self._dict["mb_results_total_bin_not_found"] = _translate(
"MainWindow", "total_sediment.bin file not found"
)