WebBrowser/WebBrowserView.py

branch
QtWebEngine
changeset 4913
e16573640cb8
parent 4910
e97af1181efd
child 4917
682750cc7bd5
--- a/WebBrowser/WebBrowserView.py	Sat Apr 02 19:44:09 2016 +0200
+++ b/WebBrowser/WebBrowserView.py	Sun Apr 03 16:22:18 2016 +0200
@@ -14,26 +14,19 @@
 except NameError:
     pass
 
-from PyQt5.QtCore import pyqtSlot, pyqtSignal, QObject, QT_TRANSLATE_NOOP, \
-    QUrl, QBuffer, QIODevice, QFileInfo, Qt, QTimer, QEvent, \
-    QRect, QFile, QPoint, QByteArray, qVersion
-from PyQt5.QtGui import QDesktopServices, QClipboard, QMouseEvent, QColor, \
-    QPalette, QIcon, QContextMenuEvent, QPixmap
-from PyQt5.QtWidgets import qApp, QStyle, QMenu, QApplication, QInputDialog, \
-    QLineEdit, QLabel, QToolTip, QFrame, QDialog
-from PyQt5.QtPrintSupport import QPrinter, QPrintDialog
-from PyQt5.QtNetwork import QNetworkReply, QNetworkRequest, QHostInfo
+from PyQt5.QtCore import pyqtSignal, QUrl, QFileInfo, Qt, QTimer, QEvent, \
+    QPoint
+from PyQt5.QtGui import QDesktopServices, QClipboard, QIcon, \
+    QContextMenuEvent, QPixmap
+from PyQt5.QtWidgets import qApp, QStyle, QMenu, QApplication
 from PyQt5.QtWebEngineWidgets import QWebEngineView, QWebEnginePage
 
-from E5Gui import E5MessageBox, E5FileDialog
+from E5Gui import E5MessageBox
 
-import WebBrowser
 from .WebBrowserPage import WebBrowserPage
 
 from .Tools.WebIconLoader import WebIconLoader
-from .Tools import WebBrowserTools, Scripts
-
-from .Network.LoadRequest import LoadRequest, LoadRequestOperations
+from .Tools import Scripts
 
 from . import WebInspector
 from .Tools.WebBrowserTools import readAllFileContents, pixmapToDataUrl
@@ -102,12 +95,8 @@
         self.__currentZoom = 100
         self.__zoomLevels = WebBrowserView.ZoomLevels[:]
         
-##        self.page().setLinkDelegationPolicy(QWebPage.DelegateAllLinks)
-##        self.linkClicked.connect(self.setSource)
-##        
         self.iconUrlChanged.connect(self.__iconUrlChanged)
         self.urlChanged.connect(self.__urlChanged)
-##        self.statusBarMessage.connect(self.__statusBarMessage)
         self.page().linkHovered.connect(self.__linkHovered)
         
         self.loadStarted.connect(self.__loadStarted)
@@ -115,11 +104,6 @@
         self.loadFinished.connect(self.__loadFinished)
         self.renderProcessTerminated.connect(self.__renderProcessTerminated)
         
-##        self.page().setForwardUnsupportedContent(True)
-##        self.page().unsupportedContent.connect(self.__unsupportedContent)
-        
-##        self.page().databaseQuotaExceeded.connect(self.__databaseQuotaExceeded)
-        
         self.__mw.openSearchManager().currentEngineChanged.connect(
             self.__currentEngineChanged)
         
@@ -157,59 +141,13 @@
         Public method to load a web site.
         
         @param url URL to be loaded
-        @type QUrl or LoadRequest
+        @type QUrl
         """
-##        if isinstance(urlOrRequest, QUrl):
         super(WebBrowserView, self).load(url)
         
         if not self.__firstLoad:
             self.__firstLoad = True
             WebInspector.pushView(self)
-##        elif isinstance(urlOrRequest, LoadRequest):
-##            reqUrl = urlOrRequest.url()
-##            if reqUrl.isEmpty():
-##                return
-##            
-##            if reqUrl.scheme() == "javascript":
-##                script = reqUrl.toString()[11:]
-##                # check if the javascript script is percent encode
-##                # i.e. it contains '%' characters
-##                if '%' in script:
-##                    script = QUrl.fromPercentEncoding(
-##                        QByteArray(script.encode("utf-8")))
-##                self.page().runJavaScript(script)
-##                return
-##            
-##            if self.__isUrlValid(reqUrl):
-##                self.loadRequest(urlOrRequest)
-##                return
-##            
-##            # ensure proper loading of hosts without a '.'
-##            if not reqUrl.isEmpty() and \
-##               reqUrl.scheme() and \
-##               not WebBrowserTools.containsSpace(reqUrl.path()) and \
-##               '.' not in reqUrl.path():
-##                u = QUrl("http://" + reqUrl.path())
-##                if u.isValid():
-##                    info = QHostInfo.fromName(u.path())
-##                    if info.error() == QHostInfo.NoError:
-##                        req = LoadRequest(urlOrRequest)
-##                        req.setUrl(u)
-##                        self.loadRequest(req)
-##                        return
-##    
-##    def loadRequest(self, req):
-##        """
-##        Public method to load a page via a load request object.
-##        
-##        @param req loaf request object
-##        @type LoadRequest
-##        """
-##        if req.Operation == LoadRequestOperations.GetOperation:
-##            self.load(req.url())
-##        else:
-##            self.page().runJavaScript(
-##                Scripts.sendPostData(req.url(), req.data()))
     
     def setSource(self, name, newTab=False):
         """
@@ -1425,14 +1363,6 @@
         from .Tools import WebIconProvider
         return WebIconProvider.instance().iconForUrl(self.url())
     
-##    def __statusBarMessage(self, text):
-##        """
-##        Private slot to handle the statusBarMessage signal.
-##        
-##        @param text text to be shown in the status bar (string)
-##        """
-##        self.__mw.statusBar().showMessage(text)
-##    
     def __linkHovered(self, link):
         """
         Private slot to handle the linkHovered signal.
@@ -1554,6 +1484,7 @@
         """
         return self.__preview
     
+    # TODO: Qt 5.7: Save
 ##    def saveAs(self):
 ##        """
 ##        Public method to save the current page to a file.
@@ -1564,151 +1495,6 @@
 ##        
 ##        self.__mw.downloadManager().download(url, True, mainWindow=self.__mw)
     
-##    def __unsupportedContent(self, reply, requestFilename=None,
-##                             download=False):
-##        """
-##        Private slot to handle the unsupportedContent signal.
-##        
-##        @param reply reference to the reply object (QNetworkReply)
-##        @keyparam requestFilename indicating to ask for a filename
-##            (boolean or None). If it is None, the behavior is determined
-##            by a configuration option.
-##        @keyparam download flag indicating a download operation (boolean)
-##        """
-##        if reply is None:
-##            return
-##        
-##        replyUrl = reply.url()
-##        
-##        if replyUrl.scheme() == "abp":
-##            return
-##        
-##        if reply.error() == QNetworkReply.NoError:
-##            if reply.header(QNetworkRequest.ContentTypeHeader):
-##                self.__mw.downloadManager().handleUnsupportedContent(
-##                    reply, webPage=self.page(), mainWindow=self.__mw)
-##                return
-##        
-##        replyUrl = reply.url()
-##        if replyUrl.isEmpty():
-##            return
-##        
-##        notFoundFrame = self.page().mainFrame()
-##        if notFoundFrame is None:
-##            return
-##        
-##        if reply.header(QNetworkRequest.ContentTypeHeader):
-##            data = reply.readAll()
-##            if contentSniff(data):
-##                notFoundFrame.setHtml(str(data, encoding="utf-8"), replyUrl)
-##                return
-##        
-##        urlString = bytes(replyUrl.toEncoded()).decode()
-##        title = self.tr("Error loading page: {0}").format(urlString)
-##        htmlFile = QFile(":/html/notFoundPage.html")
-##        htmlFile.open(QFile.ReadOnly)
-##        html = htmlFile.readAll()
-##        pixmap = qApp.style()\
-##            .standardIcon(QStyle.SP_MessageBoxWarning).pixmap(48, 48)
-##        imageBuffer = QBuffer()
-##        imageBuffer.open(QIODevice.ReadWrite)
-##        if pixmap.save(imageBuffer, "PNG"):
-##            html = html.replace("@IMAGE@", imageBuffer.buffer().toBase64())
-##        pixmap = qApp.style()\
-##            .standardIcon(QStyle.SP_MessageBoxWarning).pixmap(16, 16)
-##        imageBuffer = QBuffer()
-##        imageBuffer.open(QIODevice.ReadWrite)
-##        if pixmap.save(imageBuffer, "PNG"):
-##            html = html.replace("@FAVICON@", imageBuffer.buffer().toBase64())
-##        html = html.replace("@TITLE@", title.encode("utf8"))
-##        html = html.replace("@H1@", reply.errorString().encode("utf8"))
-##        html = html.replace(
-##            "@H2@", self.tr("When connecting to: {0}.")
-##            .format(urlString).encode("utf8"))
-##        html = html.replace(
-##            "@LI-1@",
-##            self.tr("Check the address for errors such as "
-##                    "<b>ww</b>.example.org instead of "
-##                    "<b>www</b>.example.org").encode("utf8"))
-##        html = html.replace(
-##            "@LI-2@",
-##            self.tr("If the address is correct, try checking the network "
-##                    "connection.").encode("utf8"))
-##        html = html.replace(
-##            "@LI-3@",
-##            self.tr(
-##                "If your computer or network is protected by a firewall "
-##                "or proxy, make sure that the browser is permitted to "
-##                "access the network.").encode("utf8"))
-##        html = html.replace(
-##            "@LI-4@",
-##            self.tr("If your cache policy is set to offline browsing,"
-##                    "only pages in the local cache are available.")
-##            .encode("utf8"))
-##        html = html.replace(
-##            "@BUTTON@", self.tr("Try Again").encode("utf8"))
-##        notFoundFrame.setHtml(bytes(html).decode("utf8"), replyUrl)
-##        self.__mw.historyManager().removeHistoryEntry(replyUrl, self.title())
-##        self.loadFinished.emit(False)
-##    
-    
-##    def __databaseQuotaExceeded(self, frame, databaseName):
-##        """
-##        Private slot to handle the case, where the database quota is exceeded.
-##        
-##        @param frame reference to the frame (QWebFrame)
-##        @param databaseName name of the web database (string)
-##        """
-##        securityOrigin = frame.securityOrigin()
-##        if securityOrigin.databaseQuota() > 0 and \
-##           securityOrigin.databaseUsage() == 0:
-##            # cope with a strange behavior of Qt 4.6, if a database is
-##            # accessed for the first time
-##            return
-##        
-##        res = E5MessageBox.yesNo(
-##            self,
-##            self.tr("Web Database Quota"),
-##            self.tr(
-##                """<p>The database quota of <strong>{0}</strong> has"""
-##                """ been exceeded while accessing database <strong>{1}"""
-##                """</strong>.</p><p>Shall it be changed?</p>""")
-##            .format(self.__dataString(securityOrigin.databaseQuota()),
-##                    databaseName),
-##            yesDefault=True)
-##        if res:
-##            newQuota, ok = QInputDialog.getInt(
-##                self,
-##                self.tr("New Web Database Quota"),
-##                self.tr(
-##                    "Enter the new quota in MB (current = {0}, used = {1}; "
-##                    "step size = 5 MB):"
-##                    .format(
-##                        self.__dataString(securityOrigin.databaseQuota()),
-##                        self.__dataString(securityOrigin.databaseUsage()))),
-##                securityOrigin.databaseQuota() // (1024 * 1024),
-##                0, 2147483647, 5)
-##            if ok:
-##                securityOrigin.setDatabaseQuota(newQuota * 1024 * 1024)
-##    
-##    def __dataString(self, size):
-##        """
-##        Private method to generate a formatted data string.
-##        
-##        @param size size to be formatted (integer)
-##        @return formatted data string (string)
-##        """
-##        unit = ""
-##        if size < 1024:
-##            unit = self.tr("bytes")
-##        elif size < 1024 * 1024:
-##            size /= 1024
-##            unit = self.tr("kB")
-##        else:
-##            size /= 1024 * 1024
-##            unit = self.tr("MB")
-##        return "{0:.1f} {1}".format(size, unit)
-    
     ###########################################################################
     ## Miscellaneous methods below
     ###########################################################################
@@ -1814,31 +1600,3 @@
         Private slot to reload all speed dials.
         """
         self.page().runJavaScript("reloadAll();")
-
-##def contentSniff(data):
-##    """
-##    Module function to do some content sniffing to check, if the data is HTML.
-##    
-##    @param data data block to sniff at (string)
-##    @return flag indicating HTML content (boolean)
-##    """
-##    if data.contains("<!doctype") or \
-##       data.contains("<script") or \
-##       data.contains("<html") or \
-##       data.contains("<!--") or \
-##       data.contains("<head") or \
-##       data.contains("<iframe") or \
-##       data.contains("<h1") or \
-##       data.contains("<div") or \
-##       data.contains("<font") or \
-##       data.contains("<table") or \
-##       data.contains("<a") or \
-##       data.contains("<style") or \
-##       data.contains("<title") or \
-##       data.contains("<b") or \
-##       data.contains("<body") or \
-##       data.contains("<br") or \
-##       data.contains("<p"):
-##        return True
-##    
-##    return False

eric ide

mercurial