Mon, 20 Jun 2022 19:47:39 +0200
Changed some use of QFile() to a more pythonic solution and fixed a few issues.
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 | |
8881
54e42bc2437a
Updated copyright for 2022.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8561
diff
changeset
|
3 | # Copyright (c) 2009 - 2022 Detlev Offenbach <detlev@die-offenbachs.de> |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
4 | # |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
5 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
6 | """ |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
7 | Module implementing the AdBlock subscription class. |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
8 | """ |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
9 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
10 | import os |
1994
84d55b34ba5a
Added support for AdBlock checksum checking when downloading a subscription to the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1971
diff
changeset
|
11 | import re |
84d55b34ba5a
Added support for AdBlock checksum checking when downloading a subscription to the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1971
diff
changeset
|
12 | import hashlib |
84d55b34ba5a
Added support for AdBlock checksum checking when downloading a subscription to the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1971
diff
changeset
|
13 | import base64 |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
14 | |
8318
962bce857696
Replaced all imports of PyQt5 to PyQt6 and started to replace code using obsoleted methods and adapt to the PyQt6 enum usage.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8312
diff
changeset
|
15 | from PyQt6.QtCore import ( |
7268
a28338eaf694
Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7229
diff
changeset
|
16 | pyqtSignal, Qt, QObject, QByteArray, QDateTime, QUrl, QUrlQuery, |
9162
8b75b1668583
Changed some use of QFile() to a more pythonic solution and fixed a few issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8881
diff
changeset
|
17 | QCryptographicHash, QDate, QTime |
7268
a28338eaf694
Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7229
diff
changeset
|
18 | ) |
8318
962bce857696
Replaced all imports of PyQt5 to PyQt6 and started to replace code using obsoleted methods and adapt to the PyQt6 enum usage.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8312
diff
changeset
|
19 | from PyQt6.QtNetwork import QNetworkReply, QNetworkRequest |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
20 | |
8358
144a6b854f70
Sorted the eric specific extensions into packages named like the corresponding PyQt packages (i.e. EricCore,EricGui and EricWidgets).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8356
diff
changeset
|
21 | from EricWidgets import EricMessageBox |
539
87f9bce38a44
Continued replacing QMessageBox methods with own methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
483
diff
changeset
|
22 | |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
23 | 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
|
24 | import Preferences |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
25 | |
945
8cd4d08fa9f6
Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
791
diff
changeset
|
26 | |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
27 | class AdBlockSubscription(QObject): |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
28 | """ |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
29 | Class implementing the AdBlock subscription. |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
30 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
31 | @signal changed() emitted after the subscription has changed |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
32 | @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
|
33 | @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
|
34 | @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
|
35 | changed |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
36 | """ |
483
ca7d8599a575
Continued porting signal/slot usage to the new API.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
464
diff
changeset
|
37 | changed = pyqtSignal() |
ca7d8599a575
Continued porting signal/slot usage to the new API.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
464
diff
changeset
|
38 | rulesChanged = pyqtSignal() |
1971
a68d78702c98
Fixed an issue remembering the enabled state of AdBlock subscriptions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1970
diff
changeset
|
39 | enabledChanged = pyqtSignal(bool) |
6028
859f6894eed9
Reworked the AdBlock stuff of web browser NG.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5389
diff
changeset
|
40 | rulesEnabledChanged = pyqtSignal() |
483
ca7d8599a575
Continued porting signal/slot usage to the new API.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
464
diff
changeset
|
41 | |
1970
02cf3bac079b
Rewrote huge part of AdBlock to speed up and added support for dependent AdBlock subscriptions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1963
diff
changeset
|
42 | def __init__(self, url, custom, parent=None, default=False): |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
43 | """ |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
44 | Constructor |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
45 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
46 | @param url AdBlock URL for the subscription (QUrl) |
1970
02cf3bac079b
Rewrote huge part of AdBlock to speed up and added support for dependent AdBlock subscriptions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1963
diff
changeset
|
47 | @param custom flag indicating a custom subscription (boolean) |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
48 | @param parent reference to the parent object (QObject) |
1970
02cf3bac079b
Rewrote huge part of AdBlock to speed up and added support for dependent AdBlock subscriptions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1963
diff
changeset
|
49 | @param default flag indicating a default subscription (boolean) |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
50 | """ |
8218
7c09585bd960
Applied some more code simplifications suggested by the new Simplify checker (super(Foo, self) => super()).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8143
diff
changeset
|
51 | super().__init__(parent) |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
52 | |
1970
02cf3bac079b
Rewrote huge part of AdBlock to speed up and added support for dependent AdBlock subscriptions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1963
diff
changeset
|
53 | self.__custom = custom |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
54 | self.__url = url.toEncoded() |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
55 | self.__enabled = False |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
56 | self.__downloading = None |
956
f3e1500da1df
Changed behavior of ad blocker downloading the default subscription in case of missing an internet link.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
945
diff
changeset
|
57 | self.__defaultSubscription = default |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
58 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
59 | self.__title = "" |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
60 | self.__location = QByteArray() |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
61 | self.__lastUpdate = QDateTime() |
1970
02cf3bac079b
Rewrote huge part of AdBlock to speed up and added support for dependent AdBlock subscriptions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1963
diff
changeset
|
62 | self.__requiresLocation = "" |
02cf3bac079b
Rewrote huge part of AdBlock to speed up and added support for dependent AdBlock subscriptions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1963
diff
changeset
|
63 | self.__requiresTitle = "" |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
64 | |
2005
6867cf32df67
Added support for variable AdBlock update periods (given in subscription) to the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1994
diff
changeset
|
65 | self.__updatePeriod = 0 # update period in hours, 0 = use default |
2007
3fec6ace8af7
Added code to check the remote modified date of AdBlock subscriptions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2005
diff
changeset
|
66 | self.__remoteModified = QDateTime() |
2005
6867cf32df67
Added support for variable AdBlock update periods (given in subscription) to the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1994
diff
changeset
|
67 | |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
68 | self.__rules = [] # list containing all AdBlock rules |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
69 | |
3000
971d84f7a6d6
Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2403
diff
changeset
|
70 | 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
|
71 | 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
|
72 | 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
|
73 | self.__expiresRe = re.compile( |
2016
2bbc81fcce4a
Fixed a few PEP-8 related issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2007
diff
changeset
|
74 | 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
|
75 | 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
|
76 | 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
|
77 | 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
|
78 | 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
|
79 | 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
|
80 | 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
|
81 | |
2007
3fec6ace8af7
Added code to check the remote modified date of AdBlock subscriptions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2005
diff
changeset
|
82 | self.__monthNameToNumber = { |
3fec6ace8af7
Added code to check the remote modified date of AdBlock subscriptions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2005
diff
changeset
|
83 | "Jan": 1, |
3fec6ace8af7
Added code to check the remote modified date of AdBlock subscriptions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2005
diff
changeset
|
84 | "Feb": 2, |
3fec6ace8af7
Added code to check the remote modified date of AdBlock subscriptions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2005
diff
changeset
|
85 | "Mar": 3, |
3fec6ace8af7
Added code to check the remote modified date of AdBlock subscriptions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2005
diff
changeset
|
86 | "Apr": 4, |
3fec6ace8af7
Added code to check the remote modified date of AdBlock subscriptions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2005
diff
changeset
|
87 | "May": 5, |
3fec6ace8af7
Added code to check the remote modified date of AdBlock subscriptions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2005
diff
changeset
|
88 | "Jun": 6, |
3fec6ace8af7
Added code to check the remote modified date of AdBlock subscriptions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2005
diff
changeset
|
89 | "Jul": 7, |
3fec6ace8af7
Added code to check the remote modified date of AdBlock subscriptions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2005
diff
changeset
|
90 | "Aug": 8, |
3fec6ace8af7
Added code to check the remote modified date of AdBlock subscriptions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2005
diff
changeset
|
91 | "Sep": 9, |
3fec6ace8af7
Added code to check the remote modified date of AdBlock subscriptions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2005
diff
changeset
|
92 | "Oct": 10, |
3fec6ace8af7
Added code to check the remote modified date of AdBlock subscriptions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2005
diff
changeset
|
93 | "Nov": 11, |
3fec6ace8af7
Added code to check the remote modified date of AdBlock subscriptions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2005
diff
changeset
|
94 | "Dec": 12 |
3fec6ace8af7
Added code to check the remote modified date of AdBlock subscriptions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2005
diff
changeset
|
95 | } |
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
|
96 | |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
97 | self.__parseUrl(url) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
98 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
99 | def __parseUrl(self, url): |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
100 | """ |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
101 | 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
|
102 | |
6028
859f6894eed9
Reworked the AdBlock stuff of web browser NG.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5389
diff
changeset
|
103 | @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
|
104 | @type QUrl |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
105 | """ |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
106 | if url.scheme() != "abp": |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
107 | return |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
108 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
109 | if url.path() != "subscribe": |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
110 | return |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
111 | |
4847
a1a8eac81b54
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4631
diff
changeset
|
112 | urlQuery = QUrlQuery(url) |
a1a8eac81b54
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4631
diff
changeset
|
113 | self.__title = QUrl.fromPercentEncoding( |
a1a8eac81b54
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4631
diff
changeset
|
114 | QByteArray(urlQuery.queryItemValue("title").encode())) |
a1a8eac81b54
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4631
diff
changeset
|
115 | self.__enabled = urlQuery.queryItemValue("enabled") != "false" |
a1a8eac81b54
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4631
diff
changeset
|
116 | self.__location = QByteArray(QUrl.fromPercentEncoding( |
a1a8eac81b54
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4631
diff
changeset
|
117 | QByteArray(urlQuery.queryItemValue("location").encode())) |
a1a8eac81b54
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4631
diff
changeset
|
118 | .encode("utf-8")) |
a1a8eac81b54
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4631
diff
changeset
|
119 | |
a1a8eac81b54
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4631
diff
changeset
|
120 | # Check for required subscription |
a1a8eac81b54
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4631
diff
changeset
|
121 | self.__requiresLocation = QUrl.fromPercentEncoding( |
a1a8eac81b54
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4631
diff
changeset
|
122 | QByteArray(urlQuery.queryItemValue( |
a1a8eac81b54
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4631
diff
changeset
|
123 | "requiresLocation").encode())) |
a1a8eac81b54
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4631
diff
changeset
|
124 | self.__requiresTitle = QUrl.fromPercentEncoding( |
a1a8eac81b54
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4631
diff
changeset
|
125 | QByteArray(urlQuery.queryItemValue("requiresTitle").encode())) |
a1a8eac81b54
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4631
diff
changeset
|
126 | if self.__requiresLocation and self.__requiresTitle: |
4858
19dff9c9cf26
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4847
diff
changeset
|
127 | from WebBrowser.WebBrowserWindow import WebBrowserWindow |
19dff9c9cf26
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4847
diff
changeset
|
128 | WebBrowserWindow.adBlockManager().loadRequiredSubscription( |
19dff9c9cf26
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4847
diff
changeset
|
129 | self.__requiresLocation, self.__requiresTitle) |
4847
a1a8eac81b54
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4631
diff
changeset
|
130 | |
a1a8eac81b54
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4631
diff
changeset
|
131 | lastUpdateString = urlQuery.queryItemValue("lastUpdate") |
a1a8eac81b54
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4631
diff
changeset
|
132 | self.__lastUpdate = QDateTime.fromString(lastUpdateString, |
8143
2c730d5fd177
Changed the use of PyQt enums because the way they were used previously is deprecated since two years and replaced some deprecated Qt stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7923
diff
changeset
|
133 | Qt.DateFormat.ISODate) |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
134 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
135 | self.__loadRules() |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
136 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
137 | def url(self): |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
138 | """ |
1960
d8c45fe8a1b9
Reworked some of the AdBlock code to achieve some speed improvements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1955
diff
changeset
|
139 | 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
|
140 | |
6028
859f6894eed9
Reworked the AdBlock stuff of web browser NG.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5389
diff
changeset
|
141 | @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
|
142 | @rtype QUrl |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
143 | """ |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
144 | url = QUrl() |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
145 | url.setScheme("abp") |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
146 | url.setPath("subscribe") |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
147 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
148 | 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
|
149 | queryItems.append(("location", bytes(self.__location).decode())) |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
150 | 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
|
151 | 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
|
152 | 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
|
153 | 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
|
154 | if not self.__enabled: |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
155 | queryItems.append(("enabled", "false")) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
156 | if self.__lastUpdate.isValid(): |
8143
2c730d5fd177
Changed the use of PyQt enums because the way they were used previously is deprecated since two years and replaced some deprecated Qt stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7923
diff
changeset
|
157 | queryItems.append( |
2c730d5fd177
Changed the use of PyQt enums because the way they were used previously is deprecated since two years and replaced some deprecated Qt stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7923
diff
changeset
|
158 | ("lastUpdate", |
2c730d5fd177
Changed the use of PyQt enums because the way they were used previously is deprecated since two years and replaced some deprecated Qt stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7923
diff
changeset
|
159 | self.__lastUpdate.toString(Qt.DateFormat.ISODate)) |
2c730d5fd177
Changed the use of PyQt enums because the way they were used previously is deprecated since two years and replaced some deprecated Qt stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7923
diff
changeset
|
160 | ) |
4847
a1a8eac81b54
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4631
diff
changeset
|
161 | |
a1a8eac81b54
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4631
diff
changeset
|
162 | query = QUrlQuery() |
a1a8eac81b54
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4631
diff
changeset
|
163 | query.setQueryItems(queryItems) |
a1a8eac81b54
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4631
diff
changeset
|
164 | url.setQuery(query) |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
165 | return url |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
166 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
167 | def isEnabled(self): |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
168 | """ |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
169 | Public method to check, if the subscription is enabled. |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
170 | |
6028
859f6894eed9
Reworked the AdBlock stuff of web browser NG.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5389
diff
changeset
|
171 | @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
|
172 | @rtype bool |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
173 | """ |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
174 | return self.__enabled |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
175 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
176 | def setEnabled(self, enabled): |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
177 | """ |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
178 | Public method to set the enabled status. |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
179 | |
6028
859f6894eed9
Reworked the AdBlock stuff of web browser NG.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5389
diff
changeset
|
180 | @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
|
181 | @type bool |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
182 | """ |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
183 | if self.__enabled == enabled: |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
184 | return |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
185 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
186 | 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
|
187 | self.enabledChanged.emit(enabled) |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
188 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
189 | def title(self): |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
190 | """ |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
191 | Public method to get the subscription title. |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
192 | |
6028
859f6894eed9
Reworked the AdBlock stuff of web browser NG.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5389
diff
changeset
|
193 | @return subscription title |
859f6894eed9
Reworked the AdBlock stuff of web browser NG.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5389
diff
changeset
|
194 | @rtype string |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
195 | """ |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
196 | return self.__title |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
197 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
198 | def setTitle(self, title): |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
199 | """ |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
200 | Public method to set the subscription title. |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
201 | |
6028
859f6894eed9
Reworked the AdBlock stuff of web browser NG.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5389
diff
changeset
|
202 | @param title subscription title |
859f6894eed9
Reworked the AdBlock stuff of web browser NG.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5389
diff
changeset
|
203 | @type str |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
204 | """ |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
205 | if self.__title == title: |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
206 | return |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
207 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
208 | self.__title = title |
483
ca7d8599a575
Continued porting signal/slot usage to the new API.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
464
diff
changeset
|
209 | self.changed.emit() |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
210 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
211 | def location(self): |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
212 | """ |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
213 | Public method to get the subscription location. |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
214 | |
6028
859f6894eed9
Reworked the AdBlock stuff of web browser NG.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5389
diff
changeset
|
215 | @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
|
216 | @rtype QUrl |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
217 | """ |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
218 | return QUrl.fromEncoded(self.__location) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
219 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
220 | def setLocation(self, url): |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
221 | """ |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
222 | Public method to set the subscription location. |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
223 | |
6028
859f6894eed9
Reworked the AdBlock stuff of web browser NG.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5389
diff
changeset
|
224 | @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
|
225 | @type QUrl |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
226 | """ |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
227 | if url == self.location(): |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
228 | return |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
229 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
230 | self.__location = url.toEncoded() |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
231 | self.__lastUpdate = QDateTime() |
483
ca7d8599a575
Continued porting signal/slot usage to the new API.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
464
diff
changeset
|
232 | self.changed.emit() |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
233 | |
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
|
234 | 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
|
235 | """ |
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 | 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
|
237 | |
6028
859f6894eed9
Reworked the AdBlock stuff of web browser NG.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5389
diff
changeset
|
238 | @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
|
239 | @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
|
240 | """ |
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 | 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
|
242 | |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
243 | def lastUpdate(self): |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
244 | """ |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
245 | 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
|
246 | |
6028
859f6894eed9
Reworked the AdBlock stuff of web browser NG.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5389
diff
changeset
|
247 | @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
|
248 | @rtype QDateTime |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
249 | """ |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
250 | return self.__lastUpdate |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
251 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
252 | def rulesFileName(self): |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
253 | """ |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
254 | 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
|
255 | |
6028
859f6894eed9
Reworked the AdBlock stuff of web browser NG.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5389
diff
changeset
|
256 | @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
|
257 | @rtype str |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
258 | """ |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
259 | if self.location().scheme() == "file": |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
260 | return self.location().toLocalFile() |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
261 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
262 | if self.__location.isEmpty(): |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
263 | return "" |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
264 | |
3000
971d84f7a6d6
Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2403
diff
changeset
|
265 | sha1 = bytes(QCryptographicHash.hash( |
8143
2c730d5fd177
Changed the use of PyQt enums because the way they were used previously is deprecated since two years and replaced some deprecated Qt stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7923
diff
changeset
|
266 | self.__location, QCryptographicHash.Algorithm.Sha1).toHex() |
2c730d5fd177
Changed the use of PyQt enums because the way they were used previously is deprecated since two years and replaced some deprecated Qt stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7923
diff
changeset
|
267 | ).decode() |
3000
971d84f7a6d6
Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2403
diff
changeset
|
268 | dataDir = os.path.join( |
4847
a1a8eac81b54
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4631
diff
changeset
|
269 | Utilities.getConfigDir(), "web_browser", "subscriptions") |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
270 | if not os.path.exists(dataDir): |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
271 | 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
|
272 | 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
|
273 | dataDir, "adblock_subscription_{0}".format(sha1)) |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
274 | return fileName |
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 | def __loadRules(self): |
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 | Private method to load the rules of the subscription. |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
279 | """ |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
280 | fileName = self.rulesFileName() |
9162
8b75b1668583
Changed some use of QFile() to a more pythonic solution and fixed a few issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8881
diff
changeset
|
281 | if os.path.exists(fileName): |
8b75b1668583
Changed some use of QFile() to a more pythonic solution and fixed a few issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8881
diff
changeset
|
282 | try: |
8b75b1668583
Changed some use of QFile() to a more pythonic solution and fixed a few issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8881
diff
changeset
|
283 | with open(fileName, "r", encoding="utf-8") as f: |
8b75b1668583
Changed some use of QFile() to a more pythonic solution and fixed a few issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8881
diff
changeset
|
284 | header = f.readline().strip() |
8b75b1668583
Changed some use of QFile() to a more pythonic solution and fixed a few issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8881
diff
changeset
|
285 | if not header.startswith("[Adblock"): |
8b75b1668583
Changed some use of QFile() to a more pythonic solution and fixed a few issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8881
diff
changeset
|
286 | EricMessageBox.warning( |
8b75b1668583
Changed some use of QFile() to a more pythonic solution and fixed a few issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8881
diff
changeset
|
287 | None, |
8b75b1668583
Changed some use of QFile() to a more pythonic solution and fixed a few issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8881
diff
changeset
|
288 | self.tr("Load subscription rules"), |
8b75b1668583
Changed some use of QFile() to a more pythonic solution and fixed a few issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8881
diff
changeset
|
289 | self.tr("""AdBlock file '{0}' does not start""" |
8b75b1668583
Changed some use of QFile() to a more pythonic solution and fixed a few issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8881
diff
changeset
|
290 | """ with [Adblock.""") |
8b75b1668583
Changed some use of QFile() to a more pythonic solution and fixed a few issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8881
diff
changeset
|
291 | .format(fileName)) |
8b75b1668583
Changed some use of QFile() to a more pythonic solution and fixed a few issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8881
diff
changeset
|
292 | f.close() |
8b75b1668583
Changed some use of QFile() to a more pythonic solution and fixed a few issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8881
diff
changeset
|
293 | os.unlink(fileName) |
8b75b1668583
Changed some use of QFile() to a more pythonic solution and fixed a few issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8881
diff
changeset
|
294 | self.__lastUpdate = QDateTime() |
8b75b1668583
Changed some use of QFile() to a more pythonic solution and fixed a few issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8881
diff
changeset
|
295 | else: |
8b75b1668583
Changed some use of QFile() to a more pythonic solution and fixed a few issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8881
diff
changeset
|
296 | from .AdBlockRule import AdBlockRule |
8b75b1668583
Changed some use of QFile() to a more pythonic solution and fixed a few issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8881
diff
changeset
|
297 | |
8b75b1668583
Changed some use of QFile() to a more pythonic solution and fixed a few issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8881
diff
changeset
|
298 | self.__updatePeriod = 0 |
8b75b1668583
Changed some use of QFile() to a more pythonic solution and fixed a few issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8881
diff
changeset
|
299 | self.__remoteModified = QDateTime() |
8b75b1668583
Changed some use of QFile() to a more pythonic solution and fixed a few issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8881
diff
changeset
|
300 | self.__rules = [] |
8b75b1668583
Changed some use of QFile() to a more pythonic solution and fixed a few issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8881
diff
changeset
|
301 | self.__rules.append(AdBlockRule(header, self)) |
8b75b1668583
Changed some use of QFile() to a more pythonic solution and fixed a few issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8881
diff
changeset
|
302 | for line in f.readlines(): |
8b75b1668583
Changed some use of QFile() to a more pythonic solution and fixed a few issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8881
diff
changeset
|
303 | line = line.strip() |
8b75b1668583
Changed some use of QFile() to a more pythonic solution and fixed a few issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8881
diff
changeset
|
304 | if not line: |
8b75b1668583
Changed some use of QFile() to a more pythonic solution and fixed a few issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8881
diff
changeset
|
305 | continue |
8b75b1668583
Changed some use of QFile() to a more pythonic solution and fixed a few issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8881
diff
changeset
|
306 | self.__rules.append(AdBlockRule(line, self)) |
8b75b1668583
Changed some use of QFile() to a more pythonic solution and fixed a few issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8881
diff
changeset
|
307 | expires = self.__expiresRe.search(line) |
8b75b1668583
Changed some use of QFile() to a more pythonic solution and fixed a few issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8881
diff
changeset
|
308 | if expires: |
8b75b1668583
Changed some use of QFile() to a more pythonic solution and fixed a few issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8881
diff
changeset
|
309 | period, kind = expires.groups() |
8b75b1668583
Changed some use of QFile() to a more pythonic solution and fixed a few issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8881
diff
changeset
|
310 | if kind: |
8b75b1668583
Changed some use of QFile() to a more pythonic solution and fixed a few issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8881
diff
changeset
|
311 | # hours |
8b75b1668583
Changed some use of QFile() to a more pythonic solution and fixed a few issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8881
diff
changeset
|
312 | self.__updatePeriod = int(period) |
8b75b1668583
Changed some use of QFile() to a more pythonic solution and fixed a few issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8881
diff
changeset
|
313 | else: |
8b75b1668583
Changed some use of QFile() to a more pythonic solution and fixed a few issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8881
diff
changeset
|
314 | # days |
8b75b1668583
Changed some use of QFile() to a more pythonic solution and fixed a few issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8881
diff
changeset
|
315 | self.__updatePeriod = int(period) * 24 |
8b75b1668583
Changed some use of QFile() to a more pythonic solution and fixed a few issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8881
diff
changeset
|
316 | remoteModified = self.__remoteModifiedRe.search( |
8b75b1668583
Changed some use of QFile() to a more pythonic solution and fixed a few issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8881
diff
changeset
|
317 | line) |
8b75b1668583
Changed some use of QFile() to a more pythonic solution and fixed a few issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8881
diff
changeset
|
318 | if remoteModified: |
8b75b1668583
Changed some use of QFile() to a more pythonic solution and fixed a few issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8881
diff
changeset
|
319 | day, month, year, time, hour, minute = ( |
8b75b1668583
Changed some use of QFile() to a more pythonic solution and fixed a few issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8881
diff
changeset
|
320 | remoteModified.groups() |
8b75b1668583
Changed some use of QFile() to a more pythonic solution and fixed a few issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8881
diff
changeset
|
321 | ) |
8b75b1668583
Changed some use of QFile() to a more pythonic solution and fixed a few issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8881
diff
changeset
|
322 | self.__remoteModified.setDate( |
8b75b1668583
Changed some use of QFile() to a more pythonic solution and fixed a few issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8881
diff
changeset
|
323 | QDate(int(year), |
8b75b1668583
Changed some use of QFile() to a more pythonic solution and fixed a few issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8881
diff
changeset
|
324 | self.__monthNameToNumber[month], |
8b75b1668583
Changed some use of QFile() to a more pythonic solution and fixed a few issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8881
diff
changeset
|
325 | int(day)) |
8b75b1668583
Changed some use of QFile() to a more pythonic solution and fixed a few issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8881
diff
changeset
|
326 | ) |
8b75b1668583
Changed some use of QFile() to a more pythonic solution and fixed a few issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8881
diff
changeset
|
327 | if time: |
8b75b1668583
Changed some use of QFile() to a more pythonic solution and fixed a few issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8881
diff
changeset
|
328 | self.__remoteModified.setTime( |
8b75b1668583
Changed some use of QFile() to a more pythonic solution and fixed a few issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8881
diff
changeset
|
329 | QTime(int(hour), int(minute))) |
8b75b1668583
Changed some use of QFile() to a more pythonic solution and fixed a few issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8881
diff
changeset
|
330 | else: |
8b75b1668583
Changed some use of QFile() to a more pythonic solution and fixed a few issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8881
diff
changeset
|
331 | # no time given, set it to 23:59 |
8b75b1668583
Changed some use of QFile() to a more pythonic solution and fixed a few issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8881
diff
changeset
|
332 | self.__remoteModified.setTime( |
8b75b1668583
Changed some use of QFile() to a more pythonic solution and fixed a few issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8881
diff
changeset
|
333 | QTime(23, 59)) |
8b75b1668583
Changed some use of QFile() to a more pythonic solution and fixed a few issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8881
diff
changeset
|
334 | self.changed.emit() |
8b75b1668583
Changed some use of QFile() to a more pythonic solution and fixed a few issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8881
diff
changeset
|
335 | except OSError as err: |
8356
68ec9c3d4de5
Renamed the modules and classes of the E5Gui package to have the prefix 'Eric' instead of 'E5'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8318
diff
changeset
|
336 | EricMessageBox.warning( |
3020
542e97d4ecb3
Fixed a bunch of visible indentation issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3000
diff
changeset
|
337 | None, |
3190
a9a94491c4fd
Changed the code to use QObject.tr() instead of QObject.trUtf8().
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3160
diff
changeset
|
338 | 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
|
339 | self.tr( |
9162
8b75b1668583
Changed some use of QFile() to a more pythonic solution and fixed a few issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8881
diff
changeset
|
340 | """Unable to read AdBlock file '{0}'\nReason: {1}.""") |
8b75b1668583
Changed some use of QFile() to a more pythonic solution and fixed a few issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8881
diff
changeset
|
341 | .format(fileName, str(err)) |
8b75b1668583
Changed some use of QFile() to a more pythonic solution and fixed a few issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8881
diff
changeset
|
342 | ) |
8b75b1668583
Changed some use of QFile() to a more pythonic solution and fixed a few issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8881
diff
changeset
|
343 | |
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
|
344 | 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
|
345 | self.__lastUpdate = QDateTime() |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
346 | |
1854
191efdc54c62
Made the AdBlock update period configurable between 1 and 14 days.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1509
diff
changeset
|
347 | self.checkForUpdate() |
191efdc54c62
Made the AdBlock update period configurable between 1 and 14 days.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1509
diff
changeset
|
348 | |
191efdc54c62
Made the AdBlock update period configurable between 1 and 14 days.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1509
diff
changeset
|
349 | 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
|
350 | """ |
191efdc54c62
Made the AdBlock update period configurable between 1 and 14 days.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1509
diff
changeset
|
351 | 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
|
352 | """ |
8260
2161475d9639
Applied some more code simplifications suggested by the new Simplify checker (Y108: use ternary operator).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8218
diff
changeset
|
353 | updatePeriod = ( |
2161475d9639
Applied some more code simplifications suggested by the new Simplify checker (Y108: use ternary operator).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8218
diff
changeset
|
354 | self.__updatePeriod |
2161475d9639
Applied some more code simplifications suggested by the new Simplify checker (Y108: use ternary operator).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8218
diff
changeset
|
355 | if self.__updatePeriod else |
2161475d9639
Applied some more code simplifications suggested by the new Simplify checker (Y108: use ternary operator).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8218
diff
changeset
|
356 | Preferences.getWebBrowser("AdBlockUpdatePeriod") * 24 |
2161475d9639
Applied some more code simplifications suggested by the new Simplify checker (Y108: use ternary operator).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8218
diff
changeset
|
357 | ) |
7268
a28338eaf694
Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7229
diff
changeset
|
358 | if ( |
a28338eaf694
Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7229
diff
changeset
|
359 | not self.__lastUpdate.isValid() or |
a28338eaf694
Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7229
diff
changeset
|
360 | (self.__remoteModified.isValid() and |
a28338eaf694
Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7229
diff
changeset
|
361 | self.__remoteModified.addSecs(updatePeriod * 3600) < |
a28338eaf694
Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7229
diff
changeset
|
362 | QDateTime.currentDateTime()) or |
a28338eaf694
Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7229
diff
changeset
|
363 | self.__lastUpdate.addSecs(updatePeriod * 3600) < |
a28338eaf694
Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7229
diff
changeset
|
364 | QDateTime.currentDateTime() |
a28338eaf694
Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7229
diff
changeset
|
365 | ): |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
366 | self.updateNow() |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
367 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
368 | def updateNow(self): |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
369 | """ |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
370 | Public method to update the subscription immediately. |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
371 | """ |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
372 | if self.__downloading is not None: |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
373 | return |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
374 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
375 | if not self.location().isValid(): |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
376 | return |
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 | if self.location().scheme() == "file": |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
379 | self.__lastUpdate = QDateTime.currentDateTime() |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
380 | self.__loadRules() |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
381 | return |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
382 | |
4847
a1a8eac81b54
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4631
diff
changeset
|
383 | from WebBrowser.WebBrowserWindow import WebBrowserWindow |
6150
20efcd29b237
AdBlock: added the NoCoin list to the defaults and fixed an issue updating subscriptions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6118
diff
changeset
|
384 | reply = WebBrowserWindow.networkManager().get( |
4902
7a49807e493c
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4860
diff
changeset
|
385 | QNetworkRequest(self.location())) |
6150
20efcd29b237
AdBlock: added the NoCoin list to the defaults and fixed an issue updating subscriptions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6118
diff
changeset
|
386 | reply.finished.connect( |
20efcd29b237
AdBlock: added the NoCoin list to the defaults and fixed an issue updating subscriptions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6118
diff
changeset
|
387 | lambda: self.__rulesDownloaded(reply)) |
20efcd29b237
AdBlock: added the NoCoin list to the defaults and fixed an issue updating subscriptions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6118
diff
changeset
|
388 | self.__downloading = reply |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
389 | |
6118
da9e08920e7c
Continued removing the use of QObject.sender().
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6048
diff
changeset
|
390 | def __rulesDownloaded(self, reply): |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
391 | """ |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
392 | 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
|
393 | |
da9e08920e7c
Continued removing the use of QObject.sender().
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6048
diff
changeset
|
394 | @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
|
395 | @type QNetworkReply |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
396 | """ |
9162
8b75b1668583
Changed some use of QFile() to a more pythonic solution and fixed a few issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8881
diff
changeset
|
397 | response = bytes(reply.readAll()) |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
398 | reply.close() |
168
3383117f894b
Fixed a few bugs in the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
134
diff
changeset
|
399 | self.__downloading = None |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
400 | |
8143
2c730d5fd177
Changed the use of PyQt enums because the way they were used previously is deprecated since two years and replaced some deprecated Qt stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7923
diff
changeset
|
401 | if reply.error() != QNetworkReply.NetworkError.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
|
402 | 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
|
403 | # don't show error if we try to load the default |
8356
68ec9c3d4de5
Renamed the modules and classes of the E5Gui package to have the prefix 'Eric' instead of 'E5'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8318
diff
changeset
|
404 | EricMessageBox.warning( |
3020
542e97d4ecb3
Fixed a bunch of visible indentation issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3000
diff
changeset
|
405 | None, |
3190
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("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
|
407 | self.tr( |
3000
971d84f7a6d6
Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2403
diff
changeset
|
408 | """<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
|
409 | """ downloaded.</p><p>Error: {0}</p>""") |
3035
36e9f388958b
Fixed a bunch of indentation issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3034
diff
changeset
|
410 | .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
|
411 | 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
|
412 | # 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
|
413 | self.__defaultSubscription = False |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
414 | return |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
415 | |
9162
8b75b1668583
Changed some use of QFile() to a more pythonic solution and fixed a few issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8881
diff
changeset
|
416 | if not response: |
8356
68ec9c3d4de5
Renamed the modules and classes of the E5Gui package to have the prefix 'Eric' instead of 'E5'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8318
diff
changeset
|
417 | EricMessageBox.warning( |
3020
542e97d4ecb3
Fixed a bunch of visible indentation issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3000
diff
changeset
|
418 | None, |
3190
a9a94491c4fd
Changed the code to use QObject.tr() instead of QObject.trUtf8().
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3160
diff
changeset
|
419 | 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
|
420 | self.tr("""Got empty subscription rules.""")) |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
421 | return |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
422 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
423 | fileName = self.rulesFileName() |
9162
8b75b1668583
Changed some use of QFile() to a more pythonic solution and fixed a few issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8881
diff
changeset
|
424 | try: |
8b75b1668583
Changed some use of QFile() to a more pythonic solution and fixed a few issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8881
diff
changeset
|
425 | with open(fileName, "wb") as f: |
8b75b1668583
Changed some use of QFile() to a more pythonic solution and fixed a few issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8881
diff
changeset
|
426 | from WebBrowser.WebBrowserWindow import WebBrowserWindow |
8b75b1668583
Changed some use of QFile() to a more pythonic solution and fixed a few issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8881
diff
changeset
|
427 | if ( |
8b75b1668583
Changed some use of QFile() to a more pythonic solution and fixed a few issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8881
diff
changeset
|
428 | WebBrowserWindow.adBlockManager().useLimitedEasyList() and |
8b75b1668583
Changed some use of QFile() to a more pythonic solution and fixed a few issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8881
diff
changeset
|
429 | self.url().toString().startswith( |
8b75b1668583
Changed some use of QFile() to a more pythonic solution and fixed a few issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8881
diff
changeset
|
430 | WebBrowserWindow.adBlockManager() |
8b75b1668583
Changed some use of QFile() to a more pythonic solution and fixed a few issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8881
diff
changeset
|
431 | .getDefaultSubscriptionUrl()) |
8b75b1668583
Changed some use of QFile() to a more pythonic solution and fixed a few issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8881
diff
changeset
|
432 | ): |
8b75b1668583
Changed some use of QFile() to a more pythonic solution and fixed a few issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8881
diff
changeset
|
433 | limited = True |
8b75b1668583
Changed some use of QFile() to a more pythonic solution and fixed a few issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8881
diff
changeset
|
434 | # ignore Third-party advertisers rules for performance |
8b75b1668583
Changed some use of QFile() to a more pythonic solution and fixed a few issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8881
diff
changeset
|
435 | # whitelist rules at the end will be used |
8b75b1668583
Changed some use of QFile() to a more pythonic solution and fixed a few issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8881
diff
changeset
|
436 | index = response.find( |
8b75b1668583
Changed some use of QFile() to a more pythonic solution and fixed a few issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8881
diff
changeset
|
437 | b"!---------------------------" |
8b75b1668583
Changed some use of QFile() to a more pythonic solution and fixed a few issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8881
diff
changeset
|
438 | b"Third-party advertisers" |
8b75b1668583
Changed some use of QFile() to a more pythonic solution and fixed a few issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8881
diff
changeset
|
439 | b"---------------------------!") |
8b75b1668583
Changed some use of QFile() to a more pythonic solution and fixed a few issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8881
diff
changeset
|
440 | part1 = response[:index] |
8b75b1668583
Changed some use of QFile() to a more pythonic solution and fixed a few issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8881
diff
changeset
|
441 | index = response.find( |
8b75b1668583
Changed some use of QFile() to a more pythonic solution and fixed a few issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8881
diff
changeset
|
442 | b"!-----------------------" |
8b75b1668583
Changed some use of QFile() to a more pythonic solution and fixed a few issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8881
diff
changeset
|
443 | b"Whitelists to fix broken sites" |
8b75b1668583
Changed some use of QFile() to a more pythonic solution and fixed a few issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8881
diff
changeset
|
444 | b"------------------------!") |
8b75b1668583
Changed some use of QFile() to a more pythonic solution and fixed a few issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8881
diff
changeset
|
445 | part2 = response[index:] |
8b75b1668583
Changed some use of QFile() to a more pythonic solution and fixed a few issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8881
diff
changeset
|
446 | f.write(part1) |
8b75b1668583
Changed some use of QFile() to a more pythonic solution and fixed a few issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8881
diff
changeset
|
447 | f.write(part2) |
8b75b1668583
Changed some use of QFile() to a more pythonic solution and fixed a few issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8881
diff
changeset
|
448 | else: |
8b75b1668583
Changed some use of QFile() to a more pythonic solution and fixed a few issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8881
diff
changeset
|
449 | limited = False |
8b75b1668583
Changed some use of QFile() to a more pythonic solution and fixed a few issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8881
diff
changeset
|
450 | f.write(response) |
8b75b1668583
Changed some use of QFile() to a more pythonic solution and fixed a few issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8881
diff
changeset
|
451 | f.close() |
8b75b1668583
Changed some use of QFile() to a more pythonic solution and fixed a few issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8881
diff
changeset
|
452 | self.__lastUpdate = QDateTime.currentDateTime() |
8b75b1668583
Changed some use of QFile() to a more pythonic solution and fixed a few issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8881
diff
changeset
|
453 | |
8b75b1668583
Changed some use of QFile() to a more pythonic solution and fixed a few issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8881
diff
changeset
|
454 | if limited or self.__validateCheckSum(fileName): |
8b75b1668583
Changed some use of QFile() to a more pythonic solution and fixed a few issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8881
diff
changeset
|
455 | self.__loadRules() |
8b75b1668583
Changed some use of QFile() to a more pythonic solution and fixed a few issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8881
diff
changeset
|
456 | else: |
8b75b1668583
Changed some use of QFile() to a more pythonic solution and fixed a few issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8881
diff
changeset
|
457 | os.unlink(fileName) |
8b75b1668583
Changed some use of QFile() to a more pythonic solution and fixed a few issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8881
diff
changeset
|
458 | except OSError: |
8356
68ec9c3d4de5
Renamed the modules and classes of the E5Gui package to have the prefix 'Eric' instead of 'E5'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8318
diff
changeset
|
459 | EricMessageBox.warning( |
3020
542e97d4ecb3
Fixed a bunch of visible indentation issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3000
diff
changeset
|
460 | None, |
3190
a9a94491c4fd
Changed the code to use QObject.tr() instead of QObject.trUtf8().
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3160
diff
changeset
|
461 | self.tr("Downloading subscription rules"), |
9162
8b75b1668583
Changed some use of QFile() to a more pythonic solution and fixed a few issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8881
diff
changeset
|
462 | self.tr("""Unable to write to AdBlock file '{0}'.""") |
3035
36e9f388958b
Fixed a bunch of indentation issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3034
diff
changeset
|
463 | .file(fileName)) |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
464 | self.__downloading = None |
4339
c2d1da8d2a05
Fixed a few issues in the AdBlock subscription loader.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4332
diff
changeset
|
465 | reply.deleteLater() |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
466 | |
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
|
467 | 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
|
468 | """ |
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 | 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
|
470 | |
6028
859f6894eed9
Reworked the AdBlock stuff of web browser NG.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5389
diff
changeset
|
471 | @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
|
472 | @type str |
859f6894eed9
Reworked the AdBlock stuff of web browser NG.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5389
diff
changeset
|
473 | @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
|
474 | 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
|
475 | 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
|
476 | 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
|
477 | @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
|
478 | """ |
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 | try: |
7785
9978016560ec
Changed code to use context manager 'open()' for file operations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7781
diff
changeset
|
480 | with open(fileName, "r", encoding="utf-8") as f: |
9978016560ec
Changed code to use context manager 'open()' for file operations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7781
diff
changeset
|
481 | data = f.read() |
7836
2f0d208b8137
Changed code to not use the OSError aliases (IOError, EnvironmentError, socket.error and select.error) anymore.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7785
diff
changeset
|
482 | except (OSError, OSError): |
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
|
483 | 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
|
484 | |
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 | 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
|
486 | 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
|
487 | 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
|
488 | 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
|
489 | # 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
|
490 | 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
|
491 | |
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
|
492 | # 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
|
493 | 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
|
494 | 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
|
495 | 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
|
496 | |
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
|
497 | # calculate checksum |
7628
f904d0eef264
Checked the reported security related issue reports generated by the new security checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7360
diff
changeset
|
498 | md5 = hashlib.md5() # secok |
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
|
499 | md5.update(data.encode("utf-8")) |
7268
a28338eaf694
Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7229
diff
changeset
|
500 | calculatedChecksum = ( |
a28338eaf694
Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7229
diff
changeset
|
501 | base64.b64encode(md5.digest()).decode().rstrip("=") |
a28338eaf694
Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7229
diff
changeset
|
502 | ) |
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
|
503 | 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
|
504 | 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
|
505 | else: |
8356
68ec9c3d4de5
Renamed the modules and classes of the E5Gui package to have the prefix 'Eric' instead of 'E5'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8318
diff
changeset
|
506 | res = EricMessageBox.yesNo( |
3020
542e97d4ecb3
Fixed a bunch of visible indentation issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3000
diff
changeset
|
507 | None, |
3190
a9a94491c4fd
Changed the code to use QObject.tr() instead of QObject.trUtf8().
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3160
diff
changeset
|
508 | 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
|
509 | self.tr( |
3000
971d84f7a6d6
Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2403
diff
changeset
|
510 | """<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
|
511 | """ checksum.<br/>""" |
971d84f7a6d6
Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2403
diff
changeset
|
512 | """Found: {1}<br/>""" |
971d84f7a6d6
Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2403
diff
changeset
|
513 | """Calculated: {2}<br/>""" |
3034
7ce719013078
Fixed various coding style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3022
diff
changeset
|
514 | """Use it anyway?</p>""") |
3035
36e9f388958b
Fixed a bunch of indentation issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3034
diff
changeset
|
515 | .format(self.__title, expectedChecksum, |
36e9f388958b
Fixed a bunch of indentation issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3034
diff
changeset
|
516 | 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
|
517 | 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
|
518 | |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
519 | def saveRules(self): |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
520 | """ |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
521 | Public method to save the subscription rules. |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
522 | """ |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
523 | fileName = self.rulesFileName() |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
524 | if not fileName: |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
525 | return |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
526 | |
9162
8b75b1668583
Changed some use of QFile() to a more pythonic solution and fixed a few issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8881
diff
changeset
|
527 | try: |
8b75b1668583
Changed some use of QFile() to a more pythonic solution and fixed a few issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8881
diff
changeset
|
528 | with open(fileName, "w", encoding="utf-8") as f: |
8b75b1668583
Changed some use of QFile() to a more pythonic solution and fixed a few issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8881
diff
changeset
|
529 | if not self.__rules or not self.__rules[0].isHeader(): |
8b75b1668583
Changed some use of QFile() to a more pythonic solution and fixed a few issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8881
diff
changeset
|
530 | f.write("[Adblock Plus 2.0]\n") |
8b75b1668583
Changed some use of QFile() to a more pythonic solution and fixed a few issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8881
diff
changeset
|
531 | for rule in self.__rules: |
8b75b1668583
Changed some use of QFile() to a more pythonic solution and fixed a few issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8881
diff
changeset
|
532 | f.write(rule.filter() + "\n") |
8b75b1668583
Changed some use of QFile() to a more pythonic solution and fixed a few issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8881
diff
changeset
|
533 | except OSError: |
8356
68ec9c3d4de5
Renamed the modules and classes of the E5Gui package to have the prefix 'Eric' instead of 'E5'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8318
diff
changeset
|
534 | EricMessageBox.warning( |
3020
542e97d4ecb3
Fixed a bunch of visible indentation issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3000
diff
changeset
|
535 | None, |
3190
a9a94491c4fd
Changed the code to use QObject.tr() instead of QObject.trUtf8().
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3160
diff
changeset
|
536 | self.tr("Saving subscription rules"), |
9162
8b75b1668583
Changed some use of QFile() to a more pythonic solution and fixed a few issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8881
diff
changeset
|
537 | self.tr("""Unable to write to AdBlock file '{0}'.""") |
3035
36e9f388958b
Fixed a bunch of indentation issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3034
diff
changeset
|
538 | .format(fileName)) |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
539 | |
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
|
540 | 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
|
541 | """ |
02cf3bac079b
Rewrote huge part of AdBlock to speed up and added support for dependent AdBlock subscriptions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1963
diff
changeset
|
542 | 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
|
543 | |
6028
859f6894eed9
Reworked the AdBlock stuff of web browser NG.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5389
diff
changeset
|
544 | @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
|
545 | @type int |
859f6894eed9
Reworked the AdBlock stuff of web browser NG.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5389
diff
changeset
|
546 | @return requested rule |
859f6894eed9
Reworked the AdBlock stuff of web browser NG.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5389
diff
changeset
|
547 | @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
|
548 | """ |
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
|
549 | 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
|
550 | 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
|
551 | |
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
|
552 | 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
|
553 | |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
554 | def allRules(self): |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
555 | """ |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
556 | Public method to get the list of rules. |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
557 | |
6028
859f6894eed9
Reworked the AdBlock stuff of web browser NG.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5389
diff
changeset
|
558 | @return list of rules |
859f6894eed9
Reworked the AdBlock stuff of web browser NG.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5389
diff
changeset
|
559 | @rtype list of AdBlockRule |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
560 | """ |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
561 | return self.__rules[:] |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
562 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
563 | def addRule(self, rule): |
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 | Public method to add a rule. |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
566 | |
6028
859f6894eed9
Reworked the AdBlock stuff of web browser NG.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5389
diff
changeset
|
567 | @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
|
568 | @type AdBlockRule |
859f6894eed9
Reworked the AdBlock stuff of web browser NG.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5389
diff
changeset
|
569 | @return offset of the rule |
859f6894eed9
Reworked the AdBlock stuff of web browser NG.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5389
diff
changeset
|
570 | @rtype 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 | 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
|
573 | 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
|
574 | |
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
|
575 | return len(self.__rules) - 1 |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
576 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
577 | def removeRule(self, offset): |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
578 | """ |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
579 | Public method to remove a rule given the offset. |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
580 | |
6028
859f6894eed9
Reworked the AdBlock stuff of web browser NG.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5389
diff
changeset
|
581 | @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
|
582 | @type int |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
583 | """ |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
584 | if offset < 0 or offset > len(self.__rules): |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
585 | return |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
586 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
587 | 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
|
588 | self.rulesChanged.emit() |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
589 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
590 | def replaceRule(self, rule, offset): |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
591 | """ |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
592 | Public method to replace a rule given the offset. |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
593 | |
6028
859f6894eed9
Reworked the AdBlock stuff of web browser NG.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5389
diff
changeset
|
594 | @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
|
595 | @type AdBlockRule |
859f6894eed9
Reworked the AdBlock stuff of web browser NG.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5389
diff
changeset
|
596 | @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
|
597 | @type int |
859f6894eed9
Reworked the AdBlock stuff of web browser NG.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5389
diff
changeset
|
598 | @return requested rule |
859f6894eed9
Reworked the AdBlock stuff of web browser NG.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5389
diff
changeset
|
599 | @rtype AdBlockRule |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
600 | """ |
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
|
601 | 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
|
602 | 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
|
603 | |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
604 | 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
|
605 | 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
|
606 | |
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 | return self.__rules[offset] |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
608 | |
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
|
609 | 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
|
610 | """ |
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
|
611 | 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
|
612 | |
6028
859f6894eed9
Reworked the AdBlock stuff of web browser NG.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5389
diff
changeset
|
613 | @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
|
614 | @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
|
615 | """ |
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 | 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
|
617 | |
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 | 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
|
619 | """ |
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
|
620 | 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
|
621 | |
6028
859f6894eed9
Reworked the AdBlock stuff of web browser NG.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5389
diff
changeset
|
622 | @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
|
623 | @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
|
624 | """ |
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 | 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
|
626 | |
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 | 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
|
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 | 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
|
630 | |
6028
859f6894eed9
Reworked the AdBlock stuff of web browser NG.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5389
diff
changeset
|
631 | @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
|
632 | @type int |
859f6894eed9
Reworked the AdBlock stuff of web browser NG.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5389
diff
changeset
|
633 | @param enabled new enabled state |
859f6894eed9
Reworked the AdBlock stuff of web browser NG.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5389
diff
changeset
|
634 | @type bool |
859f6894eed9
Reworked the AdBlock stuff of web browser NG.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5389
diff
changeset
|
635 | @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
|
636 | @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
|
637 | """ |
02cf3bac079b
Rewrote huge part of AdBlock to speed up and added support for dependent AdBlock subscriptions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1963
diff
changeset
|
638 | 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
|
639 | 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
|
640 | |
02cf3bac079b
Rewrote huge part of AdBlock to speed up and added support for dependent AdBlock subscriptions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1963
diff
changeset
|
641 | 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
|
642 | rule.setEnabled(enabled) |
6028
859f6894eed9
Reworked the AdBlock stuff of web browser NG.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5389
diff
changeset
|
643 | self.rulesEnabledChanged.emit() |
859f6894eed9
Reworked the AdBlock stuff of web browser NG.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5389
diff
changeset
|
644 | |
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
|
645 | if rule.isCSSRule(): |
4847
a1a8eac81b54
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4631
diff
changeset
|
646 | from WebBrowser.WebBrowserWindow import WebBrowserWindow |
a1a8eac81b54
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4631
diff
changeset
|
647 | 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
|
648 | |
02cf3bac079b
Rewrote huge part of AdBlock to speed up and added support for dependent AdBlock subscriptions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1963
diff
changeset
|
649 | return rule |