diff --git a/src/Model/LateralContributionsAdisTS/LateralContributionAdisTS.py b/src/Model/LateralContributionsAdisTS/LateralContributionAdisTS.py index 859a4305..59572d65 100644 --- a/src/Model/LateralContributionsAdisTS/LateralContributionAdisTS.py +++ b/src/Model/LateralContributionsAdisTS/LateralContributionAdisTS.py @@ -131,7 +131,7 @@ class Data(SQLSubModel): if scenario is None: return new - + lca = data["lca"] table = execute( diff --git a/src/View/BoundaryConditionsAdisTS/Window.py b/src/View/BoundaryConditionsAdisTS/Window.py index 03d73cfd..439e2acf 100644 --- a/src/View/BoundaryConditionsAdisTS/Window.py +++ b/src/View/BoundaryConditionsAdisTS/Window.py @@ -63,9 +63,10 @@ class BoundaryConditionAdisTSWindow(PamhyrWindow): self._data = data self._pollutant_id = pollutant_id trad = BCAdisTSTranslate() - + self._pollutant_name = next( - (x.name for x in study._river._Pollutants.Pollutants_List if x.id == self._pollutant_id), + (x.name for x in study._river._Pollutants.Pollutants_List + if x.id == self._pollutant_id), None ) diff --git a/src/View/InitialConditionsAdisTS/Window.py b/src/View/InitialConditionsAdisTS/Window.py index 34b99175..2f7ddacc 100644 --- a/src/View/InitialConditionsAdisTS/Window.py +++ b/src/View/InitialConditionsAdisTS/Window.py @@ -68,14 +68,16 @@ class InitialConditionsAdisTSWindow(PamhyrWindow): _pamhyr_ui = "InitialConditionsAdisTS" _pamhyr_name = "Initial condition AdisTS" - def __init__(self, data=None, pollutant_id=None, study=None, config=None, parent=None): + def __init__(self, data=None, pollutant_id=None, study=None, + config=None, parent=None): self._data = [] self._data.append(data) self._pollutant_id = pollutant_id trad = IcAdisTSTranslate() self._pollutant_name = next( - (x.name for x in study._river._Pollutants.Pollutants_List if x.id == self._pollutant_id), + (x.name for x in study._river._Pollutants.Pollutants_List + if x.id == self._pollutant_id), None ) name = ( diff --git a/src/View/LateralContributionsAdisTS/Table.py b/src/View/LateralContributionsAdisTS/Table.py index ede41f0b..1bd0b2b0 100644 --- a/src/View/LateralContributionsAdisTS/Table.py +++ b/src/View/LateralContributionsAdisTS/Table.py @@ -116,10 +116,22 @@ class TableModel(PamhyrTableModel): self._pollutant = pollutant super(TableModel, self).__init__(trad=trad, **kwargs) + self._setup_lst() def _setup_lst(self): - self._lst = self._data.lateral_contributions_adists.lst - self._tab = self._opt_data + if self._lcs_list is not None: + self._lcs_pol_list = [ + lcs for lcs in self._lcs_list.lst + if lcs.pollutant == self._pollutant + ] + + self._lst = list( + filter( + lambda x: x._deleted is False, + self._lcs_pol_list + ) + ) + # self._tab = self._opt_data self._long_types = self._trad.get_dict("long_types") def rowCount(self, parent): @@ -190,17 +202,43 @@ class TableModel(PamhyrTableModel): ) ) + self._setup_lst() self.endInsertRows() self.layoutChanged.emit() def delete(self, rows, parent=QModelIndex()): self.beginRemoveRows(parent, rows[0], rows[-1]) + global_rows = list( + map(self._global_row, rows) + ) self._undo.push( DelCommand( - self._lst, rows + self._lcs_list, global_rows ) ) + self._setup_lst() self.endRemoveRows() self.layoutChanged.emit() + + def undo(self): + self._undo.undo() + self._setup_lst() + self.layoutChanged.emit() + + def redo(self): + self._undo.redo() + self._setup_lst() + self.layoutChanged.emit() + + def get(self, row): + if row < 0 or row >= len(self._lst): + return None + return self._lst[row] + + def _global_row(self, row): + bc = self.get(row) + if bc is None: + return None + return self._lcs_list.index(bc) diff --git a/src/View/LateralContributionsAdisTS/UndoCommand.py b/src/View/LateralContributionsAdisTS/UndoCommand.py index 04875d28..371d7408 100644 --- a/src/View/LateralContributionsAdisTS/UndoCommand.py +++ b/src/View/LateralContributionsAdisTS/UndoCommand.py @@ -91,13 +91,13 @@ class AddCommand(QUndoCommand): self._new = None def undo(self): - del self._lcs[self._index] + self._lcs.delete_i(self._index) def redo(self): if self._new is None: self._new = self._lcs.new(self._index, self._pollutant) else: - self._lcs_lst.insert(self._index, self._new) + self._lcs.insert(self._index, self._new) class DelCommand(QUndoCommand): @@ -107,15 +107,14 @@ class DelCommand(QUndoCommand): self._lcs = lcs self._rows = rows - self._bc = [] + self._lc = [] for row in rows: - self._bc.append((row, self._lcs[row])) - self._bc.sort() + self._lc.append((row, self._lcs.get(row))) + self._lc.sort() def undo(self): - for row, el in self._bc: + for row, el in self._lc: self._lcs.insert(row, el) def redo(self): - for row in self._rows: - del self._lcs[row] + self._lcs.delete_i(self._rows) diff --git a/src/View/LateralContributionsAdisTS/Window.py b/src/View/LateralContributionsAdisTS/Window.py index ded6a438..14926501 100644 --- a/src/View/LateralContributionsAdisTS/Window.py +++ b/src/View/LateralContributionsAdisTS/Window.py @@ -57,11 +57,24 @@ class LateralContributionAdisTSWindow(PamhyrWindow): _pamhyr_ui = "LateralContributionsAdisTS" _pamhyr_name = "Lateral contribution AdisTS" - def __init__(self, study=None, pollutant=None, config=None, parent=None): + def __init__(self, data=None, study=None, pollutant_id=None, + config=None, parent=None): + self._pollutant = pollutant_id + self._study = study + self._data = data trad = LCTranslate() - name = trad[self._pamhyr_name] + " - " + study.name - self._pollutant = pollutant + self._pollutant_name = next( + (x.name for x in study._river._Pollutants.Pollutants_List + if x.id == self._pollutant), + None + ) + + name = ( + trad[self._pamhyr_name] + + " - " + study.name + + " - " + self._pollutant_name + ) super(LateralContributionAdisTSWindow, self).__init__( title=name, @@ -110,7 +123,7 @@ class LateralContributionAdisTSWindow(PamhyrWindow): data=self._study.river, undo=self._undo_stack, trad=self._trad, - opt_data="liquid", + # opt_data="liquid", pollutant=self._pollutant, lcs_list=self._lcs, ) diff --git a/src/View/Pollutants/Window.py b/src/View/Pollutants/Window.py index 53ed96e4..75055462 100644 --- a/src/View/Pollutants/Window.py +++ b/src/View/Pollutants/Window.py @@ -258,6 +258,9 @@ class PollutantsWindow(PamhyrWindow): pollutant_id = self._pollutants_lst.get(rows[0]).id + lclist = self._study.river.lateral_contributions_adists.Lat_Cont_List + lcs_adists = [x for x in lclist if x.pollutant == pollutant_id] + if self.sub_window_exists( LateralContributionAdisTSWindow, data=[self._study, pollutant_id, None] @@ -266,8 +269,9 @@ class PollutantsWindow(PamhyrWindow): lateral = LateralContributionAdisTSWindow( study=self._study, - pollutant=pollutant_id, - parent=self + parent=self, + data=lcs_adists, + pollutant_id=pollutant_id, ) lateral.show()