diff --git a/src/Model/HydraulicStructures/Basic/HydraulicStructures.py b/src/Model/HydraulicStructures/Basic/HydraulicStructures.py index e624d2ef..b98d81de 100644 --- a/src/Model/HydraulicStructures/Basic/HydraulicStructures.py +++ b/src/Model/HydraulicStructures/Basic/HydraulicStructures.py @@ -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) diff --git a/src/Model/HydraulicStructures/Basic/Types.py b/src/Model/HydraulicStructures/Basic/Types.py index 98ded30b..6a91a0f2 100644 --- a/src/Model/HydraulicStructures/Basic/Types.py +++ b/src/Model/HydraulicStructures/Basic/Types.py @@ -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, } diff --git a/src/Model/HydraulicStructures/HydraulicStructures.py b/src/Model/HydraulicStructures/HydraulicStructures.py index 3cb68f97..ede44763 100644 --- a/src/Model/HydraulicStructures/HydraulicStructures.py +++ b/src/Model/HydraulicStructures/HydraulicStructures.py @@ -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() diff --git a/src/View/HydraulicStructures/BasicHydraulicStructures/Table.py b/src/View/HydraulicStructures/BasicHydraulicStructures/Table.py index 983a5ad0..f6d22a77 100644 --- a/src/View/HydraulicStructures/BasicHydraulicStructures/Table.py +++ b/src/View/HydraulicStructures/BasicHydraulicStructures/Table.py @@ -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: diff --git a/src/View/HydraulicStructures/BasicHydraulicStructures/Translate.py b/src/View/HydraulicStructures/BasicHydraulicStructures/Translate.py index b267fc42..89fb754c 100644 --- a/src/View/HydraulicStructures/BasicHydraulicStructures/Translate.py +++ b/src/View/HydraulicStructures/BasicHydraulicStructures/Translate.py @@ -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"] = { diff --git a/src/View/HydraulicStructures/BasicHydraulicStructures/UndoCommand.py b/src/View/HydraulicStructures/BasicHydraulicStructures/UndoCommand.py index 2d7e4067..ec7f0eaf 100644 --- a/src/View/HydraulicStructures/BasicHydraulicStructures/UndoCommand.py +++ b/src/View/HydraulicStructures/BasicHydraulicStructures/UndoCommand.py @@ -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): diff --git a/src/View/HydraulicStructures/BasicHydraulicStructures/Window.py b/src/View/HydraulicStructures/BasicHydraulicStructures/Window.py index a555c2bf..58af27ed 100644 --- a/src/View/HydraulicStructures/BasicHydraulicStructures/Window.py +++ b/src/View/HydraulicStructures/BasicHydraulicStructures/Window.py @@ -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()