Changed the FtpReply to support proxy access and to not show user and password in the URL.

Wed, 19 Sep 2012 20:19:49 +0200

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Wed, 19 Sep 2012 20:19:49 +0200
changeset 2050
585f6646bf50
parent 2048
da2d82f84924
child 2051
644d5a2585a8

Changed the FtpReply to support proxy access and to not show user and password in the URL.

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.Network.FtpAccessHandler.html file | annotate | diff | comparison | revisions
Documentation/Source/eric5.Helpviewer.Network.FtpReply.html file | annotate | diff | comparison | revisions
Helpviewer/Network/FtpAccessHandler.py file | annotate | diff | comparison | revisions
Helpviewer/Network/FtpReply.py file | annotate | diff | comparison | revisions
Helpviewer/Network/NetworkAccessManager.py file | annotate | diff | comparison | revisions
Utilities/FtpUtilities.py file | annotate | diff | comparison | revisions
i18n/eric5_cs.ts 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	Wed Sep 19 18:21:04 2012 +0200
+++ b/APIs/Python3/eric5.api	Wed Sep 19 20:19:49 2012 +0200
@@ -2621,12 +2621,17 @@
 eric5.Helpviewer.Network.FollowRedirectReply.FollowRedirectReply.url?4()
 eric5.Helpviewer.Network.FollowRedirectReply.FollowRedirectReply?1(url, manager, maxRedirects=5)
 eric5.Helpviewer.Network.FtpAccessHandler.FtpAccessHandler.createRequest?4(op, request, outgoingData=None)
+eric5.Helpviewer.Network.FtpAccessHandler.FtpAccessHandler.getAuthenticator?4(realm)
+eric5.Helpviewer.Network.FtpAccessHandler.FtpAccessHandler.getProxyAuthenticator?4()
+eric5.Helpviewer.Network.FtpAccessHandler.FtpAccessHandler.setAuthenticator?4(realm, authenticator)
+eric5.Helpviewer.Network.FtpAccessHandler.FtpAccessHandler.setProxyAuthenticator?4(authenticator)
+eric5.Helpviewer.Network.FtpAccessHandler.FtpAccessHandler?1(parent=None)
 eric5.Helpviewer.Network.FtpReply.FtpReply.Monthnames2Int?7
 eric5.Helpviewer.Network.FtpReply.FtpReply.abort?4()
 eric5.Helpviewer.Network.FtpReply.FtpReply.bytesAvailable?4()
 eric5.Helpviewer.Network.FtpReply.FtpReply.isSequential?4()
 eric5.Helpviewer.Network.FtpReply.FtpReply.readData?4(maxlen)
-eric5.Helpviewer.Network.FtpReply.FtpReply?1(url, parent=None)
+eric5.Helpviewer.Network.FtpReply.FtpReply?1(url, accessHandler, parent=None)
 eric5.Helpviewer.Network.FtpReply.ftpListPage_html?7
 eric5.Helpviewer.Network.NetworkAccessManager.NetworkAccessManager.createRequest?4(op, request, outgoingData=None)
 eric5.Helpviewer.Network.NetworkAccessManager.NetworkAccessManager.languagesChanged?4()
Binary file Documentation/Help/source.qch has changed
--- a/Documentation/Help/source.qhp	Wed Sep 19 18:21:04 2012 +0200
+++ b/Documentation/Help/source.qhp	Wed Sep 19 20:19:49 2012 +0200
@@ -4498,8 +4498,13 @@
       <keyword name="FontDialogWizardDialog.on_eVariable_textChanged" id="FontDialogWizardDialog.on_eVariable_textChanged" ref="eric5.Plugins.WizardPlugins.FontDialogWizard.FontDialogWizardDialog.html#FontDialogWizardDialog.on_eVariable_textChanged" />
       <keyword name="FontDialogWizardDialog.on_fontButton_clicked" id="FontDialogWizardDialog.on_fontButton_clicked" ref="eric5.Plugins.WizardPlugins.FontDialogWizard.FontDialogWizardDialog.html#FontDialogWizardDialog.on_fontButton_clicked" />
       <keyword name="FtpAccessHandler" id="FtpAccessHandler" ref="eric5.Helpviewer.Network.FtpAccessHandler.html#FtpAccessHandler" />
+      <keyword name="FtpAccessHandler (Constructor)" id="FtpAccessHandler (Constructor)" ref="eric5.Helpviewer.Network.FtpAccessHandler.html#FtpAccessHandler.__init__" />
       <keyword name="FtpAccessHandler (Module)" id="FtpAccessHandler (Module)" ref="eric5.Helpviewer.Network.FtpAccessHandler.html" />
       <keyword name="FtpAccessHandler.createRequest" id="FtpAccessHandler.createRequest" ref="eric5.Helpviewer.Network.FtpAccessHandler.html#FtpAccessHandler.createRequest" />
+      <keyword name="FtpAccessHandler.getAuthenticator" id="FtpAccessHandler.getAuthenticator" ref="eric5.Helpviewer.Network.FtpAccessHandler.html#FtpAccessHandler.getAuthenticator" />
+      <keyword name="FtpAccessHandler.getProxyAuthenticator" id="FtpAccessHandler.getProxyAuthenticator" ref="eric5.Helpviewer.Network.FtpAccessHandler.html#FtpAccessHandler.getProxyAuthenticator" />
+      <keyword name="FtpAccessHandler.setAuthenticator" id="FtpAccessHandler.setAuthenticator" ref="eric5.Helpviewer.Network.FtpAccessHandler.html#FtpAccessHandler.setAuthenticator" />
+      <keyword name="FtpAccessHandler.setProxyAuthenticator" id="FtpAccessHandler.setProxyAuthenticator" ref="eric5.Helpviewer.Network.FtpAccessHandler.html#FtpAccessHandler.setProxyAuthenticator" />
       <keyword name="FtpDirLineParser" id="FtpDirLineParser" ref="eric5.Utilities.FtpUtilities.html#FtpDirLineParser" />
       <keyword name="FtpDirLineParser (Constructor)" id="FtpDirLineParser (Constructor)" ref="eric5.Utilities.FtpUtilities.html#FtpDirLineParser.__init__" />
       <keyword name="FtpDirLineParser.__ignoreLine" id="FtpDirLineParser.__ignoreLine" ref="eric5.Utilities.FtpUtilities.html#FtpDirLineParser.__ignoreLine" />
--- a/Documentation/Source/eric5.Helpviewer.Network.FtpAccessHandler.html	Wed Sep 19 18:21:04 2012 +0200
+++ b/Documentation/Source/eric5.Helpviewer.Network.FtpAccessHandler.html	Wed Sep 19 20:19:49 2012 +0200
@@ -58,15 +58,40 @@
 <h3>Methods</h3>
 <table>
 <tr>
+<td><a href="#FtpAccessHandler.__init__">FtpAccessHandler</a></td>
+<td>Constructor</td>
+</tr><tr>
 <td><a href="#FtpAccessHandler.createRequest">createRequest</a></td>
 <td>Protected method to create a request.</td>
+</tr><tr>
+<td><a href="#FtpAccessHandler.getAuthenticator">getAuthenticator</a></td>
+<td>Public method to get an authenticator for the given realm.</td>
+</tr><tr>
+<td><a href="#FtpAccessHandler.getProxyAuthenticator">getProxyAuthenticator</a></td>
+<td>Public method to get the authenticator for the FTP proxy.</td>
+</tr><tr>
+<td><a href="#FtpAccessHandler.setAuthenticator">setAuthenticator</a></td>
+<td>Public method to add or change an authenticator in our cache.</td>
+</tr><tr>
+<td><a href="#FtpAccessHandler.setProxyAuthenticator">setProxyAuthenticator</a></td>
+<td>Public method to add or change the authenticator for the FTP proxy.</td>
 </tr>
 </table>
 <h3>Static Methods</h3>
 <table>
 <tr><td>None</td></tr>
 </table>
-<a NAME="FtpAccessHandler.createRequest" ID="FtpAccessHandler.createRequest"></a>
+<a NAME="FtpAccessHandler.__init__" ID="FtpAccessHandler.__init__"></a>
+<h4>FtpAccessHandler (Constructor)</h4>
+<b>FtpAccessHandler</b>(<i>parent=None</i>)
+<p>
+        Constructor
+</p><dl>
+<dt><i>parent</i></dt>
+<dd>
+reference to the parent object (QObject)
+</dd>
+</dl><a NAME="FtpAccessHandler.createRequest" ID="FtpAccessHandler.createRequest"></a>
 <h4>FtpAccessHandler.createRequest</h4>
 <b>createRequest</b>(<i>op, request, outgoingData=None</i>)
 <p>
@@ -88,6 +113,55 @@
 <dd>
 reference to the created reply object (QNetworkReply)
 </dd>
+</dl><a NAME="FtpAccessHandler.getAuthenticator" ID="FtpAccessHandler.getAuthenticator"></a>
+<h4>FtpAccessHandler.getAuthenticator</h4>
+<b>getAuthenticator</b>(<i>realm</i>)
+<p>
+        Public method to get an authenticator for the given realm.
+</p><dl>
+<dt><i>realm</i></dt>
+<dd>
+name of the realm to get the authenticator for (string)
+</dd>
+</dl><dl>
+<dt>Returns:</dt>
+<dd>
+authenticator for the given realm (QAuthenticator) or None
+</dd>
+</dl><a NAME="FtpAccessHandler.getProxyAuthenticator" ID="FtpAccessHandler.getProxyAuthenticator"></a>
+<h4>FtpAccessHandler.getProxyAuthenticator</h4>
+<b>getProxyAuthenticator</b>(<i></i>)
+<p>
+        Public method to get the authenticator for the FTP proxy.
+</p><dl>
+<dt>Returns:</dt>
+<dd>
+authenticator for the FTP proxy (QAuthenticator)
+</dd>
+</dl><a NAME="FtpAccessHandler.setAuthenticator" ID="FtpAccessHandler.setAuthenticator"></a>
+<h4>FtpAccessHandler.setAuthenticator</h4>
+<b>setAuthenticator</b>(<i>realm, authenticator</i>)
+<p>
+        Public method to add or change an authenticator in our cache.
+</p><dl>
+<dt><i>realm</i></dt>
+<dd>
+name of the realm the authenticator belongs to (string)
+</dd><dt><i>authenticator</i></dt>
+<dd>
+authenticator to add to the cache (QAuthenticator).
+            If it is None, the entry will be deleted from the cache.
+</dd>
+</dl><a NAME="FtpAccessHandler.setProxyAuthenticator" ID="FtpAccessHandler.setProxyAuthenticator"></a>
+<h4>FtpAccessHandler.setProxyAuthenticator</h4>
+<b>setProxyAuthenticator</b>(<i>authenticator</i>)
+<p>
+        Public method to add or change the authenticator for the FTP proxy.
+</p><dl>
+<dt><i>authenticator</i></dt>
+<dd>
+authenticator for the FTP proxy (QAuthenticator)
+</dd>
 </dl>
 <div align="right"><a href="#top">Up</a></div>
 <hr />
--- a/Documentation/Source/eric5.Helpviewer.Network.FtpReply.html	Wed Sep 19 18:21:04 2012 +0200
+++ b/Documentation/Source/eric5.Helpviewer.Network.FtpReply.html	Wed Sep 19 20:19:49 2012 +0200
@@ -101,13 +101,16 @@
 </table>
 <a NAME="FtpReply.__init__" ID="FtpReply.__init__"></a>
 <h4>FtpReply (Constructor)</h4>
-<b>FtpReply</b>(<i>url, parent=None</i>)
+<b>FtpReply</b>(<i>url, accessHandler, parent=None</i>)
 <p>
         Constructor
 </p><dl>
 <dt><i>url</i></dt>
 <dd>
 requested FTP URL (QUrl)
+</dd><dt><i>accessHandler</i></dt>
+<dd>
+reference to the access handler (FtpAccessHandler)
 </dd><dt><i>parent</i></dt>
 <dd>
 reference to the parent object (QObject)
@@ -147,7 +150,7 @@
         Private slot doing the sequence of FTP commands to get the requested result.
 </p><a NAME="FtpReply.__doFtpLogin" ID="FtpReply.__doFtpLogin"></a>
 <h4>FtpReply.__doFtpLogin</h4>
-<b>__doFtpLogin</b>(<i>username, password</i>)
+<b>__doFtpLogin</b>(<i>username, password, byAuth=False</i>)
 <p>
         Private method to do the FTP login with asking for a username and password,
         if the login fails with an error 530.
@@ -158,6 +161,10 @@
 </dd><dt><i>password</i></dt>
 <dd>
 password to use for the login (string)
+</dd><dt><i>byAuth</i></dt>
+<dd>
+flag indicating that the login data was provided by an
+            authenticator (boolean)
 </dd>
 </dl><dl>
 <dt>Returns:</dt>
--- a/Helpviewer/Network/FtpAccessHandler.py	Wed Sep 19 18:21:04 2012 +0200
+++ b/Helpviewer/Network/FtpAccessHandler.py	Wed Sep 19 20:19:49 2012 +0200
@@ -17,6 +17,17 @@
     """
     Class implementing a scheme access handler for FTP.
     """
+    def __init__(self, parent=None):
+        """
+        Constructor
+        
+        @param parent reference to the parent object (QObject)
+        """
+        super().__init__(parent)
+        
+        self.__authenticatorCache = {}
+        self.__proxyAuthenticator = None
+    
     def createRequest(self, op, request, outgoingData=None):
         """
         Protected method to create a request.
@@ -28,6 +39,49 @@
         @return reference to the created reply object (QNetworkReply)
         """
         if op == QNetworkAccessManager.GetOperation:
-            return FtpReply(request.url(), self.parent())
+            return FtpReply(request.url(), self, self.parent())
         else:
             return None
+    
+    def setAuthenticator(self, realm, authenticator):
+        """
+        Public method to add or change an authenticator in our cache.
+        
+        @param realm name of the realm the authenticator belongs to (string)
+        @param authenticator authenticator to add to the cache (QAuthenticator).
+            If it is None, the entry will be deleted from the cache.
+        """
+        if realm:
+            if authenticator:
+                self.__authenticatorCache[realm] = authenticator
+            else:
+                if realm in self.__authenticatorCache:
+                    del self.__authenticatorCache[realm]
+    
+    def getAuthenticator(self, realm):
+        """
+        Public method to get an authenticator for the given realm.
+        
+        @param realm name of the realm to get the authenticator for (string)
+        @return authenticator for the given realm (QAuthenticator) or None
+        """
+        if realm in self.__authenticatorCache:
+            return self.__authenticatorCache[realm]
+        else:
+            return None
+    
+    def setProxyAuthenticator(self, authenticator):
+        """
+        Public method to add or change the authenticator for the FTP proxy.
+        
+        @param authenticator authenticator for the FTP proxy (QAuthenticator)
+        """
+        self.__proxyAuthenticator = authenticator
+    
+    def getProxyAuthenticator(self):
+        """
+        Public method to get the authenticator for the FTP proxy.
+        
+        @return authenticator for the FTP proxy (QAuthenticator)
+        """
+        return self.__proxyAuthenticator
--- a/Helpviewer/Network/FtpReply.py	Wed Sep 19 18:21:04 2012 +0200
+++ b/Helpviewer/Network/FtpReply.py	Wed Sep 19 20:19:49 2012 +0200
@@ -14,15 +14,11 @@
 
 from PyQt4.QtCore import QByteArray, QIODevice, Qt, QUrl, QTimer, QBuffer, \
     QCoreApplication
-from PyQt4.QtGui import QPixmap, QDialog
-from PyQt4.QtNetwork import QNetworkReply, QNetworkRequest
+from PyQt4.QtGui import QPixmap
+from PyQt4.QtNetwork import QNetworkReply, QNetworkRequest, QNetworkProxyQuery, \
+    QNetworkProxy, QAuthenticator
 from PyQt4.QtWebKit import QWebSettings
 
-import Helpviewer.HelpWindow
-
-from UI.AuthenticationDialog import AuthenticationDialog
-
-import Preferences
 import UI.PixmapCache
 from Utilities.FtpUtilities import FtpDirLineParser, FtpDirLineParserError
 
@@ -121,16 +117,18 @@
         "Dec": 12,
     }
     
-    def __init__(self, url, parent=None):
+    def __init__(self, url, accessHandler, parent=None):
         """
         Constructor
         
         @param url requested FTP URL (QUrl)
+        @param accessHandler reference to the access handler (FtpAccessHandler)
         @param parent reference to the parent object (QObject)
         """
         super().__init__(parent)
         
         self.__manager = parent
+        self.__handler = accessHandler
         
         self.__ftp = ftplib.FTP()
         
@@ -143,6 +141,24 @@
             url.setPath("/")
         self.setUrl(url)
         
+        # do proxy setup
+        self.__proxy = None
+        query = QNetworkProxyQuery(url)
+        proxyList = parent.proxyFactory().queryProxy(query)
+        ftpProxy = QNetworkProxy()
+        for proxy in proxyList:
+            if proxy.type() == QNetworkProxy.NoProxy or \
+               proxy.type() == QNetworkProxy.FtpCachingProxy:
+                ftpProxy = proxy
+                break
+        if ftpProxy.type() == QNetworkProxy.DefaultProxy:
+            self.setError(QNetworkReply.ProxyNotFoundError,
+                          self.trUtf8("No suitable proxy found."))
+            QTimer.singleShot(0, self.__errorSignals)
+            return
+        elif ftpProxy.type() == QNetworkProxy.FtpCachingProxy:
+            self.__proxy = ftpProxy
+        
         self.__loggingIn = False
         
         QTimer.singleShot(0, self.__doFtpCommands)
@@ -189,16 +205,31 @@
         """
         retry = True
         try:
+            username = self.url().userName()
+            password = self.url().password()
+            byAuth = False
             while retry:
-                self.__ftp.connect(self.url().host(), self.url().port(ftplib.FTP_PORT),
-                                   timeout=10)
-                ok, retry = self.__doFtpLogin(self.url().userName(), self.url().password())
+                if self.__proxy:
+                    self.__ftp.connect(self.__proxy.hostName(), self.__proxy.port())
+                else:
+                    self.__ftp.connect(
+                        self.url().host(), self.url().port(ftplib.FTP_PORT), timeout=10)
+                ok, retry = self.__doFtpLogin(username, password, byAuth)
+                if not ok and retry:
+                    auth = self.__handler.getAuthenticator(self.url().host())
+                    if auth and not auth.isNull() and auth.user():
+                        username = auth.user()
+                        password = auth.password()
+                        byAuth = True
+                    else:
+                        retry = False
             if ok:
                 self.__ftp.retrlines("LIST " + self.url().path(), self.__dirCallback)
                 if len(self.__items) == 1 and \
                    self.__items[0].isFile():
                     self.__setContent()
-                    self.__ftp.retrbinary("RETR " + self.url().path(), self.__retrCallback)
+                    self.__ftp.retrbinary(
+                        "RETR " + self.url().path(), self.__retrCallback)
                     self.__content.append(512 * b' ')
                     self.readyRead.emit()
                 else:
@@ -215,48 +246,64 @@
             self.error.emit(errCode)
         self.finished.emit()
     
-    def __doFtpLogin(self, username, password):
+    def __doFtpLogin(self, username, password, byAuth=False):
         """
         Private method to do the FTP login with asking for a username and password,
         if the login fails with an error 530.
         
         @param username user name to use for the login (string)
         @param password password to use for the login (string)
+        @param byAuth flag indicating that the login data was provided by an
+            authenticator (boolean)
         @return tuple of two flags indicating a successful login and
             if the login should be retried (boolean, boolean)
         """
+        # 1. do proxy login, if a proxy is used
+        if self.__proxy:
+            try:
+                self.__ftp.login(self.__proxy.user(), self.__proxy.password())
+            except ftplib.error_perm as err:
+                code, msg = err.args[0].split(None, 1)
+                if code.strip() == "530":
+                    auth = QAuthenticator()
+                    auth.setOption("realm", self.__proxy.hostName())
+                    self.__manager.proxyAuthenticationRequired.emit(self.__proxy, auth)
+                    if not auth.isNull() and auth.user():
+                        self.__proxy.setUser(auth.user())
+                        self.__proxy.setPassword(auth.password())
+                        return False, True
+                return False, False
+        
+        # 2. do the real login
         try:
-            self.__ftp.login(username, password)
+            if self.__proxy:
+                loginName = "{0}@{1}".format(username, self.url().host())
+                if self.url().port(ftplib.FTP_PORT) != ftplib.FTP_PORT:
+                    loginName = "{0}:{1}".format(loginName, self.url().port())
+            else:
+                loginName = username
+            self.__ftp.login(loginName, password)
             return True, False
         except ftplib.error_perm as err:
             code, msg = err.args[0].split(None, 1)
             if code.strip() == "530":
                 # error 530 -> Login incorrect
-                urlRoot = "{0}://{1}"\
-                    .format(self.url().scheme(), self.url().authority())
-                info = self.trUtf8("<b>Enter username and password for '{0}'</b>")\
-                    .format(urlRoot)
-                dlg = AuthenticationDialog(info, self.url().userName(),
-                                           Preferences.getUser("SavePasswords"),
-                                           Preferences.getUser("SavePasswords"))
-                if Preferences.getUser("SavePasswords"):
-                    username, password = \
-                        Helpviewer.HelpWindow.HelpWindow.passwordManager().getLogin(
-                            self.url(), "")
-                    if username:
-                        dlg.setData(username, password)
-                if dlg.exec_() == QDialog.Accepted:
-                    username, password = dlg.getData()
-                    if Preferences.getUser("SavePasswords"):
-                        Helpviewer.HelpWindow.HelpWindow.passwordManager().setLogin(
-                            self.url(), "", username, password)
-                    url = self.url()
-                    url.setUserName(username)
-                    url.setPassword(password)
-                    self.setUrl(url)
+                if byAuth:
+                    self.__handler.setAuthenticator(self.url().host(), None)
+                    auth = None
+                else:
+                    auth = self.__handler.getAuthenticator(self.url().host())
+                if not auth or auth.isNull() or not auth.user():
+                    auth = QAuthenticator()
+                    auth.setOption("realm", self.url().host())
+                    self.__manager.authenticationRequired.emit(self, auth)
+                    if not auth.isNull():
+                        if auth.user():
+                            self.__handler.setAuthenticator(self.url().host(), auth)
+                            return False, True
+                    return False, False
+                else:
                     return False, True
-                else:
-                    return False, False
             else:
                 raise
     
--- a/Helpviewer/Network/NetworkAccessManager.py	Wed Sep 19 18:21:04 2012 +0200
+++ b/Helpviewer/Network/NetworkAccessManager.py	Wed Sep 19 20:19:49 2012 +0200
@@ -190,12 +190,15 @@
         """
         urlRoot = "{0}://{1}"\
             .format(reply.url().scheme(), reply.url().authority())
-        if not auth.realm():
+        realm = auth.realm()
+        if not realm and 'realm' in auth.options():
+            realm = auth.option("realm")
+        if realm:
             info = self.trUtf8("<b>Enter username and password for '{0}'</b>")\
                 .format(urlRoot)
         else:
             info = self.trUtf8("<b>Enter username and password for '{0}', "
-                               "realm '{1}'</b>").format(urlRoot, auth.realm())
+                               "realm '{1}'</b>").format(urlRoot, realm)
         
         dlg = AuthenticationDialog(info, auth.user(),
                                    Preferences.getUser("SavePasswords"),
@@ -203,7 +206,7 @@
         if Preferences.getUser("SavePasswords"):
             username, password = \
                 Helpviewer.HelpWindow.HelpWindow.passwordManager().getLogin(
-                    reply.url(), auth.realm())
+                    reply.url(), realm)
             if username:
                 dlg.setData(username, password)
         if dlg.exec_() == QDialog.Accepted:
@@ -212,7 +215,7 @@
             auth.setPassword(password)
             if Preferences.getUser("SavePasswords"):
                 Helpviewer.HelpWindow.HelpWindow.passwordManager().setLogin(
-                    reply.url(), auth.realm(), username, password)
+                    reply.url(), realm, username, password)
     
     def __sslErrors(self, reply, errors):
         """
--- a/Utilities/FtpUtilities.py	Wed Sep 19 18:21:04 2012 +0200
+++ b/Utilities/FtpUtilities.py	Wed Sep 19 20:19:49 2012 +0200
@@ -7,6 +7,8 @@
 Module implementing some FTP related utilities.
 """
 
+import os
+
 from PyQt4.QtCore import QObject, QDate, QDateTime, QTime
 from PyQt4.QtNetwork import QUrlInfo
 
@@ -99,11 +101,15 @@
         if modeString[0] == "d":
             urlInfo.setDir(True)
             urlInfo.setFile(False)
+            urlInfo.setSymLink(False)
         elif modeString[0] == "l":
+            urlInfo.setDir(False)
+            urlInfo.setFile(False)
             urlInfo.setSymLink(True)
         elif modeString[0] == "-":
-            urlInfo.setDir(False)
+            urlInfo.setDir(True)
             urlInfo.setFile(True)
+            urlInfo.setSymLink(False)
     
     def __parseUnixTime(self, monthAbbreviation, day, yearOrTime, urlInfo):
         """
@@ -271,6 +277,16 @@
                 raise FtpDirLineParserError("illegal size '{0}'".format(dirOrSize))
         urlInfo.setName(name)
         
+        ext = os.path.splitext(name.lower())[1]
+        urlInfo.setSymLink(ext == ".lnk")
+        
+        permissions = (QUrlInfo.ReadOwner | QUrlInfo.WriteOwner
+                      | QUrlInfo.ReadGroup | QUrlInfo.WriteGroup
+                      | QUrlInfo.ReadOther | QUrlInfo.WriteOther)
+        if ext in [".exe", ".com", ".bat", ".cmd"]:
+            permissions |= QUrlInfo.ExeOwner | QUrlInfo.ExeGroup | QUrlInfo.ExeOther
+        urlInfo.setPermissions(permissions)
+        
         return urlInfo
     
     def parseLine(self, line):
--- a/i18n/eric5_cs.ts	Wed Sep 19 18:21:04 2012 +0200
+++ b/i18n/eric5_cs.ts	Wed Sep 19 20:19:49 2012 +0200
@@ -13616,31 +13616,36 @@
 <context>
     <name>FtpReply</name>
     <message>
-        <location filename="Helpviewer/Network/FtpReply.py" line="348"/>
+        <location filename="Helpviewer/Network/FtpReply.py" line="395"/>
         <source>  &lt;p&gt;&lt;a class=&quot;link_parent&quot; href=&quot;{0}&quot;&gt;Change to parent directory&lt;/a&gt;&lt;/p&gt;</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Helpviewer/Network/FtpReply.py" line="361"/>
+        <location filename="Helpviewer/Network/FtpReply.py" line="408"/>
         <source>    &lt;tr&gt;&lt;th align=&quot;left&quot;&gt;Name&lt;/th&gt;&lt;th&gt;Size&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;Last modified&lt;/th&gt;&lt;/tr&gt;
 </source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Helpviewer/Network/FtpReply.py" line="387"/>
+        <location filename="Helpviewer/Network/FtpReply.py" line="434"/>
         <source>{0} {1}</source>
         <comment>size unit</comment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Helpviewer/Network/FtpReply.py" line="411"/>
+        <location filename="Helpviewer/Network/FtpReply.py" line="458"/>
         <source>Listing of {0}</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
         <location filename="Helpviewer/Network/FtpReply.py" line="237"/>
         <source>&lt;b&gt;Enter username and password for &apos;{0}&apos;&lt;/b&gt;</source>
-        <translation type="unfinished">&lt;b&gt;Zadejte uživatelské jméno a heslo pro &apos;{0}&apos;&lt;/b&gt;</translation>
+        <translation type="obsolete">&lt;b&gt;Zadejte uživatelské jméno a heslo pro &apos;{0}&apos;&lt;/b&gt;</translation>
+    </message>
+    <message>
+        <location filename="Helpviewer/Network/FtpReply.py" line="155"/>
+        <source>No suitable proxy found.</source>
+        <translation type="unfinished"></translation>
     </message>
 </context>
 <context>
@@ -28132,42 +28137,42 @@
 <context>
     <name>NetworkAccessManager</name>
     <message>
-        <location filename="Helpviewer/Network/NetworkAccessManager.py" line="251"/>
+        <location filename="Helpviewer/Network/NetworkAccessManager.py" line="254"/>
         <source>SSL Errors</source>
         <translation>SSL chyby</translation>
     </message>
     <message>
-        <location filename="Helpviewer/Network/NetworkAccessManager.py" line="264"/>
+        <location filename="Helpviewer/Network/NetworkAccessManager.py" line="267"/>
         <source>Certificates</source>
         <translation>Certifikáty</translation>
     </message>
     <message>
-        <location filename="Helpviewer/Network/NetworkAccessManager.py" line="194"/>
-        <source>&lt;b&gt;Enter username and password for &apos;{0}&apos;&lt;/b&gt;</source>
-        <translation>&lt;b&gt;Zadejte uživatelské jméno a heslo pro &apos;{0}&apos;&lt;/b&gt;</translation>
-    </message>
-    <message>
         <location filename="Helpviewer/Network/NetworkAccessManager.py" line="197"/>
+        <source>&lt;b&gt;Enter username and password for &apos;{0}&apos;&lt;/b&gt;</source>
+        <translation>&lt;b&gt;Zadejte uživatelské jméno a heslo pro &apos;{0}&apos;&lt;/b&gt;</translation>
+    </message>
+    <message>
+        <location filename="Helpviewer/Network/NetworkAccessManager.py" line="200"/>
         <source>&lt;b&gt;Enter username and password for &apos;{0}&apos;, realm &apos;{1}&apos;&lt;/b&gt;</source>
         <translation>&lt;b&gt;Zadejte uživatelské jméno a heslo pro {0}&apos;, realm &apos;{1}&apos;&lt;/b&gt;</translation>
     </message>
     <message>
-        <location filename="Helpviewer/Network/NetworkAccessManager.py" line="251"/>
+        <location filename="Helpviewer/Network/NetworkAccessManager.py" line="254"/>
         <source>&lt;p&gt;SSL Errors for &lt;br /&gt;&lt;b&gt;{0}&lt;/b&gt;&lt;ul&gt;&lt;li&gt;{1}&lt;/li&gt;&lt;/ul&gt;&lt;/p&gt;&lt;p&gt;Do you want to ignore these errors?&lt;/p&gt;</source>
         <translation>&lt;p&gt;SSL chyby pro &lt;br /&gt;&lt;b&gt;{0}&lt;/b&gt;&lt;ul&gt;&lt;li&gt;{1}&lt;/li&gt;&lt;/ul&gt;&lt;/p&gt;&lt;p&gt;Chcete tyto chyby ignorovat?&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="Helpviewer/Network/NetworkAccessManager.py" line="264"/>
+        <location filename="Helpviewer/Network/NetworkAccessManager.py" line="267"/>
         <source>&lt;p&gt;Certificates:&lt;br/&gt;{0}&lt;br/&gt;Do you want to accept all these certificates?&lt;/p&gt;</source>
         <translation>&lt;p&gt;Certifikáty:&lt;br/&gt;{0}&lt;br/&gt;Chcete akceptovat všechny certifikáty?&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="Helpviewer/Network/NetworkAccessManager.py" line="318"/>
+        <location filename="Helpviewer/Network/NetworkAccessManager.py" line="321"/>
         <source>&lt;br/&gt;Issuer: {0}</source>
         <translation>&lt;br/&gt;Vydatavel: {0}</translation>
     </message>
     <message>
-        <location filename="Helpviewer/Network/NetworkAccessManager.py" line="322"/>
+        <location filename="Helpviewer/Network/NetworkAccessManager.py" line="325"/>
         <source>&lt;br/&gt;Not valid before: {0}&lt;br/&gt;Valid Until: {1}</source>
         <translation>&lt;br/&gt;Neplatný před: {0}&lt;br/&gt;Platný do: {1}</translation>
     </message>
@@ -28177,12 +28182,12 @@
         <translation type="obsolete">&lt;br/&gt;Alternativní jména:&lt;ul&gt;&lt;li&gt;{0}&lt;/li&gt;&lt;/ul&gt;</translation>
     </message>
     <message>
-        <location filename="Helpviewer/Network/NetworkAccessManager.py" line="310"/>
+        <location filename="Helpviewer/Network/NetworkAccessManager.py" line="313"/>
         <source>Name: {0}</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Helpviewer/Network/NetworkAccessManager.py" line="314"/>
+        <location filename="Helpviewer/Network/NetworkAccessManager.py" line="317"/>
         <source>&lt;br/&gt;Organization: {0}</source>
         <translation type="unfinished"></translation>
     </message>
--- a/i18n/eric5_de.ts	Wed Sep 19 18:21:04 2012 +0200
+++ b/i18n/eric5_de.ts	Wed Sep 19 20:19:49 2012 +0200
@@ -13283,32 +13283,32 @@
 <context>
     <name>FtpReply</name>
     <message>
-        <location filename="Helpviewer/Network/FtpReply.py" line="348"/>
+        <location filename="Helpviewer/Network/FtpReply.py" line="395"/>
         <source>  &lt;p&gt;&lt;a class=&quot;link_parent&quot; href=&quot;{0}&quot;&gt;Change to parent directory&lt;/a&gt;&lt;/p&gt;</source>
         <translation>  &lt;p&gt;&lt;a class=&quot;link_parent&quot; href=&quot;{0}&quot;&gt;In den übergeordneten Ordner wechseln&lt;/a&gt;&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="Helpviewer/Network/FtpReply.py" line="361"/>
+        <location filename="Helpviewer/Network/FtpReply.py" line="408"/>
         <source>    &lt;tr&gt;&lt;th align=&quot;left&quot;&gt;Name&lt;/th&gt;&lt;th&gt;Size&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;Last modified&lt;/th&gt;&lt;/tr&gt;
 </source>
         <translation>    &lt;tr&gt;&lt;th align=&quot;left&quot;&gt;Name&lt;/th&gt;&lt;th&gt;Größe&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;Zuletzt verändert&lt;/th&gt;&lt;/tr&gt;
 </translation>
     </message>
     <message>
-        <location filename="Helpviewer/Network/FtpReply.py" line="387"/>
+        <location filename="Helpviewer/Network/FtpReply.py" line="434"/>
         <source>{0} {1}</source>
         <comment>size unit</comment>
         <translation>{0} {1}</translation>
     </message>
     <message>
-        <location filename="Helpviewer/Network/FtpReply.py" line="411"/>
+        <location filename="Helpviewer/Network/FtpReply.py" line="458"/>
         <source>Listing of {0}</source>
         <translation>Index von {0}</translation>
     </message>
     <message>
-        <location filename="Helpviewer/Network/FtpReply.py" line="237"/>
-        <source>&lt;b&gt;Enter username and password for &apos;{0}&apos;&lt;/b&gt;</source>
-        <translation>&lt;b&gt;Gib Nutzernamen und Kennwort für &apos;{0}&apos; ein&lt;/b&gt;</translation>
+        <location filename="Helpviewer/Network/FtpReply.py" line="155"/>
+        <source>No suitable proxy found.</source>
+        <translation>Kein geeigneter Proxy gefunden.</translation>
     </message>
 </context>
 <context>
@@ -27092,52 +27092,52 @@
 <context>
     <name>NetworkAccessManager</name>
     <message>
-        <location filename="Helpviewer/Network/NetworkAccessManager.py" line="194"/>
+        <location filename="Helpviewer/Network/NetworkAccessManager.py" line="197"/>
         <source>&lt;b&gt;Enter username and password for &apos;{0}&apos;&lt;/b&gt;</source>
         <translation>&lt;b&gt;Gib Nutzernamen und Kennwort für &apos;{0}&apos; ein&lt;/b&gt;</translation>
     </message>
     <message>
-        <location filename="Helpviewer/Network/NetworkAccessManager.py" line="197"/>
+        <location filename="Helpviewer/Network/NetworkAccessManager.py" line="200"/>
         <source>&lt;b&gt;Enter username and password for &apos;{0}&apos;, realm &apos;{1}&apos;&lt;/b&gt;</source>
         <translation>&lt;b&gt;Gib Nutzernamen und Kennwort für &apos;{0}&apos; und Realm &apos;{1}&apos; ein&lt;/b&gt;</translation>
     </message>
     <message>
-        <location filename="Helpviewer/Network/NetworkAccessManager.py" line="251"/>
+        <location filename="Helpviewer/Network/NetworkAccessManager.py" line="254"/>
         <source>SSL Errors</source>
         <translation>SSL Fehler</translation>
     </message>
     <message>
-        <location filename="Helpviewer/Network/NetworkAccessManager.py" line="251"/>
+        <location filename="Helpviewer/Network/NetworkAccessManager.py" line="254"/>
         <source>&lt;p&gt;SSL Errors for &lt;br /&gt;&lt;b&gt;{0}&lt;/b&gt;&lt;ul&gt;&lt;li&gt;{1}&lt;/li&gt;&lt;/ul&gt;&lt;/p&gt;&lt;p&gt;Do you want to ignore these errors?&lt;/p&gt;</source>
         <translation>&lt;p&gt;SSL Fehler für &lt;br /&gt;&lt;b&gt;{0}&lt;/b&gt;&lt;ul&gt;&lt;li&gt;{1}&lt;/li&gt;&lt;/ul&gt;&lt;/p&gt;&lt;p&gt;Sollen diese Fehler ignoriert werden?&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="Helpviewer/Network/NetworkAccessManager.py" line="264"/>
+        <location filename="Helpviewer/Network/NetworkAccessManager.py" line="267"/>
         <source>Certificates</source>
         <translation>Zertifikate</translation>
     </message>
     <message>
-        <location filename="Helpviewer/Network/NetworkAccessManager.py" line="264"/>
+        <location filename="Helpviewer/Network/NetworkAccessManager.py" line="267"/>
         <source>&lt;p&gt;Certificates:&lt;br/&gt;{0}&lt;br/&gt;Do you want to accept all these certificates?&lt;/p&gt;</source>
         <translation>&lt;p&gt;Zertifikate:&lt;br/&gt;{0}&lt;br/&gt;Sollen alle diese Zertifikate akzeptiert werden?&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="Helpviewer/Network/NetworkAccessManager.py" line="318"/>
+        <location filename="Helpviewer/Network/NetworkAccessManager.py" line="321"/>
         <source>&lt;br/&gt;Issuer: {0}</source>
         <translation>&lt;br/&gt;Aussteller: {0}</translation>
     </message>
     <message>
-        <location filename="Helpviewer/Network/NetworkAccessManager.py" line="322"/>
+        <location filename="Helpviewer/Network/NetworkAccessManager.py" line="325"/>
         <source>&lt;br/&gt;Not valid before: {0}&lt;br/&gt;Valid Until: {1}</source>
         <translation>&lt;br/&gt;Gültig ab: {0}&lt;br/&gt;Gültig bis: {1}</translation>
     </message>
     <message>
-        <location filename="Helpviewer/Network/NetworkAccessManager.py" line="310"/>
+        <location filename="Helpviewer/Network/NetworkAccessManager.py" line="313"/>
         <source>Name: {0}</source>
         <translation>Name: {0}</translation>
     </message>
     <message>
-        <location filename="Helpviewer/Network/NetworkAccessManager.py" line="314"/>
+        <location filename="Helpviewer/Network/NetworkAccessManager.py" line="317"/>
         <source>&lt;br/&gt;Organization: {0}</source>
         <translation>&lt;br/&gt;Organisation: {0}</translation>
     </message>
--- a/i18n/eric5_en.ts	Wed Sep 19 18:21:04 2012 +0200
+++ b/i18n/eric5_en.ts	Wed Sep 19 20:19:49 2012 +0200
@@ -13198,30 +13198,30 @@
 <context>
     <name>FtpReply</name>
     <message>
-        <location filename="Helpviewer/Network/FtpReply.py" line="348"/>
+        <location filename="Helpviewer/Network/FtpReply.py" line="395"/>
         <source>  &lt;p&gt;&lt;a class=&quot;link_parent&quot; href=&quot;{0}&quot;&gt;Change to parent directory&lt;/a&gt;&lt;/p&gt;</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Helpviewer/Network/FtpReply.py" line="361"/>
+        <location filename="Helpviewer/Network/FtpReply.py" line="408"/>
         <source>    &lt;tr&gt;&lt;th align=&quot;left&quot;&gt;Name&lt;/th&gt;&lt;th&gt;Size&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;Last modified&lt;/th&gt;&lt;/tr&gt;
 </source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Helpviewer/Network/FtpReply.py" line="387"/>
+        <location filename="Helpviewer/Network/FtpReply.py" line="434"/>
         <source>{0} {1}</source>
         <comment>size unit</comment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Helpviewer/Network/FtpReply.py" line="411"/>
+        <location filename="Helpviewer/Network/FtpReply.py" line="458"/>
         <source>Listing of {0}</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Helpviewer/Network/FtpReply.py" line="237"/>
-        <source>&lt;b&gt;Enter username and password for &apos;{0}&apos;&lt;/b&gt;</source>
+        <location filename="Helpviewer/Network/FtpReply.py" line="155"/>
+        <source>No suitable proxy found.</source>
         <translation type="unfinished"></translation>
     </message>
 </context>
@@ -26944,52 +26944,52 @@
 <context>
     <name>NetworkAccessManager</name>
     <message>
-        <location filename="Helpviewer/Network/NetworkAccessManager.py" line="194"/>
+        <location filename="Helpviewer/Network/NetworkAccessManager.py" line="197"/>
         <source>&lt;b&gt;Enter username and password for &apos;{0}&apos;&lt;/b&gt;</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Helpviewer/Network/NetworkAccessManager.py" line="197"/>
+        <location filename="Helpviewer/Network/NetworkAccessManager.py" line="200"/>
         <source>&lt;b&gt;Enter username and password for &apos;{0}&apos;, realm &apos;{1}&apos;&lt;/b&gt;</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Helpviewer/Network/NetworkAccessManager.py" line="251"/>
+        <location filename="Helpviewer/Network/NetworkAccessManager.py" line="254"/>
         <source>SSL Errors</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Helpviewer/Network/NetworkAccessManager.py" line="251"/>
+        <location filename="Helpviewer/Network/NetworkAccessManager.py" line="254"/>
         <source>&lt;p&gt;SSL Errors for &lt;br /&gt;&lt;b&gt;{0}&lt;/b&gt;&lt;ul&gt;&lt;li&gt;{1}&lt;/li&gt;&lt;/ul&gt;&lt;/p&gt;&lt;p&gt;Do you want to ignore these errors?&lt;/p&gt;</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Helpviewer/Network/NetworkAccessManager.py" line="264"/>
+        <location filename="Helpviewer/Network/NetworkAccessManager.py" line="267"/>
         <source>Certificates</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Helpviewer/Network/NetworkAccessManager.py" line="264"/>
+        <location filename="Helpviewer/Network/NetworkAccessManager.py" line="267"/>
         <source>&lt;p&gt;Certificates:&lt;br/&gt;{0}&lt;br/&gt;Do you want to accept all these certificates?&lt;/p&gt;</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Helpviewer/Network/NetworkAccessManager.py" line="318"/>
+        <location filename="Helpviewer/Network/NetworkAccessManager.py" line="321"/>
         <source>&lt;br/&gt;Issuer: {0}</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Helpviewer/Network/NetworkAccessManager.py" line="322"/>
+        <location filename="Helpviewer/Network/NetworkAccessManager.py" line="325"/>
         <source>&lt;br/&gt;Not valid before: {0}&lt;br/&gt;Valid Until: {1}</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Helpviewer/Network/NetworkAccessManager.py" line="310"/>
+        <location filename="Helpviewer/Network/NetworkAccessManager.py" line="313"/>
         <source>Name: {0}</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Helpviewer/Network/NetworkAccessManager.py" line="314"/>
+        <location filename="Helpviewer/Network/NetworkAccessManager.py" line="317"/>
         <source>&lt;br/&gt;Organization: {0}</source>
         <translation type="unfinished"></translation>
     </message>
--- a/i18n/eric5_es.ts	Wed Sep 19 18:21:04 2012 +0200
+++ b/i18n/eric5_es.ts	Wed Sep 19 20:19:49 2012 +0200
@@ -13339,37 +13339,37 @@
 <context>
     <name>FtpReply</name>
     <message>
-        <location filename="Helpviewer/Network/FtpReply.py" line="133"/>
+        <location filename="Helpviewer/Network/FtpReply.py" line="155"/>
         <source>No suitable proxy found.</source>
-        <translation type="obsolete">No se ha encontrado ningún proxy adecuado.</translation>
-    </message>
-    <message>
-        <location filename="Helpviewer/Network/FtpReply.py" line="348"/>
+        <translation type="unfinished">No se ha encontrado ningún proxy adecuado.</translation>
+    </message>
+    <message>
+        <location filename="Helpviewer/Network/FtpReply.py" line="395"/>
         <source>  &lt;p&gt;&lt;a class=&quot;link_parent&quot; href=&quot;{0}&quot;&gt;Change to parent directory&lt;/a&gt;&lt;/p&gt;</source>
         <translation>  &lt;p&gt;&lt;a class=&quot;link_parent&quot; href=&quot;{0}&quot;&gt;Cambiar al directorio superior&lt;/a&gt;&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="Helpviewer/Network/FtpReply.py" line="361"/>
+        <location filename="Helpviewer/Network/FtpReply.py" line="408"/>
         <source>    &lt;tr&gt;&lt;th align=&quot;left&quot;&gt;Name&lt;/th&gt;&lt;th&gt;Size&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;Last modified&lt;/th&gt;&lt;/tr&gt;
 </source>
         <translation>    &lt;tr&gt;&lt;th align=&quot;left&quot;&gt;Nombre&lt;/th&gt;&lt;th&gt;Tamaño&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;Última modificación&lt;/th&gt;&lt;/tr&gt;
 </translation>
     </message>
     <message>
-        <location filename="Helpviewer/Network/FtpReply.py" line="387"/>
+        <location filename="Helpviewer/Network/FtpReply.py" line="434"/>
         <source>{0} {1}</source>
         <comment>size unit</comment>
         <translation>{0} {1}</translation>
     </message>
     <message>
-        <location filename="Helpviewer/Network/FtpReply.py" line="411"/>
+        <location filename="Helpviewer/Network/FtpReply.py" line="458"/>
         <source>Listing of {0}</source>
         <translation>Listado de {0}</translation>
     </message>
     <message>
         <location filename="Helpviewer/Network/FtpReply.py" line="237"/>
         <source>&lt;b&gt;Enter username and password for &apos;{0}&apos;&lt;/b&gt;</source>
-        <translation type="unfinished">&lt;b&gt;Introduzca nombre de usuario y contraseña para &apos;{0}&apos;&lt;/b&gt;</translation>
+        <translation type="obsolete">&lt;b&gt;Introduzca nombre de usuario y contraseña para &apos;{0}&apos;&lt;/b&gt;</translation>
     </message>
 </context>
 <context>
@@ -27265,52 +27265,52 @@
 <context>
     <name>NetworkAccessManager</name>
     <message>
-        <location filename="Helpviewer/Network/NetworkAccessManager.py" line="251"/>
+        <location filename="Helpviewer/Network/NetworkAccessManager.py" line="254"/>
         <source>SSL Errors</source>
         <translation>Errores de SSL</translation>
     </message>
     <message>
-        <location filename="Helpviewer/Network/NetworkAccessManager.py" line="264"/>
+        <location filename="Helpviewer/Network/NetworkAccessManager.py" line="267"/>
         <source>Certificates</source>
         <translation>Certificados</translation>
     </message>
     <message>
-        <location filename="Helpviewer/Network/NetworkAccessManager.py" line="194"/>
-        <source>&lt;b&gt;Enter username and password for &apos;{0}&apos;&lt;/b&gt;</source>
-        <translation>&lt;b&gt;Introduzca nombre de usuario y contraseña para &apos;{0}&apos;&lt;/b&gt;</translation>
-    </message>
-    <message>
         <location filename="Helpviewer/Network/NetworkAccessManager.py" line="197"/>
+        <source>&lt;b&gt;Enter username and password for &apos;{0}&apos;&lt;/b&gt;</source>
+        <translation>&lt;b&gt;Introduzca nombre de usuario y contraseña para &apos;{0}&apos;&lt;/b&gt;</translation>
+    </message>
+    <message>
+        <location filename="Helpviewer/Network/NetworkAccessManager.py" line="200"/>
         <source>&lt;b&gt;Enter username and password for &apos;{0}&apos;, realm &apos;{1}&apos;&lt;/b&gt;</source>
         <translation>&lt;b&gt;Introduzca nombre de usuario y contraseña para &apos;{0}&apos;, reino {1}&apos;&lt;/b&gt;</translation>
     </message>
     <message>
-        <location filename="Helpviewer/Network/NetworkAccessManager.py" line="251"/>
+        <location filename="Helpviewer/Network/NetworkAccessManager.py" line="254"/>
         <source>&lt;p&gt;SSL Errors for &lt;br /&gt;&lt;b&gt;{0}&lt;/b&gt;&lt;ul&gt;&lt;li&gt;{1}&lt;/li&gt;&lt;/ul&gt;&lt;/p&gt;&lt;p&gt;Do you want to ignore these errors?&lt;/p&gt;</source>
         <translation>&lt;p&gt;Errores de SSL para &lt;br /&gt;&lt;b&gt;{0}&lt;/b&gt;&lt;ul&gt;&lt;li&gt;{1}&lt;/li&gt;&lt;/ul&gt;&lt;/p&gt;&lt;p&gt;¿Desea ignorar estos errores?&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="Helpviewer/Network/NetworkAccessManager.py" line="264"/>
+        <location filename="Helpviewer/Network/NetworkAccessManager.py" line="267"/>
         <source>&lt;p&gt;Certificates:&lt;br/&gt;{0}&lt;br/&gt;Do you want to accept all these certificates?&lt;/p&gt;</source>
         <translation>&lt;p&gt;Certificados:&lt;br/&gt;{0}&lt;br/&gt;¿Desea aceptar todos estos certificados?&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="Helpviewer/Network/NetworkAccessManager.py" line="318"/>
+        <location filename="Helpviewer/Network/NetworkAccessManager.py" line="321"/>
         <source>&lt;br/&gt;Issuer: {0}</source>
         <translation>&lt;br/&gt;Emisor: {0}</translation>
     </message>
     <message>
-        <location filename="Helpviewer/Network/NetworkAccessManager.py" line="322"/>
+        <location filename="Helpviewer/Network/NetworkAccessManager.py" line="325"/>
         <source>&lt;br/&gt;Not valid before: {0}&lt;br/&gt;Valid Until: {1}</source>
         <translation>&lt;br/&gt;No válido antes de: {0}&lt;br/&gt;Válido Hasta: {1}</translation>
     </message>
     <message>
-        <location filename="Helpviewer/Network/NetworkAccessManager.py" line="310"/>
+        <location filename="Helpviewer/Network/NetworkAccessManager.py" line="313"/>
         <source>Name: {0}</source>
         <translation>Nombre: {0}</translation>
     </message>
     <message>
-        <location filename="Helpviewer/Network/NetworkAccessManager.py" line="314"/>
+        <location filename="Helpviewer/Network/NetworkAccessManager.py" line="317"/>
         <source>&lt;br/&gt;Organization: {0}</source>
         <translation>&lt;br/&gt;Organización: {0}</translation>
     </message>
--- a/i18n/eric5_fr.ts	Wed Sep 19 18:21:04 2012 +0200
+++ b/i18n/eric5_fr.ts	Wed Sep 19 20:19:49 2012 +0200
@@ -14444,30 +14444,30 @@
 <context>
     <name>FtpReply</name>
     <message>
-        <location filename="Helpviewer/Network/FtpReply.py" line="348"/>
+        <location filename="Helpviewer/Network/FtpReply.py" line="395"/>
         <source>  &lt;p&gt;&lt;a class=&quot;link_parent&quot; href=&quot;{0}&quot;&gt;Change to parent directory&lt;/a&gt;&lt;/p&gt;</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Helpviewer/Network/FtpReply.py" line="361"/>
+        <location filename="Helpviewer/Network/FtpReply.py" line="408"/>
         <source>    &lt;tr&gt;&lt;th align=&quot;left&quot;&gt;Name&lt;/th&gt;&lt;th&gt;Size&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;Last modified&lt;/th&gt;&lt;/tr&gt;
 </source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Helpviewer/Network/FtpReply.py" line="387"/>
+        <location filename="Helpviewer/Network/FtpReply.py" line="434"/>
         <source>{0} {1}</source>
         <comment>size unit</comment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Helpviewer/Network/FtpReply.py" line="411"/>
+        <location filename="Helpviewer/Network/FtpReply.py" line="458"/>
         <source>Listing of {0}</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Helpviewer/Network/FtpReply.py" line="237"/>
-        <source>&lt;b&gt;Enter username and password for &apos;{0}&apos;&lt;/b&gt;</source>
+        <location filename="Helpviewer/Network/FtpReply.py" line="155"/>
+        <source>No suitable proxy found.</source>
         <translation type="unfinished"></translation>
     </message>
 </context>
@@ -29389,52 +29389,52 @@
         <translation type="obsolete">&lt;b&gt;Connexion au proxy &apos;%1&apos; en utilisant:&lt;/b&gt;</translation>
     </message>
     <message>
-        <location filename="Helpviewer/Network/NetworkAccessManager.py" line="251"/>
+        <location filename="Helpviewer/Network/NetworkAccessManager.py" line="254"/>
         <source>SSL Errors</source>
         <translation type="unfinished">Erreurs SSL</translation>
     </message>
     <message>
-        <location filename="Helpviewer/Network/NetworkAccessManager.py" line="264"/>
+        <location filename="Helpviewer/Network/NetworkAccessManager.py" line="267"/>
         <source>Certificates</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Helpviewer/Network/NetworkAccessManager.py" line="194"/>
-        <source>&lt;b&gt;Enter username and password for &apos;{0}&apos;&lt;/b&gt;</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <location filename="Helpviewer/Network/NetworkAccessManager.py" line="197"/>
+        <source>&lt;b&gt;Enter username and password for &apos;{0}&apos;&lt;/b&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="Helpviewer/Network/NetworkAccessManager.py" line="200"/>
         <source>&lt;b&gt;Enter username and password for &apos;{0}&apos;, realm &apos;{1}&apos;&lt;/b&gt;</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Helpviewer/Network/NetworkAccessManager.py" line="251"/>
+        <location filename="Helpviewer/Network/NetworkAccessManager.py" line="254"/>
         <source>&lt;p&gt;SSL Errors for &lt;br /&gt;&lt;b&gt;{0}&lt;/b&gt;&lt;ul&gt;&lt;li&gt;{1}&lt;/li&gt;&lt;/ul&gt;&lt;/p&gt;&lt;p&gt;Do you want to ignore these errors?&lt;/p&gt;</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Helpviewer/Network/NetworkAccessManager.py" line="264"/>
+        <location filename="Helpviewer/Network/NetworkAccessManager.py" line="267"/>
         <source>&lt;p&gt;Certificates:&lt;br/&gt;{0}&lt;br/&gt;Do you want to accept all these certificates?&lt;/p&gt;</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Helpviewer/Network/NetworkAccessManager.py" line="318"/>
+        <location filename="Helpviewer/Network/NetworkAccessManager.py" line="321"/>
         <source>&lt;br/&gt;Issuer: {0}</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Helpviewer/Network/NetworkAccessManager.py" line="322"/>
+        <location filename="Helpviewer/Network/NetworkAccessManager.py" line="325"/>
         <source>&lt;br/&gt;Not valid before: {0}&lt;br/&gt;Valid Until: {1}</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Helpviewer/Network/NetworkAccessManager.py" line="310"/>
+        <location filename="Helpviewer/Network/NetworkAccessManager.py" line="313"/>
         <source>Name: {0}</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Helpviewer/Network/NetworkAccessManager.py" line="314"/>
+        <location filename="Helpviewer/Network/NetworkAccessManager.py" line="317"/>
         <source>&lt;br/&gt;Organization: {0}</source>
         <translation type="unfinished"></translation>
     </message>
--- a/i18n/eric5_it.ts	Wed Sep 19 18:21:04 2012 +0200
+++ b/i18n/eric5_it.ts	Wed Sep 19 20:19:49 2012 +0200
@@ -13450,37 +13450,37 @@
 <context>
     <name>FtpReply</name>
     <message>
-        <location filename="Helpviewer/Network/FtpReply.py" line="133"/>
+        <location filename="Helpviewer/Network/FtpReply.py" line="155"/>
         <source>No suitable proxy found.</source>
-        <translation type="obsolete">Nessun proxy utilizzabile trovato.</translation>
-    </message>
-    <message>
-        <location filename="Helpviewer/Network/FtpReply.py" line="348"/>
+        <translation type="unfinished">Nessun proxy utilizzabile trovato.</translation>
+    </message>
+    <message>
+        <location filename="Helpviewer/Network/FtpReply.py" line="395"/>
         <source>  &lt;p&gt;&lt;a class=&quot;link_parent&quot; href=&quot;{0}&quot;&gt;Change to parent directory&lt;/a&gt;&lt;/p&gt;</source>
         <translation>  &lt;p&gt;&lt;a class=&quot;link_parent&quot; href=&quot;{0}&quot;&gt;Cambia alla directory superiore&lt;/a&gt;&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="Helpviewer/Network/FtpReply.py" line="361"/>
+        <location filename="Helpviewer/Network/FtpReply.py" line="408"/>
         <source>    &lt;tr&gt;&lt;th align=&quot;left&quot;&gt;Name&lt;/th&gt;&lt;th&gt;Size&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;Last modified&lt;/th&gt;&lt;/tr&gt;
 </source>
         <translation>    &lt;tr&gt;&lt;th align=&quot;left&quot;&gt;Nome&lt;/th&gt;&lt;th&gt;Dimensione&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;Ultima modifica&lt;/th&gt;&lt;/tr&gt;
 </translation>
     </message>
     <message>
-        <location filename="Helpviewer/Network/FtpReply.py" line="387"/>
+        <location filename="Helpviewer/Network/FtpReply.py" line="434"/>
         <source>{0} {1}</source>
         <comment>size unit</comment>
         <translation>{0} {1}</translation>
     </message>
     <message>
-        <location filename="Helpviewer/Network/FtpReply.py" line="411"/>
+        <location filename="Helpviewer/Network/FtpReply.py" line="458"/>
         <source>Listing of {0}</source>
         <translation>Elenco di {0}</translation>
     </message>
     <message>
         <location filename="Helpviewer/Network/FtpReply.py" line="237"/>
         <source>&lt;b&gt;Enter username and password for &apos;{0}&apos;&lt;/b&gt;</source>
-        <translation type="unfinished">&lt;b&gt;Inserisci utente e password per &apos;{0}&apos;&lt;/b&gt;</translation>
+        <translation type="obsolete">&lt;b&gt;Inserisci utente e password per &apos;{0}&apos;&lt;/b&gt;</translation>
     </message>
 </context>
 <context>
@@ -27748,52 +27748,52 @@
 <context>
     <name>NetworkAccessManager</name>
     <message>
-        <location filename="Helpviewer/Network/NetworkAccessManager.py" line="251"/>
+        <location filename="Helpviewer/Network/NetworkAccessManager.py" line="254"/>
         <source>SSL Errors</source>
         <translation>Errori SSL</translation>
     </message>
     <message>
-        <location filename="Helpviewer/Network/NetworkAccessManager.py" line="264"/>
+        <location filename="Helpviewer/Network/NetworkAccessManager.py" line="267"/>
         <source>Certificates</source>
         <translation>Certificati</translation>
     </message>
     <message>
-        <location filename="Helpviewer/Network/NetworkAccessManager.py" line="194"/>
-        <source>&lt;b&gt;Enter username and password for &apos;{0}&apos;&lt;/b&gt;</source>
-        <translation>&lt;b&gt;Inserisci utente e password per &apos;{0}&apos;&lt;/b&gt;</translation>
-    </message>
-    <message>
         <location filename="Helpviewer/Network/NetworkAccessManager.py" line="197"/>
+        <source>&lt;b&gt;Enter username and password for &apos;{0}&apos;&lt;/b&gt;</source>
+        <translation>&lt;b&gt;Inserisci utente e password per &apos;{0}&apos;&lt;/b&gt;</translation>
+    </message>
+    <message>
+        <location filename="Helpviewer/Network/NetworkAccessManager.py" line="200"/>
         <source>&lt;b&gt;Enter username and password for &apos;{0}&apos;, realm &apos;{1}&apos;&lt;/b&gt;</source>
         <translation>&lt;b&gt;Inserisci utente e password per &apos;{0}&apos;, dominio &apos;{1}&apos;&lt;/b&gt;</translation>
     </message>
     <message>
-        <location filename="Helpviewer/Network/NetworkAccessManager.py" line="251"/>
+        <location filename="Helpviewer/Network/NetworkAccessManager.py" line="254"/>
         <source>&lt;p&gt;SSL Errors for &lt;br /&gt;&lt;b&gt;{0}&lt;/b&gt;&lt;ul&gt;&lt;li&gt;{1}&lt;/li&gt;&lt;/ul&gt;&lt;/p&gt;&lt;p&gt;Do you want to ignore these errors?&lt;/p&gt;</source>
         <translation>&lt;p&gt;Errori SSL per &lt;br /&gt;&lt;b&gt;{0}&lt;/b&gt;&lt;ul&gt;&lt;li&gt;{1}&lt;/li&gt;&lt;/ul&gt;&lt;/p&gt;&lt;p&gt;Vuoi ignorarli ?&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="Helpviewer/Network/NetworkAccessManager.py" line="264"/>
+        <location filename="Helpviewer/Network/NetworkAccessManager.py" line="267"/>
         <source>&lt;p&gt;Certificates:&lt;br/&gt;{0}&lt;br/&gt;Do you want to accept all these certificates?&lt;/p&gt;</source>
         <translation>&lt;p&gt;Certificati:&lt;br/&gt;{0}&lt;br/&gt;Vuoi accettare tutti questi certificati?&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="Helpviewer/Network/NetworkAccessManager.py" line="318"/>
+        <location filename="Helpviewer/Network/NetworkAccessManager.py" line="321"/>
         <source>&lt;br/&gt;Issuer: {0}</source>
         <translation>&lt;br/&gt;Emettitore: {0}</translation>
     </message>
     <message>
-        <location filename="Helpviewer/Network/NetworkAccessManager.py" line="322"/>
+        <location filename="Helpviewer/Network/NetworkAccessManager.py" line="325"/>
         <source>&lt;br/&gt;Not valid before: {0}&lt;br/&gt;Valid Until: {1}</source>
         <translation>&lt;br/&gt;Non valido prima: {0}&lt;br/&gt;Valido Fino: {1}</translation>
     </message>
     <message>
-        <location filename="Helpviewer/Network/NetworkAccessManager.py" line="310"/>
+        <location filename="Helpviewer/Network/NetworkAccessManager.py" line="313"/>
         <source>Name: {0}</source>
         <translation>Nome: {0}</translation>
     </message>
     <message>
-        <location filename="Helpviewer/Network/NetworkAccessManager.py" line="314"/>
+        <location filename="Helpviewer/Network/NetworkAccessManager.py" line="317"/>
         <source>&lt;br/&gt;Organization: {0}</source>
         <translation>&lt;br/&gt;Organizzazione: {0}</translation>
     </message>
--- a/i18n/eric5_ru.ts	Wed Sep 19 18:21:04 2012 +0200
+++ b/i18n/eric5_ru.ts	Wed Sep 19 20:19:49 2012 +0200
@@ -13548,37 +13548,37 @@
 <context>
     <name>FtpReply</name>
     <message>
-        <location filename="Helpviewer/Network/FtpReply.py" line="348"/>
+        <location filename="Helpviewer/Network/FtpReply.py" line="395"/>
         <source>  &lt;p&gt;&lt;a class=&quot;link_parent&quot; href=&quot;{0}&quot;&gt;Change to parent directory&lt;/a&gt;&lt;/p&gt;</source>
         <translation>  &lt;p&gt;&lt;a class=&quot;link_parent&quot; href=&quot;{0}&quot;&gt;Перейти в родительский каталог&lt;/a&gt;&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="Helpviewer/Network/FtpReply.py" line="361"/>
+        <location filename="Helpviewer/Network/FtpReply.py" line="408"/>
         <source>    &lt;tr&gt;&lt;th align=&quot;left&quot;&gt;Name&lt;/th&gt;&lt;th&gt;Size&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;Last modified&lt;/th&gt;&lt;/tr&gt;
 </source>
         <translation>    &lt;tr&gt;&lt;th align=&quot;left&quot;&gt;Имя&lt;/th&gt;&lt;th&gt;Размер&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;Последнее изменение&lt;/th&gt;&lt;/tr&gt;
 </translation>
     </message>
     <message>
-        <location filename="Helpviewer/Network/FtpReply.py" line="387"/>
+        <location filename="Helpviewer/Network/FtpReply.py" line="434"/>
         <source>{0} {1}</source>
         <comment>size unit</comment>
         <translation>{0} {1}</translation>
     </message>
     <message>
-        <location filename="Helpviewer/Network/FtpReply.py" line="411"/>
+        <location filename="Helpviewer/Network/FtpReply.py" line="458"/>
         <source>Listing of {0}</source>
         <translation>Список {0}</translation>
     </message>
     <message>
-        <location filename="Helpviewer/Network/FtpReply.py" line="133"/>
+        <location filename="Helpviewer/Network/FtpReply.py" line="155"/>
         <source>No suitable proxy found.</source>
-        <translation type="obsolete">Не найдено подходящего прокси.</translation>
+        <translation type="unfinished">Не найдено подходящего прокси.</translation>
     </message>
     <message>
         <location filename="Helpviewer/Network/FtpReply.py" line="237"/>
         <source>&lt;b&gt;Enter username and password for &apos;{0}&apos;&lt;/b&gt;</source>
-        <translation type="unfinished">&lt;b&gt;Введите имя пользователя и пароль для &apos;{0}&apos;&lt;/b&gt;</translation>
+        <translation type="obsolete">&lt;b&gt;Введите имя пользователя и пароль для &apos;{0}&apos;&lt;/b&gt;</translation>
     </message>
 </context>
 <context>
@@ -27875,52 +27875,52 @@
 <context>
     <name>NetworkAccessManager</name>
     <message>
-        <location filename="Helpviewer/Network/NetworkAccessManager.py" line="194"/>
+        <location filename="Helpviewer/Network/NetworkAccessManager.py" line="197"/>
         <source>&lt;b&gt;Enter username and password for &apos;{0}&apos;&lt;/b&gt;</source>
         <translation>&lt;b&gt;Введите имя пользователя и пароль для &apos;{0}&apos;&lt;/b&gt;</translation>
     </message>
     <message>
-        <location filename="Helpviewer/Network/NetworkAccessManager.py" line="197"/>
+        <location filename="Helpviewer/Network/NetworkAccessManager.py" line="200"/>
         <source>&lt;b&gt;Enter username and password for &apos;{0}&apos;, realm &apos;{1}&apos;&lt;/b&gt;</source>
         <translation>&lt;b&gt;Введите имя пользователя и пароль для &apos;{0}&apos;; realm &apos;{1}&apos;&lt;/b&gt;</translation>
     </message>
     <message>
-        <location filename="Helpviewer/Network/NetworkAccessManager.py" line="251"/>
+        <location filename="Helpviewer/Network/NetworkAccessManager.py" line="254"/>
         <source>SSL Errors</source>
         <translation>Ошибки SSL</translation>
     </message>
     <message>
-        <location filename="Helpviewer/Network/NetworkAccessManager.py" line="251"/>
+        <location filename="Helpviewer/Network/NetworkAccessManager.py" line="254"/>
         <source>&lt;p&gt;SSL Errors for &lt;br /&gt;&lt;b&gt;{0}&lt;/b&gt;&lt;ul&gt;&lt;li&gt;{1}&lt;/li&gt;&lt;/ul&gt;&lt;/p&gt;&lt;p&gt;Do you want to ignore these errors?&lt;/p&gt;</source>
         <translation>&lt;p&gt;Ошибки SSL для &lt;br /&gt;&lt;b&gt;{0}&lt;/b&gt;&lt;ul&gt;&lt;li&gt;{1}&lt;/li&gt;&lt;/ul&gt;&lt;/p&gt;&lt;p&gt;Игнорировать?&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="Helpviewer/Network/NetworkAccessManager.py" line="264"/>
+        <location filename="Helpviewer/Network/NetworkAccessManager.py" line="267"/>
         <source>Certificates</source>
         <translation>Сертификаты</translation>
     </message>
     <message>
-        <location filename="Helpviewer/Network/NetworkAccessManager.py" line="264"/>
+        <location filename="Helpviewer/Network/NetworkAccessManager.py" line="267"/>
         <source>&lt;p&gt;Certificates:&lt;br/&gt;{0}&lt;br/&gt;Do you want to accept all these certificates?&lt;/p&gt;</source>
         <translation>&lt;p&gt;Сертификаты:&lt;br/&gt;{0}&lt;br/&gt;Принять?&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="Helpviewer/Network/NetworkAccessManager.py" line="318"/>
+        <location filename="Helpviewer/Network/NetworkAccessManager.py" line="321"/>
         <source>&lt;br/&gt;Issuer: {0}</source>
         <translation>&lt;br/&gt;Эмитент: {0}</translation>
     </message>
     <message>
-        <location filename="Helpviewer/Network/NetworkAccessManager.py" line="322"/>
+        <location filename="Helpviewer/Network/NetworkAccessManager.py" line="325"/>
         <source>&lt;br/&gt;Not valid before: {0}&lt;br/&gt;Valid Until: {1}</source>
         <translation>&lt;br/&gt;Не действительны ранее: {0}&lt;br/&gt;Действительны до: {1}</translation>
     </message>
     <message>
-        <location filename="Helpviewer/Network/NetworkAccessManager.py" line="310"/>
+        <location filename="Helpviewer/Network/NetworkAccessManager.py" line="313"/>
         <source>Name: {0}</source>
         <translation>Имя: {0}</translation>
     </message>
     <message>
-        <location filename="Helpviewer/Network/NetworkAccessManager.py" line="314"/>
+        <location filename="Helpviewer/Network/NetworkAccessManager.py" line="317"/>
         <source>&lt;br/&gt;Organization: {0}</source>
         <translation>&lt;br/&gt;Организация: {0}</translation>
     </message>
--- a/i18n/eric5_tr.ts	Wed Sep 19 18:21:04 2012 +0200
+++ b/i18n/eric5_tr.ts	Wed Sep 19 20:19:49 2012 +0200
@@ -13628,31 +13628,36 @@
 <context>
     <name>FtpReply</name>
     <message>
-        <location filename="Helpviewer/Network/FtpReply.py" line="348"/>
+        <location filename="Helpviewer/Network/FtpReply.py" line="395"/>
         <source>  &lt;p&gt;&lt;a class=&quot;link_parent&quot; href=&quot;{0}&quot;&gt;Change to parent directory&lt;/a&gt;&lt;/p&gt;</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Helpviewer/Network/FtpReply.py" line="361"/>
+        <location filename="Helpviewer/Network/FtpReply.py" line="408"/>
         <source>    &lt;tr&gt;&lt;th align=&quot;left&quot;&gt;Name&lt;/th&gt;&lt;th&gt;Size&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;Last modified&lt;/th&gt;&lt;/tr&gt;
 </source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Helpviewer/Network/FtpReply.py" line="387"/>
+        <location filename="Helpviewer/Network/FtpReply.py" line="434"/>
         <source>{0} {1}</source>
         <comment>size unit</comment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Helpviewer/Network/FtpReply.py" line="411"/>
+        <location filename="Helpviewer/Network/FtpReply.py" line="458"/>
         <source>Listing of {0}</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
         <location filename="Helpviewer/Network/FtpReply.py" line="237"/>
         <source>&lt;b&gt;Enter username and password for &apos;{0}&apos;&lt;/b&gt;</source>
-        <translation type="unfinished">&lt;b&gt; &apos;{0}&apos; için kullanıcı adını ve parolayı giriniz&lt;/b&gt;</translation>
+        <translation type="obsolete">&lt;b&gt; &apos;{0}&apos; için kullanıcı adını ve parolayı giriniz&lt;/b&gt;</translation>
+    </message>
+    <message>
+        <location filename="Helpviewer/Network/FtpReply.py" line="155"/>
+        <source>No suitable proxy found.</source>
+        <translation type="unfinished"></translation>
     </message>
 </context>
 <context>
@@ -27943,12 +27948,12 @@
 <context>
     <name>NetworkAccessManager</name>
     <message>
-        <location filename="Helpviewer/Network/NetworkAccessManager.py" line="194"/>
+        <location filename="Helpviewer/Network/NetworkAccessManager.py" line="197"/>
         <source>&lt;b&gt;Enter username and password for &apos;{0}&apos;&lt;/b&gt;</source>
         <translation>&lt;b&gt; &apos;{0}&apos; için kullanıcı adını ve parolayı giriniz&lt;/b&gt;</translation>
     </message>
     <message>
-        <location filename="Helpviewer/Network/NetworkAccessManager.py" line="197"/>
+        <location filename="Helpviewer/Network/NetworkAccessManager.py" line="200"/>
         <source>&lt;b&gt;Enter username and password for &apos;{0}&apos;, realm &apos;{1}&apos;&lt;/b&gt;</source>
         <translation>&lt;b&gt; &apos;{1}&apos; alanı, &apos;{0}&apos; için kullanıcı adı ve parola giriniz&lt;/b&gt;</translation>
     </message>
@@ -27958,42 +27963,42 @@
         <translation type="obsolete">&lt;b&gt;&apos;{0}&apos; proxy&apos;sini kullanarak bağlan:&lt;/b&gt;</translation>
     </message>
     <message>
-        <location filename="Helpviewer/Network/NetworkAccessManager.py" line="251"/>
+        <location filename="Helpviewer/Network/NetworkAccessManager.py" line="254"/>
         <source>SSL Errors</source>
         <translation>SSL Hataları</translation>
     </message>
     <message>
-        <location filename="Helpviewer/Network/NetworkAccessManager.py" line="251"/>
+        <location filename="Helpviewer/Network/NetworkAccessManager.py" line="254"/>
         <source>&lt;p&gt;SSL Errors for &lt;br /&gt;&lt;b&gt;{0}&lt;/b&gt;&lt;ul&gt;&lt;li&gt;{1}&lt;/li&gt;&lt;/ul&gt;&lt;/p&gt;&lt;p&gt;Do you want to ignore these errors?&lt;/p&gt;</source>
         <translation>&lt;p&gt;SSL Hataları  &lt;br /&gt;&lt;b&gt;{0}&lt;/b&gt;&lt;ul&gt;&lt;li&gt;{1}&lt;/li&gt;&lt;/ul&gt;&lt;/p&gt;&lt;p&gt;Bu hataları yoksaymak istiyor musunuz?&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="Helpviewer/Network/NetworkAccessManager.py" line="264"/>
+        <location filename="Helpviewer/Network/NetworkAccessManager.py" line="267"/>
         <source>Certificates</source>
         <translation>Sertifikalar</translation>
     </message>
     <message>
-        <location filename="Helpviewer/Network/NetworkAccessManager.py" line="264"/>
+        <location filename="Helpviewer/Network/NetworkAccessManager.py" line="267"/>
         <source>&lt;p&gt;Certificates:&lt;br/&gt;{0}&lt;br/&gt;Do you want to accept all these certificates?&lt;/p&gt;</source>
         <translation>&lt;p&gt;Sertifalar:&lt;br/&gt;{0}&lt;br/&gt;Bu sertifikalrı kabul etmek istiyor musunuz?&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="Helpviewer/Network/NetworkAccessManager.py" line="318"/>
+        <location filename="Helpviewer/Network/NetworkAccessManager.py" line="321"/>
         <source>&lt;br/&gt;Issuer: {0}</source>
         <translation>&lt;br/&gt;Yayımcı: {0}</translation>
     </message>
     <message>
-        <location filename="Helpviewer/Network/NetworkAccessManager.py" line="322"/>
+        <location filename="Helpviewer/Network/NetworkAccessManager.py" line="325"/>
         <source>&lt;br/&gt;Not valid before: {0}&lt;br/&gt;Valid Until: {1}</source>
         <translation>&lt;br/&gt;Geçerlilik başlangıcı: {0}&lt;br/&gt;Geçerlilek bitişi: {1}</translation>
     </message>
     <message>
-        <location filename="Helpviewer/Network/NetworkAccessManager.py" line="310"/>
+        <location filename="Helpviewer/Network/NetworkAccessManager.py" line="313"/>
         <source>Name: {0}</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Helpviewer/Network/NetworkAccessManager.py" line="314"/>
+        <location filename="Helpviewer/Network/NetworkAccessManager.py" line="317"/>
         <source>&lt;br/&gt;Organization: {0}</source>
         <translation type="unfinished"></translation>
     </message>
--- a/i18n/eric5_zh_CN.GB2312.ts	Wed Sep 19 18:21:04 2012 +0200
+++ b/i18n/eric5_zh_CN.GB2312.ts	Wed Sep 19 20:19:49 2012 +0200
@@ -14391,30 +14391,30 @@
 <context>
     <name>FtpReply</name>
     <message>
-        <location filename="Helpviewer/Network/FtpReply.py" line="348"/>
+        <location filename="Helpviewer/Network/FtpReply.py" line="395"/>
         <source>  &lt;p&gt;&lt;a class=&quot;link_parent&quot; href=&quot;{0}&quot;&gt;Change to parent directory&lt;/a&gt;&lt;/p&gt;</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Helpviewer/Network/FtpReply.py" line="361"/>
+        <location filename="Helpviewer/Network/FtpReply.py" line="408"/>
         <source>    &lt;tr&gt;&lt;th align=&quot;left&quot;&gt;Name&lt;/th&gt;&lt;th&gt;Size&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;Last modified&lt;/th&gt;&lt;/tr&gt;
 </source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Helpviewer/Network/FtpReply.py" line="387"/>
+        <location filename="Helpviewer/Network/FtpReply.py" line="434"/>
         <source>{0} {1}</source>
         <comment>size unit</comment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Helpviewer/Network/FtpReply.py" line="411"/>
+        <location filename="Helpviewer/Network/FtpReply.py" line="458"/>
         <source>Listing of {0}</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Helpviewer/Network/FtpReply.py" line="237"/>
-        <source>&lt;b&gt;Enter username and password for &apos;{0}&apos;&lt;/b&gt;</source>
+        <location filename="Helpviewer/Network/FtpReply.py" line="155"/>
+        <source>No suitable proxy found.</source>
         <translation type="unfinished"></translation>
     </message>
 </context>
@@ -29361,52 +29361,52 @@
         <translation type="obsolete">&lt;b&gt;连接到代理 &apos;%1&apos; ,使用:&lt;/b&gt;</translation>
     </message>
     <message>
-        <location filename="Helpviewer/Network/NetworkAccessManager.py" line="251"/>
+        <location filename="Helpviewer/Network/NetworkAccessManager.py" line="254"/>
         <source>SSL Errors</source>
         <translation type="unfinished">SSL 错误</translation>
     </message>
     <message>
-        <location filename="Helpviewer/Network/NetworkAccessManager.py" line="264"/>
+        <location filename="Helpviewer/Network/NetworkAccessManager.py" line="267"/>
         <source>Certificates</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Helpviewer/Network/NetworkAccessManager.py" line="194"/>
-        <source>&lt;b&gt;Enter username and password for &apos;{0}&apos;&lt;/b&gt;</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <location filename="Helpviewer/Network/NetworkAccessManager.py" line="197"/>
+        <source>&lt;b&gt;Enter username and password for &apos;{0}&apos;&lt;/b&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="Helpviewer/Network/NetworkAccessManager.py" line="200"/>
         <source>&lt;b&gt;Enter username and password for &apos;{0}&apos;, realm &apos;{1}&apos;&lt;/b&gt;</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Helpviewer/Network/NetworkAccessManager.py" line="251"/>
+        <location filename="Helpviewer/Network/NetworkAccessManager.py" line="254"/>
         <source>&lt;p&gt;SSL Errors for &lt;br /&gt;&lt;b&gt;{0}&lt;/b&gt;&lt;ul&gt;&lt;li&gt;{1}&lt;/li&gt;&lt;/ul&gt;&lt;/p&gt;&lt;p&gt;Do you want to ignore these errors?&lt;/p&gt;</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Helpviewer/Network/NetworkAccessManager.py" line="264"/>
+        <location filename="Helpviewer/Network/NetworkAccessManager.py" line="267"/>
         <source>&lt;p&gt;Certificates:&lt;br/&gt;{0}&lt;br/&gt;Do you want to accept all these certificates?&lt;/p&gt;</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Helpviewer/Network/NetworkAccessManager.py" line="318"/>
+        <location filename="Helpviewer/Network/NetworkAccessManager.py" line="321"/>
         <source>&lt;br/&gt;Issuer: {0}</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Helpviewer/Network/NetworkAccessManager.py" line="322"/>
+        <location filename="Helpviewer/Network/NetworkAccessManager.py" line="325"/>
         <source>&lt;br/&gt;Not valid before: {0}&lt;br/&gt;Valid Until: {1}</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Helpviewer/Network/NetworkAccessManager.py" line="310"/>
+        <location filename="Helpviewer/Network/NetworkAccessManager.py" line="313"/>
         <source>Name: {0}</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Helpviewer/Network/NetworkAccessManager.py" line="314"/>
+        <location filename="Helpviewer/Network/NetworkAccessManager.py" line="317"/>
         <source>&lt;br/&gt;Organization: {0}</source>
         <translation type="unfinished"></translation>
     </message>

eric ide

mercurial