Ebook viewer: remember inspector windows size

E-book viewer: Remember the size of the "Inspect" window used to examine
the book's code. Fixes #1245068 [Feature request: web inspector window size and font size](https://bugs.launchpad.net/calibre/+bug/1245068)
This commit is contained in:
Kovid Goyal 2013-10-27 09:49:21 +05:30
parent 9d5ea30749
commit bf686caf97
2 changed files with 60 additions and 2 deletions

View File

@ -25,6 +25,7 @@ from calibre.gui2.viewer.position import PagePosition
from calibre.gui2.viewer.config import config, ConfigDialog, load_themes from calibre.gui2.viewer.config import config, ConfigDialog, load_themes
from calibre.gui2.viewer.image_popup import ImagePopup from calibre.gui2.viewer.image_popup import ImagePopup
from calibre.gui2.viewer.table_popup import TablePopup from calibre.gui2.viewer.table_popup import TablePopup
from calibre.gui2.viewer.inspector import WebInspector
from calibre.ebooks.oeb.display.webview import load_html from calibre.ebooks.oeb.display.webview import load_html
from calibre.constants import isxp, iswindows from calibre.constants import isxp, iswindows
# }}} # }}}
@ -479,6 +480,7 @@ class DocumentView(QWebView): # {{{
self.document = Document(self.shortcuts, parent=self, self.document = Document(self.shortcuts, parent=self,
debug_javascript=debug_javascript) debug_javascript=debug_javascript)
self.setPage(self.document) self.setPage(self.document)
self.inspector = WebInspector(self, self.document)
self.manager = None self.manager = None
self._reference_mode = False self._reference_mode = False
self._ignore_scrollbar_signals = False self._ignore_scrollbar_signals = False
@ -672,8 +674,7 @@ class DocumentView(QWebView): # {{{
menu.addAction(self.manager.action_font_size_smaller) menu.addAction(self.manager.action_font_size_smaller)
menu.addSeparator() menu.addSeparator()
inspectAction = self.pageAction(self.document.InspectElement) menu.addAction(_('Inspect'), self.inspect)
menu.addAction(inspectAction)
if not text and img.isNull() and self.manager is not None: if not text and img.isNull() and self.manager is not None:
menu.addSeparator() menu.addSeparator()
@ -686,6 +687,11 @@ class DocumentView(QWebView): # {{{
menu.exec_(ev.globalPos()) menu.exec_(ev.globalPos())
def inspect(self):
self.inspector.show()
self.inspector.raise_()
self.pageAction(self.document.InspectElement).trigger()
def lookup(self, *args): def lookup(self, *args):
if self.manager is not None: if self.manager is not None:
t = unicode(self.selectedText()).strip() t = unicode(self.selectedText()).strip()

View File

@ -0,0 +1,52 @@
#!/usr/bin/env python
# vim:fileencoding=utf-8
from __future__ import (unicode_literals, division, absolute_import,
print_function)
__license__ = 'GPL v3'
__copyright__ = '2013, Kovid Goyal <kovid at kovidgoyal.net>'
from PyQt4.Qt import QDialog, QDialogButtonBox, QVBoxLayout, QIcon
from PyQt4.QtWebKit import QWebInspector
from calibre.gui2 import gprefs
class WebInspector(QDialog):
def __init__(self, parent, page):
QDialog.__init__(self, parent)
self.setWindowTitle(_('Inspect book code'))
self.setWindowIcon(QIcon(I('debug.png')))
l = QVBoxLayout()
self.setLayout(l)
self.inspector = QWebInspector(self)
self.inspector.setPage(page)
l.addWidget(self.inspector)
self.bb = bb = QDialogButtonBox(QDialogButtonBox.Close)
l.addWidget(bb)
bb.accepted.connect(self.accept)
bb.rejected.connect(self.reject)
self.resize(self.sizeHint())
geom = gprefs.get('viewer_inspector_geom', None)
if geom is not None:
self.restoreGeometry(geom)
def save_geometry(self):
gprefs['viewer_inspector_geom'] = bytearray(self.saveGeometry())
def closeEvent(self, ev):
self.save_geometry()
return QDialog.closeEvent(self, ev)
def accept(self):
self.save_geometry()
QDialog.accept(self)
def reject(self):
self.save_geometry()
QDialog.reject(self)