Rubar parameters: prohibit simultaneous selection of REGIME=1 and CONDAM=0

This commit is contained in:
Dylan Jeannin committed 2026-10-08 10:12:26 +02:00
1 parent 2a699f46ca
commit ab95f06700
3 files changed
+38

No files matched your search

+10
View File
@@ -143,6 +143,16 @@ class Rubar3(CommandLineSolver):
self._study = study self._study = study
name = study.name.replace(" ", "_") name = study.name.replace(" ", "_")
values = self._parameter_values(study)
if (values.get("rubarbe_regime") == "1" and
values.get("rubarbe_condam") == "0"):
trad = RunSolverTranslate()
message = trad["incompatible_upstream_boundary"]
logger.warning(message)
if qlog is not None:
qlog.put(trad["warning"].format(message=message))
return False
self._export_donnee(study, repertory, qlog, name=name) self._export_donnee(study, repertory, qlog, name=name)
if self._parameter_flag(study, "trased") == "O": if self._parameter_flag(study, "trased") == "O":
if not self._export_ts(study, repertory, qlog, name=name): if not self._export_ts(study, repertory, qlog, name=name):
+5
View File
@@ -38,6 +38,11 @@ class RunSolverTranslate(PamhyrTranslate):
"Please choose another transport law from the list." "Please choose another transport law from the list."
) )
self._dict["warning"] = _translate("Solver", "Warning: {message}") self._dict["warning"] = _translate("Solver", "Warning: {message}")
self._dict["incompatible_upstream_boundary"] = _translate(
"Solver",
"Export cancelled: REGIME=1 is incompatible with CONDAM=0. "
"A reflecting upstream boundary cannot impose the water depth."
)
self._dict["export_failed"] = _translate( self._dict["export_failed"] = _translate(
"Solver", "Export failed; task cancelled" "Solver", "Export failed; task cancelled"
) )
+23
View File
@@ -199,6 +199,12 @@ class RubarForm(QWidget):
def apply_pending(self): def apply_pending(self):
"""Commit focused text before Ctrl+S; leave invalid drafts visible.""" """Commit focused text before Ctrl+S; leave invalid drafts visible."""
values = self.values()
if (values.get('rubarbe_condam') == '0' and
values.get('rubarbe_regime') == '1'):
self.tabs.setCurrentIndex(1)
self.editors['rubarbe_condam'].setFocus()
return False
for key, editor in self.editors.items(): for key, editor in self.editors.items():
if (isinstance(editor, QLineEdit) and editor.isModified() and if (isinstance(editor, QLineEdit) and editor.isModified() and
active(self.descriptions[key], self.values())): active(self.descriptions[key], self.values())):
@@ -220,6 +226,13 @@ class RubarForm(QWidget):
value = self._validated(key, value) value = self._validated(key, value)
if value is None: if value is None:
return False return False
values = self.values()
values[key] = value
if (key in ('rubarbe_condam', 'rubarbe_regime') and
values.get('rubarbe_condam') == '0' and
values.get('rubarbe_regime') == '1'):
self.refresh()
return False
if isinstance(self.editors[key], QLineEdit): if isinstance(self.editors[key], QLineEdit):
self.editors[key].setModified(False) self.editors[key].setModified(False)
if self.values()[key] != value: if self.values()[key] != value:
@@ -270,6 +283,16 @@ class RubarForm(QWidget):
self.errors[key].setVisible( self.errors[key].setVisible(
enabled and bool(self.errors[key].text())) enabled and bool(self.errors[key].text()))
self._update_context(values) self._update_context(values)
for key, forbidden, blocked in (
('rubarbe_regime', '1', values.get('rubarbe_condam') == '0'),
('rubarbe_condam', '0', values.get('rubarbe_regime') == '1'),
):
editor = self.editors.get(key)
if editor is None:
continue
index = editor.findData(forbidden)
if index >= 0:
editor.model().item(index).setEnabled(not blocked)
self._refreshing = False self._refreshing = False
def _update_context(self, values): def _update_context(self, values):