Tue, 25 Apr 2017 19:20:18 +0200
Updated the GreaseMonkey handler to better work with QWebEngine as of Qt 5.8.0.
--- a/APIs/Python3/eric6.api Tue Apr 25 18:40:46 2017 +0200 +++ b/APIs/Python3/eric6.api Tue Apr 25 19:20:18 2017 +0200 @@ -10075,8 +10075,12 @@ eric6.WebBrowser.GreaseMonkey.GreaseMonkeyConfiguration.GreaseMonkeyConfigurationListWidget.GreaseMonkeyConfigurationListWidget?1(parent=None) eric6.WebBrowser.GreaseMonkey.GreaseMonkeyConfiguration.GreaseMonkeyConfigurationScriptInfoDialog.GreaseMonkeyConfigurationScriptInfoDialog.on_showScriptSourceButton_clicked?4() eric6.WebBrowser.GreaseMonkey.GreaseMonkeyConfiguration.GreaseMonkeyConfigurationScriptInfoDialog.GreaseMonkeyConfigurationScriptInfoDialog?1(script, parent=None) +eric6.WebBrowser.GreaseMonkey.GreaseMonkeyDownloader.GreaseMonkeyDownloader.DownloadMainScript?7 +eric6.WebBrowser.GreaseMonkey.GreaseMonkeyDownloader.GreaseMonkeyDownloader.DownloadRequireScript?7 +eric6.WebBrowser.GreaseMonkey.GreaseMonkeyDownloader.GreaseMonkeyDownloader.error?7 eric6.WebBrowser.GreaseMonkey.GreaseMonkeyDownloader.GreaseMonkeyDownloader.finished?7 -eric6.WebBrowser.GreaseMonkey.GreaseMonkeyDownloader.GreaseMonkeyDownloader?1(url, manager) +eric6.WebBrowser.GreaseMonkey.GreaseMonkeyDownloader.GreaseMonkeyDownloader.updateScript?4(fileName) +eric6.WebBrowser.GreaseMonkey.GreaseMonkeyDownloader.GreaseMonkeyDownloader?1(url, manager, mode) eric6.WebBrowser.GreaseMonkey.GreaseMonkeyJavaScript.bootstrap_js?7 eric6.WebBrowser.GreaseMonkey.GreaseMonkeyJavaScript.values_js?7 eric6.WebBrowser.GreaseMonkey.GreaseMonkeyManager.GreaseMonkeyManager.addScript?4(script) @@ -10105,15 +10109,18 @@ eric6.WebBrowser.GreaseMonkey.GreaseMonkeyScript.GreaseMonkeyScript.fullName?4() eric6.WebBrowser.GreaseMonkey.GreaseMonkeyScript.GreaseMonkeyScript.include?4() eric6.WebBrowser.GreaseMonkey.GreaseMonkeyScript.GreaseMonkeyScript.isEnabled?4() +eric6.WebBrowser.GreaseMonkey.GreaseMonkeyScript.GreaseMonkeyScript.isUpdating?4() eric6.WebBrowser.GreaseMonkey.GreaseMonkeyScript.GreaseMonkeyScript.isValid?4() eric6.WebBrowser.GreaseMonkey.GreaseMonkeyScript.GreaseMonkeyScript.name?4() eric6.WebBrowser.GreaseMonkey.GreaseMonkeyScript.GreaseMonkeyScript.nameSpace?4() eric6.WebBrowser.GreaseMonkey.GreaseMonkeyScript.GreaseMonkeyScript.noFrames?4() -eric6.WebBrowser.GreaseMonkey.GreaseMonkeyScript.GreaseMonkeyScript.script?4() +eric6.WebBrowser.GreaseMonkey.GreaseMonkeyScript.GreaseMonkeyScript.require?4() eric6.WebBrowser.GreaseMonkey.GreaseMonkeyScript.GreaseMonkeyScript.scriptChanged?7 eric6.WebBrowser.GreaseMonkey.GreaseMonkeyScript.GreaseMonkeyScript.setEnabled?4(enable) eric6.WebBrowser.GreaseMonkey.GreaseMonkeyScript.GreaseMonkeyScript.startAt?4() +eric6.WebBrowser.GreaseMonkey.GreaseMonkeyScript.GreaseMonkeyScript.updateScript?4() eric6.WebBrowser.GreaseMonkey.GreaseMonkeyScript.GreaseMonkeyScript.updateUrl?4() +eric6.WebBrowser.GreaseMonkey.GreaseMonkeyScript.GreaseMonkeyScript.updatingChanged?7 eric6.WebBrowser.GreaseMonkey.GreaseMonkeyScript.GreaseMonkeyScript.version?4() eric6.WebBrowser.GreaseMonkey.GreaseMonkeyScript.GreaseMonkeyScript.webScript?4() eric6.WebBrowser.GreaseMonkey.GreaseMonkeyScript.GreaseMonkeyScript?1(manager, path)
--- a/Documentation/Help/source.qhp Tue Apr 25 18:40:46 2017 +0200 +++ b/Documentation/Help/source.qhp Tue Apr 25 19:20:18 2017 +0200 @@ -6234,11 +6234,11 @@ <keyword name="GreaseMonkeyDownloader (Module)" id="GreaseMonkeyDownloader (Module)" ref="eric6.Helpviewer.GreaseMonkey.GreaseMonkeyDownloader.html" /> <keyword name="GreaseMonkeyDownloader (Module)" id="GreaseMonkeyDownloader (Module)" ref="eric6.WebBrowser.GreaseMonkey.GreaseMonkeyDownloader.html" /> <keyword name="GreaseMonkeyDownloader.__downloadRequires" id="GreaseMonkeyDownloader.__downloadRequires" ref="eric6.Helpviewer.GreaseMonkey.GreaseMonkeyDownloader.html#GreaseMonkeyDownloader.__downloadRequires" /> - <keyword name="GreaseMonkeyDownloader.__downloadRequires" id="GreaseMonkeyDownloader.__downloadRequires" ref="eric6.WebBrowser.GreaseMonkey.GreaseMonkeyDownloader.html#GreaseMonkeyDownloader.__downloadRequires" /> <keyword name="GreaseMonkeyDownloader.__requireDownloaded" id="GreaseMonkeyDownloader.__requireDownloaded" ref="eric6.Helpviewer.GreaseMonkey.GreaseMonkeyDownloader.html#GreaseMonkeyDownloader.__requireDownloaded" /> <keyword name="GreaseMonkeyDownloader.__requireDownloaded" id="GreaseMonkeyDownloader.__requireDownloaded" ref="eric6.WebBrowser.GreaseMonkey.GreaseMonkeyDownloader.html#GreaseMonkeyDownloader.__requireDownloaded" /> <keyword name="GreaseMonkeyDownloader.__scriptDownloaded" id="GreaseMonkeyDownloader.__scriptDownloaded" ref="eric6.Helpviewer.GreaseMonkey.GreaseMonkeyDownloader.html#GreaseMonkeyDownloader.__scriptDownloaded" /> <keyword name="GreaseMonkeyDownloader.__scriptDownloaded" id="GreaseMonkeyDownloader.__scriptDownloaded" ref="eric6.WebBrowser.GreaseMonkey.GreaseMonkeyDownloader.html#GreaseMonkeyDownloader.__scriptDownloaded" /> + <keyword name="GreaseMonkeyDownloader.updateScript" id="GreaseMonkeyDownloader.updateScript" ref="eric6.WebBrowser.GreaseMonkey.GreaseMonkeyDownloader.html#GreaseMonkeyDownloader.updateScript" /> <keyword name="GreaseMonkeyJavaScript (Module)" id="GreaseMonkeyJavaScript (Module)" ref="eric6.Helpviewer.GreaseMonkey.GreaseMonkeyJavaScript.html" /> <keyword name="GreaseMonkeyJavaScript (Module)" id="GreaseMonkeyJavaScript (Module)" ref="eric6.WebBrowser.GreaseMonkey.GreaseMonkeyJavaScript.html" /> <keyword name="GreaseMonkeyManager" id="GreaseMonkeyManager" ref="eric6.Helpviewer.GreaseMonkey.GreaseMonkeyManager.html#GreaseMonkeyManager" /> @@ -6289,8 +6289,14 @@ <keyword name="GreaseMonkeyScript (Constructor)" id="GreaseMonkeyScript (Constructor)" ref="eric6.WebBrowser.GreaseMonkey.GreaseMonkeyScript.html#GreaseMonkeyScript.__init__" /> <keyword name="GreaseMonkeyScript (Module)" id="GreaseMonkeyScript (Module)" ref="eric6.Helpviewer.GreaseMonkey.GreaseMonkeyScript.html" /> <keyword name="GreaseMonkeyScript (Module)" id="GreaseMonkeyScript (Module)" ref="eric6.WebBrowser.GreaseMonkey.GreaseMonkeyScript.html" /> + <keyword name="GreaseMonkeyScript.__downloadRequires" id="GreaseMonkeyScript.__downloadRequires" ref="eric6.WebBrowser.GreaseMonkey.GreaseMonkeyScript.html#GreaseMonkeyScript.__downloadRequires" /> + <keyword name="GreaseMonkeyScript.__downloaderError" id="GreaseMonkeyScript.__downloaderError" ref="eric6.WebBrowser.GreaseMonkey.GreaseMonkeyScript.html#GreaseMonkeyScript.__downloaderError" /> + <keyword name="GreaseMonkeyScript.__downloaderFinished" id="GreaseMonkeyScript.__downloaderFinished" ref="eric6.WebBrowser.GreaseMonkey.GreaseMonkeyScript.html#GreaseMonkeyScript.__downloaderFinished" /> <keyword name="GreaseMonkeyScript.__parseScript" id="GreaseMonkeyScript.__parseScript" ref="eric6.Helpviewer.GreaseMonkey.GreaseMonkeyScript.html#GreaseMonkeyScript.__parseScript" /> <keyword name="GreaseMonkeyScript.__parseScript" id="GreaseMonkeyScript.__parseScript" ref="eric6.WebBrowser.GreaseMonkey.GreaseMonkeyScript.html#GreaseMonkeyScript.__parseScript" /> + <keyword name="GreaseMonkeyScript.__reloadScript" id="GreaseMonkeyScript.__reloadScript" ref="eric6.WebBrowser.GreaseMonkey.GreaseMonkeyScript.html#GreaseMonkeyScript.__reloadScript" /> + <keyword name="GreaseMonkeyScript.__requireDownloadError" id="GreaseMonkeyScript.__requireDownloadError" ref="eric6.WebBrowser.GreaseMonkey.GreaseMonkeyScript.html#GreaseMonkeyScript.__requireDownloadError" /> + <keyword name="GreaseMonkeyScript.__requireDownloaded" id="GreaseMonkeyScript.__requireDownloaded" ref="eric6.WebBrowser.GreaseMonkey.GreaseMonkeyScript.html#GreaseMonkeyScript.__requireDownloaded" /> <keyword name="GreaseMonkeyScript.__toJavaScriptList" id="GreaseMonkeyScript.__toJavaScriptList" ref="eric6.WebBrowser.GreaseMonkey.GreaseMonkeyScript.html#GreaseMonkeyScript.__toJavaScriptList" /> <keyword name="GreaseMonkeyScript.__watchedFileChanged" id="GreaseMonkeyScript.__watchedFileChanged" ref="eric6.WebBrowser.GreaseMonkey.GreaseMonkeyScript.html#GreaseMonkeyScript.__watchedFileChanged" /> <keyword name="GreaseMonkeyScript.description" id="GreaseMonkeyScript.description" ref="eric6.Helpviewer.GreaseMonkey.GreaseMonkeyScript.html#GreaseMonkeyScript.description" /> @@ -6307,6 +6313,7 @@ <keyword name="GreaseMonkeyScript.include" id="GreaseMonkeyScript.include" ref="eric6.WebBrowser.GreaseMonkey.GreaseMonkeyScript.html#GreaseMonkeyScript.include" /> <keyword name="GreaseMonkeyScript.isEnabled" id="GreaseMonkeyScript.isEnabled" ref="eric6.Helpviewer.GreaseMonkey.GreaseMonkeyScript.html#GreaseMonkeyScript.isEnabled" /> <keyword name="GreaseMonkeyScript.isEnabled" id="GreaseMonkeyScript.isEnabled" ref="eric6.WebBrowser.GreaseMonkey.GreaseMonkeyScript.html#GreaseMonkeyScript.isEnabled" /> + <keyword name="GreaseMonkeyScript.isUpdating" id="GreaseMonkeyScript.isUpdating" ref="eric6.WebBrowser.GreaseMonkey.GreaseMonkeyScript.html#GreaseMonkeyScript.isUpdating" /> <keyword name="GreaseMonkeyScript.isValid" id="GreaseMonkeyScript.isValid" ref="eric6.Helpviewer.GreaseMonkey.GreaseMonkeyScript.html#GreaseMonkeyScript.isValid" /> <keyword name="GreaseMonkeyScript.isValid" id="GreaseMonkeyScript.isValid" ref="eric6.WebBrowser.GreaseMonkey.GreaseMonkeyScript.html#GreaseMonkeyScript.isValid" /> <keyword name="GreaseMonkeyScript.match" id="GreaseMonkeyScript.match" ref="eric6.Helpviewer.GreaseMonkey.GreaseMonkeyScript.html#GreaseMonkeyScript.match" /> @@ -6315,12 +6322,13 @@ <keyword name="GreaseMonkeyScript.nameSpace" id="GreaseMonkeyScript.nameSpace" ref="eric6.Helpviewer.GreaseMonkey.GreaseMonkeyScript.html#GreaseMonkeyScript.nameSpace" /> <keyword name="GreaseMonkeyScript.nameSpace" id="GreaseMonkeyScript.nameSpace" ref="eric6.WebBrowser.GreaseMonkey.GreaseMonkeyScript.html#GreaseMonkeyScript.nameSpace" /> <keyword name="GreaseMonkeyScript.noFrames" id="GreaseMonkeyScript.noFrames" ref="eric6.WebBrowser.GreaseMonkey.GreaseMonkeyScript.html#GreaseMonkeyScript.noFrames" /> + <keyword name="GreaseMonkeyScript.require" id="GreaseMonkeyScript.require" ref="eric6.WebBrowser.GreaseMonkey.GreaseMonkeyScript.html#GreaseMonkeyScript.require" /> <keyword name="GreaseMonkeyScript.script" id="GreaseMonkeyScript.script" ref="eric6.Helpviewer.GreaseMonkey.GreaseMonkeyScript.html#GreaseMonkeyScript.script" /> - <keyword name="GreaseMonkeyScript.script" id="GreaseMonkeyScript.script" ref="eric6.WebBrowser.GreaseMonkey.GreaseMonkeyScript.html#GreaseMonkeyScript.script" /> <keyword name="GreaseMonkeyScript.setEnabled" id="GreaseMonkeyScript.setEnabled" ref="eric6.Helpviewer.GreaseMonkey.GreaseMonkeyScript.html#GreaseMonkeyScript.setEnabled" /> <keyword name="GreaseMonkeyScript.setEnabled" id="GreaseMonkeyScript.setEnabled" ref="eric6.WebBrowser.GreaseMonkey.GreaseMonkeyScript.html#GreaseMonkeyScript.setEnabled" /> <keyword name="GreaseMonkeyScript.startAt" id="GreaseMonkeyScript.startAt" ref="eric6.Helpviewer.GreaseMonkey.GreaseMonkeyScript.html#GreaseMonkeyScript.startAt" /> <keyword name="GreaseMonkeyScript.startAt" id="GreaseMonkeyScript.startAt" ref="eric6.WebBrowser.GreaseMonkey.GreaseMonkeyScript.html#GreaseMonkeyScript.startAt" /> + <keyword name="GreaseMonkeyScript.updateScript" id="GreaseMonkeyScript.updateScript" ref="eric6.WebBrowser.GreaseMonkey.GreaseMonkeyScript.html#GreaseMonkeyScript.updateScript" /> <keyword name="GreaseMonkeyScript.updateUrl" id="GreaseMonkeyScript.updateUrl" ref="eric6.WebBrowser.GreaseMonkey.GreaseMonkeyScript.html#GreaseMonkeyScript.updateUrl" /> <keyword name="GreaseMonkeyScript.version" id="GreaseMonkeyScript.version" ref="eric6.Helpviewer.GreaseMonkey.GreaseMonkeyScript.html#GreaseMonkeyScript.version" /> <keyword name="GreaseMonkeyScript.version" id="GreaseMonkeyScript.version" ref="eric6.WebBrowser.GreaseMonkey.GreaseMonkeyScript.html#GreaseMonkeyScript.version" />
--- a/Documentation/Source/eric6.WebBrowser.GreaseMonkey.GreaseMonkeyDownloader.html Tue Apr 25 18:40:46 2017 +0200 +++ b/Documentation/Source/eric6.WebBrowser.GreaseMonkey.GreaseMonkeyDownloader.html Tue Apr 25 19:20:18 2017 +0200 @@ -48,7 +48,7 @@ QObject <h3>Class Attributes</h3> <table> -<tr><td>None</td></tr> +<tr><td>DownloadMainScript</td></tr><tr><td>DownloadRequireScript</td></tr> </table> <h3>Class Methods</h3> <table> @@ -60,14 +60,14 @@ <td><a href="#GreaseMonkeyDownloader.__init__">GreaseMonkeyDownloader</a></td> <td>Constructor</td> </tr><tr> -<td><a href="#GreaseMonkeyDownloader.__downloadRequires">__downloadRequires</a></td> -<td>Private slot to initiate the download of required scripts.</td> -</tr><tr> <td><a href="#GreaseMonkeyDownloader.__requireDownloaded">__requireDownloaded</a></td> <td>Private slot to handle the finished download of a required script.</td> </tr><tr> <td><a href="#GreaseMonkeyDownloader.__scriptDownloaded">__scriptDownloaded</a></td> <td>Private slot to handle the finished download of a script.</td> +</tr><tr> +<td><a href="#GreaseMonkeyDownloader.updateScript">updateScript</a></td> +<td>Public method to set the file name for the script to be downloaded.</td> </tr> </table> <h3>Static Methods</h3> @@ -76,7 +76,7 @@ </table> <a NAME="GreaseMonkeyDownloader.__init__" ID="GreaseMonkeyDownloader.__init__"></a> <h4>GreaseMonkeyDownloader (Constructor)</h4> -<b>GreaseMonkeyDownloader</b>(<i>url, manager</i>) +<b>GreaseMonkeyDownloader</b>(<i>url, manager, mode</i>) <p> Constructor </p><dl> @@ -86,13 +86,11 @@ </dd><dt><i>manager</i> (GreaseMonkeyManager)</dt> <dd> reference to the GreaseMonkey manager +</dd><dt><i>mode</i> (int (one of DownloadMainScript, DownloadRequireScript))</dt> +<dd> +download mode </dd> -</dl><a NAME="GreaseMonkeyDownloader.__downloadRequires" ID="GreaseMonkeyDownloader.__downloadRequires"></a> -<h4>GreaseMonkeyDownloader.__downloadRequires</h4> -<b>__downloadRequires</b>(<i></i>) -<p> - Private slot to initiate the download of required scripts. -</p><a NAME="GreaseMonkeyDownloader.__requireDownloaded" ID="GreaseMonkeyDownloader.__requireDownloaded"></a> +</dl><a NAME="GreaseMonkeyDownloader.__requireDownloaded" ID="GreaseMonkeyDownloader.__requireDownloaded"></a> <h4>GreaseMonkeyDownloader.__requireDownloaded</h4> <b>__requireDownloaded</b>(<i></i>) <p> @@ -102,7 +100,17 @@ <b>__scriptDownloaded</b>(<i></i>) <p> Private slot to handle the finished download of a script. -</p> +</p><a NAME="GreaseMonkeyDownloader.updateScript" ID="GreaseMonkeyDownloader.updateScript"></a> +<h4>GreaseMonkeyDownloader.updateScript</h4> +<b>updateScript</b>(<i>fileName</i>) +<p> + Public method to set the file name for the script to be downloaded. +</p><dl> +<dt><i>fileName</i> (str)</dt> +<dd> +file name for the script +</dd> +</dl> <div align="right"><a href="#top">Up</a></div> <hr /> </body></html> \ No newline at end of file
--- a/Documentation/Source/eric6.WebBrowser.GreaseMonkey.GreaseMonkeyManager.html Tue Apr 25 18:40:46 2017 +0200 +++ b/Documentation/Source/eric6.WebBrowser.GreaseMonkey.GreaseMonkeyManager.html Tue Apr 25 19:20:18 2017 +0200 @@ -136,10 +136,15 @@ Special method called during object destruction. </p><a NAME="GreaseMonkeyManager.__downloaderFinished" ID="GreaseMonkeyManager.__downloaderFinished"></a> <h4>GreaseMonkeyManager.__downloaderFinished</h4> -<b>__downloaderFinished</b>(<i></i>) +<b>__downloaderFinished</b>(<i>fileName</i>) <p> Private slot to handle the completion of a script download. -</p><a NAME="GreaseMonkeyManager.__load" ID="GreaseMonkeyManager.__load"></a> +</p><dl> +<dt><i>fileName</i> (str)</dt> +<dd> +name of the downloaded script +</dd> +</dl><a NAME="GreaseMonkeyManager.__load" ID="GreaseMonkeyManager.__load"></a> <h4>GreaseMonkeyManager.__load</h4> <b>__load</b>(<i></i>) <p>
--- a/Documentation/Source/eric6.WebBrowser.GreaseMonkey.GreaseMonkeyScript.html Tue Apr 25 18:40:46 2017 +0200 +++ b/Documentation/Source/eric6.WebBrowser.GreaseMonkey.GreaseMonkeyScript.html Tue Apr 25 19:20:18 2017 +0200 @@ -60,9 +60,27 @@ <td><a href="#GreaseMonkeyScript.__init__">GreaseMonkeyScript</a></td> <td>Constructor</td> </tr><tr> +<td><a href="#GreaseMonkeyScript.__downloadRequires">__downloadRequires</a></td> +<td>Private method to download the required scripts.</td> +</tr><tr> +<td><a href="#GreaseMonkeyScript.__downloaderError">__downloaderError</a></td> +<td>Private slot to handle a downloader error.</td> +</tr><tr> +<td><a href="#GreaseMonkeyScript.__downloaderFinished">__downloaderFinished</a></td> +<td>Private slot to handle a finished download.</td> +</tr><tr> <td><a href="#GreaseMonkeyScript.__parseScript">__parseScript</a></td> <td>Private method to parse the given script and populate the data structure.</td> </tr><tr> +<td><a href="#GreaseMonkeyScript.__reloadScript">__reloadScript</a></td> +<td>Private method to reload the script.</td> +</tr><tr> +<td><a href="#GreaseMonkeyScript.__requireDownloadError">__requireDownloadError</a></td> +<td>Private slot to handle a downloader error.</td> +</tr><tr> +<td><a href="#GreaseMonkeyScript.__requireDownloaded">__requireDownloaded</a></td> +<td>Private slot to handle a finished download of a required script.</td> +</tr><tr> <td><a href="#GreaseMonkeyScript.__toJavaScriptList">__toJavaScriptList</a></td> <td>Private method to convert a list of str to a string containing a valid JavaScript list definition.</td> </tr><tr> @@ -90,6 +108,9 @@ <td><a href="#GreaseMonkeyScript.isEnabled">isEnabled</a></td> <td>Public method to check, if the script is enabled.</td> </tr><tr> +<td><a href="#GreaseMonkeyScript.isUpdating">isUpdating</a></td> +<td>Public method to get the updating flag.</td> +</tr><tr> <td><a href="#GreaseMonkeyScript.isValid">isValid</a></td> <td>Public method to check the validity of the script.</td> </tr><tr> @@ -102,8 +123,8 @@ <td><a href="#GreaseMonkeyScript.noFrames">noFrames</a></td> <td>Public method to get the noFrames flag.</td> </tr><tr> -<td><a href="#GreaseMonkeyScript.script">script</a></td> -<td>Public method to get the Javascript source.</td> +<td><a href="#GreaseMonkeyScript.require">require</a></td> +<td>Public method to get the list of required scripts.</td> </tr><tr> <td><a href="#GreaseMonkeyScript.setEnabled">setEnabled</a></td> <td>Public method to enable a script.</td> @@ -111,6 +132,9 @@ <td><a href="#GreaseMonkeyScript.startAt">startAt</a></td> <td>Public method to get the start point of the script.</td> </tr><tr> +<td><a href="#GreaseMonkeyScript.updateScript">updateScript</a></td> +<td>Public method to updated the script.</td> +</tr><tr> <td><a href="#GreaseMonkeyScript.updateUrl">updateUrl</a></td> <td>Public method to get the update URL of the script.</td> </tr><tr> @@ -138,12 +162,42 @@ <dd> path of the Javascript file (string) </dd> -</dl><a NAME="GreaseMonkeyScript.__parseScript" ID="GreaseMonkeyScript.__parseScript"></a> +</dl><a NAME="GreaseMonkeyScript.__downloadRequires" ID="GreaseMonkeyScript.__downloadRequires"></a> +<h4>GreaseMonkeyScript.__downloadRequires</h4> +<b>__downloadRequires</b>(<i></i>) +<p> + Private method to download the required scripts. +</p><a NAME="GreaseMonkeyScript.__downloaderError" ID="GreaseMonkeyScript.__downloaderError"></a> +<h4>GreaseMonkeyScript.__downloaderError</h4> +<b>__downloaderError</b>(<i></i>) +<p> + Private slot to handle a downloader error. +</p><a NAME="GreaseMonkeyScript.__downloaderFinished" ID="GreaseMonkeyScript.__downloaderFinished"></a> +<h4>GreaseMonkeyScript.__downloaderFinished</h4> +<b>__downloaderFinished</b>(<i></i>) +<p> + Private slot to handle a finished download. +</p><a NAME="GreaseMonkeyScript.__parseScript" ID="GreaseMonkeyScript.__parseScript"></a> <h4>GreaseMonkeyScript.__parseScript</h4> <b>__parseScript</b>(<i></i>) <p> Private method to parse the given script and populate the data structure. +</p><a NAME="GreaseMonkeyScript.__reloadScript" ID="GreaseMonkeyScript.__reloadScript"></a> +<h4>GreaseMonkeyScript.__reloadScript</h4> +<b>__reloadScript</b>(<i></i>) +<p> + Private method to reload the script. +</p><a NAME="GreaseMonkeyScript.__requireDownloadError" ID="GreaseMonkeyScript.__requireDownloadError"></a> +<h4>GreaseMonkeyScript.__requireDownloadError</h4> +<b>__requireDownloadError</b>(<i></i>) +<p> + Private slot to handle a downloader error. +</p><a NAME="GreaseMonkeyScript.__requireDownloaded" ID="GreaseMonkeyScript.__requireDownloaded"></a> +<h4>GreaseMonkeyScript.__requireDownloaded</h4> +<b>__requireDownloaded</b>(<i></i>) +<p> + Private slot to handle a finished download of a required script. </p><a NAME="GreaseMonkeyScript.__toJavaScriptList" ID="GreaseMonkeyScript.__toJavaScriptList"></a> <h4>GreaseMonkeyScript.__toJavaScriptList</h4> <b>__toJavaScriptList</b>(<i>patterns</i>) @@ -213,7 +267,7 @@ </p><dl> <dt>Returns:</dt> <dd> -path path of the Javascript file (string) +path of the Javascript file (string) </dd> </dl><a NAME="GreaseMonkeyScript.fullName" ID="GreaseMonkeyScript.fullName"></a> <h4>GreaseMonkeyScript.fullName</h4> @@ -245,6 +299,21 @@ <dd> flag indicating an enabled state (boolean) </dd> +</dl><a NAME="GreaseMonkeyScript.isUpdating" ID="GreaseMonkeyScript.isUpdating"></a> +<h4>GreaseMonkeyScript.isUpdating</h4> +<b>isUpdating</b>(<i></i>) +<p> + Public method to get the updating flag. +</p><dl> +<dt>Returns:</dt> +<dd> +updating flag +</dd> +</dl><dl> +<dt>Return Type:</dt> +<dd> +bool +</dd> </dl><a NAME="GreaseMonkeyScript.isValid" ID="GreaseMonkeyScript.isValid"></a> <h4>GreaseMonkeyScript.isValid</h4> <b>isValid</b>(<i></i>) @@ -290,15 +359,15 @@ <dd> bool </dd> -</dl><a NAME="GreaseMonkeyScript.script" ID="GreaseMonkeyScript.script"></a> -<h4>GreaseMonkeyScript.script</h4> -<b>script</b>(<i></i>) +</dl><a NAME="GreaseMonkeyScript.require" ID="GreaseMonkeyScript.require"></a> +<h4>GreaseMonkeyScript.require</h4> +<b>require</b>(<i></i>) <p> - Public method to get the Javascript source. + Public method to get the list of required scripts. </p><dl> <dt>Returns:</dt> <dd> -Javascript source (string) +list of required scripts (list of strings) </dd> </dl><a NAME="GreaseMonkeyScript.setEnabled" ID="GreaseMonkeyScript.setEnabled"></a> <h4>GreaseMonkeyScript.setEnabled</h4> @@ -320,7 +389,12 @@ <dd> start point of the script (DocumentStart or DocumentEnd) </dd> -</dl><a NAME="GreaseMonkeyScript.updateUrl" ID="GreaseMonkeyScript.updateUrl"></a> +</dl><a NAME="GreaseMonkeyScript.updateScript" ID="GreaseMonkeyScript.updateScript"></a> +<h4>GreaseMonkeyScript.updateScript</h4> +<b>updateScript</b>(<i></i>) +<p> + Public method to updated the script. +</p><a NAME="GreaseMonkeyScript.updateUrl" ID="GreaseMonkeyScript.updateUrl"></a> <h4>GreaseMonkeyScript.updateUrl</h4> <b>updateUrl</b>(<i></i>) <p>
--- a/WebBrowser/GreaseMonkey/GreaseMonkeyDownloader.py Tue Apr 25 18:40:46 2017 +0200 +++ b/WebBrowser/GreaseMonkey/GreaseMonkeyDownloader.py Tue Apr 25 19:20:18 2017 +0200 @@ -11,22 +11,24 @@ import os -from PyQt5.QtCore import pyqtSignal, QObject, QSettings, QRegExp, QUrl -from PyQt5.QtWidgets import QDialog +from PyQt5.QtCore import pyqtSignal, pyqtSlot, QObject, QSettings, QFileInfo from PyQt5.QtNetwork import QNetworkReply, QNetworkRequest -from E5Gui import E5MessageBox - from WebBrowser.WebBrowserWindow import WebBrowserWindow +# TODO: document signals class GreaseMonkeyDownloader(QObject): """ Class implementing the downloader for GreaseMonkey scripts. """ - finished = pyqtSignal() + finished = pyqtSignal(str) + error = pyqtSignal() - def __init__(self, url, manager): + DownloadMainScript = 1 + DownloadRequireScript = 2 + + def __init__(self, url, manager, mode): """ Constructor @@ -34,6 +36,8 @@ @type QUrl @param manager reference to the GreaseMonkey manager @type GreaseMonkeyManager + @param mode download mode + @type int (one of DownloadMainScript, DownloadRequireScript) """ super(GreaseMonkeyDownloader, self).__init__() @@ -41,139 +45,118 @@ self.__reply = WebBrowserWindow.networkManager().get( QNetworkRequest(url)) - self.__reply.finished.connect(self.__scriptDownloaded) + if mode == GreaseMonkeyDownloader.DownloadMainScript: + self.__reply.finished.connect(self.__scriptDownloaded) + else: + self.__reply.finished.connect(self.__requireDownloaded) self.__fileName = "" - self.__requireUrls = [] + def updateScript(self, fileName): + """ + Public method to set the file name for the script to be downloaded. + + @param fileName file name for the script + @type str + """ + self.__fileName = fileName + + @pyqtSlot() def __scriptDownloaded(self): """ Private slot to handle the finished download of a script. """ + self.deleteLater() + self.__reply.deleteLater() + if self.sender() != self.__reply: - self.finished.emit() + self.error.emit() + return + + if self.__reply.error() != QNetworkReply.NoError: + self.error.emit() return response = bytes(self.__reply.readAll()).decode() - if self.__reply.error() == QNetworkReply.NoError and \ - "// ==UserScript==" in response: + if "// ==UserScript==" not in response: + self.error.emit() + return + + if not self.__fileName: from WebBrowser.Tools import WebBrowserTools filePath = os.path.join( self.__manager.scriptsDirectory(), WebBrowserTools.getFileNameFromUrl(self.__reply.url())) self.__fileName = WebBrowserTools.ensureUniqueFilename(filePath) - - try: - f = open(self.__fileName, "w", encoding="utf-8") - except (IOError, OSError) as err: - E5MessageBox.critical( - None, - self.tr("GreaseMonkey Download"), - self.tr( - """<p>The file <b>{0}</b> could not be opened""" - """ for writing.<br/>Reason: {1}</p>""").format( - self.__fileName, str(err))) - self.finished.emit() - return - f.write(response) - f.close() - - settings = QSettings( - os.path.join(self.__manager.requireScriptsDirectory(), - "requires.ini"), - QSettings.IniFormat) - settings.beginGroup("Files") - - rx = QRegExp("@require(.*)\\n") - rx.setMinimal(True) - rx.indexIn(response) - - for i in range(1, rx.captureCount() + 1): - url = rx.cap(i).strip() - if url and not settings.contains(url): - self.__requireUrls.append(QUrl(url)) - self.__reply.deleteLater() - self.__reply = None + try: + f = open(self.__fileName, "w", encoding="utf-8") + except (IOError, OSError) as err: + self.error.emit() + return + f.write(response) + f.close() - self.__downloadRequires() + self.finished.emit(self.__fileName) + @pyqtSlot() def __requireDownloaded(self): """ Private slot to handle the finished download of a required script. """ + self.deleteLater() + self.__reply.deleteLater() + if self.sender() != self.__reply: - self.finished.emit() + self.error.emit() + return + + if self.__reply.error() != QNetworkReply.NoError: + self.error.emit() return response = bytes(self.__reply.readAll()).decode() - if self.__reply.error() == QNetworkReply.NoError and response: - from WebBrowser.Tools import WebBrowserTools - filePath = os.path.join(self.__manager.requireScriptsDirectory(), - "require.js") - fileName = WebBrowserTools.ensureUniqueFilename(filePath, "{0}") - - try: - f = open(fileName, "w", encoding="utf-8") - except (IOError, OSError) as err: - E5MessageBox.critical( - None, - self.tr("GreaseMonkey Download"), - self.tr( - """<p>The file <b>{0}</b> could not be opened""" - """ for writing.<br/>Reason: {1}</p>""").format( - fileName, str(err))) - self.finished.emit() - return - f.write(response) - f.close() - - settings = QSettings( - os.path.join(self.__manager.requireScriptsDirectory(), - "requires.ini"), - QSettings.IniFormat) - settings.beginGroup("Files") - settings.setValue(self.__reply.originalUrl().toString(), fileName) + if not response: + self.error.emit() + return - self.__reply.deleteLater() - self.__reply = None + settings = QSettings( + os.path.join(self.__manager.requireScriptsDirectory(), + "requires.ini"), + QSettings.IniFormat) + settings.beginGroup("Files") - self.__downloadRequires() - - def __downloadRequires(self): - """ - Private slot to initiate the download of required scripts. - """ - if self.__requireUrls: - self.__reply = WebBrowserWindow.networkManager().get( - QNetworkRequest(self.__requireUrls.pop(0))) - self.__reply.finished.connect(self.__requireDownloaded) - else: - from .GreaseMonkeyScript import GreaseMonkeyScript - deleteScript = True - script = GreaseMonkeyScript(self.__manager, self.__fileName) - - if script.isValid(): - if not self.__manager.containsScript(script.fullName()): - from .GreaseMonkeyAddScriptDialog import \ - GreaseMonkeyAddScriptDialog - dlg = GreaseMonkeyAddScriptDialog(self.__manager, script) - deleteScript = dlg.exec_() != QDialog.Accepted - else: - E5MessageBox.information( - None, - self.tr("GreaseMonkey Download"), - self.tr( - """<p><b>{0}</b> is already installed.</p>""") - .format(script.name())) - - if deleteScript: - try: - os.remove(self.__fileName) - except (IOError, OSError): - # ignore - pass - - self.finished.emit() + if not self.__fileName: + self.__fileName = settings.value( + self.__reply.request().url().toString()) + if not self.__fileName: + name = QFileInfo(self.__reply.request().url().path())\ + .fileName() + if not name: + name = "require.js" + elif not name.endswith(".js"): + name += ".js" + filePath = os.path.join( + self.__manager.requireScriptsDirectory(), name) + from WebBrowser.Tools import WebBrowserTools + self.__fileName = WebBrowserTools.ensureUniqueFilename( + filePath, "{0}") + if not QFileInfo(self.__fileName).isAbsolute(): + self.__fileName = os.path.join( + self.__manager.requireScriptsDirectory(), + self.__fileName) + + try: + f = open(self.__fileName, "w", encoding="utf-8") + except (IOError, OSError) as err: + self.error.emit() + return + f.write(response) + f.close() + + settings.setValue(self.__reply.request().url().toString(), + QFileInfo(self.__fileName).fileName()) + + self.finished.emit(self.__fileName)
--- a/WebBrowser/GreaseMonkey/GreaseMonkeyManager.py Tue Apr 25 18:40:46 2017 +0200 +++ b/WebBrowser/GreaseMonkey/GreaseMonkeyManager.py Tue Apr 25 19:20:18 2017 +0200 @@ -12,7 +12,10 @@ import os from PyQt5.QtCore import pyqtSignal, pyqtSlot, Qt, QObject, QTimer, QFile, \ - QDir, QSettings, QMetaObject, QUrl, Q_ARG + QFileInfo, QDir, QSettings, QMetaObject, QUrl, Q_ARG, QCoreApplication +from PyQt5.QtWidgets import QDialog + +from E5Gui import E5MessageBox import Utilities import Preferences @@ -87,19 +90,51 @@ @type QUrl """ from .GreaseMonkeyDownloader import GreaseMonkeyDownloader - downloader = GreaseMonkeyDownloader(url, self) + downloader = GreaseMonkeyDownloader( + url, self, GreaseMonkeyDownloader.DownloadMainScript) downloader.finished.connect(self.__downloaderFinished) self.__downloaders.append(downloader) - def __downloaderFinished(self): + def __downloaderFinished(self, fileName): """ Private slot to handle the completion of a script download. + + @param fileName name of the downloaded script + @type str """ downloader = self.sender() if downloader is None or downloader not in self.__downloaders: return self.__downloaders.remove(downloader) + + deleteScript = True + from .GreaseMonkeyScript import GreaseMonkeyScript + script = GreaseMonkeyScript(self, fileName) + if script.isValid(): + if not self.containsScript(script.fullName()): + from .GreaseMonkeyAddScriptDialog import \ + GreaseMonkeyAddScriptDialog + dlg = GreaseMonkeyAddScriptDialog(self, script) + deleteScript = dlg.exec_() != QDialog.Accepted + else: + E5MessageBox.information( + None, + QCoreApplication.translate( + "GreaseMonkeyManager", + "Install GreaseMonkey Script"), + QCoreApplication.translate( + "GreaseMonkeyManager", + """'{0}' is already installed.""").format( + script.fullName()) + ) + + if deleteScript: + try: + os.remove(fileName) + except (IOError, OSError): + # ignore + pass def scriptsDirectory(self): """ @@ -138,13 +173,17 @@ for url in urlList: if settings.contains(url): fileName = settings.value(url) + if not QFileInfo(fileName).isAbsolute(): + fileName = os.path.join(self.requireScriptsDirectory(), + fileName) try: f = open(fileName, "r", encoding="utf-8") - source = f.read() + source = f.read().strip() f.close() except (IOError, OSError): source = "" - script += source.strip() + "\n" + if source: + script += source + "\n" return script
--- a/WebBrowser/GreaseMonkey/GreaseMonkeyScript.py Tue Apr 25 18:40:46 2017 +0200 +++ b/WebBrowser/GreaseMonkey/GreaseMonkeyScript.py Tue Apr 25 19:20:18 2017 +0200 @@ -10,10 +10,11 @@ from __future__ import unicode_literals from PyQt5.QtCore import pyqtSignal, pyqtSlot, QObject, QUrl, QRegExp, \ - QByteArray, QCryptographicHash + QByteArray, QCryptographicHash, qVersion from PyQt5.QtWebEngineWidgets import QWebEngineScript from .GreaseMonkeyJavaScript import bootstrap_js, values_js +from .GreaseMonkeyDownloader import GreaseMonkeyDownloader from ..Tools.DelayedFileWatcher import DelayedFileWatcher from ..WebBrowserPage import WebBrowserPage @@ -28,6 +29,7 @@ DocumentIdle = 2 scriptChanged = pyqtSignal() + updatingChanged = pyqtSignal(bool) def __init__(self, manager, path): """ @@ -48,6 +50,7 @@ self.__include = [] self.__exclude = [] + self.__require = [] self.__downloadUrl = QUrl() self.__updateUrl = QUrl() @@ -59,6 +62,10 @@ self.__valid = False self.__noFrames = False + self.__updating = False + + self.__downloaders = [] + self.__parseScript() self.__fileWatcher.delayedFileChanged.connect( @@ -177,22 +184,31 @@ """ return self.__exclude[:] - def script(self): + def require(self): """ - Public method to get the Javascript source. + Public method to get the list of required scripts. - @return Javascript source (string) + @return list of required scripts (list of strings) """ - return self.__script + return self.__require[:] def fileName(self): """ Public method to get the path of the Javascript file. - @return path path of the Javascript file (string) + @return path of the Javascript file (string) """ return self.__fileName + def isUpdating(self): + """ + Public method to get the updating flag. + + @return updating flag + @rtype bool + """ + return self.__updating + @pyqtSlot(str) def __watchedFileChanged(self, fileName): """ @@ -202,12 +218,7 @@ @type str """ if self.__fileName == fileName: - self.__parseScript() - - self.__manager.removeScript(self, False) - self.__manager.addScript(self) - - self.scriptChanged.emit() + self.__reloadScript() def __parseScript(self): """ @@ -221,6 +232,7 @@ self.__include = [] self.__exclude = [] + self.__require = [] self.__downloadUrl = QUrl() self.__updateUrl = QUrl() @@ -250,7 +262,6 @@ # invalid script file return - requireList = [] for line in metaDataBlock.splitlines(): if not line.strip(): continue @@ -290,7 +301,7 @@ self.__exclude.append(value) elif key == "@require": - requireList.append(value) + self.__require.append(value) elif key == "@run-at": if value == "document-end": @@ -313,33 +324,38 @@ QByteArray(self.fullName().encode("utf-8")), QCryptographicHash.Md4).toHex()).decode("ascii") valuesScript = values_js.format(nspace) - runCheck = """ - for (var value of {0}) {{ - var re = new RegExp(value); - if (re.test(window.location.href)) {{ + if qVersion() < "5.8.0": + runCheck = """ + for (var value of {0}) {{ + var re = new RegExp(value); + if (re.test(window.location.href)) {{ + return; + }} + }} + __eric_includes = false; + for (var value of {1}) {{ + var re = new RegExp(value); + if (re.test(window.location.href)) {{ + __eric_includes = true; + break; + }} + }} + if (!__eric_includes) {{ return; }} - }} - __eric_includes = false; - for (var value of {1}) {{ - var re = new RegExp(value); - if (re.test(window.location.href)) {{ - __eric_includes = true; - break; - }} - }} - if (!__eric_includes) {{ - return; - }} - delete __eric_includes;""".format( - self.__toJavaScriptList(self.__exclude[:]), - self.__toJavaScriptList(self.__include[:]) - ) - runCheck = "" - self.__script = "(function(){{{0}\n{1}\n{2}\n{3}\n}})();".format( - runCheck, valuesScript, - self.__manager.requireScripts(requireList), fileData - ) + delete __eric_includes;""".format( + self.__toJavaScriptList(self.__exclude[:]), + self.__toJavaScriptList(self.__include[:]) + ) + self.__script = "(function(){{{0}\n{1}\n{2}\n{3}\n}})();".format( + runCheck, valuesScript, + self.__manager.requireScripts(self.__require), fileData + ) + else: + self.__script = "(function(){{{0}\n{1}\n{2}\n}})();".format( + valuesScript, self.__manager.requireScripts(self.__require), + fileData + ) self.__valid = True def webScript(self): @@ -350,21 +366,23 @@ @rtype QWebEngineScript @exception ValueError raised to indicate an unsupported start point """ - if self.startAt() == GreaseMonkeyScript.DocumentStart: - injectionPoint = QWebEngineScript.DocumentCreation - elif self.startAt() == GreaseMonkeyScript.DocumentEnd: - injectionPoint = QWebEngineScript.DocumentReady - elif self.startAt() == GreaseMonkeyScript.DocumentIdle: - injectionPoint = QWebEngineScript.Deferred - else: - raise ValueError("Wrong script start point.") + if qVersion() < "5.8.0": + if self.startAt() == GreaseMonkeyScript.DocumentStart: + injectionPoint = QWebEngineScript.DocumentCreation + elif self.startAt() == GreaseMonkeyScript.DocumentEnd: + injectionPoint = QWebEngineScript.DocumentReady + elif self.startAt() == GreaseMonkeyScript.DocumentIdle: + injectionPoint = QWebEngineScript.Deferred + else: + raise ValueError("Wrong script start point.") script = QWebEngineScript() script.setSourceCode("{0}\n{1}".format( bootstrap_js, self.__script )) script.setName(self.fullName()) - script.setInjectionPoint(injectionPoint) + if qVersion() < "5.8.0": + script.setInjectionPoint(injectionPoint) script.setWorldId(WebBrowserPage.SafeJsWorld) script.setRunsOnSubFrames(not self.__noFrames) return script @@ -379,15 +397,102 @@ @return JavaScript script containing the list @rtype str """ - patternList = [] - for pattern in patterns: - if pattern.startswith("/") and pattern.endswith("/") and \ - len(pattern) > 1: - pattern = pattern[1:-1] - else: - pattern = pattern.replace(".", "\\.").replace("*", ".*") - pattern = "'{0}'".format(pattern) - patternList.append(pattern) + if qVersion() >= "5.8.0": + script = "" + else: + patternList = [] + for pattern in patterns: + if pattern.startswith("/") and pattern.endswith("/") and \ + len(pattern) > 1: + pattern = pattern[1:-1] + else: + pattern = pattern.replace(".", "\\.").replace("*", ".*") + pattern = "'{0}'".format(pattern) + patternList.append(pattern) + + script = "[{0}]".format(",".join(patternList)) + return script + + def updateScript(self): + """ + Public method to updated the script. + """ + if not self.__downloadUrl.isValid() or self.__updating: + return + + self.__updating = True + self.updatingChanged.emit(self.__updating) + + downloader = GreaseMonkeyDownloader( + self.__downloadUrl, + self.__manager, + GreaseMonkeyDownloader.DownloadMainScript) + downloader.updateScript(self.__fileName) + downloader.finished.connect(self.__downloaderFinished) + downloader.error.connect(self.__downloaderError) + self.__downloaders.append(downloader) - script = "[{0}]".format(",".join(patternList)) - return script + self.__downloadRequires() + + def __downloaderFinished(self): + """ + Private slot to handle a finished download. + """ + downloader = self.sender() + if downloader in self.__downloaders: + self.__downloaders.remove(downloader) + self.__updating = False + self.updatingChanged.emit(self.__updating) + + def __downloaderError(self): + """ + Private slot to handle a downloader error. + """ + downloader = self.sender() + if downloader in self.__downloaders: + self.__downloaders.remove(downloader) + self.__updating = False + self.updatingChanged.emit(self.__updating) + + def __reloadScript(self): + """ + Private method to reload the script. + """ + self.__parseScript() + + self.__manager.removeScript(self, False) + self.__manager.addScript(self) + + self.scriptChanged.emit() + + def __downloadRequires(self): + """ + Private method to download the required scripts. + """ + for urlStr in self.__require: + if not self.__manager.requireScripts([urlStr]): + downloader = GreaseMonkeyDownloader( + QUrl(urlStr), + self.__manager, + GreaseMonkeyDownloader.DownloadRequireScript) + downloader.finished.connect(self.__requireDownloaded) + downloader.error.connect(self.__requireDownloadError) + self.__downloaders.append(downloader) + + def __requireDownloaded(self): + """ + Private slot to handle a finished download of a required script. + """ + downloader = self.sender() + if downloader in self.__downloaders: + self.__downloaders.remove(downloader) + + self.__reloadScript() + + def __requireDownloadError(self): + """ + Private slot to handle a downloader error. + """ + downloader = self.sender() + if downloader in self.__downloaders: + self.__downloaders.remove(downloader)
--- a/i18n/eric6_cs.ts Tue Apr 25 18:40:46 2017 +0200 +++ b/i18n/eric6_cs.ts Tue Apr 25 19:20:18 2017 +0200 @@ -17158,22 +17158,35 @@ <context> <name>GreaseMonkeyDownloader</name> <message> - <location filename="../WebBrowser/GreaseMonkey/GreaseMonkeyDownloader.py" line="166"/> + <location filename="../Helpviewer/GreaseMonkey/GreaseMonkeyDownloader.py" line="168"/> <source>GreaseMonkey Download</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/GreaseMonkey/GreaseMonkeyDownloader.py" line="122"/> + <location filename="../Helpviewer/GreaseMonkey/GreaseMonkeyDownloader.py" line="123"/> <source><p>The file <b>{0}</b> could not be opened for writing.<br/>Reason: {1}</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/GreaseMonkey/GreaseMonkeyDownloader.py" line="166"/> + <location filename="../Helpviewer/GreaseMonkey/GreaseMonkeyDownloader.py" line="168"/> <source><p><b>{0}</b> is already installed.</p></source> <translation type="unfinished"></translation> </message> </context> <context> + <name>GreaseMonkeyManager</name> + <message> + <location filename="../WebBrowser/GreaseMonkey/GreaseMonkeyManager.py" line="121"/> + <source>Install GreaseMonkey Script</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../WebBrowser/GreaseMonkey/GreaseMonkeyManager.py" line="121"/> + <source>'{0}' is already installed.</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> <name>HelpAppearancePage</name> <message> <location filename="../Preferences/ConfigurationPages/HelpAppearancePage.ui" line="17"/>
--- a/i18n/eric6_de.ts Tue Apr 25 18:40:46 2017 +0200 +++ b/i18n/eric6_de.ts Tue Apr 25 19:20:18 2017 +0200 @@ -16696,22 +16696,35 @@ <context> <name>GreaseMonkeyDownloader</name> <message> - <location filename="../WebBrowser/GreaseMonkey/GreaseMonkeyDownloader.py" line="166"/> + <location filename="../Helpviewer/GreaseMonkey/GreaseMonkeyDownloader.py" line="168"/> <source>GreaseMonkey Download</source> <translation>GreaseMonkey-Download</translation> </message> <message> - <location filename="../WebBrowser/GreaseMonkey/GreaseMonkeyDownloader.py" line="122"/> + <location filename="../Helpviewer/GreaseMonkey/GreaseMonkeyDownloader.py" line="123"/> <source><p>The file <b>{0}</b> could not be opened for writing.<br/>Reason: {1}</p></source> <translation><p>Die Datei <b>{0}</b> konnte nicht zum Schreiben geöffnet werden.<br/>Ursache: {1}</p></translation> </message> <message> - <location filename="../WebBrowser/GreaseMonkey/GreaseMonkeyDownloader.py" line="166"/> + <location filename="../Helpviewer/GreaseMonkey/GreaseMonkeyDownloader.py" line="168"/> <source><p><b>{0}</b> is already installed.</p></source> <translation><p><b>{0}</b> ist bereits installiert.</p></translation> </message> </context> <context> + <name>GreaseMonkeyManager</name> + <message> + <location filename="../WebBrowser/GreaseMonkey/GreaseMonkeyManager.py" line="121"/> + <source>Install GreaseMonkey Script</source> + <translation>GreaseMonkeyScript installieren</translation> + </message> + <message> + <location filename="../WebBrowser/GreaseMonkey/GreaseMonkeyManager.py" line="121"/> + <source>'{0}' is already installed.</source> + <translation>'{0}' ist bereits installiert.</translation> + </message> +</context> +<context> <name>HelpAppearancePage</name> <message> <location filename="../Preferences/ConfigurationPages/HelpAppearancePage.ui" line="17"/>
--- a/i18n/eric6_empty.ts Tue Apr 25 18:40:46 2017 +0200 +++ b/i18n/eric6_empty.ts Tue Apr 25 19:20:18 2017 +0200 @@ -16579,22 +16579,35 @@ <context> <name>GreaseMonkeyDownloader</name> <message> - <location filename="../WebBrowser/GreaseMonkey/GreaseMonkeyDownloader.py" line="166"/> + <location filename="../Helpviewer/GreaseMonkey/GreaseMonkeyDownloader.py" line="168"/> <source>GreaseMonkey Download</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/GreaseMonkey/GreaseMonkeyDownloader.py" line="122"/> + <location filename="../Helpviewer/GreaseMonkey/GreaseMonkeyDownloader.py" line="123"/> <source><p>The file <b>{0}</b> could not be opened for writing.<br/>Reason: {1}</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/GreaseMonkey/GreaseMonkeyDownloader.py" line="166"/> + <location filename="../Helpviewer/GreaseMonkey/GreaseMonkeyDownloader.py" line="168"/> <source><p><b>{0}</b> is already installed.</p></source> <translation type="unfinished"></translation> </message> </context> <context> + <name>GreaseMonkeyManager</name> + <message> + <location filename="../WebBrowser/GreaseMonkey/GreaseMonkeyManager.py" line="121"/> + <source>Install GreaseMonkey Script</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../WebBrowser/GreaseMonkey/GreaseMonkeyManager.py" line="121"/> + <source>'{0}' is already installed.</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> <name>HelpAppearancePage</name> <message> <location filename="../Preferences/ConfigurationPages/HelpAppearancePage.ui" line="17"/>
--- a/i18n/eric6_en.ts Tue Apr 25 18:40:46 2017 +0200 +++ b/i18n/eric6_en.ts Tue Apr 25 19:20:18 2017 +0200 @@ -16595,22 +16595,35 @@ <context> <name>GreaseMonkeyDownloader</name> <message> - <location filename="../WebBrowser/GreaseMonkey/GreaseMonkeyDownloader.py" line="166"/> + <location filename="../Helpviewer/GreaseMonkey/GreaseMonkeyDownloader.py" line="168"/> <source>GreaseMonkey Download</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/GreaseMonkey/GreaseMonkeyDownloader.py" line="122"/> + <location filename="../Helpviewer/GreaseMonkey/GreaseMonkeyDownloader.py" line="123"/> <source><p>The file <b>{0}</b> could not be opened for writing.<br/>Reason: {1}</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/GreaseMonkey/GreaseMonkeyDownloader.py" line="166"/> + <location filename="../Helpviewer/GreaseMonkey/GreaseMonkeyDownloader.py" line="168"/> <source><p><b>{0}</b> is already installed.</p></source> <translation type="unfinished"></translation> </message> </context> <context> + <name>GreaseMonkeyManager</name> + <message> + <location filename="../WebBrowser/GreaseMonkey/GreaseMonkeyManager.py" line="121"/> + <source>Install GreaseMonkey Script</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../WebBrowser/GreaseMonkey/GreaseMonkeyManager.py" line="121"/> + <source>'{0}' is already installed.</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> <name>HelpAppearancePage</name> <message> <location filename="../Preferences/ConfigurationPages/HelpAppearancePage.ui" line="17"/>
--- a/i18n/eric6_es.ts Tue Apr 25 18:40:46 2017 +0200 +++ b/i18n/eric6_es.ts Tue Apr 25 19:20:18 2017 +0200 @@ -16695,22 +16695,35 @@ <context> <name>GreaseMonkeyDownloader</name> <message> - <location filename="../WebBrowser/GreaseMonkey/GreaseMonkeyDownloader.py" line="166"/> + <location filename="../Helpviewer/GreaseMonkey/GreaseMonkeyDownloader.py" line="168"/> <source>GreaseMonkey Download</source> <translation>Descarga de GreaseMonkey</translation> </message> <message> - <location filename="../WebBrowser/GreaseMonkey/GreaseMonkeyDownloader.py" line="122"/> + <location filename="../Helpviewer/GreaseMonkey/GreaseMonkeyDownloader.py" line="123"/> <source><p>The file <b>{0}</b> could not be opened for writing.<br/>Reason: {1}</p></source> <translation><p>El archivo <b>{0}</b> no se puede abrir para escritura.<br/>Razón: {1}</p></translation> </message> <message> - <location filename="../WebBrowser/GreaseMonkey/GreaseMonkeyDownloader.py" line="166"/> + <location filename="../Helpviewer/GreaseMonkey/GreaseMonkeyDownloader.py" line="168"/> <source><p><b>{0}</b> is already installed.</p></source> <translation><p><b>{0}</b> ya está instalado.</p></translation> </message> </context> <context> + <name>GreaseMonkeyManager</name> + <message> + <location filename="../WebBrowser/GreaseMonkey/GreaseMonkeyManager.py" line="121"/> + <source>Install GreaseMonkey Script</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../WebBrowser/GreaseMonkey/GreaseMonkeyManager.py" line="121"/> + <source>'{0}' is already installed.</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> <name>HelpAppearancePage</name> <message> <location filename="../Preferences/ConfigurationPages/HelpAppearancePage.ui" line="17"/>
--- a/i18n/eric6_fr.ts Tue Apr 25 18:40:46 2017 +0200 +++ b/i18n/eric6_fr.ts Tue Apr 25 19:20:18 2017 +0200 @@ -17158,22 +17158,35 @@ <context> <name>GreaseMonkeyDownloader</name> <message> - <location filename="../WebBrowser/GreaseMonkey/GreaseMonkeyDownloader.py" line="166"/> + <location filename="../Helpviewer/GreaseMonkey/GreaseMonkeyDownloader.py" line="168"/> <source>GreaseMonkey Download</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/GreaseMonkey/GreaseMonkeyDownloader.py" line="122"/> + <location filename="../Helpviewer/GreaseMonkey/GreaseMonkeyDownloader.py" line="123"/> <source><p>The file <b>{0}</b> could not be opened for writing.<br/>Reason: {1}</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/GreaseMonkey/GreaseMonkeyDownloader.py" line="166"/> + <location filename="../Helpviewer/GreaseMonkey/GreaseMonkeyDownloader.py" line="168"/> <source><p><b>{0}</b> is already installed.</p></source> <translation type="unfinished"></translation> </message> </context> <context> + <name>GreaseMonkeyManager</name> + <message> + <location filename="../WebBrowser/GreaseMonkey/GreaseMonkeyManager.py" line="121"/> + <source>Install GreaseMonkey Script</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../WebBrowser/GreaseMonkey/GreaseMonkeyManager.py" line="121"/> + <source>'{0}' is already installed.</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> <name>HelpAppearancePage</name> <message> <location filename="../Preferences/ConfigurationPages/HelpAppearancePage.ui" line="17"/>
--- a/i18n/eric6_it.ts Tue Apr 25 18:40:46 2017 +0200 +++ b/i18n/eric6_it.ts Tue Apr 25 19:20:18 2017 +0200 @@ -17303,22 +17303,35 @@ <context> <name>GreaseMonkeyDownloader</name> <message> - <location filename="../WebBrowser/GreaseMonkey/GreaseMonkeyDownloader.py" line="166"/> + <location filename="../Helpviewer/GreaseMonkey/GreaseMonkeyDownloader.py" line="168"/> <source>GreaseMonkey Download</source> <translation>Scarico GreaseMonkey</translation> </message> <message> - <location filename="../WebBrowser/GreaseMonkey/GreaseMonkeyDownloader.py" line="122"/> + <location filename="../Helpviewer/GreaseMonkey/GreaseMonkeyDownloader.py" line="123"/> <source><p>The file <b>{0}</b> could not be opened for writing.<br/>Reason: {1}</p></source> <translation><p>Il flusso <b>{0}</b> non può essere aperto in scrittura.<br/>Causa: {1}</p></translation> </message> <message> - <location filename="../WebBrowser/GreaseMonkey/GreaseMonkeyDownloader.py" line="166"/> + <location filename="../Helpviewer/GreaseMonkey/GreaseMonkeyDownloader.py" line="168"/> <source><p><b>{0}</b> is already installed.</p></source> <translation><p><b>{0}</b> è già installato.</p></translation> </message> </context> <context> + <name>GreaseMonkeyManager</name> + <message> + <location filename="../WebBrowser/GreaseMonkey/GreaseMonkeyManager.py" line="121"/> + <source>Install GreaseMonkey Script</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../WebBrowser/GreaseMonkey/GreaseMonkeyManager.py" line="121"/> + <source>'{0}' is already installed.</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> <name>HelpAppearancePage</name> <message> <location filename="../Preferences/ConfigurationPages/HelpAppearancePage.ui" line="17"/>
--- a/i18n/eric6_pt.ts Tue Apr 25 18:40:46 2017 +0200 +++ b/i18n/eric6_pt.ts Tue Apr 25 19:20:18 2017 +0200 @@ -17280,22 +17280,35 @@ <context> <name>GreaseMonkeyDownloader</name> <message> - <location filename="../WebBrowser/GreaseMonkey/GreaseMonkeyDownloader.py" line="166"/> + <location filename="../Helpviewer/GreaseMonkey/GreaseMonkeyDownloader.py" line="168"/> <source>GreaseMonkey Download</source> <translation>Descárrega GreaseMonkey</translation> </message> <message> - <location filename="../WebBrowser/GreaseMonkey/GreaseMonkeyDownloader.py" line="122"/> + <location filename="../Helpviewer/GreaseMonkey/GreaseMonkeyDownloader.py" line="123"/> <source><p>The file <b>{0}</b> could not be opened for writing.<br/>Reason: {1}</p></source> <translation><p>Não se pôde abrir o ficheiro <b>{0}</b> para escrever.<br/>Razão: {1}</p></translation> </message> <message> - <location filename="../WebBrowser/GreaseMonkey/GreaseMonkeyDownloader.py" line="166"/> + <location filename="../Helpviewer/GreaseMonkey/GreaseMonkeyDownloader.py" line="168"/> <source><p><b>{0}</b> is already installed.</p></source> <translation><p><b>{0}</b> já está instalado.</p></translation> </message> </context> <context> + <name>GreaseMonkeyManager</name> + <message> + <location filename="../WebBrowser/GreaseMonkey/GreaseMonkeyManager.py" line="121"/> + <source>Install GreaseMonkey Script</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../WebBrowser/GreaseMonkey/GreaseMonkeyManager.py" line="121"/> + <source>'{0}' is already installed.</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> <name>HelpAppearancePage</name> <message> <location filename="../Preferences/ConfigurationPages/HelpAppearancePage.ui" line="17"/>
--- a/i18n/eric6_ru.ts Tue Apr 25 18:40:46 2017 +0200 +++ b/i18n/eric6_ru.ts Tue Apr 25 19:20:18 2017 +0200 @@ -16747,22 +16747,35 @@ <context> <name>GreaseMonkeyDownloader</name> <message> - <location filename="../WebBrowser/GreaseMonkey/GreaseMonkeyDownloader.py" line="166"/> + <location filename="../Helpviewer/GreaseMonkey/GreaseMonkeyDownloader.py" line="168"/> <source>GreaseMonkey Download</source> <translation>Загрузка GreaseMonkey</translation> </message> <message> - <location filename="../WebBrowser/GreaseMonkey/GreaseMonkeyDownloader.py" line="122"/> + <location filename="../Helpviewer/GreaseMonkey/GreaseMonkeyDownloader.py" line="123"/> <source><p>The file <b>{0}</b> could not be opened for writing.<br/>Reason: {1}</p></source> <translation><p>Файл <b>{0}</b>.Невозможно открыть для записи.<br/>Причина: {1}</p></translation> </message> <message> - <location filename="../WebBrowser/GreaseMonkey/GreaseMonkeyDownloader.py" line="166"/> + <location filename="../Helpviewer/GreaseMonkey/GreaseMonkeyDownloader.py" line="168"/> <source><p><b>{0}</b> is already installed.</p></source> <translation><p><b>{0}</b> уже установлен.</p></translation> </message> </context> <context> + <name>GreaseMonkeyManager</name> + <message> + <location filename="../WebBrowser/GreaseMonkey/GreaseMonkeyManager.py" line="121"/> + <source>Install GreaseMonkey Script</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../WebBrowser/GreaseMonkey/GreaseMonkeyManager.py" line="121"/> + <source>'{0}' is already installed.</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> <name>HelpAppearancePage</name> <message> <location filename="../Preferences/ConfigurationPages/HelpAppearancePage.ui" line="17"/>
--- a/i18n/eric6_tr.ts Tue Apr 25 18:40:46 2017 +0200 +++ b/i18n/eric6_tr.ts Tue Apr 25 19:20:18 2017 +0200 @@ -17111,22 +17111,35 @@ <context> <name>GreaseMonkeyDownloader</name> <message> - <location filename="../WebBrowser/GreaseMonkey/GreaseMonkeyDownloader.py" line="166"/> + <location filename="../Helpviewer/GreaseMonkey/GreaseMonkeyDownloader.py" line="168"/> <source>GreaseMonkey Download</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/GreaseMonkey/GreaseMonkeyDownloader.py" line="122"/> + <location filename="../Helpviewer/GreaseMonkey/GreaseMonkeyDownloader.py" line="123"/> <source><p>The file <b>{0}</b> could not be opened for writing.<br/>Reason: {1}</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/GreaseMonkey/GreaseMonkeyDownloader.py" line="166"/> + <location filename="../Helpviewer/GreaseMonkey/GreaseMonkeyDownloader.py" line="168"/> <source><p><b>{0}</b> is already installed.</p></source> <translation type="unfinished"></translation> </message> </context> <context> + <name>GreaseMonkeyManager</name> + <message> + <location filename="../WebBrowser/GreaseMonkey/GreaseMonkeyManager.py" line="121"/> + <source>Install GreaseMonkey Script</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../WebBrowser/GreaseMonkey/GreaseMonkeyManager.py" line="121"/> + <source>'{0}' is already installed.</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> <name>HelpAppearancePage</name> <message> <location filename="../Preferences/ConfigurationPages/HelpAppearancePage.ui" line="17"/>
--- a/i18n/eric6_zh_CN.ts Tue Apr 25 18:40:46 2017 +0200 +++ b/i18n/eric6_zh_CN.ts Tue Apr 25 19:20:18 2017 +0200 @@ -17151,22 +17151,35 @@ <context> <name>GreaseMonkeyDownloader</name> <message> - <location filename="../WebBrowser/GreaseMonkey/GreaseMonkeyDownloader.py" line="166"/> + <location filename="../Helpviewer/GreaseMonkey/GreaseMonkeyDownloader.py" line="168"/> <source>GreaseMonkey Download</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/GreaseMonkey/GreaseMonkeyDownloader.py" line="122"/> + <location filename="../Helpviewer/GreaseMonkey/GreaseMonkeyDownloader.py" line="123"/> <source><p>The file <b>{0}</b> could not be opened for writing.<br/>Reason: {1}</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/GreaseMonkey/GreaseMonkeyDownloader.py" line="166"/> + <location filename="../Helpviewer/GreaseMonkey/GreaseMonkeyDownloader.py" line="168"/> <source><p><b>{0}</b> is already installed.</p></source> <translation type="unfinished"></translation> </message> </context> <context> + <name>GreaseMonkeyManager</name> + <message> + <location filename="../WebBrowser/GreaseMonkey/GreaseMonkeyManager.py" line="121"/> + <source>Install GreaseMonkey Script</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../WebBrowser/GreaseMonkey/GreaseMonkeyManager.py" line="121"/> + <source>'{0}' is already installed.</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> <name>HelpAppearancePage</name> <message> <location filename="../Preferences/ConfigurationPages/HelpAppearancePage.ui" line="17"/>