Sun, 29 Aug 2021 17:48:44 +0200
Next batch of changes for QtWebEngine as of Qt 6.2.0.
--- 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