Updated the GreaseMonkey handler to better work with QWebEngine as of Qt 5.8.0.

Tue, 25 Apr 2017 19:20:18 +0200

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Tue, 25 Apr 2017 19:20:18 +0200
changeset 5715
cbcca230679f
parent 5714
90c57b50600f
child 5716
27a7c7064686

Updated the GreaseMonkey handler to better work with QWebEngine as of Qt 5.8.0.

APIs/Python3/eric6.api file | annotate | diff | comparison | revisions
Documentation/Help/source.qch file | annotate | diff | comparison | revisions
Documentation/Help/source.qhp file | annotate | diff | comparison | revisions
Documentation/Source/eric6.WebBrowser.GreaseMonkey.GreaseMonkeyDownloader.html file | annotate | diff | comparison | revisions
Documentation/Source/eric6.WebBrowser.GreaseMonkey.GreaseMonkeyManager.html file | annotate | diff | comparison | revisions
Documentation/Source/eric6.WebBrowser.GreaseMonkey.GreaseMonkeyScript.html file | annotate | diff | comparison | revisions
WebBrowser/GreaseMonkey/GreaseMonkeyDownloader.py file | annotate | diff | comparison | revisions
WebBrowser/GreaseMonkey/GreaseMonkeyManager.py file | annotate | diff | comparison | revisions
WebBrowser/GreaseMonkey/GreaseMonkeyScript.py file | annotate | diff | comparison | revisions
i18n/eric6_cs.ts file | annotate | diff | comparison | revisions
i18n/eric6_de.qm file | annotate | diff | comparison | revisions
i18n/eric6_de.ts file | annotate | diff | comparison | revisions
i18n/eric6_empty.ts file | annotate | diff | comparison | revisions
i18n/eric6_en.ts file | annotate | diff | comparison | revisions
i18n/eric6_es.ts file | annotate | diff | comparison | revisions
i18n/eric6_fr.ts file | annotate | diff | comparison | revisions
i18n/eric6_it.ts file | annotate | diff | comparison | revisions
i18n/eric6_pt.ts file | annotate | diff | comparison | revisions
i18n/eric6_ru.ts file | annotate | diff | comparison | revisions
i18n/eric6_tr.ts file | annotate | diff | comparison | revisions
i18n/eric6_zh_CN.ts file | annotate | diff | comparison | revisions
--- 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)
Binary file Documentation/Help/source.qch has changed
--- 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>&lt;p&gt;The file &lt;b&gt;{0}&lt;/b&gt; could not be opened for writing.&lt;br/&gt;Reason: {1}&lt;/p&gt;</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../WebBrowser/GreaseMonkey/GreaseMonkeyDownloader.py" line="166"/>
+        <location filename="../Helpviewer/GreaseMonkey/GreaseMonkeyDownloader.py" line="168"/>
         <source>&lt;p&gt;&lt;b&gt;{0}&lt;/b&gt; is already installed.&lt;/p&gt;</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>&apos;{0}&apos; is already installed.</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
     <name>HelpAppearancePage</name>
     <message>
         <location filename="../Preferences/ConfigurationPages/HelpAppearancePage.ui" line="17"/>
Binary file i18n/eric6_de.qm has changed
--- 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>&lt;p&gt;The file &lt;b&gt;{0}&lt;/b&gt; could not be opened for writing.&lt;br/&gt;Reason: {1}&lt;/p&gt;</source>
         <translation>&lt;p&gt;Die Datei &lt;b&gt;{0}&lt;/b&gt; konnte nicht zum Schreiben geöffnet werden.&lt;br/&gt;Ursache: {1}&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="../WebBrowser/GreaseMonkey/GreaseMonkeyDownloader.py" line="166"/>
+        <location filename="../Helpviewer/GreaseMonkey/GreaseMonkeyDownloader.py" line="168"/>
         <source>&lt;p&gt;&lt;b&gt;{0}&lt;/b&gt; is already installed.&lt;/p&gt;</source>
         <translation>&lt;p&gt;&lt;b&gt;{0}&lt;/b&gt; ist bereits installiert.&lt;/p&gt;</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>&apos;{0}&apos; is already installed.</source>
+        <translation>&apos;{0}&apos; 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>&lt;p&gt;The file &lt;b&gt;{0}&lt;/b&gt; could not be opened for writing.&lt;br/&gt;Reason: {1}&lt;/p&gt;</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../WebBrowser/GreaseMonkey/GreaseMonkeyDownloader.py" line="166"/>
+        <location filename="../Helpviewer/GreaseMonkey/GreaseMonkeyDownloader.py" line="168"/>
         <source>&lt;p&gt;&lt;b&gt;{0}&lt;/b&gt; is already installed.&lt;/p&gt;</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>&apos;{0}&apos; 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>&lt;p&gt;The file &lt;b&gt;{0}&lt;/b&gt; could not be opened for writing.&lt;br/&gt;Reason: {1}&lt;/p&gt;</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../WebBrowser/GreaseMonkey/GreaseMonkeyDownloader.py" line="166"/>
+        <location filename="../Helpviewer/GreaseMonkey/GreaseMonkeyDownloader.py" line="168"/>
         <source>&lt;p&gt;&lt;b&gt;{0}&lt;/b&gt; is already installed.&lt;/p&gt;</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>&apos;{0}&apos; 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>&lt;p&gt;The file &lt;b&gt;{0}&lt;/b&gt; could not be opened for writing.&lt;br/&gt;Reason: {1}&lt;/p&gt;</source>
         <translation>&lt;p&gt;El archivo &lt;b&gt;{0}&lt;/b&gt; no se puede abrir para escritura.&lt;br/&gt;Razón: {1}&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="../WebBrowser/GreaseMonkey/GreaseMonkeyDownloader.py" line="166"/>
+        <location filename="../Helpviewer/GreaseMonkey/GreaseMonkeyDownloader.py" line="168"/>
         <source>&lt;p&gt;&lt;b&gt;{0}&lt;/b&gt; is already installed.&lt;/p&gt;</source>
         <translation>&lt;p&gt;&lt;b&gt;{0}&lt;/b&gt; ya está instalado.&lt;/p&gt;</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>&apos;{0}&apos; 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>&lt;p&gt;The file &lt;b&gt;{0}&lt;/b&gt; could not be opened for writing.&lt;br/&gt;Reason: {1}&lt;/p&gt;</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../WebBrowser/GreaseMonkey/GreaseMonkeyDownloader.py" line="166"/>
+        <location filename="../Helpviewer/GreaseMonkey/GreaseMonkeyDownloader.py" line="168"/>
         <source>&lt;p&gt;&lt;b&gt;{0}&lt;/b&gt; is already installed.&lt;/p&gt;</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>&apos;{0}&apos; 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>&lt;p&gt;The file &lt;b&gt;{0}&lt;/b&gt; could not be opened for writing.&lt;br/&gt;Reason: {1}&lt;/p&gt;</source>
         <translation>&lt;p&gt;Il flusso &lt;b&gt;{0}&lt;/b&gt; non può essere aperto in scrittura.&lt;br/&gt;Causa: {1}&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="../WebBrowser/GreaseMonkey/GreaseMonkeyDownloader.py" line="166"/>
+        <location filename="../Helpviewer/GreaseMonkey/GreaseMonkeyDownloader.py" line="168"/>
         <source>&lt;p&gt;&lt;b&gt;{0}&lt;/b&gt; is already installed.&lt;/p&gt;</source>
         <translation>&lt;p&gt;&lt;b&gt;{0}&lt;/b&gt; è già installato.&lt;/p&gt;</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>&apos;{0}&apos; 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>&lt;p&gt;The file &lt;b&gt;{0}&lt;/b&gt; could not be opened for writing.&lt;br/&gt;Reason: {1}&lt;/p&gt;</source>
         <translation>&lt;p&gt;Não se pôde abrir o ficheiro &lt;b&gt;{0}&lt;/b&gt; para escrever.&lt;br/&gt;Razão: {1}&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="../WebBrowser/GreaseMonkey/GreaseMonkeyDownloader.py" line="166"/>
+        <location filename="../Helpviewer/GreaseMonkey/GreaseMonkeyDownloader.py" line="168"/>
         <source>&lt;p&gt;&lt;b&gt;{0}&lt;/b&gt; is already installed.&lt;/p&gt;</source>
         <translation>&lt;p&gt;&lt;b&gt;{0}&lt;/b&gt; já está instalado.&lt;/p&gt;</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>&apos;{0}&apos; 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>&lt;p&gt;The file &lt;b&gt;{0}&lt;/b&gt; could not be opened for writing.&lt;br/&gt;Reason: {1}&lt;/p&gt;</source>
         <translation>&lt;p&gt;Файл &lt;b&gt;{0}&lt;/b&gt;.Невозможно открыть для записи.&lt;br/&gt;Причина: {1}&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="../WebBrowser/GreaseMonkey/GreaseMonkeyDownloader.py" line="166"/>
+        <location filename="../Helpviewer/GreaseMonkey/GreaseMonkeyDownloader.py" line="168"/>
         <source>&lt;p&gt;&lt;b&gt;{0}&lt;/b&gt; is already installed.&lt;/p&gt;</source>
         <translation>&lt;p&gt;&lt;b&gt;{0}&lt;/b&gt; уже установлен.&lt;/p&gt;</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>&apos;{0}&apos; 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>&lt;p&gt;The file &lt;b&gt;{0}&lt;/b&gt; could not be opened for writing.&lt;br/&gt;Reason: {1}&lt;/p&gt;</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../WebBrowser/GreaseMonkey/GreaseMonkeyDownloader.py" line="166"/>
+        <location filename="../Helpviewer/GreaseMonkey/GreaseMonkeyDownloader.py" line="168"/>
         <source>&lt;p&gt;&lt;b&gt;{0}&lt;/b&gt; is already installed.&lt;/p&gt;</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>&apos;{0}&apos; 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>&lt;p&gt;The file &lt;b&gt;{0}&lt;/b&gt; could not be opened for writing.&lt;br/&gt;Reason: {1}&lt;/p&gt;</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../WebBrowser/GreaseMonkey/GreaseMonkeyDownloader.py" line="166"/>
+        <location filename="../Helpviewer/GreaseMonkey/GreaseMonkeyDownloader.py" line="168"/>
         <source>&lt;p&gt;&lt;b&gt;{0}&lt;/b&gt; is already installed.&lt;/p&gt;</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>&apos;{0}&apos; is already installed.</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
     <name>HelpAppearancePage</name>
     <message>
         <location filename="../Preferences/ConfigurationPages/HelpAppearancePage.ui" line="17"/>

eric ide

mercurial