aboutsummaryrefslogtreecommitdiffstats
path: root/examples/webenginewidgets/simplebrowser/browser.py
diff options
context:
space:
mode:
Diffstat (limited to 'examples/webenginewidgets/simplebrowser/browser.py')
-rw-r--r--examples/webenginewidgets/simplebrowser/browser.py69
1 files changed, 69 insertions, 0 deletions
diff --git a/examples/webenginewidgets/simplebrowser/browser.py b/examples/webenginewidgets/simplebrowser/browser.py
new file mode 100644
index 000000000..a124ea084
--- /dev/null
+++ b/examples/webenginewidgets/simplebrowser/browser.py
@@ -0,0 +1,69 @@
+# Copyright (C) 2023 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+from PySide6.QtWebEngineCore import (qWebEngineChromiumVersion,
+ QWebEngineProfile, QWebEngineSettings)
+from PySide6.QtCore import QObject, Qt, Slot
+
+from downloadmanagerwidget import DownloadManagerWidget
+from browserwindow import BrowserWindow
+
+
+class Browser(QObject):
+
+ def __init__(self, parent=None):
+ super().__init__(parent)
+ self._windows = []
+ self._download_manager_widget = DownloadManagerWidget()
+ self._profile = None
+
+ # Quit application if the download manager window is the only
+ # remaining window
+ self._download_manager_widget.setAttribute(Qt.WA_QuitOnClose, False)
+
+ dp = QWebEngineProfile.defaultProfile()
+ dp.downloadRequested.connect(self._download_manager_widget.download_requested)
+
+ def create_hidden_window(self, offTheRecord=False):
+ if not offTheRecord and not self._profile:
+ name = "simplebrowser." + qWebEngineChromiumVersion()
+ self._profile = QWebEngineProfile(name)
+ s = self._profile.settings()
+ s.setAttribute(QWebEngineSettings.PluginsEnabled, True)
+ s.setAttribute(QWebEngineSettings.DnsPrefetchEnabled, True)
+ s.setAttribute(QWebEngineSettings.LocalContentCanAccessRemoteUrls, True)
+ s.setAttribute(QWebEngineSettings.LocalContentCanAccessFileUrls, False)
+ self._profile.downloadRequested.connect(
+ self._download_manager_widget.download_requested)
+
+ profile = QWebEngineProfile.defaultProfile() if offTheRecord else self._profile
+ main_window = BrowserWindow(self, profile, False)
+ self._windows.append(main_window)
+ main_window.about_to_close.connect(self._remove_window)
+ return main_window
+
+ def create_window(self, offTheRecord=False):
+ main_window = self.create_hidden_window(offTheRecord)
+ main_window.show()
+ return main_window
+
+ def create_dev_tools_window(self):
+ profile = (self._profile if self._profile
+ else QWebEngineProfile.defaultProfile())
+ main_window = BrowserWindow(self, profile, True)
+ self._windows.append(main_window)
+ main_window.about_to_close.connect(self._remove_window)
+ main_window.show()
+ return main_window
+
+ def windows(self):
+ return self._windows
+
+ def download_manager_widget(self):
+ return self._download_manager_widget
+
+ @Slot()
+ def _remove_window(self):
+ w = self.sender()
+ if w in self._windows:
+ del self._windows[self._windows.index(w)]