Compare commits

...

3 Commits

25 changed files with 84 additions and 46 deletions

View File

@ -312,19 +312,21 @@ class BoundaryConditionAdisTS(SQLSubModel):
status = data['status']
nodes = data['nodes']
scenario = data["scenario"]
pollutant = data["pollutant"]
pollutant = data.get("pollutant")
loaded = data['loaded_pid']
if scenario is None:
return new
table = execute(
"SELECT pamhyr_id, deleted, pollutant, type, node, scenario " +
sql = (
"SELECT pamhyr_id, deleted, pollutant, type, node, scenario "
"FROM boundary_condition_adists " +
f"WHERE scenario = {scenario.id} " +
f"AND pamhyr_id NOT IN ({', '.join(map(str, loaded))}) " +
f"AND pollutant = {pollutant.id} "
f"WHERE scenario = {scenario.id} "
)
if pollutant is not None:
sql += f"AND pollutant = {pollutant.id} "
table = execute(sql)
if table is not None:
for row in table:
@ -349,7 +351,7 @@ class BoundaryConditionAdisTS(SQLSubModel):
bc.type = bc_type
bc.node = None
if row[3] != -1:
if node != -1:
tmp = next(
filter(
lambda n: n.id == node, nodes
@ -513,7 +515,10 @@ class BoundaryConditionAdisTS(SQLSubModel):
return (new_0, new_1)
def add(self, index: int):
value = (self._default_0, self._default_1)
value = Data(
self._default_0, self._default_1,
status=self._status
)
self._data.insert(index, value)
self._status.modified()
return value
@ -554,9 +559,9 @@ class BoundaryConditionAdisTS(SQLSubModel):
return lst
def _set_i_c_v(self, index, column, value):
v = list(self._data[index])
v = self._data[index]
v[column] = self._types[column](value)
self._data[index] = tuple(v)
self._data[index] = v
self._status.modified()
def set_i_0(self, index: int, value):

View File

@ -38,9 +38,13 @@ class BoundaryConditionsAdisTSList(PamhyrModelList):
if data is None:
data = {}
new._lst = BoundaryConditionAdisTS._db_load(
execute, data
)
previous_pollutant = data.get("pollutant")
data.pop("pollutant", None)
new._lst = BoundaryConditionAdisTS._db_load(execute, data)
if previous_pollutant is not None:
data["pollutant"] = previous_pollutant
return new

View File

@ -54,7 +54,7 @@ class Plot(PamhyrPlot):
self._isometric_axis = False
self._auto_relim_update = True
self._autoscale_update = True
self._autoscale_update = False
def custom_ticks(self):
if self.data.header[0] != "time":

View File

@ -55,7 +55,7 @@ class Plot(PamhyrPlot):
self._isometric_axis = False
self._auto_relim_update = True
self._autoscale_update = True
self._autoscale_update = False
def custom_ticks(self):
if self.data.header[0] != "time":

View File

@ -61,9 +61,7 @@ class AddCommand(QUndoCommand):
def redo(self):
if self._new is None:
self._new = self._data.insert(self._index, (
self._data._types[0](0), self._data._types[1](0.0)
))
self._new = self._data.add(self._index)
else:
self._data.insert(self._index, self._new)

View File

@ -121,9 +121,25 @@ class TableModel(PamhyrTableModel):
super(TableModel, self).__init__(trad=trad, **kwargs)
def _setup_lst(self):
self._lst = self._pollutant_bc_list.boundary_conditions_adists
self._lst = list(
filter(
lambda bc: bc.pollutant == self._pollutant,
self._bc_list.lst
)
)
def rowCount(self, parent):
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._bc_list.index(bc)
def rowCount(self, parent=QModelIndex()):
return len(self._lst)
def data(self, index, role):
@ -159,15 +175,21 @@ class TableModel(PamhyrTableModel):
try:
if self._headers[column] == "type":
global_row = self._global_row(row)
self._undo.push(
SetTypeCommand(
self._bc_list, row, value
self._bc_list, global_row, value
)
)
elif self._headers[column] == "node":
global_row = self._global_row(row)
node = next(
filter(lambda n: n.name == value, self._data.nodes()),
None
)
self._undo.push(
SetNodeCommand(
self._bc_list, row, self._data.node(value)
self._bc_list, global_row, node
)
)
@ -179,33 +201,39 @@ class TableModel(PamhyrTableModel):
return True
def add(self, row, parent=QModelIndex()):
self.beginInsertRows(parent, row, row - 1)
row = len(self._lst)
self.beginInsertRows(parent, row, row)
self._undo.push(
AddCommand(
self._pollutant, self._bc_list, row
self._pollutant, self._bc_list, len(self._bc_list)
)
)
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._bc_list, rows
self._bc_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()

View File

@ -36,7 +36,7 @@ class SetNodeCommand(QUndoCommand):
self._bcs = bcs
self._index = index
self._old = self._bcs.get(self._index).node
self._new = node.id
self._new = node.id if node is not None else None
def undo(self):
self._bcs.get(self._index).node = self._old

View File

@ -159,7 +159,7 @@ class BoundaryConditionAdisTSWindow(PamhyrWindow):
)
def add(self):
self._table.add(len(self._data.boundary_conditions_adists))
self._table.add(self._table.rowCount())
def delete(self):
rows = self.index_selected_rows()
@ -183,7 +183,7 @@ class BoundaryConditionAdisTSWindow(PamhyrWindow):
def edit(self):
rows = self.index_selected_rows()
for row in rows:
data = self._bcs.get(row)
data = self._table.get(row)
if data.node is None:
continue

View File

@ -43,7 +43,7 @@ class PlotRKZ(PlotRKC):
self._isometric_axis = False
self._auto_relim_update = True
self._autoscale_update = True
self._autoscale_update = False
self.parent = parent
def onpick(self, event):

View File

@ -50,7 +50,7 @@ class PlotStricklers(PamhyrPlot):
self._auto_relim = False
self._auto_relim_update = False
self._autoscale_update = True
self._autoscale_update = False
@timer
def draw(self, highlight=None):

View File

@ -38,7 +38,7 @@ class PlotAC(PamhyrPlot):
self._isometric_axis = False
self._auto_relim_update = True
self._autoscale_update = True
self._autoscale_update = False
self.label_x = self._trad["transverse_abscissa"]
self.label_y = self._trad["unit_elevation"]

View File

@ -42,7 +42,7 @@ class PlotAC(PamhyrPlot):
self._isometric_axis = False
self._auto_relim_update = True
self._autoscale_update = True
self._autoscale_update = False
@property
def river(self):

View File

@ -50,7 +50,7 @@ class PlotRKC(PamhyrPlot):
self._isometric_axis = False
self._auto_relim_update = True
self._autoscale_update = True
self._autoscale_update = False
self.parent = parent
self.anotate_lst = []

View File

@ -47,7 +47,7 @@ class PlotDRK(PamhyrPlot):
self._isometric_axis = False
self._auto_relim_update = True
self._autoscale_update = True
self._autoscale_update = False
@timer
def draw(self, highlight=None):

View File

@ -37,7 +37,7 @@ class PlotDischarge(PamhyrPlot):
self._isometric_axis = False
self._auto_relim_update = True
self._autoscale_update = True
self._autoscale_update = False
@timer
def draw(self):

View File

@ -54,7 +54,7 @@ class Plot(PamhyrPlot):
self._isometric_axis = False
self._auto_relim_update = True
self._autoscale_update = True
self._autoscale_update = False
def custom_ticks(self):
if self.data.header[0] != "time":

View File

@ -54,7 +54,7 @@ class Plot(PamhyrPlot):
self._isometric_axis = False
self._auto_relim_update = True
self._autoscale_update = True
self._autoscale_update = False
def custom_ticks(self):
if self.data.header[0] != "time":

View File

@ -925,6 +925,9 @@ class GraphWidget(QGraphicsView):
self.scale(scaleFactor, scaleFactor)
def mousePressEvent(self, event):
if self._only_display or self.graph._status.is_read_only():
return
pos = self.mapToScene(event.pos())
self.clicked = True

View File

@ -68,7 +68,7 @@ class PlotXY(PamhyrPlot):
self._isometric_axis = True
self._auto_relim_update = True
self._autoscale_update = True
self._autoscale_update = False
@timer
def draw(self):

View File

@ -55,7 +55,7 @@ class Plot(PamhyrPlot):
self._isometric_axis = False
self._auto_relim_update = True
self._autoscale_update = True
self._autoscale_update = False
@timer
def draw(self):

View File

@ -56,7 +56,7 @@ class PlotAC(PamhyrPlot):
self._isometric_axis = False
self._auto_relim_update = True
self._autoscale_update = True
self._autoscale_update = False
@property
def results(self):

View File

@ -59,7 +59,7 @@ class PlotRKC(PamhyrPlot):
self._isometric_axis = False
self._auto_relim_update = True
self._autoscale_update = True
self._autoscale_update = False
@property
def results(self):

View File

@ -49,7 +49,7 @@ class Plot(PamhyrPlot):
self._auto_relim = False
self._auto_relim_update = False
self._autoscale_update = True
self._autoscale_update = False
@timer
def draw(self):

View File

@ -53,7 +53,7 @@ class Plot(PamhyrPlot):
self._auto_relim = False
self._auto_relim_update = False
self._autoscale_update = True
self._autoscale_update = False
@timer
def draw(self):

View File

@ -53,7 +53,7 @@ class Plot(PamhyrPlot):
self._auto_relim = False
self._auto_relim_update = False
self._autoscale_update = True
self._autoscale_update = False
@timer
def draw(self):