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)