Add an action to show the chrome dev tools in the viewer

This commit is contained in:
Kovid Goyal 2019-08-14 21:27:33 +05:30
parent 5ba3eb19db
commit 4476d63b27
No known key found for this signature in database
GPG Key ID: 06BC317B515ACE7C
4 changed files with 20 additions and 2 deletions

View File

@ -85,18 +85,25 @@ class EbookViewer(MainWindow):
self.bookmarks_widget.activated.connect(self.bookmark_activated) self.bookmarks_widget.activated.connect(self.bookmark_activated)
self.bookmarks_dock.setWidget(w) 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 = WebView(self)
self.web_view.cfi_changed.connect(self.cfi_changed) self.web_view.cfi_changed.connect(self.cfi_changed)
self.web_view.reload_book.connect(self.reload_book) self.web_view.reload_book.connect(self.reload_book)
self.web_view.toggle_toc.connect(self.toggle_toc) self.web_view.toggle_toc.connect(self.toggle_toc)
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.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)
self.setCentralWidget(self.web_view) self.setCentralWidget(self.web_view)
self.restore_state() self.restore_state()
def toggle_inspector(self):
visible = self.inspector_dock.toggleViewAction().isChecked()
self.inspector_dock.setVisible(not visible)
# IPC {{{ # IPC {{{
def handle_commandline_arg(self, arg): def handle_commandline_arg(self, arg):
if arg: if arg:
@ -290,6 +297,7 @@ class EbookViewer(MainWindow):
self.restoreGeometry(geom) self.restoreGeometry(geom)
if state: if state:
self.restoreState(state, self.MAIN_WINDOW_STATE_VERSION) self.restoreState(state, self.MAIN_WINDOW_STATE_VERSION)
self.inspector_dock.setVisible(False)
def closeEvent(self, ev): def closeEvent(self, ev):
try: try:

View File

@ -187,6 +187,7 @@ class ViewerBridge(Bridge):
reload_book = from_js() reload_book = from_js()
toggle_toc = from_js() toggle_toc = from_js()
toggle_bookmarks = from_js() toggle_bookmarks = from_js()
toggle_inspector = 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)
@ -305,6 +306,7 @@ class WebView(RestartingWebEngineView):
reload_book = pyqtSignal() reload_book = pyqtSignal()
toggle_toc = pyqtSignal() toggle_toc = pyqtSignal()
toggle_bookmarks = pyqtSignal() toggle_bookmarks = pyqtSignal()
toggle_inspector = 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)
@ -325,6 +327,7 @@ class WebView(RestartingWebEngineView):
self.bridge.reload_book.connect(self.reload_book) self.bridge.reload_book.connect(self.reload_book)
self.bridge.toggle_toc.connect(self.toggle_toc) self.bridge.toggle_toc.connect(self.toggle_toc)
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.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)
@ -337,7 +340,6 @@ class WebView(RestartingWebEngineView):
if parent is not None: if parent is not None:
self.inspector = Inspector(parent.inspector_dock.toggleViewAction(), self) self.inspector = Inspector(parent.inspector_dock.toggleViewAction(), self)
parent.inspector_dock.setWidget(self.inspector) 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): def url_changed(self, url):
if url.hasFragment(): if url.hasFragment():

View File

@ -269,6 +269,12 @@ class MainOverlay:
if full_screen_actions.length: if full_screen_actions.length:
actions_div.appendChild(E.ul(*full_screen_actions)) 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 container.appendChild(set_css(E.div(class_=MAIN_OVERLAY_TS_CLASS, # top section
onclick=def (evt):evt.stopPropagation();, onclick=def (evt):evt.stopPropagation();,

View File

@ -255,6 +255,8 @@ if window is window.top:
to_python.toggle_toc() to_python.toggle_toc()
ui_operations.toggle_bookmarks = def(): ui_operations.toggle_bookmarks = def():
to_python.toggle_bookmarks() 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): 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) to_python.update_current_toc_nodes(current_node_id, top_level_node_id)
ui_operations.toggle_full_screen = def(): ui_operations.toggle_full_screen = def():