Make Tag Browser more useable with keyboard shortcuts. Configure the keyboard shortcuts in Preferences->Keyboard->Tag Browser

Merge branch 'master' of https://github.com/cbhaley/calibre
This commit is contained in:
Kovid Goyal 2015-10-04 21:26:05 +05:30
commit d1eb5e27df
2 changed files with 37 additions and 6 deletions

View File

@ -9,9 +9,9 @@ __docformat__ = 'restructuredtext en'
from functools import partial from functools import partial
from PyQt5.Qt import (Qt, QIcon, QWidget, QHBoxLayout, QVBoxLayout, QShortcut, from PyQt5.Qt import (
QKeySequence, QToolButton, QLabel, QFrame, QTimer, Qt, QIcon, QWidget, QHBoxLayout, QVBoxLayout, QToolButton, QLabel, QFrame,
QMenu, QPushButton, QActionGroup) QTimer, QMenu, QPushButton, QActionGroup, QAction)
from calibre.gui2 import error_dialog, question_dialog from calibre.gui2 import error_dialog, question_dialog
from calibre.gui2.widgets import HistoryLineEdit from calibre.gui2.widgets import HistoryLineEdit
@ -334,9 +334,12 @@ class TagBrowserWidget(QWidget): # {{{
'*foo will filter all categories at once, showing only those items\n' '*foo will filter all categories at once, showing only those items\n'
'containing the text "foo"')) 'containing the text "foo"'))
search_layout.addWidget(self.item_search) search_layout.addWidget(self.item_search)
# Not sure if the shortcut should be translatable ... ac = QAction(parent)
sc = QShortcut(QKeySequence(_('ALT+f')), parent) parent.addAction(ac)
sc.activated.connect(self.set_focus_to_find_box) parent.keyboard.register_shortcut('tag browser find box',
_('Find item'), default_keys=("Alt+f",),
action=ac, group=_('Tag Browser'))
ac.triggered.connect(self.set_focus_to_find_box)
self.search_button = QToolButton() self.search_button = QToolButton()
self.search_button.setText(_('F&ind')) self.search_button.setText(_('F&ind'))
@ -350,6 +353,12 @@ class TagBrowserWidget(QWidget): # {{{
search_layout.setStretch(0, 10) search_layout.setStretch(0, 10)
search_layout.setStretch(1, 1) search_layout.setStretch(1, 1)
search_layout.setStretch(2, 1) search_layout.setStretch(2, 1)
ac = QAction(parent)
parent.addAction(ac)
parent.keyboard.register_shortcut('tag browser collapse all',
_('Collapse all'), default_keys=(),
action=ac, group=_('Tag Browser'))
ac.triggered.connect(self.expand_button.clicked)
self.current_find_position = None self.current_find_position = None
self.search_button.clicked.connect(self.find) self.search_button.clicked.connect(self.find)
@ -386,6 +395,12 @@ class TagBrowserWidget(QWidget): # {{{
l.m = QMenu() l.m = QMenu()
l.setMenu(l.m) l.setMenu(l.m)
self._layout.addWidget(l) self._layout.addWidget(l)
ac = QAction(parent)
parent.addAction(ac)
parent.keyboard.register_shortcut('tag browser alter',
_('Alter tag browser'), default_keys=(),
action=ac, group=_('Tag Browser'))
ac.triggered.connect(l.showMenu)
sb = l.m.addAction(_('Sort by')) sb = l.m.addAction(_('Sort by'))
sb.m = l.sort_menu = QMenu(l.m) sb.m = l.sort_menu = QMenu(l.m)
@ -427,10 +442,21 @@ class TagBrowserWidget(QWidget): # {{{
mt.m = l.manage_menu = QMenu(l.m) mt.m = l.manage_menu = QMenu(l.m)
mt.setMenu(mt.m) mt.setMenu(mt.m)
ac = QAction(parent)
parent.addAction(ac)
parent.keyboard.register_shortcut('tag browser toggle item',
_("'Click' found item"), default_keys=(),
description="foobar",
action=ac, group=_('Tag Browser'))
ac.triggered.connect(self.toggle_item)
# self.leak_test_timer = QTimer(self) # self.leak_test_timer = QTimer(self)
# self.leak_test_timer.timeout.connect(self.test_for_leak) # self.leak_test_timer.timeout.connect(self.test_for_leak)
# self.leak_test_timer.start(5000) # self.leak_test_timer.start(5000)
def toggle_item(self):
self.tags_view.toggle_current_index()
def set_pane_is_visible(self, to_what): def set_pane_is_visible(self, to_what):
self.tags_view.set_pane_is_visible(to_what) self.tags_view.set_pane_is_visible(to_what)

View File

@ -279,6 +279,11 @@ class TagsView(QTreeView): # {{{
joiner = ' and ' if self.match_all else ' or ' joiner = ' and ' if self.match_all else ' or '
return joiner.join(tokens) return joiner.join(tokens)
def toggle_current_index(self):
ci = self.currentIndex()
if ci.isValid():
self.toggle(ci)
def toggle(self, index): def toggle(self, index):
self._toggle(index, None) self._toggle(index, None)