Added support for AdBlock checksum checking when downloading a subscription to the web browser.

Sun, 12 Aug 2012 12:50:29 +0200

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Sun, 12 Aug 2012 12:50:29 +0200
changeset 1994
84d55b34ba5a
parent 1993
5038ab5ff88f
child 2000
a81bf687e4ee

Added support for AdBlock checksum checking when downloading a subscription to the web browser.

APIs/Python3/eric5.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/eric5.Helpviewer.AdBlock.AdBlockRule.html file | annotate | diff | comparison | revisions
Documentation/Source/eric5.Helpviewer.AdBlock.AdBlockSubscription.html file | annotate | diff | comparison | revisions
Helpviewer/AdBlock/AdBlockRule.py file | annotate | diff | comparison | revisions
Helpviewer/AdBlock/AdBlockSubscription.py file | annotate | diff | comparison | revisions
Helpviewer/AdBlock/AdBlockTreeWidget.py file | annotate | diff | comparison | revisions
changelog file | annotate | diff | comparison | revisions
i18n/eric5_cs.ts file | annotate | diff | comparison | revisions
i18n/eric5_de.qm file | annotate | diff | comparison | revisions
i18n/eric5_de.ts file | annotate | diff | comparison | revisions
i18n/eric5_en.ts file | annotate | diff | comparison | revisions
i18n/eric5_es.ts file | annotate | diff | comparison | revisions
i18n/eric5_fr.ts file | annotate | diff | comparison | revisions
i18n/eric5_it.ts file | annotate | diff | comparison | revisions
i18n/eric5_ru.ts file | annotate | diff | comparison | revisions
i18n/eric5_tr.ts file | annotate | diff | comparison | revisions
i18n/eric5_zh_CN.GB2312.ts file | annotate | diff | comparison | revisions
--- a/APIs/Python3/eric5.api	Thu Aug 09 19:13:46 2012 +0200
+++ b/APIs/Python3/eric5.api	Sun Aug 12 12:50:29 2012 +0200
@@ -1769,6 +1769,7 @@
 eric5.Helpviewer.AdBlock.AdBlockRule.AdBlockRule.isElementHiding?4()
 eric5.Helpviewer.AdBlock.AdBlockRule.AdBlockRule.isEnabled?4()
 eric5.Helpviewer.AdBlock.AdBlockRule.AdBlockRule.isException?4()
+eric5.Helpviewer.AdBlock.AdBlockRule.AdBlockRule.isHeader?4()
 eric5.Helpviewer.AdBlock.AdBlockRule.AdBlockRule.isInternalDisabled?4()
 eric5.Helpviewer.AdBlock.AdBlockRule.AdBlockRule.isSlow?4()
 eric5.Helpviewer.AdBlock.AdBlockRule.AdBlockRule.matchDomain?4(domain)
Binary file Documentation/Help/source.qch has changed
--- a/Documentation/Help/source.qhp	Thu Aug 09 19:13:46 2012 +0200
+++ b/Documentation/Help/source.qhp	Sun Aug 12 12:50:29 2012 +0200
@@ -1150,6 +1150,7 @@
       <keyword name="AdBlockRule.isElementHiding" id="AdBlockRule.isElementHiding" ref="eric5.Helpviewer.AdBlock.AdBlockRule.html#AdBlockRule.isElementHiding" />
       <keyword name="AdBlockRule.isEnabled" id="AdBlockRule.isEnabled" ref="eric5.Helpviewer.AdBlock.AdBlockRule.html#AdBlockRule.isEnabled" />
       <keyword name="AdBlockRule.isException" id="AdBlockRule.isException" ref="eric5.Helpviewer.AdBlock.AdBlockRule.html#AdBlockRule.isException" />
+      <keyword name="AdBlockRule.isHeader" id="AdBlockRule.isHeader" ref="eric5.Helpviewer.AdBlock.AdBlockRule.html#AdBlockRule.isHeader" />
       <keyword name="AdBlockRule.isInternalDisabled" id="AdBlockRule.isInternalDisabled" ref="eric5.Helpviewer.AdBlock.AdBlockRule.html#AdBlockRule.isInternalDisabled" />
       <keyword name="AdBlockRule.isSlow" id="AdBlockRule.isSlow" ref="eric5.Helpviewer.AdBlock.AdBlockRule.html#AdBlockRule.isSlow" />
       <keyword name="AdBlockRule.matchDomain" id="AdBlockRule.matchDomain" ref="eric5.Helpviewer.AdBlock.AdBlockRule.html#AdBlockRule.matchDomain" />
@@ -1170,6 +1171,7 @@
       <keyword name="AdBlockSubscription.__parseUrl" id="AdBlockSubscription.__parseUrl" ref="eric5.Helpviewer.AdBlock.AdBlockSubscription.html#AdBlockSubscription.__parseUrl" />
       <keyword name="AdBlockSubscription.__populateCache" id="AdBlockSubscription.__populateCache" ref="eric5.Helpviewer.AdBlock.AdBlockSubscription.html#AdBlockSubscription.__populateCache" />
       <keyword name="AdBlockSubscription.__rulesDownloaded" id="AdBlockSubscription.__rulesDownloaded" ref="eric5.Helpviewer.AdBlock.AdBlockSubscription.html#AdBlockSubscription.__rulesDownloaded" />
+      <keyword name="AdBlockSubscription.__validateCheckSum" id="AdBlockSubscription.__validateCheckSum" ref="eric5.Helpviewer.AdBlock.AdBlockSubscription.html#AdBlockSubscription.__validateCheckSum" />
       <keyword name="AdBlockSubscription.adBlockDisabledForUrl" id="AdBlockSubscription.adBlockDisabledForUrl" ref="eric5.Helpviewer.AdBlock.AdBlockSubscription.html#AdBlockSubscription.adBlockDisabledForUrl" />
       <keyword name="AdBlockSubscription.addRule" id="AdBlockSubscription.addRule" ref="eric5.Helpviewer.AdBlock.AdBlockSubscription.html#AdBlockSubscription.addRule" />
       <keyword name="AdBlockSubscription.allRules" id="AdBlockSubscription.allRules" ref="eric5.Helpviewer.AdBlock.AdBlockSubscription.html#AdBlockSubscription.allRules" />
--- a/Documentation/Source/eric5.Helpviewer.AdBlock.AdBlockRule.html	Thu Aug 09 19:13:46 2012 +0200
+++ b/Documentation/Source/eric5.Helpviewer.AdBlock.AdBlockRule.html	Sun Aug 12 12:50:29 2012 +0200
@@ -100,6 +100,9 @@
 <td><a href="#AdBlockRule.isException">isException</a></td>
 <td>Public method to check, if the rule defines an exception.</td>
 </tr><tr>
+<td><a href="#AdBlockRule.isHeader">isHeader</a></td>
+<td>Public method to check, if this is a header.</td>
+</tr><tr>
 <td><a href="#AdBlockRule.isInternalDisabled">isInternalDisabled</a></td>
 <td>Public method to check, if this rule was disabled internally.</td>
 </tr><tr>
@@ -272,6 +275,16 @@
 <dd>
 flag indicating an exception (boolean)
 </dd>
+</dl><a NAME="AdBlockRule.isHeader" ID="AdBlockRule.isHeader"></a>
+<h4>AdBlockRule.isHeader</h4>
+<b>isHeader</b>(<i></i>)
+<p>
+        Public method to check, if this is a header.
+</p><dl>
+<dt>Returns:</dt>
+<dd>
+flag indicating a header (boolean)
+</dd>
 </dl><a NAME="AdBlockRule.isInternalDisabled" ID="AdBlockRule.isInternalDisabled"></a>
 <h4>AdBlockRule.isInternalDisabled</h4>
 <b>isInternalDisabled</b>(<i></i>)
--- a/Documentation/Source/eric5.Helpviewer.AdBlock.AdBlockSubscription.html	Thu Aug 09 19:13:46 2012 +0200
+++ b/Documentation/Source/eric5.Helpviewer.AdBlock.AdBlockSubscription.html	Sun Aug 12 12:50:29 2012 +0200
@@ -85,6 +85,9 @@
 <td><a href="#AdBlockSubscription.__rulesDownloaded">__rulesDownloaded</a></td>
 <td>Private slot to deal with the downloaded rules.</td>
 </tr><tr>
+<td><a href="#AdBlockSubscription.__validateCheckSum">__validateCheckSum</a></td>
+<td>Private method to check the subscription file's checksum.</td>
+</tr><tr>
 <td><a href="#AdBlockSubscription.adBlockDisabledForUrl">adBlockDisabledForUrl</a></td>
 <td>Public method to check, if AdBlock is disabled for the given URL.</td>
 </tr><tr>
@@ -212,7 +215,24 @@
 <b>__rulesDownloaded</b>(<i></i>)
 <p>
         Private slot to deal with the downloaded rules.
-</p><a NAME="AdBlockSubscription.adBlockDisabledForUrl" ID="AdBlockSubscription.adBlockDisabledForUrl"></a>
+</p><a NAME="AdBlockSubscription.__validateCheckSum" ID="AdBlockSubscription.__validateCheckSum"></a>
+<h4>AdBlockSubscription.__validateCheckSum</h4>
+<b>__validateCheckSum</b>(<i>fileName</i>)
+<p>
+        Private method to check the subscription file's checksum.
+</p><dl>
+<dt><i>fileName</i></dt>
+<dd>
+name of the file containing the subscription (string)
+</dd>
+</dl><dl>
+<dt>Returns:</dt>
+<dd>
+flag indicating a valid file (boolean). A file is considered
+            valid, if the checksum is OK or the file does not contain a
+            checksum (i.e. cannot be checked).
+</dd>
+</dl><a NAME="AdBlockSubscription.adBlockDisabledForUrl" ID="AdBlockSubscription.adBlockDisabledForUrl"></a>
 <h4>AdBlockSubscription.adBlockDisabledForUrl</h4>
 <b>adBlockDisabledForUrl</b>(<i>url</i>)
 <p>
--- a/Helpviewer/AdBlock/AdBlockRule.py	Thu Aug 09 19:13:46 2012 +0200
+++ b/Helpviewer/AdBlock/AdBlockRule.py	Sun Aug 12 12:50:29 2012 +0200
@@ -118,7 +118,7 @@
         parsedLine = self.__filter
         
         # empty rule or just a comment
-        if not parsedLine.strip() or parsedLine.startswith("!"):
+        if not parsedLine.strip() or parsedLine.startswith(("!", "[Adblock")):
             self.__enabled = False
             return
         
@@ -505,6 +505,14 @@
         """
         return self.__filter.startswith("!")
     
+    def isHeader(self):
+        """
+        Public method to check, if this is a header.
+        
+        @return flag indicating a header (boolean)
+        """
+        return self.__filter.startswith("[Adblock")
+    
     def isSlow(self):
         """
         Public method to check, if this is a slow rule.
--- a/Helpviewer/AdBlock/AdBlockSubscription.py	Thu Aug 09 19:13:46 2012 +0200
+++ b/Helpviewer/AdBlock/AdBlockSubscription.py	Sun Aug 12 12:50:29 2012 +0200
@@ -8,6 +8,9 @@
 """
 
 import os
+import re
+import hashlib
+import base64
 
 from PyQt4.QtCore import pyqtSignal, Qt, QObject, QByteArray, QDateTime, QUrl, \
     QCryptographicHash, QFile, QIODevice, QTextStream
@@ -68,6 +71,10 @@
         self.__documentRules = []
         self.__elemhideRules = []
         
+        self.__checksumRe = re.compile(r"""^\s*!\s*checksum[\s\-:]+([\w\+\/=]+).*\n""",
+            re.IGNORECASE | re.MULTILINE)
+        
+        
         self.__parseUrl(url)
     
     def __parseUrl(self, url):
@@ -244,7 +251,7 @@
                 if not header.startswith("[Adblock"):
                     E5MessageBox.warning(None,
                         self.trUtf8("Load subscription rules"),
-                        self.trUtf8("""Adblock file '{0}' does not start"""
+                        self.trUtf8("""AdBlock file '{0}' does not start"""
                                     """ with [Adblock.""")\
                             .format(fileName))
                     f.close()
@@ -252,11 +259,14 @@
                     self.__lastUpdate = QDateTime()
                 else:
                     self.__rules = []
+                    self.__rules.append(AdBlockRule(header, self))
                     while not textStream.atEnd():
                         line = textStream.readLine()
                         self.__rules.append(AdBlockRule(line, self))
                     self.__populateCache()
                     self.changed.emit()
+        elif not fileName.endswith("_custom"):
+            self.__lastUpdate = QDateTime()
         
         self.checkForUpdate()
     
@@ -317,6 +327,7 @@
             return
         
         fileName = self.rulesFileName()
+        QFile.remove(fileName)
         f = QFile(fileName)
         if not f.open(QIODevice.ReadWrite):
             E5MessageBox.warning(None,
@@ -325,10 +336,59 @@
                     .file(fileName))
             return
         f.write(response)
+        f.close()
         self.__lastUpdate = QDateTime.currentDateTime()
-        self.__loadRules()
+        if self.__validateCheckSum(fileName):
+            self.__loadRules()
+        else:
+            QFile.remove(fileName)
         self.__downloading = None
     
+    def __validateCheckSum(self, fileName):
+        """
+        Private method to check the subscription file's checksum.
+        
+        @param fileName name of the file containing the subscription (string)
+        @return flag indicating a valid file (boolean). A file is considered
+            valid, if the checksum is OK or the file does not contain a
+            checksum (i.e. cannot be checked).
+        """
+        try:
+            f = open(fileName, "r", encoding="utf-8")
+            data = f.read()
+            f.close()
+        except (IOError, OSError):
+            return False
+        
+        match = re.search(self.__checksumRe, data)
+        if match:
+            expectedChecksum = match.group(1)
+        else:
+            # consider it as valid
+            return True
+        
+        # normalize the data
+        data = re.sub(r"\r", "", data)              # normalize eol
+        data = re.sub(r"\n+", "\n", data)           # remove empty lines
+        data = re.sub(self.__checksumRe, "", data)  # remove checksum line
+        
+        # calculate checksum
+        md5 = hashlib.md5()
+        md5.update(data.encode("utf-8"))
+        calculatedChecksum = base64.b64encode(md5.digest()).decode().rstrip("=")
+        if calculatedChecksum == expectedChecksum:
+            return True
+        else:
+            res = E5MessageBox.yesNo(None,
+                self.trUtf8("Downloading subscription rules"),
+                self.trUtf8("""<p>AdBlock subscription <b>{0}</b> has a wrong"""
+                            """ checksum.<br/>"""
+                            """Found: {1}<br/>"""
+                            """Calculated: {2}<br/>"""
+                            """Use it anyway?</p>""")\
+                    .format(self.__title, expectedChecksum, calculatedChecksum))
+            return res
+    
     def saveRules(self):
         """
         Public method to save the subscription rules.
@@ -346,7 +406,8 @@
             return
         
         textStream = QTextStream(f)
-        textStream << "[Adblock Plus 1.1.1]\n"
+        if not self.__rules or not self.__rules[0].isHeader():
+            textStream << "[Adblock Plus 1.1.1]\n"
         for rule in self.__rules:
             textStream << rule.filter() << "\n"
     
--- a/Helpviewer/AdBlock/AdBlockTreeWidget.py	Thu Aug 09 19:13:46 2012 +0200
+++ b/Helpviewer/AdBlock/AdBlockTreeWidget.py	Sun Aug 12 12:50:29 2012 +0200
@@ -234,7 +234,7 @@
             font.setItalic(True)
             itm.setForeground(0, QColor(Qt.gray))
             
-            if not rule.isComment():
+            if not rule.isComment() and not rule.isHeader():
                 itm.setFlags(itm.flags() | Qt.ItemIsUserCheckable)
                 itm.setCheckState(0, Qt.Unchecked)
                 itm.setFont(0, font)
--- a/changelog	Thu Aug 09 19:13:46 2012 +0200
+++ b/changelog	Sun Aug 12 12:50:29 2012 +0200
@@ -25,6 +25,7 @@
   -- rewrote huge part of AdBlock to speed up
   -- added support for dependent AdBlock subscriptions
   -- added support for AdBlock exceptions
+  -- added support for AdBlock checksum checking when downloading a subscription
 
 Version 5.3-snapshot-20120624:
 - bug fixes
--- a/i18n/eric5_cs.ts	Thu Aug 09 19:13:46 2012 +0200
+++ b/i18n/eric5_cs.ts	Sun Aug 12 12:50:29 2012 +0200
@@ -320,45 +320,55 @@
 <context>
     <name>AdBlockSubscription</name>
     <message>
-        <location filename="Helpviewer/AdBlock/AdBlockSubscription.py" line="245"/>
+        <location filename="Helpviewer/AdBlock/AdBlockSubscription.py" line="252"/>
         <source>Load subscription rules</source>
         <translation>Nahrát odebíraná pravidla</translation>
     </message>
     <message>
-        <location filename="Helpviewer/AdBlock/AdBlockSubscription.py" line="322"/>
+        <location filename="Helpviewer/AdBlock/AdBlockSubscription.py" line="382"/>
         <source>Downloading subscription rules</source>
         <translation>Stažení odebíraných pravidel</translation>
     </message>
     <message>
+        <location filename="Helpviewer/AdBlock/AdBlockSubscription.py" line="324"/>
+        <source>Got empty subscription rules.</source>
+        <translation>Odebíraná pravidla jsou prázdná.</translation>
+    </message>
+    <message>
+        <location filename="Helpviewer/AdBlock/AdBlockSubscription.py" line="402"/>
+        <source>Saving subscription rules</source>
+        <translation>Ukládání odebíraných pravidel</translation>
+    </message>
+    <message>
+        <location filename="Helpviewer/AdBlock/AdBlockSubscription.py" line="244"/>
+        <source>Unable to open adblock file &apos;{0}&apos; for reading.</source>
+        <translation>Nelze otevřít adblock soubor &apos;{0}&apos; pro čtení.</translation>
+    </message>
+    <message>
+        <location filename="Helpviewer/AdBlock/AdBlockSubscription.py" line="252"/>
+        <source>Adblock file &apos;{0}&apos; does not start with [Adblock.</source>
+        <translation type="obsolete">Adblock soubor &apos;{0}&apos; nezačíná s [Adblock.</translation>
+    </message>
+    <message>
         <location filename="Helpviewer/AdBlock/AdBlockSubscription.py" line="314"/>
-        <source>Got empty subscription rules.</source>
-        <translation>Odebíraná pravidla jsou prázdná.</translation>
-    </message>
-    <message>
-        <location filename="Helpviewer/AdBlock/AdBlockSubscription.py" line="342"/>
-        <source>Saving subscription rules</source>
-        <translation>Ukládání odebíraných pravidel</translation>
-    </message>
-    <message>
-        <location filename="Helpviewer/AdBlock/AdBlockSubscription.py" line="237"/>
-        <source>Unable to open adblock file &apos;{0}&apos; for reading.</source>
-        <translation>Nelze otevřít adblock soubor &apos;{0}&apos; pro čtení.</translation>
-    </message>
-    <message>
-        <location filename="Helpviewer/AdBlock/AdBlockSubscription.py" line="245"/>
-        <source>Adblock file &apos;{0}&apos; does not start with [Adblock.</source>
-        <translation>Adblock soubor &apos;{0}&apos; nezačíná s [Adblock.</translation>
-    </message>
-    <message>
-        <location filename="Helpviewer/AdBlock/AdBlockSubscription.py" line="304"/>
         <source>&lt;p&gt;Subscription rules could not be downloaded.&lt;/p&gt;&lt;p&gt;Error: {0}&lt;/p&gt;</source>
         <translation>&lt;p&gt;Pravidla pro předplatné nelze stáhnout.&lt;/p&gt;&lt;p&gt;Chyba: {0}&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="Helpviewer/AdBlock/AdBlockSubscription.py" line="342"/>
+        <location filename="Helpviewer/AdBlock/AdBlockSubscription.py" line="402"/>
         <source>Unable to open adblock file &apos;{0}&apos; for writing.</source>
         <translation>Nelze otevřít adblock soubor &apos;{0}&apos; pro zápis.</translation>
     </message>
+    <message>
+        <location filename="Helpviewer/AdBlock/AdBlockSubscription.py" line="252"/>
+        <source>AdBlock file &apos;{0}&apos; does not start with [Adblock.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="Helpviewer/AdBlock/AdBlockSubscription.py" line="382"/>
+        <source>&lt;p&gt;AdBlock subscription &lt;b&gt;{0}&lt;/b&gt; has a wrong checksum.&lt;br/&gt;Found: {1}&lt;br/&gt;Calculated: {2}&lt;br/&gt;Use it anyway?&lt;/p&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>AdBlockTreeWidget</name>
@@ -48007,17 +48017,17 @@
 <context>
     <name>TransplantProjectHelper</name>
     <message>
-        <location filename="Plugins/VcsPlugins/vcsMercurial/TransplantExtension/ProjectHelper.py" line="94"/>
+        <location filename="Plugins/VcsPlugins/vcsMercurial/TransplantExtension/ProjectHelper.py" line="112"/>
         <source>Transplant Changesets</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Plugins/VcsPlugins/vcsMercurial/TransplantExtension/ProjectHelper.py" line="38"/>
+        <location filename="Plugins/VcsPlugins/vcsMercurial/TransplantExtension/ProjectHelper.py" line="52"/>
         <source>Transplant changesets from another branch</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Plugins/VcsPlugins/vcsMercurial/TransplantExtension/ProjectHelper.py" line="41"/>
+        <location filename="Plugins/VcsPlugins/vcsMercurial/TransplantExtension/ProjectHelper.py" line="55"/>
         <source>&lt;b&gt;Transplant Changesets&lt;/b&gt;&lt;p&gt;This transplants changesets from another branch on top of the current working directory with the log of the original changeset.&lt;/p&gt;</source>
         <translation type="unfinished"></translation>
     </message>
@@ -48027,35 +48037,40 @@
         <translation type="obsolete">Pokračovat</translation>
     </message>
     <message>
-        <location filename="Plugins/VcsPlugins/vcsMercurial/TransplantExtension/ProjectHelper.py" line="53"/>
+        <location filename="Plugins/VcsPlugins/vcsMercurial/TransplantExtension/ProjectHelper.py" line="67"/>
         <source>Continue the last transplant session after repair</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Plugins/VcsPlugins/vcsMercurial/TransplantExtension/ProjectHelper.py" line="85"/>
+        <location filename="Plugins/VcsPlugins/vcsMercurial/TransplantExtension/ProjectHelper.py" line="103"/>
         <source>Transplant</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Plugins/VcsPlugins/vcsMercurial/TransplantExtension/ProjectHelper.py" line="108"/>
+        <location filename="Plugins/VcsPlugins/vcsMercurial/TransplantExtension/ProjectHelper.py" line="126"/>
         <source>The project should be reread. Do this now?</source>
         <translation type="unfinished">Projekt bude znovu načten. Má se provést?</translation>
     </message>
     <message>
-        <location filename="Plugins/VcsPlugins/vcsMercurial/TransplantExtension/ProjectHelper.py" line="108"/>
+        <location filename="Plugins/VcsPlugins/vcsMercurial/TransplantExtension/ProjectHelper.py" line="126"/>
         <source>Transplant Changesets (Continue)</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Plugins/VcsPlugins/vcsMercurial/TransplantExtension/ProjectHelper.py" line="49"/>
+        <location filename="Plugins/VcsPlugins/vcsMercurial/TransplantExtension/ProjectHelper.py" line="63"/>
         <source>Continue Transplant Session</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Plugins/VcsPlugins/vcsMercurial/TransplantExtension/ProjectHelper.py" line="56"/>
+        <location filename="Plugins/VcsPlugins/vcsMercurial/TransplantExtension/ProjectHelper.py" line="70"/>
         <source>&lt;b&gt;Continue Transplant Session&lt;/b&gt;&lt;p&gt;This continues the last transplant session after repair.&lt;/p&gt;</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <location filename="Plugins/VcsPlugins/vcsMercurial/TransplantExtension/ProjectHelper.py" line="88"/>
+        <source>Transplant is deprecated</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>TrayStarter</name>
Binary file i18n/eric5_de.qm has changed
--- a/i18n/eric5_de.ts	Thu Aug 09 19:13:46 2012 +0200
+++ b/i18n/eric5_de.ts	Sun Aug 12 12:50:29 2012 +0200
@@ -1,6 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<!DOCTYPE TS>
-<TS version="2.0" language="de">
+<!DOCTYPE TS><TS version="2.0" language="de" sourcelanguage="">
 <context>
     <name>AboutDialog</name>
     <message>
@@ -290,45 +289,50 @@
 <context>
     <name>AdBlockSubscription</name>
     <message>
-        <location filename="Helpviewer/AdBlock/AdBlockSubscription.py" line="245"/>
+        <location filename="Helpviewer/AdBlock/AdBlockSubscription.py" line="252"/>
         <source>Load subscription rules</source>
         <translation>Abonnementregeln laden</translation>
     </message>
     <message>
-        <location filename="Helpviewer/AdBlock/AdBlockSubscription.py" line="237"/>
+        <location filename="Helpviewer/AdBlock/AdBlockSubscription.py" line="244"/>
         <source>Unable to open adblock file &apos;{0}&apos; for reading.</source>
         <translation>Adblock Datei &apos;{0}&apos; konnte nicht zum Lesen geöffnet werden.</translation>
     </message>
     <message>
-        <location filename="Helpviewer/AdBlock/AdBlockSubscription.py" line="245"/>
-        <source>Adblock file &apos;{0}&apos; does not start with [Adblock.</source>
-        <translation>Adblock Datei &apos;{0}&apos; startet nicht mit [Adblock.</translation>
-    </message>
-    <message>
-        <location filename="Helpviewer/AdBlock/AdBlockSubscription.py" line="322"/>
+        <location filename="Helpviewer/AdBlock/AdBlockSubscription.py" line="382"/>
         <source>Downloading subscription rules</source>
         <translation>Lade Abonnementregeln herunter</translation>
     </message>
     <message>
-        <location filename="Helpviewer/AdBlock/AdBlockSubscription.py" line="304"/>
-        <source>&lt;p&gt;Subscription rules could not be downloaded.&lt;/p&gt;&lt;p&gt;Error: {0}&lt;/p&gt;</source>
-        <translation>&lt;p&gt;Abonnementregeln konnten nicht heruntergeladen werden.&lt;/p&gt;&lt;p&gt;Fehler: {0}&lt;/p&gt;</translation>
-    </message>
-    <message>
         <location filename="Helpviewer/AdBlock/AdBlockSubscription.py" line="314"/>
+        <source>&lt;p&gt;Subscription rules could not be downloaded.&lt;/p&gt;&lt;p&gt;Error: {0}&lt;/p&gt;</source>
+        <translation>&lt;p&gt;Abonnementregeln konnten nicht heruntergeladen werden.&lt;/p&gt;&lt;p&gt;Fehler: {0}&lt;/p&gt;</translation>
+    </message>
+    <message>
+        <location filename="Helpviewer/AdBlock/AdBlockSubscription.py" line="324"/>
         <source>Got empty subscription rules.</source>
         <translation>Habe leere Abonnementregeln erhalten.</translation>
     </message>
     <message>
-        <location filename="Helpviewer/AdBlock/AdBlockSubscription.py" line="342"/>
+        <location filename="Helpviewer/AdBlock/AdBlockSubscription.py" line="402"/>
         <source>Unable to open adblock file &apos;{0}&apos; for writing.</source>
         <translation>Adblock Datei &apos;{0}&apos; konnte nicht zum Schreiben geöffnet werden.</translation>
     </message>
     <message>
-        <location filename="Helpviewer/AdBlock/AdBlockSubscription.py" line="342"/>
+        <location filename="Helpviewer/AdBlock/AdBlockSubscription.py" line="402"/>
         <source>Saving subscription rules</source>
         <translation>Speichern der Abonnementregeln</translation>
     </message>
+    <message>
+        <location filename="Helpviewer/AdBlock/AdBlockSubscription.py" line="252"/>
+        <source>AdBlock file &apos;{0}&apos; does not start with [Adblock.</source>
+        <translation>AdBlock Datei &apos;{0}&apos; startet nicht mit [Adblock.</translation>
+    </message>
+    <message>
+        <location filename="Helpviewer/AdBlock/AdBlockSubscription.py" line="382"/>
+        <source>&lt;p&gt;AdBlock subscription &lt;b&gt;{0}&lt;/b&gt; has a wrong checksum.&lt;br/&gt;Found: {1}&lt;br/&gt;Calculated: {2}&lt;br/&gt;Use it anyway?&lt;/p&gt;</source>
+        <translation>&lt;p&gt;AdBlock Abonnement &lt;b&gt;{0}&lt;/b&gt; hat eine falsche Prüfsumme.&lt;br/&gt;Gefunden: {1}&lt;br/&gt;Berechnet: {2}&lt;br/&gt;Trotzdem verwenden?&lt;/p&gt;</translation>
+    </message>
 </context>
 <context>
     <name>AdBlockTreeWidget</name>
@@ -1929,7 +1933,7 @@
     </message>
     <message>
         <location filename="Helpviewer/Bookmarks/BookmarksMenu.py" line="142"/>
-        <source>Open in New &amp;Tab	Ctrl+LMB</source>
+        <source>Open in New &amp;Tab<byte value="x9"/>Ctrl+LMB</source>
         <translation>In neuem &amp;Register öffnen\tStrg+LMK</translation>
     </message>
 </context>
@@ -2166,7 +2170,7 @@
     </message>
     <message>
         <location filename="Helpviewer/Bookmarks/BookmarksToolBar.py" line="90"/>
-        <source>Open in New &amp;Tab	Ctrl+LMB</source>
+        <source>Open in New &amp;Tab<byte value="x9"/>Ctrl+LMB</source>
         <translation>In neuem &amp;Register öffnen\tStrg+LMK</translation>
     </message>
 </context>
@@ -14008,7 +14012,7 @@
     </message>
     <message>
         <location filename="Helpviewer/HelpBrowserWV.py" line="977"/>
-        <source>Open Link in New Tab	Ctrl+LMB</source>
+        <source>Open Link in New Tab<byte value="x9"/>Ctrl+LMB</source>
         <translation>Link in neuem Fenster öffnen\tStrg+LMK</translation>
     </message>
     <message>
@@ -46581,50 +46585,55 @@
 <context>
     <name>TransplantProjectHelper</name>
     <message>
-        <location filename="Plugins/VcsPlugins/vcsMercurial/TransplantExtension/ProjectHelper.py" line="94"/>
+        <location filename="Plugins/VcsPlugins/vcsMercurial/TransplantExtension/ProjectHelper.py" line="112"/>
         <source>Transplant Changesets</source>
         <translation>Änderungssätze transplantieren</translation>
     </message>
     <message>
-        <location filename="Plugins/VcsPlugins/vcsMercurial/TransplantExtension/ProjectHelper.py" line="38"/>
+        <location filename="Plugins/VcsPlugins/vcsMercurial/TransplantExtension/ProjectHelper.py" line="52"/>
         <source>Transplant changesets from another branch</source>
         <translation>Änderungssätze aus einem anderen Zweig transplantieren</translation>
     </message>
     <message>
-        <location filename="Plugins/VcsPlugins/vcsMercurial/TransplantExtension/ProjectHelper.py" line="41"/>
+        <location filename="Plugins/VcsPlugins/vcsMercurial/TransplantExtension/ProjectHelper.py" line="55"/>
         <source>&lt;b&gt;Transplant Changesets&lt;/b&gt;&lt;p&gt;This transplants changesets from another branch on top of the current working directory with the log of the original changeset.&lt;/p&gt;</source>
         <translation>&lt;b&gt;Änderungssätze transplantieren&lt;/b&gt;&lt;p&gt;Dies transplantier Änderungssätze aus einem anderen Zweig mit der Originaländerungsmeldung in das Arbeitsverzeichnis.&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="Plugins/VcsPlugins/vcsMercurial/TransplantExtension/ProjectHelper.py" line="53"/>
+        <location filename="Plugins/VcsPlugins/vcsMercurial/TransplantExtension/ProjectHelper.py" line="67"/>
         <source>Continue the last transplant session after repair</source>
         <translation>Setzt die letzte Transplantationssitzung nach Reparatur fort</translation>
     </message>
     <message>
-        <location filename="Plugins/VcsPlugins/vcsMercurial/TransplantExtension/ProjectHelper.py" line="85"/>
+        <location filename="Plugins/VcsPlugins/vcsMercurial/TransplantExtension/ProjectHelper.py" line="103"/>
         <source>Transplant</source>
         <translation>Transplantation</translation>
     </message>
     <message>
-        <location filename="Plugins/VcsPlugins/vcsMercurial/TransplantExtension/ProjectHelper.py" line="108"/>
+        <location filename="Plugins/VcsPlugins/vcsMercurial/TransplantExtension/ProjectHelper.py" line="126"/>
         <source>The project should be reread. Do this now?</source>
         <translation>Das Projekt sollte neu gelesen werde. Jetzt durchführen?</translation>
     </message>
     <message>
-        <location filename="Plugins/VcsPlugins/vcsMercurial/TransplantExtension/ProjectHelper.py" line="108"/>
+        <location filename="Plugins/VcsPlugins/vcsMercurial/TransplantExtension/ProjectHelper.py" line="126"/>
         <source>Transplant Changesets (Continue)</source>
         <translation>Änderungssätze transplantieren (Fortsetzung)</translation>
     </message>
     <message>
-        <location filename="Plugins/VcsPlugins/vcsMercurial/TransplantExtension/ProjectHelper.py" line="49"/>
+        <location filename="Plugins/VcsPlugins/vcsMercurial/TransplantExtension/ProjectHelper.py" line="63"/>
         <source>Continue Transplant Session</source>
         <translation>Transplantationssitzung fortsetzen</translation>
     </message>
     <message>
-        <location filename="Plugins/VcsPlugins/vcsMercurial/TransplantExtension/ProjectHelper.py" line="56"/>
+        <location filename="Plugins/VcsPlugins/vcsMercurial/TransplantExtension/ProjectHelper.py" line="70"/>
         <source>&lt;b&gt;Continue Transplant Session&lt;/b&gt;&lt;p&gt;This continues the last transplant session after repair.&lt;/p&gt;</source>
         <translation>&lt;b&gt;Transplantationssitzung fortsetzen&lt;/b&gt;&lt;p&gt;Dies setzt die letzte Transplantationssitzung nach Reparatur fort.&lt;/p&gt;</translation>
     </message>
+    <message>
+        <location filename="Plugins/VcsPlugins/vcsMercurial/TransplantExtension/ProjectHelper.py" line="88"/>
+        <source>Transplant is deprecated</source>
+        <translation>Transplant ist überholt</translation>
+    </message>
 </context>
 <context>
     <name>TrayStarter</name>
--- a/i18n/eric5_en.ts	Thu Aug 09 19:13:46 2012 +0200
+++ b/i18n/eric5_en.ts	Sun Aug 12 12:50:29 2012 +0200
@@ -289,45 +289,50 @@
 <context>
     <name>AdBlockSubscription</name>
     <message>
-        <location filename="Helpviewer/AdBlock/AdBlockSubscription.py" line="245"/>
+        <location filename="Helpviewer/AdBlock/AdBlockSubscription.py" line="252"/>
         <source>Load subscription rules</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Helpviewer/AdBlock/AdBlockSubscription.py" line="237"/>
+        <location filename="Helpviewer/AdBlock/AdBlockSubscription.py" line="244"/>
         <source>Unable to open adblock file &apos;{0}&apos; for reading.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Helpviewer/AdBlock/AdBlockSubscription.py" line="245"/>
-        <source>Adblock file &apos;{0}&apos; does not start with [Adblock.</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="Helpviewer/AdBlock/AdBlockSubscription.py" line="322"/>
+        <location filename="Helpviewer/AdBlock/AdBlockSubscription.py" line="382"/>
         <source>Downloading subscription rules</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Helpviewer/AdBlock/AdBlockSubscription.py" line="304"/>
-        <source>&lt;p&gt;Subscription rules could not be downloaded.&lt;/p&gt;&lt;p&gt;Error: {0}&lt;/p&gt;</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <location filename="Helpviewer/AdBlock/AdBlockSubscription.py" line="314"/>
+        <source>&lt;p&gt;Subscription rules could not be downloaded.&lt;/p&gt;&lt;p&gt;Error: {0}&lt;/p&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="Helpviewer/AdBlock/AdBlockSubscription.py" line="324"/>
         <source>Got empty subscription rules.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Helpviewer/AdBlock/AdBlockSubscription.py" line="342"/>
+        <location filename="Helpviewer/AdBlock/AdBlockSubscription.py" line="402"/>
         <source>Unable to open adblock file &apos;{0}&apos; for writing.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Helpviewer/AdBlock/AdBlockSubscription.py" line="342"/>
+        <location filename="Helpviewer/AdBlock/AdBlockSubscription.py" line="402"/>
         <source>Saving subscription rules</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <location filename="Helpviewer/AdBlock/AdBlockSubscription.py" line="252"/>
+        <source>AdBlock file &apos;{0}&apos; does not start with [Adblock.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="Helpviewer/AdBlock/AdBlockSubscription.py" line="382"/>
+        <source>&lt;p&gt;AdBlock subscription &lt;b&gt;{0}&lt;/b&gt; has a wrong checksum.&lt;br/&gt;Found: {1}&lt;br/&gt;Calculated: {2}&lt;br/&gt;Use it anyway?&lt;/p&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>AdBlockTreeWidget</name>
@@ -46124,50 +46129,55 @@
 <context>
     <name>TransplantProjectHelper</name>
     <message>
-        <location filename="Plugins/VcsPlugins/vcsMercurial/TransplantExtension/ProjectHelper.py" line="94"/>
+        <location filename="Plugins/VcsPlugins/vcsMercurial/TransplantExtension/ProjectHelper.py" line="112"/>
         <source>Transplant Changesets</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Plugins/VcsPlugins/vcsMercurial/TransplantExtension/ProjectHelper.py" line="38"/>
+        <location filename="Plugins/VcsPlugins/vcsMercurial/TransplantExtension/ProjectHelper.py" line="52"/>
         <source>Transplant changesets from another branch</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Plugins/VcsPlugins/vcsMercurial/TransplantExtension/ProjectHelper.py" line="41"/>
+        <location filename="Plugins/VcsPlugins/vcsMercurial/TransplantExtension/ProjectHelper.py" line="55"/>
         <source>&lt;b&gt;Transplant Changesets&lt;/b&gt;&lt;p&gt;This transplants changesets from another branch on top of the current working directory with the log of the original changeset.&lt;/p&gt;</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Plugins/VcsPlugins/vcsMercurial/TransplantExtension/ProjectHelper.py" line="53"/>
+        <location filename="Plugins/VcsPlugins/vcsMercurial/TransplantExtension/ProjectHelper.py" line="67"/>
         <source>Continue the last transplant session after repair</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Plugins/VcsPlugins/vcsMercurial/TransplantExtension/ProjectHelper.py" line="85"/>
+        <location filename="Plugins/VcsPlugins/vcsMercurial/TransplantExtension/ProjectHelper.py" line="103"/>
         <source>Transplant</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Plugins/VcsPlugins/vcsMercurial/TransplantExtension/ProjectHelper.py" line="108"/>
+        <location filename="Plugins/VcsPlugins/vcsMercurial/TransplantExtension/ProjectHelper.py" line="126"/>
         <source>The project should be reread. Do this now?</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Plugins/VcsPlugins/vcsMercurial/TransplantExtension/ProjectHelper.py" line="108"/>
+        <location filename="Plugins/VcsPlugins/vcsMercurial/TransplantExtension/ProjectHelper.py" line="126"/>
         <source>Transplant Changesets (Continue)</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Plugins/VcsPlugins/vcsMercurial/TransplantExtension/ProjectHelper.py" line="49"/>
+        <location filename="Plugins/VcsPlugins/vcsMercurial/TransplantExtension/ProjectHelper.py" line="63"/>
         <source>Continue Transplant Session</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Plugins/VcsPlugins/vcsMercurial/TransplantExtension/ProjectHelper.py" line="56"/>
+        <location filename="Plugins/VcsPlugins/vcsMercurial/TransplantExtension/ProjectHelper.py" line="70"/>
         <source>&lt;b&gt;Continue Transplant Session&lt;/b&gt;&lt;p&gt;This continues the last transplant session after repair.&lt;/p&gt;</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <location filename="Plugins/VcsPlugins/vcsMercurial/TransplantExtension/ProjectHelper.py" line="88"/>
+        <source>Transplant is deprecated</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>TrayStarter</name>
--- a/i18n/eric5_es.ts	Thu Aug 09 19:13:46 2012 +0200
+++ b/i18n/eric5_es.ts	Sun Aug 12 12:50:29 2012 +0200
@@ -312,45 +312,55 @@
 <context>
     <name>AdBlockSubscription</name>
     <message>
-        <location filename="Helpviewer/AdBlock/AdBlockSubscription.py" line="245"/>
+        <location filename="Helpviewer/AdBlock/AdBlockSubscription.py" line="252"/>
         <source>Load subscription rules</source>
         <translation>Cargar reglas de la suscripción</translation>
     </message>
     <message>
-        <location filename="Helpviewer/AdBlock/AdBlockSubscription.py" line="322"/>
+        <location filename="Helpviewer/AdBlock/AdBlockSubscription.py" line="382"/>
         <source>Downloading subscription rules</source>
         <translation>Descargando reglas de la suscripción</translation>
     </message>
     <message>
+        <location filename="Helpviewer/AdBlock/AdBlockSubscription.py" line="324"/>
+        <source>Got empty subscription rules.</source>
+        <translation>El conjunto de reglas de suscripción está vacío.</translation>
+    </message>
+    <message>
+        <location filename="Helpviewer/AdBlock/AdBlockSubscription.py" line="402"/>
+        <source>Saving subscription rules</source>
+        <translation>Guardando reglas de la suscripción</translation>
+    </message>
+    <message>
+        <location filename="Helpviewer/AdBlock/AdBlockSubscription.py" line="244"/>
+        <source>Unable to open adblock file &apos;{0}&apos; for reading.</source>
+        <translation>No ha sido posible abrir el archivo de AdBlock &apos;{0}&apos; en modo lectura.</translation>
+    </message>
+    <message>
+        <location filename="Helpviewer/AdBlock/AdBlockSubscription.py" line="252"/>
+        <source>Adblock file &apos;{0}&apos; does not start with [Adblock.</source>
+        <translation type="obsolete">El archivo de AdBlock &apos;{0}&apos; no comienza con [Adblock.</translation>
+    </message>
+    <message>
         <location filename="Helpviewer/AdBlock/AdBlockSubscription.py" line="314"/>
-        <source>Got empty subscription rules.</source>
-        <translation>El conjunto de reglas de suscripción está vacío.</translation>
-    </message>
-    <message>
-        <location filename="Helpviewer/AdBlock/AdBlockSubscription.py" line="342"/>
-        <source>Saving subscription rules</source>
-        <translation>Guardando reglas de la suscripción</translation>
-    </message>
-    <message>
-        <location filename="Helpviewer/AdBlock/AdBlockSubscription.py" line="237"/>
-        <source>Unable to open adblock file &apos;{0}&apos; for reading.</source>
-        <translation>No ha sido posible abrir el archivo de AdBlock &apos;{0}&apos; en modo lectura.</translation>
-    </message>
-    <message>
-        <location filename="Helpviewer/AdBlock/AdBlockSubscription.py" line="245"/>
-        <source>Adblock file &apos;{0}&apos; does not start with [Adblock.</source>
-        <translation>El archivo de AdBlock &apos;{0}&apos; no comienza con [Adblock.</translation>
-    </message>
-    <message>
-        <location filename="Helpviewer/AdBlock/AdBlockSubscription.py" line="304"/>
         <source>&lt;p&gt;Subscription rules could not be downloaded.&lt;/p&gt;&lt;p&gt;Error: {0}&lt;/p&gt;</source>
         <translation>&lt;p&gt;Las reglas de la subscrición no han podido ser descargadas.&lt;/p&gt;&lt;p&gt;Error: {0}&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="Helpviewer/AdBlock/AdBlockSubscription.py" line="342"/>
+        <location filename="Helpviewer/AdBlock/AdBlockSubscription.py" line="402"/>
         <source>Unable to open adblock file &apos;{0}&apos; for writing.</source>
         <translation>No ha sido posible abrir el archivo de AdBlock &apos;{0}&apos; en modo escritura.</translation>
     </message>
+    <message>
+        <location filename="Helpviewer/AdBlock/AdBlockSubscription.py" line="252"/>
+        <source>AdBlock file &apos;{0}&apos; does not start with [Adblock.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="Helpviewer/AdBlock/AdBlockSubscription.py" line="382"/>
+        <source>&lt;p&gt;AdBlock subscription &lt;b&gt;{0}&lt;/b&gt; has a wrong checksum.&lt;br/&gt;Found: {1}&lt;br/&gt;Calculated: {2}&lt;br/&gt;Use it anyway?&lt;/p&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>AdBlockTreeWidget</name>
@@ -46743,50 +46753,55 @@
 <context>
     <name>TransplantProjectHelper</name>
     <message>
-        <location filename="Plugins/VcsPlugins/vcsMercurial/TransplantExtension/ProjectHelper.py" line="94"/>
+        <location filename="Plugins/VcsPlugins/vcsMercurial/TransplantExtension/ProjectHelper.py" line="112"/>
         <source>Transplant Changesets</source>
         <translation>Trasplantar Changesets</translation>
     </message>
     <message>
-        <location filename="Plugins/VcsPlugins/vcsMercurial/TransplantExtension/ProjectHelper.py" line="38"/>
+        <location filename="Plugins/VcsPlugins/vcsMercurial/TransplantExtension/ProjectHelper.py" line="52"/>
         <source>Transplant changesets from another branch</source>
         <translation>Hacer rebase de changesets de otra branch</translation>
     </message>
     <message>
-        <location filename="Plugins/VcsPlugins/vcsMercurial/TransplantExtension/ProjectHelper.py" line="41"/>
+        <location filename="Plugins/VcsPlugins/vcsMercurial/TransplantExtension/ProjectHelper.py" line="55"/>
         <source>&lt;b&gt;Transplant Changesets&lt;/b&gt;&lt;p&gt;This transplants changesets from another branch on top of the current working directory with the log of the original changeset.&lt;/p&gt;</source>
         <translation>&lt;b&gt;Transplantar Changesets&lt;/b&gt;&lt;p&gt;Transplanta changesets de otra branch sobre el directorio de trabajo actual con el log del changeset original.&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="Plugins/VcsPlugins/vcsMercurial/TransplantExtension/ProjectHelper.py" line="53"/>
+        <location filename="Plugins/VcsPlugins/vcsMercurial/TransplantExtension/ProjectHelper.py" line="67"/>
         <source>Continue the last transplant session after repair</source>
         <translation>Continuar la última sesión de trasplante despues de reparar</translation>
     </message>
     <message>
-        <location filename="Plugins/VcsPlugins/vcsMercurial/TransplantExtension/ProjectHelper.py" line="85"/>
+        <location filename="Plugins/VcsPlugins/vcsMercurial/TransplantExtension/ProjectHelper.py" line="103"/>
         <source>Transplant</source>
         <translation>Transplantar</translation>
     </message>
     <message>
-        <location filename="Plugins/VcsPlugins/vcsMercurial/TransplantExtension/ProjectHelper.py" line="108"/>
+        <location filename="Plugins/VcsPlugins/vcsMercurial/TransplantExtension/ProjectHelper.py" line="126"/>
         <source>The project should be reread. Do this now?</source>
         <translation>El proyecto debería ser cargado de nuevo. ¿Desea hacerlo ahora?</translation>
     </message>
     <message>
-        <location filename="Plugins/VcsPlugins/vcsMercurial/TransplantExtension/ProjectHelper.py" line="108"/>
+        <location filename="Plugins/VcsPlugins/vcsMercurial/TransplantExtension/ProjectHelper.py" line="126"/>
         <source>Transplant Changesets (Continue)</source>
         <translation>Trasplantar Changesets (Continuar)</translation>
     </message>
     <message>
-        <location filename="Plugins/VcsPlugins/vcsMercurial/TransplantExtension/ProjectHelper.py" line="49"/>
+        <location filename="Plugins/VcsPlugins/vcsMercurial/TransplantExtension/ProjectHelper.py" line="63"/>
         <source>Continue Transplant Session</source>
         <translation>Continuar Sesión de Trasplantar</translation>
     </message>
     <message>
-        <location filename="Plugins/VcsPlugins/vcsMercurial/TransplantExtension/ProjectHelper.py" line="56"/>
+        <location filename="Plugins/VcsPlugins/vcsMercurial/TransplantExtension/ProjectHelper.py" line="70"/>
         <source>&lt;b&gt;Continue Transplant Session&lt;/b&gt;&lt;p&gt;This continues the last transplant session after repair.&lt;/p&gt;</source>
         <translation>&lt;b&gt;Continuar Sesión de  Transplantar&lt;/b&gt;&lt;p&gt;Continua la ultima sesión de transplantar despues de reparar.&lt;/p&gt;</translation>
     </message>
+    <message>
+        <location filename="Plugins/VcsPlugins/vcsMercurial/TransplantExtension/ProjectHelper.py" line="88"/>
+        <source>Transplant is deprecated</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>TrayStarter</name>
--- a/i18n/eric5_fr.ts	Thu Aug 09 19:13:46 2012 +0200
+++ b/i18n/eric5_fr.ts	Sun Aug 12 12:50:29 2012 +0200
@@ -342,45 +342,50 @@
 <context>
     <name>AdBlockSubscription</name>
     <message>
-        <location filename="Helpviewer/AdBlock/AdBlockSubscription.py" line="245"/>
+        <location filename="Helpviewer/AdBlock/AdBlockSubscription.py" line="252"/>
         <source>Load subscription rules</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Helpviewer/AdBlock/AdBlockSubscription.py" line="322"/>
+        <location filename="Helpviewer/AdBlock/AdBlockSubscription.py" line="382"/>
         <source>Downloading subscription rules</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
+        <location filename="Helpviewer/AdBlock/AdBlockSubscription.py" line="324"/>
+        <source>Got empty subscription rules.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="Helpviewer/AdBlock/AdBlockSubscription.py" line="402"/>
+        <source>Saving subscription rules</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="Helpviewer/AdBlock/AdBlockSubscription.py" line="244"/>
+        <source>Unable to open adblock file &apos;{0}&apos; for reading.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
         <location filename="Helpviewer/AdBlock/AdBlockSubscription.py" line="314"/>
-        <source>Got empty subscription rules.</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="Helpviewer/AdBlock/AdBlockSubscription.py" line="342"/>
-        <source>Saving subscription rules</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="Helpviewer/AdBlock/AdBlockSubscription.py" line="237"/>
-        <source>Unable to open adblock file &apos;{0}&apos; for reading.</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="Helpviewer/AdBlock/AdBlockSubscription.py" line="245"/>
-        <source>Adblock file &apos;{0}&apos; does not start with [Adblock.</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="Helpviewer/AdBlock/AdBlockSubscription.py" line="304"/>
         <source>&lt;p&gt;Subscription rules could not be downloaded.&lt;/p&gt;&lt;p&gt;Error: {0}&lt;/p&gt;</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Helpviewer/AdBlock/AdBlockSubscription.py" line="342"/>
+        <location filename="Helpviewer/AdBlock/AdBlockSubscription.py" line="402"/>
         <source>Unable to open adblock file &apos;{0}&apos; for writing.</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <location filename="Helpviewer/AdBlock/AdBlockSubscription.py" line="252"/>
+        <source>AdBlock file &apos;{0}&apos; does not start with [Adblock.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="Helpviewer/AdBlock/AdBlockSubscription.py" line="382"/>
+        <source>&lt;p&gt;AdBlock subscription &lt;b&gt;{0}&lt;/b&gt; has a wrong checksum.&lt;br/&gt;Found: {1}&lt;br/&gt;Calculated: {2}&lt;br/&gt;Use it anyway?&lt;/p&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>AdBlockTreeWidget</name>
@@ -51192,17 +51197,17 @@
 <context>
     <name>TransplantProjectHelper</name>
     <message>
-        <location filename="Plugins/VcsPlugins/vcsMercurial/TransplantExtension/ProjectHelper.py" line="94"/>
+        <location filename="Plugins/VcsPlugins/vcsMercurial/TransplantExtension/ProjectHelper.py" line="112"/>
         <source>Transplant Changesets</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Plugins/VcsPlugins/vcsMercurial/TransplantExtension/ProjectHelper.py" line="38"/>
+        <location filename="Plugins/VcsPlugins/vcsMercurial/TransplantExtension/ProjectHelper.py" line="52"/>
         <source>Transplant changesets from another branch</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Plugins/VcsPlugins/vcsMercurial/TransplantExtension/ProjectHelper.py" line="41"/>
+        <location filename="Plugins/VcsPlugins/vcsMercurial/TransplantExtension/ProjectHelper.py" line="55"/>
         <source>&lt;b&gt;Transplant Changesets&lt;/b&gt;&lt;p&gt;This transplants changesets from another branch on top of the current working directory with the log of the original changeset.&lt;/p&gt;</source>
         <translation type="unfinished"></translation>
     </message>
@@ -51212,35 +51217,40 @@
         <translation type="obsolete">Continuer</translation>
     </message>
     <message>
-        <location filename="Plugins/VcsPlugins/vcsMercurial/TransplantExtension/ProjectHelper.py" line="53"/>
+        <location filename="Plugins/VcsPlugins/vcsMercurial/TransplantExtension/ProjectHelper.py" line="67"/>
         <source>Continue the last transplant session after repair</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Plugins/VcsPlugins/vcsMercurial/TransplantExtension/ProjectHelper.py" line="85"/>
+        <location filename="Plugins/VcsPlugins/vcsMercurial/TransplantExtension/ProjectHelper.py" line="103"/>
         <source>Transplant</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Plugins/VcsPlugins/vcsMercurial/TransplantExtension/ProjectHelper.py" line="108"/>
+        <location filename="Plugins/VcsPlugins/vcsMercurial/TransplantExtension/ProjectHelper.py" line="126"/>
         <source>The project should be reread. Do this now?</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Plugins/VcsPlugins/vcsMercurial/TransplantExtension/ProjectHelper.py" line="108"/>
+        <location filename="Plugins/VcsPlugins/vcsMercurial/TransplantExtension/ProjectHelper.py" line="126"/>
         <source>Transplant Changesets (Continue)</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Plugins/VcsPlugins/vcsMercurial/TransplantExtension/ProjectHelper.py" line="49"/>
+        <location filename="Plugins/VcsPlugins/vcsMercurial/TransplantExtension/ProjectHelper.py" line="63"/>
         <source>Continue Transplant Session</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Plugins/VcsPlugins/vcsMercurial/TransplantExtension/ProjectHelper.py" line="56"/>
+        <location filename="Plugins/VcsPlugins/vcsMercurial/TransplantExtension/ProjectHelper.py" line="70"/>
         <source>&lt;b&gt;Continue Transplant Session&lt;/b&gt;&lt;p&gt;This continues the last transplant session after repair.&lt;/p&gt;</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <location filename="Plugins/VcsPlugins/vcsMercurial/TransplantExtension/ProjectHelper.py" line="88"/>
+        <source>Transplant is deprecated</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>TrayStarter</name>
--- a/i18n/eric5_it.ts	Thu Aug 09 19:13:46 2012 +0200
+++ b/i18n/eric5_it.ts	Sun Aug 12 12:50:29 2012 +0200
@@ -320,45 +320,55 @@
 <context>
     <name>AdBlockSubscription</name>
     <message>
-        <location filename="Helpviewer/AdBlock/AdBlockSubscription.py" line="245"/>
+        <location filename="Helpviewer/AdBlock/AdBlockSubscription.py" line="252"/>
         <source>Load subscription rules</source>
         <translation>Carica regole di sottoscrizione</translation>
     </message>
     <message>
-        <location filename="Helpviewer/AdBlock/AdBlockSubscription.py" line="322"/>
+        <location filename="Helpviewer/AdBlock/AdBlockSubscription.py" line="382"/>
         <source>Downloading subscription rules</source>
         <translation>Scarica regole di sottoscrizione</translation>
     </message>
     <message>
+        <location filename="Helpviewer/AdBlock/AdBlockSubscription.py" line="324"/>
+        <source>Got empty subscription rules.</source>
+        <translation>Ricevuto regole di sottoscrizione vuote.</translation>
+    </message>
+    <message>
+        <location filename="Helpviewer/AdBlock/AdBlockSubscription.py" line="402"/>
+        <source>Saving subscription rules</source>
+        <translation>Salvataggio regole di sottoscrizione</translation>
+    </message>
+    <message>
+        <location filename="Helpviewer/AdBlock/AdBlockSubscription.py" line="244"/>
+        <source>Unable to open adblock file &apos;{0}&apos; for reading.</source>
+        <translation>Non posso aprire il file adblock &apos;{0}&apos; in lettura.</translation>
+    </message>
+    <message>
+        <location filename="Helpviewer/AdBlock/AdBlockSubscription.py" line="252"/>
+        <source>Adblock file &apos;{0}&apos; does not start with [Adblock.</source>
+        <translation type="obsolete">Il file adblock &apos;{0}&apos; non inizia con [Adblock.</translation>
+    </message>
+    <message>
         <location filename="Helpviewer/AdBlock/AdBlockSubscription.py" line="314"/>
-        <source>Got empty subscription rules.</source>
-        <translation>Ricevuto regole di sottoscrizione vuote.</translation>
-    </message>
-    <message>
-        <location filename="Helpviewer/AdBlock/AdBlockSubscription.py" line="342"/>
-        <source>Saving subscription rules</source>
-        <translation>Salvataggio regole di sottoscrizione</translation>
-    </message>
-    <message>
-        <location filename="Helpviewer/AdBlock/AdBlockSubscription.py" line="237"/>
-        <source>Unable to open adblock file &apos;{0}&apos; for reading.</source>
-        <translation>Non posso aprire il file adblock &apos;{0}&apos; in lettura.</translation>
-    </message>
-    <message>
-        <location filename="Helpviewer/AdBlock/AdBlockSubscription.py" line="245"/>
-        <source>Adblock file &apos;{0}&apos; does not start with [Adblock.</source>
-        <translation>Il file adblock &apos;{0}&apos; non inizia con [Adblock.</translation>
-    </message>
-    <message>
-        <location filename="Helpviewer/AdBlock/AdBlockSubscription.py" line="304"/>
         <source>&lt;p&gt;Subscription rules could not be downloaded.&lt;/p&gt;&lt;p&gt;Error: {0}&lt;/p&gt;</source>
         <translation>&lt;p&gt;Le regole di sottoscrizione non possono essere scaricate.&lt;/p&gt;&lt;p&gt;Errore {0}&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="Helpviewer/AdBlock/AdBlockSubscription.py" line="342"/>
+        <location filename="Helpviewer/AdBlock/AdBlockSubscription.py" line="402"/>
         <source>Unable to open adblock file &apos;{0}&apos; for writing.</source>
         <translation>Non posso aprire il file adblock &apos;{0}&apos; in scrittura.</translation>
     </message>
+    <message>
+        <location filename="Helpviewer/AdBlock/AdBlockSubscription.py" line="252"/>
+        <source>AdBlock file &apos;{0}&apos; does not start with [Adblock.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="Helpviewer/AdBlock/AdBlockSubscription.py" line="382"/>
+        <source>&lt;p&gt;AdBlock subscription &lt;b&gt;{0}&lt;/b&gt; has a wrong checksum.&lt;br/&gt;Found: {1}&lt;br/&gt;Calculated: {2}&lt;br/&gt;Use it anyway?&lt;/p&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>AdBlockTreeWidget</name>
@@ -47696,17 +47706,17 @@
 <context>
     <name>TransplantProjectHelper</name>
     <message>
-        <location filename="Plugins/VcsPlugins/vcsMercurial/TransplantExtension/ProjectHelper.py" line="94"/>
+        <location filename="Plugins/VcsPlugins/vcsMercurial/TransplantExtension/ProjectHelper.py" line="112"/>
         <source>Transplant Changesets</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Plugins/VcsPlugins/vcsMercurial/TransplantExtension/ProjectHelper.py" line="38"/>
+        <location filename="Plugins/VcsPlugins/vcsMercurial/TransplantExtension/ProjectHelper.py" line="52"/>
         <source>Transplant changesets from another branch</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Plugins/VcsPlugins/vcsMercurial/TransplantExtension/ProjectHelper.py" line="41"/>
+        <location filename="Plugins/VcsPlugins/vcsMercurial/TransplantExtension/ProjectHelper.py" line="55"/>
         <source>&lt;b&gt;Transplant Changesets&lt;/b&gt;&lt;p&gt;This transplants changesets from another branch on top of the current working directory with the log of the original changeset.&lt;/p&gt;</source>
         <translation type="unfinished"></translation>
     </message>
@@ -47716,35 +47726,40 @@
         <translation type="obsolete">Continua</translation>
     </message>
     <message>
-        <location filename="Plugins/VcsPlugins/vcsMercurial/TransplantExtension/ProjectHelper.py" line="53"/>
+        <location filename="Plugins/VcsPlugins/vcsMercurial/TransplantExtension/ProjectHelper.py" line="67"/>
         <source>Continue the last transplant session after repair</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Plugins/VcsPlugins/vcsMercurial/TransplantExtension/ProjectHelper.py" line="85"/>
+        <location filename="Plugins/VcsPlugins/vcsMercurial/TransplantExtension/ProjectHelper.py" line="103"/>
         <source>Transplant</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Plugins/VcsPlugins/vcsMercurial/TransplantExtension/ProjectHelper.py" line="108"/>
+        <location filename="Plugins/VcsPlugins/vcsMercurial/TransplantExtension/ProjectHelper.py" line="126"/>
         <source>The project should be reread. Do this now?</source>
         <translation type="unfinished">Il progetto deve essere riletto. Farlo ora ?</translation>
     </message>
     <message>
-        <location filename="Plugins/VcsPlugins/vcsMercurial/TransplantExtension/ProjectHelper.py" line="108"/>
+        <location filename="Plugins/VcsPlugins/vcsMercurial/TransplantExtension/ProjectHelper.py" line="126"/>
         <source>Transplant Changesets (Continue)</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Plugins/VcsPlugins/vcsMercurial/TransplantExtension/ProjectHelper.py" line="49"/>
+        <location filename="Plugins/VcsPlugins/vcsMercurial/TransplantExtension/ProjectHelper.py" line="63"/>
         <source>Continue Transplant Session</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Plugins/VcsPlugins/vcsMercurial/TransplantExtension/ProjectHelper.py" line="56"/>
+        <location filename="Plugins/VcsPlugins/vcsMercurial/TransplantExtension/ProjectHelper.py" line="70"/>
         <source>&lt;b&gt;Continue Transplant Session&lt;/b&gt;&lt;p&gt;This continues the last transplant session after repair.&lt;/p&gt;</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <location filename="Plugins/VcsPlugins/vcsMercurial/TransplantExtension/ProjectHelper.py" line="88"/>
+        <source>Transplant is deprecated</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>TrayStarter</name>
--- a/i18n/eric5_ru.ts	Thu Aug 09 19:13:46 2012 +0200
+++ b/i18n/eric5_ru.ts	Sun Aug 12 12:50:29 2012 +0200
@@ -320,45 +320,55 @@
 <context>
     <name>AdBlockSubscription</name>
     <message>
-        <location filename="Helpviewer/AdBlock/AdBlockSubscription.py" line="245"/>
+        <location filename="Helpviewer/AdBlock/AdBlockSubscription.py" line="252"/>
         <source>Load subscription rules</source>
         <translation>Загрузить правила подписки</translation>
     </message>
     <message>
-        <location filename="Helpviewer/AdBlock/AdBlockSubscription.py" line="237"/>
+        <location filename="Helpviewer/AdBlock/AdBlockSubscription.py" line="244"/>
         <source>Unable to open adblock file &apos;{0}&apos; for reading.</source>
         <translation>Невозможно открыть adblock файл &apos;{0}&apos; для чтения.</translation>
     </message>
     <message>
-        <location filename="Helpviewer/AdBlock/AdBlockSubscription.py" line="245"/>
+        <location filename="Helpviewer/AdBlock/AdBlockSubscription.py" line="252"/>
         <source>Adblock file &apos;{0}&apos; does not start with [Adblock.</source>
-        <translation>Adblock файл &apos;{0}&apos; начинается не с &apos;[Adblock&apos;.</translation>
-    </message>
-    <message>
-        <location filename="Helpviewer/AdBlock/AdBlockSubscription.py" line="322"/>
+        <translation type="obsolete">Adblock файл &apos;{0}&apos; начинается не с &apos;[Adblock&apos;.</translation>
+    </message>
+    <message>
+        <location filename="Helpviewer/AdBlock/AdBlockSubscription.py" line="382"/>
         <source>Downloading subscription rules</source>
         <translation>Загрузка правил подписки</translation>
     </message>
     <message>
-        <location filename="Helpviewer/AdBlock/AdBlockSubscription.py" line="304"/>
-        <source>&lt;p&gt;Subscription rules could not be downloaded.&lt;/p&gt;&lt;p&gt;Error: {0}&lt;/p&gt;</source>
-        <translation>&lt;p&gt;Не могу загрузить правила подписки.&lt;/p&gt;&lt;p&gt;Ошибка: {0}&lt;/p&gt;</translation>
-    </message>
-    <message>
         <location filename="Helpviewer/AdBlock/AdBlockSubscription.py" line="314"/>
+        <source>&lt;p&gt;Subscription rules could not be downloaded.&lt;/p&gt;&lt;p&gt;Error: {0}&lt;/p&gt;</source>
+        <translation>&lt;p&gt;Не могу загрузить правила подписки.&lt;/p&gt;&lt;p&gt;Ошибка: {0}&lt;/p&gt;</translation>
+    </message>
+    <message>
+        <location filename="Helpviewer/AdBlock/AdBlockSubscription.py" line="324"/>
         <source>Got empty subscription rules.</source>
         <translation>Правила подписки пусты.</translation>
     </message>
     <message>
-        <location filename="Helpviewer/AdBlock/AdBlockSubscription.py" line="342"/>
+        <location filename="Helpviewer/AdBlock/AdBlockSubscription.py" line="402"/>
         <source>Unable to open adblock file &apos;{0}&apos; for writing.</source>
         <translation>Невозможно открыть adblock файл &apos;{0}&apos; для записи.</translation>
     </message>
     <message>
-        <location filename="Helpviewer/AdBlock/AdBlockSubscription.py" line="342"/>
+        <location filename="Helpviewer/AdBlock/AdBlockSubscription.py" line="402"/>
         <source>Saving subscription rules</source>
         <translation>Сохранение правил подписки</translation>
     </message>
+    <message>
+        <location filename="Helpviewer/AdBlock/AdBlockSubscription.py" line="252"/>
+        <source>AdBlock file &apos;{0}&apos; does not start with [Adblock.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="Helpviewer/AdBlock/AdBlockSubscription.py" line="382"/>
+        <source>&lt;p&gt;AdBlock subscription &lt;b&gt;{0}&lt;/b&gt; has a wrong checksum.&lt;br/&gt;Found: {1}&lt;br/&gt;Calculated: {2}&lt;br/&gt;Use it anyway?&lt;/p&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>AdBlockTreeWidget</name>
@@ -47797,17 +47807,17 @@
 <context>
     <name>TransplantProjectHelper</name>
     <message>
-        <location filename="Plugins/VcsPlugins/vcsMercurial/TransplantExtension/ProjectHelper.py" line="94"/>
+        <location filename="Plugins/VcsPlugins/vcsMercurial/TransplantExtension/ProjectHelper.py" line="112"/>
         <source>Transplant Changesets</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Plugins/VcsPlugins/vcsMercurial/TransplantExtension/ProjectHelper.py" line="38"/>
+        <location filename="Plugins/VcsPlugins/vcsMercurial/TransplantExtension/ProjectHelper.py" line="52"/>
         <source>Transplant changesets from another branch</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Plugins/VcsPlugins/vcsMercurial/TransplantExtension/ProjectHelper.py" line="41"/>
+        <location filename="Plugins/VcsPlugins/vcsMercurial/TransplantExtension/ProjectHelper.py" line="55"/>
         <source>&lt;b&gt;Transplant Changesets&lt;/b&gt;&lt;p&gt;This transplants changesets from another branch on top of the current working directory with the log of the original changeset.&lt;/p&gt;</source>
         <translation type="unfinished"></translation>
     </message>
@@ -47817,35 +47827,40 @@
         <translation type="obsolete">Продолжить</translation>
     </message>
     <message>
-        <location filename="Plugins/VcsPlugins/vcsMercurial/TransplantExtension/ProjectHelper.py" line="53"/>
+        <location filename="Plugins/VcsPlugins/vcsMercurial/TransplantExtension/ProjectHelper.py" line="67"/>
         <source>Continue the last transplant session after repair</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Plugins/VcsPlugins/vcsMercurial/TransplantExtension/ProjectHelper.py" line="85"/>
+        <location filename="Plugins/VcsPlugins/vcsMercurial/TransplantExtension/ProjectHelper.py" line="103"/>
         <source>Transplant</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Plugins/VcsPlugins/vcsMercurial/TransplantExtension/ProjectHelper.py" line="108"/>
+        <location filename="Plugins/VcsPlugins/vcsMercurial/TransplantExtension/ProjectHelper.py" line="126"/>
         <source>The project should be reread. Do this now?</source>
         <translation type="unfinished">Необходимо перезагрузить проект. Сделать это?</translation>
     </message>
     <message>
-        <location filename="Plugins/VcsPlugins/vcsMercurial/TransplantExtension/ProjectHelper.py" line="108"/>
+        <location filename="Plugins/VcsPlugins/vcsMercurial/TransplantExtension/ProjectHelper.py" line="126"/>
         <source>Transplant Changesets (Continue)</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Plugins/VcsPlugins/vcsMercurial/TransplantExtension/ProjectHelper.py" line="49"/>
+        <location filename="Plugins/VcsPlugins/vcsMercurial/TransplantExtension/ProjectHelper.py" line="63"/>
         <source>Continue Transplant Session</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Plugins/VcsPlugins/vcsMercurial/TransplantExtension/ProjectHelper.py" line="56"/>
+        <location filename="Plugins/VcsPlugins/vcsMercurial/TransplantExtension/ProjectHelper.py" line="70"/>
         <source>&lt;b&gt;Continue Transplant Session&lt;/b&gt;&lt;p&gt;This continues the last transplant session after repair.&lt;/p&gt;</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <location filename="Plugins/VcsPlugins/vcsMercurial/TransplantExtension/ProjectHelper.py" line="88"/>
+        <source>Transplant is deprecated</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>TrayStarter</name>
--- a/i18n/eric5_tr.ts	Thu Aug 09 19:13:46 2012 +0200
+++ b/i18n/eric5_tr.ts	Sun Aug 12 12:50:29 2012 +0200
@@ -320,45 +320,55 @@
 <context>
     <name>AdBlockSubscription</name>
     <message>
-        <location filename="Helpviewer/AdBlock/AdBlockSubscription.py" line="245"/>
+        <location filename="Helpviewer/AdBlock/AdBlockSubscription.py" line="252"/>
         <source>Load subscription rules</source>
         <translation>Üyelik kuralları yükleniyor</translation>
     </message>
     <message>
-        <location filename="Helpviewer/AdBlock/AdBlockSubscription.py" line="237"/>
+        <location filename="Helpviewer/AdBlock/AdBlockSubscription.py" line="244"/>
         <source>Unable to open adblock file &apos;{0}&apos; for reading.</source>
         <translation>&apos;{0}&apos; dosyasına okuma blokesini kaldır.</translation>
     </message>
     <message>
-        <location filename="Helpviewer/AdBlock/AdBlockSubscription.py" line="245"/>
+        <location filename="Helpviewer/AdBlock/AdBlockSubscription.py" line="252"/>
         <source>Adblock file &apos;{0}&apos; does not start with [Adblock.</source>
-        <translation>Block&apos;{0}&apos; dosyası [Adblock ile başlamıyor.</translation>
-    </message>
-    <message>
-        <location filename="Helpviewer/AdBlock/AdBlockSubscription.py" line="322"/>
+        <translation type="obsolete">Block&apos;{0}&apos; dosyası [Adblock ile başlamıyor.</translation>
+    </message>
+    <message>
+        <location filename="Helpviewer/AdBlock/AdBlockSubscription.py" line="382"/>
         <source>Downloading subscription rules</source>
         <translation>Üyelik kuralları indiriliyor</translation>
     </message>
     <message>
-        <location filename="Helpviewer/AdBlock/AdBlockSubscription.py" line="304"/>
-        <source>&lt;p&gt;Subscription rules could not be downloaded.&lt;/p&gt;&lt;p&gt;Error: {0}&lt;/p&gt;</source>
-        <translation>&lt;p&gt;Üyelik kuralları indirilemiyor.&lt;/p&gt;&lt;p&gt;Hatar: {0}&lt;/p&gt;</translation>
-    </message>
-    <message>
         <location filename="Helpviewer/AdBlock/AdBlockSubscription.py" line="314"/>
+        <source>&lt;p&gt;Subscription rules could not be downloaded.&lt;/p&gt;&lt;p&gt;Error: {0}&lt;/p&gt;</source>
+        <translation>&lt;p&gt;Üyelik kuralları indirilemiyor.&lt;/p&gt;&lt;p&gt;Hatar: {0}&lt;/p&gt;</translation>
+    </message>
+    <message>
+        <location filename="Helpviewer/AdBlock/AdBlockSubscription.py" line="324"/>
         <source>Got empty subscription rules.</source>
         <translation>Boş üyelik kuralları alındı.</translation>
     </message>
     <message>
-        <location filename="Helpviewer/AdBlock/AdBlockSubscription.py" line="342"/>
+        <location filename="Helpviewer/AdBlock/AdBlockSubscription.py" line="402"/>
         <source>Unable to open adblock file &apos;{0}&apos; for writing.</source>
         <translation>&apos;{0}&apos; dosyasına yazma blokesini kaldır.</translation>
     </message>
     <message>
-        <location filename="Helpviewer/AdBlock/AdBlockSubscription.py" line="342"/>
+        <location filename="Helpviewer/AdBlock/AdBlockSubscription.py" line="402"/>
         <source>Saving subscription rules</source>
         <translation>Üyelik kurallarını kaydediliyor</translation>
     </message>
+    <message>
+        <location filename="Helpviewer/AdBlock/AdBlockSubscription.py" line="252"/>
+        <source>AdBlock file &apos;{0}&apos; does not start with [Adblock.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="Helpviewer/AdBlock/AdBlockSubscription.py" line="382"/>
+        <source>&lt;p&gt;AdBlock subscription &lt;b&gt;{0}&lt;/b&gt; has a wrong checksum.&lt;br/&gt;Found: {1}&lt;br/&gt;Calculated: {2}&lt;br/&gt;Use it anyway?&lt;/p&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>AdBlockTreeWidget</name>
@@ -47559,17 +47569,17 @@
 <context>
     <name>TransplantProjectHelper</name>
     <message>
-        <location filename="Plugins/VcsPlugins/vcsMercurial/TransplantExtension/ProjectHelper.py" line="94"/>
+        <location filename="Plugins/VcsPlugins/vcsMercurial/TransplantExtension/ProjectHelper.py" line="112"/>
         <source>Transplant Changesets</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Plugins/VcsPlugins/vcsMercurial/TransplantExtension/ProjectHelper.py" line="38"/>
+        <location filename="Plugins/VcsPlugins/vcsMercurial/TransplantExtension/ProjectHelper.py" line="52"/>
         <source>Transplant changesets from another branch</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Plugins/VcsPlugins/vcsMercurial/TransplantExtension/ProjectHelper.py" line="41"/>
+        <location filename="Plugins/VcsPlugins/vcsMercurial/TransplantExtension/ProjectHelper.py" line="55"/>
         <source>&lt;b&gt;Transplant Changesets&lt;/b&gt;&lt;p&gt;This transplants changesets from another branch on top of the current working directory with the log of the original changeset.&lt;/p&gt;</source>
         <translation type="unfinished"></translation>
     </message>
@@ -47579,35 +47589,40 @@
         <translation type="obsolete">Devam et</translation>
     </message>
     <message>
-        <location filename="Plugins/VcsPlugins/vcsMercurial/TransplantExtension/ProjectHelper.py" line="53"/>
+        <location filename="Plugins/VcsPlugins/vcsMercurial/TransplantExtension/ProjectHelper.py" line="67"/>
         <source>Continue the last transplant session after repair</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Plugins/VcsPlugins/vcsMercurial/TransplantExtension/ProjectHelper.py" line="85"/>
+        <location filename="Plugins/VcsPlugins/vcsMercurial/TransplantExtension/ProjectHelper.py" line="103"/>
         <source>Transplant</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Plugins/VcsPlugins/vcsMercurial/TransplantExtension/ProjectHelper.py" line="108"/>
+        <location filename="Plugins/VcsPlugins/vcsMercurial/TransplantExtension/ProjectHelper.py" line="126"/>
         <source>The project should be reread. Do this now?</source>
         <translation type="unfinished">Projenin yeniden okunması gerekiyor. Şimdi yapılsın mı?</translation>
     </message>
     <message>
-        <location filename="Plugins/VcsPlugins/vcsMercurial/TransplantExtension/ProjectHelper.py" line="108"/>
+        <location filename="Plugins/VcsPlugins/vcsMercurial/TransplantExtension/ProjectHelper.py" line="126"/>
         <source>Transplant Changesets (Continue)</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Plugins/VcsPlugins/vcsMercurial/TransplantExtension/ProjectHelper.py" line="49"/>
+        <location filename="Plugins/VcsPlugins/vcsMercurial/TransplantExtension/ProjectHelper.py" line="63"/>
         <source>Continue Transplant Session</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Plugins/VcsPlugins/vcsMercurial/TransplantExtension/ProjectHelper.py" line="56"/>
+        <location filename="Plugins/VcsPlugins/vcsMercurial/TransplantExtension/ProjectHelper.py" line="70"/>
         <source>&lt;b&gt;Continue Transplant Session&lt;/b&gt;&lt;p&gt;This continues the last transplant session after repair.&lt;/p&gt;</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <location filename="Plugins/VcsPlugins/vcsMercurial/TransplantExtension/ProjectHelper.py" line="88"/>
+        <source>Transplant is deprecated</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>TrayStarter</name>
--- a/i18n/eric5_zh_CN.GB2312.ts	Thu Aug 09 19:13:46 2012 +0200
+++ b/i18n/eric5_zh_CN.GB2312.ts	Sun Aug 12 12:50:29 2012 +0200
@@ -342,45 +342,50 @@
 <context>
     <name>AdBlockSubscription</name>
     <message>
-        <location filename="Helpviewer/AdBlock/AdBlockSubscription.py" line="245"/>
+        <location filename="Helpviewer/AdBlock/AdBlockSubscription.py" line="252"/>
         <source>Load subscription rules</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Helpviewer/AdBlock/AdBlockSubscription.py" line="322"/>
+        <location filename="Helpviewer/AdBlock/AdBlockSubscription.py" line="382"/>
         <source>Downloading subscription rules</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
+        <location filename="Helpviewer/AdBlock/AdBlockSubscription.py" line="324"/>
+        <source>Got empty subscription rules.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="Helpviewer/AdBlock/AdBlockSubscription.py" line="402"/>
+        <source>Saving subscription rules</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="Helpviewer/AdBlock/AdBlockSubscription.py" line="244"/>
+        <source>Unable to open adblock file &apos;{0}&apos; for reading.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
         <location filename="Helpviewer/AdBlock/AdBlockSubscription.py" line="314"/>
-        <source>Got empty subscription rules.</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="Helpviewer/AdBlock/AdBlockSubscription.py" line="342"/>
-        <source>Saving subscription rules</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="Helpviewer/AdBlock/AdBlockSubscription.py" line="237"/>
-        <source>Unable to open adblock file &apos;{0}&apos; for reading.</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="Helpviewer/AdBlock/AdBlockSubscription.py" line="245"/>
-        <source>Adblock file &apos;{0}&apos; does not start with [Adblock.</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="Helpviewer/AdBlock/AdBlockSubscription.py" line="304"/>
         <source>&lt;p&gt;Subscription rules could not be downloaded.&lt;/p&gt;&lt;p&gt;Error: {0}&lt;/p&gt;</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Helpviewer/AdBlock/AdBlockSubscription.py" line="342"/>
+        <location filename="Helpviewer/AdBlock/AdBlockSubscription.py" line="402"/>
         <source>Unable to open adblock file &apos;{0}&apos; for writing.</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <location filename="Helpviewer/AdBlock/AdBlockSubscription.py" line="252"/>
+        <source>AdBlock file &apos;{0}&apos; does not start with [Adblock.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="Helpviewer/AdBlock/AdBlockSubscription.py" line="382"/>
+        <source>&lt;p&gt;AdBlock subscription &lt;b&gt;{0}&lt;/b&gt; has a wrong checksum.&lt;br/&gt;Found: {1}&lt;br/&gt;Calculated: {2}&lt;br/&gt;Use it anyway?&lt;/p&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>AdBlockTreeWidget</name>
@@ -51168,17 +51173,17 @@
 <context>
     <name>TransplantProjectHelper</name>
     <message>
-        <location filename="Plugins/VcsPlugins/vcsMercurial/TransplantExtension/ProjectHelper.py" line="94"/>
+        <location filename="Plugins/VcsPlugins/vcsMercurial/TransplantExtension/ProjectHelper.py" line="112"/>
         <source>Transplant Changesets</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Plugins/VcsPlugins/vcsMercurial/TransplantExtension/ProjectHelper.py" line="38"/>
+        <location filename="Plugins/VcsPlugins/vcsMercurial/TransplantExtension/ProjectHelper.py" line="52"/>
         <source>Transplant changesets from another branch</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Plugins/VcsPlugins/vcsMercurial/TransplantExtension/ProjectHelper.py" line="41"/>
+        <location filename="Plugins/VcsPlugins/vcsMercurial/TransplantExtension/ProjectHelper.py" line="55"/>
         <source>&lt;b&gt;Transplant Changesets&lt;/b&gt;&lt;p&gt;This transplants changesets from another branch on top of the current working directory with the log of the original changeset.&lt;/p&gt;</source>
         <translation type="unfinished"></translation>
     </message>
@@ -51188,35 +51193,40 @@
         <translation type="obsolete">继续</translation>
     </message>
     <message>
-        <location filename="Plugins/VcsPlugins/vcsMercurial/TransplantExtension/ProjectHelper.py" line="53"/>
+        <location filename="Plugins/VcsPlugins/vcsMercurial/TransplantExtension/ProjectHelper.py" line="67"/>
         <source>Continue the last transplant session after repair</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Plugins/VcsPlugins/vcsMercurial/TransplantExtension/ProjectHelper.py" line="85"/>
+        <location filename="Plugins/VcsPlugins/vcsMercurial/TransplantExtension/ProjectHelper.py" line="103"/>
         <source>Transplant</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Plugins/VcsPlugins/vcsMercurial/TransplantExtension/ProjectHelper.py" line="108"/>
+        <location filename="Plugins/VcsPlugins/vcsMercurial/TransplantExtension/ProjectHelper.py" line="126"/>
         <source>The project should be reread. Do this now?</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Plugins/VcsPlugins/vcsMercurial/TransplantExtension/ProjectHelper.py" line="108"/>
+        <location filename="Plugins/VcsPlugins/vcsMercurial/TransplantExtension/ProjectHelper.py" line="126"/>
         <source>Transplant Changesets (Continue)</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Plugins/VcsPlugins/vcsMercurial/TransplantExtension/ProjectHelper.py" line="49"/>
+        <location filename="Plugins/VcsPlugins/vcsMercurial/TransplantExtension/ProjectHelper.py" line="63"/>
         <source>Continue Transplant Session</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Plugins/VcsPlugins/vcsMercurial/TransplantExtension/ProjectHelper.py" line="56"/>
+        <location filename="Plugins/VcsPlugins/vcsMercurial/TransplantExtension/ProjectHelper.py" line="70"/>
         <source>&lt;b&gt;Continue Transplant Session&lt;/b&gt;&lt;p&gt;This continues the last transplant session after repair.&lt;/p&gt;</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <location filename="Plugins/VcsPlugins/vcsMercurial/TransplantExtension/ProjectHelper.py" line="88"/>
+        <source>Transplant is deprecated</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>TrayStarter</name>

eric ide

mercurial