Next batch of changes for QtWebEngine as of Qt 6.2.0. eric7

Sun, 29 Aug 2021 17:48:44 +0200

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Sun, 29 Aug 2021 17:48:44 +0200
branch
eric7
changeset 8556
766e1566cb74
parent 8555
844c2713bf44
child 8557
17fb004af51d

Next batch of changes for QtWebEngine as of Qt 6.2.0.

eric7/Preferences/ConfigurationPages/WebBrowserPage.py file | annotate | diff | comparison | revisions
eric7/Preferences/__init__.py file | annotate | diff | comparison | revisions
eric7/WebBrowser/Bookmarks/BookmarksManager.py file | annotate | diff | comparison | revisions
eric7/WebBrowser/Bookmarks/NsHtmlReader.py file | annotate | diff | comparison | revisions
eric7/WebBrowser/Bookmarks/NsHtmlWriter.py file | annotate | diff | comparison | revisions
eric7/WebBrowser/Bookmarks/XbelReader.py file | annotate | diff | comparison | revisions
eric7/WebBrowser/Bookmarks/XbelWriter.py file | annotate | diff | comparison | revisions
eric7/WebBrowser/Download/DownloadItem.py file | annotate | diff | comparison | revisions
eric7/WebBrowser/Download/DownloadManager.py file | annotate | diff | comparison | revisions
eric7/WebBrowser/Network/NetworkManager.py file | annotate | diff | comparison | revisions
eric7/WebBrowser/PageScreenDialog.py file | annotate | diff | comparison | revisions
eric7/WebBrowser/Passwords/PasswordReader.py file | annotate | diff | comparison | revisions
eric7/WebBrowser/Passwords/PasswordWriter.py file | annotate | diff | comparison | revisions
eric7/WebBrowser/SiteInfo/SiteInfoWidget.py file | annotate | diff | comparison | revisions
eric7/WebBrowser/SpeedDial/SpeedDialReader.py file | annotate | diff | comparison | revisions
eric7/WebBrowser/SpeedDial/SpeedDialWriter.py file | annotate | diff | comparison | revisions
eric7/WebBrowser/Tools/WebBrowserTools.py file | annotate | diff | comparison | revisions
eric7/WebBrowser/Tools/WebIconProvider.py file | annotate | diff | comparison | revisions
eric7/WebBrowser/UrlBar/UrlBar.py file | annotate | diff | comparison | revisions
eric7/WebBrowser/UserAgent/UserAgentReader.py file | annotate | diff | comparison | revisions
eric7/WebBrowser/UserAgent/UserAgentWriter.py file | annotate | diff | comparison | revisions
eric7/WebBrowser/WebBrowserPage.py file | annotate | diff | comparison | revisions
eric7/WebBrowser/WebBrowserTabWidget.py file | annotate | diff | comparison | revisions
eric7/WebBrowser/WebBrowserView.py file | annotate | diff | comparison | revisions
eric7/WebBrowser/WebBrowserWindow.py file | annotate | diff | comparison | revisions
--- a/eric7/Preferences/ConfigurationPages/WebBrowserPage.py	Sun Aug 29 17:48:26 2021 +0200
+++ b/eric7/Preferences/ConfigurationPages/WebBrowserPage.py	Sun Aug 29 17:48:44 2021 +0200
@@ -144,6 +144,7 @@
             idx = 5
         self.expireHistory.setCurrentIndex(idx)
         
+        # FIXME: fix this issue
         for language in range(2, QLocale.Language.LastLanguage + 1):
             countries = [
                 loc.country()
--- a/eric7/Preferences/__init__.py	Sun Aug 29 17:48:26 2021 +0200
+++ b/eric7/Preferences/__init__.py	Sun Aug 29 17:48:44 2021 +0200
@@ -31,7 +31,7 @@
 from PyQt6.QtGui import QColor, QFont, QPalette
 from PyQt6.QtWidgets import QApplication
 try:
-    from PyQt6.QtWebEngineCore import QWebEngineSettings
+    from PyQt6.QtWebEngineCore import QWebEngineSettings, QWebEngineProfile
 except ImportError:
     QWebEngineSettings = None
 from PyQt6.Qsci import QsciScintilla, QsciLexerPython
@@ -1055,7 +1055,8 @@
         if QWebEngineSettings is None:
             return
         
-        webEngineSettings = QWebEngineSettings.defaultSettings()
+##        webEngineSettings = QWebEngineSettings.defaultSettings()
+        webEngineSettings = QWebEngineProfile.defaultProfile().settings()
         cls.webBrowserDefaults.update({
             "StandardFontFamily": webEngineSettings.fontFamily(
                 QWebEngineSettings.FontFamily.StandardFont),
--- a/eric7/WebBrowser/Bookmarks/BookmarksManager.py	Sun Aug 29 17:48:26 2021 +0200
+++ b/eric7/WebBrowser/Bookmarks/BookmarksManager.py	Sun Aug 29 17:48:44 2021 +0200
@@ -12,8 +12,9 @@
 
 from PyQt6.QtCore import (
     pyqtSignal, QT_TRANSLATE_NOOP, QObject, QFile, QIODevice, QXmlStreamReader,
-    QDateTime, QFileInfo, QUrl, QCoreApplication, QUndoStack, QUndoCommand
+    QDateTime, QFileInfo, QUrl, QCoreApplication
 )
+from PyQt6.QtGui import QUndoStack, QUndoCommand
 from PyQt6.QtWidgets import QDialog
 
 from EricWidgets import EricMessageBox, EricFileDialog
--- a/eric7/WebBrowser/Bookmarks/NsHtmlReader.py	Sun Aug 29 17:48:26 2021 +0200
+++ b/eric7/WebBrowser/Bookmarks/NsHtmlReader.py	Sun Aug 29 17:48:44 2021 +0200
@@ -54,7 +54,7 @@
             f = QFile(fileNameOrDevice)
             if not f.exists():
                 return BookmarkNode(BookmarkNode.Root)
-            f.open(QFile.ReadOnly)
+            f.open(QIODevice.OpenModeFlag.ReadOnly)
             dev = f
         
         folders = []
--- a/eric7/WebBrowser/Bookmarks/NsHtmlWriter.py	Sun Aug 29 17:48:26 2021 +0200
+++ b/eric7/WebBrowser/Bookmarks/NsHtmlWriter.py	Sun Aug 29 17:48:44 2021 +0200
@@ -40,7 +40,7 @@
             f = fileNameOrDevice
         else:
             f = QFile(fileNameOrDevice)
-            if root is None or not f.open(QFile.WriteOnly):
+            if root is None or not f.open(QIODevice.OpenModeFlag.WriteOnly):
                 return False
         
         self.__dev = f
--- a/eric7/WebBrowser/Bookmarks/XbelReader.py	Sun Aug 29 17:48:26 2021 +0200
+++ b/eric7/WebBrowser/Bookmarks/XbelReader.py	Sun Aug 29 17:48:44 2021 +0200
@@ -58,7 +58,7 @@
             f = QFile(fileNameOrDevice)
             if not f.exists():
                 return BookmarkNode(BookmarkNode.Root)
-            f.open(QFile.ReadOnly)
+            f.open(QIODevice.OpenModeFlag.ReadOnly)
             self.setDevice(f)
         
         root = BookmarkNode(BookmarkNode.Root)
--- a/eric7/WebBrowser/Bookmarks/XbelWriter.py	Sun Aug 29 17:48:26 2021 +0200
+++ b/eric7/WebBrowser/Bookmarks/XbelWriter.py	Sun Aug 29 17:48:44 2021 +0200
@@ -37,7 +37,7 @@
             f = fileNameOrDevice
         else:
             f = QFile(fileNameOrDevice)
-            if root is None or not f.open(QFile.WriteOnly):
+            if root is None or not f.open(QIODevice.OpenModeFlag.WriteOnly):
                 return False
         
         self.setDevice(f)
--- a/eric7/WebBrowser/Download/DownloadItem.py	Sun Aug 29 17:48:26 2021 +0200
+++ b/eric7/WebBrowser/Download/DownloadItem.py	Sun Aug 29 17:48:44 2021 +0200
@@ -14,7 +14,7 @@
 )
 from PyQt6.QtGui import QPalette, QDesktopServices
 from PyQt6.QtWidgets import QWidget, QStyle, QDialog
-from PyQt6.QtWebEngineCore import QWebEngineDownloadItem
+from PyQt6.QtWebEngineCore import QWebEngineDownloadRequest
 
 from EricWidgets import EricFileDialog
 
@@ -39,17 +39,18 @@
     downloadFinished = pyqtSignal(bool)
     progress = pyqtSignal(int, int)
     
+    # TODO: convert this to an enum
     Downloading = 0
     DownloadSuccessful = 1
     DownloadCancelled = 2
     
-    def __init__(self, downloadItem=None, pageUrl=None, parent=None):
+    def __init__(self, downloadRequest=None, pageUrl=None, parent=None):
         """
         Constructor
         
-        @param downloadItem reference to the download object containing the
+        @param downloadRequest reference to the download object containing the
         download data.
-        @type QWebEngineDownloadItem
+        @type QWebEngineDownloadRequest
         @param pageUrl URL of the calling page
         @type QUrl
         @param parent reference to the parent widget
@@ -69,17 +70,13 @@
         self.openButton.setIcon(UI.PixmapCache.getIcon("open"))
         self.openButton.setEnabled(False)
         self.openButton.setVisible(False)
-        if not hasattr(QWebEngineDownloadItem, "pause"):
-            # pause/resume was defined in Qt 5.10.0 / PyQt 5.10.0
-            self.pauseButton.setEnabled(False)
-            self.pauseButton.setVisible(False)
         
         self.__state = DownloadItem.Downloading
         
         icon = self.style().standardIcon(QStyle.StandardPixmap.SP_FileIcon)
         self.fileIcon.setPixmap(icon.pixmap(48, 48))
         
-        self.__downloadItem = downloadItem
+        self.__downloadRequest = downloadRequest
         if pageUrl is None:
             self.__pageUrl = QUrl()
         else:
@@ -101,7 +98,7 @@
         """
         Private method to initialize the widget.
         """
-        if self.__downloadItem is None:
+        if self.__downloadRequest is None:
             return
         
         self.__finishedDownloading = False
@@ -112,9 +109,9 @@
         self.__downloadTime = QTime.currentTime()
         
         # attach to the download item object
-        self.__url = self.__downloadItem.url()
-        self.__downloadItem.downloadProgress.connect(self.__downloadProgress)
-        self.__downloadItem.finished.connect(self.__finished)
+        self.__url = self.__downloadRequest.url()
+        self.__downloadRequest.receivedBytesChanged.connect(self.__downloadProgress)
+        self.__downloadRequest.isFinishedChanged.connect(self.__finished)
         
         # reset info
         self.datetimeLabel.clear()
@@ -122,17 +119,17 @@
         self.infoLabel.clear()
         self.progressBar.setValue(0)
         if (
-            self.__downloadItem.state() ==
-            QWebEngineDownloadItem.DownloadState.DownloadRequested
+            self.__downloadRequest.state() ==
+            QWebEngineDownloadRequest.DownloadState.DownloadRequested
         ):
             self.__getFileName()
             if not self.__fileName:
-                self.__downloadItem.cancel()
+                self.__downloadRequest.cancel()
             else:
-                self.__downloadItem.setPath(self.__fileName)
-                self.__downloadItem.accept()
+                self.__downloadRequest.setDownloadFileName(self.__fileName)
+                self.__downloadRequest.accept()
         else:
-            fileName = self.__downloadItem.path()
+            fileName = self.__downloadRequest.downloadFileName()
             self.__setFileName(fileName)
     
     def __getFileName(self):
@@ -142,9 +139,7 @@
         if self.__gettingFileName:
             return
         
-        savePage = self.__downloadItem.type() == (
-            QWebEngineDownloadItem.DownloadType.SavePage
-        )
+        savePage = self.__downloadRequest.isSavePageDownload()
         
         documentLocation = QStandardPaths.writableLocation(
             QStandardPaths.StandardLocation.DocumentsLocation)
@@ -167,7 +162,7 @@
         
         if not savePage:
             from .DownloadAskActionDialog import DownloadAskActionDialog
-            url = self.__downloadItem.url()
+            url = self.__downloadRequest.url()
             mimetype = Utilities.MimeTypes.mimeType(originalFileName)
             dlg = DownloadAskActionDialog(
                 QFileInfo(originalFileName).fileName(),
@@ -266,7 +261,7 @@
         @param directory name of the directory to store the file into (string)
         @return proposed filename and original filename (string, string)
         """
-        path = self.__downloadItem.path()
+        path = self.__downloadRequest.downloadFileName()
         info = QFileInfo(path)
         baseName = info.completeBaseName()
         endName = info.suffix()
@@ -289,9 +284,9 @@
         @type bool
         """
         if checked:
-            self.__downloadItem.pause()
+            self.__downloadRequest.pause()
         else:
-            self.__downloadItem.resume()
+            self.__downloadRequest.resume()
     
     @pyqtSlot()
     def on_stopButton_clicked(self):
@@ -313,7 +308,7 @@
         self.pauseButton.setVisible(False)
         self.setUpdatesEnabled(True)
         self.__state = DownloadItem.DownloadCancelled
-        self.__downloadItem.cancel()
+        self.__downloadRequest.cancel()
         self.__setDateTime()
         self.downloadFinished.emit(False)
     
@@ -340,19 +335,17 @@
         url = QUrl.fromLocalFile(info.absolutePath())
         QDesktopServices.openUrl(url)
     
-    def __downloadProgress(self, bytesReceived, bytesTotal):
+    @pyqtSlot()
+    def __downloadProgress(self):
         """
-        Private method to show the download progress.
-        
-        @param bytesReceived number of bytes received (integer)
-        @param bytesTotal number of total bytes (integer)
+        Private slot to show the download progress.
         """
-        self.__bytesReceived = bytesReceived
-        self.__bytesTotal = bytesTotal
+        self.__bytesReceived = self.__downloadRequest.receivedBytes()
+        self.__bytesTotal = self.__downloadRequest.totalBytes()
         currentValue = 0
         totalValue = 0
-        if bytesTotal > 0:
-            currentValue = bytesReceived * 100 / bytesTotal
+        if self.__bytesTotal > 0:
+            currentValue = self.__bytesReceived * 100 / self.__bytesTotal
             totalValue = 100
         self.progressBar.setValue(currentValue)
         self.progressBar.setMaximum(totalValue)
@@ -376,7 +369,7 @@
         @return total number of bytes (integer)
         """
         if self.__bytesTotal == -1:
-            self.__bytesTotal = self.__downloadItem.totalBytes()
+            self.__bytesTotal = self.__downloadRequest.totalBytes()
         return self.__bytesTotal
     
     def bytesReceived(self):
@@ -423,7 +416,7 @@
         
         return (
             self.__bytesReceived * 1000.0 /
-            self.__downloadTime.msecsTo(QTime.currentTime)
+            self.__downloadTime.msecsTo(QTime.currentTime())
         )
     
     def __updateInfoLabel(self):
@@ -494,8 +487,8 @@
         """
         self.__finishedDownloading = True
         
-        noError = (self.__downloadItem.state() ==
-                   QWebEngineDownloadItem.DownloadState.DownloadCompleted)
+        noError = (self.__downloadRequest.state() ==
+                   QWebEngineDownloadRequest.DownloadState.DownloadCompleted)
         
         self.progressBar.setVisible(False)
         self.pauseButton.setEnabled(False)
--- a/eric7/WebBrowser/Download/DownloadManager.py	Sun Aug 29 17:48:26 2021 +0200
+++ b/eric7/WebBrowser/Download/DownloadManager.py	Sun Aug 29 17:48:44 2021 +0200
@@ -228,15 +228,15 @@
                     window.closeBrowser(browser)
                     return
     
-    def download(self, downloadItem):
+    def download(self, downloadRequest):
         """
         Public method to download a file.
         
-        @param downloadItem reference to the download object containing the
+        @param downloadRequest reference to the download object containing the
         download data.
-        @type QWebEngineDownloadItem
+        @type QWebEngineDownloadRequest
         """
-        url = downloadItem.url()
+        url = downloadRequest.url()
         if url.isEmpty():
             return
         
@@ -264,13 +264,13 @@
                     EricMessageBox.Abort | EricMessageBox.Ignore,
                     EricMessageBox.Abort)
                 if res == EricMessageBox.Abort:
-                    downloadItem.cancel()
+                    downloadRequest.cancel()
                     return
         
         window = WebBrowserWindow.getWindow()
         pageUrl = window.currentBrowser().url() if window else QUrl()
         from .DownloadItem import DownloadItem
-        itm = DownloadItem(downloadItem=downloadItem, pageUrl=pageUrl,
+        itm = DownloadItem(downloadRequest=downloadRequest, pageUrl=pageUrl,
                            parent=self)
         self.__addItem(itm)
         
--- a/eric7/WebBrowser/Network/NetworkManager.py	Sun Aug 29 17:48:26 2021 +0200
+++ b/eric7/WebBrowser/Network/NetworkManager.py	Sun Aug 29 17:48:44 2021 +0200
@@ -417,6 +417,6 @@
         """
         req = QNetworkRequest(request)
         req.setAttribute(
-            QNetworkRequest.Attribute.SpdyAllowedAttribute, True)
+            QNetworkRequest.Attribute.Http2AllowedAttribute, True)
         
         return super().createRequest(op, req, data)
--- a/eric7/WebBrowser/PageScreenDialog.py	Sun Aug 29 17:48:26 2021 +0200
+++ b/eric7/WebBrowser/PageScreenDialog.py	Sun Aug 29 17:48:44 2021 +0200
@@ -7,7 +7,7 @@
 Module implementing a dialog to save a screenshot of a web page.
 """
 
-from PyQt6.QtCore import pyqtSlot, Qt, QFile, QFileInfo, QSize
+from PyQt6.QtCore import pyqtSlot, Qt, QFile, QFileInfo, QSize, QIODevice
 from PyQt6.QtGui import QImage, QPainter, QPixmap
 from PyQt6.QtWidgets import QDialog, QDialogButtonBox, QAbstractButton
 
@@ -86,7 +86,7 @@
                 return False
         
         file = QFile(fileName)
-        if not file.open(QFile.WriteOnly):
+        if not file.open(QIODevice.OpenModeFlag.WriteOnly):
             EricMessageBox.warning(
                 self,
                 self.tr("Save Page Screen"),
--- a/eric7/WebBrowser/Passwords/PasswordReader.py	Sun Aug 29 17:48:26 2021 +0200
+++ b/eric7/WebBrowser/Passwords/PasswordReader.py	Sun Aug 29 17:48:44 2021 +0200
@@ -40,7 +40,7 @@
             f = QFile(fileNameOrDevice)
             if not f.exists():
                 return self.__logins, self.__loginForms, self.__never
-            f.open(QFile.ReadOnly)
+            f.open(QIODevice.OpenModeFlag.ReadOnly)
             self.setDevice(f)
         
         while not self.atEnd():
--- a/eric7/WebBrowser/Passwords/PasswordWriter.py	Sun Aug 29 17:48:26 2021 +0200
+++ b/eric7/WebBrowser/Passwords/PasswordWriter.py	Sun Aug 29 17:48:44 2021 +0200
@@ -37,7 +37,7 @@
             f = fileNameOrDevice
         else:
             f = QFile(fileNameOrDevice)
-            if not f.open(QFile.WriteOnly):
+            if not f.open(QIODevice.OpenModeFlag.WriteOnly):
                 return False
         
         self.setDevice(f)
--- a/eric7/WebBrowser/SiteInfo/SiteInfoWidget.py	Sun Aug 29 17:48:26 2021 +0200
+++ b/eric7/WebBrowser/SiteInfo/SiteInfoWidget.py	Sun Aug 29 17:48:44 2021 +0200
@@ -18,9 +18,10 @@
 from WebBrowser.WebBrowserWindow import WebBrowserWindow
 
 
+# FIXME: don't use QMenu
 class SiteInfoWidget(QMenu):
     """
-    Class implementing a widget to show SSL certificate infos.
+    Class implementing a widget to show site related infos.
     """
     def __init__(self, browser, parent=None):
         """
--- a/eric7/WebBrowser/SpeedDial/SpeedDialReader.py	Sun Aug 29 17:48:26 2021 +0200
+++ b/eric7/WebBrowser/SpeedDial/SpeedDialReader.py	Sun Aug 29 17:48:44 2021 +0200
@@ -40,7 +40,7 @@
             f = QFile(fileNameOrDevice)
             if not f.exists():
                 return self.__pages, self.__pagesPerRow, self.__sdSize
-            opened = f.open(QFile.ReadOnly)
+            opened = f.open(QIODevice.OpenModeFlag.ReadOnly)
             if not opened:
                 self.raiseError(QCoreApplication.translate(
                     "SpeedDialReader",
--- a/eric7/WebBrowser/SpeedDial/SpeedDialWriter.py	Sun Aug 29 17:48:26 2021 +0200
+++ b/eric7/WebBrowser/SpeedDial/SpeedDialWriter.py	Sun Aug 29 17:48:44 2021 +0200
@@ -37,7 +37,7 @@
             f = fileNameOrDevice
         else:
             f = QFile(fileNameOrDevice)
-            if not f.open(QFile.WriteOnly):
+            if not f.open(QIODevice.OpenModeFlag.WriteOnly):
                 return False
         
         self.setDevice(f)
--- a/eric7/WebBrowser/Tools/WebBrowserTools.py	Sun Aug 29 17:48:26 2021 +0200
+++ b/eric7/WebBrowser/Tools/WebBrowserTools.py	Sun Aug 29 17:48:44 2021 +0200
@@ -46,7 +46,7 @@
     @rtype str
     """
     dataFile = QFile(filename)
-    if filename and dataFile.open(QFile.ReadOnly):
+    if filename and dataFile.open(QIODevice.OpenModeFlag.ReadOnly):
         contents = dataFile.readAll()
         dataFile.close()
         return contents
--- a/eric7/WebBrowser/Tools/WebIconProvider.py	Sun Aug 29 17:48:26 2021 +0200
+++ b/eric7/WebBrowser/Tools/WebIconProvider.py	Sun Aug 29 17:48:44 2021 +0200
@@ -155,7 +155,6 @@
         @rtype str
         """
         return url.toString(
-            QUrl.ComponentFormattingOption.PrettyDecoded |
             QUrl.UrlFormattingOption.RemoveUserInfo |
             QUrl.UrlFormattingOption.RemoveFragment |
             QUrl.UrlFormattingOption.RemovePath
--- a/eric7/WebBrowser/UrlBar/UrlBar.py	Sun Aug 29 17:48:26 2021 +0200
+++ b/eric7/WebBrowser/UrlBar/UrlBar.py	Sun Aug 29 17:48:44 2021 +0200
@@ -9,15 +9,14 @@
 
 from PyQt6.QtCore import pyqtSlot, Qt, QPointF, QUrl, QDateTime, QTimer, QPoint
 from PyQt6.QtGui import QColor, QPalette, QLinearGradient, QIcon
-from PyQt6.QtWidgets import QDialog, QApplication
+from PyQt6.QtWidgets import QDialog, QApplication, QLineEdit
 from PyQt6.QtWebEngineCore import QWebEnginePage
 try:
     from PyQt6.QtNetwork import QSslCertificate     # __IGNORE_EXCEPTION__
 except ImportError:
     QSslCertificate = None      # __IGNORE_WARNING__
 
-from EricWidgets.EricLineEdit import EricLineEdit, EricLineEditSide
-from EricWidgets.EricLineEditButton import EricLineEditButton
+from EricWidgets.EricLineEdit import EricClearableLineEdit, EricLineEditSide
 
 from WebBrowser.WebBrowserWindow import WebBrowserWindow
 
@@ -31,7 +30,7 @@
 import Utilities
 
 
-class UrlBar(EricLineEdit):
+class UrlBar(EricClearableLineEdit):
     """
     Class implementing a line edit for entering URLs.
     """
@@ -42,7 +41,7 @@
         @param mainWindow reference to the main window (WebBrowserWindow)
         @param parent reference to the parent widget (WebBrowserView)
         """
-        EricLineEdit.__init__(self, parent)
+        super().__init__(parent)
         self.setPlaceholderText(self.tr("Enter the URL here."))
         self.setWhatsThis(self.tr("Enter the URL here."))
         
@@ -65,25 +64,19 @@
         self.addWidget(self.__sslLabel, EricLineEditSide.LEFT)
         self.__sslLabel.setVisible(False)
         
-        self.__rssButton = EricLineEditButton(self)
-        self.__rssButton.setIcon(UI.PixmapCache.getIcon("rss16"))
-        self.addWidget(self.__rssButton, EricLineEditSide.RIGHT)
-        self.__rssButton.setVisible(False)
+        self.__rssAction = self.addAction(
+            UI.PixmapCache.getIcon("rss16"),
+            QLineEdit.ActionPosition.TrailingPosition)
+        self.__rssAction.setVisible(False)
         
-        self.__bookmarkButton = EricLineEditButton(self)
-        self.addWidget(self.__bookmarkButton, EricLineEditSide.RIGHT)
-        self.__bookmarkButton.setVisible(False)
-        
-        self.__clearButton = EricLineEditButton(self)
-        self.__clearButton.setIcon(UI.PixmapCache.getIcon("clearLeft"))
-        self.addWidget(self.__clearButton, EricLineEditSide.RIGHT)
-        self.__clearButton.setVisible(False)
+        self.__bookmarkAction = self.addAction(
+            self.__bmInactiveIcon,
+            QLineEdit.ActionPosition.TrailingPosition)
+        self.__bookmarkAction.setVisible(False)
         
         self.__safeBrowsingLabel.clicked.connect(self.__showThreatInfo)
-        self.__bookmarkButton.clicked.connect(self.__showBookmarkInfo)
-        self.__rssButton.clicked.connect(self.__rssClicked)
-        self.__clearButton.clicked.connect(self.clear)
-        self.textChanged.connect(self.__textChanged)
+        self.__bookmarkAction.triggered.connect(self.__showBookmarkInfo)
+        self.__rssAction.triggered.connect(self.__rssTriggered)
         
         self.__mw.bookmarksManager().entryChanged.connect(
             self.__bookmarkChanged)
@@ -142,8 +135,8 @@
         """
         Private slot to perform actions before the page is loaded.
         """
-        self.__bookmarkButton.setVisible(False)
-        self.__rssButton.setVisible(False)
+        self.__bookmarkAction.setVisible(False)
+        self.__rssAction.setVisible(False)
         self.__sslLabel.setVisible(False)
     
     def __checkBookmark(self):
@@ -152,16 +145,16 @@
         """
         manager = self.__mw.bookmarksManager()
         if manager.bookmarkForUrl(self.__browser.url()) is not None:
-            self.__bookmarkButton.setIcon(self.__bmActiveIcon)
+            self.__bookmarkAction.setIcon(self.__bmActiveIcon)
             bookmarks = manager.bookmarksForUrl(self.__browser.url())
             from WebBrowser.Bookmarks.BookmarkNode import BookmarkNode
             for bookmark in bookmarks:
                 manager.setTimestamp(bookmark, BookmarkNode.TsVisited,
                                      QDateTime.currentDateTime())
         elif self.__mw.speedDial().pageForUrl(self.__browser.url()).url != "":
-            self.__bookmarkButton.setIcon(self.__bmActiveIcon)
+            self.__bookmarkAction.setIcon(self.__bmActiveIcon)
         else:
-            self.__bookmarkButton.setIcon(self.__bmInactiveIcon)
+            self.__bookmarkAction.setIcon(self.__bmInactiveIcon)
     
     def __loadFinished(self, ok):
         """
@@ -170,10 +163,10 @@
         @param ok flag indicating a successful load (boolean)
         """
         if self.__browser.url().scheme() in ["eric", "about"]:
-            self.__bookmarkButton.setVisible(False)
+            self.__bookmarkAction.setVisible(False)
         else:
             self.__checkBookmark()
-            self.__bookmarkButton.setVisible(True)
+            self.__bookmarkAction.setVisible(True)
         
         self.__browserUrlChanged(self.__browser.url())
         self.__safeBrowsingLabel.setVisible(
@@ -182,20 +175,13 @@
         if ok:
             QTimer.singleShot(0, self.__setRssButton)
     
-    def __textChanged(self, txt):
-        """
-        Private slot to handle changes of the text.
-        
-        @param txt current text (string)
-        """
-        self.__clearButton.setVisible(txt != "")
-    
     def preferencesChanged(self):
         """
         Public slot to handle a change of preferences.
         """
         self.update()
     
+    @pyqtSlot()
     def __showBookmarkInfo(self):
         """
         Private slot to show a dialog with some bookmark info.
@@ -289,7 +275,7 @@
             
             self.setPalette(p)
         
-        EricLineEdit.paintEvent(self, evt)
+        super().paintEvent(evt)
     
     def focusOutEvent(self, evt):
         """
@@ -299,7 +285,7 @@
         """
         if self.text() == "" and self.__browser is not None:
             self.__browserUrlChanged(self.__browser.url())
-        EricLineEdit.focusOutEvent(self, evt)
+        super().focusOutEvent(evt)
     
     def mousePressEvent(self, evt):
         """
@@ -325,7 +311,7 @@
         if evt.button() == Qt.MouseButton.LeftButton:
             self.selectAll()
         else:
-            EricLineEdit.mouseDoubleClickEvent(self, evt)
+            super().mouseDoubleClickEvent(evt)
     
     def keyPressEvent(self, evt):
         """
@@ -369,7 +355,7 @@
                     url.setHost(host)
                     self.setText(url.toString())
         
-        EricLineEdit.keyPressEvent(self, evt)
+        super().keyPressEvent(evt)
     
     def dragEnterEvent(self, evt):
         """
@@ -381,7 +367,7 @@
         if mimeData.hasUrls() or mimeData.hasText():
             evt.acceptProposedAction()
         
-        EricLineEdit.dragEnterEvent(self, evt)
+        super().dragEnterEvent(evt)
     
     def dropEvent(self, evt):
         """
@@ -399,7 +385,7 @@
                                    QUrl.ParsingMode.TolerantMode)
         
         if url.isEmpty() or not url.isValid():
-            EricLineEdit.dropEvent(self, evt)
+            super().dropEvent(evt)
             return
         
         self.setText(str(url.toEncoded(), encoding="utf-8"))
@@ -411,9 +397,10 @@
         """
         Private slot to show the RSS button.
         """
-        self.__rssButton.setVisible(self.__browser.checkRSS())
+        self.__rssAction.setVisible(self.__browser.checkRSS())
     
-    def __rssClicked(self):
+    @pyqtSlot()
+    def __rssTriggered(self):
         """
         Private slot to handle clicking the RSS icon.
         """
--- a/eric7/WebBrowser/UserAgent/UserAgentReader.py	Sun Aug 29 17:48:26 2021 +0200
+++ b/eric7/WebBrowser/UserAgent/UserAgentReader.py	Sun Aug 29 17:48:44 2021 +0200
@@ -38,7 +38,7 @@
             f = QFile(fileNameOrDevice)
             if not f.exists():
                 return self.__agents
-            f.open(QFile.ReadOnly)
+            f.open(QIODevice.OpenModeFlag.ReadOnly)
             self.setDevice(f)
         
         while not self.atEnd():
--- a/eric7/WebBrowser/UserAgent/UserAgentWriter.py	Sun Aug 29 17:48:26 2021 +0200
+++ b/eric7/WebBrowser/UserAgent/UserAgentWriter.py	Sun Aug 29 17:48:44 2021 +0200
@@ -36,7 +36,7 @@
             f = fileNameOrDevice
         else:
             f = QFile(fileNameOrDevice)
-            if not f.open(QFile.WriteOnly):
+            if not f.open(QIODevice.OpenModeFlag.WriteOnly):
                 return False
         
         self.setDevice(f)
--- a/eric7/WebBrowser/WebBrowserPage.py	Sun Aug 29 17:48:26 2021 +0200
+++ b/eric7/WebBrowser/WebBrowserPage.py	Sun Aug 29 17:48:44 2021 +0200
@@ -13,8 +13,7 @@
 )
 from PyQt6.QtGui import QDesktopServices
 from PyQt6.QtWebEngineCore import (
-    QWebEnginePage, QWebEngineSettings, QWebEngineScript,
-    PYQT_WEBENGINE_VERSION
+    QWebEnginePage, QWebEngineSettings, QWebEngineScript
 )
 from PyQt6.QtWebChannel import QWebChannel
 
@@ -64,11 +63,20 @@
     
     sslConfigurationChanged = pyqtSignal()
     
-    def __init__(self, parent=None):
+    def __init__(self, view, parent=None):
         """
         Constructor
         
-        @param parent parent widget of this window (QWidget)
+        @param view reference to the WebBrowserView associated with the page
+        @type WebBrowserView
+        @param parent reference to the parent widget (defaults to None)
+        @type QWidget (optional)
+        """
+        """
+        Constructor
+        
+        @param parent parent widget of this window (optional)
+        @type QWidget
         """
         super().__init__(
             WebBrowserWindow.webProfile(), parent)
@@ -77,6 +85,8 @@
         self.__badSite = False
         self.__registerProtocolHandlerRequest = None
         
+        self.__view = view
+        
         self.featurePermissionRequested.connect(
             self.__featurePermissionRequested)
         self.authenticationRequired.connect(
@@ -153,7 +163,7 @@
         if url.scheme() == "eric":
             if url.path() == "AddSearchProvider":
                 query = QUrlQuery(url)
-                self.view().mainWindow().openSearchManager().addEngine(
+                self.__view.mainWindow().openSearchManager().addEngine(
                     QUrl(query.queryItemValue("url")))
                 return False
             elif url.path() == "PrintPage":
@@ -435,7 +445,7 @@
         @rtype bool
         """
         return WebBrowserWindow.networkManager().certificateError(
-            error, self.view())
+            error, self.__view)
     
     def __fullScreenRequested(self, request):
         """
@@ -444,9 +454,9 @@
         @param request reference to the full screen request
         @type QWebEngineFullScreenRequest
         """
-        self.view().requestFullScreen(request.toggleOn())
+        self.__view.requestFullScreen(request.toggleOn())
         
-        accepted = request.toggleOn() == self.view().isFullScreen()
+        accepted = request.toggleOn() == self.__view.isFullScreen()
         
         if accepted:
             request.accept()
@@ -506,7 +516,7 @@
         @param sourceId source URL causing the error
         @type str
         """
-        self.view().mainWindow().javascriptConsole().javaScriptConsoleMessage(
+        self.__view.mainWindow().javascriptConsole().javaScriptConsoleMessage(
             level, message, lineNumber, sourceId)
     
     ###########################################################################
@@ -534,7 +544,7 @@
             @return web site icon
             @rtype QIcon
             """
-            return self.view().icon()
+            return self.__view.icon()
     
     if not hasattr(QWebEnginePage, "scrollPosition"):
         def scrollPosition(self):
@@ -687,11 +697,11 @@
         if SSL_AVAILABLE and self.__sslConfiguration is not None:
             from EricNetwork.EricSslInfoWidget import EricSslInfoWidget
             widget = EricSslInfoWidget(self.url(), self.__sslConfiguration,
-                                       self.view())
+                                       self.__view)
             widget.showAt(pos)
         else:
             EricMessageBox.warning(
-                self.view(),
+                self.__view,
                 self.tr("SSL Info"),
                 self.tr("""This site does not contain SSL information."""))
     
--- a/eric7/WebBrowser/WebBrowserTabWidget.py	Sun Aug 29 17:48:26 2021 +0200
+++ b/eric7/WebBrowser/WebBrowserTabWidget.py	Sun Aug 29 17:48:44 2021 +0200
@@ -10,7 +10,7 @@
 import os
 
 from PyQt6.QtCore import (
-    pyqtSignal, pyqtSlot, Qt, QUrl, QFile, QFileDevice, QMarginsF
+    pyqtSignal, pyqtSlot, Qt, QUrl, QFile, QFileDevice, QMarginsF, QIODevice
 )
 from PyQt6.QtGui import QIcon, QPixmap, QPainter, QPageLayout
 from PyQt6.QtWidgets import (
@@ -749,7 +749,7 @@
             return
         
         pdfFile = QFile(filePath)
-        if pdfFile.open(QFile.WriteOnly):
+        if pdfFile.open(QIODevice.OpenModeFlag.WriteOnly):
             pdfFile.write(pdfData)
             pdfFile.close()
         if pdfFile.error() != QFileDevice.FileError.NoError:
--- a/eric7/WebBrowser/WebBrowserView.py	Sun Aug 29 17:48:26 2021 +0200
+++ b/eric7/WebBrowser/WebBrowserView.py	Sun Aug 29 17:48:44 2021 +0200
@@ -20,7 +20,7 @@
     QDesktopServices, QClipboard, QIcon, QContextMenuEvent, QPixmap, QCursor
 )
 from PyQt6.QtWidgets import QStyle, QMenu, QApplication, QDialog
-from PyQt6.QtWebEngineCore import QWebEnginePage, QWebEngineDownloadItem
+from PyQt6.QtWebEngineCore import QWebEnginePage, QWebEngineDownloadRequest
 from PyQt6.QtWebEngineWidgets import QWebEngineView
 
 from EricWidgets import EricMessageBox, EricFileDialog
@@ -143,7 +143,7 @@
         """
         Private method to create a new page object.
         """
-        self.__page = WebBrowserPage(self)
+        self.__page = WebBrowserPage(self, self)
         self.setPage(self.__page)
         
         self.__page.safeBrowsingAbort.connect(self.safeBrowsingAbort)
@@ -1916,7 +1916,7 @@
         
         @return tuple containing the file name to save to and the
             save page format
-        @rtype tuple of (str, QWebEngineDownloadItem.SavePageFormat)
+        @rtype tuple of (str, QWebEngineDownloadRequest.SavePageFormat)
         """
         documentLocation = QStandardPaths.writableLocation(
             QStandardPaths.StandardLocation.DocumentsLocation)
@@ -1944,7 +1944,7 @@
                 defaultFileName += ".mhtml"
 
         fileName = ""
-        saveFormat = QWebEngineDownloadItem.SavePageFormat.MimeHtmlSaveFormat
+        saveFormat = QWebEngineDownloadRequest.SavePageFormat.MimeHtmlSaveFormat
         
         fileName, selectedFilter = EricFileDialog.getSaveFileNameAndFilter(
             None,
@@ -1956,15 +1956,15 @@
             index = filterList.index(selectedFilter)
             if index == 0:
                 saveFormat = (
-                    QWebEngineDownloadItem.SavePageFormat.MimeHtmlSaveFormat
+                    QWebEngineDownloadRequest.SavePageFormat.MimeHtmlSaveFormat
                 )
             elif index == 1:
                 saveFormat = (
-                    QWebEngineDownloadItem.SavePageFormat.SingleHtmlSaveFormat
+                    QWebEngineDownloadRequest.SavePageFormat.SingleHtmlSaveFormat
                 )
             else:
                 saveFormat = (
-                    QWebEngineDownloadItem.SavePageFormat
+                    QWebEngineDownloadRequest.SavePageFormat
                     .CompleteHtmlSaveFormat
                 )
             
--- a/eric7/WebBrowser/WebBrowserWindow.py	Sun Aug 29 17:48:26 2021 +0200
+++ b/eric7/WebBrowser/WebBrowserWindow.py	Sun Aug 29 17:48:44 2021 +0200
@@ -4657,9 +4657,9 @@
             .replace("\n", "")
         )
         
-        oldScript = self.webProfile().scripts().findScript(name)
-        if not oldScript.isNull():
-            self.webProfile().scripts().remove(oldScript)
+        scripts = self.webProfile().scripts().find(name)
+        if scripts:
+            self.webProfile().scripts().remove(scripts[0])
         
         if userStyle:
             from .WebBrowserPage import WebBrowserPage
@@ -4730,14 +4730,14 @@
     ###################################
     
     @classmethod
-    def downloadRequested(cls, download):
+    def downloadRequested(cls, downloadRequest):
         """
         Class method to handle a download request.
         
-        @param download reference to the download data
-        @type QWebEngineDownloadItem
-        """
-        cls.downloadManager().download(download)
+        @param downloadRequest reference to the download data
+        @type QWebEngineDownloadRequest
+        """
+        cls.downloadManager().download(downloadRequest)
     
     ########################################
     ## Support for web engine profiles below

eric ide

mercurial