Commit 1b601460 authored by Pierre-Antoine Rouby's avatar Pierre-Antoine Rouby
Browse files

HS: Basic: Make enabled undo command.

Showing with 33 additions and 8 deletions
+33 -8
...@@ -38,7 +38,7 @@ from View.Tools.PamhyrTable import PamhyrTableModel ...@@ -38,7 +38,7 @@ from View.Tools.PamhyrTable import PamhyrTableModel
from View.HydraulicStructures.BasicHydraulicStructures.UndoCommand import ( from View.HydraulicStructures.BasicHydraulicStructures.UndoCommand import (
SetNameCommand, SetTypeCommand, SetNameCommand, SetTypeCommand,
AddCommand, DelCommand, SetEnabledCommand, AddCommand, DelCommand,
) )
from Model.HydraulicStructures.Basic.Types import BHS_types from Model.HydraulicStructures.Basic.Types import BHS_types
...@@ -175,6 +175,14 @@ class TableModel(PamhyrTableModel): ...@@ -175,6 +175,14 @@ class TableModel(PamhyrTableModel):
self.endRemoveRows() self.endRemoveRows()
self.layoutChanged.emit() self.layoutChanged.emit()
def enabled(self, row, enabled, parent=QModelIndex()):
self._undo.push(
SetEnabledCommand(
self._lst, row, enabled
)
)
self.layoutChanged.emit()
def undo(self): def undo(self):
self._undo.undo() self._undo.undo()
self.layoutChanged.emit() self.layoutChanged.emit()
......
...@@ -60,6 +60,22 @@ class SetTypeCommand(QUndoCommand): ...@@ -60,6 +60,22 @@ class SetTypeCommand(QUndoCommand):
self._hs.insert(self._index, self._new) 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): class AddCommand(QUndoCommand):
def __init__(self, hs, index): def __init__(self, hs, index):
QUndoCommand.__init__(self) QUndoCommand.__init__(self)
......
...@@ -145,13 +145,15 @@ class BasicHydraulicStructuresWindow(PamhyrWindow): ...@@ -145,13 +145,15 @@ class BasicHydraulicStructuresWindow(PamhyrWindow):
def setup_connections(self): def setup_connections(self):
self.find(QAction, "action_add").triggered.connect(self.add) self.find(QAction, "action_add").triggered.connect(self.add)
self.find(QAction, "action_delete").triggered.connect(self.delete) 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 = self.find(QTableView, "tableView")
table.selectionModel()\ table.selectionModel()\
.selectionChanged\ .selectionChanged\
.connect(self.update) .connect(self.update)
self._table.layoutChanged.connect(self.update)
def index_selected(self): def index_selected(self):
table = self.find(QTableView, "tableView") table = self.find(QTableView, "tableView")
r = table.selectionModel()\ r = table.selectionModel()\
...@@ -219,10 +221,11 @@ class BasicHydraulicStructuresWindow(PamhyrWindow): ...@@ -219,10 +221,11 @@ class BasicHydraulicStructuresWindow(PamhyrWindow):
def _set_basic_structure_state(self): def _set_basic_structure_state(self):
row = self.index_selected_row() row = self.index_selected_row()
if row is None: if row is not None:
self._checkbox.setEnabled(False) self._table.enabled(
else: row,
self._hs.basic_structure(row).enabled = self._checkbox.isChecked() self._checkbox.isChecked()
)
def update(self): def update(self):
self._set_checkbox_state() self._set_checkbox_state()
......
...@@ -92,11 +92,9 @@ class SetEnabledCommand(QUndoCommand): ...@@ -92,11 +92,9 @@ class SetEnabledCommand(QUndoCommand):
self._new = enabled self._new = enabled
def undo(self): def undo(self):
logger.info(f"Undo {self._new} -> {self._old}")
self._h_s_lst.get(self._index).enabled = self._old self._h_s_lst.get(self._index).enabled = self._old
def redo(self): def redo(self):
logger.info(f"Undo {self._old} -> {self._new}")
self._h_s_lst.get(self._index).enabled = self._new self._h_s_lst.get(self._index).enabled = self._new
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment