Helpviewer/UrlBar/UrlBar.py

changeset 661
f9d49e0c2522
parent 658
2856f7ea6780
child 753
e19a516f0a97
--- a/Helpviewer/UrlBar/UrlBar.py	Fri Oct 08 08:42:18 2010 +0200
+++ b/Helpviewer/UrlBar/UrlBar.py	Fri Oct 08 20:43:11 2010 +0200
@@ -7,16 +7,19 @@
 Module implementing the URL bar widget.
 """
 
-from PyQt4.QtCore import Qt, QPointF, QUrl
-from PyQt4.QtGui import QColor, QPalette, QApplication, QLinearGradient
+from PyQt4.QtCore import pyqtSlot, Qt, QPointF, QUrl
+from PyQt4.QtGui import QColor, QPalette, QApplication, QLinearGradient, QIcon
 from PyQt4.QtNetwork import QSslCertificate
 from PyQt4.QtWebKit import QWebSettings
 
 from E5Gui.E5LineEdit import E5LineEdit
 from E5Gui.E5LineEditButton import E5LineEditButton
 
+import Helpviewer.HelpWindow
+
 from .FavIconLabel import FavIconLabel
 from .SslLabel import SslLabel
+from .BookmarkInfoDialog import BookmarkInfoDialog
 
 import UI.PixmapCache
 import Preferences
@@ -40,6 +43,9 @@
         self.__privateMode = QWebSettings.globalSettings().testAttribute(
             QWebSettings.PrivateBrowsingEnabled)
         
+        self.__bmActiveIcon = UI.PixmapCache.getIcon("bookmark.png")
+        self.__bmInactiveIcon = QIcon(self.__bmActiveIcon.pixmap(16, 16, QIcon.Disabled))
+        
         self.__favicon = FavIconLabel(self)
         self.addWidget(self.__favicon, E5LineEdit.LeftSide)
         
@@ -54,15 +60,27 @@
         self.addWidget(self.__privacyButton, E5LineEdit.RightSide)
         self.__privacyButton.setVisible(self.__privateMode)
         
+        self.__bookmarkButton = E5LineEditButton(self)
+        self.addWidget(self.__bookmarkButton, E5LineEdit.RightSide)
+        self.__bookmarkButton.setVisible(False)
+        
         self.__clearButton = E5LineEditButton(self)
         self.__clearButton.setIcon(UI.PixmapCache.getIcon("clearLeft.png"))
         self.addWidget(self.__clearButton, E5LineEdit.RightSide)
         self.__clearButton.setVisible(False)
         
+        self.__bookmarkButton.clicked[()].connect(self.__showBookmarkInfo)
         self.__privacyButton.clicked[()].connect(self.__privacyClicked)
         self.__clearButton.clicked[()].connect(self.clear)
         self.__mw.privacyChanged.connect(self.__privacyButton.setVisible)
         self.textChanged.connect(self.__textChanged)
+        
+        Helpviewer.HelpWindow.HelpWindow.bookmarksManager().entryChanged.connect(
+            self.__bookmarkChanged)
+        Helpviewer.HelpWindow.HelpWindow.bookmarksManager().entryAdded.connect(
+            self.__bookmarkChanged)
+        Helpviewer.HelpWindow.HelpWindow.bookmarksManager().entryRemoved.connect(
+            self.__bookmarkChanged)
     
     def setBrowser(self, browser):
         """
@@ -100,6 +118,7 @@
         Private slot to perform actions before the page is loaded.
         """
         self.__sslLabel.setVisible(False)
+        self.__bookmarkButton.setVisible(False)
     
     def __loadFinished(self, ok):
         """
@@ -107,6 +126,16 @@
         
         @param ok flag indicating a successful load (boolean)
         """
+        if self.__browser.url().scheme() in ["pyrc", "about"]:
+            self.__bookmarkButton.setVisible(False)
+        else:
+            if Helpviewer.HelpWindow.HelpWindow.bookmarksManager()\
+               .bookmarkForUrl(self.__browser.url()) is None:
+                self.__bookmarkButton.setIcon(self.__bmInactiveIcon)
+            else:
+                self.__bookmarkButton.setIcon(self.__bmActiveIcon)
+            self.__bookmarkButton.setVisible(True)
+        
         if ok and self.__browser.url().scheme() == "https":
             sslInfo = self.__browser.page().getSslInfo()
             if sslInfo is not None:
@@ -152,6 +181,29 @@
         """
         self.update()
     
+    def __showBookmarkInfo(self):
+        """
+        Private slot to show a dialog with some bookmark info.
+        """
+        bookmark = Helpviewer.HelpWindow.HelpWindow.bookmarksManager()\
+           .bookmarkForUrl(self.__browser.url())
+        if bookmark is None:
+            self.__browser.addBookmark()
+        else:
+            dlg = BookmarkInfoDialog(bookmark, self.__browser)
+            dlg.exec_()
+    
+    @pyqtSlot()
+    def __bookmarkChanged(self):
+        """
+        Private slot to handle bookmark changes.
+        """
+        if Helpviewer.HelpWindow.HelpWindow.bookmarksManager()\
+           .bookmarkForUrl(self.__browser.url()) is None:
+            self.__bookmarkButton.setIcon(self.__bmInactiveIcon)
+        else:
+            self.__bookmarkButton.setIcon(self.__bmActiveIcon)
+    
     def paintEvent(self, evt):
         """
         Protected method handling a paint event.

eric ide

mercurial