From 90b4207a3494d21302b249eb2022246f02c74641 Mon Sep 17 00:00:00 2001 From: Filip Leonarski Date: Sat, 21 Jun 2025 14:04:30 +0200 Subject: [PATCH] GUI: Sorting works --- gui/src/aaregui/models/user_sample_model.py | 28 ++++++++++----------- 1 file changed, 13 insertions(+), 15 deletions(-) diff --git a/gui/src/aaregui/models/user_sample_model.py b/gui/src/aaregui/models/user_sample_model.py index c0fc84f3..222202b7 100644 --- a/gui/src/aaregui/models/user_sample_model.py +++ b/gui/src/aaregui/models/user_sample_model.py @@ -50,22 +50,23 @@ class UserSampleSpreadsheet(QAbstractTableModel): self.current_puck = current_puck self.__sort_col = 1 self.__sort_order = Qt.SortOrder.AscendingOrder + self._sort() def rowCount(self, parent=None): - return len(self.samples) + return len(self.__sorted_samples) def columnCount(self, parent=None): return len(self.header) def data(self, index, role=None): if role == Qt.ItemDataRole.DisplayRole: - return get_entry(self.samples[index.row()], index.column()) + return get_entry(self.__sorted_samples[index.row()], index.column()) elif role == Qt.ItemDataRole.TextAlignmentRole: # Align text to center return Qt.AlignmentFlag.AlignCenter elif role == Qt.ItemDataRole.BackgroundRole: - if self.samples[index.row()].db_id == self.current_sample: + if self.__sorted_samples[index.row()].db_id == self.current_sample: return QBrush(QColor(114, 159, 207)) # darker blue - if self.samples[index.row()].puck_name == self.current_puck: + if self.__sorted_samples[index.row()].puck_name == self.current_puck: return QBrush(QColor(216, 228, 253)) # light blue return QBrush(QColor(255, 255, 255)) # White return None # For other roles, return None @@ -88,26 +89,23 @@ class UserSampleSpreadsheet(QAbstractTableModel): self, samples: list[SampleShortInfo] ): - current_set = set(self.samples) - new_set = set(samples) - - if current_set != new_set: + if samples != self.samples: self.beginResetModel() self.samples = samples - self.sort_internal() + self._sort() self.endResetModel() def sort(self, column, order): self.layoutAboutToBeChanged.emit() self.__sort_order = order self.__sort_col = column - self.sort_internal() + self._sort() self.layoutChanged.emit() - def sort_internal(self): + def _sort(self): if self.__sort_col == 3: - self.samples = sorted( + self.__sorted_samples = sorted( self.samples, key=lambda row: row.loc_str_sort(), reverse=( @@ -116,7 +114,7 @@ class UserSampleSpreadsheet(QAbstractTableModel): ) else: # Sort the samples based on the specified column and order - self.samples = sorted( + self.__sorted_samples = sorted( self.samples, key=lambda row: get_entry(row, self.__sort_col), reverse=( @@ -140,10 +138,10 @@ class UserSampleSpreadsheet(QAbstractTableModel): l = SampleShortInfoList(s=[]) for i in set(index.row() for index in indexes): - l.s.append(self.samples[i]) + l.s.append(self.__sorted_samples[i]) mime_data.setText(l.model_dump_json()) return mime_data def get_id(self, row: int) -> SampleShortInfo: - return self.samples[row] + return self.__sorted_samples[row]