eric6/Helpviewer/AdBlock/AdBlockDialog.py

changeset 7220
5cf645f6daab
parent 7218
eaf2cf171f3a
parent 7211
1c97f3142fa8
child 7221
0485ccdf7877
--- a/eric6/Helpviewer/AdBlock/AdBlockDialog.py	Sat Sep 07 14:45:27 2019 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,346 +0,0 @@
-# -*- coding: utf-8 -*-
-
-# Copyright (c) 2009 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
-#
-
-"""
-Module implementing the AdBlock configuration dialog.
-"""
-
-from __future__ import unicode_literals
-
-from PyQt5.QtCore import pyqtSlot, Qt, QTimer, QCoreApplication
-from PyQt5.QtWidgets import QDialog, QMenu, QToolButton
-
-from E5Gui import E5MessageBox
-
-from .Ui_AdBlockDialog import Ui_AdBlockDialog
-
-import UI.PixmapCache
-import Preferences
-
-
-class AdBlockDialog(QDialog, Ui_AdBlockDialog):
-    """
-    Class implementing the AdBlock configuration dialog.
-    """
-    def __init__(self, parent=None):
-        """
-        Constructor
-        
-        @param parent reference to the parent object (QWidget)
-        """
-        super(AdBlockDialog, self).__init__(parent)
-        self.setupUi(self)
-        self.setWindowFlags(Qt.Window)
-        
-        self.iconLabel.setPixmap(UI.PixmapCache.getPixmap("adBlockPlus48.png"))
-        
-        self.updateSpinBox.setValue(Preferences.getHelp("AdBlockUpdatePeriod"))
-        
-        self.searchEdit.setInactiveText(self.tr("Search..."))
-        
-        import Helpviewer.HelpWindow
-        self.__manager = Helpviewer.HelpWindow.HelpWindow.adBlockManager()
-        self.adBlockGroup.setChecked(self.__manager.isEnabled())
-        self.__manager.requiredSubscriptionLoaded.connect(self.addSubscription)
-        
-        self.__currentTreeWidget = None
-        self.__currentSubscription = None
-        self.__loaded = False
-        
-        menu = QMenu(self)
-        menu.aboutToShow.connect(self.__aboutToShowActionMenu)
-        self.actionButton.setMenu(menu)
-        self.actionButton.setIcon(UI.PixmapCache.getIcon("adBlockAction.png"))
-        self.actionButton.setPopupMode(QToolButton.InstantPopup)
-        
-        self.__load()
-        
-        self.buttonBox.setFocus()
-    
-    def __loadSubscriptions(self):
-        """
-        Private slot to load the AdBlock subscription rules.
-        """
-        for index in range(self.subscriptionsTabWidget.count()):
-            tree = self.subscriptionsTabWidget.widget(index)
-            tree.refresh()
-    
-    def __load(self):
-        """
-        Private slot to populate the tab widget with subscriptions.
-        """
-        if self.__loaded or not self.adBlockGroup.isChecked():
-            return
-        
-        from .AdBlockTreeWidget import AdBlockTreeWidget
-        for subscription in self.__manager.subscriptions():
-            tree = AdBlockTreeWidget(subscription, self.subscriptionsTabWidget)
-            if subscription.isEnabled():
-                icon = UI.PixmapCache.getIcon("adBlockPlus.png")
-            else:
-                icon = UI.PixmapCache.getIcon("adBlockPlusDisabled.png")
-            self.subscriptionsTabWidget.addTab(
-                tree, icon, subscription.title())
-        
-        self.__loaded = True
-        QCoreApplication.processEvents()
-        
-        QTimer.singleShot(50, self.__loadSubscriptions)
-    
-    def addSubscription(self, subscription, refresh=True):
-        """
-        Public slot adding a subscription to the list.
-        
-        @param subscription reference to the subscription to be
-            added (AdBlockSubscription)
-        @param refresh flag indicating to refresh the tree (boolean)
-        """
-        from .AdBlockTreeWidget import AdBlockTreeWidget
-        tree = AdBlockTreeWidget(subscription, self.subscriptionsTabWidget)
-        index = self.subscriptionsTabWidget.insertTab(
-            self.subscriptionsTabWidget.count() - 1, tree,
-            subscription.title())
-        self.subscriptionsTabWidget.setCurrentIndex(index)
-        QCoreApplication.processEvents()
-        if refresh:
-            tree.refresh()
-        self.__setSubscriptionEnabled(subscription, True)
-    
-    def __aboutToShowActionMenu(self):
-        """
-        Private slot to show the actions menu.
-        """
-        subscriptionEditable = self.__currentSubscription and \
-            self.__currentSubscription.canEditRules()
-        subscriptionRemovable = self.__currentSubscription and \
-            self.__currentSubscription.canBeRemoved()
-        subscriptionEnabled = self.__currentSubscription and \
-            self.__currentSubscription.isEnabled()
-        
-        menu = self.actionButton.menu()
-        menu.clear()
-        
-        menu.addAction(self.tr("Add Rule"), self.__addCustomRule)\
-            .setEnabled(subscriptionEditable)
-        menu.addAction(self.tr("Remove Rule"), self.__removeCustomRule)\
-            .setEnabled(subscriptionEditable)
-        menu.addSeparator()
-        menu.addAction(
-            self.tr("Browse Subscriptions..."), self.__browseSubscriptions)
-        menu.addAction(
-            self.tr("Remove Subscription"), self.__removeSubscription)\
-            .setEnabled(subscriptionRemovable)
-        if self.__currentSubscription:
-            menu.addSeparator()
-            if subscriptionEnabled:
-                txt = self.tr("Disable Subscription")
-            else:
-                txt = self.tr("Enable Subscription")
-            menu.addAction(txt, self.__switchSubscriptionEnabled)
-        menu.addSeparator()
-        menu.addAction(
-            self.tr("Update Subscription"), self.__updateSubscription)\
-            .setEnabled(not subscriptionEditable)
-        menu.addAction(
-            self.tr("Update All Subscriptions"),
-            self.__updateAllSubscriptions)
-        menu.addSeparator()
-        menu.addAction(self.tr("Learn more about writing rules..."),
-                       self.__learnAboutWritingFilters)
-    
-    def addCustomRule(self, filterRule):
-        """
-        Public slot to add a custom AdBlock rule.
-        
-        @param filterRule filter to be added (string)
-        """
-        self.subscriptionsTabWidget.setCurrentIndex(
-            self.subscriptionsTabWidget.count() - 1)
-        self.__currentTreeWidget.addRule(filterRule)
-    
-    def __addCustomRule(self):
-        """
-        Private slot to add a custom AdBlock rule.
-        """
-        self.__currentTreeWidget.addRule()
-    
-    def __removeCustomRule(self):
-        """
-        Private slot to remove a custom AdBlock rule.
-        """
-        self.__currentTreeWidget.removeRule()
-    
-    def __updateSubscription(self):
-        """
-        Private slot to update the selected subscription.
-        """
-        self.__currentSubscription.updateNow()
-    
-    def __updateAllSubscriptions(self):
-        """
-        Private slot to update all subscriptions.
-        """
-        self.__manager.updateAllSubscriptions()
-    
-    def __browseSubscriptions(self):
-        """
-        Private slot to browse the list of available AdBlock subscriptions.
-        """
-        import Helpviewer.HelpWindow
-        mw = Helpviewer.HelpWindow.HelpWindow.mainWindow()
-        mw.newTab("http://adblockplus.org/en/subscriptions")
-        mw.raise_()
-    
-    def __learnAboutWritingFilters(self):
-        """
-        Private slot to show the web page about how to write filters.
-        """
-        import Helpviewer.HelpWindow
-        mw = Helpviewer.HelpWindow.HelpWindow.mainWindow()
-        mw.newTab("http://adblockplus.org/en/filters")
-        mw.raise_()
-    
-    def __removeSubscription(self):
-        """
-        Private slot to remove the selected subscription.
-        """
-        requiresTitles = []
-        requiresSubscriptions = \
-            self.__manager.getRequiresSubscriptions(self.__currentSubscription)
-        for subscription in requiresSubscriptions:
-            requiresTitles.append(subscription.title())
-        if requiresTitles:
-            message = self.tr(
-                "<p>Do you really want to remove subscription"
-                " <b>{0}</b> and all subscriptions requiring it?</p>"
-                "<ul><li>{1}</li></ul>").format(
-                self.__currentSubscription.title(),
-                "</li><li>".join(requiresTitles))
-        else:
-            message = self.tr(
-                "<p>Do you really want to remove subscription"
-                " <b>{0}</b>?</p>").format(self.__currentSubscription.title())
-        res = E5MessageBox.yesNo(
-            self,
-            self.tr("Remove Subscription"),
-            message)
-        
-        if res:
-            removeSubscription = self.__currentSubscription
-            removeTrees = [self.__currentTreeWidget]
-            for index in range(self.subscriptionsTabWidget.count()):
-                tree = self.subscriptionsTabWidget.widget(index)
-                if tree.subscription() in requiresSubscriptions:
-                    removeTrees.append(tree)
-            for tree in removeTrees:
-                self.subscriptionsTabWidget.removeTab(
-                    self.subscriptionsTabWidget.indexOf(tree))
-            self.__manager.removeSubscription(removeSubscription)
-    
-    def __switchSubscriptionEnabled(self):
-        """
-        Private slot to switch the enabled state of the selected subscription.
-        """
-        newState = not self.__currentSubscription.isEnabled()
-        self.__setSubscriptionEnabled(self.__currentSubscription, newState)
-    
-    def __setSubscriptionEnabled(self, subscription, enable):
-        """
-        Private slot to set the enabled state of a subscription.
-        
-        @param subscription subscription to set the state for
-            (AdBlockSubscription)
-        @param enable state to set to (boolean)
-        """
-        if enable:
-            # enable required one as well
-            sub = self.__manager.subscription(subscription.requiresLocation())
-            requiresSubscriptions = [] if sub is None else [sub]
-            icon = UI.PixmapCache.getIcon("adBlockPlus.png")
-        else:
-            # disable dependent ones as well
-            requiresSubscriptions = \
-                self.__manager.getRequiresSubscriptions(subscription)
-            icon = UI.PixmapCache.getIcon("adBlockPlusDisabled.png")
-        requiresSubscriptions.append(subscription)
-        for sub in requiresSubscriptions:
-            sub.setEnabled(enable)
-        
-        for index in range(self.subscriptionsTabWidget.count()):
-            tree = self.subscriptionsTabWidget.widget(index)
-            if tree.subscription() in requiresSubscriptions:
-                self.subscriptionsTabWidget.setTabIcon(
-                    self.subscriptionsTabWidget.indexOf(tree), icon)
-    
-    @pyqtSlot(int)
-    def on_updateSpinBox_valueChanged(self, value):
-        """
-        Private slot to handle changes of the update period.
-        
-        @param value update period (integer)
-        """
-        if value != Preferences.getHelp("AdBlockUpdatePeriod"):
-            Preferences.setHelp("AdBlockUpdatePeriod", value)
-            
-            import Helpviewer.HelpWindow
-            manager = Helpviewer.HelpWindow.HelpWindow.adBlockManager()
-            for subscription in manager.subscriptions():
-                subscription.checkForUpdate()
-    
-    @pyqtSlot(int)
-    def on_subscriptionsTabWidget_currentChanged(self, index):
-        """
-        Private slot handling the selection of another tab.
-        
-        @param index index of the new current tab (integer)
-        """
-        if index != -1:
-            self.__currentTreeWidget = \
-                self.subscriptionsTabWidget.widget(index)
-            self.__currentSubscription = \
-                self.__currentTreeWidget.subscription()
-    
-    @pyqtSlot(str)
-    def on_searchEdit_textChanged(self, filterRule):
-        """
-        Private slot to set a new filter on the current widget.
-        
-        @param filterRule filter to be set (string)
-        """
-        if self.__currentTreeWidget and self.adBlockGroup.isChecked():
-            self.__currentTreeWidget.filterString(filterRule)
-    
-    @pyqtSlot(bool)
-    def on_adBlockGroup_toggled(self, state):
-        """
-        Private slot handling the enabling/disabling of AdBlock.
-        
-        @param state state of the toggle (boolean)
-        """
-        self.__manager.setEnabled(state)
-        
-        if state:
-            self.__load()
-    
-    def showRule(self, rule):
-        """
-        Public slot to show the given rule.
-        
-        @param rule rule to be shown (AdBlockRule)
-        """
-        if rule is None:
-            return
-        
-        subscription = rule.subscription()
-        if subscription is None:
-            return
-        
-        for index in range(self.subscriptionsTabWidget.count()):
-            tree = self.subscriptionsTabWidget.widget(index)
-            if subscription == tree.subscription():
-                tree.showRule(rule)
-                self.subscriptionsTabWidget.setCurrentIndex(index)
-                self.raise_()
-                break

eric ide

mercurial