class WebView(QWebView): def __init__(self, parent=None): QWebView.__init__(self, parent) self.inspector = QWebInspector(self) w = QApplication.instance().desktop().availableGeometry(self).width() self._size_hint = QSize(int(w / 3), int(w / 2)) self._page = WebPage(self) self.setPage(self._page) self.inspector.setPage(self._page) self.clear() def sizeHint(self): return self._size_hint def refresh(self): self.pageAction(self.page().Reload).trigger() @dynamic_property def scroll_pos(self): def fget(self): mf = self.page().mainFrame() return (mf.scrollBarValue(Qt.Horizontal), mf.scrollBarValue(Qt.Vertical)) def fset(self, val): mf = self.page().mainFrame() mf.setScrollBarValue(Qt.Horizontal, val[0]) mf.setScrollBarValue(Qt.Vertical, val[1]) return property(fget=fget, fset=fset) def clear(self): self.setHtml( _(''' <h3>Live preview</h3> <p>Here you will see a live preview of the HTML file you are currently editing. The preview will update automatically as you make changes. <p style="font-size:x-small; color: gray">Note that this is a quick preview only, it is not intended to simulate an actual ebook reader. Some aspects of your ebook will not work, such as, page breaks, page margins and embedded fonts that use font name aliasing. ''')) def inspect(self): self.inspector.parent().show() self.inspector.parent().raise_() self.pageAction(self.page().InspectElement).trigger() def contextMenuEvent(self, ev): menu = QMenu(self) ca = self.pageAction(QWebPage.Copy) if ca.isEnabled(): menu.addAction(ca) menu.addAction(actions['reload-preview']) menu.addAction(QIcon(I('debug.png')), _('Inspect element'), self.inspect) menu.exec_(ev.globalPos())
class WebView(QWebView): def __init__(self, parent=None): QWebView.__init__(self, parent) self.inspector = QWebInspector(self) w = QApplication.instance().desktop().availableGeometry(self).width() self._size_hint = QSize(int(w/3), int(w/2)) self._page = WebPage(self) self.setPage(self._page) self.inspector.setPage(self._page) self.clear() def sizeHint(self): return self._size_hint def refresh(self): self.pageAction(self.page().Reload).trigger() @dynamic_property def scroll_pos(self): def fget(self): mf = self.page().mainFrame() return (mf.scrollBarValue(Qt.Horizontal), mf.scrollBarValue(Qt.Vertical)) def fset(self, val): mf = self.page().mainFrame() mf.setScrollBarValue(Qt.Horizontal, val[0]) mf.setScrollBarValue(Qt.Vertical, val[1]) return property(fget=fget, fset=fset) def clear(self): self.setHtml(_( ''' <h3>Live preview</h3> <p>Here you will see a live preview of the HTML file you are currently editing. The preview will update automatically as you make changes. <p style="font-size:x-small; color: gray">Note that this is a quick preview only, it is not intended to simulate an actual ebook reader. Some aspects of your ebook will not work, such as, page breaks, page margins and embedded fonts that use font name aliasing. ''')) def inspect(self): self.inspector.parent().show() self.inspector.parent().raise_() self.pageAction(self.page().InspectElement).trigger() def contextMenuEvent(self, ev): menu = QMenu(self) ca = self.pageAction(QWebPage.Copy) if ca.isEnabled(): menu.addAction(ca) menu.addAction(actions['reload-preview']) menu.addAction(QIcon(I('debug.png')), _('Inspect element'), self.inspect) menu.exec_(ev.globalPos())
class WebView(QWebView): def __init__(self, parent=None): QWebView.__init__(self, parent) self.inspector = QWebInspector(self) w = QApplication.instance().desktop().availableGeometry(self).width() self._size_hint = QSize(int(w/3), int(w/2)) settings = self.page().settings() apply_settings(settings, config().parse()) settings.setMaximumPagesInCache(0) settings.setAttribute(settings.JavaEnabled, False) settings.setAttribute(settings.PluginsEnabled, False) settings.setAttribute(settings.PrivateBrowsingEnabled, True) settings.setAttribute(settings.JavascriptCanOpenWindows, False) settings.setAttribute(settings.JavascriptCanAccessClipboard, False) settings.setAttribute(settings.LinksIncludedInFocusChain, False) settings.setAttribute(settings.DeveloperExtrasEnabled, True) settings.setDefaultTextEncoding('utf-8') self.page().setNetworkAccessManager(NetworkAccessManager(self)) self.page().setLinkDelegationPolicy(self.page().DelegateAllLinks) self.clear() def sizeHint(self): return self._size_hint def refresh(self): self.pageAction(self.page().Reload).trigger() @dynamic_property def scroll_pos(self): def fget(self): mf = self.page().mainFrame() return (mf.scrollBarValue(Qt.Horizontal), mf.scrollBarValue(Qt.Vertical)) def fset(self, val): mf = self.page().mainFrame() mf.setScrollBarValue(Qt.Horizontal, val[0]) mf.setScrollBarValue(Qt.Vertical, val[1]) return property(fget=fget, fset=fset) def clear(self): self.setHtml('<p>') def inspect(self): self.inspector.parent().show() self.inspector.parent().raise_() self.pageAction(self.page().InspectElement).trigger() def contextMenuEvent(self, ev): menu = QMenu(self) menu.addAction(actions['reload-preview']) menu.addAction(QIcon(I('debug.png')), _('Inspect element'), self.inspect) menu.exec_(ev.globalPos())
class WebView(QWebView): def __init__(self, parent=None): QWebView.__init__(self, parent) self.inspector = QWebInspector(self) w = QApplication.instance().desktop().availableGeometry(self).width() self._size_hint = QSize(int(w/3), int(w/2)) self._page = WebPage(self) self.setPage(self._page) self.inspector.setPage(self._page) self.clear() def sizeHint(self): return self._size_hint def refresh(self): self.pageAction(self.page().Reload).trigger() @dynamic_property def scroll_pos(self): def fget(self): mf = self.page().mainFrame() return (mf.scrollBarValue(Qt.Horizontal), mf.scrollBarValue(Qt.Vertical)) def fset(self, val): mf = self.page().mainFrame() mf.setScrollBarValue(Qt.Horizontal, val[0]) mf.setScrollBarValue(Qt.Vertical, val[1]) return property(fget=fget, fset=fset) def clear(self): self.setHtml('<p>') def inspect(self): self.inspector.parent().show() self.inspector.parent().raise_() self.pageAction(self.page().InspectElement).trigger() def contextMenuEvent(self, ev): menu = QMenu(self) menu.addAction(actions['reload-preview']) menu.addAction(QIcon(I('debug.png')), _('Inspect element'), self.inspect) menu.exec_(ev.globalPos())