diff options
Diffstat (limited to 'examples/webenginewidgets/notifications/main.py')
-rw-r--r-- | examples/webenginewidgets/notifications/main.py | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/examples/webenginewidgets/notifications/main.py b/examples/webenginewidgets/notifications/main.py new file mode 100644 index 000000000..b59aead97 --- /dev/null +++ b/examples/webenginewidgets/notifications/main.py @@ -0,0 +1,57 @@ +# Copyright (C) 2022 The Qt Company Ltd. +# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause + +"""PySide6 WebEngineWidgets Notifications Example""" + +import sys +from pathlib import Path + +from PySide6.QtCore import QUrl, QCoreApplication +from PySide6.QtWidgets import QApplication +from PySide6.QtWebEngineCore import QWebEnginePage +from PySide6.QtWebEngineWidgets import QWebEngineView +from PySide6.QtGui import QDesktopServices + +from notificationpopup import NotificationPopup + + +class WebEnginePage(QWebEnginePage): + def __init__(self, parent): + super().__init__(parent) + + def acceptNavigationRequest(self, url: QUrl, *_): + if url.scheme != "https": + return True + QDesktopServices.openUrl(url) + return False + + +if __name__ == '__main__': + + src_dir = Path(__file__).resolve().parent + QCoreApplication.setOrganizationName("QtProject") + app = QApplication(sys.argv) + view = QWebEngineView() + + # set custom page to open all page's links for https scheme in system browser + view.setPage(WebEnginePage(view)) + + def set_feature_permission(origin: QUrl, feature: QWebEnginePage.Feature): + if feature != QWebEnginePage.Notifications: + return + + view.page().setFeaturePermission(origin, feature, QWebEnginePage.PermissionGrantedByUser) + + view.page().featurePermissionRequested.connect(set_feature_permission) + profile = view.page().profile() + popup = NotificationPopup(view) + + def presentNotification(notification): + popup.present(notification) + + profile.setNotificationPresenter(presentNotification) + view.resize(640, 480) + view.show() + view.setUrl(QUrl.fromLocalFile(src_dir / "resources" / "index.html")) + + sys.exit(app.exec()) |