14 try: |
14 try: |
15 from PyQt6.QtNetwork import QSslCertificate # __IGNORE_EXCEPTION__ |
15 from PyQt6.QtNetwork import QSslCertificate # __IGNORE_EXCEPTION__ |
16 except ImportError: |
16 except ImportError: |
17 QSslCertificate = None # __IGNORE_WARNING__ |
17 QSslCertificate = None # __IGNORE_WARNING__ |
18 |
18 |
19 from E5Gui.E5LineEdit import E5LineEdit, E5LineEditSide |
19 from E5Gui.EricLineEdit import EricLineEdit, EricLineEditSide |
20 from E5Gui.E5LineEditButton import E5LineEditButton |
20 from E5Gui.EricLineEditButton import EricLineEditButton |
21 |
21 |
22 from WebBrowser.WebBrowserWindow import WebBrowserWindow |
22 from WebBrowser.WebBrowserWindow import WebBrowserWindow |
23 |
23 |
24 from WebBrowser.SafeBrowsing.SafeBrowsingLabel import SafeBrowsingLabel |
24 from WebBrowser.SafeBrowsing.SafeBrowsingLabel import SafeBrowsingLabel |
25 |
25 |
29 import UI.PixmapCache |
29 import UI.PixmapCache |
30 import Preferences |
30 import Preferences |
31 import Utilities |
31 import Utilities |
32 |
32 |
33 |
33 |
34 class UrlBar(E5LineEdit): |
34 class UrlBar(EricLineEdit): |
35 """ |
35 """ |
36 Class implementing a line edit for entering URLs. |
36 Class implementing a line edit for entering URLs. |
37 """ |
37 """ |
38 def __init__(self, mainWindow, parent=None): |
38 def __init__(self, mainWindow, parent=None): |
39 """ |
39 """ |
40 Constructor |
40 Constructor |
41 |
41 |
42 @param mainWindow reference to the main window (WebBrowserWindow) |
42 @param mainWindow reference to the main window (WebBrowserWindow) |
43 @param parent reference to the parent widget (WebBrowserView) |
43 @param parent reference to the parent widget (WebBrowserView) |
44 """ |
44 """ |
45 E5LineEdit.__init__(self, parent) |
45 EricLineEdit.__init__(self, parent) |
46 self.setPlaceholderText(self.tr("Enter the URL here.")) |
46 self.setPlaceholderText(self.tr("Enter the URL here.")) |
47 self.setWhatsThis(self.tr("Enter the URL here.")) |
47 self.setWhatsThis(self.tr("Enter the URL here.")) |
48 |
48 |
49 self.__mw = mainWindow |
49 self.__mw = mainWindow |
50 self.__browser = None |
50 self.__browser = None |
53 self.__bmActiveIcon = UI.PixmapCache.getIcon("bookmark16") |
53 self.__bmActiveIcon = UI.PixmapCache.getIcon("bookmark16") |
54 self.__bmInactiveIcon = QIcon( |
54 self.__bmInactiveIcon = QIcon( |
55 self.__bmActiveIcon.pixmap(16, 16, QIcon.Mode.Disabled)) |
55 self.__bmActiveIcon.pixmap(16, 16, QIcon.Mode.Disabled)) |
56 |
56 |
57 self.__safeBrowsingLabel = SafeBrowsingLabel(self) |
57 self.__safeBrowsingLabel = SafeBrowsingLabel(self) |
58 self.addWidget(self.__safeBrowsingLabel, E5LineEditSide.LEFT) |
58 self.addWidget(self.__safeBrowsingLabel, EricLineEditSide.LEFT) |
59 self.__safeBrowsingLabel.setVisible(False) |
59 self.__safeBrowsingLabel.setVisible(False) |
60 |
60 |
61 self.__favicon = FavIconLabel(self) |
61 self.__favicon = FavIconLabel(self) |
62 self.addWidget(self.__favicon, E5LineEditSide.LEFT) |
62 self.addWidget(self.__favicon, EricLineEditSide.LEFT) |
63 |
63 |
64 self.__sslLabel = SslLabel(self) |
64 self.__sslLabel = SslLabel(self) |
65 self.addWidget(self.__sslLabel, E5LineEditSide.LEFT) |
65 self.addWidget(self.__sslLabel, EricLineEditSide.LEFT) |
66 self.__sslLabel.setVisible(False) |
66 self.__sslLabel.setVisible(False) |
67 |
67 |
68 self.__rssButton = E5LineEditButton(self) |
68 self.__rssButton = EricLineEditButton(self) |
69 self.__rssButton.setIcon(UI.PixmapCache.getIcon("rss16")) |
69 self.__rssButton.setIcon(UI.PixmapCache.getIcon("rss16")) |
70 self.addWidget(self.__rssButton, E5LineEditSide.RIGHT) |
70 self.addWidget(self.__rssButton, EricLineEditSide.RIGHT) |
71 self.__rssButton.setVisible(False) |
71 self.__rssButton.setVisible(False) |
72 |
72 |
73 self.__bookmarkButton = E5LineEditButton(self) |
73 self.__bookmarkButton = EricLineEditButton(self) |
74 self.addWidget(self.__bookmarkButton, E5LineEditSide.RIGHT) |
74 self.addWidget(self.__bookmarkButton, EricLineEditSide.RIGHT) |
75 self.__bookmarkButton.setVisible(False) |
75 self.__bookmarkButton.setVisible(False) |
76 |
76 |
77 self.__clearButton = E5LineEditButton(self) |
77 self.__clearButton = EricLineEditButton(self) |
78 self.__clearButton.setIcon(UI.PixmapCache.getIcon("clearLeft")) |
78 self.__clearButton.setIcon(UI.PixmapCache.getIcon("clearLeft")) |
79 self.addWidget(self.__clearButton, E5LineEditSide.RIGHT) |
79 self.addWidget(self.__clearButton, EricLineEditSide.RIGHT) |
80 self.__clearButton.setVisible(False) |
80 self.__clearButton.setVisible(False) |
81 |
81 |
82 self.__safeBrowsingLabel.clicked.connect(self.__showThreatInfo) |
82 self.__safeBrowsingLabel.clicked.connect(self.__showThreatInfo) |
83 self.__bookmarkButton.clicked.connect(self.__showBookmarkInfo) |
83 self.__bookmarkButton.clicked.connect(self.__showBookmarkInfo) |
84 self.__rssButton.clicked.connect(self.__rssClicked) |
84 self.__rssButton.clicked.connect(self.__rssClicked) |
287 gradient.setColorAt(progress / 100.0, backgroundColor) |
287 gradient.setColorAt(progress / 100.0, backgroundColor) |
288 p.setBrush(QPalette.ColorRole.Base, gradient) |
288 p.setBrush(QPalette.ColorRole.Base, gradient) |
289 |
289 |
290 self.setPalette(p) |
290 self.setPalette(p) |
291 |
291 |
292 E5LineEdit.paintEvent(self, evt) |
292 EricLineEdit.paintEvent(self, evt) |
293 |
293 |
294 def focusOutEvent(self, evt): |
294 def focusOutEvent(self, evt): |
295 """ |
295 """ |
296 Protected method to handle focus out event. |
296 Protected method to handle focus out event. |
297 |
297 |
298 @param evt reference to the focus event (QFocusEvent) |
298 @param evt reference to the focus event (QFocusEvent) |
299 """ |
299 """ |
300 if self.text() == "" and self.__browser is not None: |
300 if self.text() == "" and self.__browser is not None: |
301 self.__browserUrlChanged(self.__browser.url()) |
301 self.__browserUrlChanged(self.__browser.url()) |
302 E5LineEdit.focusOutEvent(self, evt) |
302 EricLineEdit.focusOutEvent(self, evt) |
303 |
303 |
304 def mousePressEvent(self, evt): |
304 def mousePressEvent(self, evt): |
305 """ |
305 """ |
306 Protected method called by a mouse press event. |
306 Protected method called by a mouse press event. |
307 |
307 |
379 """ |
379 """ |
380 mimeData = evt.mimeData() |
380 mimeData = evt.mimeData() |
381 if mimeData.hasUrls() or mimeData.hasText(): |
381 if mimeData.hasUrls() or mimeData.hasText(): |
382 evt.acceptProposedAction() |
382 evt.acceptProposedAction() |
383 |
383 |
384 E5LineEdit.dragEnterEvent(self, evt) |
384 EricLineEdit.dragEnterEvent(self, evt) |
385 |
385 |
386 def dropEvent(self, evt): |
386 def dropEvent(self, evt): |
387 """ |
387 """ |
388 Protected method to handle drop events. |
388 Protected method to handle drop events. |
389 |
389 |
397 elif mimeData.hasText(): |
397 elif mimeData.hasText(): |
398 url = QUrl.fromEncoded(mimeData.text().encode("utf-8"), |
398 url = QUrl.fromEncoded(mimeData.text().encode("utf-8"), |
399 QUrl.ParsingMode.TolerantMode) |
399 QUrl.ParsingMode.TolerantMode) |
400 |
400 |
401 if url.isEmpty() or not url.isValid(): |
401 if url.isEmpty() or not url.isValid(): |
402 E5LineEdit.dropEvent(self, evt) |
402 EricLineEdit.dropEvent(self, evt) |
403 return |
403 return |
404 |
404 |
405 self.setText(str(url.toEncoded(), encoding="utf-8")) |
405 self.setText(str(url.toEncoded(), encoding="utf-8")) |
406 self.selectAll() |
406 self.selectAll() |
407 |
407 |