diff options
Diffstat (limited to 'examples/webenginewidgets/tabbedbrowser/main.py')
-rw-r--r-- | examples/webenginewidgets/tabbedbrowser/main.py | 357 |
1 files changed, 0 insertions, 357 deletions
diff --git a/examples/webenginewidgets/tabbedbrowser/main.py b/examples/webenginewidgets/tabbedbrowser/main.py deleted file mode 100644 index d1a3fcf7f..000000000 --- a/examples/webenginewidgets/tabbedbrowser/main.py +++ /dev/null @@ -1,357 +0,0 @@ -# Copyright (C) 2022 The Qt Company Ltd. -# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause - -"""PySide6 WebEngineWidgets Example""" - -import sys -from bookmarkwidget import BookmarkWidget -from browsertabwidget import BrowserTabWidget -from downloadwidget import DownloadWidget -from findtoolbar import FindToolBar -from webengineview import WebEngineView -from PySide6 import QtCore -from PySide6.QtCore import Qt, QUrl -from PySide6.QtGui import QAction, QKeySequence, QIcon -from PySide6.QtWidgets import (QApplication, QDockWidget, QLabel, - QLineEdit, QMainWindow, QToolBar) -from PySide6.QtWebEngineCore import QWebEngineDownloadRequest, QWebEnginePage - -main_windows = [] - - -def create_main_window(): - """Creates a MainWindow using 75% of the available screen resolution.""" - main_win = MainWindow() - main_windows.append(main_win) - available_geometry = main_win.screen().availableGeometry() - main_win.resize(available_geometry.width() * 2 / 3, - available_geometry.height() * 2 / 3) - main_win.show() - return main_win - - -def create_main_window_with_browser(): - """Creates a MainWindow with a BrowserTabWidget.""" - main_win = create_main_window() - return main_win.add_browser_tab() - - -class MainWindow(QMainWindow): - """Provides the parent window that includes the BookmarkWidget, - BrowserTabWidget, and a DownloadWidget, to offer the complete - web browsing experience.""" - - def __init__(self): - super().__init__() - - self.setWindowTitle('PySide6 tabbed browser Example') - - self._tab_widget = BrowserTabWidget(create_main_window_with_browser) - self._tab_widget.enabled_changed.connect(self._enabled_changed) - self._tab_widget.download_requested.connect(self._download_requested) - self.setCentralWidget(self._tab_widget) - self.connect(self._tab_widget, QtCore.SIGNAL("url_changed(QUrl)"), - self.url_changed) - - self._bookmark_dock = QDockWidget() - self._bookmark_dock.setWindowTitle('Bookmarks') - self._bookmark_widget = BookmarkWidget() - self._bookmark_widget.open_bookmark.connect(self.load_url) - self._bookmark_widget.open_bookmark_in_new_tab.connect(self.load_url_in_new_tab) - self._bookmark_dock.setWidget(self._bookmark_widget) - self.addDockWidget(Qt.LeftDockWidgetArea, self._bookmark_dock) - - self._find_tool_bar = None - - self._actions = {} - self._create_menu() - - self._tool_bar = QToolBar() - self.addToolBar(self._tool_bar) - for action in self._actions.values(): - if not action.icon().isNull(): - self._tool_bar.addAction(action) - - self._addres_line_edit = QLineEdit() - self._addres_line_edit.setClearButtonEnabled(True) - self._addres_line_edit.returnPressed.connect(self.load) - self._tool_bar.addWidget(self._addres_line_edit) - self._zoom_label = QLabel() - self.statusBar().addPermanentWidget(self._zoom_label) - self._update_zoom_label() - - self._bookmarksToolBar = QToolBar() - self.addToolBar(Qt.TopToolBarArea, self._bookmarksToolBar) - self.insertToolBarBreak(self._bookmarksToolBar) - self._bookmark_widget.changed.connect(self._update_bookmarks) - self._update_bookmarks() - - def _update_bookmarks(self): - self._bookmark_widget.populate_tool_bar(self._bookmarksToolBar) - self._bookmark_widget.populate_other(self._bookmark_menu, 3) - - def _create_menu(self): - file_menu = self.menuBar().addMenu("&File") - exit_action = QAction(QIcon.fromTheme("application-exit"), "E&xit", - self, shortcut="Ctrl+Q", triggered=qApp.quit) - file_menu.addAction(exit_action) - - navigation_menu = self.menuBar().addMenu("&Navigation") - - style_icons = ':/qt-project.org/styles/commonstyle/images/' - back_action = QAction(QIcon.fromTheme("go-previous", - QIcon(style_icons + 'left-32.png')), - "Back", self, - shortcut=QKeySequence(QKeySequence.Back), - triggered=self._tab_widget.back) - self._actions[QWebEnginePage.Back] = back_action - back_action.setEnabled(False) - navigation_menu.addAction(back_action) - forward_action = QAction(QIcon.fromTheme("go-next", - QIcon(style_icons + 'right-32.png')), - "Forward", self, - shortcut=QKeySequence(QKeySequence.Forward), - triggered=self._tab_widget.forward) - forward_action.setEnabled(False) - self._actions[QWebEnginePage.Forward] = forward_action - - navigation_menu.addAction(forward_action) - reload_action = QAction(QIcon(style_icons + 'refresh-32.png'), - "Reload", self, - shortcut=QKeySequence(QKeySequence.Refresh), - triggered=self._tab_widget.reload) - self._actions[QWebEnginePage.Reload] = reload_action - reload_action.setEnabled(False) - navigation_menu.addAction(reload_action) - - navigation_menu.addSeparator() - - new_tab_action = QAction("New Tab", self, - shortcut='Ctrl+T', - triggered=self.add_browser_tab) - navigation_menu.addAction(new_tab_action) - - close_tab_action = QAction("Close Current Tab", self, - shortcut="Ctrl+W", - triggered=self._close_current_tab) - navigation_menu.addAction(close_tab_action) - - navigation_menu.addSeparator() - - history_action = QAction("History...", self, - triggered=self._tab_widget.show_history) - navigation_menu.addAction(history_action) - - edit_menu = self.menuBar().addMenu("&Edit") - - find_action = QAction("Find", self, - shortcut=QKeySequence(QKeySequence.Find), - triggered=self._show_find) - edit_menu.addAction(find_action) - - edit_menu.addSeparator() - undo_action = QAction("Undo", self, - shortcut=QKeySequence(QKeySequence.Undo), - triggered=self._tab_widget.undo) - self._actions[QWebEnginePage.Undo] = undo_action - undo_action.setEnabled(False) - edit_menu.addAction(undo_action) - - redo_action = QAction("Redo", self, - shortcut=QKeySequence(QKeySequence.Redo), - triggered=self._tab_widget.redo) - self._actions[QWebEnginePage.Redo] = redo_action - redo_action.setEnabled(False) - edit_menu.addAction(redo_action) - - edit_menu.addSeparator() - - cut_action = QAction("Cut", self, - shortcut=QKeySequence(QKeySequence.Cut), - triggered=self._tab_widget.cut) - self._actions[QWebEnginePage.Cut] = cut_action - cut_action.setEnabled(False) - edit_menu.addAction(cut_action) - - copy_action = QAction("Copy", self, - shortcut=QKeySequence(QKeySequence.Copy), - triggered=self._tab_widget.copy) - self._actions[QWebEnginePage.Copy] = copy_action - copy_action.setEnabled(False) - edit_menu.addAction(copy_action) - - paste_action = QAction("Paste", self, - shortcut=QKeySequence(QKeySequence.Paste), - triggered=self._tab_widget.paste) - self._actions[QWebEnginePage.Paste] = paste_action - paste_action.setEnabled(False) - edit_menu.addAction(paste_action) - - edit_menu.addSeparator() - - select_all_action = QAction("Select All", self, - shortcut=QKeySequence(QKeySequence.SelectAll), - triggered=self._tab_widget.select_all) - self._actions[QWebEnginePage.SelectAll] = select_all_action - select_all_action.setEnabled(False) - edit_menu.addAction(select_all_action) - - self._bookmark_menu = self.menuBar().addMenu("&Bookmarks") - add_bookmark_action = QAction("&Add Bookmark", self, - triggered=self._add_bookmark) - self._bookmark_menu.addAction(add_bookmark_action) - add_tool_bar_bookmark_action = QAction("&Add Bookmark to Tool Bar", self, - triggered=self._add_tool_bar_bookmark) - self._bookmark_menu.addAction(add_tool_bar_bookmark_action) - self._bookmark_menu.addSeparator() - - tools_menu = self.menuBar().addMenu("&Tools") - download_action = QAction("Open Downloads", self, - triggered=DownloadWidget.open_download_directory) - tools_menu.addAction(download_action) - - window_menu = self.menuBar().addMenu("&Window") - - window_menu.addAction(self._bookmark_dock.toggleViewAction()) - - window_menu.addSeparator() - - zoom_in_action = QAction(QIcon.fromTheme("zoom-in"), - "Zoom In", self, - shortcut=QKeySequence(QKeySequence.ZoomIn), - triggered=self._zoom_in) - window_menu.addAction(zoom_in_action) - zoom_out_action = QAction(QIcon.fromTheme("zoom-out"), - "Zoom Out", self, - shortcut=QKeySequence(QKeySequence.ZoomOut), - triggered=self._zoom_out) - window_menu.addAction(zoom_out_action) - - reset_zoom_action = QAction(QIcon.fromTheme("zoom-original"), - "Reset Zoom", self, - shortcut="Ctrl+0", - triggered=self._reset_zoom) - window_menu.addAction(reset_zoom_action) - - about_menu = self.menuBar().addMenu("&About") - about_action = QAction("About Qt", self, - shortcut=QKeySequence(QKeySequence.HelpContents), - triggered=qApp.aboutQt) - about_menu.addAction(about_action) - - def add_browser_tab(self): - return self._tab_widget.add_browser_tab() - - def _close_current_tab(self): - if self._tab_widget.count() > 1: - self._tab_widget.close_current_tab() - else: - self.close() - - def close_event(self, event): - main_windows.remove(self) - event.accept() - - def load(self): - url_string = self._addres_line_edit.text().strip() - if url_string: - self.load_url_string(url_string) - - def load_url_string(self, url_s): - url = QUrl.fromUserInput(url_s) - if (url.isValid()): - self.load_url(url) - - def load_url(self, url): - self._tab_widget.load(url) - - def load_url_in_new_tab(self, url): - self.add_browser_tab().load(url) - - def url_changed(self, url): - self._addres_line_edit.setText(url.toString()) - - def _enabled_changed(self, web_action, enabled): - action = self._actions[web_action] - if action: - action.setEnabled(enabled) - - def _add_bookmark(self): - index = self._tab_widget.currentIndex() - if index >= 0: - url = self._tab_widget.url() - title = self._tab_widget.tabText(index) - icon = self._tab_widget.tabIcon(index) - self._bookmark_widget.add_bookmark(url, title, icon) - - def _add_tool_bar_bookmark(self): - index = self._tab_widget.currentIndex() - if index >= 0: - url = self._tab_widget.url() - title = self._tab_widget.tabText(index) - icon = self._tab_widget.tabIcon(index) - self._bookmark_widget.add_tool_bar_bookmark(url, title, icon) - - def _zoom_in(self): - new_zoom = self._tab_widget.zoom_factor() * 1.5 - if (new_zoom <= WebEngineView.maximum_zoom_factor()): - self._tab_widget.set_zoom_factor(new_zoom) - self._update_zoom_label() - - def _zoom_out(self): - new_zoom = self._tab_widget.zoom_factor() / 1.5 - if (new_zoom >= WebEngineView.minimum_zoom_factor()): - self._tab_widget.set_zoom_factor(new_zoom) - self._update_zoom_label() - - def _reset_zoom(self): - self._tab_widget.set_zoom_factor(1) - self._update_zoom_label() - - def _update_zoom_label(self): - percent = int(self._tab_widget.zoom_factor() * 100) - self._zoom_label.setText(f"{percent}%") - - def _download_requested(self, item): - # Remove old downloads before opening a new one - for old_download in self.statusBar().children(): - if (type(old_download).__name__ == 'DownloadWidget' and - old_download.state() != QWebEngineDownloadItem.DownloadInProgress): - self.statusBar().removeWidget(old_download) - del old_download - - item.accept() - download_widget = DownloadWidget(item) - download_widget.remove_requested.connect(self._remove_download_requested, - Qt.QueuedConnection) - self.statusBar().addWidget(download_widget) - - def _remove_download_requested(self): - download_widget = self.sender() - self.statusBar().removeWidget(download_widget) - del download_widget - - def _show_find(self): - if self._find_tool_bar is None: - self._find_tool_bar = FindToolBar() - self._find_tool_bar.find.connect(self._tab_widget.find) - self.addToolBar(Qt.BottomToolBarArea, self._find_tool_bar) - else: - self._find_tool_bar.show() - self._find_tool_bar.focus_find() - - def write_bookmarks(self): - self._bookmark_widget.write_bookmarks() - - -if __name__ == '__main__': - app = QApplication(sys.argv) - main_win = create_main_window() - initial_urls = sys.argv[1:] - if not initial_urls: - initial_urls.append('http://qt.io') - for url in initial_urls: - main_win.load_url_in_new_tab(QUrl.fromUserInput(url)) - exit_code = app.exec() - main_win.write_bookmarks() - sys.exit(exit_code) |