diff -r 9f1f41d64648 -r 9bf6903cae97 eric6/WebBrowser/Network/EricSchemeHandler.py --- a/eric6/WebBrowser/Network/EricSchemeHandler.py Fri Dec 25 09:44:11 2020 +0100 +++ b/eric6/WebBrowser/Network/EricSchemeHandler.py Sat Dec 26 11:39:35 2020 +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.