diff --git a/src/Model/InitialConditionsAdisTS/InitialConditionsAdisTSSpec.py b/src/Model/InitialConditionsAdisTS/InitialConditionsAdisTSSpec.py index 8cd963d1..2c68ad78 100644 --- a/src/Model/InitialConditionsAdisTS/InitialConditionsAdisTSSpec.py +++ b/src/Model/InitialConditionsAdisTS/InitialConditionsAdisTSSpec.py @@ -31,10 +31,11 @@ class ICAdisTSSpec(SQLSubModel): _sub_classes = [] def __init__(self, id: int = -1, name: str = "", - status=None, owner_scenario=None): - super(ICAdisTSSpec, self).__init__() - - self._status = status + status=None, owner_scenario=-1): + super(ICAdisTSSpec, self).__init__( + id=id, status=status, + owner_scenario=owner_scenario + ) self._name_section = name self._reach = None @@ -190,7 +191,7 @@ class ICAdisTSSpec(SQLSubModel): new_spec.rate = rate new_spec.enabled = enabled - # loaded.add(pid) + loaded.add(id) new.append(new_spec) data["scenario"] = scenario.parent @@ -234,7 +235,7 @@ class ICAdisTSSpec(SQLSubModel): @name.setter def name(self, name): self._name_section = name - self._status.modified() + self.modified() @property def reach(self): @@ -243,7 +244,7 @@ class ICAdisTSSpec(SQLSubModel): @reach.setter def reach(self, reach): self._reach = reach - self._status.modified() + self.modified() @property def start_rk(self): @@ -252,7 +253,7 @@ class ICAdisTSSpec(SQLSubModel): @start_rk.setter def start_rk(self, start_rk): self._start_rk = start_rk - self._status.modified() + self.modified() @property def end_rk(self): @@ -261,7 +262,7 @@ class ICAdisTSSpec(SQLSubModel): @end_rk.setter def end_rk(self, end_rk): self._end_rk = end_rk - self._status.modified() + self.modified() @property def concentration(self): @@ -270,7 +271,7 @@ class ICAdisTSSpec(SQLSubModel): @concentration.setter def concentration(self, concentration): self._concentration = concentration - self._status.modified() + self.modified() @property def eg(self): @@ -279,7 +280,7 @@ class ICAdisTSSpec(SQLSubModel): @eg.setter def eg(self, eg): self._eg = eg - self._status.modified() + self.modified() @property def em(self): @@ -288,7 +289,7 @@ class ICAdisTSSpec(SQLSubModel): @em.setter def em(self, em): self._em = em - self._status.modified() + self.modified() @property def ed(self): @@ -297,7 +298,7 @@ class ICAdisTSSpec(SQLSubModel): @ed.setter def ed(self, ed): self._ed = ed - self._status.modified() + self.modified() @property def rate(self): @@ -306,7 +307,7 @@ class ICAdisTSSpec(SQLSubModel): @rate.setter def rate(self, rate): self._rate = rate - self._status.modified() + self.modified() @property def enabled(self): @@ -315,4 +316,4 @@ class ICAdisTSSpec(SQLSubModel): @enabled.setter def enabled(self, enabled): self._enabled = enabled - self._status.modified() + self.modified() diff --git a/src/Model/InitialConditionsTemperature/InitialConditionsTemperatureSpec.py b/src/Model/InitialConditionsTemperature/InitialConditionsTemperatureSpec.py index 3682b275..cb46ce35 100644 --- a/src/Model/InitialConditionsTemperature/InitialConditionsTemperatureSpec.py +++ b/src/Model/InitialConditionsTemperature/InitialConditionsTemperatureSpec.py @@ -31,10 +31,11 @@ class ICTemperatureSpec(SQLSubModel): _sub_classes = [] def __init__(self, id: int = -1, name: str = "", - status=None, owner_scenario=None): - super(ICTemperatureSpec, self).__init__() - - self._status = status + status=None, owner_scenario=-1): + super(ICTemperatureSpec, self).__init__( + id=id, status=status, + owner_scenario=owner_scenario + ) self._name_section = name self._reach = None @@ -122,7 +123,7 @@ class ICTemperatureSpec(SQLSubModel): new_spec.end_rk = end_rk new_spec.temperature = temperature - # loaded.add(pid) + loaded.add(id) new.append(new_spec) data["scenario"] = scenario.parent @@ -163,7 +164,7 @@ class ICTemperatureSpec(SQLSubModel): @name.setter def name(self, name): self._name_section = name - self._status.modified() + self.modified() @property def reach(self): @@ -172,7 +173,7 @@ class ICTemperatureSpec(SQLSubModel): @reach.setter def reach(self, reach): self._reach = reach - self._status.modified() + self.modified() @property def start_rk(self): @@ -181,7 +182,7 @@ class ICTemperatureSpec(SQLSubModel): @start_rk.setter def start_rk(self, start_rk): self._start_rk = start_rk - self._status.modified() + self.modified() @property def end_rk(self): @@ -190,7 +191,7 @@ class ICTemperatureSpec(SQLSubModel): @end_rk.setter def end_rk(self, end_rk): self._end_rk = end_rk - self._status.modified() + self.modified() @property def temperature(self): @@ -199,4 +200,4 @@ class ICTemperatureSpec(SQLSubModel): @temperature.setter def temperature(self, temperature): self._temperature = temperature - self._status.modified() + self.modified() diff --git a/src/View/InitialConditionsAdisTS/Table.py b/src/View/InitialConditionsAdisTS/Table.py index 70316e20..6594cef9 100644 --- a/src/View/InitialConditionsAdisTS/Table.py +++ b/src/View/InitialConditionsAdisTS/Table.py @@ -198,13 +198,14 @@ class InitialConditionTableModel(PamhyrTableModel): if self._headers[column] != "reach": self._undo.push( SetCommandSpec( - self._lst, row, self._headers[column], value + self._data, self._lst, row, + self._headers[column], value ) ) elif self._headers[column] == "reach": self._undo.push( SetCommandSpec( - self._lst, row, self._headers[column], + self._data, self._lst, row, self._headers[column], self._river.edge(value).id ) ) diff --git a/src/View/InitialConditionsAdisTS/UndoCommand.py b/src/View/InitialConditionsAdisTS/UndoCommand.py index d5defc0a..af17232e 100644 --- a/src/View/InitialConditionsAdisTS/UndoCommand.py +++ b/src/View/InitialConditionsAdisTS/UndoCommand.py @@ -80,31 +80,31 @@ class SetCommand(QUndoCommand): class SetCommandSpec(QUndoCommand): - def __init__(self, data, row, column, new_value): + def __init__(self, parent, data, row, column, new_value): QUndoCommand.__init__(self) - self._data = data - self._row = row + self._parent = parent + self._value = data[row] self._column = column if self._column == "name": - self._old = self._data[self._row].name + self._old = self._value.name elif self._column == "reach": - self._old = self._data[self._row].reach + self._old = self._value.reach elif self._column == "start_rk": - self._old = self._data[self._row].start_rk + self._old = self._value.start_rk elif self._column == "end_rk": - self._old = self._data[self._row].end_rk + self._old = self._value.end_rk elif self._column == "concentration": - self._old = self._data[self._row].concentration + self._old = self._value.concentration elif self._column == "eg": - self._old = self._data[self._row].eg + self._old = self._value.eg elif self._column == "em": - self._old = self._data[self._row].em + self._old = self._value.em elif self._column == "ed": - self._old = self._data[self._row].ed + self._old = self._value.ed elif self._column == "rate": - self._old = self._data[self._row].rate + self._old = self._value.rate _type = float if column == "name": @@ -115,44 +115,12 @@ class SetCommandSpec(QUndoCommand): self._new = _type(new_value) def undo(self): - if self._column == "name": - self._data[self._row].name = self._old - elif self._column == "reach": - self._data[self._row].reach = self._old - elif self._column == "start_rk": - self._data[self._row].start_rk = self._old - elif self._column == "end_rk": - self._data[self._row].end_rk = self._old - elif self._column == "concentration": - self._data[self._row].concentration = self._old - elif self._column == "eg": - self._data[self._row].eg = self._old - elif self._column == "em": - self._data[self._row].em = self._old - elif self._column == "ed": - self._data[self._row].ed = self._old - elif self._column == "rate": - self._data[self._row].rate = self._old + setattr(self._value, self._column, self._old) + self._parent.modified() def redo(self): - if self._column == "name": - self._data[self._row].name = self._new - elif self._column == "reach": - self._data[self._row].reach = self._new - elif self._column == "start_rk": - self._data[self._row].start_rk = self._new - elif self._column == "end_rk": - self._data[self._row].end_rk = self._new - elif self._column == "concentration": - self._data[self._row].concentration = self._new - elif self._column == "eg": - self._data[self._row].eg = self._new - elif self._column == "em": - self._data[self._row].em = self._new - elif self._column == "ed": - self._data[self._row].ed = self._new - elif self._column == "rate": - self._data[self._row].rate = self._new + setattr(self._value, self._column, self._new) + self._parent.modified() class AddCommand(QUndoCommand): diff --git a/src/View/InitialConditionsTemperature/Table.py b/src/View/InitialConditionsTemperature/Table.py index 037d0d27..8fda2b25 100644 --- a/src/View/InitialConditionsTemperature/Table.py +++ b/src/View/InitialConditionsTemperature/Table.py @@ -36,7 +36,7 @@ from PyQt5.QtWidgets import ( from View.Tools.PamhyrTable import PamhyrTableModel from View.InitialConditionsTemperature.UndoCommand import ( - SetCommand, AddCommand, SetCommandSpec, + AddCommand, SetCommandSpec, DelCommand, ) @@ -214,22 +214,15 @@ class InitialConditionTableModel(PamhyrTableModel): column = index.column() try: - if self._headers[column] in ["name", "temperature"]: - self._undo.push( - SetCommand( - self._lst, row, self._headers[column], value - ) - ) - else: - self._undo.push( - SetCommandSpec( - self._lst, row, self._headers[column], - (self._river.edge(value).id - if self._headers[column] == "reach" - else value - ) + self._undo.push( + SetCommandSpec( + self._data, self._lst, row, self._headers[column], + (self._river.edge(value).id + if self._headers[column] == "reach" + else value ) ) + ) except Exception as e: logger.info(e) logger.debug(traceback.format_exc()) diff --git a/src/View/InitialConditionsTemperature/UndoCommand.py b/src/View/InitialConditionsTemperature/UndoCommand.py index 83f93265..92b0f244 100644 --- a/src/View/InitialConditionsTemperature/UndoCommand.py +++ b/src/View/InitialConditionsTemperature/UndoCommand.py @@ -62,21 +62,21 @@ class SetCommand(QUndoCommand): class SetCommandSpec(QUndoCommand): - def __init__(self, data, row, column, new_value): + def __init__(self, parent, data, row, column, new_value): QUndoCommand.__init__(self) - self._data = data - self._row = row + self._parent = parent + self._value = data[row] self._column = column if self._column == "name": - self._old = self._data[self._row].name + self._old = self._value.name elif self._column == "reach": - self._old = self._data[self._row].reach + self._old = self._value.reach elif self._column == "rk": - self._old = self._data[self._row].start_rk + self._old = self._value.start_rk elif self._column == "temperature": - self._old = self._data[self._row].temperature + self._old = self._value.temperature _type = float if column == "name": @@ -88,25 +88,27 @@ class SetCommandSpec(QUndoCommand): def undo(self): if self._column == "name": - self._data[self._row].name = self._old + self._value.name = self._old elif self._column == "reach": - self._data[self._row].reach = self._old + self._value.reach = self._old elif self._column == "rk": - self._data[self._row].start_rk = self._old - self._data[self._row].end_rk = self._old + self._value.start_rk = self._old + self._value.end_rk = self._old elif self._column == "temperature": - self._data[self._row].temperature = self._old + self._value.temperature = self._old + self._parent.modified() def redo(self): if self._column == "name": - self._data[self._row].name = self._new + self._value.name = self._new elif self._column == "reach": - self._data[self._row].reach = self._new + self._value.reach = self._new elif self._column == "rk": - self._data[self._row].start_rk = self._new - self._data[self._row].end_rk = self._new + self._value.start_rk = self._new + self._value.end_rk = self._new elif self._column == "temperature": - self._data[self._row].temperature = self._new + self._value.temperature = self._new + self._parent.modified() class AddCommand(QUndoCommand):