From f461c24fb244fcf338c994bce9c23ab5a5382af5 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Wed, 23 Sep 2020 14:23:34 +0530 Subject: [PATCH] Add shortcuts to reverse and re-apply current sort Fixes #1889298 [Enhancement Request: Hotkey to resort current view/reverse current sort](https://bugs.launchpad.net/calibre/+bug/1889298) --- src/calibre/gui2/actions/sort.py | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/src/calibre/gui2/actions/sort.py b/src/calibre/gui2/actions/sort.py index 99d988370f..9dc4ec2ad2 100644 --- a/src/calibre/gui2/actions/sort.py +++ b/src/calibre/gui2/actions/sort.py @@ -38,6 +38,33 @@ class SortByAction(InterfaceAction): self.sorted_icon = QIcon(I('ok.png')) self.qaction.menu().aboutToShow.connect(self.about_to_show) + def c(attr, title, tooltip, callback, keys=()): + ac = self.create_action(spec=(title, None, tooltip, keys), attr=attr) + ac.triggered.connect(callback) + self.gui.addAction(ac) + return ac + + c('reverse_sort_action', _('Reverse current sort'), _('Reverse the current sort order'), self.reverse_sort) + c('reapply_sort_action', _('Re-apply current sort'), _('Re-apply the current sort'), self.reapply_sort, 'f5') + + def reverse_sort(self): + lv = self.gui.library_view + m = lv.model() + try: + sort_col, order = m.sorted_on + except TypeError: + sort_col, order = 'date', True + lv.sort_by_named_field(sort_col, not order) + + def reapply_sort(self): + lv = self.gui.library_view + m = lv.model() + try: + sort_col, order = m.sorted_on + except TypeError: + sort_col, order = 'date', True + lv.sort_by_named_field(sort_col, order) + def location_selected(self, loc): enabled = loc == 'library' self.qaction.setEnabled(enabled)