mirror of
https://gitlab.com/pamhyr/pamhyr2.git
synced 2026-10-30 03:20:41 +01:00
Manning: Add parameter to setup manning coef instead of strickler, and switch the value on the view only, but keeps strickler value in the model for the solvers
This commit is contained in:
1 parent
ce04f5fd1e
commit
fefc6ebc4f
12 files changed
+189
-31
No files matched your search
+24
-15
@@ -42,6 +42,7 @@ from View.Frictions.UndoCommand import (
|
||||
)
|
||||
|
||||
from View.Tools.PamhyrTable import PamhyrTableModel
|
||||
from View.Tools.CoefficientDisplay import display_strickler
|
||||
|
||||
from View.Frictions.translate import *
|
||||
|
||||
@@ -52,27 +53,26 @@ _translate = QCoreApplication.translate
|
||||
|
||||
class ComboBoxDelegate(QItemDelegate):
|
||||
def __init__(self, data=None, study=None,
|
||||
mode="stricklers", trad=None, parent=None):
|
||||
mode="stricklers", trad=None, display_manning=True,
|
||||
parent=None):
|
||||
super(ComboBoxDelegate, self).__init__(parent)
|
||||
|
||||
self._data = data
|
||||
self._study = study
|
||||
self._trad = trad
|
||||
self._mode = mode
|
||||
self._display_manning = display_manning
|
||||
|
||||
def createEditor(self, parent, option, index):
|
||||
self.editor = QComboBox(parent)
|
||||
|
||||
if self._mode == "stricklers":
|
||||
self.editor.addItems(
|
||||
[self._trad["not_defined"]] +
|
||||
list(
|
||||
map(
|
||||
lambda s: str(s),
|
||||
self._study.river.stricklers.stricklers
|
||||
)
|
||||
self.editor.addItem(self._trad["not_defined"], None)
|
||||
for strickler in self._study.river.stricklers.stricklers:
|
||||
self.editor.addItem(
|
||||
display_strickler(strickler, self._display_manning),
|
||||
strickler
|
||||
)
|
||||
)
|
||||
elif self._mode == "rk":
|
||||
self.editor.addItems(
|
||||
list(map(str, self._data.reach.get_rk()))
|
||||
@@ -86,8 +86,9 @@ class ComboBoxDelegate(QItemDelegate):
|
||||
self.editor.currentTextChanged.connect(self.currentItemChanged)
|
||||
|
||||
def setModelData(self, editor, model, index):
|
||||
text = str(editor.currentText())
|
||||
model.setData(index, text)
|
||||
value = editor.currentData() if self._mode == "stricklers" else \
|
||||
str(editor.currentText())
|
||||
model.setData(index, value)
|
||||
editor.close()
|
||||
editor.deleteLater()
|
||||
|
||||
@@ -104,6 +105,10 @@ class ComboBoxDelegate(QItemDelegate):
|
||||
|
||||
|
||||
class FrictionTableModel(PamhyrTableModel):
|
||||
def __init__(self, *args, display_manning=False, **kwargs):
|
||||
self.display_manning = display_manning
|
||||
super(FrictionTableModel, self).__init__(*args, **kwargs)
|
||||
|
||||
def _setup_lst(self):
|
||||
self._lst = self._data.frictions
|
||||
self._study = self._opt_data
|
||||
@@ -125,12 +130,12 @@ class FrictionTableModel(PamhyrTableModel):
|
||||
value = self._lst.get(row).begin_strickler
|
||||
if value is None:
|
||||
return self._trad["not_defined"]
|
||||
return str(value)
|
||||
return display_strickler(value, self.display_manning)
|
||||
elif self._headers[column] == "end_strickler":
|
||||
value = self._lst.get(row).end_strickler
|
||||
if value is None:
|
||||
return self._trad["not_defined"]
|
||||
return str(value)
|
||||
return display_strickler(value, self.display_manning)
|
||||
|
||||
return QVariant()
|
||||
|
||||
@@ -164,15 +169,19 @@ class FrictionTableModel(PamhyrTableModel):
|
||||
)
|
||||
)
|
||||
elif self._headers[column] == "begin_strickler":
|
||||
strickler = value if hasattr(value, "minor") else \
|
||||
self._study.river.strickler(value)
|
||||
self._undo.push(
|
||||
SetBeginStricklerCommand(
|
||||
self._lst, row, self._study.river.strickler(value)
|
||||
self._lst, row, strickler
|
||||
)
|
||||
)
|
||||
elif self._headers[column] == "end_strickler":
|
||||
strickler = value if hasattr(value, "minor") else \
|
||||
self._study.river.strickler(value)
|
||||
self._undo.push(
|
||||
SetEndStricklerCommand(
|
||||
self._lst, row, self._study.river.strickler(value)
|
||||
self._lst, row, strickler
|
||||
)
|
||||
)
|
||||
except Exception as e:
|
||||
|
||||
Reference in new issue
Block a user