From 7dea54d135846edc8da9eaf5b5fd054005c40791 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Mon, 9 Dec 2019 09:29:27 +0530 Subject: [PATCH] Add a button to toggel reference mode to the toolbar --- src/calibre/gui2/viewer/toolbars.py | 9 ++++++++- src/calibre/gui2/viewer/web_view.py | 3 +++ src/pyj/read_book/view.pyj | 3 +++ src/pyj/viewer-main.pyj | 2 ++ 4 files changed, 16 insertions(+), 1 deletion(-) diff --git a/src/calibre/gui2/viewer/toolbars.py b/src/calibre/gui2/viewer/toolbars.py index 32bce959db..6f029e3e2a 100644 --- a/src/calibre/gui2/viewer/toolbars.py +++ b/src/calibre/gui2/viewer/toolbars.py @@ -50,6 +50,7 @@ def all_actions(): 'previous': Action('previous.png', _('Previous page'), 'previous'), 'toc': Action('toc.png', _('Table of Contents'), 'toggle_toc'), 'bookmarks': Action('bookmarks.png', _('Bookmarks'), 'toggle_bookmarks'), + 'reference': Action('lookfeel.png', _('Toggle Reference mode'), 'toggle_reference_mode'), 'lookup': Action('generic-library.png', _('Lookup words'), 'toggle_lookup'), 'chrome': Action('tweaks.png', _('Show viewer controls'), 'show_chrome'), 'mode': Action('scroll.png', _('Toggle paged mode'), 'toggle_paged_mode'), @@ -62,7 +63,7 @@ def all_actions(): DEFAULT_ACTIONS = ( 'back', 'forward', None, 'open', 'copy', 'increase_font_size', 'decrease_font_size', 'fullscreen', - None, 'previous', 'next', None, 'toc', 'bookmarks', 'lookup', 'chrome', None, 'mode', 'print', 'preferences', + None, 'previous', 'next', None, 'toc', 'bookmarks', 'lookup', 'reference', 'chrome', None, 'mode', 'print', 'preferences', 'metadata' ) @@ -121,6 +122,7 @@ class ActionsToolBar(ToolBar): self.action_triggered.connect(web_view.trigger_shortcut) page = web_view.page() web_view.paged_mode_changed.connect(self.update_mode_action) + web_view.reference_mode_changed.connect(self.update_reference_mode_action) web_view.standalone_misc_settings_changed.connect(self.update_visibility) web_view.customize_toolbar.connect(self.customize, type=Qt.QueuedConnection) @@ -147,6 +149,8 @@ class ActionsToolBar(ToolBar): self.toc_action = shortcut_action('toc') self.bookmarks_action = shortcut_action('bookmarks') + self.reference_action = a = shortcut_action('reference') + a.setCheckable(True) self.lookup_action = shortcut_action('lookup') self.chrome_action = shortcut_action('chrome') @@ -180,6 +184,9 @@ class ActionsToolBar(ToolBar): a.setChecked(True) a.setToolTip(_('Switch to paged mode -- where the text is broken into pages')) + def update_reference_mode_action(self, enabled): + self.reference_action.setChecked(enabled) + def set_tooltips(self, rmap): for sc, a in iteritems(self.shortcut_actions): if a.isCheckable(): diff --git a/src/calibre/gui2/viewer/web_view.py b/src/calibre/gui2/viewer/web_view.py index 17fb801177..832251772d 100644 --- a/src/calibre/gui2/viewer/web_view.py +++ b/src/calibre/gui2/viewer/web_view.py @@ -252,6 +252,7 @@ class ViewerBridge(Bridge): copy_image = from_js(object) change_background_image = from_js(object) overlay_visibility_changed = from_js(object) + reference_mode_changed = from_js(object) show_loading_message = from_js(object) show_error = from_js(object, object, object) export_shortcut_map = from_js(object) @@ -418,6 +419,7 @@ class WebView(RestartingWebEngineView): view_image = pyqtSignal(object) copy_image = pyqtSignal(object) overlay_visibility_changed = pyqtSignal(object) + reference_mode_changed = pyqtSignal(object) show_loading_message = pyqtSignal(object) show_error = pyqtSignal(object, object, object) print_book = pyqtSignal() @@ -456,6 +458,7 @@ class WebView(RestartingWebEngineView): self.bridge.view_image.connect(self.view_image) self.bridge.copy_image.connect(self.copy_image) self.bridge.overlay_visibility_changed.connect(self.overlay_visibility_changed) + self.bridge.reference_mode_changed.connect(self.reference_mode_changed) self.bridge.show_loading_message.connect(self.show_loading_message) self.bridge.show_error.connect(self.show_error) self.bridge.print_book.connect(self.print_book) diff --git a/src/pyj/read_book/view.pyj b/src/pyj/read_book/view.pyj index 68d6b79efa..e11bc66d33 100644 --- a/src/pyj/read_book/view.pyj +++ b/src/pyj/read_book/view.pyj @@ -976,7 +976,10 @@ class View: def toggle_reference_mode(self): self.reference_mode_enabled = not self.reference_mode_enabled + self.on_reference_item_changed() self.iframe_wrapper.send_message('set_reference_mode', enabled=self.reference_mode_enabled) + if ui_operations.reference_mode_changed: + ui_operations.reference_mode_changed(self.reference_mode_enabled) def on_reference_item_changed(self, data): data = data or {'refnum': None, 'index': None} diff --git a/src/pyj/viewer-main.pyj b/src/pyj/viewer-main.pyj index 5ef516c38e..0af0db74f6 100644 --- a/src/pyj/viewer-main.pyj +++ b/src/pyj/viewer-main.pyj @@ -369,6 +369,8 @@ if window is window.top: to_python.quit() ui_operations.overlay_visibility_changed = def(visible): to_python.overlay_visibility_changed(visible) + ui_operations.reference_mode_changed = def(enabled): + to_python.reference_mode_changed(enabled) ui_operations.show_loading_message = def(msg): to_python.show_loading_message(msg) ui_operations.export_shortcut_map = def(smap):