mirror of https://gitlab.com/pamhyr/pamhyr2
Strickler: dont display duplicated strickler from application database into study data tab
parent
db62af6f71
commit
48e9c14525
|
|
@ -52,20 +52,54 @@ _translate = QCoreApplication.translate
|
|||
|
||||
class TableModel(PamhyrTableModel):
|
||||
def __init__(self, *args, display_manning=False, unique_names=False,
|
||||
**kwargs):
|
||||
hidden_stricklers=None, **kwargs):
|
||||
self.display_manning = display_manning
|
||||
self.unique_names = unique_names
|
||||
self.hidden_stricklers = hidden_stricklers or []
|
||||
super(TableModel, self).__init__(*args, **kwargs)
|
||||
|
||||
@staticmethod
|
||||
def same_strickler(first, second):
|
||||
return (
|
||||
first.name == second.name
|
||||
and first.comment == second.comment
|
||||
and first.minor == second.minor
|
||||
and first.medium == second.medium
|
||||
)
|
||||
|
||||
@property
|
||||
def visible_stricklers(self):
|
||||
return [
|
||||
strickler
|
||||
for strickler in self._data.stricklers
|
||||
if not any(
|
||||
self.same_strickler(strickler, hidden)
|
||||
for hidden in self.hidden_stricklers
|
||||
)
|
||||
]
|
||||
|
||||
def rowCount(self, parent=QModelIndex()):
|
||||
return len(self.visible_stricklers)
|
||||
|
||||
def get_visible(self, row):
|
||||
return self.visible_stricklers[row]
|
||||
|
||||
def get_data_row(self, row):
|
||||
return self._data.stricklers.index(self.get_visible(row))
|
||||
|
||||
def name_is_already_used(self, row, name):
|
||||
current = self._data.get(row)
|
||||
current = self.get_visible(row)
|
||||
return any(
|
||||
strickler is not current and strickler.name == name
|
||||
for strickler in self._data.stricklers
|
||||
)
|
||||
|
||||
def get_true_data_row(self, row):
|
||||
el = self._data.get(row)
|
||||
visible = self.visible_stricklers
|
||||
if row >= len(visible):
|
||||
return len(self._data._lst)
|
||||
|
||||
el = visible[row]
|
||||
|
||||
return next(
|
||||
map(
|
||||
|
|
@ -83,18 +117,19 @@ class TableModel(PamhyrTableModel):
|
|||
|
||||
row = index.row()
|
||||
column = index.column()
|
||||
strickler = self.get_visible(row)
|
||||
|
||||
if self._headers[column] == "name":
|
||||
return self._data.get(row).name
|
||||
return strickler.name
|
||||
elif self._headers[column] == "comment":
|
||||
return self._data.get(row).comment
|
||||
return strickler.comment
|
||||
elif self._headers[column] == "minor":
|
||||
return display_coefficient(
|
||||
self._data.get(row).minor, self.display_manning
|
||||
strickler.minor, self.display_manning
|
||||
)
|
||||
elif self._headers[column] == "medium":
|
||||
return display_coefficient(
|
||||
self._data.get(row).medium, self.display_manning
|
||||
strickler.medium, self.display_manning
|
||||
)
|
||||
|
||||
return QVariant()
|
||||
|
|
@ -122,6 +157,8 @@ class TableModel(PamhyrTableModel):
|
|||
)
|
||||
return False
|
||||
|
||||
row = self.get_data_row(row)
|
||||
|
||||
try:
|
||||
if self._headers[column] == "name":
|
||||
self._undo.push(
|
||||
|
|
@ -177,7 +214,7 @@ class TableModel(PamhyrTableModel):
|
|||
DelCommand(
|
||||
self._data, list(
|
||||
map(
|
||||
lambda r: self._data.get(r),
|
||||
lambda r: self.get_visible(r),
|
||||
rows
|
||||
)
|
||||
)
|
||||
|
|
|
|||
|
|
@ -95,8 +95,10 @@ class StricklersWindow(PamhyrWindow):
|
|||
table = self.find(QTableView, f"tableView_{t}")
|
||||
if t == "study":
|
||||
data = self._study.river.stricklers
|
||||
hidden_stricklers = self._config.stricklers.stricklers
|
||||
else:
|
||||
data = self._config.stricklers
|
||||
hidden_stricklers = []
|
||||
|
||||
editable_headers = []
|
||||
if t == "study" and self._study.is_editable():
|
||||
|
|
@ -111,6 +113,7 @@ class StricklersWindow(PamhyrWindow):
|
|||
display_manning=getattr(
|
||||
self._config, "display_manning", False
|
||||
),
|
||||
hidden_stricklers=hidden_stricklers,
|
||||
)
|
||||
|
||||
table.setModel(self._table[t])
|
||||
|
|
|
|||
Loading…
Reference in New Issue