mirror of https://gitlab.com/pamhyr/pamhyr2
work on hydraulic structures
parent
f302e18d71
commit
7db65f127e
|
|
@ -185,3 +185,6 @@ class BasicHS(SQLSubModel):
|
|||
@property
|
||||
def lst(self):
|
||||
return self._data.copy()
|
||||
|
||||
def convert(self, new_type):
|
||||
return new_type(id=self.id, name=self.name, status=self._status)
|
||||
|
|
|
|||
|
|
@ -41,6 +41,23 @@ class NotDefined(BasicHS):
|
|||
]
|
||||
|
||||
|
||||
class Dummy(BasicHS):
|
||||
def __init__(self, id: int = -1, name: str = "",
|
||||
status=None):
|
||||
super(Dummy, self).__init__(
|
||||
id=id, name=name,
|
||||
status=status
|
||||
)
|
||||
|
||||
self._type = "DU"
|
||||
self._data = [
|
||||
BHSValue("foo", float, 0.0),
|
||||
BHSValue("bar", float, 42.0),
|
||||
BHSValue("baz", int, 13),
|
||||
]
|
||||
|
||||
|
||||
BHS_types = {
|
||||
"ND": NotDefined,
|
||||
"DU": Dummy,
|
||||
}
|
||||
|
|
|
|||
|
|
@ -256,7 +256,7 @@ class HydraulicStructure(SQLSubModel):
|
|||
lambda e: e[1],
|
||||
filter(
|
||||
lambda e: e[0] not in indexes,
|
||||
enumerate(self.data)
|
||||
enumerate(self._data)
|
||||
)
|
||||
)
|
||||
)
|
||||
|
|
@ -266,7 +266,7 @@ class HydraulicStructure(SQLSubModel):
|
|||
self._data = list(
|
||||
filter(
|
||||
lambda e: e not in els,
|
||||
self.data
|
||||
self._data
|
||||
)
|
||||
)
|
||||
self._status.modified()
|
||||
|
|
|
|||
|
|
@ -97,8 +97,13 @@ class ComboBoxDelegate(QItemDelegate):
|
|||
|
||||
|
||||
class TableModel(PamhyrTableModel):
|
||||
def _setup_lst(self):
|
||||
self._lst = self._data.basic_structures
|
||||
def __init__(self, trad=None, **kwargs):
|
||||
self._trad = trad
|
||||
self._long_types = {}
|
||||
if self._trad is not None:
|
||||
self._long_types = self._trad.get_dict("long_types")
|
||||
|
||||
super(TableModel, self).__init__(trad=trad, **kwargs)
|
||||
|
||||
def rowCount(self, parent):
|
||||
return len(self._lst)
|
||||
|
|
@ -111,9 +116,9 @@ class TableModel(PamhyrTableModel):
|
|||
column = index.column()
|
||||
|
||||
if self._headers[column] == "name":
|
||||
return self._lst[row].name
|
||||
return self._data.basic_structure(row).name
|
||||
elif self._headers[column] == "type":
|
||||
n = self._lst[row].type
|
||||
return self._long_types[self._data.basic_structure(row).type]
|
||||
|
||||
return QVariant()
|
||||
|
||||
|
|
@ -132,9 +137,11 @@ class TableModel(PamhyrTableModel):
|
|||
)
|
||||
)
|
||||
elif self._headers[column] == "type":
|
||||
key = next(k for k, v in self._long_types.items()
|
||||
if v == value)
|
||||
self._undo.push(
|
||||
SetTypeCommand(
|
||||
self._data, row, type
|
||||
self._data, row, BHS_types[key]
|
||||
)
|
||||
)
|
||||
except Exception as e:
|
||||
|
|
|
|||
|
|
@ -29,6 +29,7 @@ class BasicHydraulicStructuresTranslate(PamhyrTranslate):
|
|||
|
||||
self._sub_dict["long_types"] = {
|
||||
"ND": _translate("BasicHydraulicStructures", "Not defined"),
|
||||
"DU": _translate("BasicHydraulicStructures", "Dummy"),
|
||||
}
|
||||
|
||||
self._sub_dict["table_headers"] = {
|
||||
|
|
|
|||
|
|
@ -41,21 +41,23 @@ class SetNameCommand(QUndoCommand):
|
|||
|
||||
|
||||
class SetTypeCommand(QUndoCommand):
|
||||
def __init__(self, hs, index, reach):
|
||||
def __init__(self, hs, index, new_type):
|
||||
QUndoCommand.__init__(self)
|
||||
|
||||
self._hs = hs
|
||||
self._index = index
|
||||
self._type = _type
|
||||
self._type = new_type
|
||||
self._old = self._hs.basic_structure(self._index)
|
||||
self._new = self._hs.basic_structure(self._index)\
|
||||
.convert(self._type)
|
||||
|
||||
def undo(self):
|
||||
self._hs.basic_structure(self._index).convert(self._old)
|
||||
self._hs.delete_i([self._index])
|
||||
self._hs.insert(self._index, self._old)
|
||||
|
||||
def redo(self):
|
||||
self._hs.basic_structure(self._index).convert(self._new)
|
||||
self._hs.delete_i([self._index])
|
||||
self._hs.insert(self._index, self._new)
|
||||
|
||||
|
||||
class AddCommand(QUndoCommand):
|
||||
|
|
@ -94,7 +96,7 @@ class DelCommand(QUndoCommand):
|
|||
self._hs.insert(row, el)
|
||||
|
||||
def redo(self):
|
||||
self._hs.delete_i(self._rows)
|
||||
self._hs.delete_i([self._rows])
|
||||
|
||||
|
||||
class PasteCommand(QUndoCommand):
|
||||
|
|
@ -108,9 +110,7 @@ class PasteCommand(QUndoCommand):
|
|||
self._bhs.reverse()
|
||||
|
||||
def undo(self):
|
||||
self._hs.delete_i(
|
||||
self._tab,
|
||||
range(self._row, self._row + len(self._bhs))
|
||||
self._hs.delete_i(range(self._row, self._row + len(self._bhs))
|
||||
)
|
||||
|
||||
def redo(self):
|
||||
|
|
|
|||
|
|
@ -122,11 +122,22 @@ class BasicHydraulicStructuresWindow(PamhyrWindow):
|
|||
self.plot_layout.addWidget(self.toolbar)
|
||||
self.plot_layout.addWidget(self.canvas)
|
||||
|
||||
reach = self._hs.input_reach
|
||||
profile_kp = self._hs.input_kp
|
||||
if profile_kp is not None:
|
||||
profiles = reach.reach.get_profiles_from_kp(float(profile_kp))
|
||||
else:
|
||||
profiles = None
|
||||
if profiles is not None:
|
||||
profile = profiles[0]
|
||||
else:
|
||||
profile = None
|
||||
|
||||
self.plot_ac = PlotAC(
|
||||
canvas=self.canvas,
|
||||
river=self._study.river,
|
||||
reach=None,
|
||||
profile=None,
|
||||
reach=self._hs.input_reach,
|
||||
profile=profile,
|
||||
toolbar=self.toolbar
|
||||
)
|
||||
self.plot_ac.draw()
|
||||
|
|
|
|||
Loading…
Reference in New Issue