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):