mirror of
https://gitlab.com/pamhyr/pamhyr2.git
synced 2026-10-29 19:10:42 +01:00
Rubar parameters: prohibit simultaneous selection of REGIME=1 and CONDAM=0
This commit is contained in:
1 parent
2a699f46ca
commit
ab95f06700
3 files changed
+38
No files matched your search
@@ -143,6 +143,16 @@ class Rubar3(CommandLineSolver):
|
||||
self._study = study
|
||||
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)
|
||||
if self._parameter_flag(study, "trased") == "O":
|
||||
if not self._export_ts(study, repertory, qlog, name=name):
|
||||
|
||||
@@ -38,6 +38,11 @@ class RunSolverTranslate(PamhyrTranslate):
|
||||
"Please choose another transport law from the list."
|
||||
)
|
||||
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(
|
||||
"Solver", "Export failed; task cancelled"
|
||||
)
|
||||
@@ -199,6 +199,12 @@ class RubarForm(QWidget):
|
||||
|
||||
def apply_pending(self):
|
||||
"""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():
|
||||
if (isinstance(editor, QLineEdit) and editor.isModified() and
|
||||
active(self.descriptions[key], self.values())):
|
||||
@@ -220,6 +226,13 @@ class RubarForm(QWidget):
|
||||
value = self._validated(key, value)
|
||||
if value is None:
|
||||
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):
|
||||
self.editors[key].setModified(False)
|
||||
if self.values()[key] != value:
|
||||
@@ -270,6 +283,16 @@ class RubarForm(QWidget):
|
||||
self.errors[key].setVisible(
|
||||
enabled and bool(self.errors[key].text()))
|
||||
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
|
||||
|
||||
def _update_context(self, values):
|
||||
|
||||
Reference in new issue
Block a user