Sun, 28 Feb 2016 12:48:12 +0100
Continued porting the web browser.
- fixed some inspector related issues
- added page menu action to translate and validate the page
--- a/Preferences/__init__.py Sat Feb 27 20:51:44 2016 +0100 +++ b/Preferences/__init__.py Sun Feb 28 12:48:12 2016 +0100 @@ -2686,6 +2686,15 @@ if key.startswith(("FlashCookie", "Pim", "VirusTotal")): return getHelp(key, prefClass) + # Web inspector stuff must come before initializing web engine settings + # because that starts the chromium web process + if key == "WebInspectorPort": + return int(prefClass.settings.value( + "WebBrowser/" + key, prefClass.webBrowserDefaults[key])) + elif key == "WebInspectorEnabled": + return toBool(prefClass.settings.value( + "WebBrowser/" + key, prefClass.webBrowserDefaults[key])) + if not prefClass.webEngineSettingsIntitialized: prefClass.initWebEngineSettingsDefaults()
--- a/WebBrowser/WebBrowserTabWidget.py Sat Feb 27 20:51:44 2016 +0100 +++ b/WebBrowser/WebBrowserTabWidget.py Sun Feb 28 12:48:12 2016 +0100 @@ -22,6 +22,7 @@ from E5Gui.E5Application import e5App from .WebBrowserView import WebBrowserView +from . import WebInspector import UI.PixmapCache @@ -65,10 +66,6 @@ self.__mainWindow = parent - if Preferences.getWebBrowser("WebInspectorEnabled"): - os.environ["QTWEBENGINE_REMOTE_DEBUGGING"] = \ - str(Preferences.getWebBrowser("WebInspectorPort")) - self.setUsesScrollButtons(True) self.setDocumentMode(True) self.setElideMode(Qt.ElideNone) @@ -490,7 +487,7 @@ self.__closedTabsManager.recordBrowser(browser, index) browser.closeWebInspector() - browser.home() + WebInspector.unregisterView(browser) self.removeTab(index) self.browserClosed.emit(browser) browser.deleteLater()
--- a/WebBrowser/WebBrowserView.py Sat Feb 27 20:51:44 2016 +0100 +++ b/WebBrowser/WebBrowserView.py Sun Feb 28 12:48:12 2016 +0100 @@ -153,12 +153,6 @@ self.grabGesture(Qt.PinchGesture) - def __del__(self): - """ - Special method doing some cleanup stuff. - """ - WebInspector.unregisterView(self) - ## def __addExternalBinding(self, frame=None): ## """ ## Private slot to add javascript bindings for adding search providers. @@ -601,10 +595,11 @@ ## if not hitTest.isContentEditable() and not hitTest.isContentSelected(): ## self.__menu.addAction(self.__mw.adBlockIcon().menuAction()) - self.__menu.addSeparator() - self.__menu.addAction( - UI.PixmapCache.getIcon("webInspector.png"), - self.tr("Inspect Element..."), self.__webInspector) + if Preferences.getWebBrowser("WebInspectorEnabled"): + self.__menu.addSeparator() + self.__menu.addAction( + UI.PixmapCache.getIcon("webInspector.png"), + self.tr("Inspect Element..."), self.__webInspector) if not self.__menu.isEmpty(): pos = evt.globalPos() @@ -840,19 +835,6 @@ self.tr("Dictionary"), self.__openLinkInNewTab)\ .setData(wiktionaryUrl) menu.addSeparator() -## QString langCode = mApp->currentLanguage().left(2).toUtf8(); -## QUrl googleTranslateUrl = QUrl(QString("https://translate.google.com/#auto/%1/%2").arg(langCode, selectedText)); -## Action* gtwact = new Action(QIcon(":icons/sites/translate.png"), tr("Google Translate")); -## gtwact->setData(googleTranslateUrl); -## connect(gtwact, SIGNAL(triggered()), this, SLOT(openUrlInSelectedTab())); -## connect(gtwact, SIGNAL(ctrlTriggered()), this, SLOT(openUrlInBackgroundTab())); -## menu->addAction(gtwact); -## -## Action* dictact = new Action(QIcon::fromTheme("accessories-dictionary"), tr("Dictionary")); -## dictact->setData(QUrl("http://" + (!langCode.isEmpty() ? langCode + "." : langCode) + "wiktionary.org/wiki/Special:Search?search=" + selectedText)); -## connect(dictact, SIGNAL(triggered()), this, SLOT(openUrlInSelectedTab())); -## connect(dictact, SIGNAL(ctrlTriggered()), this, SLOT(openUrlInBackgroundTab())); -## menu->addAction(dictact); guessedUrl = QUrl.fromUserInput(self.selectedText().strip()) if self.__isUrlValid(guessedUrl): @@ -910,14 +892,35 @@ # TODO: Site Info ## menu.addSeparator() ## menu.addAction(self.__mw.siteInfoAct) -## if (url().scheme() == QLatin1String("http") || url().scheme() == QLatin1String("https")) { -## const QUrl w3url = QUrl::fromEncoded("http://validator.w3.org/check?uri=" + QUrl::toPercentEncoding(url().toEncoded())); -## menu->addAction(QIcon(":icons/sites/w3.png"), tr("Validate page"), this, SLOT(openUrlInSelectedTab()))->setData(w3url); -## -## QByteArray langCode = mApp->currentLanguage().left(2).toUtf8(); -## const QUrl gturl = QUrl::fromEncoded("http://translate.google.com/translate?sl=auto&tl=" + langCode + "&u=" + QUrl::toPercentEncoding(url().toEncoded())); -## menu->addAction(QIcon(":icons/sites/translate.png"), tr("Translate page"), this, SLOT(openUrlInSelectedTab()))->setData(gturl); -## } + if self.url().scheme() in ["http", "https"]: + menu.addSeparator() + + w3url = QUrl.fromEncoded( + b"http://validator.w3.org/check?uri=" + + QUrl.toPercentEncoding(bytes(self.url().toEncoded()).decode())) + menu.addAction( + UI.PixmapCache.getIcon("w3.png"), + self.tr("Validate Page"), self.__openLinkInNewTab)\ + .setData(w3url) + + from .WebBrowserLanguagesDialog import WebBrowserLanguagesDialog + languages = Preferences.toList( + Preferences.Prefs.settings.value( + "WebBrowser/AcceptLanguages", + WebBrowserLanguagesDialog.defaultAcceptLanguages())) + if languages: + language = languages[0] + langCode = language.split("[")[1][:2] + googleTranslatorUrl = QUrl.fromEncoded( + b"http://translate.google.com/translate?sl=auto&tl=" + + langCode.encode() + + b"&u=" + + QUrl.toPercentEncoding( + bytes(self.url().toEncoded()).decode())) + menu.addAction( + UI.PixmapCache.getIcon("translate.png"), + self.tr("Google Translate"), self.__openLinkInNewTab)\ + .setData(googleTranslatorUrl) def __checkForForm(self, act, pos): """ @@ -1121,10 +1124,8 @@ self.__inspector = WebInspector() self.__inspector.setView(self, True) self.__inspector.show() - elif self.__inspector.isVisible(): - self.__inspector.hide() else: - self.__inspector.show() + self.closeWebInspector() def closeWebInspector(self): """ @@ -1133,6 +1134,7 @@ if self.__inspector is not None: if self.__inspector.isVisible(): self.__inspector.hide() + WebInspector.unregisterView(self.__inspector) self.__inspector.deleteLater() self.__inspector = None @@ -1388,8 +1390,6 @@ self._mousePressEvent(evt) elif evt.type() == QEvent.MouseButtonRelease: self._mouseReleaseEvent(evt) -## elif evt.type() == QEvent.MouseMove: -## self.__mouseMoveEvent(evt) elif evt.type() == QEvent.Wheel: self._wheelEvent(evt) elif evt.type() == QEvent.Gesture: @@ -1403,7 +1403,6 @@ if evt.type() in [QEvent.KeyPress, QEvent.KeyRelease, QEvent.MouseButtonPress, QEvent.MouseButtonRelease, -## QEvent.MouseMove, QEvent.Wheel, QEvent.Gesture]: return True @@ -2119,11 +2118,3 @@ ## return True ## ## return False - - ###################### - - def renderWidgetPixmap(self): - return self.__rwhvqt.grabFramebuffer() - - def repaintRenderWidget(self): - self.__rwhvqt.repaint()
--- a/WebBrowser/WebBrowserWindow.py Sat Feb 27 20:51:44 2016 +0100 +++ b/WebBrowser/WebBrowserWindow.py Sun Feb 28 12:48:12 2016 +0100 @@ -137,6 +137,11 @@ if self.__initShortcutsOnly: self.__initActions() else: + if Preferences.getWebBrowser("WebInspectorEnabled"): + os.putenv( + "QTWEBENGINE_REMOTE_DEBUGGING", + str(Preferences.getWebBrowser("WebInspectorPort"))) + self.webProfile(private) from .SearchWidget import SearchWidget @@ -258,12 +263,10 @@ self.__initMenus() self.__initToolbars() + syncMgr = self.syncManager() + syncMgr.syncMessage.connect(self.statusBar().showMessage) + syncMgr.syncError.connect(self.statusBar().showMessage) - # TODO: Sync -## syncMgr = self.syncManager() -## syncMgr.syncMessage.connect(self.statusBar().showMessage) -## syncMgr.syncError.connect(self.statusBar().showMessage) -## self.__tabWidget.newBrowser(home) self.__tabWidget.currentBrowser().setFocus() @@ -2483,8 +2486,8 @@ ## self.userAgentsManager().close() ## ## self.speedDial().close() -## -## self.syncManager().close() + + self.syncManager().close() ZoomManager.instance().close()
--- a/WebBrowser/WebInspector.py Sat Feb 27 20:51:44 2016 +0100 +++ b/WebBrowser/WebInspector.py Sun Feb 28 12:48:12 2016 +0100 @@ -47,12 +47,6 @@ self.page().windowCloseRequested.connect(self.close) self.page().loadFinished.connect(self.__loadFinished) - def __del__(self): - """ - Special method doing some cleanup stuff. - """ - unregisterView(self) - def closeEvent(self, evt): """ Protected method to save the geometry when closed. @@ -155,6 +149,9 @@ @param view reference to the view @type WebBrowserView """ + if _VIEWS is None: + return + _VIEWS.insert(0, view) @@ -165,6 +162,9 @@ @param view reference to the view @type WebBrowserView """ + if _VIEWS is None: + return + if view in _VIEWS: _VIEWS.remove(view) @@ -176,6 +176,9 @@ @param view reference to the view @type WebBrowserView """ + if _VIEWS is None: + return + if view in _VIEWS: _VIEWS.remove(view) _VIEWS.insert(0, view)
--- a/eric6_browser.py Sat Feb 27 20:51:44 2016 +0100 +++ b/eric6_browser.py Sun Feb 28 12:48:12 2016 +0100 @@ -67,6 +67,10 @@ sys.path.insert(2, os.path.join(os.path.dirname(__file__), "ThirdParty", "Pygments")) +##import Preferences +##if Preferences.getWebBrowser("WebInspectorEnabled"): +## os.environ["QTWEBENGINE_REMOTE_DEBUGGING"] = \ +## str(Preferences.getWebBrowser("WebInspectorPort")) from PyQt5 import QtWebEngineWidgets # __IGNORE_WARNING__ import Globals