From 7fb870eac4b7135cdc6210bb27bb95bc2f8c91df Mon Sep 17 00:00:00 2001 From: appleb_m Date: Mon, 10 Nov 2025 09:42:48 +0100 Subject: [PATCH] GUI: Fixed sorting for mount count in reference_tools_panel.py and also the unmoutn button is now correctly wired --- .../aaregui/panels/reference_tools_panel.py | 30 ++++++++++++------- 1 file changed, 20 insertions(+), 10 deletions(-) diff --git a/gui/src/aaregui/panels/reference_tools_panel.py b/gui/src/aaregui/panels/reference_tools_panel.py index e3b5a2c3..b6865b1d 100644 --- a/gui/src/aaregui/panels/reference_tools_panel.py +++ b/gui/src/aaregui/panels/reference_tools_panel.py @@ -78,12 +78,14 @@ class ReferenceToolsModel(QAbstractTableModel): def update_rows(self, rows: list[SampleShortInfo]): self.beginResetModel() - self.samples = rows - if self.samples: # Only sort if we have samples - self._sort() - else: - self.__sorted_samples = [] # Clear sorted samples if no data - self.endResetModel() + try: + self.samples = rows + if self.samples: # Only sort if we have samples + self._sort() + else: + self.__sorted_samples = [] # Clear sorted samples if no data + finally: + self.endResetModel() def sort(self, column, order): @@ -106,11 +108,19 @@ class ReferenceToolsModel(QAbstractTableModel): key=lambda row: row.loc_str_sort(), reverse=(self.__sort_order == Qt.SortOrder.DescendingOrder) ) - else: - # Generic sorting for other columns + elif self.__sort_col == 2: + # Numeric sort for Mount count; place None last on ascending, first on descending + none_sentinel = float('inf') if self.__sort_order == Qt.SortOrder.AscendingOrder else float('-inf') self.__sorted_samples = sorted( self.samples, - key=lambda row: get_entry(row, self.__sort_col) or "", + key=lambda row: (row.mount_count if isinstance(row.mount_count, (int, float)) else none_sentinel), + reverse=(self.__sort_order == Qt.SortOrder.DescendingOrder) + ) + else: + # String sort with empty fallback + self.__sorted_samples = sorted( + self.samples, + key=lambda row: (get_entry(row, self.__sort_col) or ""), reverse=(self.__sort_order == Qt.SortOrder.DescendingOrder) ) @@ -227,7 +237,7 @@ class ReferenceToolsPanel(QFrame): if action == act_mount: self.mount.emit(item, True) elif action == act_unmount: - self.unmount.emit(item) + self.unmount.emit() @Slot(SampleShortInfoList) def new_list(self, samples: SampleShortInfoList):