From fa01bfbbad3809cb7a129ef90540200f4afde8db Mon Sep 17 00:00:00 2001 From: Florian Bruhin Date: Mon, 26 May 2014 15:35:05 +0200 Subject: [PATCH] Add per-tab inspector like dwb. This also means the webinspector will always be detached / in its own window. --- qutebrowser/app.py | 1 - qutebrowser/browser/commands.py | 24 ++++++++++++++++++++++++ qutebrowser/widgets/mainwindow.py | 29 ----------------------------- qutebrowser/widgets/webview.py | 2 ++ 4 files changed, 26 insertions(+), 30 deletions(-) diff --git a/qutebrowser/app.py b/qutebrowser/app.py index 15b14e63c..f02dc6c9b 100644 --- a/qutebrowser/app.py +++ b/qutebrowser/app.py @@ -342,7 +342,6 @@ class QuteBrowser(QApplication): # misc self.lastWindowClosed.connect(self.shutdown) tabs.quit.connect(self.shutdown) - tabs.currentChanged.connect(self.mainwindow.update_inspector) # status bar self.modeman.entered.connect(status.on_mode_entered) diff --git a/qutebrowser/browser/commands.py b/qutebrowser/browser/commands.py index 007c360a1..b12107ce3 100644 --- a/qutebrowser/browser/commands.py +++ b/qutebrowser/browser/commands.py @@ -25,6 +25,7 @@ from PyQt5.QtWidgets import QApplication from PyQt5.QtCore import Qt, QObject from PyQt5.QtGui import QClipboard from PyQt5.QtPrintSupport import QPrintDialog, QPrintPreviewDialog +from PyQt5.QtWebKitWidgets import QWebInspector import qutebrowser.commands.utils as cmdutils import qutebrowser.config.config as config @@ -625,6 +626,29 @@ class CommandDispatcher(QObject): url = quickmarks.get(name) self._tabs.tabopen(url, background=True) + @cmdutils.register(instance='mainwindow.tabs.cmd', name='inspector') + def toggle_inspector(self): + """Toggle the web inspector.""" + cur = self._tabs.currentWidget() + if cur.inspector is None: + if not config.get('webkit', 'developer-extras-enabled'): + message.error("Please enable developer-extras before using " + "the webinspector!") + return + cur.inspector = QWebInspector() + cur.inspector.setPage(cur.page_) + cur.inspector.show() + elif cur.inspector.isVisible(): + cur.inspector.hide() + else: + if not config.get('webkit', 'developer-extras-enabled'): + message.error("Please enable developer-extras before using " + "the webinspector!") + return + else: + cur.inspector.show() + + @cmdutils.register(instance='mainwindow.tabs.cmd', modes=['insert'], hide=True) def open_editor(self): diff --git a/qutebrowser/widgets/mainwindow.py b/qutebrowser/widgets/mainwindow.py index e4cf9da2e..e2ad3095a 100644 --- a/qutebrowser/widgets/mainwindow.py +++ b/qutebrowser/widgets/mainwindow.py @@ -22,7 +22,6 @@ from base64 import b64decode from PyQt5.QtCore import pyqtSlot, QRect, QPoint, QCoreApplication from PyQt5.QtWidgets import QWidget, QVBoxLayout -from PyQt5.QtWebKitWidgets import QWebInspector import qutebrowser.commands.utils as cmdutils import qutebrowser.config.config as config @@ -44,7 +43,6 @@ class MainWindow(QWidget): Attributes: tabs: The TabbedBrowser widget. status: The StatusBar widget. - inspector: The QWebInspector. _vbox: The main QVBoxLayout. """ @@ -74,9 +72,6 @@ class MainWindow(QWidget): self._vbox.addWidget(self.tabs) self.completion = CompletionView(self) - self.inspector = QWebInspector() - self.inspector.hide() - self._vbox.addWidget(self.inspector) self.status = StatusBar() self._vbox.addWidget(self.status) @@ -111,30 +106,6 @@ class MainWindow(QWidget): bottomright = self.status.geometry().topRight() self.completion.setGeometry(QRect(topleft, bottomright)) - @cmdutils.register(instance='mainwindow', name='inspector') - def toggle_inspector(self): - """Toggle the web inspector.""" - if self.inspector.isVisible(): - self.inspector.hide() - self.resize_completion() - else: - if not config.get('webkit', 'developer-extras-enabled'): - self.status.disp_error("Please enable developer-extras before " - "using the webinspector!") - else: - self.inspector.show() - self.resize_completion() - - @pyqtSlot() - def update_inspector(self): - """Update the web inspector if the page changed.""" - self.inspector.setPage(self.tabs.currentWidget().page()) - if self.inspector.isVisible(): - # For some odd reason, we need to do this so the inspector actually - # shows some content... - self.inspector.hide() - self.inspector.show() - @cmdutils.register(instance='mainwindow', name=['quit', 'q'], nargs=0) def close(self): """Extend close() so we can register it as a command.""" diff --git a/qutebrowser/widgets/webview.py b/qutebrowser/widgets/webview.py index f0c92b7b4..ab26bd5af 100644 --- a/qutebrowser/widgets/webview.py +++ b/qutebrowser/widgets/webview.py @@ -55,6 +55,7 @@ class WebView(QWebView): work. progress: loading progress of this page. scroll_pos: The current scroll position as (x%, y%) tuple. + inspector: The QWebInspector used for this webview. _url_text: The current URL as string. Accessed via url_text property. _load_status: loading status of this page (index into LoadStatus) @@ -86,6 +87,7 @@ class WebView(QWebView): super().__init__(parent) self._load_status = LoadStatus.none self.tabbedbrowser = parent + self.inspector = None self.scroll_pos = (-1, -1) self._old_scroll_pos = (-1, -1) self._shutdown_callback = None