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": elif self._headers[column] == "reach":
new_reach = self._river.edge(value) new_reach = self._river.edge(value)
if self._overlaps_existing_interval( overlaps = self._overlaps_existing_interval(
row, reach=new_reach): 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() self._show_overlap_warning()
return False return False
self._undo.push( self._undo.push(
SetEdgeCommand( SetEdgeCommand(
self._data, global_row, new_reach self._data, global_row, new_reach,
clear_interval=clear_interval
) )
) )
except Exception as e: except Exception as e:

View File

@ -120,19 +120,27 @@ class SetEndCommand(QUndoCommand):
class SetEdgeCommand(QUndoCommand): class SetEdgeCommand(QUndoCommand):
def __init__(self, wps, index, edge): def __init__(self, wps, index, edge, clear_interval=False):
QUndoCommand.__init__(self) QUndoCommand.__init__(self)
self._wps = wps self._wps = wps
self._index = index self._index = index
self._old = self._wps.get(self._index).reach 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._new = edge
self._clear_interval = clear_interval
def undo(self): def undo(self):
self._wps.get(self._index).reach = self._old 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): def redo(self):
self._wps.get(self._index).reach = self._new 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): class AddCommand(QUndoCommand):