Helpviewer/AdBlock/AdBlockSubscription.py

Wed, 02 Jan 2013 10:31:48 +0100

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Wed, 02 Jan 2013 10:31:48 +0100
changeset 2302
f29e9405c851
parent 2016
2bbc81fcce4a
child 2403
e3d7a861547c
child 3163
9f50365a0870
permissions
-rw-r--r--

Updated copyright for 2013.

0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1 # -*- coding: utf-8 -*-
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
2
2302
f29e9405c851 Updated copyright for 2013.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2016
diff changeset
3 # Copyright (c) 2009 - 2013 Detlev Offenbach <detlev@die-offenbachs.de>
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
4 #
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
5
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
6 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
7 Module implementing the AdBlock subscription class.
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
8 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
9
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
10 import os
1994
84d55b34ba5a Added support for AdBlock checksum checking when downloading a subscription to the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1971
diff changeset
11 import re
84d55b34ba5a Added support for AdBlock checksum checking when downloading a subscription to the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1971
diff changeset
12 import hashlib
84d55b34ba5a Added support for AdBlock checksum checking when downloading a subscription to the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1971
diff changeset
13 import base64
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
14
1112
8a7d1b9d18db Improved code quality by getting rid of star imports. That way pyflakes can do its job. A few bugs fixed found by flakes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 956
diff changeset
15 from PyQt4.QtCore import pyqtSignal, Qt, QObject, QByteArray, QDateTime, QUrl, \
2007
3fec6ace8af7 Added code to check the remote modified date of AdBlock subscriptions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2005
diff changeset
16 QCryptographicHash, QFile, QIODevice, QTextStream, QDate, QTime
1955
9e6da33c1c10 Some small enhancements to the AdBlock Plus code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1854
diff changeset
17 from PyQt4.QtNetwork import QNetworkReply
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
18
539
87f9bce38a44 Continued replacing QMessageBox methods with own methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 483
diff changeset
19 from E5Gui import E5MessageBox
87f9bce38a44 Continued replacing QMessageBox methods with own methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 483
diff changeset
20
12
1d8dd9706f46 First commit after changing to Python 3.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7
diff changeset
21 from .AdBlockRule import AdBlockRule
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
22
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
23 import Helpviewer.HelpWindow
1955
9e6da33c1c10 Some small enhancements to the AdBlock Plus code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1854
diff changeset
24 from Helpviewer.Network.FollowRedirectReply import FollowRedirectReply
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
25
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
26 import Utilities
1854
191efdc54c62 Made the AdBlock update period configurable between 1 and 14 days.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1509
diff changeset
27 import Preferences
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
28
945
8cd4d08fa9f6 Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 791
diff changeset
29
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
30 class AdBlockSubscription(QObject):
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
31 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
32 Class implementing the AdBlock subscription.
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
33
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
34 @signal changed() emitted after the subscription has changed
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
35 @signal rulesChanged() emitted after the subscription's rules have changed
1971
a68d78702c98 Fixed an issue remembering the enabled state of AdBlock subscriptions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1970
diff changeset
36 @signal enabledChanged(bool) emitted after the enabled state was changed
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
37 """
483
ca7d8599a575 Continued porting signal/slot usage to the new API.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 464
diff changeset
38 changed = pyqtSignal()
ca7d8599a575 Continued porting signal/slot usage to the new API.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 464
diff changeset
39 rulesChanged = pyqtSignal()
1971
a68d78702c98 Fixed an issue remembering the enabled state of AdBlock subscriptions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1970
diff changeset
40 enabledChanged = pyqtSignal(bool)
483
ca7d8599a575 Continued porting signal/slot usage to the new API.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 464
diff changeset
41
1970
02cf3bac079b Rewrote huge part of AdBlock to speed up and added support for dependent AdBlock subscriptions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1963
diff changeset
42 def __init__(self, url, custom, parent=None, default=False):
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
43 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
44 Constructor
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
45
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
46 @param url AdBlock URL for the subscription (QUrl)
1970
02cf3bac079b Rewrote huge part of AdBlock to speed up and added support for dependent AdBlock subscriptions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1963
diff changeset
47 @param custom flag indicating a custom subscription (boolean)
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
48 @param parent reference to the parent object (QObject)
1970
02cf3bac079b Rewrote huge part of AdBlock to speed up and added support for dependent AdBlock subscriptions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1963
diff changeset
49 @param default flag indicating a default subscription (boolean)
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
50 """
1131
7781e396c903 Changed the code to use super() to access the superclass.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1112
diff changeset
51 super().__init__(parent)
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
52
1970
02cf3bac079b Rewrote huge part of AdBlock to speed up and added support for dependent AdBlock subscriptions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1963
diff changeset
53 self.__custom = custom
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
54 self.__url = url.toEncoded()
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
55 self.__enabled = False
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
56 self.__downloading = None
956
f3e1500da1df Changed behavior of ad blocker downloading the default subscription in case of missing an internet link.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 945
diff changeset
57 self.__defaultSubscription = default
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
58
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
59 self.__title = ""
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
60 self.__location = QByteArray()
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
61 self.__lastUpdate = QDateTime()
1970
02cf3bac079b Rewrote huge part of AdBlock to speed up and added support for dependent AdBlock subscriptions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1963
diff changeset
62 self.__requiresLocation = ""
02cf3bac079b Rewrote huge part of AdBlock to speed up and added support for dependent AdBlock subscriptions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1963
diff changeset
63 self.__requiresTitle = ""
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
64
2005
6867cf32df67 Added support for variable AdBlock update periods (given in subscription) to the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1994
diff changeset
65 self.__updatePeriod = 0 # update period in hours, 0 = use default
2007
3fec6ace8af7 Added code to check the remote modified date of AdBlock subscriptions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2005
diff changeset
66 self.__remoteModified = QDateTime()
2005
6867cf32df67 Added support for variable AdBlock update periods (given in subscription) to the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1994
diff changeset
67
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
68 self.__rules = [] # list containing all AdBlock rules
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
69
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
70 self.__networkExceptionRules = []
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
71 self.__networkBlockRules = []
1970
02cf3bac079b Rewrote huge part of AdBlock to speed up and added support for dependent AdBlock subscriptions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1963
diff changeset
72 self.__domainRestrictedCssRules = []
02cf3bac079b Rewrote huge part of AdBlock to speed up and added support for dependent AdBlock subscriptions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1963
diff changeset
73 self.__elementHidingRules = ""
02cf3bac079b Rewrote huge part of AdBlock to speed up and added support for dependent AdBlock subscriptions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1963
diff changeset
74 self.__documentRules = []
02cf3bac079b Rewrote huge part of AdBlock to speed up and added support for dependent AdBlock subscriptions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1963
diff changeset
75 self.__elemhideRules = []
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
76
1994
84d55b34ba5a Added support for AdBlock checksum checking when downloading a subscription to the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1971
diff changeset
77 self.__checksumRe = re.compile(r"""^\s*!\s*checksum[\s\-:]+([\w\+\/=]+).*\n""",
84d55b34ba5a Added support for AdBlock checksum checking when downloading a subscription to the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1971
diff changeset
78 re.IGNORECASE | re.MULTILINE)
2005
6867cf32df67 Added support for variable AdBlock update periods (given in subscription) to the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1994
diff changeset
79 self.__expiresRe = re.compile(
2016
2bbc81fcce4a Fixed a few PEP-8 related issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2007
diff changeset
80 r"""(?:expires:|expires after)\s*(\d+)\s*(hour|h)?""",
2005
6867cf32df67 Added support for variable AdBlock update periods (given in subscription) to the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1994
diff changeset
81 re.IGNORECASE)
2007
3fec6ace8af7 Added code to check the remote modified date of AdBlock subscriptions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2005
diff changeset
82 self.__remoteModifiedRe = re.compile(
3fec6ace8af7 Added code to check the remote modified date of AdBlock subscriptions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2005
diff changeset
83 r"""!\s*(?:Last modified|Updated):\s*(\d{1,2})\s*"""
3fec6ace8af7 Added code to check the remote modified date of AdBlock subscriptions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2005
diff changeset
84 r"""(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s*"""
3fec6ace8af7 Added code to check the remote modified date of AdBlock subscriptions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2005
diff changeset
85 r"""(\d{2,4})\s*((\d{1,2}):(\d{2}))?""",
3fec6ace8af7 Added code to check the remote modified date of AdBlock subscriptions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2005
diff changeset
86 re.IGNORECASE)
2005
6867cf32df67 Added support for variable AdBlock update periods (given in subscription) to the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1994
diff changeset
87
2007
3fec6ace8af7 Added code to check the remote modified date of AdBlock subscriptions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2005
diff changeset
88 self.__monthNameToNumber = {
3fec6ace8af7 Added code to check the remote modified date of AdBlock subscriptions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2005
diff changeset
89 "Jan": 1,
3fec6ace8af7 Added code to check the remote modified date of AdBlock subscriptions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2005
diff changeset
90 "Feb": 2,
3fec6ace8af7 Added code to check the remote modified date of AdBlock subscriptions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2005
diff changeset
91 "Mar": 3,
3fec6ace8af7 Added code to check the remote modified date of AdBlock subscriptions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2005
diff changeset
92 "Apr": 4,
3fec6ace8af7 Added code to check the remote modified date of AdBlock subscriptions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2005
diff changeset
93 "May": 5,
3fec6ace8af7 Added code to check the remote modified date of AdBlock subscriptions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2005
diff changeset
94 "Jun": 6,
3fec6ace8af7 Added code to check the remote modified date of AdBlock subscriptions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2005
diff changeset
95 "Jul": 7,
3fec6ace8af7 Added code to check the remote modified date of AdBlock subscriptions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2005
diff changeset
96 "Aug": 8,
3fec6ace8af7 Added code to check the remote modified date of AdBlock subscriptions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2005
diff changeset
97 "Sep": 9,
3fec6ace8af7 Added code to check the remote modified date of AdBlock subscriptions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2005
diff changeset
98 "Oct": 10,
3fec6ace8af7 Added code to check the remote modified date of AdBlock subscriptions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2005
diff changeset
99 "Nov": 11,
3fec6ace8af7 Added code to check the remote modified date of AdBlock subscriptions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2005
diff changeset
100 "Dec": 12
3fec6ace8af7 Added code to check the remote modified date of AdBlock subscriptions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2005
diff changeset
101 }
1994
84d55b34ba5a Added support for AdBlock checksum checking when downloading a subscription to the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1971
diff changeset
102
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
103 self.__parseUrl(url)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
104
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
105 def __parseUrl(self, url):
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
106 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
107 Private method to parse the AdBlock URL for the subscription.
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
108
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
109 @param url AdBlock URL for the subscription (QUrl)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
110 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
111 if url.scheme() != "abp":
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
112 return
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
113
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
114 if url.path() != "subscribe":
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
115 return
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
116
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
117 self.__title = \
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
118 QUrl.fromPercentEncoding(url.encodedQueryItemValue("title"))
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
119 self.__enabled = \
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
120 QUrl.fromPercentEncoding(url.encodedQueryItemValue("enabled")) != "false"
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
121 self.__location = \
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
122 QByteArray(QUrl.fromPercentEncoding(url.encodedQueryItemValue("location")))
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
123
1970
02cf3bac079b Rewrote huge part of AdBlock to speed up and added support for dependent AdBlock subscriptions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1963
diff changeset
124 # Check for required subscription
02cf3bac079b Rewrote huge part of AdBlock to speed up and added support for dependent AdBlock subscriptions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1963
diff changeset
125 self.__requiresLocation = \
02cf3bac079b Rewrote huge part of AdBlock to speed up and added support for dependent AdBlock subscriptions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1963
diff changeset
126 QUrl.fromPercentEncoding(url.encodedQueryItemValue("requiresLocation"))
02cf3bac079b Rewrote huge part of AdBlock to speed up and added support for dependent AdBlock subscriptions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1963
diff changeset
127 self.__requiresTitle = \
02cf3bac079b Rewrote huge part of AdBlock to speed up and added support for dependent AdBlock subscriptions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1963
diff changeset
128 QUrl.fromPercentEncoding(url.encodedQueryItemValue("requiresTitle"))
02cf3bac079b Rewrote huge part of AdBlock to speed up and added support for dependent AdBlock subscriptions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1963
diff changeset
129 if self.__requiresLocation and self.__requiresTitle:
02cf3bac079b Rewrote huge part of AdBlock to speed up and added support for dependent AdBlock subscriptions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1963
diff changeset
130 Helpviewer.HelpWindow.HelpWindow.adBlockManager().loadRequiredSubscription(
02cf3bac079b Rewrote huge part of AdBlock to speed up and added support for dependent AdBlock subscriptions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1963
diff changeset
131 self.__requiresLocation, self.__requiresTitle)
02cf3bac079b Rewrote huge part of AdBlock to speed up and added support for dependent AdBlock subscriptions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1963
diff changeset
132
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
133 lastUpdateByteArray = url.encodedQueryItemValue("lastUpdate")
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
134 lastUpdateString = QUrl.fromPercentEncoding(lastUpdateByteArray)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
135 self.__lastUpdate = QDateTime.fromString(lastUpdateString, Qt.ISODate)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
136
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
137 self.__loadRules()
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
138
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
139 def url(self):
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
140 """
1960
d8c45fe8a1b9 Reworked some of the AdBlock code to achieve some speed improvements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1955
diff changeset
141 Public method to generate the URL for this subscription.
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
142
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
143 @return AdBlock URL for the subscription (QUrl)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
144 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
145 url = QUrl()
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
146 url.setScheme("abp")
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
147 url.setPath("subscribe")
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
148
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
149 queryItems = []
42
23b45a742e17 Fixed a bunch of issues including a workaround for a bug in the Python email package (s. EmailDialog.py).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 13
diff changeset
150 queryItems.append(("location", bytes(self.__location).decode()))
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
151 queryItems.append(("title", self.__title))
1970
02cf3bac079b Rewrote huge part of AdBlock to speed up and added support for dependent AdBlock subscriptions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1963
diff changeset
152 if self.__requiresLocation and self.__requiresTitle:
02cf3bac079b Rewrote huge part of AdBlock to speed up and added support for dependent AdBlock subscriptions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1963
diff changeset
153 queryItems.append(("requiresLocation", self.__requiresLocation))
02cf3bac079b Rewrote huge part of AdBlock to speed up and added support for dependent AdBlock subscriptions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1963
diff changeset
154 queryItems.append(("requiresTitle", self.__requiresTitle))
42
23b45a742e17 Fixed a bunch of issues including a workaround for a bug in the Python email package (s. EmailDialog.py).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 13
diff changeset
155 if not self.__enabled:
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
156 queryItems.append(("enabled", "false"))
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
157 if self.__lastUpdate.isValid():
945
8cd4d08fa9f6 Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 791
diff changeset
158 queryItems.append(("lastUpdate",
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
159 self.__lastUpdate.toString(Qt.ISODate)))
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
160 url.setQueryItems(queryItems)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
161 return url
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
162
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
163 def isEnabled(self):
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
164 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
165 Public method to check, if the subscription is enabled.
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
166
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
167 @return flag indicating the enabled status (boolean)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
168 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
169 return self.__enabled
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
170
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
171 def setEnabled(self, enabled):
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
172 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
173 Public method to set the enabled status.
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
174
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
175 @param enabled flag indicating the enabled status (boolean)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
176 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
177 if self.__enabled == enabled:
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
178 return
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
179
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
180 self.__enabled = enabled
1971
a68d78702c98 Fixed an issue remembering the enabled state of AdBlock subscriptions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1970
diff changeset
181 self.enabledChanged.emit(enabled)
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
182
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
183 def title(self):
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
184 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
185 Public method to get the subscription title.
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
186
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
187 @return subscription title (string)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
188 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
189 return self.__title
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
190
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
191 def setTitle(self, title):
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
192 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
193 Public method to set the subscription title.
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
194
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
195 @param title subscription title (string)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
196 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
197 if self.__title == title:
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
198 return
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
199
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
200 self.__title = title
483
ca7d8599a575 Continued porting signal/slot usage to the new API.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 464
diff changeset
201 self.changed.emit()
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
202
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
203 def location(self):
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
204 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
205 Public method to get the subscription location.
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
206
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
207 @return URL of the subscription location (QUrl)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
208 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
209 return QUrl.fromEncoded(self.__location)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
210
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
211 def setLocation(self, url):
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
212 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
213 Public method to set the subscription location.
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
214
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
215 @param url URL of the subscription location (QUrl)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
216 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
217 if url == self.location():
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
218 return
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
219
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
220 self.__location = url.toEncoded()
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
221 self.__lastUpdate = QDateTime()
483
ca7d8599a575 Continued porting signal/slot usage to the new API.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 464
diff changeset
222 self.changed.emit()
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
223
1970
02cf3bac079b Rewrote huge part of AdBlock to speed up and added support for dependent AdBlock subscriptions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1963
diff changeset
224 def requiresLocation(self):
02cf3bac079b Rewrote huge part of AdBlock to speed up and added support for dependent AdBlock subscriptions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1963
diff changeset
225 """
02cf3bac079b Rewrote huge part of AdBlock to speed up and added support for dependent AdBlock subscriptions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1963
diff changeset
226 Public method to get the location of a required subscription.
02cf3bac079b Rewrote huge part of AdBlock to speed up and added support for dependent AdBlock subscriptions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1963
diff changeset
227
02cf3bac079b Rewrote huge part of AdBlock to speed up and added support for dependent AdBlock subscriptions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1963
diff changeset
228 @return location of a required subscription (string)
02cf3bac079b Rewrote huge part of AdBlock to speed up and added support for dependent AdBlock subscriptions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1963
diff changeset
229 """
02cf3bac079b Rewrote huge part of AdBlock to speed up and added support for dependent AdBlock subscriptions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1963
diff changeset
230 return self.__requiresLocation
02cf3bac079b Rewrote huge part of AdBlock to speed up and added support for dependent AdBlock subscriptions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1963
diff changeset
231
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
232 def lastUpdate(self):
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
233 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
234 Public method to get the date and time of the last update.
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
235
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
236 @return date and time of the last update (QDateTime)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
237 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
238 return self.__lastUpdate
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
239
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
240 def rulesFileName(self):
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
241 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
242 Public method to get the name of the rules file.
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
243
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
244 @return name of the rules file (string)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
245 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
246 if self.location().scheme() == "file":
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
247 return self.location().toLocalFile()
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
248
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
249 if self.__location.isEmpty():
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
250 return ""
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
251
134
c2dd2bf92ece Fixed a few issues with the eric web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 42
diff changeset
252 sha1 = bytes(
c2dd2bf92ece Fixed a few issues with the eric web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 42
diff changeset
253 QCryptographicHash.hash(self.__location, QCryptographicHash.Sha1).toHex())\
c2dd2bf92ece Fixed a few issues with the eric web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 42
diff changeset
254 .decode()
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
255 dataDir = os.path.join(Utilities.getConfigDir(), "browser", "subscriptions")
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
256 if not os.path.exists(dataDir):
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
257 os.makedirs(dataDir)
414
8c91e942d2da Did some more string format conversions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 168
diff changeset
258 fileName = os.path.join(dataDir, "adblock_subscription_{0}".format(sha1))
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
259 return fileName
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
260
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
261 def __loadRules(self):
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
262 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
263 Private method to load the rules of the subscription.
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
264 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
265 fileName = self.rulesFileName()
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
266 f = QFile(fileName)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
267 if f.exists():
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
268 if not f.open(QIODevice.ReadOnly):
539
87f9bce38a44 Continued replacing QMessageBox methods with own methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 483
diff changeset
269 E5MessageBox.warning(None,
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
270 self.trUtf8("Load subscription rules"),
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
271 self.trUtf8("""Unable to open adblock file '{0}' for reading.""")\
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
272 .format(fileName))
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
273 else:
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
274 textStream = QTextStream(f)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
275 header = textStream.readLine(1024)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
276 if not header.startswith("[Adblock"):
539
87f9bce38a44 Continued replacing QMessageBox methods with own methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 483
diff changeset
277 E5MessageBox.warning(None,
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
278 self.trUtf8("Load subscription rules"),
1994
84d55b34ba5a Added support for AdBlock checksum checking when downloading a subscription to the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1971
diff changeset
279 self.trUtf8("""AdBlock file '{0}' does not start"""
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
280 """ with [Adblock.""")\
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
281 .format(fileName))
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
282 f.close()
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
283 f.remove()
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
284 self.__lastUpdate = QDateTime()
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
285 else:
2007
3fec6ace8af7 Added code to check the remote modified date of AdBlock subscriptions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2005
diff changeset
286 self.__updatePeriod = 0
3fec6ace8af7 Added code to check the remote modified date of AdBlock subscriptions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2005
diff changeset
287 self.__remoteModified = QDateTime()
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
288 self.__rules = []
1994
84d55b34ba5a Added support for AdBlock checksum checking when downloading a subscription to the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1971
diff changeset
289 self.__rules.append(AdBlockRule(header, self))
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
290 while not textStream.atEnd():
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
291 line = textStream.readLine()
1963
9c5b3235abf9 Added an icon to the status bar to give direct access to AdBlock.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1960
diff changeset
292 self.__rules.append(AdBlockRule(line, self))
2005
6867cf32df67 Added support for variable AdBlock update periods (given in subscription) to the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1994
diff changeset
293 expires = self.__expiresRe.search(line)
6867cf32df67 Added support for variable AdBlock update periods (given in subscription) to the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1994
diff changeset
294 if expires:
6867cf32df67 Added support for variable AdBlock update periods (given in subscription) to the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1994
diff changeset
295 period, kind = expires.groups()
6867cf32df67 Added support for variable AdBlock update periods (given in subscription) to the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1994
diff changeset
296 if kind:
6867cf32df67 Added support for variable AdBlock update periods (given in subscription) to the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1994
diff changeset
297 # hours
6867cf32df67 Added support for variable AdBlock update periods (given in subscription) to the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1994
diff changeset
298 self.__updatePeriod = int(period)
6867cf32df67 Added support for variable AdBlock update periods (given in subscription) to the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1994
diff changeset
299 else:
6867cf32df67 Added support for variable AdBlock update periods (given in subscription) to the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1994
diff changeset
300 # days
6867cf32df67 Added support for variable AdBlock update periods (given in subscription) to the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1994
diff changeset
301 self.__updatePeriod = int(period) * 24
2007
3fec6ace8af7 Added code to check the remote modified date of AdBlock subscriptions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2005
diff changeset
302 remoteModified = self.__remoteModifiedRe.search(line)
3fec6ace8af7 Added code to check the remote modified date of AdBlock subscriptions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2005
diff changeset
303 if remoteModified:
3fec6ace8af7 Added code to check the remote modified date of AdBlock subscriptions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2005
diff changeset
304 day, month, year, time, hour, minute = remoteModified.groups()
3fec6ace8af7 Added code to check the remote modified date of AdBlock subscriptions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2005
diff changeset
305 self.__remoteModified.setDate(
3fec6ace8af7 Added code to check the remote modified date of AdBlock subscriptions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2005
diff changeset
306 QDate(int(year), self.__monthNameToNumber[month],
3fec6ace8af7 Added code to check the remote modified date of AdBlock subscriptions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2005
diff changeset
307 int(day)))
3fec6ace8af7 Added code to check the remote modified date of AdBlock subscriptions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2005
diff changeset
308 if time:
3fec6ace8af7 Added code to check the remote modified date of AdBlock subscriptions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2005
diff changeset
309 self.__remoteModified.setTime(
3fec6ace8af7 Added code to check the remote modified date of AdBlock subscriptions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2005
diff changeset
310 QTime(int(hour), int(minute)))
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
311 self.__populateCache()
483
ca7d8599a575 Continued porting signal/slot usage to the new API.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 464
diff changeset
312 self.changed.emit()
1994
84d55b34ba5a Added support for AdBlock checksum checking when downloading a subscription to the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1971
diff changeset
313 elif not fileName.endswith("_custom"):
84d55b34ba5a Added support for AdBlock checksum checking when downloading a subscription to the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1971
diff changeset
314 self.__lastUpdate = QDateTime()
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
315
1854
191efdc54c62 Made the AdBlock update period configurable between 1 and 14 days.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1509
diff changeset
316 self.checkForUpdate()
191efdc54c62 Made the AdBlock update period configurable between 1 and 14 days.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1509
diff changeset
317
191efdc54c62 Made the AdBlock update period configurable between 1 and 14 days.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1509
diff changeset
318 def checkForUpdate(self):
191efdc54c62 Made the AdBlock update period configurable between 1 and 14 days.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1509
diff changeset
319 """
191efdc54c62 Made the AdBlock update period configurable between 1 and 14 days.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1509
diff changeset
320 Public method to check for an update.
191efdc54c62 Made the AdBlock update period configurable between 1 and 14 days.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1509
diff changeset
321 """
2005
6867cf32df67 Added support for variable AdBlock update periods (given in subscription) to the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1994
diff changeset
322 if self.__updatePeriod:
6867cf32df67 Added support for variable AdBlock update periods (given in subscription) to the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1994
diff changeset
323 updatePeriod = self.__updatePeriod
6867cf32df67 Added support for variable AdBlock update periods (given in subscription) to the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1994
diff changeset
324 else:
6867cf32df67 Added support for variable AdBlock update periods (given in subscription) to the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1994
diff changeset
325 updatePeriod = Preferences.getHelp("AdBlockUpdatePeriod") * 24
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
326 if not self.__lastUpdate.isValid() or \
2007
3fec6ace8af7 Added code to check the remote modified date of AdBlock subscriptions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2005
diff changeset
327 (self.__remoteModified.isValid() and \
3fec6ace8af7 Added code to check the remote modified date of AdBlock subscriptions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2005
diff changeset
328 self.__remoteModified.addSecs(updatePeriod * 3600) < \
3fec6ace8af7 Added code to check the remote modified date of AdBlock subscriptions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2005
diff changeset
329 QDateTime.currentDateTime()) or \
2005
6867cf32df67 Added support for variable AdBlock update periods (given in subscription) to the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1994
diff changeset
330 self.__lastUpdate.addSecs(updatePeriod * 3600) < \
1854
191efdc54c62 Made the AdBlock update period configurable between 1 and 14 days.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1509
diff changeset
331 QDateTime.currentDateTime():
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
332 self.updateNow()
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
333
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
334 def updateNow(self):
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
335 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
336 Public method to update the subscription immediately.
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
337 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
338 if self.__downloading is not None:
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
339 return
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
340
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
341 if not self.location().isValid():
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
342 return
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
343
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
344 if self.location().scheme() == "file":
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
345 self.__lastUpdate = QDateTime.currentDateTime()
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
346 self.__loadRules()
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
347 return
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
348
1955
9e6da33c1c10 Some small enhancements to the AdBlock Plus code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1854
diff changeset
349 self.__downloading = FollowRedirectReply(self.location(),
9e6da33c1c10 Some small enhancements to the AdBlock Plus code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1854
diff changeset
350 Helpviewer.HelpWindow.HelpWindow.networkAccessManager())
464
a2b1d1770ef0 Continued porting signal/slot usage to the new API.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 414
diff changeset
351 self.__downloading.finished[()].connect(self.__rulesDownloaded)
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
352
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
353 def __rulesDownloaded(self):
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
354 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
355 Private slot to deal with the downloaded rules.
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
356 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
357 reply = self.sender()
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
358
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
359 response = reply.readAll()
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
360 reply.close()
168
3383117f894b Fixed a few bugs in the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 134
diff changeset
361 self.__downloading = None
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
362
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
363 if reply.error() != QNetworkReply.NoError:
956
f3e1500da1df Changed behavior of ad blocker downloading the default subscription in case of missing an internet link.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 945
diff changeset
364 if not self.__defaultSubscription:
f3e1500da1df Changed behavior of ad blocker downloading the default subscription in case of missing an internet link.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 945
diff changeset
365 # don't show error if we try to load the default
f3e1500da1df Changed behavior of ad blocker downloading the default subscription in case of missing an internet link.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 945
diff changeset
366 E5MessageBox.warning(None,
f3e1500da1df Changed behavior of ad blocker downloading the default subscription in case of missing an internet link.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 945
diff changeset
367 self.trUtf8("Downloading subscription rules"),
f3e1500da1df Changed behavior of ad blocker downloading the default subscription in case of missing an internet link.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 945
diff changeset
368 self.trUtf8("""<p>Subscription rules could not be downloaded.</p>"""
f3e1500da1df Changed behavior of ad blocker downloading the default subscription in case of missing an internet link.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 945
diff changeset
369 """<p>Error: {0}</p>""").format(reply.errorString()))
f3e1500da1df Changed behavior of ad blocker downloading the default subscription in case of missing an internet link.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 945
diff changeset
370 else:
f3e1500da1df Changed behavior of ad blocker downloading the default subscription in case of missing an internet link.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 945
diff changeset
371 # reset after first download attempt
f3e1500da1df Changed behavior of ad blocker downloading the default subscription in case of missing an internet link.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 945
diff changeset
372 self.__defaultSubscription = False
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
373 return
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
374
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
375 if response.isEmpty():
539
87f9bce38a44 Continued replacing QMessageBox methods with own methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 483
diff changeset
376 E5MessageBox.warning(None,
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
377 self.trUtf8("Downloading subscription rules"),
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
378 self.trUtf8("""Got empty subscription rules."""))
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
379 return
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
380
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
381 fileName = self.rulesFileName()
1994
84d55b34ba5a Added support for AdBlock checksum checking when downloading a subscription to the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1971
diff changeset
382 QFile.remove(fileName)
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
383 f = QFile(fileName)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
384 if not f.open(QIODevice.ReadWrite):
539
87f9bce38a44 Continued replacing QMessageBox methods with own methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 483
diff changeset
385 E5MessageBox.warning(None,
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
386 self.trUtf8("Downloading subscription rules"),
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
387 self.trUtf8("""Unable to open adblock file '{0}' for writing.""")\
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
388 .file(fileName))
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
389 return
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
390 f.write(response)
1994
84d55b34ba5a Added support for AdBlock checksum checking when downloading a subscription to the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1971
diff changeset
391 f.close()
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
392 self.__lastUpdate = QDateTime.currentDateTime()
1994
84d55b34ba5a Added support for AdBlock checksum checking when downloading a subscription to the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1971
diff changeset
393 if self.__validateCheckSum(fileName):
84d55b34ba5a Added support for AdBlock checksum checking when downloading a subscription to the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1971
diff changeset
394 self.__loadRules()
84d55b34ba5a Added support for AdBlock checksum checking when downloading a subscription to the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1971
diff changeset
395 else:
84d55b34ba5a Added support for AdBlock checksum checking when downloading a subscription to the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1971
diff changeset
396 QFile.remove(fileName)
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
397 self.__downloading = None
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
398
1994
84d55b34ba5a Added support for AdBlock checksum checking when downloading a subscription to the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1971
diff changeset
399 def __validateCheckSum(self, fileName):
84d55b34ba5a Added support for AdBlock checksum checking when downloading a subscription to the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1971
diff changeset
400 """
84d55b34ba5a Added support for AdBlock checksum checking when downloading a subscription to the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1971
diff changeset
401 Private method to check the subscription file's checksum.
84d55b34ba5a Added support for AdBlock checksum checking when downloading a subscription to the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1971
diff changeset
402
84d55b34ba5a Added support for AdBlock checksum checking when downloading a subscription to the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1971
diff changeset
403 @param fileName name of the file containing the subscription (string)
84d55b34ba5a Added support for AdBlock checksum checking when downloading a subscription to the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1971
diff changeset
404 @return flag indicating a valid file (boolean). A file is considered
84d55b34ba5a Added support for AdBlock checksum checking when downloading a subscription to the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1971
diff changeset
405 valid, if the checksum is OK or the file does not contain a
84d55b34ba5a Added support for AdBlock checksum checking when downloading a subscription to the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1971
diff changeset
406 checksum (i.e. cannot be checked).
84d55b34ba5a Added support for AdBlock checksum checking when downloading a subscription to the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1971
diff changeset
407 """
84d55b34ba5a Added support for AdBlock checksum checking when downloading a subscription to the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1971
diff changeset
408 try:
84d55b34ba5a Added support for AdBlock checksum checking when downloading a subscription to the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1971
diff changeset
409 f = open(fileName, "r", encoding="utf-8")
84d55b34ba5a Added support for AdBlock checksum checking when downloading a subscription to the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1971
diff changeset
410 data = f.read()
84d55b34ba5a Added support for AdBlock checksum checking when downloading a subscription to the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1971
diff changeset
411 f.close()
84d55b34ba5a Added support for AdBlock checksum checking when downloading a subscription to the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1971
diff changeset
412 except (IOError, OSError):
84d55b34ba5a Added support for AdBlock checksum checking when downloading a subscription to the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1971
diff changeset
413 return False
84d55b34ba5a Added support for AdBlock checksum checking when downloading a subscription to the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1971
diff changeset
414
84d55b34ba5a Added support for AdBlock checksum checking when downloading a subscription to the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1971
diff changeset
415 match = re.search(self.__checksumRe, data)
84d55b34ba5a Added support for AdBlock checksum checking when downloading a subscription to the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1971
diff changeset
416 if match:
84d55b34ba5a Added support for AdBlock checksum checking when downloading a subscription to the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1971
diff changeset
417 expectedChecksum = match.group(1)
84d55b34ba5a Added support for AdBlock checksum checking when downloading a subscription to the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1971
diff changeset
418 else:
84d55b34ba5a Added support for AdBlock checksum checking when downloading a subscription to the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1971
diff changeset
419 # consider it as valid
84d55b34ba5a Added support for AdBlock checksum checking when downloading a subscription to the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1971
diff changeset
420 return True
84d55b34ba5a Added support for AdBlock checksum checking when downloading a subscription to the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1971
diff changeset
421
84d55b34ba5a Added support for AdBlock checksum checking when downloading a subscription to the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1971
diff changeset
422 # normalize the data
84d55b34ba5a Added support for AdBlock checksum checking when downloading a subscription to the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1971
diff changeset
423 data = re.sub(r"\r", "", data) # normalize eol
84d55b34ba5a Added support for AdBlock checksum checking when downloading a subscription to the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1971
diff changeset
424 data = re.sub(r"\n+", "\n", data) # remove empty lines
84d55b34ba5a Added support for AdBlock checksum checking when downloading a subscription to the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1971
diff changeset
425 data = re.sub(self.__checksumRe, "", data) # remove checksum line
84d55b34ba5a Added support for AdBlock checksum checking when downloading a subscription to the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1971
diff changeset
426
84d55b34ba5a Added support for AdBlock checksum checking when downloading a subscription to the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1971
diff changeset
427 # calculate checksum
84d55b34ba5a Added support for AdBlock checksum checking when downloading a subscription to the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1971
diff changeset
428 md5 = hashlib.md5()
84d55b34ba5a Added support for AdBlock checksum checking when downloading a subscription to the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1971
diff changeset
429 md5.update(data.encode("utf-8"))
84d55b34ba5a Added support for AdBlock checksum checking when downloading a subscription to the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1971
diff changeset
430 calculatedChecksum = base64.b64encode(md5.digest()).decode().rstrip("=")
84d55b34ba5a Added support for AdBlock checksum checking when downloading a subscription to the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1971
diff changeset
431 if calculatedChecksum == expectedChecksum:
84d55b34ba5a Added support for AdBlock checksum checking when downloading a subscription to the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1971
diff changeset
432 return True
84d55b34ba5a Added support for AdBlock checksum checking when downloading a subscription to the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1971
diff changeset
433 else:
84d55b34ba5a Added support for AdBlock checksum checking when downloading a subscription to the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1971
diff changeset
434 res = E5MessageBox.yesNo(None,
84d55b34ba5a Added support for AdBlock checksum checking when downloading a subscription to the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1971
diff changeset
435 self.trUtf8("Downloading subscription rules"),
84d55b34ba5a Added support for AdBlock checksum checking when downloading a subscription to the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1971
diff changeset
436 self.trUtf8("""<p>AdBlock subscription <b>{0}</b> has a wrong"""
84d55b34ba5a Added support for AdBlock checksum checking when downloading a subscription to the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1971
diff changeset
437 """ checksum.<br/>"""
84d55b34ba5a Added support for AdBlock checksum checking when downloading a subscription to the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1971
diff changeset
438 """Found: {1}<br/>"""
84d55b34ba5a Added support for AdBlock checksum checking when downloading a subscription to the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1971
diff changeset
439 """Calculated: {2}<br/>"""
84d55b34ba5a Added support for AdBlock checksum checking when downloading a subscription to the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1971
diff changeset
440 """Use it anyway?</p>""")\
84d55b34ba5a Added support for AdBlock checksum checking when downloading a subscription to the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1971
diff changeset
441 .format(self.__title, expectedChecksum, calculatedChecksum))
84d55b34ba5a Added support for AdBlock checksum checking when downloading a subscription to the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1971
diff changeset
442 return res
84d55b34ba5a Added support for AdBlock checksum checking when downloading a subscription to the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1971
diff changeset
443
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
444 def saveRules(self):
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
445 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
446 Public method to save the subscription rules.
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
447 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
448 fileName = self.rulesFileName()
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
449 if not fileName:
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
450 return
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
451
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
452 f = QFile(fileName)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
453 if not f.open(QIODevice.ReadWrite | QIODevice.Truncate):
539
87f9bce38a44 Continued replacing QMessageBox methods with own methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 483
diff changeset
454 E5MessageBox.warning(None,
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
455 self.trUtf8("Saving subscription rules"),
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
456 self.trUtf8("""Unable to open adblock file '{0}' for writing.""")\
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
457 .format(fileName))
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
458 return
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
459
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
460 textStream = QTextStream(f)
1994
84d55b34ba5a Added support for AdBlock checksum checking when downloading a subscription to the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1971
diff changeset
461 if not self.__rules or not self.__rules[0].isHeader():
84d55b34ba5a Added support for AdBlock checksum checking when downloading a subscription to the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1971
diff changeset
462 textStream << "[Adblock Plus 1.1.1]\n"
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
463 for rule in self.__rules:
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
464 textStream << rule.filter() << "\n"
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
465
1960
d8c45fe8a1b9 Reworked some of the AdBlock code to achieve some speed improvements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1955
diff changeset
466 def match(self, req, urlDomain, urlString):
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
467 """
1960
d8c45fe8a1b9 Reworked some of the AdBlock code to achieve some speed improvements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1955
diff changeset
468 Public method to check the subscription for a matching rule.
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
469
1960
d8c45fe8a1b9 Reworked some of the AdBlock code to achieve some speed improvements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1955
diff changeset
470 @param req reference to the network request (QNetworkRequest)
d8c45fe8a1b9 Reworked some of the AdBlock code to achieve some speed improvements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1955
diff changeset
471 @param urlDomain domain of the URL (string)
d8c45fe8a1b9 Reworked some of the AdBlock code to achieve some speed improvements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1955
diff changeset
472 @param urlString URL (string)
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
473 @return reference to the rule object or None (AdBlockRule)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
474 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
475 for rule in self.__networkExceptionRules:
1960
d8c45fe8a1b9 Reworked some of the AdBlock code to achieve some speed improvements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1955
diff changeset
476 if rule.networkMatch(req, urlDomain, urlString):
d8c45fe8a1b9 Reworked some of the AdBlock code to achieve some speed improvements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1955
diff changeset
477 return None
d8c45fe8a1b9 Reworked some of the AdBlock code to achieve some speed improvements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1955
diff changeset
478
d8c45fe8a1b9 Reworked some of the AdBlock code to achieve some speed improvements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1955
diff changeset
479 for rule in self.__networkBlockRules:
d8c45fe8a1b9 Reworked some of the AdBlock code to achieve some speed improvements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1955
diff changeset
480 if rule.networkMatch(req, urlDomain, urlString):
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
481 return rule
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
482
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
483 return None
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
484
1960
d8c45fe8a1b9 Reworked some of the AdBlock code to achieve some speed improvements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1955
diff changeset
485 def adBlockDisabledForUrl(self, url):
d8c45fe8a1b9 Reworked some of the AdBlock code to achieve some speed improvements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1955
diff changeset
486 """
d8c45fe8a1b9 Reworked some of the AdBlock code to achieve some speed improvements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1955
diff changeset
487 Public method to check, if AdBlock is disabled for the given URL.
d8c45fe8a1b9 Reworked some of the AdBlock code to achieve some speed improvements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1955
diff changeset
488
d8c45fe8a1b9 Reworked some of the AdBlock code to achieve some speed improvements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1955
diff changeset
489 @param url URL to check (QUrl)
d8c45fe8a1b9 Reworked some of the AdBlock code to achieve some speed improvements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1955
diff changeset
490 @return flag indicating disabled state (boolean)
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
491 """
1960
d8c45fe8a1b9 Reworked some of the AdBlock code to achieve some speed improvements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1955
diff changeset
492 for rule in self.__documentRules:
d8c45fe8a1b9 Reworked some of the AdBlock code to achieve some speed improvements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1955
diff changeset
493 if rule.urlMatch(url):
d8c45fe8a1b9 Reworked some of the AdBlock code to achieve some speed improvements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1955
diff changeset
494 return True
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
495
1960
d8c45fe8a1b9 Reworked some of the AdBlock code to achieve some speed improvements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1955
diff changeset
496 return False
d8c45fe8a1b9 Reworked some of the AdBlock code to achieve some speed improvements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1955
diff changeset
497
d8c45fe8a1b9 Reworked some of the AdBlock code to achieve some speed improvements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1955
diff changeset
498 def elemHideDisabledForUrl(self, url):
d8c45fe8a1b9 Reworked some of the AdBlock code to achieve some speed improvements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1955
diff changeset
499 """
d8c45fe8a1b9 Reworked some of the AdBlock code to achieve some speed improvements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1955
diff changeset
500 Public method to check, if element hiding is disabled for the given URL.
d8c45fe8a1b9 Reworked some of the AdBlock code to achieve some speed improvements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1955
diff changeset
501
d8c45fe8a1b9 Reworked some of the AdBlock code to achieve some speed improvements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1955
diff changeset
502 @param url URL to check (QUrl)
d8c45fe8a1b9 Reworked some of the AdBlock code to achieve some speed improvements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1955
diff changeset
503 @return flag indicating disabled state (boolean)
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
504 """
1960
d8c45fe8a1b9 Reworked some of the AdBlock code to achieve some speed improvements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1955
diff changeset
505 if self.adBlockDisabledForUrl(url):
d8c45fe8a1b9 Reworked some of the AdBlock code to achieve some speed improvements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1955
diff changeset
506 return True
d8c45fe8a1b9 Reworked some of the AdBlock code to achieve some speed improvements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1955
diff changeset
507
d8c45fe8a1b9 Reworked some of the AdBlock code to achieve some speed improvements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1955
diff changeset
508 for rule in self.__elemhideRules:
d8c45fe8a1b9 Reworked some of the AdBlock code to achieve some speed improvements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1955
diff changeset
509 if rule.urlMatch(url):
d8c45fe8a1b9 Reworked some of the AdBlock code to achieve some speed improvements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1955
diff changeset
510 return True
d8c45fe8a1b9 Reworked some of the AdBlock code to achieve some speed improvements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1955
diff changeset
511
d8c45fe8a1b9 Reworked some of the AdBlock code to achieve some speed improvements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1955
diff changeset
512 return False
d8c45fe8a1b9 Reworked some of the AdBlock code to achieve some speed improvements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1955
diff changeset
513
d8c45fe8a1b9 Reworked some of the AdBlock code to achieve some speed improvements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1955
diff changeset
514 def elementHidingRules(self):
d8c45fe8a1b9 Reworked some of the AdBlock code to achieve some speed improvements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1955
diff changeset
515 """
d8c45fe8a1b9 Reworked some of the AdBlock code to achieve some speed improvements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1955
diff changeset
516 Public method to get the element hiding rules.
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
517
1960
d8c45fe8a1b9 Reworked some of the AdBlock code to achieve some speed improvements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1955
diff changeset
518 @return element hiding rules (string)
d8c45fe8a1b9 Reworked some of the AdBlock code to achieve some speed improvements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1955
diff changeset
519 """
d8c45fe8a1b9 Reworked some of the AdBlock code to achieve some speed improvements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1955
diff changeset
520 return self.__elementHidingRules
d8c45fe8a1b9 Reworked some of the AdBlock code to achieve some speed improvements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1955
diff changeset
521
d8c45fe8a1b9 Reworked some of the AdBlock code to achieve some speed improvements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1955
diff changeset
522 def elementHidingRulesForDomain(self, domain):
d8c45fe8a1b9 Reworked some of the AdBlock code to achieve some speed improvements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1955
diff changeset
523 """
d8c45fe8a1b9 Reworked some of the AdBlock code to achieve some speed improvements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1955
diff changeset
524 Public method to get the element hiding rules for the given domain.
d8c45fe8a1b9 Reworked some of the AdBlock code to achieve some speed improvements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1955
diff changeset
525
d8c45fe8a1b9 Reworked some of the AdBlock code to achieve some speed improvements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1955
diff changeset
526 @param domain domain name (string)
d8c45fe8a1b9 Reworked some of the AdBlock code to achieve some speed improvements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1955
diff changeset
527 @return element hiding rules (string)
d8c45fe8a1b9 Reworked some of the AdBlock code to achieve some speed improvements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1955
diff changeset
528 """
d8c45fe8a1b9 Reworked some of the AdBlock code to achieve some speed improvements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1955
diff changeset
529 rules = ""
d8c45fe8a1b9 Reworked some of the AdBlock code to achieve some speed improvements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1955
diff changeset
530
d8c45fe8a1b9 Reworked some of the AdBlock code to achieve some speed improvements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1955
diff changeset
531 for rule in self.__domainRestrictedCssRules:
d8c45fe8a1b9 Reworked some of the AdBlock code to achieve some speed improvements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1955
diff changeset
532 if rule.matchDomain(domain):
d8c45fe8a1b9 Reworked some of the AdBlock code to achieve some speed improvements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1955
diff changeset
533 rules += rule.cssSelector() + ","
d8c45fe8a1b9 Reworked some of the AdBlock code to achieve some speed improvements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1955
diff changeset
534
d8c45fe8a1b9 Reworked some of the AdBlock code to achieve some speed improvements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1955
diff changeset
535 return rules
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
536
1970
02cf3bac079b Rewrote huge part of AdBlock to speed up and added support for dependent AdBlock subscriptions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1963
diff changeset
537 def rule(self, offset):
02cf3bac079b Rewrote huge part of AdBlock to speed up and added support for dependent AdBlock subscriptions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1963
diff changeset
538 """
02cf3bac079b Rewrote huge part of AdBlock to speed up and added support for dependent AdBlock subscriptions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1963
diff changeset
539 Public method to get a specific rule.
02cf3bac079b Rewrote huge part of AdBlock to speed up and added support for dependent AdBlock subscriptions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1963
diff changeset
540
02cf3bac079b Rewrote huge part of AdBlock to speed up and added support for dependent AdBlock subscriptions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1963
diff changeset
541 @param offset offset of the rule (integer)
02cf3bac079b Rewrote huge part of AdBlock to speed up and added support for dependent AdBlock subscriptions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1963
diff changeset
542 @return requested rule (AdBlockRule)
02cf3bac079b Rewrote huge part of AdBlock to speed up and added support for dependent AdBlock subscriptions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1963
diff changeset
543 """
02cf3bac079b Rewrote huge part of AdBlock to speed up and added support for dependent AdBlock subscriptions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1963
diff changeset
544 if offset >= len(self.__rules):
02cf3bac079b Rewrote huge part of AdBlock to speed up and added support for dependent AdBlock subscriptions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1963
diff changeset
545 return None
02cf3bac079b Rewrote huge part of AdBlock to speed up and added support for dependent AdBlock subscriptions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1963
diff changeset
546
02cf3bac079b Rewrote huge part of AdBlock to speed up and added support for dependent AdBlock subscriptions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1963
diff changeset
547 return self.__rules[offset]
02cf3bac079b Rewrote huge part of AdBlock to speed up and added support for dependent AdBlock subscriptions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1963
diff changeset
548
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
549 def allRules(self):
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
550 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
551 Public method to get the list of rules.
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
552
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
553 @return list of rules (list of AdBlockRule)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
554 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
555 return self.__rules[:]
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
556
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
557 def addRule(self, rule):
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
558 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
559 Public method to add a rule.
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
560
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
561 @param rule reference to the rule to add (AdBlockRule)
1970
02cf3bac079b Rewrote huge part of AdBlock to speed up and added support for dependent AdBlock subscriptions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1963
diff changeset
562 @return offset of the rule (integer)
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
563 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
564 self.__rules.append(rule)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
565 self.__populateCache()
483
ca7d8599a575 Continued porting signal/slot usage to the new API.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 464
diff changeset
566 self.rulesChanged.emit()
1970
02cf3bac079b Rewrote huge part of AdBlock to speed up and added support for dependent AdBlock subscriptions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1963
diff changeset
567
02cf3bac079b Rewrote huge part of AdBlock to speed up and added support for dependent AdBlock subscriptions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1963
diff changeset
568 return len(self.__rules) - 1
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
569
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
570 def removeRule(self, offset):
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
571 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
572 Public method to remove a rule given the offset.
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
573
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
574 @param offset offset of the rule to remove (integer)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
575 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
576 if offset < 0 or offset > len(self.__rules):
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
577 return
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
578
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
579 del self.__rules[offset]
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
580 self.__populateCache()
483
ca7d8599a575 Continued porting signal/slot usage to the new API.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 464
diff changeset
581 self.rulesChanged.emit()
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
582
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
583 def replaceRule(self, rule, offset):
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
584 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
585 Public method to replace a rule given the offset.
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
586
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
587 @param rule reference to the rule to set (AdBlockRule)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
588 @param offset offset of the rule to remove (integer)
1970
02cf3bac079b Rewrote huge part of AdBlock to speed up and added support for dependent AdBlock subscriptions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1963
diff changeset
589 @return requested rule (AdBlockRule)
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
590 """
1970
02cf3bac079b Rewrote huge part of AdBlock to speed up and added support for dependent AdBlock subscriptions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1963
diff changeset
591 if offset >= len(self.__rules):
02cf3bac079b Rewrote huge part of AdBlock to speed up and added support for dependent AdBlock subscriptions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1963
diff changeset
592 return None
02cf3bac079b Rewrote huge part of AdBlock to speed up and added support for dependent AdBlock subscriptions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1963
diff changeset
593
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
594 self.__rules[offset] = rule
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
595 self.__populateCache()
483
ca7d8599a575 Continued porting signal/slot usage to the new API.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 464
diff changeset
596 self.rulesChanged.emit()
1970
02cf3bac079b Rewrote huge part of AdBlock to speed up and added support for dependent AdBlock subscriptions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1963
diff changeset
597
02cf3bac079b Rewrote huge part of AdBlock to speed up and added support for dependent AdBlock subscriptions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1963
diff changeset
598 return self.__rules[offset]
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
599
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
600 def __populateCache(self):
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
601 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
602 Private method to populate the various rule caches.
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
603 """
1960
d8c45fe8a1b9 Reworked some of the AdBlock code to achieve some speed improvements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1955
diff changeset
604 self.__networkExceptionRules = []
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
605 self.__networkBlockRules = []
1960
d8c45fe8a1b9 Reworked some of the AdBlock code to achieve some speed improvements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1955
diff changeset
606 self.__domainRestrictedCssRules = []
d8c45fe8a1b9 Reworked some of the AdBlock code to achieve some speed improvements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1955
diff changeset
607 self.__elementHidingRules = ""
d8c45fe8a1b9 Reworked some of the AdBlock code to achieve some speed improvements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1955
diff changeset
608 self.__documentRules = []
d8c45fe8a1b9 Reworked some of the AdBlock code to achieve some speed improvements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1955
diff changeset
609 self.__elemhideRules = []
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
610
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
611 for rule in self.__rules:
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
612 if not rule.isEnabled():
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
613 continue
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
614
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
615 if rule.isCSSRule():
1960
d8c45fe8a1b9 Reworked some of the AdBlock code to achieve some speed improvements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1955
diff changeset
616 if rule.isDomainRestricted():
d8c45fe8a1b9 Reworked some of the AdBlock code to achieve some speed improvements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1955
diff changeset
617 self.__domainRestrictedCssRules.append(rule)
d8c45fe8a1b9 Reworked some of the AdBlock code to achieve some speed improvements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1955
diff changeset
618 else:
d8c45fe8a1b9 Reworked some of the AdBlock code to achieve some speed improvements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1955
diff changeset
619 self.__elementHidingRules += rule.cssSelector() + ","
d8c45fe8a1b9 Reworked some of the AdBlock code to achieve some speed improvements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1955
diff changeset
620 elif rule.isDocument():
d8c45fe8a1b9 Reworked some of the AdBlock code to achieve some speed improvements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1955
diff changeset
621 self.__documentRules.append(rule)
d8c45fe8a1b9 Reworked some of the AdBlock code to achieve some speed improvements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1955
diff changeset
622 elif rule.isElementHiding():
d8c45fe8a1b9 Reworked some of the AdBlock code to achieve some speed improvements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1955
diff changeset
623 self.__elemhideRules.append(rule)
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
624 elif rule.isException():
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
625 self.__networkExceptionRules.append(rule)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
626 else:
540
2631831b4052 Continued replacing QMessageBox methods with own methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 539
diff changeset
627 self.__networkBlockRules.append(rule)
1970
02cf3bac079b Rewrote huge part of AdBlock to speed up and added support for dependent AdBlock subscriptions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1963
diff changeset
628
02cf3bac079b Rewrote huge part of AdBlock to speed up and added support for dependent AdBlock subscriptions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1963
diff changeset
629 def canEditRules(self):
02cf3bac079b Rewrote huge part of AdBlock to speed up and added support for dependent AdBlock subscriptions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1963
diff changeset
630 """
02cf3bac079b Rewrote huge part of AdBlock to speed up and added support for dependent AdBlock subscriptions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1963
diff changeset
631 Public method to check, if rules can be edited.
02cf3bac079b Rewrote huge part of AdBlock to speed up and added support for dependent AdBlock subscriptions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1963
diff changeset
632
02cf3bac079b Rewrote huge part of AdBlock to speed up and added support for dependent AdBlock subscriptions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1963
diff changeset
633 @return flag indicating rules may be edited (boolean)
02cf3bac079b Rewrote huge part of AdBlock to speed up and added support for dependent AdBlock subscriptions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1963
diff changeset
634 """
02cf3bac079b Rewrote huge part of AdBlock to speed up and added support for dependent AdBlock subscriptions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1963
diff changeset
635 return self.__custom
02cf3bac079b Rewrote huge part of AdBlock to speed up and added support for dependent AdBlock subscriptions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1963
diff changeset
636
02cf3bac079b Rewrote huge part of AdBlock to speed up and added support for dependent AdBlock subscriptions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1963
diff changeset
637 def canBeRemoved(self):
02cf3bac079b Rewrote huge part of AdBlock to speed up and added support for dependent AdBlock subscriptions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1963
diff changeset
638 """
02cf3bac079b Rewrote huge part of AdBlock to speed up and added support for dependent AdBlock subscriptions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1963
diff changeset
639 Public method to check, if the subscription can be removed.
02cf3bac079b Rewrote huge part of AdBlock to speed up and added support for dependent AdBlock subscriptions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1963
diff changeset
640
02cf3bac079b Rewrote huge part of AdBlock to speed up and added support for dependent AdBlock subscriptions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1963
diff changeset
641 @return flag indicating removal is allowed (boolean)
02cf3bac079b Rewrote huge part of AdBlock to speed up and added support for dependent AdBlock subscriptions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1963
diff changeset
642 """
02cf3bac079b Rewrote huge part of AdBlock to speed up and added support for dependent AdBlock subscriptions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1963
diff changeset
643 return not self.__custom and not self.__defaultSubscription
02cf3bac079b Rewrote huge part of AdBlock to speed up and added support for dependent AdBlock subscriptions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1963
diff changeset
644
02cf3bac079b Rewrote huge part of AdBlock to speed up and added support for dependent AdBlock subscriptions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1963
diff changeset
645 def setRuleEnabled(self, offset, enabled):
02cf3bac079b Rewrote huge part of AdBlock to speed up and added support for dependent AdBlock subscriptions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1963
diff changeset
646 """
02cf3bac079b Rewrote huge part of AdBlock to speed up and added support for dependent AdBlock subscriptions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1963
diff changeset
647 Public method to enable a specific rule.
02cf3bac079b Rewrote huge part of AdBlock to speed up and added support for dependent AdBlock subscriptions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1963
diff changeset
648
02cf3bac079b Rewrote huge part of AdBlock to speed up and added support for dependent AdBlock subscriptions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1963
diff changeset
649 @param offset offset of the rule (integer)
02cf3bac079b Rewrote huge part of AdBlock to speed up and added support for dependent AdBlock subscriptions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1963
diff changeset
650 @param enabled new enabled state (boolean)
02cf3bac079b Rewrote huge part of AdBlock to speed up and added support for dependent AdBlock subscriptions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1963
diff changeset
651 @return reference to the changed rule (AdBlockRule)
02cf3bac079b Rewrote huge part of AdBlock to speed up and added support for dependent AdBlock subscriptions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1963
diff changeset
652 """
02cf3bac079b Rewrote huge part of AdBlock to speed up and added support for dependent AdBlock subscriptions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1963
diff changeset
653 if offset >= len(self.__rules):
02cf3bac079b Rewrote huge part of AdBlock to speed up and added support for dependent AdBlock subscriptions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1963
diff changeset
654 return None
02cf3bac079b Rewrote huge part of AdBlock to speed up and added support for dependent AdBlock subscriptions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1963
diff changeset
655
02cf3bac079b Rewrote huge part of AdBlock to speed up and added support for dependent AdBlock subscriptions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1963
diff changeset
656 rule = self.__rules[offset]
02cf3bac079b Rewrote huge part of AdBlock to speed up and added support for dependent AdBlock subscriptions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1963
diff changeset
657 rule.setEnabled(enabled)
02cf3bac079b Rewrote huge part of AdBlock to speed up and added support for dependent AdBlock subscriptions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1963
diff changeset
658 if rule.isCSSRule():
02cf3bac079b Rewrote huge part of AdBlock to speed up and added support for dependent AdBlock subscriptions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1963
diff changeset
659 self.__populateCache()
02cf3bac079b Rewrote huge part of AdBlock to speed up and added support for dependent AdBlock subscriptions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1963
diff changeset
660 Helpviewer.HelpWindow.HelpWindow.mainWindow().reloadUserStyleSheet()
02cf3bac079b Rewrote huge part of AdBlock to speed up and added support for dependent AdBlock subscriptions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1963
diff changeset
661
02cf3bac079b Rewrote huge part of AdBlock to speed up and added support for dependent AdBlock subscriptions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1963
diff changeset
662 return rule

eric ide

mercurial