Shortcuts to move through the error list and open error in editor on Enter

This commit is contained in:
Kovid Goyal 2013-12-09 10:44:46 +05:30
parent 2136fca624
commit 15b2a95919
2 changed files with 24 additions and 2 deletions

View File

@ -59,6 +59,15 @@ class Check(QWidget):
elif url == 'run:check':
self.check_requested.emit()
def next_error(self, delta=1):
row = self.items.currentRow()
num = self.items.count()
if num > 0:
row = (row + delta) % num
self.items.setCurrentRow(row)
self.items.item(row).setSelected(True)
self.current_item_activated()
def current_item_activated(self, *args):
i = self.items.currentItem()
if i is not None:
@ -100,6 +109,7 @@ class Check(QWidget):
self.items.item(0).setSelected(True)
self.items.setCurrentRow(0)
self.current_item_changed()
self.items.setFocus(Qt.OtherFocusReason)
else:
self.clear_help(_('No problems found'))
@ -111,6 +121,11 @@ class Check(QWidget):
self.help.setText('')
self.items.clear()
def keyPressEvent(self, ev):
if ev.key() in (Qt.Key_Enter, Qt.Key_Return):
self.current_item_activated()
return super(Check, self).keyPressEvent(ev)
def main():
from calibre.gui2 import Application
from calibre.gui2.tweak_book.boss import get_container

View File

@ -195,6 +195,7 @@ class Main(MainWindow):
self.central = Central(self)
self.setCentralWidget(self.central)
self.check_book = Check(self)
self.create_actions()
self.create_toolbars()
@ -282,7 +283,6 @@ class Main(MainWindow):
_('Beautify current file'))
self.action_pretty_all = reg('format-justify-fill.png', _('&Beautify all files'), partial(self.boss.pretty_print, False), 'pretty-all', (),
_('Beautify all files'))
self.action_check_book = reg('debug.png', _('&Check Book'), self.boss.check_requested, 'check-book', ('F7'), _('Check book for errors'))
# Polish actions
group = _('Polish Book')
@ -329,6 +329,14 @@ class Main(MainWindow):
self.action_mark = reg(None, _('&Mark selected text'), self.boss.mark_selected_text, 'mark-selected-text', ('Ctrl+Shift+M',), _('Mark selected text'))
self.action_go_to_line = reg(None, _('Go to &line'), self.boss.go_to_line_number, 'go-to-line-number', ('Ctrl+.',), _('Go to line number'))
# Check Book actions
group = _('Check Book')
self.action_check_book = reg('debug.png', _('&Check Book'), self.boss.check_requested, 'check-book', ('F7'), _('Check book for errors'))
self.action_check_book_next = reg('forward.png', _('&Next error'), partial(
self.check_book.next_error, delta=1), 'check-book-next', ('Ctrl+F7'), _('Show next error'))
self.action_check_book_previous = reg('back.png', _('&Previous error'), partial(
self.check_book.next_error, delta=-1), 'check-book-previous', ('Ctrl+Shift+F7'), _('Show previous error'))
# Miscellaneous actions
group = _('Miscellaneous')
self.action_create_checkpoint = reg(
@ -463,7 +471,6 @@ class Main(MainWindow):
d = create(_('Check Book'), 'check-book')
d.setAllowedAreas(Qt.LeftDockWidgetArea | Qt.RightDockWidgetArea | Qt.BottomDockWidgetArea | Qt.TopDockWidgetArea)
self.check_book = Check(self)
d.setWidget(self.check_book)
self.addDockWidget(Qt.TopDockWidgetArea, d)
d.close() # By default the check window is closed