Continued porting the web browser. QtWebEngine

Mon, 28 Mar 2016 17:04:18 +0200

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Mon, 28 Mar 2016 17:04:18 +0200
branch
QtWebEngine
changeset 4905
09f38f85a3af
parent 4904
ea8f13f76d26
child 4906
939ff20f712d

Continued porting the web browser.

- did some code cleanup

Preferences/ConfigurationPages/WebBrowserPage.py file | annotate | diff | comparison | revisions
Preferences/ConfigurationPages/WebBrowserPage.ui file | annotate | diff | comparison | revisions
WebBrowser/GreaseMonkey/GreaseMonkeyManager.py file | annotate | diff | comparison | revisions
WebBrowser/UrlBar/UrlBar.py file | annotate | diff | comparison | revisions
WebBrowser/WebBrowserPage.py file | annotate | diff | comparison | revisions
WebBrowser/WebBrowserView.py file | annotate | diff | comparison | revisions
WebBrowser/WebBrowserWindow.py file | annotate | diff | comparison | revisions
--- a/Preferences/ConfigurationPages/WebBrowserPage.py	Mon Mar 28 16:34:22 2016 +0200
+++ b/Preferences/ConfigurationPages/WebBrowserPage.py	Mon Mar 28 17:04:18 2016 +0200
@@ -46,10 +46,6 @@
         defaultSchemes = ["file://", "http://", "https://"]
         self.defaultSchemeCombo.addItems(defaultSchemes)
         
-        # TODO: Click2Flash
-##        self.clickToFlashCheckBox.setIcon(
-##            UI.PixmapCache.getIcon("flashBlock.png"))
-        
         # set initial values
         self.singleHelpWindowCheckBox.setChecked(
             Preferences.getWebBrowser("SingleWebBrowserWindow"))
@@ -70,16 +66,13 @@
             Preferences.getWebBrowser("JavaScriptEnabled"))
         self.jsOpenWindowsCheckBox.setChecked(
             Preferences.getWebBrowser("JavaScriptCanOpenWindows"))
-        # TODO: Qt 5.6
+        # TODO: Qt 5.7?
 ##        self.jsCloseWindowsCheckBox.setChecked(
 ##            Preferences.getWebBrowser("JavaScriptCanCloseWindows"))
         self.jsClipboardCheckBox.setChecked(
             Preferences.getWebBrowser("JavaScriptCanAccessClipboard"))
         self.pluginsCheckBox.setChecked(
             Preferences.getWebBrowser("PluginsEnabled"))
-        # TODO: Click2Flash
-##        self.clickToFlashCheckBox.setChecked(
-##            Preferences.getWebBrowser("ClickToFlashEnabled"))
         self.doNotTrackCheckBox.setChecked(
             Preferences.getWebBrowser("DoNotTrack"))
         self.sendRefererCheckBox.setChecked(
@@ -145,9 +138,8 @@
         self.webInspectorPortSpinBox.setValue(
             Preferences.getWebBrowser("WebInspectorPort"))
         
-        # TODO: Configuration: finish these with Qt 5.6
+        # TODO: Qt 5.7?
         # Hide entries not yet supported
-        self.accessKeysCheckBox.hide()
         self.jsCloseWindowsCheckBox.hide()
     
     def save(self):
@@ -182,7 +174,7 @@
         Preferences.setWebBrowser(
             "JavaScriptCanOpenWindows",
             self.jsOpenWindowsCheckBox.isChecked())
-        # TODO: Qt 5.6
+        # TODO: Qt 5.7?
 ##        Preferences.setWebBrowser(
 ##            "JavaScriptCanCloseWindows",
 ##            self.jsCloseWindowsCheckBox.isChecked())
@@ -192,10 +184,6 @@
         Preferences.setWebBrowser(
             "PluginsEnabled",
             self.pluginsCheckBox.isChecked())
-        # TODO: Click2Flash
-##        Preferences.setWebBrowser(
-##            "ClickToFlashEnabled",
-##            self.clickToFlashCheckBox.isChecked())
         Preferences.setWebBrowser(
             "DoNotTrack",
             self.doNotTrackCheckBox.isChecked())
--- a/Preferences/ConfigurationPages/WebBrowserPage.ui	Mon Mar 28 16:34:22 2016 +0200
+++ b/Preferences/ConfigurationPages/WebBrowserPage.ui	Mon Mar 28 17:04:18 2016 +0200
@@ -108,14 +108,6 @@
        </widget>
       </item>
      </layout>
-     <zorder>singleHelpWindowCheckBox</zorder>
-     <zorder>webSuggestionsCheckBox</zorder>
-     <zorder>saveGeometryCheckBox</zorder>
-     <zorder>showTabPreviews</zorder>
-     <zorder>errorPageCheckBox</zorder>
-     <zorder>scrollingCheckBox</zorder>
-     <zorder>startupGroupBox</zorder>
-     <zorder>fullscreenCheckBox</zorder>
     </widget>
    </item>
    <item>
@@ -574,16 +566,6 @@
         </property>
        </widget>
       </item>
-      <item row="1" column="0">
-       <widget class="QCheckBox" name="accessKeysCheckBox">
-        <property name="toolTip">
-         <string>Select to enable support for access keys</string>
-        </property>
-        <property name="text">
-         <string>Enable access keys</string>
-        </property>
-       </widget>
-      </item>
      </layout>
     </widget>
    </item>
@@ -691,7 +673,6 @@
   <tabstop>languageCombo</tabstop>
   <tabstop>spatialCheckBox</tabstop>
   <tabstop>linksInFocusChainCheckBox</tabstop>
-  <tabstop>accessKeysCheckBox</tabstop>
   <tabstop>webInspectorGroup</tabstop>
   <tabstop>webInspectorPortSpinBox</tabstop>
  </tabstops>
--- a/WebBrowser/GreaseMonkey/GreaseMonkeyManager.py	Mon Mar 28 16:34:22 2016 +0200
+++ b/WebBrowser/GreaseMonkey/GreaseMonkeyManager.py	Mon Mar 28 17:04:18 2016 +0200
@@ -21,7 +21,6 @@
 from .GreaseMonkeyUrlInterceptor import GreaseMonkeyUrlInterceptor
 
 
-# TODO: GreaseMonkey: needs testing with Qt 5.6
 class GreaseMonkeyManager(QObject):
     """
     Class implementing the manager for GreaseMonkey scripts.
@@ -81,14 +80,6 @@
         downloader = GreaseMonkeyDownloader(url, self)
         downloader.finished.connect(self.__downloaderFinished)
         self.__downloaders.append(downloader)
-##void GM_Manager::downloadScript(const QUrl &url)
-##{
-##    QMetaObject::invokeMethod(this, "doDownloadScript", Qt::QueuedConnection, Q_ARG(QUrl, url));
-##}
-##void GM_Manager::doDownloadScript(const QUrl &url)
-##{
-##    new GM_Downloader(url, this);
-##}
     
     def __downloaderFinished(self):
         """
--- a/WebBrowser/UrlBar/UrlBar.py	Mon Mar 28 16:34:22 2016 +0200
+++ b/WebBrowser/UrlBar/UrlBar.py	Mon Mar 28 17:04:18 2016 +0200
@@ -13,14 +13,9 @@
 except NameError:
     pass
 
-from PyQt5.QtCore import pyqtSlot, Qt, QPointF, QUrl, QDateTime, QTimer, \
-    qVersion
+from PyQt5.QtCore import pyqtSlot, Qt, QPointF, QUrl, QDateTime, QTimer
 from PyQt5.QtGui import QColor, QPalette, QLinearGradient, QIcon
 from PyQt5.QtWidgets import QDialog, QApplication
-try:
-    from PyQt5.QtNetwork import QSslCertificate     # __IGNORE_EXCEPTION__
-except ImportError:
-    QSslCertificate = None      # __IGNORE_WARNING__
 from PyQt5.QtWebEngineWidgets import QWebEnginePage
 
 from E5Gui.E5LineEdit import E5LineEdit
@@ -29,11 +24,8 @@
 from WebBrowser.WebBrowserWindow import WebBrowserWindow
 
 from .FavIconLabel import FavIconLabel
-##from .SslLabel import SslLabel
-##
 import UI.PixmapCache
 import Preferences
-import Utilities
 
 
 class UrlBar(E5LineEdit):
@@ -62,11 +54,6 @@
         self.__favicon = FavIconLabel(self)
         self.addWidget(self.__favicon, E5LineEdit.LeftSide)
         
-        # TODO: SSL
-##        self.__sslLabel = SslLabel(self)
-##        self.addWidget(self.__sslLabel, E5LineEdit.LeftSide)
-##        self.__sslLabel.setVisible(False)
-        
         self.__rssButton = E5LineEditButton(self)
         self.__rssButton.setIcon(UI.PixmapCache.getIcon("rss16.png"))
         self.addWidget(self.__rssButton, E5LineEdit.RightSide)
@@ -108,9 +95,6 @@
         self.__browser.loadProgress.connect(self.update)
         self.__browser.loadFinished.connect(self.__loadFinished)
         self.__browser.loadStarted.connect(self.__loadStarted)
-        
-        # TODO: SSL
-##        self.__sslLabel.clicked.connect(self.__browser.page().showSslInfo)
     
     def browser(self):
         """
@@ -139,9 +123,6 @@
         """
         Private slot to perform actions before the page is loaded.
         """
-        pass
-        # TODO: SSL
-##        self.__sslLabel.setVisible(False)
         self.__bookmarkButton.setVisible(False)
         self.__rssButton.setVisible(False)
     
@@ -178,36 +159,6 @@
         
         if ok:
             QTimer.singleShot(0, self.__setRssButton)
-        
-        # TODO: SSL certificate stuff (if possible)
-##        if ok and \
-##           self.__browser.url().scheme() == "https" and \
-##           QSslCertificate is not None:
-##            sslInfo = self.__browser.page().getSslCertificate()
-##            if sslInfo is not None:
-##                org = Utilities.decodeString(", ".join(
-##                    sslInfo.subjectInfo(QSslCertificate.Organization)))
-##                if org == "":
-##                    cn = Utilities.decodeString(", ".join(
-##                        sslInfo.subjectInfo(
-##                            QSslCertificate.CommonName)))
-##                    if cn != "":
-##                        org = cn.split(".", 1)[1]
-##                    if org == "":
-##                        org = self.tr("Unknown")
-##                self.__sslLabel.setText(" {0} ".format(org))
-##                self.__sslLabel.setVisible(True)
-##                valid = not sslInfo.isBlacklisted()
-##                if valid:
-##                    config = self.__browser.page().getSslConfiguration()
-##                    if config is None or config.sessionCipher().isNull():
-##                        valid = False
-##                self.__sslLabel.setValidity(valid)
-##                return
-##        
-##        self.__sslLabel.setVisible(False)
-##        except RuntimeError:
-##            pass
     
     def __textChanged(self, txt):
         """
@@ -272,22 +223,12 @@
             progress = self.__browser.progress()
             if progress == 0 or progress == 100:
                 if self.__browser.url().scheme() == "https":
-##                    if QSslCertificate is not None:
-##                        if self.__browser.page().hasValidSslInfo():
-##                            backgroundColor = Preferences.getWebBrowser(
-##                                "SaveUrlColor")
-##                    else:
                     backgroundColor = Preferences.getWebBrowser(
                         "SaveUrlColor")
                 p.setBrush(QPalette.Base, backgroundColor)
                 p.setBrush(QPalette.Text, foregroundColor)
             else:
                 if self.__browser.url().scheme() == "https":
-##                    if QSslCertificate is not None:
-##                        if self.__browser.page().hasValidSslInfo():
-##                            backgroundColor = Preferences.getWebBrowser(
-##                                "SaveUrlColor")
-##                    else:
                     backgroundColor = Preferences.getWebBrowser(
                         "SaveUrlColor")
                 highlight = QApplication.palette().color(QPalette.Highlight)
--- a/WebBrowser/WebBrowserPage.py	Mon Mar 28 16:34:22 2016 +0200
+++ b/WebBrowser/WebBrowserPage.py	Mon Mar 28 17:04:18 2016 +0200
@@ -40,12 +40,12 @@
 import Preferences
 import UI.PixmapCache
 import Globals
-
-try:
-    from PyQt5.QtNetwork import QSslCertificate
-    SSL_AVAILABLE = True
-except ImportError:
-    SSL_AVAILABLE = False
+##
+##try:
+##    from PyQt5.QtNetwork import QSslCertificate
+##    SSL_AVAILABLE = True
+##except ImportError:
+##    SSL_AVAILABLE = False
 
 
 class WebBrowserPage(QWebEnginePage):
@@ -77,8 +77,8 @@
 ##        self.__proxy.setPrimaryNetworkAccessManager(
 ##            WebBrowserWindow.networkManager())
 ##        self.setNetworkAccessManager(self.__proxy)
-        
-        self.__sslConfiguration = None
+##        
+##        self.__sslConfiguration = None
 ##        self.__proxy.finished.connect(self.__managerFinished)
 ##        
 ##        self.__adBlockedEntries = []
@@ -389,122 +389,32 @@
 ##                agent = QWebPage.userAgentForUrl(self, url)
 ##        return agent
 ##    
-    # TODO: SSL
-##    def __managerFinished(self, reply):
-##        """
-##        Private slot to handle a finished reply.
-##        
-##        This slot is used to get SSL related information for a reply.
-##        
-##        @param reply reference to the finished reply (QNetworkReply)
+##    def hasValidSslInfo(self):
 ##        """
-##        try:
-##            frame = reply.request().originatingObject()
-##        except AttributeError:
-##            frame = None
-##        
-##        mainFrameRequest = frame == self.mainFrame()
-##        
-##        if mainFrameRequest and \
-##           self.__sslConfiguration is not None and \
-##           reply.url() == self.mainFrame().url():
-##            self.__sslConfiguration = None
+##        Public method to check, if the page has a valid SSL certificate.
 ##        
-##        if reply.error() == QNetworkReply.NoError and \
-##           mainFrameRequest and \
-##           self.__sslConfiguration is None and \
-##           reply.url().scheme().lower() == "https" and \
-##           reply.url() == self.mainFrame().url():
-##            self.__sslConfiguration = reply.sslConfiguration()
-##            self.__sslConfiguration.url = QUrl(reply.url())
-##        
-##        if reply.error() == QNetworkReply.NoError and \
-##           mainFrameRequest and \
-##           reply.url() == self.mainFrame().url():
-##            modified = reply.header(QNetworkRequest.LastModifiedHeader)
-##            if modified and modified.isValid():
-##                manager = WebBrowserWindow.bookmarksManager()
-##                from .Bookmarks.BookmarkNode import BookmarkNode
-##                for bookmark in manager.bookmarksForUrl(reply.url()):
-##                    manager.setTimestamp(bookmark, BookmarkNode.TsModified,
-##                                         modified)
-    
-##    def getSslCertificate(self):
-##        """
-##        Public method to get a reference to the SSL certificate.
-##        
-##        @return amended SSL certificate (QSslCertificate)
+##        @return flag indicating a valid SSL certificate (boolean)
 ##        """
 ##        if self.__sslConfiguration is None:
-##            return None
-##        
-##        sslInfo = self.__sslConfiguration.peerCertificate()
-##        sslInfo.url = QUrl(self.__sslConfiguration.url)
-##        return sslInfo
-##    
-##    def getSslCertificateChain(self):
-##        """
-##        Public method to get a reference to the SSL certificate chain.
-##        
-##        @return SSL certificate chain (list of QSslCertificate)
-##        """
-##        if self.__sslConfiguration is None:
-##            return []
+##            return False
 ##        
-##        chain = self.__sslConfiguration.peerCertificateChain()
-##        return chain
-##    
-##    def getSslConfiguration(self):
-##        """
-##        Public method to return a reference to the current SSL configuration.
-##        
-##        @return reference to the SSL configuration in use (QSslConfiguration)
-##        """
-##        return self.__sslConfiguration
-##    
-##    def showSslInfo(self, pos):
-##        """
-##        Public slot to show some SSL information for the loaded page.
+##        certList = self.__sslConfiguration.peerCertificateChain()
+##        if not certList:
+##            return False
 ##        
-##        @param pos position to show the info at (QPoint)
-##        """
-##        if SSL_AVAILABLE and self.__sslConfiguration is not None:
-##            from E5Network.E5SslInfoWidget import E5SslInfoWidget
-##            widget = E5SslInfoWidget(
-##                self.mainFrame().url(), self.__sslConfiguration, self.view())
-##            widget.showAt(pos)
-##        else:
-##            E5MessageBox.warning(
-##                self.view(),
-##                self.tr("SSL Info"),
-##                self.tr("""This site does not contain SSL information."""))
-##    
-    def hasValidSslInfo(self):
-        """
-        Public method to check, if the page has a valid SSL certificate.
-        
-        @return flag indicating a valid SSL certificate (boolean)
-        """
-        if self.__sslConfiguration is None:
-            return False
-        
-        certList = self.__sslConfiguration.peerCertificateChain()
-        if not certList:
-            return False
-        
-        certificateDict = Globals.toDict(
-            Preferences.Prefs.settings.value("Ssl/CaCertificatesDict"))
-        for server in certificateDict:
-            localCAList = QSslCertificate.fromData(certificateDict[server])
-            for cert in certList:
-                if cert in localCAList:
-                    return True
-        
-        for cert in certList:
-            if cert.isBlacklisted():
-                return False
-        
-        return True
+##        certificateDict = Globals.toDict(
+##            Preferences.Prefs.settings.value("Ssl/CaCertificatesDict"))
+##        for server in certificateDict:
+##            localCAList = QSslCertificate.fromData(certificateDict[server])
+##            for cert in certList:
+##                if cert in localCAList:
+##                    return True
+##        
+##        for cert in certList:
+##            if cert.isBlacklisted():
+##                return False
+##        
+##        return True
     
 ##    @classmethod
 ##    def webPluginFactory(cls):
--- a/WebBrowser/WebBrowserView.py	Mon Mar 28 16:34:22 2016 +0200
+++ b/WebBrowser/WebBrowserView.py	Mon Mar 28 17:04:18 2016 +0200
@@ -40,13 +40,6 @@
 
 import Preferences
 import UI.PixmapCache
-##import Globals
-
-##try:
-##    from PyQt5.QtNetwork import QSslCertificate
-##    SSL_AVAILABLE = True
-##except ImportError:
-##    SSL_AVAILABLE = False
 
 
 class WebBrowserView(QWebEngineView):
@@ -133,15 +126,6 @@
         
         self.setAcceptDrops(True)
         
-        # TODO: Access Keys
-##        self.__enableAccessKeys = Preferences.getWebBrowser("AccessKeysEnabled")
-##        self.__accessKeysPressed = False
-##        self.__accessKeyLabels = []
-##        self.__accessKeyNodes = {}
-##        
-##        self.page().loadStarted.connect(self.__hideAccessKeys)
-##        self.page().scrollRequested.connect(self.__hideAccessKeys)
-        
         self.__rss = []
         
         self.__clickedFrame = None
@@ -1296,20 +1280,6 @@
                 evt.accept()
                 return
         
-        # TODO: Access Keys
-##        if self.__enableAccessKeys:
-##            self.__accessKeysPressed = (
-##                evt.modifiers() == Qt.ControlModifier and
-##                evt.key() == Qt.Key_Control)
-##            if not self.__accessKeysPressed:
-##                if self.__checkForAccessKey(evt):
-##                    self.__hideAccessKeys()
-##                    evt.accept()
-##                    return
-##                self.__hideAccessKeys()
-##            else:
-##                QTimer.singleShot(300, self.__accessKeyShortcut)
-        
         self.__ctrlPressed = (evt.key() == Qt.Key_Control)
         super(WebBrowserView, self).keyPressEvent(evt)
     
@@ -1319,10 +1289,6 @@
         
         @param evt reference to the key event (QKeyEvent)
         """
-        # TODO: Access Keys
-##        if self.__enableAccessKeys:
-##            self.__accessKeysPressed = evt.key() == Qt.Key_Control
-        
         self.__ctrlPressed = False
         super(WebBrowserView, self).keyReleaseEvent(evt)
     
@@ -1332,11 +1298,6 @@
         
         @param evt reference to the focus event (QFocusEvent)
         """
-        # TODO: Access Keys
-##        if self.__accessKeysPressed:
-##            self.__hideAccessKeys()
-##            self.__accessKeysPressed = False
-        
         super(WebBrowserView, self).focusOutEvent(evt)
     
     # TODO: Gestures: Obsoleted by eventFilter() (?)
@@ -1565,12 +1526,6 @@
         
         QTimer.singleShot(200, self.__renderPreview)
         
-        # TODO: ClickToFlash (?)
-##        if Preferences.getWebBrowser("ClickToFlashEnabled"):
-##            # this is a hack to make the ClickToFlash button appear
-##            self.zoomIn()
-##            self.zoomOut()
-        
         from .ZoomManager import ZoomManager
         zoomValue = ZoomManager.instance().zoomValue(self.url())
         self.setZoomValue(zoomValue)
@@ -1771,170 +1726,6 @@
 ##        return "{0:.1f} {1}".format(size, unit)
     
     ###########################################################################
-    ## Access key related methods below
-    ###########################################################################
-    
-    # TODO: Access Keys
-##    def __accessKeyShortcut(self):
-##        """
-##        Private slot to switch the display of access keys.
-##        """
-##        if not self.hasFocus() or \
-##           not self.__accessKeysPressed or \
-##           not self.__enableAccessKeys:
-##            return
-##        
-##        if self.__accessKeyLabels:
-##            self.__hideAccessKeys()
-##        else:
-##            self.__showAccessKeys()
-##        
-##        self.__accessKeysPressed = False
-##    
-##    def __checkForAccessKey(self, evt):
-##        """
-##        Private method to check the existence of an access key and activate the
-##        corresponding link.
-##        
-##        @param evt reference to the key event (QKeyEvent)
-##        @return flag indicating, if the event was handled (boolean)
-##        """
-##        if not self.__accessKeyLabels:
-##            return False
-##        
-##        text = evt.text()
-##        if not text:
-##            return False
-##        
-##        key = text[0].upper()
-##        handled = False
-##        if key in self.__accessKeyNodes:
-##            element = self.__accessKeyNodes[key]
-##            p = element.geometry().center()
-##            frame = element.webFrame()
-##            p -= frame.scrollPosition()
-##            frame = frame.parentFrame()
-##            while frame and frame != self.page().mainFrame():
-##                p -= frame.scrollPosition()
-##                frame = frame.parentFrame()
-##            pevent = QMouseEvent(
-##                QEvent.MouseButtonPress, p, Qt.LeftButton,
-##                Qt.MouseButtons(Qt.NoButton),
-##                Qt.KeyboardModifiers(Qt.NoModifier))
-##            qApp.sendEvent(self, pevent)
-##            revent = QMouseEvent(
-##                QEvent.MouseButtonRelease, p, Qt.LeftButton,
-##                Qt.MouseButtons(Qt.NoButton),
-##                Qt.KeyboardModifiers(Qt.NoModifier))
-##            qApp.sendEvent(self, revent)
-##            handled = True
-##        
-##        return handled
-##    
-##    def __hideAccessKeys(self):
-##        """
-##        Private slot to hide the access key labels.
-##        """
-##        if self.__accessKeyLabels:
-##            for label in self.__accessKeyLabels:
-##                label.hide()
-##                label.deleteLater()
-##            self.__accessKeyLabels = []
-##            self.__accessKeyNodes = {}
-##            self.update()
-##    
-##    def __showAccessKeys(self):
-##        """
-##        Private method to show the access key labels.
-##        """
-##        supportedElements = [
-##            "input", "a", "area", "button", "label", "legend", "textarea",
-##        ]
-##        unusedKeys = "A B C D E F G H I J K L M N O P Q R S T U V W X Y Z" \
-##            " 0 1 2 3 4 5 6 7 8 9".split()
-##        
-##        viewport = QRect(self.__page.mainFrame().scrollPosition(),
-##                         self.__page.viewportSize())
-##        # Priority first goes to elements with accesskey attributes
-##        alreadyLabeled = []
-##        for elementType in supportedElements:
-##            result = self.page().mainFrame().findAllElements(elementType)\
-##                .toList()
-##            for element in result:
-##                geometry = element.geometry()
-##                if geometry.size().isEmpty() or \
-##                   not viewport.contains(geometry.topLeft()):
-##                    continue
-##                
-##                accessKeyAttribute = element.attribute("accesskey").upper()
-##                if not accessKeyAttribute:
-##                    continue
-##                
-##                accessKey = ""
-##                i = 0
-##                while i < len(accessKeyAttribute):
-##                    if accessKeyAttribute[i] in unusedKeys:
-##                        accessKey = accessKeyAttribute[i]
-##                        break
-##                    i += 2
-##                if accessKey == "":
-##                    continue
-##                unusedKeys.remove(accessKey)
-##                self.__makeAccessLabel(accessKey, element)
-##                alreadyLabeled.append(element)
-##        
-##        # Pick an access key first from the letters in the text and then
-##        # from the list of unused access keys
-##        for elementType in supportedElements:
-##            result = self.page().mainFrame().findAllElements(elementType)\
-##                .toList()
-##            for element in result:
-##                geometry = element.geometry()
-##                if not unusedKeys or \
-##                   element in alreadyLabeled or \
-##                   geometry.size().isEmpty() or \
-##                   not viewport.contains(geometry.topLeft()):
-##                    continue
-##                
-##                accessKey = ""
-##                text = element.toPlainText().upper()
-##                for c in text:
-##                    if c in unusedKeys:
-##                        accessKey = c
-##                        break
-##                if accessKey == "":
-##                    accessKey = unusedKeys[0]
-##                unusedKeys.remove(accessKey)
-##                self.__makeAccessLabel(accessKey, element)
-##    
-##    def __makeAccessLabel(self, accessKey, element):
-##        """
-##        Private method to generate the access label for an element.
-##        
-##        @param accessKey access key to generate the label for (str)
-##        @param element reference to the web element to create the label for
-##            (QWebElement)
-##        """
-##        label = QLabel(self)
-##        label.setText("<qt><b>{0}</b></qt>".format(accessKey))
-##        
-##        p = QToolTip.palette()
-##        color = QColor(Qt.yellow).lighter(150)
-##        color.setAlpha(175)
-##        p.setColor(QPalette.Window, color)
-##        label.setPalette(p)
-##        label.setAutoFillBackground(True)
-##        label.setFrameStyle(QFrame.Box | QFrame.Plain)
-##        point = element.geometry().center()
-##        point -= self.__page.mainFrame().scrollPosition()
-##        label.move(point)
-##        label.show()
-##        point.setX(point.x() - label.width() // 2)
-##        label.move(point)
-##        self.__accessKeyLabels.append(label)
-##        self.__accessKeyNodes[accessKey] = element
-    
-    ###########################################################################
     ## Miscellaneous methods below
     ###########################################################################
     
@@ -1953,11 +1744,6 @@
         """
         Public method to indicate a change of the settings.
         """
-        # TODO: Access Keys
-##        self.__enableAccessKeys = Preferences.getWebBrowser("AccessKeysEnabled")
-##        if not self.__enableAccessKeys:
-##            self.__hideAccessKeys()
-        
         self.reload()
     
     ###########################################################################
--- a/WebBrowser/WebBrowserWindow.py	Mon Mar 28 16:34:22 2016 +0200
+++ b/WebBrowser/WebBrowserWindow.py	Mon Mar 28 17:04:18 2016 +0200
@@ -1247,23 +1247,6 @@
                 self.__showFlashCookiesManagement)
         self.__actions.append(self.flashCookiesAct)
         
-        # TODO: Offline Storage
-##        self.offlineStorageAct = E5Action(
-##            self.tr('Offline Storage'),
-##            UI.PixmapCache.getIcon("preferences-html5.png"),
-##            self.tr('Offline &Storage...'), 0, 0,
-##            self, 'webbrowser_offline_storage')
-##        self.offlineStorageAct.setStatusTip(self.tr(
-##            'Configure offline storage'))
-##        self.offlineStorageAct.setWhatsThis(self.tr(
-##            """<b>Offline Storage</b>"""
-##            """<p>Opens a dialog to configure offline storage.</p>"""
-##        ))
-##        if not self.__initShortcutsOnly:
-##            self.offlineStorageAct.triggered.connect(
-##                self.__showOfflineStorageConfiguration)
-##        self.__actions.append(self.offlineStorageAct)
-        
         self.personalDataAct = E5Action(
             self.tr('Personal Information'),
             UI.PixmapCache.getIcon("pim.png"),
@@ -1541,47 +1524,6 @@
             self.adblockAct.triggered.connect(self.__showAdBlockDialog)
         self.__actions.append(self.adblockAct)
         
-        # TODO: Click2Flash (?)
-##        self.flashblockAct = E5Action(
-##            self.tr('ClickToFlash'),
-##            UI.PixmapCache.getIcon("flashBlock.png"),
-##            self.tr('&ClickToFlash...'),
-##            0, 0,
-##            self, 'webbrowser_flashblock')
-##        self.flashblockAct.setStatusTip(self.tr(
-##            'Configure ClickToFlash whitelist'))
-##        self.flashblockAct.setWhatsThis(self.tr(
-##            """<b>ClickToFlash...</b>"""
-##            """<p>Opens a dialog to configure the ClickToFlash"""
-##            """ whitelist.</p>"""
-##        ))
-##        if not self.__initShortcutsOnly:
-##            self.flashblockAct.triggered.connect(
-##                self.__showClickToFlashDialog)
-##        self.__actions.append(self.flashblockAct)
-        
-        # TODO: Certificates
-##        
-##        from .Network.NetworkManager import SSL_AVAILABLE
-##        if SSL_AVAILABLE:
-##            self.certificatesAct = E5Action(
-##                self.tr('Manage SSL Certificates'),
-##                UI.PixmapCache.getIcon("certificates.png"),
-##                self.tr('Manage SSL Certificates...'),
-##                0, 0,
-##                self, 'webbrowser_manage_certificates')
-##            self.certificatesAct.setStatusTip(self.tr(
-##                'Manage the saved SSL certificates'))
-##            self.certificatesAct.setWhatsThis(self.tr(
-##                """<b>Manage SSL Certificates...</b>"""
-##                """<p>Opens a dialog to manage the saved SSL"""
-##                """ certificates.</p>"""
-##            ))
-##            if not self.__initShortcutsOnly:
-##                self.certificatesAct.triggered.connect(
-##                    self.__showCertificatesDialog)
-##            self.__actions.append(self.certificatesAct)
-        
         self.certificateErrorsAct = E5Action(
             self.tr('Manage SSL Certificate Errors'),
             UI.PixmapCache.getIcon("certificates.png"),
@@ -1600,23 +1542,6 @@
                 self.__showCertificateErrorsDialog)
         self.__actions.append(self.certificateErrorsAct)
         
-        # TODO: Network Monitor (?)
-##        self.toolsMonitorAct = E5Action(
-##            self.tr('Network Monitor'),
-##            self.tr('&Network Monitor...'),
-##            0, 0,
-##            self, 'webbrowser_tools_network_monitor')
-##        self.toolsMonitorAct.setStatusTip(self.tr(
-##            'Show the network monitor dialog'))
-##        self.toolsMonitorAct.setWhatsThis(self.tr(
-##            """<b>Network Monitor...</b>"""
-##            """<p>Shows the network monitor dialog.</p>"""
-##        ))
-##        if not self.__initShortcutsOnly:
-##            self.toolsMonitorAct.triggered.connect(
-##                self.__showNetworkMonitor)
-##        self.__actions.append(self.toolsMonitorAct)
-        
         self.showDownloadManagerAct = E5Action(
             self.tr('Downloads'),
             self.tr('Downloads'),
@@ -1847,7 +1772,6 @@
         menu.addAction(self.acceptedLanguagesAct)
         menu.addAction(self.cookiesAct)
         menu.addAction(self.flashCookiesAct)
-##        menu.addAction(self.offlineStorageAct)
         menu.addAction(self.personalDataAct)
         menu.addAction(self.greaseMonkeyAct)
         menu.addAction(self.featurePermissionAct)
@@ -1857,22 +1781,18 @@
         menu.addAction(self.searchEnginesAct)
         menu.addSeparator()
         menu.addAction(self.passwordsAct)
-        # TODO: Certificates
-##        from .Network.NetworkManager import SSL_AVAILABLE
-##        if SSL_AVAILABLE:
-##            menu.addAction(self.certificatesAct)
         menu.addAction(self.certificateErrorsAct)
         menu.addSeparator()
         menu.addAction(self.zoomValuesAct)
         menu.addAction(self.manageIconsAct)
         menu.addSeparator()
         menu.addAction(self.adblockAct)
-##        menu.addAction(self.flashblockAct)
-##        menu.addSeparator()
+        menu.addSeparator()
         self.__settingsMenu = menu
         self.__settingsMenu.aboutToShow.connect(
             self.__aboutToShowSettingsMenu)
         
+        # TODO: UserAgents
 ##        from .UserAgent.UserAgentMenu import UserAgentMenu
 ##        self.__userAgentMenu = UserAgentMenu(self.tr("Global User Agent"))
 ##        menu.addMenu(self.__userAgentMenu)
@@ -1893,9 +1813,6 @@
         menu.addAction(self.siteInfoAct)
         menu.addSeparator()
         menu.addAction(self.synchronizationAct)
-        # TODO: Network Monitor
-##        menu.addSeparator()
-##        menu.addAction(self.toolsMonitorAct)
         
         menu = mb.addMenu(self.tr("&Window"))
         menu.setTearOffEnabled(True)
@@ -1995,7 +1912,6 @@
         settingstb.addAction(self.acceptedLanguagesAct)
         settingstb.addAction(self.cookiesAct)
         settingstb.addAction(self.flashCookiesAct)
-##        settingstb.addAction(self.offlineStorageAct)
         settingstb.addAction(self.personalDataAct)
         settingstb.addAction(self.greaseMonkeyAct)
         settingstb.addAction(self.featurePermissionAct)
@@ -2487,9 +2403,6 @@
         
         self.downloadManager().shutdown()
         
-        # TODO: Network Monitor
-##        self.__closeNetworkMonitor()
-##        
         self.cookieJar().close()
         
         self.bookmarksToolBar.setModel(None)
@@ -2834,17 +2747,6 @@
         """
         self.flashCookieManager().showFlashCookieManagerDialog()
     
-##    def __showOfflineStorageConfiguration(self):
-##        """
-##        Private slot to configure the offline storage.
-##        """
-##        from .OfflineStorage.OfflineStorageConfigDialog import \
-##            OfflineStorageConfigDialog
-##        dlg = OfflineStorageConfigDialog(self)
-##        if dlg.exec_() == QDialog.Accepted:
-##            dlg.storeData()
-##            self.__initWebEngineSettings()
-    
     @classmethod
     def setUseQtHelp(cls, use):
         """
@@ -3331,16 +3233,6 @@
         dlg = PasswordsDialog(self)
         dlg.exec_()
     
-    # TODO: Certificates
-##    def __showCertificatesDialog(self):
-##        """
-##        Private slot to show the certificates management dialog.
-##        """
-##        from E5Network.E5SslCertificatesDialog import E5SslCertificatesDialog
-##        
-##        dlg = E5SslCertificatesDialog(self)
-##        dlg.exec_()
-##        
     def __showCertificateErrorsDialog(self):
         """
         Private slot to show the certificate errors management dialog.
@@ -3353,14 +3245,6 @@
         """
         self.adBlockManager().showDialog()
         
-    # TODO: Click2Flash
-##    def __showClickToFlashDialog(self):
-##        """
-##        Private slot to open the ClickToFlash whitelist configuration dialog.
-##        """
-##        from .HelpBrowserWV import HelpWebPage
-##        HelpWebPage.webPluginFactory().plugin("ClickToFlash").configure()
-##        
     def __showPersonalInformationDialog(self):
         """
         Private slot to show the Personal Information configuration dialog.
@@ -3388,29 +3272,12 @@
         dlg = ZoomValuesDialog(self)
         dlg.exec_()
     
-    # TODO: Network Monitor
-##    def __showNetworkMonitor(self):
-##        """
-##        Private slot to show the network monitor dialog.
-##        """
-##        from E5Network.E5NetworkMonitor import E5NetworkMonitor
-##        monitor = E5NetworkMonitor.instance(self.networkManager())
-##        monitor.show()
-##        
     def __showDownloadsWindow(self):
         """
         Private slot to show the downloads dialog.
         """
         self.downloadManager().show()
         
-    # TODO: Network Monitor
-##    def __closeNetworkMonitor(self):
-##        """
-##        Private slot to close the network monitor dialog.
-##        """
-##        from E5Network.E5NetworkMonitor import E5NetworkMonitor
-##        E5NetworkMonitor.closeMonitor()
-##        
     def __showPageSource(self):
         """
         Private slot to show the source of the current page in an editor.

eric ide

mercurial