WebBrowser/AdBlock/AdBlockSubscription.py

Tue, 06 Feb 2018 19:18:43 +0100

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Tue, 06 Feb 2018 19:18:43 +0100
changeset 6118
da9e08920e7c
parent 6048
82ad8ec9548c
child 6150
20efcd29b237
permissions
-rw-r--r--

Continued removing the use of QObject.sender().

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
6048
82ad8ec9548c Updated copyright for 2018.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6028
diff changeset
3 # Copyright (c) 2009 - 2018 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
3145
a9de05d4a22f # __IGNORE_WARNING__ added/ removed.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 3060
diff changeset
10 from __future__ import unicode_literals
2525
8b507a9a2d40 Script changes: Future import added, super calls modified and unicode behavior for str.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 2403
diff changeset
11
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
12 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
13 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
14 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
15 import base64
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
16
3656
441956d8fce5 Started porting eric5 to PyQt5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3484
diff changeset
17 from PyQt5.QtCore import pyqtSignal, Qt, QObject, QByteArray, QDateTime, \
4847
a1a8eac81b54 Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4631
diff changeset
18 QUrl, QUrlQuery, QCryptographicHash, QFile, QIODevice, QTextStream, \
4860
0a44aff88bfa Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4859
diff changeset
19 QDate, QTime
4902
7a49807e493c Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4860
diff changeset
20 from PyQt5.QtNetwork import QNetworkReply, QNetworkRequest
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
21
539
87f9bce38a44 Continued replacing QMessageBox methods with own methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 483
diff changeset
22 from E5Gui import E5MessageBox
87f9bce38a44 Continued replacing QMessageBox methods with own methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 483
diff changeset
23
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
24 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
25 import Preferences
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
26
945
8cd4d08fa9f6 Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 791
diff changeset
27
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
28 class AdBlockSubscription(QObject):
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
29 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
30 Class implementing the AdBlock subscription.
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 @signal changed() emitted after the subscription has changed
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
33 @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
34 @signal enabledChanged(bool) emitted after the enabled state was changed
6028
859f6894eed9 Reworked the AdBlock stuff of web browser NG.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5389
diff changeset
35 @signal rulesEnabledChanged() emitted after a rule enabled state was
859f6894eed9 Reworked the AdBlock stuff of web browser NG.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5389
diff changeset
36 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)
6028
859f6894eed9 Reworked the AdBlock stuff of web browser NG.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5389
diff changeset
41 rulesEnabledChanged = pyqtSignal()
483
ca7d8599a575 Continued porting signal/slot usage to the new API.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 464
diff changeset
42
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
43 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
44 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
45 Constructor
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
46
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
47 @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
48 @param custom flag indicating a custom subscription (boolean)
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
49 @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
50 @param default flag indicating a default subscription (boolean)
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
51 """
2525
8b507a9a2d40 Script changes: Future import added, super calls modified and unicode behavior for str.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 2403
diff changeset
52 super(AdBlockSubscription, self).__init__(parent)
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
53
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
54 self.__custom = custom
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
55 self.__url = url.toEncoded()
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
56 self.__enabled = False
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
57 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
58 self.__defaultSubscription = default
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
59
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
60 self.__title = ""
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
61 self.__location = QByteArray()
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
62 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
63 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
64 self.__requiresTitle = ""
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
65
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
66 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
67 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
68
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
69 self.__rules = [] # list containing all AdBlock rules
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
70
3000
971d84f7a6d6 Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2403
diff changeset
71 self.__checksumRe = re.compile(
971d84f7a6d6 Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2403
diff changeset
72 r"""^\s*!\s*checksum[\s\-:]+([\w\+\/=]+).*\n""",
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
73 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
74 self.__expiresRe = re.compile(
2016
2bbc81fcce4a Fixed a few PEP-8 related issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2007
diff changeset
75 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
76 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
77 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
78 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
79 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
80 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
81 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
82
2007
3fec6ace8af7 Added code to check the remote modified date of AdBlock subscriptions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2005
diff changeset
83 self.__monthNameToNumber = {
3fec6ace8af7 Added code to check the remote modified date of AdBlock subscriptions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2005
diff changeset
84 "Jan": 1,
3fec6ace8af7 Added code to check the remote modified date of AdBlock subscriptions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2005
diff changeset
85 "Feb": 2,
3fec6ace8af7 Added code to check the remote modified date of AdBlock subscriptions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2005
diff changeset
86 "Mar": 3,
3fec6ace8af7 Added code to check the remote modified date of AdBlock subscriptions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2005
diff changeset
87 "Apr": 4,
3fec6ace8af7 Added code to check the remote modified date of AdBlock subscriptions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2005
diff changeset
88 "May": 5,
3fec6ace8af7 Added code to check the remote modified date of AdBlock subscriptions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2005
diff changeset
89 "Jun": 6,
3fec6ace8af7 Added code to check the remote modified date of AdBlock subscriptions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2005
diff changeset
90 "Jul": 7,
3fec6ace8af7 Added code to check the remote modified date of AdBlock subscriptions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2005
diff changeset
91 "Aug": 8,
3fec6ace8af7 Added code to check the remote modified date of AdBlock subscriptions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2005
diff changeset
92 "Sep": 9,
3fec6ace8af7 Added code to check the remote modified date of AdBlock subscriptions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2005
diff changeset
93 "Oct": 10,
3fec6ace8af7 Added code to check the remote modified date of AdBlock subscriptions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2005
diff changeset
94 "Nov": 11,
3fec6ace8af7 Added code to check the remote modified date of AdBlock subscriptions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2005
diff changeset
95 "Dec": 12
3fec6ace8af7 Added code to check the remote modified date of AdBlock subscriptions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2005
diff changeset
96 }
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
97
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
98 self.__parseUrl(url)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
99
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
100 def __parseUrl(self, url):
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
101 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
102 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
103
6028
859f6894eed9 Reworked the AdBlock stuff of web browser NG.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5389
diff changeset
104 @param url AdBlock URL for the subscription
859f6894eed9 Reworked the AdBlock stuff of web browser NG.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5389
diff changeset
105 @type QUrl
0
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 if url.scheme() != "abp":
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
108 return
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
109
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
110 if url.path() != "subscribe":
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
111 return
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
112
4847
a1a8eac81b54 Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4631
diff changeset
113 urlQuery = QUrlQuery(url)
a1a8eac81b54 Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4631
diff changeset
114 self.__title = QUrl.fromPercentEncoding(
a1a8eac81b54 Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4631
diff changeset
115 QByteArray(urlQuery.queryItemValue("title").encode()))
a1a8eac81b54 Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4631
diff changeset
116 self.__enabled = urlQuery.queryItemValue("enabled") != "false"
a1a8eac81b54 Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4631
diff changeset
117 self.__location = QByteArray(QUrl.fromPercentEncoding(
a1a8eac81b54 Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4631
diff changeset
118 QByteArray(urlQuery.queryItemValue("location").encode()))
a1a8eac81b54 Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4631
diff changeset
119 .encode("utf-8"))
a1a8eac81b54 Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4631
diff changeset
120
a1a8eac81b54 Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4631
diff changeset
121 # Check for required subscription
a1a8eac81b54 Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4631
diff changeset
122 self.__requiresLocation = QUrl.fromPercentEncoding(
a1a8eac81b54 Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4631
diff changeset
123 QByteArray(urlQuery.queryItemValue(
a1a8eac81b54 Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4631
diff changeset
124 "requiresLocation").encode()))
a1a8eac81b54 Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4631
diff changeset
125 self.__requiresTitle = QUrl.fromPercentEncoding(
a1a8eac81b54 Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4631
diff changeset
126 QByteArray(urlQuery.queryItemValue("requiresTitle").encode()))
a1a8eac81b54 Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4631
diff changeset
127 if self.__requiresLocation and self.__requiresTitle:
4858
19dff9c9cf26 Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4847
diff changeset
128 from WebBrowser.WebBrowserWindow import WebBrowserWindow
19dff9c9cf26 Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4847
diff changeset
129 WebBrowserWindow.adBlockManager().loadRequiredSubscription(
19dff9c9cf26 Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4847
diff changeset
130 self.__requiresLocation, self.__requiresTitle)
4847
a1a8eac81b54 Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4631
diff changeset
131
a1a8eac81b54 Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4631
diff changeset
132 lastUpdateString = urlQuery.queryItemValue("lastUpdate")
a1a8eac81b54 Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4631
diff changeset
133 self.__lastUpdate = QDateTime.fromString(lastUpdateString,
a1a8eac81b54 Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4631
diff changeset
134 Qt.ISODate)
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
135
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
136 self.__loadRules()
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
137
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
138 def url(self):
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
139 """
1960
d8c45fe8a1b9 Reworked some of the AdBlock code to achieve some speed improvements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1955
diff changeset
140 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
141
6028
859f6894eed9 Reworked the AdBlock stuff of web browser NG.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5389
diff changeset
142 @return AdBlock URL for the subscription
859f6894eed9 Reworked the AdBlock stuff of web browser NG.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5389
diff changeset
143 @rtype QUrl
0
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)))
4847
a1a8eac81b54 Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4631
diff changeset
160
a1a8eac81b54 Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4631
diff changeset
161 query = QUrlQuery()
a1a8eac81b54 Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4631
diff changeset
162 query.setQueryItems(queryItems)
a1a8eac81b54 Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4631
diff changeset
163 url.setQuery(query)
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
164 return url
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
165
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
166 def isEnabled(self):
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
167 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
168 Public method to check, if the subscription is enabled.
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
169
6028
859f6894eed9 Reworked the AdBlock stuff of web browser NG.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5389
diff changeset
170 @return flag indicating the enabled status
859f6894eed9 Reworked the AdBlock stuff of web browser NG.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5389
diff changeset
171 @rtype bool
0
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 return self.__enabled
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 def setEnabled(self, enabled):
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 Public method to set the enabled status.
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
178
6028
859f6894eed9 Reworked the AdBlock stuff of web browser NG.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5389
diff changeset
179 @param enabled flag indicating the enabled status
859f6894eed9 Reworked the AdBlock stuff of web browser NG.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5389
diff changeset
180 @type bool
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
181 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
182 if self.__enabled == enabled:
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
183 return
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 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
186 self.enabledChanged.emit(enabled)
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
187
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
188 def title(self):
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
189 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
190 Public method to get the subscription title.
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
191
6028
859f6894eed9 Reworked the AdBlock stuff of web browser NG.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5389
diff changeset
192 @return subscription title
859f6894eed9 Reworked the AdBlock stuff of web browser NG.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5389
diff changeset
193 @rtype string
0
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 return self.__title
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 def setTitle(self, title):
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
198 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
199 Public method to set the subscription title.
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
200
6028
859f6894eed9 Reworked the AdBlock stuff of web browser NG.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5389
diff changeset
201 @param title subscription title
859f6894eed9 Reworked the AdBlock stuff of web browser NG.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5389
diff changeset
202 @type str
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
203 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
204 if self.__title == title:
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
205 return
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 self.__title = title
483
ca7d8599a575 Continued porting signal/slot usage to the new API.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 464
diff changeset
208 self.changed.emit()
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
209
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
210 def location(self):
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
211 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
212 Public method to get the subscription location.
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
213
6028
859f6894eed9 Reworked the AdBlock stuff of web browser NG.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5389
diff changeset
214 @return URL of the subscription location
859f6894eed9 Reworked the AdBlock stuff of web browser NG.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5389
diff changeset
215 @rtype QUrl
0
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 return QUrl.fromEncoded(self.__location)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
218
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
219 def setLocation(self, url):
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
220 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
221 Public method to set the subscription location.
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
222
6028
859f6894eed9 Reworked the AdBlock stuff of web browser NG.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5389
diff changeset
223 @param url URL of the subscription location
859f6894eed9 Reworked the AdBlock stuff of web browser NG.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5389
diff changeset
224 @type QUrl
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
225 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
226 if url == self.location():
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
227 return
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
228
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
229 self.__location = url.toEncoded()
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
230 self.__lastUpdate = QDateTime()
483
ca7d8599a575 Continued porting signal/slot usage to the new API.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 464
diff changeset
231 self.changed.emit()
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
232
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
233 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
234 """
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
235 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
236
6028
859f6894eed9 Reworked the AdBlock stuff of web browser NG.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5389
diff changeset
237 @return location of a required subscription
859f6894eed9 Reworked the AdBlock stuff of web browser NG.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5389
diff changeset
238 @rtype str
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
239 """
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
240 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
241
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
242 def lastUpdate(self):
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 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
245
6028
859f6894eed9 Reworked the AdBlock stuff of web browser NG.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5389
diff changeset
246 @return date and time of the last update
859f6894eed9 Reworked the AdBlock stuff of web browser NG.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5389
diff changeset
247 @rtype QDateTime
0
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 return self.__lastUpdate
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
250
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
251 def rulesFileName(self):
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
252 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
253 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
254
6028
859f6894eed9 Reworked the AdBlock stuff of web browser NG.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5389
diff changeset
255 @return name of the rules file
859f6894eed9 Reworked the AdBlock stuff of web browser NG.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5389
diff changeset
256 @rtype str
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
257 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
258 if self.location().scheme() == "file":
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
259 return self.location().toLocalFile()
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 if self.__location.isEmpty():
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
262 return ""
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
263
3000
971d84f7a6d6 Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2403
diff changeset
264 sha1 = bytes(QCryptographicHash.hash(
971d84f7a6d6 Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2403
diff changeset
265 self.__location, QCryptographicHash.Sha1).toHex()).decode()
971d84f7a6d6 Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2403
diff changeset
266 dataDir = os.path.join(
4847
a1a8eac81b54 Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4631
diff changeset
267 Utilities.getConfigDir(), "web_browser", "subscriptions")
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
268 if not os.path.exists(dataDir):
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
269 os.makedirs(dataDir)
3000
971d84f7a6d6 Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2403
diff changeset
270 fileName = os.path.join(
971d84f7a6d6 Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2403
diff changeset
271 dataDir, "adblock_subscription_{0}".format(sha1))
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
272 return fileName
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
273
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
274 def __loadRules(self):
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
275 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
276 Private method to load the rules of the subscription.
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
277 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
278 fileName = self.rulesFileName()
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
279 f = QFile(fileName)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
280 if f.exists():
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
281 if not f.open(QIODevice.ReadOnly):
3020
542e97d4ecb3 Fixed a bunch of visible indentation issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3000
diff changeset
282 E5MessageBox.warning(
542e97d4ecb3 Fixed a bunch of visible indentation issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3000
diff changeset
283 None,
3190
a9a94491c4fd Changed the code to use QObject.tr() instead of QObject.trUtf8().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3160
diff changeset
284 self.tr("Load subscription rules"),
a9a94491c4fd Changed the code to use QObject.tr() instead of QObject.trUtf8().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3160
diff changeset
285 self.tr(
4847
a1a8eac81b54 Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4631
diff changeset
286 """Unable to open AdBlock file '{0}' for reading.""")
3035
36e9f388958b Fixed a bunch of indentation issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3034
diff changeset
287 .format(fileName))
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
288 else:
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
289 textStream = QTextStream(f)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
290 header = textStream.readLine(1024)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
291 if not header.startswith("[Adblock"):
3020
542e97d4ecb3 Fixed a bunch of visible indentation issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3000
diff changeset
292 E5MessageBox.warning(
542e97d4ecb3 Fixed a bunch of visible indentation issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3000
diff changeset
293 None,
3190
a9a94491c4fd Changed the code to use QObject.tr() instead of QObject.trUtf8().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3160
diff changeset
294 self.tr("Load subscription rules"),
a9a94491c4fd Changed the code to use QObject.tr() instead of QObject.trUtf8().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3160
diff changeset
295 self.tr("""AdBlock file '{0}' does not start"""
a9a94491c4fd Changed the code to use QObject.tr() instead of QObject.trUtf8().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3160
diff changeset
296 """ with [Adblock.""")
3035
36e9f388958b Fixed a bunch of indentation issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3034
diff changeset
297 .format(fileName))
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
298 f.close()
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
299 f.remove()
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
300 self.__lastUpdate = QDateTime()
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
301 else:
2403
e3d7a861547c Continued implementing the delayed import.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2302
diff changeset
302 from .AdBlockRule import AdBlockRule
e3d7a861547c Continued implementing the delayed import.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2302
diff changeset
303
2007
3fec6ace8af7 Added code to check the remote modified date of AdBlock subscriptions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2005
diff changeset
304 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
305 self.__remoteModified = QDateTime()
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
306 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
307 self.__rules.append(AdBlockRule(header, self))
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
308 while not textStream.atEnd():
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
309 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
310 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
311 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
312 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
313 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
314 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
315 # 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
316 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
317 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
318 # 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
319 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
320 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
321 if remoteModified:
3000
971d84f7a6d6 Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2403
diff changeset
322 day, month, year, time, hour, minute = \
971d84f7a6d6 Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2403
diff changeset
323 remoteModified.groups()
2007
3fec6ace8af7 Added code to check the remote modified date of AdBlock subscriptions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2005
diff changeset
324 self.__remoteModified.setDate(
3000
971d84f7a6d6 Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2403
diff changeset
325 QDate(int(year),
971d84f7a6d6 Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2403
diff changeset
326 self.__monthNameToNumber[month],
971d84f7a6d6 Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2403
diff changeset
327 int(day))
971d84f7a6d6 Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2403
diff changeset
328 )
2007
3fec6ace8af7 Added code to check the remote modified date of AdBlock subscriptions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2005
diff changeset
329 if time:
3fec6ace8af7 Added code to check the remote modified date of AdBlock subscriptions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2005
diff changeset
330 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
331 QTime(int(hour), int(minute)))
483
ca7d8599a575 Continued porting signal/slot usage to the new API.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 464
diff changeset
332 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
333 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
334 self.__lastUpdate = QDateTime()
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
335
1854
191efdc54c62 Made the AdBlock update period configurable between 1 and 14 days.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1509
diff changeset
336 self.checkForUpdate()
191efdc54c62 Made the AdBlock update period configurable between 1 and 14 days.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1509
diff changeset
337
191efdc54c62 Made the AdBlock update period configurable between 1 and 14 days.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1509
diff changeset
338 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
339 """
191efdc54c62 Made the AdBlock update period configurable between 1 and 14 days.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1509
diff changeset
340 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
341 """
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
342 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
343 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
344 else:
4847
a1a8eac81b54 Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4631
diff changeset
345 updatePeriod = \
a1a8eac81b54 Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4631
diff changeset
346 Preferences.getWebBrowser("AdBlockUpdatePeriod") * 24
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
347 if not self.__lastUpdate.isValid() or \
3034
7ce719013078 Fixed various coding style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3022
diff changeset
348 (self.__remoteModified.isValid() and
7ce719013078 Fixed various coding style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3022
diff changeset
349 self.__remoteModified.addSecs(updatePeriod * 3600) <
2007
3fec6ace8af7 Added code to check the remote modified date of AdBlock subscriptions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2005
diff changeset
350 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
351 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
352 QDateTime.currentDateTime():
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
353 self.updateNow()
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 def updateNow(self):
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 Public method to update the subscription immediately.
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 if self.__downloading is not None:
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
360 return
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
361
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
362 if not self.location().isValid():
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
363 return
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
364
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
365 if self.location().scheme() == "file":
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
366 self.__lastUpdate = QDateTime.currentDateTime()
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
367 self.__loadRules()
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
368 return
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
369
4847
a1a8eac81b54 Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4631
diff changeset
370 from WebBrowser.WebBrowserWindow import WebBrowserWindow
4902
7a49807e493c Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4860
diff changeset
371 self.__downloading = WebBrowserWindow.networkManager().get(
7a49807e493c Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4860
diff changeset
372 QNetworkRequest(self.location()))
6118
da9e08920e7c Continued removing the use of QObject.sender().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6048
diff changeset
373 self.__downloading.finished.connect(
da9e08920e7c Continued removing the use of QObject.sender().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6048
diff changeset
374 lambda: self.__rulesDownloaded(self.__downloading))
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
375
6118
da9e08920e7c Continued removing the use of QObject.sender().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6048
diff changeset
376 def __rulesDownloaded(self, reply):
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
377 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
378 Private slot to deal with the downloaded rules.
6118
da9e08920e7c Continued removing the use of QObject.sender().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6048
diff changeset
379
da9e08920e7c Continued removing the use of QObject.sender().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6048
diff changeset
380 @param reply reference to the network reply
da9e08920e7c Continued removing the use of QObject.sender().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6048
diff changeset
381 @type QNetworkReply
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
382 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
383 response = reply.readAll()
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
384 reply.close()
168
3383117f894b Fixed a few bugs in the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 134
diff changeset
385 self.__downloading = None
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
386
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
387 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
388 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
389 # don't show error if we try to load the default
3020
542e97d4ecb3 Fixed a bunch of visible indentation issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3000
diff changeset
390 E5MessageBox.warning(
542e97d4ecb3 Fixed a bunch of visible indentation issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3000
diff changeset
391 None,
3190
a9a94491c4fd Changed the code to use QObject.tr() instead of QObject.trUtf8().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3160
diff changeset
392 self.tr("Downloading subscription rules"),
a9a94491c4fd Changed the code to use QObject.tr() instead of QObject.trUtf8().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3160
diff changeset
393 self.tr(
3000
971d84f7a6d6 Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2403
diff changeset
394 """<p>Subscription rules could not be"""
971d84f7a6d6 Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2403
diff changeset
395 """ downloaded.</p><p>Error: {0}</p>""")
3035
36e9f388958b Fixed a bunch of indentation issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3034
diff changeset
396 .format(reply.errorString()))
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
397 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
398 # 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
399 self.__defaultSubscription = False
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
400 return
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
401
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
402 if response.isEmpty():
3020
542e97d4ecb3 Fixed a bunch of visible indentation issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3000
diff changeset
403 E5MessageBox.warning(
542e97d4ecb3 Fixed a bunch of visible indentation issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3000
diff changeset
404 None,
3190
a9a94491c4fd Changed the code to use QObject.tr() instead of QObject.trUtf8().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3160
diff changeset
405 self.tr("Downloading subscription rules"),
a9a94491c4fd Changed the code to use QObject.tr() instead of QObject.trUtf8().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3160
diff changeset
406 self.tr("""Got empty subscription rules."""))
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
407 return
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
408
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
409 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
410 QFile.remove(fileName)
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
411 f = QFile(fileName)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
412 if not f.open(QIODevice.ReadWrite):
3020
542e97d4ecb3 Fixed a bunch of visible indentation issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3000
diff changeset
413 E5MessageBox.warning(
542e97d4ecb3 Fixed a bunch of visible indentation issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3000
diff changeset
414 None,
3190
a9a94491c4fd Changed the code to use QObject.tr() instead of QObject.trUtf8().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3160
diff changeset
415 self.tr("Downloading subscription rules"),
a9a94491c4fd Changed the code to use QObject.tr() instead of QObject.trUtf8().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3160
diff changeset
416 self.tr(
4847
a1a8eac81b54 Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4631
diff changeset
417 """Unable to open AdBlock file '{0}' for writing.""")
3035
36e9f388958b Fixed a bunch of indentation issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3034
diff changeset
418 .file(fileName))
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
419 return
4859
36c4b21c9f7b Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4858
diff changeset
420
36c4b21c9f7b Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4858
diff changeset
421 from WebBrowser.WebBrowserWindow import WebBrowserWindow
36c4b21c9f7b Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4858
diff changeset
422 if WebBrowserWindow.adBlockManager().useLimitedEasyList() and \
36c4b21c9f7b Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4858
diff changeset
423 self.url().toString().startswith(
36c4b21c9f7b Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4858
diff changeset
424 WebBrowserWindow.adBlockManager().getDefaultSubscriptionUrl()):
4860
0a44aff88bfa Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4859
diff changeset
425 limited = True
4859
36c4b21c9f7b Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4858
diff changeset
426 # ignore Third-party advertisers rules for performance
36c4b21c9f7b Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4858
diff changeset
427 # whitelist rules at the end will be used
4860
0a44aff88bfa Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4859
diff changeset
428 index = response.indexOf(
4859
36c4b21c9f7b Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4858
diff changeset
429 "!---------------------------"
36c4b21c9f7b Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4858
diff changeset
430 "Third-party advertisers"
4860
0a44aff88bfa Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4859
diff changeset
431 "---------------------------!")
0a44aff88bfa Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4859
diff changeset
432 part1 = response.left(index)
0a44aff88bfa Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4859
diff changeset
433 index = response.indexOf(
4859
36c4b21c9f7b Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4858
diff changeset
434 "!-----------------------"
36c4b21c9f7b Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4858
diff changeset
435 "Whitelists to fix broken sites"
4860
0a44aff88bfa Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4859
diff changeset
436 "------------------------!")
0a44aff88bfa Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4859
diff changeset
437 part2 = response.mid(index)
4859
36c4b21c9f7b Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4858
diff changeset
438 f.write(part1)
36c4b21c9f7b Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4858
diff changeset
439 f.write(part2)
36c4b21c9f7b Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4858
diff changeset
440 else:
4860
0a44aff88bfa Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4859
diff changeset
441 limited = False
4859
36c4b21c9f7b Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4858
diff changeset
442 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
443 f.close()
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
444 self.__lastUpdate = QDateTime.currentDateTime()
4860
0a44aff88bfa Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4859
diff changeset
445 if limited or self.__validateCheckSum(fileName):
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
446 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
447 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
448 QFile.remove(fileName)
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
449 self.__downloading = None
4339
c2d1da8d2a05 Fixed a few issues in the AdBlock subscription loader.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4332
diff changeset
450 reply.deleteLater()
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
451
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
452 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
453 """
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
454 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
455
6028
859f6894eed9 Reworked the AdBlock stuff of web browser NG.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5389
diff changeset
456 @param fileName name of the file containing the subscription
859f6894eed9 Reworked the AdBlock stuff of web browser NG.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5389
diff changeset
457 @type str
859f6894eed9 Reworked the AdBlock stuff of web browser NG.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5389
diff changeset
458 @return flag indicating a valid file. A file is considered
4860
0a44aff88bfa Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4859
diff changeset
459 valid, if the checksum is OK, the file does not contain a
0a44aff88bfa Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4859
diff changeset
460 checksum (i.e. cannot be checked) or we are using the limited
0a44aff88bfa Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4859
diff changeset
461 EasyList (because we fiddled with the original).
6028
859f6894eed9 Reworked the AdBlock stuff of web browser NG.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5389
diff changeset
462 @rtype bool
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
463 """
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
464 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
465 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
466 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
467 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
468 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
469 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
470
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
471 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
472 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
473 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
474 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
475 # 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
476 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
477
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
478 # 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
479 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
480 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
481 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
482
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
483 # 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
484 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
485 md5.update(data.encode("utf-8"))
3000
971d84f7a6d6 Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2403
diff changeset
486 calculatedChecksum = base64.b64encode(md5.digest()).decode()\
971d84f7a6d6 Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2403
diff changeset
487 .rstrip("=")
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
488 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
489 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
490 else:
3020
542e97d4ecb3 Fixed a bunch of visible indentation issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3000
diff changeset
491 res = E5MessageBox.yesNo(
542e97d4ecb3 Fixed a bunch of visible indentation issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3000
diff changeset
492 None,
3190
a9a94491c4fd Changed the code to use QObject.tr() instead of QObject.trUtf8().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3160
diff changeset
493 self.tr("Downloading subscription rules"),
a9a94491c4fd Changed the code to use QObject.tr() instead of QObject.trUtf8().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3160
diff changeset
494 self.tr(
3000
971d84f7a6d6 Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2403
diff changeset
495 """<p>AdBlock subscription <b>{0}</b> has a wrong"""
971d84f7a6d6 Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2403
diff changeset
496 """ checksum.<br/>"""
971d84f7a6d6 Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2403
diff changeset
497 """Found: {1}<br/>"""
971d84f7a6d6 Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2403
diff changeset
498 """Calculated: {2}<br/>"""
3034
7ce719013078 Fixed various coding style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3022
diff changeset
499 """Use it anyway?</p>""")
3035
36e9f388958b Fixed a bunch of indentation issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3034
diff changeset
500 .format(self.__title, expectedChecksum,
36e9f388958b Fixed a bunch of indentation issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3034
diff changeset
501 calculatedChecksum))
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
502 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
503
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
504 def saveRules(self):
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
505 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
506 Public method to save the subscription rules.
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
507 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
508 fileName = self.rulesFileName()
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
509 if not fileName:
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
510 return
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
511
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
512 f = QFile(fileName)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
513 if not f.open(QIODevice.ReadWrite | QIODevice.Truncate):
3020
542e97d4ecb3 Fixed a bunch of visible indentation issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3000
diff changeset
514 E5MessageBox.warning(
542e97d4ecb3 Fixed a bunch of visible indentation issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3000
diff changeset
515 None,
3190
a9a94491c4fd Changed the code to use QObject.tr() instead of QObject.trUtf8().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3160
diff changeset
516 self.tr("Saving subscription rules"),
a9a94491c4fd Changed the code to use QObject.tr() instead of QObject.trUtf8().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3160
diff changeset
517 self.tr(
4847
a1a8eac81b54 Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4631
diff changeset
518 """Unable to open AdBlock file '{0}' for writing.""")
3035
36e9f388958b Fixed a bunch of indentation issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3034
diff changeset
519 .format(fileName))
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
520 return
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
521
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
522 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
523 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
524 textStream << "[Adblock Plus 1.1.1]\n"
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
525 for rule in self.__rules:
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
526 textStream << rule.filter() << "\n"
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
527
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
528 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
529 """
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
530 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
531
6028
859f6894eed9 Reworked the AdBlock stuff of web browser NG.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5389
diff changeset
532 @param offset offset of the rule
859f6894eed9 Reworked the AdBlock stuff of web browser NG.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5389
diff changeset
533 @type int
859f6894eed9 Reworked the AdBlock stuff of web browser NG.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5389
diff changeset
534 @return requested rule
859f6894eed9 Reworked the AdBlock stuff of web browser NG.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5389
diff changeset
535 @rtype 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
536 """
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 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
538 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
539
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 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
541
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
542 def allRules(self):
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
543 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
544 Public method to get the list of rules.
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
545
6028
859f6894eed9 Reworked the AdBlock stuff of web browser NG.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5389
diff changeset
546 @return list of rules
859f6894eed9 Reworked the AdBlock stuff of web browser NG.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5389
diff changeset
547 @rtype list of AdBlockRule
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
548 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
549 return self.__rules[:]
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 def addRule(self, rule):
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 Public method to add a rule.
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
554
6028
859f6894eed9 Reworked the AdBlock stuff of web browser NG.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5389
diff changeset
555 @param rule reference to the rule to add
859f6894eed9 Reworked the AdBlock stuff of web browser NG.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5389
diff changeset
556 @type AdBlockRule
859f6894eed9 Reworked the AdBlock stuff of web browser NG.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5389
diff changeset
557 @return offset of the rule
859f6894eed9 Reworked the AdBlock stuff of web browser NG.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5389
diff changeset
558 @rtype int
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
559 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
560 self.__rules.append(rule)
483
ca7d8599a575 Continued porting signal/slot usage to the new API.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 464
diff changeset
561 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
562
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
563 return len(self.__rules) - 1
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
564
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
565 def removeRule(self, offset):
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
566 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
567 Public method to remove a rule given the offset.
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
568
6028
859f6894eed9 Reworked the AdBlock stuff of web browser NG.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5389
diff changeset
569 @param offset offset of the rule to remove
859f6894eed9 Reworked the AdBlock stuff of web browser NG.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5389
diff changeset
570 @type int
0
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 if offset < 0 or offset > len(self.__rules):
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
573 return
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
574
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
575 del self.__rules[offset]
483
ca7d8599a575 Continued porting signal/slot usage to the new API.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 464
diff changeset
576 self.rulesChanged.emit()
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
577
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
578 def replaceRule(self, rule, offset):
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
579 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
580 Public method to replace a rule given the offset.
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
581
6028
859f6894eed9 Reworked the AdBlock stuff of web browser NG.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5389
diff changeset
582 @param rule reference to the rule to set
859f6894eed9 Reworked the AdBlock stuff of web browser NG.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5389
diff changeset
583 @type AdBlockRule
859f6894eed9 Reworked the AdBlock stuff of web browser NG.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5389
diff changeset
584 @param offset offset of the rule to remove
859f6894eed9 Reworked the AdBlock stuff of web browser NG.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5389
diff changeset
585 @type int
859f6894eed9 Reworked the AdBlock stuff of web browser NG.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5389
diff changeset
586 @return requested rule
859f6894eed9 Reworked the AdBlock stuff of web browser NG.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5389
diff changeset
587 @rtype AdBlockRule
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
588 """
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 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
590 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
591
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
592 self.__rules[offset] = rule
483
ca7d8599a575 Continued porting signal/slot usage to the new API.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 464
diff changeset
593 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
594
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
595 return self.__rules[offset]
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
596
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 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
598 """
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
599 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
600
6028
859f6894eed9 Reworked the AdBlock stuff of web browser NG.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5389
diff changeset
601 @return flag indicating rules may be edited
859f6894eed9 Reworked the AdBlock stuff of web browser NG.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5389
diff changeset
602 @rtype bool
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
603 """
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
604 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
605
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
606 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
607 """
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
608 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
609
6028
859f6894eed9 Reworked the AdBlock stuff of web browser NG.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5389
diff changeset
610 @return flag indicating removal is allowed
859f6894eed9 Reworked the AdBlock stuff of web browser NG.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5389
diff changeset
611 @rtype bool
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
612 """
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
613 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
614
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
615 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
616 """
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
617 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
618
6028
859f6894eed9 Reworked the AdBlock stuff of web browser NG.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5389
diff changeset
619 @param offset offset of the rule
859f6894eed9 Reworked the AdBlock stuff of web browser NG.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5389
diff changeset
620 @type int
859f6894eed9 Reworked the AdBlock stuff of web browser NG.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5389
diff changeset
621 @param enabled new enabled state
859f6894eed9 Reworked the AdBlock stuff of web browser NG.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5389
diff changeset
622 @type bool
859f6894eed9 Reworked the AdBlock stuff of web browser NG.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5389
diff changeset
623 @return reference to the changed rule
859f6894eed9 Reworked the AdBlock stuff of web browser NG.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5389
diff changeset
624 @rtype 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
625 """
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
626 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
627 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
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 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
630 rule.setEnabled(enabled)
6028
859f6894eed9 Reworked the AdBlock stuff of web browser NG.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5389
diff changeset
631 self.rulesEnabledChanged.emit()
859f6894eed9 Reworked the AdBlock stuff of web browser NG.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5389
diff changeset
632
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
633 if rule.isCSSRule():
4847
a1a8eac81b54 Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4631
diff changeset
634 from WebBrowser.WebBrowserWindow import WebBrowserWindow
a1a8eac81b54 Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4631
diff changeset
635 WebBrowserWindow.mainWindow().reloadUserStyleSheet()
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
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 return rule

eric ide

mercurial