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