diff --git a/src/calibre/gui2/viewer/ui.py b/src/calibre/gui2/viewer/ui.py index 178f2274d0..e585f47dde 100644 --- a/src/calibre/gui2/viewer/ui.py +++ b/src/calibre/gui2/viewer/ui.py @@ -85,18 +85,25 @@ class EbookViewer(MainWindow): self.bookmarks_widget.activated.connect(self.bookmark_activated) self.bookmarks_dock.setWidget(w) - self.inspector_dock = create_dock(_('Inspector'), 'inspector', Qt.RightDockWidgetArea) + self.inspector_dock = create_dock( + _('Inspector'), 'inspector', Qt.RightDockWidgetArea, areas=Qt.AllDockWidgetAreas) + self.web_view = WebView(self) self.web_view.cfi_changed.connect(self.cfi_changed) self.web_view.reload_book.connect(self.reload_book) self.web_view.toggle_toc.connect(self.toggle_toc) self.web_view.toggle_bookmarks.connect(self.toggle_bookmarks) + self.web_view.toggle_inspector.connect(self.toggle_inspector) 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.ask_for_open.connect(self.ask_for_open, type=Qt.QueuedConnection) self.setCentralWidget(self.web_view) self.restore_state() + def toggle_inspector(self): + visible = self.inspector_dock.toggleViewAction().isChecked() + self.inspector_dock.setVisible(not visible) + # IPC {{{ def handle_commandline_arg(self, arg): if arg: @@ -290,6 +297,7 @@ class EbookViewer(MainWindow): self.restoreGeometry(geom) if state: self.restoreState(state, self.MAIN_WINDOW_STATE_VERSION) + self.inspector_dock.setVisible(False) def closeEvent(self, ev): try: diff --git a/src/calibre/gui2/viewer/web_view.py b/src/calibre/gui2/viewer/web_view.py index 3c9066b5fb..5c63b346ae 100644 --- a/src/calibre/gui2/viewer/web_view.py +++ b/src/calibre/gui2/viewer/web_view.py @@ -187,6 +187,7 @@ class ViewerBridge(Bridge): reload_book = from_js() toggle_toc = from_js() toggle_bookmarks = from_js() + toggle_inspector = from_js() update_current_toc_nodes = from_js(object, object) toggle_full_screen = from_js() report_cfi = from_js(object, object) @@ -305,6 +306,7 @@ class WebView(RestartingWebEngineView): reload_book = pyqtSignal() toggle_toc = pyqtSignal() toggle_bookmarks = pyqtSignal() + toggle_inspector = pyqtSignal() update_current_toc_nodes = pyqtSignal(object, object) toggle_full_screen = pyqtSignal() ask_for_open = pyqtSignal(object) @@ -325,6 +327,7 @@ class WebView(RestartingWebEngineView): self.bridge.reload_book.connect(self.reload_book) self.bridge.toggle_toc.connect(self.toggle_toc) self.bridge.toggle_bookmarks.connect(self.toggle_bookmarks) + self.bridge.toggle_inspector.connect(self.toggle_inspector) self.bridge.update_current_toc_nodes.connect(self.update_current_toc_nodes) self.bridge.toggle_full_screen.connect(self.toggle_full_screen) self.bridge.ask_for_open.connect(self.ask_for_open) @@ -337,7 +340,6 @@ class WebView(RestartingWebEngineView): if parent is not None: self.inspector = Inspector(parent.inspector_dock.toggleViewAction(), self) parent.inspector_dock.setWidget(self.inspector) - # QTimer.singleShot(300, lambda: (parent.inspector_dock.setVisible(True), parent.inspector_dock.setMinimumWidth(650))) def url_changed(self, url): if url.hasFragment(): diff --git a/src/pyj/read_book/overlay.pyj b/src/pyj/read_book/overlay.pyj index 90a0f20a43..c32838f9e3 100644 --- a/src/pyj/read_book/overlay.pyj +++ b/src/pyj/read_book/overlay.pyj @@ -269,6 +269,12 @@ class MainOverlay: if full_screen_actions.length: actions_div.appendChild(E.ul(*full_screen_actions)) + if runtime.is_standalone_viewer: + actions_div.appendChild(E.ul( + ac(_('Inspector'), _('Show the content inspector'), + def(): self.overlay.hide(), ui_operations.toggle_inspector();, 'bug') + )) + container.appendChild(set_css(E.div(class_=MAIN_OVERLAY_TS_CLASS, # top section onclick=def (evt):evt.stopPropagation();, diff --git a/src/pyj/viewer-main.pyj b/src/pyj/viewer-main.pyj index 8b9a1a876b..17aab37162 100644 --- a/src/pyj/viewer-main.pyj +++ b/src/pyj/viewer-main.pyj @@ -255,6 +255,8 @@ if window is window.top: to_python.toggle_toc() ui_operations.toggle_bookmarks = def(): to_python.toggle_bookmarks() + ui_operations.toggle_inspector = def(): + to_python.toggle_inspector() ui_operations.update_current_toc_nodes = def(current_node_id, top_level_node_id): to_python.update_current_toc_nodes(current_node_id, top_level_node_id) ui_operations.toggle_full_screen = def():