1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
|
# Copyright (C) 2023 The Qt Company Ltd.
# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
from PySide6.QtWidgets import QLineEdit, QSizePolicy, QWidget, QVBoxLayout
from PySide6.QtGui import QAction
from PySide6.QtCore import QUrl, Qt, Slot
from webpage import WebPage
class WebPopupWindow(QWidget):
def __init__(self, view, profile, parent=None):
super().__init__(parent, Qt.Window)
self.m_urlLineEdit = QLineEdit(self)
self._url_line_edit = QLineEdit()
self._fav_action = QAction(self)
self._view = view
self.setAttribute(Qt.WA_DeleteOnClose)
self.setSizePolicy(QSizePolicy.Minimum, QSizePolicy.Minimum)
layout = QVBoxLayout(self)
layout.setContentsMargins(0, 0, 0, 0)
layout.addWidget(self._url_line_edit)
layout.addWidget(self._view)
self._view.setPage(WebPage(profile, self._view))
self._view.setFocus()
self._url_line_edit.setReadOnly(True)
self._url_line_edit.addAction(self._fav_action, QLineEdit.LeadingPosition)
self._view.titleChanged.connect(self.setWindowTitle)
self._view.urlChanged.connect(self._url_changed)
self._view.fav_icon_changed.connect(self._fav_action.setIcon)
p = self._view.page()
p.geometryChangeRequested.connect(self.handle_geometry_change_requested)
p.windowCloseRequested.connect(self.close)
@Slot(QUrl)
def _url_changed(self, url):
self._url_line_edit.setText(url.toDisplayString())
def view(self):
return self._view
def handle_geometry_change_requested(self, newGeometry):
window = self.windowHandle()
if window:
self.setGeometry(newGeometry.marginsRemoved(window.frameMargins()))
self.show()
self._view.setFocus()
|