Ovelapping intervals: setting default values when creating a parameter

temperature_test
Dylan Jeannin 2026-08-12 14:49:30 +02:00
parent 50fa4f7bd8
commit 0fdb362313
2 changed files with 17 additions and 4 deletions

View File

@ -248,13 +248,18 @@ class WeatherParametersTableModel(PamhyrTableModel):
)
elif self._headers[column] == "reach":
new_reach = self._river.edge(value)
if self._overlaps_existing_interval(
row, reach=new_reach):
overlaps = self._overlaps_existing_interval(
row, reach=new_reach
)
current = self._lst[row]
clear_interval = overlaps and current.reach is None
if overlaps and not clear_interval:
self._show_overlap_warning()
return False
self._undo.push(
SetEdgeCommand(
self._data, global_row, new_reach
self._data, global_row, new_reach,
clear_interval=clear_interval
)
)
except Exception as e:

View File

@ -120,19 +120,27 @@ class SetEndCommand(QUndoCommand):
class SetEdgeCommand(QUndoCommand):
def __init__(self, wps, index, edge):
def __init__(self, wps, index, edge, clear_interval=False):
QUndoCommand.__init__(self)
self._wps = wps
self._index = index
self._old = self._wps.get(self._index).reach
self._old_begin = self._wps.get(self._index).begin_section
self._old_end = self._wps.get(self._index).end_section
self._new = edge
self._clear_interval = clear_interval
def undo(self):
self._wps.get(self._index).reach = self._old
self._wps.get(self._index).begin_section = self._old_begin
self._wps.get(self._index).end_section = self._old_end
def redo(self):
self._wps.get(self._index).reach = self._new
if self._clear_interval:
self._wps.get(self._index).begin_section = None
self._wps.get(self._index).end_section = None
class AddCommand(QUndoCommand):