Sun, 15 Jul 2012 17:28:40 +0200
Fixed issues in the AdBlock code.
--- a/APIs/Python3/eric5.api Sat Jul 14 14:52:14 2012 +0200 +++ b/APIs/Python3/eric5.api Sun Jul 15 17:28:40 2012 +0200 @@ -2298,6 +2298,9 @@ eric5.Helpviewer.JavaScriptResources.fetchLinks_js?7 eric5.Helpviewer.JavaScriptResources.parseForms_js?7 eric5.Helpviewer.Network.AboutAccessHandler.AboutAccessHandler.createRequest?4(op, request, outgoingData=None) +eric5.Helpviewer.Network.EmptyNetworkReply.EmptyNetworkReply.abort?4() +eric5.Helpviewer.Network.EmptyNetworkReply.EmptyNetworkReply.readData?4(maxlen) +eric5.Helpviewer.Network.EmptyNetworkReply.EmptyNetworkReply?1(parent=None) eric5.Helpviewer.Network.FtpAccessHandler.FtpAccessHandler.createRequest?4(op, request, outgoingData=None) eric5.Helpviewer.Network.FtpReply.FtpReply.abort?4() eric5.Helpviewer.Network.FtpReply.FtpReply.bytesAvailable?4()
--- a/APIs/Python3/eric5.bas Sat Jul 14 14:52:14 2012 +0200 +++ b/APIs/Python3/eric5.bas Sun Jul 15 17:28:40 2012 +0200 @@ -174,6 +174,7 @@ EditorTypingPage ConfigurationPageBase Ui_EditorTypingPage EmailDialog QDialog Ui_EmailDialog EmailPage ConfigurationPageBase Ui_EmailPage +EmptyNetworkReply QNetworkReply EricapiConfigDialog QDialog Ui_EricapiConfigDialog EricapiExecDialog QDialog Ui_EricapiExecDialog EricapiPlugin QObject
--- a/Documentation/Help/source.qhp Sat Jul 14 14:52:14 2012 +0200 +++ b/Documentation/Help/source.qhp Sun Jul 15 17:28:40 2012 +0200 @@ -243,6 +243,7 @@ </section> <section title="eric5.Helpviewer.Network" ref="index-eric5.Helpviewer.Network.html"> <section title="eric5.Helpviewer.Network.AboutAccessHandler" ref="eric5.Helpviewer.Network.AboutAccessHandler.html" /> + <section title="eric5.Helpviewer.Network.EmptyNetworkReply" ref="eric5.Helpviewer.Network.EmptyNetworkReply.html" /> <section title="eric5.Helpviewer.Network.FtpAccessHandler" ref="eric5.Helpviewer.Network.FtpAccessHandler.html" /> <section title="eric5.Helpviewer.Network.FtpReply" ref="eric5.Helpviewer.Network.FtpReply.html" /> <section title="eric5.Helpviewer.Network.NetworkAccessManager" ref="eric5.Helpviewer.Network.NetworkAccessManager.html" /> @@ -3871,6 +3872,11 @@ <keyword name="EmailPage.on_mailUserEdit_textChanged" id="EmailPage.on_mailUserEdit_textChanged" ref="eric5.Preferences.ConfigurationPages.EmailPage.html#EmailPage.on_mailUserEdit_textChanged" /> <keyword name="EmailPage.on_testButton_clicked" id="EmailPage.on_testButton_clicked" ref="eric5.Preferences.ConfigurationPages.EmailPage.html#EmailPage.on_testButton_clicked" /> <keyword name="EmailPage.save" id="EmailPage.save" ref="eric5.Preferences.ConfigurationPages.EmailPage.html#EmailPage.save" /> + <keyword name="EmptyNetworkReply" id="EmptyNetworkReply" ref="eric5.Helpviewer.Network.EmptyNetworkReply.html#EmptyNetworkReply" /> + <keyword name="EmptyNetworkReply (Constructor)" id="EmptyNetworkReply (Constructor)" ref="eric5.Helpviewer.Network.EmptyNetworkReply.html#EmptyNetworkReply.__init__" /> + <keyword name="EmptyNetworkReply (Module)" id="EmptyNetworkReply (Module)" ref="eric5.Helpviewer.Network.EmptyNetworkReply.html" /> + <keyword name="EmptyNetworkReply.abort" id="EmptyNetworkReply.abort" ref="eric5.Helpviewer.Network.EmptyNetworkReply.html#EmptyNetworkReply.abort" /> + <keyword name="EmptyNetworkReply.readData" id="EmptyNetworkReply.readData" ref="eric5.Helpviewer.Network.EmptyNetworkReply.html#EmptyNetworkReply.readData" /> <keyword name="Ericapi (Package)" id="Ericapi (Package)" ref="index-eric5.Plugins.DocumentationPlugins.Ericapi.html" /> <keyword name="EricapiConfigDialog" id="EricapiConfigDialog" ref="eric5.Plugins.DocumentationPlugins.Ericapi.EricapiConfigDialog.html#EricapiConfigDialog" /> <keyword name="EricapiConfigDialog (Constructor)" id="EricapiConfigDialog (Constructor)" ref="eric5.Plugins.DocumentationPlugins.Ericapi.EricapiConfigDialog.html#EricapiConfigDialog.__init__" /> @@ -11449,6 +11455,7 @@ <file>eric5.Helpviewer.History.HistoryTreeModel.html</file> <file>eric5.Helpviewer.JavaScriptResources.html</file> <file>eric5.Helpviewer.Network.AboutAccessHandler.html</file> + <file>eric5.Helpviewer.Network.EmptyNetworkReply.html</file> <file>eric5.Helpviewer.Network.FtpAccessHandler.html</file> <file>eric5.Helpviewer.Network.FtpReply.html</file> <file>eric5.Helpviewer.Network.NetworkAccessManager.html</file>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Documentation/Source/eric5.Helpviewer.Network.EmptyNetworkReply.html Sun Jul 15 17:28:40 2012 +0200 @@ -0,0 +1,109 @@ +<?xml version="1.0" encoding="utf-8"?> +<!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Strict//EN' +'http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd'> +<html><head> +<title>eric5.Helpviewer.Network.EmptyNetworkReply</title> +<style> +body { + background: #EDECE6; + margin: 0em 1em 10em 1em; + color: black; +} + +h1 { color: white; background: #85774A; } +h2 { color: white; background: #85774A; } +h3 { color: white; background: #9D936E; } +h4 { color: white; background: #9D936E; } + +a { color: #BA6D36; } + +</style> +</head> +<body><a NAME="top" ID="top"></a> +<h1>eric5.Helpviewer.Network.EmptyNetworkReply</h1> +<p> +Module implementing a network reply class for an empty reply +(i.e. request was handle other way). +</p> +<h3>Global Attributes</h3> +<table> +<tr><td>None</td></tr> +</table> +<h3>Classes</h3> +<table> +<tr> +<td><a href="#EmptyNetworkReply">EmptyNetworkReply</a></td> +<td>Class implementing an empty network reply.</td> +</tr> +</table> +<h3>Functions</h3> +<table> +<tr><td>None</td></tr> +</table> +<hr /><hr /> +<a NAME="EmptyNetworkReply" ID="EmptyNetworkReply"></a> +<h2>EmptyNetworkReply</h2> +<p> + Class implementing an empty network reply. +</p> +<h3>Derived from</h3> +QNetworkReply +<h3>Class Attributes</h3> +<table> +<tr><td>None</td></tr> +</table> +<h3>Class Methods</h3> +<table> +<tr><td>None</td></tr> +</table> +<h3>Methods</h3> +<table> +<tr> +<td><a href="#EmptyNetworkReply.__init__">EmptyNetworkReply</a></td> +<td>Constructor</td> +</tr><tr> +<td><a href="#EmptyNetworkReply.abort">abort</a></td> +<td>Public slot to abort the operation.</td> +</tr><tr> +<td><a href="#EmptyNetworkReply.readData">readData</a></td> +<td>Protected method to retrieve data from the reply object.</td> +</tr> +</table> +<h3>Static Methods</h3> +<table> +<tr><td>None</td></tr> +</table> +<a NAME="EmptyNetworkReply.__init__" ID="EmptyNetworkReply.__init__"></a> +<h4>EmptyNetworkReply (Constructor)</h4> +<b>EmptyNetworkReply</b>(<i>parent=None</i>) +<p> + Constructor +</p><dl> +<dt><i>parent</i></dt> +<dd> +reference to the parent object (QObject) +</dd> +</dl><a NAME="EmptyNetworkReply.abort" ID="EmptyNetworkReply.abort"></a> +<h4>EmptyNetworkReply.abort</h4> +<b>abort</b>(<i></i>) +<p> + Public slot to abort the operation. +</p><a NAME="EmptyNetworkReply.readData" ID="EmptyNetworkReply.readData"></a> +<h4>EmptyNetworkReply.readData</h4> +<b>readData</b>(<i>maxlen</i>) +<p> + Protected method to retrieve data from the reply object. +</p><dl> +<dt><i>maxlen</i></dt> +<dd> +maximum number of bytes to read (integer) +</dd> +</dl><dl> +<dt>Returns:</dt> +<dd> +string containing the data (bytes) +</dd> +</dl> +<div align="right"><a href="#top">Up</a></div> +<hr /> +</body></html> \ No newline at end of file
--- a/Documentation/Source/index-eric5.Helpviewer.Network.html Sat Jul 14 14:52:14 2012 +0200 +++ b/Documentation/Source/index-eric5.Helpviewer.Network.html Sun Jul 15 17:28:40 2012 +0200 @@ -32,6 +32,9 @@ <td><a href="eric5.Helpviewer.Network.AboutAccessHandler.html">AboutAccessHandler</a></td> <td>Module implementing a scheme access handler for about schemes.</td> </tr><tr> +<td><a href="eric5.Helpviewer.Network.EmptyNetworkReply.html">EmptyNetworkReply</a></td> +<td>Module implementing a network reply class for an empty reply (i.e.</td> +</tr><tr> <td><a href="eric5.Helpviewer.Network.FtpAccessHandler.html">FtpAccessHandler</a></td> <td>Module implementing a scheme access handler for FTP.</td> </tr><tr>
--- a/Helpviewer/AdBlock/AdBlockAccessHandler.py Sat Jul 14 14:52:14 2012 +0200 +++ b/Helpviewer/AdBlock/AdBlockAccessHandler.py Sun Jul 15 17:28:40 2012 +0200 @@ -15,6 +15,7 @@ import Helpviewer.HelpWindow from Helpviewer.Network.SchemeAccessHandler import SchemeAccessHandler +from Helpviewer.Network.EmptyNetworkReply import EmptyNetworkReply class AdBlockAccessHandler(SchemeAccessHandler): @@ -52,4 +53,4 @@ dlg.setCurrentIndex(model.index(model.rowCount() - 1, 0)) dlg.setFocus() - return None + return EmptyNetworkReply()
--- a/Helpviewer/AdBlock/AdBlockRule.py Sat Jul 14 14:52:14 2012 +0200 +++ b/Helpviewer/AdBlock/AdBlockRule.py Sun Jul 15 17:28:40 2012 +0200 @@ -173,18 +173,20 @@ """ pattern = wildcardPattern - pattern = re.sub(r"\*+", "*", pattern) # remove multiple wildcards - pattern = re.sub(r"\^\|$", "^", pattern) # remove anchors following separator placeholder - pattern = re.sub(r"^(\*)", "", pattern) # remove leading wildcards - pattern = re.sub(r"(\*)$", "", pattern) # remove trailing wildcards - pattern = re.sub(r"(\W)", "", pattern) # escape special symbols + pattern = re.sub(r"\*+", "*", pattern) # remove multiple wildcards + pattern = re.sub(r"\^\|$", "^", pattern) # remove anchors following separator + # placeholder + pattern = re.sub(r"^(\*)", "", pattern) # remove leading wildcards + pattern = re.sub(r"(\*)$", "", pattern) # remove trailing wildcards + pattern = re.sub(r"(\W)", r"\\\1", pattern) # escape special symbols pattern = re.sub(r"^\\\|\\\|", - r"^[\w\-]+:\/+(?!\/)(?:[^\/]+\.)?", pattern) # process extended anchor at expression start + r"^[\w\-]+:\/+(?!\/)(?:[^\/]+\.)?", pattern) # process extended anchor at + # expression start pattern = re.sub(r"\\\^", - r"(?:[^\w\d\-.%]|$)", pattern) # process separator placeholders - pattern = re.sub(r"^\\\|", "^", pattern) # process anchor at expression start - pattern = re.sub(r"\\\|$", "$", pattern) # process anchor at expression end - pattern = re.sub(r"\\\*", ".*", pattern) # replace wildcards by .* + r"(?:[^\w\d\-.%]|$)", pattern) # process separator placeholders + pattern = re.sub(r"^\\\|", "^", pattern) # process anchor at expression start + pattern = re.sub(r"\\\|$", "$", pattern) # process anchor at expression end + pattern = re.sub(r"\\\*", ".*", pattern) # replace wildcards by .* return pattern
--- a/Helpviewer/HelpBrowserWV.py Sat Jul 14 14:52:14 2012 +0200 +++ b/Helpviewer/HelpBrowserWV.py Sun Jul 15 17:28:40 2012 +0200 @@ -257,6 +257,11 @@ # this is something of a hack; hopefully it will work in the future return False + if info.domain == QWebPage.QtNetwork and \ + info.error == QNetworkReply.OperationCanceledError and \ + info.errorString == "eric5:No Error": + return False + errorPage = sip.cast(output, QWebPage.ErrorPageExtensionReturn) errorPage.baseUrl = info.url urlString = bytes(info.url.toEncoded()).decode()
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Helpviewer/Network/EmptyNetworkReply.py Sun Jul 15 17:28:40 2012 +0200 @@ -0,0 +1,46 @@ +# -*- coding: utf-8 -*- + +# Copyright (c) 2012 Detlev Offenbach <detlev@die-offenbachs.de> +# + +""" +Module implementing a network reply class for an empty reply +(i.e. request was handle other way). +""" + +from PyQt4.QtCore import QTimer +from PyQt4.QtNetwork import QNetworkReply, QNetworkAccessManager + + +class EmptyNetworkReply(QNetworkReply): + """ + Class implementing an empty network reply. + """ + def __init__(self, parent=None): + """ + Constructor + + @param parent reference to the parent object (QObject) + """ + super().__init__(parent) + + self.setOperation(QNetworkAccessManager.GetOperation) + self.setError(QNetworkReply.OperationCanceledError, "eric5:No Error") + + QTimer.singleShot(0, lambda: self.finished.emit()) + + def abort(self): + """ + Public slot to abort the operation. + """ + # do nothing + pass + + def readData(self, maxlen): + """ + Protected method to retrieve data from the reply object. + + @param maxlen maximum number of bytes to read (integer) + @return string containing the data (bytes) + """ + return bytes()
--- a/eric5.e4p Sat Jul 14 14:52:14 2012 +0200 +++ b/eric5.e4p Sun Jul 15 17:28:40 2012 +0200 @@ -938,6 +938,7 @@ <Source>Helpviewer/SiteInfo/__init__.py</Source> <Source>Helpviewer/SiteInfo/SiteInfoDialog.py</Source> <Source>Helpviewer/SslInfoWidget.py</Source> + <Source>Helpviewer/Network/EmptyNetworkReply.py</Source> </Sources> <Forms> <Form>PyUnit/UnittestDialog.ui</Form>