eric6/WebBrowser/Network/EricSchemeHandler.py

branch
maintenance
changeset 8043
0acf98cd089a
parent 7924
8a96736d465e
parent 7960
e8fc383322f7
child 8176
31965986ecd1
diff -r 866adc8c315b -r 0acf98cd089a eric6/WebBrowser/Network/EricSchemeHandler.py
--- a/eric6/WebBrowser/Network/EricSchemeHandler.py	Sun Jan 17 13:53:08 2021 +0100
+++ b/eric6/WebBrowser/Network/EricSchemeHandler.py	Mon Feb 01 10:38:16 2021 +0100
@@ -7,9 +7,7 @@
 Module implementing a scheme handler for the eric: scheme.
 """
 
-from PyQt5.QtCore import (
-    pyqtSignal, QByteArray, QBuffer, QIODevice, QUrlQuery, QMutex
-)
+from PyQt5.QtCore import pyqtSignal, QBuffer, QIODevice, QUrlQuery, QMutex
 from PyQt5.QtWebEngineCore import QWebEngineUrlSchemeHandler
 
 from E5Gui.E5Application import e5App
@@ -20,17 +18,17 @@
     getHtmlPage, getJavascript, pixmapFileToDataUrl
 )
 
+_SupportedPages = [
+    "adblock",                      # error page for URLs blocked by AdBlock
+    "home", "start", "startpage",   # eric home page
+    "speeddial",                    # eric speeddial
+]
+
 
 class EricSchemeHandler(QWebEngineUrlSchemeHandler):
     """
     Class implementing a scheme handler for the eric: scheme.
     """
-    SupportedPages = [
-        "adblock",          # error page for URLs blocked by AdBlock
-        "home", "start", "startpage",       # eric home page
-        "speeddial",                        # eric speeddial
-    ]
-    
     def __init__(self, parent=None):
         """
         Constructor
@@ -49,13 +47,10 @@
         @param job URL request job
         @type QWebEngineUrlRequestJob
         """
-        if job.requestUrl().path() in self.SupportedPages:
-            reply = EricSchemeReply(job)
-            reply.closed.connect(lambda: self.__replyClosed(reply))
-            self.__replies.append(reply)
-            job.reply(b"text/html", reply)
-        else:
-            job.reply(QByteArray(), QBuffer())
+        reply = EricSchemeReply(job)
+        reply.closed.connect(lambda: self.__replyClosed(reply))
+        self.__replies.append(reply)
+        job.reply(b"text/html", reply)
     
     def __replyClosed(self, reply):
         """
@@ -114,7 +109,7 @@
             elif self.__pageName == "speeddial":
                 contents = self.__speedDialPage()
             else:
-                contents = ""
+                contents = self.__errorPage()
             
             self.__buffer.setData(contents.encode("utf-8"))
             self.__buffer.open(QIODevice.ReadOnly)
@@ -175,6 +170,35 @@
         
         return page
     
+    def __errorPage(self):
+        """
+        Private method to build the Error page.
+        
+        @return built Error page
+        @rtype str
+        """
+        page = getHtmlPage("ericErrorPage.html")
+        page = page.replace(
+            "@FAVICON@", pixmapFileToDataUrl("ericWeb16.png", True))
+        page = page.replace(
+            "@IMAGE@", pixmapFileToDataUrl("ericWeb32.png", True))
+        page = page.replace(
+            "@TITLE@", self.tr("Error accessing eric: URL"))
+        page = page.replace(
+            "@MESSAGE@", self.tr(
+                "The special URL <strong>{0}</strong> is not supported."
+                " Please use one of these."
+            ).format(self.__job.requestUrl().toDisplayString())
+        )
+        page = page.replace(
+            "@ERICLIST@", "<br/>".join([
+                '<a href="eric:{0}">{0}</a>'.format(u)
+                for u in sorted(_SupportedPages)
+            ])
+        )
+        
+        return page
+    
     def __startPage(self):
         """
         Private method to build the Start page.
@@ -188,9 +212,9 @@
         page = page.replace(
             "@IMAGE@", pixmapFileToDataUrl("ericWeb32.png", True))
         page = page.replace(
-            "@TITLE@", self.tr("Welcome to eric6 Web Browser!"))
-        page = page.replace("@ERIC_LINK@", self.tr("About eric6"))
-        page = page.replace("@HEADER_TITLE@", self.tr("eric6 Web Browser"))
+            "@TITLE@", self.tr("Welcome to eric Web Browser!"))
+        page = page.replace("@ERIC_LINK@", self.tr("About eric"))
+        page = page.replace("@HEADER_TITLE@", self.tr("eric Web Browser"))
         page = page.replace("@SUBMIT@", self.tr("Search!"))
         if e5App().isLeftToRight():
             ltr = "LTR"

eric ide

mercurial