From 66691d68f8c657e14dffcc21a8b36f21367cd250 Mon Sep 17 00:00:00 2001 From: Pierre-Antoine Rouby <pierre-antoine.rouby@inrae.fr> Date: Tue, 16 May 2023 16:48:19 +0200 Subject: [PATCH] Stricklers: Fix sort command. --- src/Model/Stricklers/StricklersList.py | 15 ++++++++++----- src/View/Stricklers/UndoCommand.py | 13 ++++--------- src/View/Stricklers/Window.py | 2 +- 3 files changed, 15 insertions(+), 15 deletions(-) diff --git a/src/Model/Stricklers/StricklersList.py b/src/Model/Stricklers/StricklersList.py index 631ed93a..ce84d740 100644 --- a/src/Model/Stricklers/StricklersList.py +++ b/src/Model/Stricklers/StricklersList.py @@ -14,7 +14,7 @@ class StricklersList(object): return len(self._stricks) @property - def stricks(self): + def stricklers(self): return self._stricks.copy() def get(self, index): @@ -53,10 +53,15 @@ class StricklersList(object): ) self.delete(stricks) - def sort(self, reverse:bool = False): - self._strick = sorted( - self._strick, - key = lambda st: st.name, + @timer + def sort(self, reverse:bool = False, key=None): + f = lambda st: st.name + if key is not None: + f = key + + self._stricks = sorted( + self._stricks, + key = f, reverse = reverse, ) self._status.modified() diff --git a/src/View/Stricklers/UndoCommand.py b/src/View/Stricklers/UndoCommand.py index df3f98e4..07e782de 100644 --- a/src/View/Stricklers/UndoCommand.py +++ b/src/View/Stricklers/UndoCommand.py @@ -114,27 +114,22 @@ class SortCommand(QUndoCommand): self._data = data self._reverse = _reverse - self._old = self._data.get_tab(self._tab) + self._old = self._data.stricklers self._indexes = None def undo(self): - ll = self._data.get_tab(self._tab) - self._data.sort( - self._tab, - key=lambda x: self._indexes[ll.index(x)] - ) + ll = self._data.stricklers + self._data.sort() def redo(self): self._data.sort( - self._tab, reverse=self._reverse, - key=lambda x: x.name ) if self._indexes is None: self._indexes = list( map( lambda p: self._old.index(p), - self._data.get_tab(self._tab) + self._data.stricklers ) ) self._old = None diff --git a/src/View/Stricklers/Window.py b/src/View/Stricklers/Window.py index 3f072dfb..0c4d2bb7 100644 --- a/src/View/Stricklers/Window.py +++ b/src/View/Stricklers/Window.py @@ -105,7 +105,7 @@ class StricklersWindow(ASubMainWindow, ListedSubWindow): self._table['study'].delete(rows) def sort(self): - self._table['study'].sort() + self._table['study'].sort(False) def copy(self): print("TODO") -- GitLab