HS: Basic: Make enabled undo command.

setup.py
Pierre-Antoine Rouby 2023-12-12 09:32:05 +01:00
parent 7db65f127e
commit 1b601460e6
4 changed files with 33 additions and 8 deletions

View File

@ -38,7 +38,7 @@ from View.Tools.PamhyrTable import PamhyrTableModel
from View.HydraulicStructures.BasicHydraulicStructures.UndoCommand import (
SetNameCommand, SetTypeCommand,
AddCommand, DelCommand,
SetEnabledCommand, AddCommand, DelCommand,
)
from Model.HydraulicStructures.Basic.Types import BHS_types
@ -175,6 +175,14 @@ class TableModel(PamhyrTableModel):
self.endRemoveRows()
self.layoutChanged.emit()
def enabled(self, row, enabled, parent=QModelIndex()):
self._undo.push(
SetEnabledCommand(
self._lst, row, enabled
)
)
self.layoutChanged.emit()
def undo(self):
self._undo.undo()
self.layoutChanged.emit()

View File

@ -60,6 +60,22 @@ class SetTypeCommand(QUndoCommand):
self._hs.insert(self._index, self._new)
class SetEnabledCommand(QUndoCommand):
def __init__(self, hs, index, enabled):
QUndoCommand.__init__(self)
self._hs = hs
self._index = index
self._old = not enabled
self._new = enabled
def undo(self):
self._hs.basic_structure(self._index).enabled = self._old
def redo(self):
self._hs.basic_structure(self._index).enabled = self._new
class AddCommand(QUndoCommand):
def __init__(self, hs, index):
QUndoCommand.__init__(self)

View File

@ -145,13 +145,15 @@ class BasicHydraulicStructuresWindow(PamhyrWindow):
def setup_connections(self):
self.find(QAction, "action_add").triggered.connect(self.add)
self.find(QAction, "action_delete").triggered.connect(self.delete)
self._checkbox.stateChanged.connect(self._set_basic_structure_state)
self._checkbox.clicked.connect(self._set_basic_structure_state)
table = self.find(QTableView, "tableView")
table.selectionModel()\
.selectionChanged\
.connect(self.update)
self._table.layoutChanged.connect(self.update)
def index_selected(self):
table = self.find(QTableView, "tableView")
r = table.selectionModel()\
@ -219,10 +221,11 @@ class BasicHydraulicStructuresWindow(PamhyrWindow):
def _set_basic_structure_state(self):
row = self.index_selected_row()
if row is None:
self._checkbox.setEnabled(False)
else:
self._hs.basic_structure(row).enabled = self._checkbox.isChecked()
if row is not None:
self._table.enabled(
row,
self._checkbox.isChecked()
)
def update(self):
self._set_checkbox_state()

View File

@ -92,11 +92,9 @@ class SetEnabledCommand(QUndoCommand):
self._new = enabled
def undo(self):
logger.info(f"Undo {self._new} -> {self._old}")
self._h_s_lst.get(self._index).enabled = self._old
def redo(self):
logger.info(f"Undo {self._old} -> {self._new}")
self._h_s_lst.get(self._index).enabled = self._new