GUI: Sorting works
This commit is contained in:
1 parent
49d57e66e4
commit
90b4207a34
1 file changed
+13
-15
@@ -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]
|
||||
Reference in new issue
Block a user