eric7/WebBrowser/UrlBar/UrlBar.py

branch
eric7
changeset 8556
766e1566cb74
parent 8553
10d31e5ce9e5
child 8857
8191d15b8974
--- a/eric7/WebBrowser/UrlBar/UrlBar.py	Sun Aug 29 17:48:26 2021 +0200
+++ b/eric7/WebBrowser/UrlBar/UrlBar.py	Sun Aug 29 17:48:44 2021 +0200
@@ -9,15 +9,14 @@
 
 from PyQt6.QtCore import pyqtSlot, Qt, QPointF, QUrl, QDateTime, QTimer, QPoint
 from PyQt6.QtGui import QColor, QPalette, QLinearGradient, QIcon
-from PyQt6.QtWidgets import QDialog, QApplication
+from PyQt6.QtWidgets import QDialog, QApplication, QLineEdit
 from PyQt6.QtWebEngineCore import QWebEnginePage
 try:
     from PyQt6.QtNetwork import QSslCertificate     # __IGNORE_EXCEPTION__
 except ImportError:
     QSslCertificate = None      # __IGNORE_WARNING__
 
-from EricWidgets.EricLineEdit import EricLineEdit, EricLineEditSide
-from EricWidgets.EricLineEditButton import EricLineEditButton
+from EricWidgets.EricLineEdit import EricClearableLineEdit, EricLineEditSide
 
 from WebBrowser.WebBrowserWindow import WebBrowserWindow
 
@@ -31,7 +30,7 @@
 import Utilities
 
 
-class UrlBar(EricLineEdit):
+class UrlBar(EricClearableLineEdit):
     """
     Class implementing a line edit for entering URLs.
     """
@@ -42,7 +41,7 @@
         @param mainWindow reference to the main window (WebBrowserWindow)
         @param parent reference to the parent widget (WebBrowserView)
         """
-        EricLineEdit.__init__(self, parent)
+        super().__init__(parent)
         self.setPlaceholderText(self.tr("Enter the URL here."))
         self.setWhatsThis(self.tr("Enter the URL here."))
         
@@ -65,25 +64,19 @@
         self.addWidget(self.__sslLabel, EricLineEditSide.LEFT)
         self.__sslLabel.setVisible(False)
         
-        self.__rssButton = EricLineEditButton(self)
-        self.__rssButton.setIcon(UI.PixmapCache.getIcon("rss16"))
-        self.addWidget(self.__rssButton, EricLineEditSide.RIGHT)
-        self.__rssButton.setVisible(False)
+        self.__rssAction = self.addAction(
+            UI.PixmapCache.getIcon("rss16"),
+            QLineEdit.ActionPosition.TrailingPosition)
+        self.__rssAction.setVisible(False)
         
-        self.__bookmarkButton = EricLineEditButton(self)
-        self.addWidget(self.__bookmarkButton, EricLineEditSide.RIGHT)
-        self.__bookmarkButton.setVisible(False)
-        
-        self.__clearButton = EricLineEditButton(self)
-        self.__clearButton.setIcon(UI.PixmapCache.getIcon("clearLeft"))
-        self.addWidget(self.__clearButton, EricLineEditSide.RIGHT)
-        self.__clearButton.setVisible(False)
+        self.__bookmarkAction = self.addAction(
+            self.__bmInactiveIcon,
+            QLineEdit.ActionPosition.TrailingPosition)
+        self.__bookmarkAction.setVisible(False)
         
         self.__safeBrowsingLabel.clicked.connect(self.__showThreatInfo)
-        self.__bookmarkButton.clicked.connect(self.__showBookmarkInfo)
-        self.__rssButton.clicked.connect(self.__rssClicked)
-        self.__clearButton.clicked.connect(self.clear)
-        self.textChanged.connect(self.__textChanged)
+        self.__bookmarkAction.triggered.connect(self.__showBookmarkInfo)
+        self.__rssAction.triggered.connect(self.__rssTriggered)
         
         self.__mw.bookmarksManager().entryChanged.connect(
             self.__bookmarkChanged)
@@ -142,8 +135,8 @@
         """
         Private slot to perform actions before the page is loaded.
         """
-        self.__bookmarkButton.setVisible(False)
-        self.__rssButton.setVisible(False)
+        self.__bookmarkAction.setVisible(False)
+        self.__rssAction.setVisible(False)
         self.__sslLabel.setVisible(False)
     
     def __checkBookmark(self):
@@ -152,16 +145,16 @@
         """
         manager = self.__mw.bookmarksManager()
         if manager.bookmarkForUrl(self.__browser.url()) is not None:
-            self.__bookmarkButton.setIcon(self.__bmActiveIcon)
+            self.__bookmarkAction.setIcon(self.__bmActiveIcon)
             bookmarks = manager.bookmarksForUrl(self.__browser.url())
             from WebBrowser.Bookmarks.BookmarkNode import BookmarkNode
             for bookmark in bookmarks:
                 manager.setTimestamp(bookmark, BookmarkNode.TsVisited,
                                      QDateTime.currentDateTime())
         elif self.__mw.speedDial().pageForUrl(self.__browser.url()).url != "":
-            self.__bookmarkButton.setIcon(self.__bmActiveIcon)
+            self.__bookmarkAction.setIcon(self.__bmActiveIcon)
         else:
-            self.__bookmarkButton.setIcon(self.__bmInactiveIcon)
+            self.__bookmarkAction.setIcon(self.__bmInactiveIcon)
     
     def __loadFinished(self, ok):
         """
@@ -170,10 +163,10 @@
         @param ok flag indicating a successful load (boolean)
         """
         if self.__browser.url().scheme() in ["eric", "about"]:
-            self.__bookmarkButton.setVisible(False)
+            self.__bookmarkAction.setVisible(False)
         else:
             self.__checkBookmark()
-            self.__bookmarkButton.setVisible(True)
+            self.__bookmarkAction.setVisible(True)
         
         self.__browserUrlChanged(self.__browser.url())
         self.__safeBrowsingLabel.setVisible(
@@ -182,20 +175,13 @@
         if ok:
             QTimer.singleShot(0, self.__setRssButton)
     
-    def __textChanged(self, txt):
-        """
-        Private slot to handle changes of the text.
-        
-        @param txt current text (string)
-        """
-        self.__clearButton.setVisible(txt != "")
-    
     def preferencesChanged(self):
         """
         Public slot to handle a change of preferences.
         """
         self.update()
     
+    @pyqtSlot()
     def __showBookmarkInfo(self):
         """
         Private slot to show a dialog with some bookmark info.
@@ -289,7 +275,7 @@
             
             self.setPalette(p)
         
-        EricLineEdit.paintEvent(self, evt)
+        super().paintEvent(evt)
     
     def focusOutEvent(self, evt):
         """
@@ -299,7 +285,7 @@
         """
         if self.text() == "" and self.__browser is not None:
             self.__browserUrlChanged(self.__browser.url())
-        EricLineEdit.focusOutEvent(self, evt)
+        super().focusOutEvent(evt)
     
     def mousePressEvent(self, evt):
         """
@@ -325,7 +311,7 @@
         if evt.button() == Qt.MouseButton.LeftButton:
             self.selectAll()
         else:
-            EricLineEdit.mouseDoubleClickEvent(self, evt)
+            super().mouseDoubleClickEvent(evt)
     
     def keyPressEvent(self, evt):
         """
@@ -369,7 +355,7 @@
                     url.setHost(host)
                     self.setText(url.toString())
         
-        EricLineEdit.keyPressEvent(self, evt)
+        super().keyPressEvent(evt)
     
     def dragEnterEvent(self, evt):
         """
@@ -381,7 +367,7 @@
         if mimeData.hasUrls() or mimeData.hasText():
             evt.acceptProposedAction()
         
-        EricLineEdit.dragEnterEvent(self, evt)
+        super().dragEnterEvent(evt)
     
     def dropEvent(self, evt):
         """
@@ -399,7 +385,7 @@
                                    QUrl.ParsingMode.TolerantMode)
         
         if url.isEmpty() or not url.isValid():
-            EricLineEdit.dropEvent(self, evt)
+            super().dropEvent(evt)
             return
         
         self.setText(str(url.toEncoded(), encoding="utf-8"))
@@ -411,9 +397,10 @@
         """
         Private slot to show the RSS button.
         """
-        self.__rssButton.setVisible(self.__browser.checkRSS())
+        self.__rssAction.setVisible(self.__browser.checkRSS())
     
-    def __rssClicked(self):
+    @pyqtSlot()
+    def __rssTriggered(self):
         """
         Private slot to handle clicking the RSS icon.
         """

eric ide

mercurial