diff --git a/qutebrowser/browser/commands.py b/qutebrowser/browser/commands.py index 1297168d6..04408cdcf 100644 --- a/qutebrowser/browser/commands.py +++ b/qutebrowser/browser/commands.py @@ -30,14 +30,14 @@ from PyQt5.QtWidgets import QApplication, QTabBar from PyQt5.QtCore import Qt, QUrl from PyQt5.QtGui import QClipboard from PyQt5.QtPrintSupport import QPrintDialog, QPrintPreviewDialog -from PyQt5.QtWebKitWidgets import QWebPage, QWebInspector +from PyQt5.QtWebKitWidgets import QWebPage import pygments import pygments.lexers import pygments.formatters from qutebrowser.commands import userscripts, cmdexc, cmdutils from qutebrowser.config import config, configexc -from qutebrowser.browser import webelem +from qutebrowser.browser import webelem, inspector from qutebrowser.utils import (message, usertypes, log, qtutils, urlutils, objreg, utils) from qutebrowser.misc import editor @@ -931,7 +931,7 @@ class CommandDispatcher: raise cmdexc.CommandError( "Please enable developer-extras before using the " "webinspector!") - cur.inspector = QWebInspector() + cur.inspector = inspector.WebInspector() cur.inspector.setPage(cur.page()) cur.inspector.show() elif cur.inspector.isVisible(): diff --git a/qutebrowser/browser/inspector.py b/qutebrowser/browser/inspector.py new file mode 100644 index 000000000..3dfdc6235 --- /dev/null +++ b/qutebrowser/browser/inspector.py @@ -0,0 +1,58 @@ +# vim: ft=python fileencoding=utf-8 sts=4 sw=4 et: + +# Copyright 2015 Florian Bruhin (The Compiler) +# +# This file is part of qutebrowser. +# +# qutebrowser is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# qutebrowser is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with qutebrowser. If not, see . + +"""Customized QWebInspector.""" + +import base64 + +from PyQt5.QtWebKitWidgets import QWebInspector + +from qutebrowser.utils import log, objreg + + +class WebInspector(QWebInspector): + + def __init__(self, parent=None): + super().__init__(parent) + self._load_state_geometry() + + def closeEvent(self, e): + state_config = objreg.get('state-config') + data = bytes(self.saveGeometry()) + geom = base64.b64encode(data).decode('ASCII') + state_config['geometry']['inspector'] = geom + super().closeEvent(e) + + def _load_state_geometry(self): + """Load the geometry from the state file.""" + state_config = objreg.get('state-config') + try: + data = state_config['geometry']['inspector'] + geom = base64.b64decode(data, validate=True) + except KeyError: + # First start + pass + except binascii.Error: + log.misc.exception("Error while reading geometry") + pass + else: + log.init.debug("Loading geometry from {}".format(geom)) + ok = self.restoreGeometry(geom) + if not ok: + log.init.warning("Error while loading geometry.")