introduced "Sort by insertion order" (the default) / "Sorting disabled" keeps current order

This commit is contained in:
2023-02-02 16:48:18 +01:00
parent 26c338c54e
commit 9b50ade340
2 changed files with 15 additions and 3 deletions

View File

@ -82,7 +82,7 @@ class DictListWidget(QListWidget):
self.sortItems()
def disable_sorting(self):
def enable_sort_by_insertion_order(self):
# map order in dict to indices
mapping = enumerate(reversed(self.items.values()))
mapping = {item.text(): index for index, item in mapping}
@ -91,6 +91,14 @@ class DictListWidget(QListWidget):
return mapping[x.text()]
self.set_sort_key(unsort)
self.disable_sorting()
def enable_sort_by_text(self):
self.set_sort_key(lambda x: x.text())
def disable_sorting(self):
self.set_sort_key(None)

View File

@ -45,8 +45,9 @@ class MainWindow(QMainWindow):
lst_menu.addAction("Mark selected as not seen", self.on_mark_selected_as_not_seen)
lst_menu.addSeparator()
sort_group = lst_menu.addGroup()
sort_group.addCheckbox("Sorting disabled", triggered=self.on_sorting_disabled, state=True)
sort_group.addCheckbox("Sort by insertion order", triggered=self.on_sort_by_insertion_order, state=True)
sort_group.addCheckbox("Sort by name", triggered=self.on_sort_by_name)
sort_group.addCheckbox("Sorting disabled", triggered=self.on_sorting_disabled)
shortcut(self, "Ctrl+P", self.on_plot_selected)
@ -140,8 +141,11 @@ class MainWindow(QMainWindow):
self.lst.set_alarm_for_selected(True)
def on_sort_by_insertion_order(self):
self.lst.enable_sort_by_insertion_order()
def on_sort_by_name(self):
self.lst.set_sort_key(lambda x: x.value.name)
self.lst.enable_sort_by_text()
def on_sorting_disabled(self):
self.lst.disable_sorting()