Viewer: Add a configurable Quit shortcut

This commit is contained in:
Kovid Goyal 2019-10-05 06:59:58 +05:30
parent 13e2bf077f
commit f542ac933d
No known key found for this signature in database
GPG Key ID: 06BC317B515ACE7C
5 changed files with 18 additions and 0 deletions

View File

@ -118,6 +118,7 @@ class EbookViewer(MainWindow):
self.web_view.toggle_bookmarks.connect(self.toggle_bookmarks) self.web_view.toggle_bookmarks.connect(self.toggle_bookmarks)
self.web_view.toggle_inspector.connect(self.toggle_inspector) self.web_view.toggle_inspector.connect(self.toggle_inspector)
self.web_view.toggle_lookup.connect(self.toggle_lookup) self.web_view.toggle_lookup.connect(self.toggle_lookup)
self.web_view.quit.connect(self.quit)
self.web_view.update_current_toc_nodes.connect(self.toc.update_current_toc_nodes) self.web_view.update_current_toc_nodes.connect(self.toc.update_current_toc_nodes)
self.web_view.toggle_full_screen.connect(self.toggle_full_screen) self.web_view.toggle_full_screen.connect(self.toggle_full_screen)
self.web_view.ask_for_open.connect(self.ask_for_open, type=Qt.QueuedConnection) self.web_view.ask_for_open.connect(self.ask_for_open, type=Qt.QueuedConnection)
@ -356,6 +357,9 @@ class EbookViewer(MainWindow):
self.restoreState(state, self.MAIN_WINDOW_STATE_VERSION) self.restoreState(state, self.MAIN_WINDOW_STATE_VERSION)
self.inspector_dock.setVisible(False) self.inspector_dock.setVisible(False)
def quit(self):
self.close()
def closeEvent(self, ev): def closeEvent(self, ev):
try: try:
self.save_annotations() self.save_annotations()

View File

@ -222,6 +222,7 @@ class ViewerBridge(Bridge):
toggle_bookmarks = from_js() toggle_bookmarks = from_js()
toggle_inspector = from_js() toggle_inspector = from_js()
toggle_lookup = from_js() toggle_lookup = from_js()
quit = from_js()
update_current_toc_nodes = from_js(object, object) update_current_toc_nodes = from_js(object, object)
toggle_full_screen = from_js() toggle_full_screen = from_js()
report_cfi = from_js(object, object) report_cfi = from_js(object, object)
@ -364,6 +365,7 @@ class WebView(RestartingWebEngineView):
toggle_bookmarks = pyqtSignal() toggle_bookmarks = pyqtSignal()
toggle_inspector = pyqtSignal() toggle_inspector = pyqtSignal()
toggle_lookup = pyqtSignal() toggle_lookup = pyqtSignal()
quit = pyqtSignal()
update_current_toc_nodes = pyqtSignal(object, object) update_current_toc_nodes = pyqtSignal(object, object)
toggle_full_screen = pyqtSignal() toggle_full_screen = pyqtSignal()
ask_for_open = pyqtSignal(object) ask_for_open = pyqtSignal(object)
@ -388,6 +390,7 @@ class WebView(RestartingWebEngineView):
self.bridge.toggle_bookmarks.connect(self.toggle_bookmarks) self.bridge.toggle_bookmarks.connect(self.toggle_bookmarks)
self.bridge.toggle_inspector.connect(self.toggle_inspector) self.bridge.toggle_inspector.connect(self.toggle_inspector)
self.bridge.toggle_lookup.connect(self.toggle_lookup) self.bridge.toggle_lookup.connect(self.toggle_lookup)
self.bridge.quit.connect(self.quit)
self.bridge.update_current_toc_nodes.connect(self.update_current_toc_nodes) self.bridge.update_current_toc_nodes.connect(self.update_current_toc_nodes)
self.bridge.toggle_full_screen.connect(self.toggle_full_screen) self.bridge.toggle_full_screen.connect(self.toggle_full_screen)
self.bridge.ask_for_open.connect(self.ask_for_open) self.bridge.ask_for_open.connect(self.ask_for_open)

View File

@ -237,6 +237,7 @@ SHORTCUTS = {
def add_standalone_viewer_shortcuts(): def add_standalone_viewer_shortcuts():
ismacos = 'macos' in window.navigator.userAgent
SHORTCUTS['toggle_bookmarks'] = desc( SHORTCUTS['toggle_bookmarks'] = desc(
v"['Ctrl+b']", v"['Ctrl+b']",
'ui', 'ui',
@ -255,6 +256,12 @@ def add_standalone_viewer_shortcuts():
_('Show/hide the word lookup panel'), _('Show/hide the word lookup panel'),
) )
quit_shortcut = 'Meta+q' if ismacos else 'Ctrl+q'
SHORTCUTS['quit'] = desc(
quit_shortcut,
'ui',
_('Quit the viewer'),
)
def create_shortcut_map(custom_shortcuts): def create_shortcut_map(custom_shortcuts):
ans = {} ans = {}

View File

@ -296,6 +296,8 @@ class View:
ui_operations.toggle_inspector() ui_operations.toggle_inspector()
elif data.name is 'toggle_lookup': elif data.name is 'toggle_lookup':
ui_operations.toggle_lookup() ui_operations.toggle_lookup()
elif data.name is 'quit':
ui_operations.quit()
elif data.name is 'start_search': elif data.name is 'start_search':
self.show_search() self.show_search()
elif data.name is 'next_match': elif data.name is 'next_match':

View File

@ -304,6 +304,8 @@ if window is window.top:
to_python.view_image(name) to_python.view_image(name)
ui_operations.change_background_image = def(img_id): ui_operations.change_background_image = def(img_id):
to_python.change_background_image(img_id) to_python.change_background_image(img_id)
ui_operations.quit = def():
to_python.quit()
document.body.appendChild(E.div(id='view')) document.body.appendChild(E.div(id='view'))
window.onerror = onerror window.onerror = onerror