Helpviewer/AdBlock/AdBlockIcon.py

changeset 1972
5341662d6cfb
parent 1970
02cf3bac079b
child 2302
f29e9405c851
diff -r a68d78702c98 -r 5341662d6cfb Helpviewer/AdBlock/AdBlockIcon.py
--- a/Helpviewer/AdBlock/AdBlockIcon.py	Sat Aug 04 13:46:18 2012 +0200
+++ b/Helpviewer/AdBlock/AdBlockIcon.py	Sat Aug 04 17:32:24 2012 +0200
@@ -46,11 +46,11 @@
         
         @param enabled enabled state (boolean)
         """
+        self.__enabled = enabled
         if enabled:
-            self.setPixmap(UI.PixmapCache.getPixmap("adBlockPlus16.png"))
+            self.currentChanged()
         else:
             self.setPixmap(UI.PixmapCache.getPixmap("adBlockPlusDisabled16.png"))
-        self.__enabled = enabled
     
     def __createMenu(self, menu=None):
         """
@@ -74,8 +74,21 @@
             menu.addAction(UI.PixmapCache.getIcon("adBlockPlus.png"),
                 self.trUtf8("Enable AdBlock"), self.__enableAdBlock).setData(True)
         menu.addSeparator()
+        if manager.isEnabled() and \
+           self.__mw.currentBrowser().page().url().host():
+            if self.__isCurrentHostExcepted():
+                menu.addAction(UI.PixmapCache.getIcon("adBlockPlus.png"),
+                    self.trUtf8("Remove AdBlock Exception"),
+                    self.__setException).setData(False)
+            else:
+                menu.addAction(UI.PixmapCache.getIcon("adBlockPlusGreen.png"),
+                    self.trUtf8("Add AdBlock Exception"),
+                    self.__setException).setData(True)
+        menu.addAction(UI.PixmapCache.getIcon("adBlockPlusGreen.png"),
+            self.trUtf8("AdBlock Exceptions..."), manager.showExceptionsDialog)
+        menu.addSeparator()
         menu.addAction(UI.PixmapCache.getIcon("adBlockPlus.png"),
-            self.trUtf8("AdBlock Configuration"), manager.showDialog)
+            self.trUtf8("AdBlock Configuration..."), manager.showDialog)
         menu.addSeparator()
         
         entries = self.__mw.currentBrowser().page().getAdBlockedPageEntries()
@@ -127,3 +140,48 @@
         act = self.sender()
         if act is not None:
             Helpviewer.HelpWindow.HelpWindow.adBlockManager().setEnabled(act.data())
+    
+    def __isCurrentHostExcepted(self):
+        """
+        Private method to check, if the host of the current browser is excepted.
+        
+        @return flag indicating an exception (boolean)
+        """
+        browser = self.__mw.currentBrowser()
+        urlHost = browser.page().url().host()
+        
+        return urlHost and \
+               Helpviewer.HelpWindow.HelpWindow.adBlockManager().isHostExcepted(urlHost)
+    
+    def currentChanged(self):
+        """
+        Public slot to handle a change of the current browser tab.
+        """
+        if self.__enabled:
+            if self.__isCurrentHostExcepted():
+                self.setPixmap(UI.PixmapCache.getPixmap("adBlockPlusGreen16.png"))
+            else:
+                self.setPixmap(UI.PixmapCache.getPixmap("adBlockPlus16.png"))
+    
+    def __setException(self):
+        """
+        Private slot to add or remove the current host from the list of exceptions.
+        """
+        act = self.sender()
+        if act is not None:
+            urlHost = self.__mw.currentBrowser().page().url().host()
+            if act.data():
+                Helpviewer.HelpWindow.HelpWindow.adBlockManager().addException(urlHost)
+            else:
+                Helpviewer.HelpWindow.HelpWindow.adBlockManager().removeException(urlHost)
+            self.currentChanged()
+    
+    def sourceChanged(self, browser, url):
+        """
+        Public slot to handle URL changes.
+        
+        @param browser reference to the browser (HelpBrowser)
+        @param url new URL (QUrl)
+        """
+        if browser == self.__mw.currentBrowser():
+            self.currentChanged()

eric ide

mercurial