From 1b601460e663696e23b64426000a0069a711a3fd Mon Sep 17 00:00:00 2001 From: Pierre-Antoine Rouby <pierre-antoine.rouby@inrae.fr> Date: Tue, 12 Dec 2023 09:32:05 +0100 Subject: [PATCH] HS: Basic: Make enabled undo command. --- .../BasicHydraulicStructures/Table.py | 10 +++++++++- .../BasicHydraulicStructures/UndoCommand.py | 16 ++++++++++++++++ .../BasicHydraulicStructures/Window.py | 13 ++++++++----- src/View/HydraulicStructures/UndoCommand.py | 2 -- 4 files changed, 33 insertions(+), 8 deletions(-) diff --git a/src/View/HydraulicStructures/BasicHydraulicStructures/Table.py b/src/View/HydraulicStructures/BasicHydraulicStructures/Table.py index f6d22a77..e043d19e 100644 --- a/src/View/HydraulicStructures/BasicHydraulicStructures/Table.py +++ b/src/View/HydraulicStructures/BasicHydraulicStructures/Table.py @@ -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() diff --git a/src/View/HydraulicStructures/BasicHydraulicStructures/UndoCommand.py b/src/View/HydraulicStructures/BasicHydraulicStructures/UndoCommand.py index ec7f0eaf..80bd1f3f 100644 --- a/src/View/HydraulicStructures/BasicHydraulicStructures/UndoCommand.py +++ b/src/View/HydraulicStructures/BasicHydraulicStructures/UndoCommand.py @@ -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) diff --git a/src/View/HydraulicStructures/BasicHydraulicStructures/Window.py b/src/View/HydraulicStructures/BasicHydraulicStructures/Window.py index 58af27ed..976f6bf7 100644 --- a/src/View/HydraulicStructures/BasicHydraulicStructures/Window.py +++ b/src/View/HydraulicStructures/BasicHydraulicStructures/Window.py @@ -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() diff --git a/src/View/HydraulicStructures/UndoCommand.py b/src/View/HydraulicStructures/UndoCommand.py index 826cd268..9c47ccf1 100644 --- a/src/View/HydraulicStructures/UndoCommand.py +++ b/src/View/HydraulicStructures/UndoCommand.py @@ -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 -- GitLab