Compare commits

...

7 Commits

Author SHA1 Message Date
Dylan Jeannin a8f95e2386 fix bug when add button didnt refresh the tab list in Initial conditions AdisTS and d90 2026-04-27 16:45:36 +02:00
Dylan Jeannin 55b200a48e debug delete functionnality in InitialConditionsAdisTS 2026-04-27 16:32:41 +02:00
Dylan Jeannin 6b8d7c2df2 clean useless data 2026-04-27 15:44:57 +02:00
Dylan Jeannin eb7c4895ca fix delete for pollutants D90 2026-04-27 15:43:32 +02:00
Dylan Jeannin a060dbd461 debug save db d90 2026-04-27 12:00:39 +02:00
Dylan Jeannin 9379f7a27d consistency with called functions in the file 2026-04-27 10:07:36 +02:00
Dylan Jeannin a4026d6386 désactivation temporaire de undo dans la fenêtre résultat qui fait crash Pamhyr 2026-04-22 13:45:15 +02:00
8 changed files with 77 additions and 37 deletions

View File

@ -455,7 +455,7 @@ class BoundaryConditionAdisTS(SQLSubModel):
@node.setter @node.setter
def node(self, node): def node(self, node):
self._node = node self._node = node
self._status.modified() self.modified()
@property @property
def header(self): def header(self):
@ -464,7 +464,7 @@ class BoundaryConditionAdisTS(SQLSubModel):
@header.setter @header.setter
def header(self, header): def header(self, header):
self._header = header self._header = header
self._status.modified() self.modified()
@property @property
def pollutant(self): def pollutant(self):
@ -473,7 +473,7 @@ class BoundaryConditionAdisTS(SQLSubModel):
@pollutant.setter @pollutant.setter
def pollutant(self, pollutant): def pollutant(self, pollutant):
self._pollutant = pollutant self._pollutant = pollutant
self._status.modified() self.modified()
@property @property
def type(self): def type(self):
@ -482,7 +482,7 @@ class BoundaryConditionAdisTS(SQLSubModel):
@type.setter @type.setter
def type(self, type): def type(self, type):
self._type = type self._type = type
self._status.modified() self.modified()
@property @property
def data(self): def data(self):
@ -520,12 +520,12 @@ class BoundaryConditionAdisTS(SQLSubModel):
status=self._status status=self._status
) )
self._data.insert(index, value) self._data.insert(index, value)
self._status.modified() self.modified()
return value return value
def insert(self, index: int, value): def insert(self, index: int, value):
self._data.insert(index, value) self._data.insert(index, value)
self._status.modified() self.modified()
def delete_i(self, indexes): def delete_i(self, indexes):
self._data = list( self._data = list(
@ -537,14 +537,14 @@ class BoundaryConditionAdisTS(SQLSubModel):
) )
) )
) )
self._status.modified() self.modified()
def sort(self, _reverse=False, key=None): def sort(self, _reverse=False, key=None):
if key is None: if key is None:
self._data.sort(reverse=_reverse) self._data.sort(reverse=_reverse)
else: else:
self._data.sort(reverse=_reverse, key=key) self._data.sort(reverse=_reverse, key=key)
self._status.modified() self.modified()
def index(self, bc): def index(self, bc):
self._data.index(bc) self._data.index(bc)
@ -562,7 +562,7 @@ class BoundaryConditionAdisTS(SQLSubModel):
v = self._data[index] v = self._data[index]
v[column] = self._types[column](value) v[column] = self._types[column](value)
self._data[index] = v self._data[index] = v
self._status.modified() self.modified()
def set_i_0(self, index: int, value): def set_i_0(self, index: int, value):
self._set_i_c_v(index, 0, value) self._set_i_c_v(index, 0, value)

View File

@ -167,7 +167,7 @@ class D90AdisTSSpec(SQLSubModel):
owner_scenario=owner_scenario owner_scenario=owner_scenario
) )
if deleted: if deleted:
new_spec.is_deleted() new_spec.set_as_deleted()
new_spec.reach = reach new_spec.reach = reach
new_spec.start_rk = start_rk new_spec.start_rk = start_rk
@ -196,12 +196,12 @@ class D90AdisTSSpec(SQLSubModel):
"d90_default, name, reach, " + "d90_default, name, reach, " +
"start_rk, end_rk, d90, enabled, scenario) " + "start_rk, end_rk, d90, enabled, scenario) " +
"VALUES (" + "VALUES (" +
f"{self.id}, {self._db_format(self.is_deleted())}" + f"{self.id}, {self._db_format(self.is_deleted())}, " +
f"{d90_default}, " + f"{d90_default}, " +
f"'{self._db_format(self._name_section)}', " + f"'{self._db_format(self._name_section)}', " +
f"{self._reach}, " + f"{self._reach}, " +
f"{self._start_rk}, {self._end_rk}, " + f"{self._start_rk}, {self._end_rk}, " +
f"{self._d90}, {self._enabled}" + f"{self._d90}, {self._enabled}, " +
f"{self._status.scenario_id}" + f"{self._status.scenario_id}" +
")" ")"
) )

View File

@ -267,7 +267,7 @@ class InitialConditionsAdisTS(SQLSubModel):
@name.setter @name.setter
def name(self, name): def name(self, name):
self._name = name self._name = name
self._status.modified() self.modified()
@property @property
def pollutant(self): def pollutant(self):
@ -276,7 +276,7 @@ class InitialConditionsAdisTS(SQLSubModel):
@pollutant.setter @pollutant.setter
def pollutant(self, pollutant): def pollutant(self, pollutant):
self._pollutant = pollutant self._pollutant = pollutant
self._status.modified() self.modified()
@property @property
def concentration(self): def concentration(self):
@ -285,7 +285,7 @@ class InitialConditionsAdisTS(SQLSubModel):
@concentration.setter @concentration.setter
def concentration(self, concentration): def concentration(self, concentration):
self._concentration = concentration self._concentration = concentration
self._status.modified() self.modified()
@property @property
def eg(self): def eg(self):
@ -294,7 +294,7 @@ class InitialConditionsAdisTS(SQLSubModel):
@eg.setter @eg.setter
def eg(self, eg): def eg(self, eg):
self._eg = eg self._eg = eg
self._status.modified() self.modified()
@property @property
def em(self): def em(self):
@ -303,7 +303,7 @@ class InitialConditionsAdisTS(SQLSubModel):
@em.setter @em.setter
def em(self, em): def em(self, em):
self._em = em self._em = em
self._status.modified() self.modified()
@property @property
def ed(self): def ed(self):
@ -312,7 +312,7 @@ class InitialConditionsAdisTS(SQLSubModel):
@ed.setter @ed.setter
def ed(self, ed): def ed(self, ed):
self._ed = ed self._ed = ed
self._status.modified() self.modified()
@property @property
def enabled(self): def enabled(self):
@ -321,28 +321,45 @@ class InitialConditionsAdisTS(SQLSubModel):
@enabled.setter @enabled.setter
def enabled(self, enabled): def enabled(self, enabled):
self._enabled = enabled self._enabled = enabled
self._status.modified() self.modified()
def new(self, index): def new(self, index):
n = ICAdisTSSpec(status=self._status) n = ICAdisTSSpec(status=self._status)
self._data.insert(index, n) self._data.insert(index, n)
self._status.modified() self.modified()
return n return n
def delete(self, data): def delete(self, data):
self._data = list( list(
filter( map(
lambda x: x not in data, lambda x: x.set_as_deleted(),
self._data data
) )
) )
self._status.modified() self.modified()
def delete_i(self, indexes): def delete_i(self, indexes):
for ind in indexes: list(
del self._data[ind] map(
self._status.modified() lambda e: e[1].set_as_deleted(),
filter(
lambda e: e[0] in indexes,
enumerate(self._data)
)
)
)
self.modified()
def insert(self, index, data): def insert(self, index, data):
self._data.insert(index, data) if data in self._data:
self._status.modified() self.undelete([data])
else:
self._data.insert(index, data)
self.modified()
def undelete(self, lst):
for x in lst:
x.set_as_not_deleted()
self.modified()

View File

@ -116,7 +116,6 @@ class TableModel(PamhyrTableModel):
self._trad = trad self._trad = trad
self._bc_list = bc_list self._bc_list = bc_list
self._pollutant = pollutant_bc_list.id self._pollutant = pollutant_bc_list.id
self._pollutant_bc_list = pollutant_bc_list
super(TableModel, self).__init__(trad=trad, **kwargs) super(TableModel, self).__init__(trad=trad, **kwargs)

View File

@ -118,7 +118,12 @@ class D90TableModel(PamhyrTableModel):
self._data = data self._data = data
def _setup_lst(self): def _setup_lst(self):
self._lst = self._data._data self._lst = list(
filter(
lambda d90: d90._deleted == False,
self._data._data
)
)
def rowCount(self, parent): def rowCount(self, parent):
return len(self._lst) return len(self._lst)
@ -197,18 +202,25 @@ class D90TableModel(PamhyrTableModel):
) )
) )
self._setup_lst()
self.endInsertRows() self.endInsertRows()
self.layoutChanged.emit() self.layoutChanged.emit()
def delete(self, rows, parent=QModelIndex()): def delete(self, rows, parent=QModelIndex()):
self.beginRemoveRows(parent, rows[0], rows[-1]) self.beginRemoveRows(parent, rows[0], rows[-1])
data_rows = {
id(d90): i for i, d90 in enumerate(self._data._data)
}
self._undo.push( self._undo.push(
DelCommand( DelCommand(
self._data, self._lst, rows self._data,
self._data._data,
[data_rows[id(self._lst[row])] for row in rows]
) )
) )
self._setup_lst()
self.endRemoveRows() self.endRemoveRows()
self.layoutChanged.emit() self.layoutChanged.emit()

View File

@ -117,7 +117,12 @@ class InitialConditionTableModel(PamhyrTableModel):
self._data = data self._data = data
def _setup_lst(self): def _setup_lst(self):
self._lst = self._data._data self._lst = list(
filter(
lambda ica: ica._deleted == False,
self._data._data
)
)
def rowCount(self, parent): def rowCount(self, parent):
return len(self._lst) return len(self._lst)
@ -216,18 +221,25 @@ class InitialConditionTableModel(PamhyrTableModel):
) )
) )
self._setup_lst()
self.endInsertRows() self.endInsertRows()
self.layoutChanged.emit() self.layoutChanged.emit()
def delete(self, rows, parent=QModelIndex()): def delete(self, rows, parent=QModelIndex()):
self.beginRemoveRows(parent, rows[0], rows[-1]) self.beginRemoveRows(parent, rows[0], rows[-1])
data_rows = {
id(ica): i for i, ica in enumerate(self._data._data)
}
self._undo.push( self._undo.push(
DelCommand( DelCommand(
self._data, self._lst, rows self._data,
self._data._data,
[data_rows[id(self._lst[row])] for row in rows]
) )
) )
self._setup_lst()
self.endRemoveRows() self.endRemoveRows()
self.layoutChanged.emit() self.layoutChanged.emit()

View File

@ -181,7 +181,6 @@ class DelCommand(QUndoCommand):
self._data = data self._data = data
self._ics_spec = ics_spec self._ics_spec = ics_spec
self._rows = rows self._rows = rows
# self._data = data
self._ic = [] self._ic = []
for row in rows: for row in rows:

View File

@ -701,7 +701,8 @@ class ResultsWindow(PamhyrWindow):
logger.info("TODO: paste") logger.info("TODO: paste")
def _undo(self): def _undo(self):
self._table.undo() logger.info("TODO: undo")
# self._table.undo()
def _redo(self): def _redo(self):
self._table.redo() self._table.redo()