--- a/Helpviewer/AdBlock/AdBlockIcon.py Tue Feb 06 19:21:00 2018 +0100 +++ b/Helpviewer/AdBlock/AdBlockIcon.py Wed Feb 07 18:57:46 2018 +0100 @@ -53,45 +53,45 @@ self.setPixmap( UI.PixmapCache.getPixmap("adBlockPlusDisabled16.png")) - def __createMenu(self, menu=None): + def __createMenu(self, menu): """ Private slot to create the context menu. - @param menu parent menu (QMenu) + @param menu parent menu + @type QMenu """ - if menu is None: - menu = self.sender() - if menu is None: - return - menu.clear() import Helpviewer.HelpWindow manager = Helpviewer.HelpWindow.HelpWindow.adBlockManager() if manager.isEnabled(): - menu.addAction( + act = menu.addAction( UI.PixmapCache.getIcon("adBlockPlusDisabled.png"), - self.tr("Disable AdBlock"), - self.__enableAdBlock).setData(False) + self.tr("Disable AdBlock")) + act.setData(False) + act.triggered.connect(lambda: self.__enableAdBlock(act)) else: - menu.addAction( + act = menu.addAction( UI.PixmapCache.getIcon("adBlockPlus.png"), - self.tr("Enable AdBlock"), - self.__enableAdBlock).setData(True) + self.tr("Enable AdBlock")) + act.setData(True) + act.triggered.connect(lambda: self.__enableAdBlock(act)) menu.addSeparator() if manager.isEnabled() and \ self.__mw.currentBrowser().page().url().host(): if self.__isCurrentHostExcepted(): - menu.addAction( + act = menu.addAction( UI.PixmapCache.getIcon("adBlockPlus.png"), - self.tr("Remove AdBlock Exception"), - self.__setException).setData(False) + self.tr("Remove AdBlock Exception")) + act.setData(False) + act.triggered.connect(lambda: self.__setException(act)) else: - menu.addAction( + act = menu.addAction( UI.PixmapCache.getIcon("adBlockPlusGreen.png"), - self.tr("Add AdBlock Exception"), - self.__setException).setData(True) + self.tr("Add AdBlock Exception")) + act.setData(True) + act.triggered.connect(lambda: self.__setException(act)) menu.addAction( UI.PixmapCache.getIcon("adBlockPlusGreen.png"), self.tr("AdBlock Exceptions..."), manager.showExceptionsDialog) @@ -110,8 +110,9 @@ address = entry.urlString()[-55:] actionText = self.tr("{0} with ({1})").format( address, entry.rule.filter()).replace("&", "&&") - act = menu.addAction(actionText, manager.showRule) + act = menu.addAction(actionText) act.setData(entry.rule) + act.triggered.connect(lambda: manager.showRule(act)) else: menu.addAction(self.tr("No content blocked")).setEnabled(False) @@ -124,7 +125,8 @@ if not self.__menuAction: self.__menuAction = QAction(self.tr("AdBlock"), self) self.__menuAction.setMenu(QMenu()) - self.__menuAction.menu().aboutToShow.connect(self.__createMenu) + self.__menuAction.menu().aboutToShow.connect( + lambda: self.__createMenu(self.__menuAction.menu())) if self.__enabled: self.__menuAction.setIcon( @@ -145,15 +147,16 @@ self.__createMenu(menu) menu.exec_(pos) - def __enableAdBlock(self): + def __enableAdBlock(self, act): """ Private slot to enable or disable AdBlock. + + @param act reference to the action + @type QAction """ - act = self.sender() - if act is not None: - import Helpviewer.HelpWindow - Helpviewer.HelpWindow.HelpWindow.adBlockManager().setEnabled( - act.data()) + import Helpviewer.HelpWindow + Helpviewer.HelpWindow.HelpWindow.adBlockManager().setEnabled( + act.data()) def __isCurrentHostExcepted(self): """ @@ -184,22 +187,23 @@ else: self.setPixmap(UI.PixmapCache.getPixmap("adBlockPlus16.png")) - def __setException(self): + def __setException(self, act): """ Private slot to add or remove the current host from the list of exceptions. + + @param act referenced to the action + @type QAction """ - act = self.sender() - if act is not None: - import Helpviewer.HelpWindow - 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() + import Helpviewer.HelpWindow + 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): """