Mon, 24 Sep 2012 20:23:18 +0200
Added a handler for file: schemes to allow directory listings.
--- a/APIs/Python3/eric5.api Mon Sep 24 19:14:39 2012 +0200 +++ b/APIs/Python3/eric5.api Mon Sep 24 20:23:18 2012 +0200 @@ -2614,6 +2614,14 @@ eric5.Helpviewer.Network.EricAccessHandler.EricAccessHandler._homePage?8 eric5.Helpviewer.Network.EricAccessHandler.EricAccessHandler._speedDialPage?8 eric5.Helpviewer.Network.EricAccessHandler.EricAccessHandler.createRequest?4(op, request, outgoingData=None) +eric5.Helpviewer.Network.FileAccessHandler.FileAccessHandler.createRequest?4(op, request, outgoingData=None) +eric5.Helpviewer.Network.FileAccessHandler.FileAccessHandler?1(parent=None) +eric5.Helpviewer.Network.FileReply.FileReply.abort?4() +eric5.Helpviewer.Network.FileReply.FileReply.bytesAvailable?4() +eric5.Helpviewer.Network.FileReply.FileReply.isSequential?4() +eric5.Helpviewer.Network.FileReply.FileReply.readData?4(maxlen) +eric5.Helpviewer.Network.FileReply.FileReply?1(url, parent=None) +eric5.Helpviewer.Network.FileReply.dirListPage_html?7 eric5.Helpviewer.Network.FollowRedirectReply.FollowRedirectReply.close?4() eric5.Helpviewer.Network.FollowRedirectReply.FollowRedirectReply.error?4() eric5.Helpviewer.Network.FollowRedirectReply.FollowRedirectReply.errorString?4()
--- a/APIs/Python3/eric5.bas Mon Sep 24 19:14:39 2012 +0200 +++ b/APIs/Python3/eric5.bas Mon Sep 24 20:23:18 2012 +0200 @@ -214,8 +214,10 @@ FeedsManager QDialog Ui_FeedsManager Fetch HgExtension FetchProjectHelper HgExtensionProjectHelper +FileAccessHandler SchemeAccessHandler FileDialogWizard QObject FileDialogWizardDialog QDialog Ui_FileDialogWizardDialog +FileReply QNetworkReply FiletypeAssociationDialog QDialog Ui_FiletypeAssociationDialog FindFileDialog QDialog Ui_FindFileDialog FindFileNameDialog QWidget Ui_FindFileNameDialog
--- a/Documentation/Help/source.qhp Mon Sep 24 19:14:39 2012 +0200 +++ b/Documentation/Help/source.qhp Mon Sep 24 20:23:18 2012 +0200 @@ -279,6 +279,8 @@ <section title="eric5.Helpviewer.Network.AboutAccessHandler" ref="eric5.Helpviewer.Network.AboutAccessHandler.html" /> <section title="eric5.Helpviewer.Network.EmptyNetworkReply" ref="eric5.Helpviewer.Network.EmptyNetworkReply.html" /> <section title="eric5.Helpviewer.Network.EricAccessHandler" ref="eric5.Helpviewer.Network.EricAccessHandler.html" /> + <section title="eric5.Helpviewer.Network.FileAccessHandler" ref="eric5.Helpviewer.Network.FileAccessHandler.html" /> + <section title="eric5.Helpviewer.Network.FileReply" ref="eric5.Helpviewer.Network.FileReply.html" /> <section title="eric5.Helpviewer.Network.FollowRedirectReply" ref="eric5.Helpviewer.Network.FollowRedirectReply.html" /> <section title="eric5.Helpviewer.Network.FtpAccessHandler" ref="eric5.Helpviewer.Network.FtpAccessHandler.html" /> <section title="eric5.Helpviewer.Network.FtpReply" ref="eric5.Helpviewer.Network.FtpReply.html" /> @@ -4390,6 +4392,10 @@ <keyword name="FetchProjectHelper.initActions" id="FetchProjectHelper.initActions" ref="eric5.Plugins.VcsPlugins.vcsMercurial.FetchExtension.ProjectHelper.html#FetchProjectHelper.initActions" /> <keyword name="FetchProjectHelper.initMenu" id="FetchProjectHelper.initMenu" ref="eric5.Plugins.VcsPlugins.vcsMercurial.FetchExtension.ProjectHelper.html#FetchProjectHelper.initMenu" /> <keyword name="FetchProjectHelper.menuTitle" id="FetchProjectHelper.menuTitle" ref="eric5.Plugins.VcsPlugins.vcsMercurial.FetchExtension.ProjectHelper.html#FetchProjectHelper.menuTitle" /> + <keyword name="FileAccessHandler" id="FileAccessHandler" ref="eric5.Helpviewer.Network.FileAccessHandler.html#FileAccessHandler" /> + <keyword name="FileAccessHandler (Constructor)" id="FileAccessHandler (Constructor)" ref="eric5.Helpviewer.Network.FileAccessHandler.html#FileAccessHandler.__init__" /> + <keyword name="FileAccessHandler (Module)" id="FileAccessHandler (Module)" ref="eric5.Helpviewer.Network.FileAccessHandler.html" /> + <keyword name="FileAccessHandler.createRequest" id="FileAccessHandler.createRequest" ref="eric5.Helpviewer.Network.FileAccessHandler.html#FileAccessHandler.createRequest" /> <keyword name="FileDialogWizard" id="FileDialogWizard" ref="eric5.Plugins.PluginWizardQFileDialog.html#FileDialogWizard" /> <keyword name="FileDialogWizard (Constructor)" id="FileDialogWizard (Constructor)" ref="eric5.Plugins.PluginWizardQFileDialog.html#FileDialogWizard.__init__" /> <keyword name="FileDialogWizard (Package)" id="FileDialogWizard (Package)" ref="index-eric5.Plugins.WizardPlugins.FileDialogWizard.html" /> @@ -4409,6 +4415,15 @@ <keyword name="FileDialogWizardDialog.getCode" id="FileDialogWizardDialog.getCode" ref="eric5.Plugins.WizardPlugins.FileDialogWizard.FileDialogWizardDialog.html#FileDialogWizardDialog.getCode" /> <keyword name="FileDialogWizardDialog.on_bTest_clicked" id="FileDialogWizardDialog.on_bTest_clicked" ref="eric5.Plugins.WizardPlugins.FileDialogWizard.FileDialogWizardDialog.html#FileDialogWizardDialog.on_bTest_clicked" /> <keyword name="FileDialogWizardDialog.on_buttonBox_clicked" id="FileDialogWizardDialog.on_buttonBox_clicked" ref="eric5.Plugins.WizardPlugins.FileDialogWizard.FileDialogWizardDialog.html#FileDialogWizardDialog.on_buttonBox_clicked" /> + <keyword name="FileReply" id="FileReply" ref="eric5.Helpviewer.Network.FileReply.html#FileReply" /> + <keyword name="FileReply (Constructor)" id="FileReply (Constructor)" ref="eric5.Helpviewer.Network.FileReply.html#FileReply.__init__" /> + <keyword name="FileReply (Module)" id="FileReply (Module)" ref="eric5.Helpviewer.Network.FileReply.html" /> + <keyword name="FileReply.__cssLinkClass" id="FileReply.__cssLinkClass" ref="eric5.Helpviewer.Network.FileReply.html#FileReply.__cssLinkClass" /> + <keyword name="FileReply.__loadDirectory" id="FileReply.__loadDirectory" ref="eric5.Helpviewer.Network.FileReply.html#FileReply.__loadDirectory" /> + <keyword name="FileReply.abort" id="FileReply.abort" ref="eric5.Helpviewer.Network.FileReply.html#FileReply.abort" /> + <keyword name="FileReply.bytesAvailable" id="FileReply.bytesAvailable" ref="eric5.Helpviewer.Network.FileReply.html#FileReply.bytesAvailable" /> + <keyword name="FileReply.isSequential" id="FileReply.isSequential" ref="eric5.Helpviewer.Network.FileReply.html#FileReply.isSequential" /> + <keyword name="FileReply.readData" id="FileReply.readData" ref="eric5.Helpviewer.Network.FileReply.html#FileReply.readData" /> <keyword name="FiletypeAssociationDialog" id="FiletypeAssociationDialog" ref="eric5.Project.FiletypeAssociationDialog.html#FiletypeAssociationDialog" /> <keyword name="FiletypeAssociationDialog (Constructor)" id="FiletypeAssociationDialog (Constructor)" ref="eric5.Project.FiletypeAssociationDialog.html#FiletypeAssociationDialog.__init__" /> <keyword name="FiletypeAssociationDialog (Module)" id="FiletypeAssociationDialog (Module)" ref="eric5.Project.FiletypeAssociationDialog.html" /> @@ -12628,6 +12643,8 @@ <file>eric5.Helpviewer.Network.AboutAccessHandler.html</file> <file>eric5.Helpviewer.Network.EmptyNetworkReply.html</file> <file>eric5.Helpviewer.Network.EricAccessHandler.html</file> + <file>eric5.Helpviewer.Network.FileAccessHandler.html</file> + <file>eric5.Helpviewer.Network.FileReply.html</file> <file>eric5.Helpviewer.Network.FollowRedirectReply.html</file> <file>eric5.Helpviewer.Network.FtpAccessHandler.html</file> <file>eric5.Helpviewer.Network.FtpReply.html</file>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Documentation/Source/eric5.Helpviewer.Network.FileAccessHandler.html Mon Sep 24 20:23:18 2012 +0200 @@ -0,0 +1,107 @@ +<?xml version="1.0" encoding="utf-8"?> +<!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Strict//EN' +'http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd'> +<html><head> +<title>eric5.Helpviewer.Network.FileAccessHandler</title> +<style> +body { + background: #EDECE6; + margin: 0em 1em 10em 1em; + color: black; +} + +h1 { color: white; background: #85774A; } +h2 { color: white; background: #85774A; } +h3 { color: white; background: #9D936E; } +h4 { color: white; background: #9D936E; } + +a { color: #BA6D36; } + +</style> +</head> +<body><a NAME="top" ID="top"></a> +<h1>eric5.Helpviewer.Network.FileAccessHandler</h1> +<p> +Module implementing a scheme access handler for file. +</p> +<h3>Global Attributes</h3> +<table> +<tr><td>None</td></tr> +</table> +<h3>Classes</h3> +<table> +<tr> +<td><a href="#FileAccessHandler">FileAccessHandler</a></td> +<td>Class implementing a scheme access handler for FTP.</td> +</tr> +</table> +<h3>Functions</h3> +<table> +<tr><td>None</td></tr> +</table> +<hr /><hr /> +<a NAME="FileAccessHandler" ID="FileAccessHandler"></a> +<h2>FileAccessHandler</h2> +<p> + Class implementing a scheme access handler for FTP. +</p> +<h3>Derived from</h3> +SchemeAccessHandler +<h3>Class Attributes</h3> +<table> +<tr><td>None</td></tr> +</table> +<h3>Class Methods</h3> +<table> +<tr><td>None</td></tr> +</table> +<h3>Methods</h3> +<table> +<tr> +<td><a href="#FileAccessHandler.__init__">FileAccessHandler</a></td> +<td>Constructor</td> +</tr><tr> +<td><a href="#FileAccessHandler.createRequest">createRequest</a></td> +<td>Protected method to create a request.</td> +</tr> +</table> +<h3>Static Methods</h3> +<table> +<tr><td>None</td></tr> +</table> +<a NAME="FileAccessHandler.__init__" ID="FileAccessHandler.__init__"></a> +<h4>FileAccessHandler (Constructor)</h4> +<b>FileAccessHandler</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="FileAccessHandler.createRequest" ID="FileAccessHandler.createRequest"></a> +<h4>FileAccessHandler.createRequest</h4> +<b>createRequest</b>(<i>op, request, outgoingData=None</i>) +<p> + Protected method to create a request. +</p><dl> +<dt><i>op</i></dt> +<dd> +the operation to be performed (QNetworkAccessManager.Operation) +</dd><dt><i>request</i></dt> +<dd> +reference to the request object (QNetworkRequest) +</dd><dt><i>outgoingData</i></dt> +<dd> +reference to an IODevice containing data to be sent + (QIODevice) +</dd> +</dl><dl> +<dt>Returns:</dt> +<dd> +reference to the created reply object (QNetworkReply) +</dd> +</dl> +<div align="right"><a href="#top">Up</a></div> +<hr /> +</body></html> \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Documentation/Source/eric5.Helpviewer.Network.FileReply.html Mon Sep 24 20:23:18 2012 +0200 @@ -0,0 +1,166 @@ +<?xml version="1.0" encoding="utf-8"?> +<!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Strict//EN' +'http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd'> +<html><head> +<title>eric5.Helpviewer.Network.FileReply</title> +<style> +body { + background: #EDECE6; + margin: 0em 1em 10em 1em; + color: black; +} + +h1 { color: white; background: #85774A; } +h2 { color: white; background: #85774A; } +h3 { color: white; background: #9D936E; } +h4 { color: white; background: #9D936E; } + +a { color: #BA6D36; } + +</style> +</head> +<body><a NAME="top" ID="top"></a> +<h1>eric5.Helpviewer.Network.FileReply</h1> +<p> +Module implementing a network reply class for directory resources. +</p> +<h3>Global Attributes</h3> +<table> +<tr><td>dirListPage_html</td></tr> +</table> +<h3>Classes</h3> +<table> +<tr> +<td><a href="#FileReply">FileReply</a></td> +<td>Class implementing a network reply for directory resources.</td> +</tr> +</table> +<h3>Functions</h3> +<table> +<tr><td>None</td></tr> +</table> +<hr /><hr /> +<a NAME="FileReply" ID="FileReply"></a> +<h2>FileReply</h2> +<p> + Class implementing a network reply for directory resources. +</p> +<h3>Derived from</h3> +QNetworkReply +<h3>Class Attributes</h3> +<table> +<tr><td>None</td></tr> +</table> +<h3>Class Methods</h3> +<table> +<tr><td>None</td></tr> +</table> +<h3>Methods</h3> +<table> +<tr> +<td><a href="#FileReply.__init__">FileReply</a></td> +<td>Constructor</td> +</tr><tr> +<td><a href="#FileReply.__cssLinkClass">__cssLinkClass</a></td> +<td>Private method to generate a link class with an icon.</td> +</tr><tr> +<td><a href="#FileReply.__loadDirectory">__loadDirectory</a></td> +<td>Private slot loading the directory and preparing the listing page.</td> +</tr><tr> +<td><a href="#FileReply.abort">abort</a></td> +<td>Public slot to abort the operation.</td> +</tr><tr> +<td><a href="#FileReply.bytesAvailable">bytesAvailable</a></td> +<td>Public method to determined the bytes available for being read.</td> +</tr><tr> +<td><a href="#FileReply.isSequential">isSequential</a></td> +<td>Public method to check for sequential access.</td> +</tr><tr> +<td><a href="#FileReply.readData">readData</a></td> +<td>Protected method to retrieve data from the reply object.</td> +</tr> +</table> +<h3>Static Methods</h3> +<table> +<tr><td>None</td></tr> +</table> +<a NAME="FileReply.__init__" ID="FileReply.__init__"></a> +<h4>FileReply (Constructor)</h4> +<b>FileReply</b>(<i>url, parent=None</i>) +<p> + Constructor +</p><dl> +<dt><i>url</i></dt> +<dd> +requested FTP URL (QUrl) +</dd><dt><i>parent</i></dt> +<dd> +reference to the parent object (QObject) +</dd> +</dl><a NAME="FileReply.__cssLinkClass" ID="FileReply.__cssLinkClass"></a> +<h4>FileReply.__cssLinkClass</h4> +<b>__cssLinkClass</b>(<i>icon, size=32</i>) +<p> + Private method to generate a link class with an icon. +</p><dl> +<dt><i>icon</i></dt> +<dd> +icon to be included (QIcon) +</dd><dt><i>size</i></dt> +<dd> +size of the icon to be generated (integer) +</dd> +</dl><dl> +<dt>Returns:</dt> +<dd> +CSS class string (string) +</dd> +</dl><a NAME="FileReply.__loadDirectory" ID="FileReply.__loadDirectory"></a> +<h4>FileReply.__loadDirectory</h4> +<b>__loadDirectory</b>(<i></i>) +<p> + Private slot loading the directory and preparing the listing page. +</p><a NAME="FileReply.abort" ID="FileReply.abort"></a> +<h4>FileReply.abort</h4> +<b>abort</b>(<i></i>) +<p> + Public slot to abort the operation. +</p><a NAME="FileReply.bytesAvailable" ID="FileReply.bytesAvailable"></a> +<h4>FileReply.bytesAvailable</h4> +<b>bytesAvailable</b>(<i></i>) +<p> + Public method to determined the bytes available for being read. +</p><dl> +<dt>Returns:</dt> +<dd> +bytes available (integer) +</dd> +</dl><a NAME="FileReply.isSequential" ID="FileReply.isSequential"></a> +<h4>FileReply.isSequential</h4> +<b>isSequential</b>(<i></i>) +<p> + Public method to check for sequential access. +</p><dl> +<dt>Returns:</dt> +<dd> +flag indicating sequential access (boolean) +</dd> +</dl><a NAME="FileReply.readData" ID="FileReply.readData"></a> +<h4>FileReply.readData</h4> +<b>readData</b>(<i>maxlen</i>) +<p> + Protected method to retrieve data from the reply object. +</p><dl> +<dt><i>maxlen</i></dt> +<dd> +maximum number of bytes to read (integer) +</dd> +</dl><dl> +<dt>Returns:</dt> +<dd> +string containing the data (bytes) +</dd> +</dl> +<div align="right"><a href="#top">Up</a></div> +<hr /> +</body></html> \ No newline at end of file
--- a/Documentation/Source/index-eric5.Helpviewer.Network.html Mon Sep 24 19:14:39 2012 +0200 +++ b/Documentation/Source/index-eric5.Helpviewer.Network.html Mon Sep 24 20:23:18 2012 +0200 @@ -38,6 +38,12 @@ <td><a href="eric5.Helpviewer.Network.EricAccessHandler.html">EricAccessHandler</a></td> <td>Module implementing a scheme access handler for Python resources.</td> </tr><tr> +<td><a href="eric5.Helpviewer.Network.FileAccessHandler.html">FileAccessHandler</a></td> +<td>Module implementing a scheme access handler for file.</td> +</tr><tr> +<td><a href="eric5.Helpviewer.Network.FileReply.html">FileReply</a></td> +<td>Module implementing a network reply class for directory resources.</td> +</tr><tr> <td><a href="eric5.Helpviewer.Network.FollowRedirectReply.html">FollowRedirectReply</a></td> <td>Module implementing a network reply delegate allowing to check redirects.</td> </tr><tr>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Helpviewer/Network/FileAccessHandler.py Mon Sep 24 20:23:18 2012 +0200 @@ -0,0 +1,47 @@ +# -*- coding: utf-8 -*- + +# Copyright (c) 2012 Detlev Offenbach <detlev@die-offenbachs.de> +# + +""" +Module implementing a scheme access handler for file. +""" + +from PyQt4.QtCore import QFileInfo +from PyQt4.QtNetwork import QNetworkAccessManager + +from .SchemeAccessHandler import SchemeAccessHandler +from .FileReply import FileReply + + +class FileAccessHandler(SchemeAccessHandler): + """ + 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) + + def createRequest(self, op, request, outgoingData=None): + """ + Protected method to create a request. + + @param op the operation to be performed (QNetworkAccessManager.Operation) + @param request reference to the request object (QNetworkRequest) + @param outgoingData reference to an IODevice containing data to be sent + (QIODevice) + @return reference to the created reply object (QNetworkReply) + """ + if op == QNetworkAccessManager.GetOperation: + fileInfo = QFileInfo(request.url().toLocalFile()) + if not fileInfo.isDir() or \ + not fileInfo.isReadable() or \ + not fileInfo.exists(): + return None + return FileReply(request.url(), self.parent()) + else: + return None
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Helpviewer/Network/FileReply.py Mon Sep 24 20:23:18 2012 +0200 @@ -0,0 +1,282 @@ +# -*- coding: utf-8 -*- + +# Copyright (c) 2012 Detlev Offenbach <detlev@die-offenbachs.de> +# + +""" +Module implementing a network reply class for directory resources. +""" + +from PyQt4.QtCore import Qt, QByteArray, QTimer, QDir, QIODevice, QUrl, QBuffer +from PyQt4.QtGui import QPixmap +from PyQt4.QtNetwork import QNetworkReply, QNetworkRequest +from PyQt4.QtWebKit import QWebSettings + +import UI.PixmapCache + + +dirListPage_html = """\ +<?xml version="1.0" encoding="UTF-8" ?> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" +"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"> +<head> +<title>{0}</title> +<style type="text/css"> +body {{ + padding: 3em 0em; + background: -webkit-gradient(linear, left top, left bottom, from(#85784A), to(#FDFDFD), color-stop(0.5, #FDFDFD)); + background-repeat: repeat-x; +}} +#box {{ + background: white; + border: 1px solid #85784A; + width: 80%; + padding: 30px; + margin: auto; + -webkit-border-radius: 0.8em; +}} +h1 {{ + font-size: 130%; + font-weight: bold; + border-bottom: 1px solid #85784A; +}} +th {{ + background-color: #B8B096; + color: black; +}} +table {{ + border: solid 1px #85784A; + margin: 5px 0; + width: 100%; +}} +tr.odd {{ + background-color: white; + color: black; +}} +tr.even {{ + background-color: #CEC9B8; + color: black; +}} +.modified {{ + text-align: left; + vertical-align: top; + white-space: nowrap; +}} +.size {{ + text-align: right; + vertical-align: top; + white-space: nowrap; + padding-right: 22px; +}} +.name {{ + text-align: left; + vertical-align: top; + white-space: pre-wrap; + width: 100% +}} +{1} +</style> +</head> +<body> + <div id="box"> + <h1>{2}</h1> +{3} + <table align="center" cellspacing="0" width="90%"> +{4} + </table> + </div> +</body> +</html> +""" + + +class FileReply(QNetworkReply): + """ + Class implementing a network reply for directory resources. + """ + def __init__(self, url, parent=None): + """ + Constructor + + @param url requested FTP URL (QUrl) + @param parent reference to the parent object (QObject) + """ + super().__init__(parent) + + self.__content = QByteArray() + self.__units = ["Bytes", "KB", "MB", "GB", "TB", "PB", "EB", "ZB", "YB"] + + if url.path() == "": + url.setPath("/") + self.setUrl(url) + + QTimer.singleShot(0, self.__loadDirectory) + + def abort(self): + """ + Public slot to abort the operation. + """ + # do nothing + pass + + def bytesAvailable(self): + """ + Public method to determined the bytes available for being read. + + @return bytes available (integer) + """ + return self.__content.size() + + def isSequential(self): + """ + Public method to check for sequential access. + + @return flag indicating sequential access (boolean) + """ + return True + + def readData(self, maxlen): + """ + Protected method to retrieve data from the reply object. + + @param maxlen maximum number of bytes to read (integer) + @return string containing the data (bytes) + """ + if self.__content.size(): + len_ = min(maxlen, self.__content.size()) + buffer = bytes(self.__content[:len_]) + self.__content.remove(0, len_) + return buffer + + def __cssLinkClass(self, icon, size=32): + """ + Private method to generate a link class with an icon. + + @param icon icon to be included (QIcon) + @param size size of the icon to be generated (integer) + @return CSS class string (string) + """ + cssString = \ + """a.{{0}} {{{{\n"""\ + """ padding-left: {0}px;\n"""\ + """ background: transparent url(data:image/png;base64,{1}) no-repeat center left;\n"""\ + """ font-weight: bold;\n"""\ + """}}}}\n""" + pixmap = icon.pixmap(size, size) + imageBuffer = QBuffer() + imageBuffer.open(QIODevice.ReadWrite) + if not pixmap.save(imageBuffer, "PNG"): + # write a blank pixmap on error + pixmap = QPixmap(size, size) + pixmap.fill(Qt.transparent) + imageBuffer.buffer().clear() + pixmap.save(imageBuffer, "PNG") + return cssString.format(size + 4, + str(imageBuffer.buffer().toBase64(), encoding="ascii")) + + def __loadDirectory(self): + """ + Private slot loading the directory and preparing the listing page. + """ + dir = QDir(self.url().toLocalFile()) + dirItems = dir.entryInfoList(QDir.AllEntries | QDir.Hidden | QDir.NoDotAndDotDot, + QDir.Name | QDir.DirsFirst) + + u = self.url() + if not u.path().endswith("/"): + u.setPath(u.path() + "/") + + baseUrl = self.url().toString() + basePath = u.path() + + linkClasses = {} + iconSize = QWebSettings.globalSettings().fontSize(QWebSettings.DefaultFontSize) + + parent = u.resolved(QUrl("..")) + if parent.isParentOf(u): + icon = UI.PixmapCache.getIcon("up.png") + linkClasses["link_parent"] = \ + self.__cssLinkClass(icon, iconSize).format("link_parent") + parentStr = self.trUtf8( + """ <p><a class="link_parent" href="{0}">""" + """Change to parent directory</a></p>""" + ).format(parent.toString()) + else: + parentStr = "" + + row = \ + """ <tr class="{0}">"""\ + """<td class="name"><a class="{1}" href="{2}">{3}</a></td>"""\ + """<td class="size">{4}</td>"""\ + """<td class="modified">{5}</td>"""\ + """</tr>\n""" + table = self.trUtf8( + """ <tr>""" + """<th align="left">Name</th>""" + """<th>Size</th>""" + """<th align="left">Last modified</th>""" + """</tr>\n""" + ) + + i = 0 + for item in dirItems: + name = item.fileName() + if item.isDir() and not name.endswith("/"): + name += "/" + child = u.resolved(QUrl(name.replace(":", "%3A"))) + + if item.isFile(): + size = item.size() + unit = 0 + while size: + newSize = size // 1024 + if newSize and unit < len(self.__units): + size = newSize + unit += 1 + else: + break + + sizeStr = self.trUtf8("{0} {1}", "size unit")\ + .format(size, self.__units[unit]) + linkClass = "link_file" + if linkClass not in linkClasses: + icon = UI.PixmapCache.getIcon("fileMisc.png") + linkClasses[linkClass] = \ + self.__cssLinkClass(icon, iconSize).format(linkClass) + else: + sizeStr = "" + linkClass = "link_dir" + if linkClass not in linkClasses: + icon = UI.PixmapCache.getIcon("dirClosed.png") + linkClasses[linkClass] = \ + self.__cssLinkClass(icon, iconSize).format(linkClass) + table += row.format( + i == 0 and "odd" or "even", + linkClass, + child.toString(), + Qt.escape(item.fileName()), + sizeStr, + item.lastModified().toString("yyyy-MM-dd hh:mm"), + ) + i = 1 - i + + content = dirListPage_html.format( + Qt.escape(baseUrl), + "".join(linkClasses.values()), + self.trUtf8("Listing of {0}").format(basePath), + parentStr, + table + ) + self.__content = QByteArray(content.encode("utf8")) + self.__content.append(512 * b' ') + + self.open(QIODevice.ReadOnly | QIODevice.Unbuffered) + self.setHeader(QNetworkRequest.ContentTypeHeader, "text/html; charset=UTF-8") + self.setHeader(QNetworkRequest.ContentLengthHeader, self.__content.size()) + self.setAttribute(QNetworkRequest.HttpStatusCodeAttribute, 200) + self.setAttribute(QNetworkRequest.HttpReasonPhraseAttribute, "Ok") + self.metaDataChanged.emit() + self.downloadProgress.emit(self.__content.size(), self.__content.size()) + self.readyRead.emit() + self.finished.emit()
--- a/Helpviewer/Network/NetworkAccessManager.py Mon Sep 24 19:14:39 2012 +0200 +++ b/Helpviewer/Network/NetworkAccessManager.py Mon Sep 24 20:23:18 2012 +0200 @@ -36,6 +36,7 @@ from .EricAccessHandler import EricAccessHandler from .AboutAccessHandler import AboutAccessHandler from .FtpAccessHandler import FtpAccessHandler +from .FileAccessHandler import FileAccessHandler from Helpviewer.AdBlock.AdBlockAccessHandler import AdBlockAccessHandler @@ -99,6 +100,7 @@ self.setSchemeHandler("about", AboutAccessHandler(self)) self.setSchemeHandler("abp", AdBlockAccessHandler(self)) self.setSchemeHandler("ftp", FtpAccessHandler(self)) + self.setSchemeHandler("file", FileAccessHandler(self)) def setSchemeHandler(self, scheme, handler): """
--- a/changelog Mon Sep 24 19:14:39 2012 +0200 +++ b/changelog Mon Sep 24 20:23:18 2012 +0200 @@ -37,6 +37,7 @@ -- added support for variable AdBlock update periods (given in subscription) -- changed FTP support to use Python's ftplib instead of QFtp because the later is not supported in Qt5 anymore + -- added a handler for file: schemes to allow directory listings Version 5.3-snapshot-20120624: - bug fixes
--- a/eric5.e4p Mon Sep 24 19:14:39 2012 +0200 +++ b/eric5.e4p Mon Sep 24 20:23:18 2012 +0200 @@ -1041,6 +1041,8 @@ <Source>Graphics/ImportsDiagramBuilder.py</Source> <Source>Graphics/ApplicationDiagramBuilder.py</Source> <Source>Utilities/FtpUtilities.py</Source> + <Source>Helpviewer/Network/FileReply.py</Source> + <Source>Helpviewer/Network/FileAccessHandler.py</Source> </Sources> <Forms> <Form>PyUnit/UnittestDialog.ui</Form>
--- a/i18n/eric5_cs.ts Mon Sep 24 19:14:39 2012 +0200 +++ b/i18n/eric5_cs.ts Mon Sep 24 20:23:18 2012 +0200 @@ -13055,6 +13055,31 @@ </message> </context> <context> + <name>FileReply</name> + <message> + <location filename="Helpviewer/Network/FileReply.py" line="201"/> + <source> <p><a class="link_parent" href="{0}">Change to parent directory</a></p></source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="Helpviewer/Network/FileReply.py" line="214"/> + <source> <tr><th align="left">Name</th><th>Size</th><th align="left">Last modified</th></tr> +</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="Helpviewer/Network/FileReply.py" line="240"/> + <source>{0} {1}</source> + <comment>size unit</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="Helpviewer/Network/FileReply.py" line="264"/> + <source>Listing of {0}</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> <name>FiletypeAssociationDialog</name> <message> <location filename="Project/FiletypeAssociationDialog.ui" line="13"/> @@ -28147,42 +28172,42 @@ <context> <name>NetworkAccessManager</name> <message> - <location filename="Helpviewer/Network/NetworkAccessManager.py" line="254"/> + <location filename="Helpviewer/Network/NetworkAccessManager.py" line="256"/> <source>SSL Errors</source> <translation>SSL chyby</translation> </message> <message> - <location filename="Helpviewer/Network/NetworkAccessManager.py" line="267"/> + <location filename="Helpviewer/Network/NetworkAccessManager.py" line="269"/> <source>Certificates</source> <translation>Certifikáty</translation> </message> <message> - <location filename="Helpviewer/Network/NetworkAccessManager.py" line="200"/> + <location filename="Helpviewer/Network/NetworkAccessManager.py" line="202"/> <source><b>Enter username and password for '{0}'</b></source> <translation><b>Zadejte uživatelské jméno a heslo pro '{0}'</b></translation> </message> <message> - <location filename="Helpviewer/Network/NetworkAccessManager.py" line="197"/> + <location filename="Helpviewer/Network/NetworkAccessManager.py" line="199"/> <source><b>Enter username and password for '{0}', realm '{1}'</b></source> <translation><b>Zadejte uživatelské jméno a heslo pro {0}', realm '{1}'</b></translation> </message> <message> - <location filename="Helpviewer/Network/NetworkAccessManager.py" line="254"/> + <location filename="Helpviewer/Network/NetworkAccessManager.py" line="256"/> <source><p>SSL Errors for <br /><b>{0}</b><ul><li>{1}</li></ul></p><p>Do you want to ignore these errors?</p></source> <translation><p>SSL chyby pro <br /><b>{0}</b><ul><li>{1}</li></ul></p><p>Chcete tyto chyby ignorovat?</p></translation> </message> <message> - <location filename="Helpviewer/Network/NetworkAccessManager.py" line="267"/> + <location filename="Helpviewer/Network/NetworkAccessManager.py" line="269"/> <source><p>Certificates:<br/>{0}<br/>Do you want to accept all these certificates?</p></source> <translation><p>Certifikáty:<br/>{0}<br/>Chcete akceptovat všechny certifikáty?</p></translation> </message> <message> - <location filename="Helpviewer/Network/NetworkAccessManager.py" line="321"/> + <location filename="Helpviewer/Network/NetworkAccessManager.py" line="323"/> <source><br/>Issuer: {0}</source> <translation><br/>Vydatavel: {0}</translation> </message> <message> - <location filename="Helpviewer/Network/NetworkAccessManager.py" line="325"/> + <location filename="Helpviewer/Network/NetworkAccessManager.py" line="327"/> <source><br/>Not valid before: {0}<br/>Valid Until: {1}</source> <translation><br/>Neplatný před: {0}<br/>Platný do: {1}</translation> </message> @@ -28192,12 +28217,12 @@ <translation type="obsolete"><br/>Alternativní jména:<ul><li>{0}</li></ul></translation> </message> <message> - <location filename="Helpviewer/Network/NetworkAccessManager.py" line="313"/> + <location filename="Helpviewer/Network/NetworkAccessManager.py" line="315"/> <source>Name: {0}</source> <translation type="unfinished"></translation> </message> <message> - <location filename="Helpviewer/Network/NetworkAccessManager.py" line="317"/> + <location filename="Helpviewer/Network/NetworkAccessManager.py" line="319"/> <source><br/>Organization: {0}</source> <translation type="unfinished"></translation> </message>
--- a/i18n/eric5_de.ts Mon Sep 24 19:14:39 2012 +0200 +++ b/i18n/eric5_de.ts Mon Sep 24 20:23:18 2012 +0200 @@ -12717,6 +12717,32 @@ </message> </context> <context> + <name>FileReply</name> + <message> + <location filename="Helpviewer/Network/FileReply.py" line="201"/> + <source> <p><a class="link_parent" href="{0}">Change to parent directory</a></p></source> + <translation> <p><a class="link_parent" href="{0}">In den übergeordneten Ordner wechseln</a></p></translation> + </message> + <message> + <location filename="Helpviewer/Network/FileReply.py" line="214"/> + <source> <tr><th align="left">Name</th><th>Size</th><th align="left">Last modified</th></tr> +</source> + <translation> <tr><th align="left">Name</th><th>Größe</th><th align="left">Zuletzt verändert</th></tr> +</translation> + </message> + <message> + <location filename="Helpviewer/Network/FileReply.py" line="240"/> + <source>{0} {1}</source> + <comment>size unit</comment> + <translation>{0} {1}</translation> + </message> + <message> + <location filename="Helpviewer/Network/FileReply.py" line="264"/> + <source>Listing of {0}</source> + <translation>Index von {0}</translation> + </message> +</context> +<context> <name>FiletypeAssociationDialog</name> <message> <location filename="Project/FiletypeAssociationDialog.py" line="37"/> @@ -27098,52 +27124,52 @@ <context> <name>NetworkAccessManager</name> <message> - <location filename="Helpviewer/Network/NetworkAccessManager.py" line="200"/> + <location filename="Helpviewer/Network/NetworkAccessManager.py" line="202"/> <source><b>Enter username and password for '{0}'</b></source> <translation><b>Gib Nutzernamen und Kennwort für '{0}' ein</b></translation> </message> <message> - <location filename="Helpviewer/Network/NetworkAccessManager.py" line="197"/> + <location filename="Helpviewer/Network/NetworkAccessManager.py" line="199"/> <source><b>Enter username and password for '{0}', realm '{1}'</b></source> <translation><b>Gib Nutzernamen und Kennwort für '{0}' und Realm '{1}' ein</b></translation> </message> <message> - <location filename="Helpviewer/Network/NetworkAccessManager.py" line="254"/> + <location filename="Helpviewer/Network/NetworkAccessManager.py" line="256"/> <source>SSL Errors</source> <translation>SSL Fehler</translation> </message> <message> - <location filename="Helpviewer/Network/NetworkAccessManager.py" line="254"/> + <location filename="Helpviewer/Network/NetworkAccessManager.py" line="256"/> <source><p>SSL Errors for <br /><b>{0}</b><ul><li>{1}</li></ul></p><p>Do you want to ignore these errors?</p></source> <translation><p>SSL Fehler für <br /><b>{0}</b><ul><li>{1}</li></ul></p><p>Sollen diese Fehler ignoriert werden?</p></translation> </message> <message> - <location filename="Helpviewer/Network/NetworkAccessManager.py" line="267"/> + <location filename="Helpviewer/Network/NetworkAccessManager.py" line="269"/> <source>Certificates</source> <translation>Zertifikate</translation> </message> <message> - <location filename="Helpviewer/Network/NetworkAccessManager.py" line="267"/> + <location filename="Helpviewer/Network/NetworkAccessManager.py" line="269"/> <source><p>Certificates:<br/>{0}<br/>Do you want to accept all these certificates?</p></source> <translation><p>Zertifikate:<br/>{0}<br/>Sollen alle diese Zertifikate akzeptiert werden?</p></translation> </message> <message> - <location filename="Helpviewer/Network/NetworkAccessManager.py" line="321"/> + <location filename="Helpviewer/Network/NetworkAccessManager.py" line="323"/> <source><br/>Issuer: {0}</source> <translation><br/>Aussteller: {0}</translation> </message> <message> - <location filename="Helpviewer/Network/NetworkAccessManager.py" line="325"/> + <location filename="Helpviewer/Network/NetworkAccessManager.py" line="327"/> <source><br/>Not valid before: {0}<br/>Valid Until: {1}</source> <translation><br/>Gültig ab: {0}<br/>Gültig bis: {1}</translation> </message> <message> - <location filename="Helpviewer/Network/NetworkAccessManager.py" line="313"/> + <location filename="Helpviewer/Network/NetworkAccessManager.py" line="315"/> <source>Name: {0}</source> <translation>Name: {0}</translation> </message> <message> - <location filename="Helpviewer/Network/NetworkAccessManager.py" line="317"/> + <location filename="Helpviewer/Network/NetworkAccessManager.py" line="319"/> <source><br/>Organization: {0}</source> <translation><br/>Organisation: {0}</translation> </message>
--- a/i18n/eric5_en.ts Mon Sep 24 19:14:39 2012 +0200 +++ b/i18n/eric5_en.ts Mon Sep 24 20:23:18 2012 +0200 @@ -12632,6 +12632,31 @@ </message> </context> <context> + <name>FileReply</name> + <message> + <location filename="Helpviewer/Network/FileReply.py" line="201"/> + <source> <p><a class="link_parent" href="{0}">Change to parent directory</a></p></source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="Helpviewer/Network/FileReply.py" line="214"/> + <source> <tr><th align="left">Name</th><th>Size</th><th align="left">Last modified</th></tr> +</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="Helpviewer/Network/FileReply.py" line="240"/> + <source>{0} {1}</source> + <comment>size unit</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="Helpviewer/Network/FileReply.py" line="264"/> + <source>Listing of {0}</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> <name>FiletypeAssociationDialog</name> <message> <location filename="Project/FiletypeAssociationDialog.ui" line="13"/> @@ -26949,52 +26974,52 @@ <context> <name>NetworkAccessManager</name> <message> - <location filename="Helpviewer/Network/NetworkAccessManager.py" line="200"/> + <location filename="Helpviewer/Network/NetworkAccessManager.py" line="202"/> <source><b>Enter username and password for '{0}'</b></source> <translation type="unfinished"></translation> </message> <message> - <location filename="Helpviewer/Network/NetworkAccessManager.py" line="197"/> + <location filename="Helpviewer/Network/NetworkAccessManager.py" line="199"/> <source><b>Enter username and password for '{0}', realm '{1}'</b></source> <translation type="unfinished"></translation> </message> <message> - <location filename="Helpviewer/Network/NetworkAccessManager.py" line="254"/> + <location filename="Helpviewer/Network/NetworkAccessManager.py" line="256"/> <source>SSL Errors</source> <translation type="unfinished"></translation> </message> <message> - <location filename="Helpviewer/Network/NetworkAccessManager.py" line="254"/> + <location filename="Helpviewer/Network/NetworkAccessManager.py" line="256"/> <source><p>SSL Errors for <br /><b>{0}</b><ul><li>{1}</li></ul></p><p>Do you want to ignore these errors?</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="Helpviewer/Network/NetworkAccessManager.py" line="267"/> + <location filename="Helpviewer/Network/NetworkAccessManager.py" line="269"/> <source>Certificates</source> <translation type="unfinished"></translation> </message> <message> - <location filename="Helpviewer/Network/NetworkAccessManager.py" line="267"/> + <location filename="Helpviewer/Network/NetworkAccessManager.py" line="269"/> <source><p>Certificates:<br/>{0}<br/>Do you want to accept all these certificates?</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="Helpviewer/Network/NetworkAccessManager.py" line="321"/> + <location filename="Helpviewer/Network/NetworkAccessManager.py" line="323"/> <source><br/>Issuer: {0}</source> <translation type="unfinished"></translation> </message> <message> - <location filename="Helpviewer/Network/NetworkAccessManager.py" line="325"/> + <location filename="Helpviewer/Network/NetworkAccessManager.py" line="327"/> <source><br/>Not valid before: {0}<br/>Valid Until: {1}</source> <translation type="unfinished"></translation> </message> <message> - <location filename="Helpviewer/Network/NetworkAccessManager.py" line="313"/> + <location filename="Helpviewer/Network/NetworkAccessManager.py" line="315"/> <source>Name: {0}</source> <translation type="unfinished"></translation> </message> <message> - <location filename="Helpviewer/Network/NetworkAccessManager.py" line="317"/> + <location filename="Helpviewer/Network/NetworkAccessManager.py" line="319"/> <source><br/>Organization: {0}</source> <translation type="unfinished"></translation> </message>
--- a/i18n/eric5_es.ts Mon Sep 24 19:14:39 2012 +0200 +++ b/i18n/eric5_es.ts Mon Sep 24 20:23:18 2012 +0200 @@ -12777,6 +12777,32 @@ </message> </context> <context> + <name>FileReply</name> + <message> + <location filename="Helpviewer/Network/FileReply.py" line="201"/> + <source> <p><a class="link_parent" href="{0}">Change to parent directory</a></p></source> + <translation type="unfinished"> <p><a class="link_parent" href="{0}">Cambiar al directorio superior</a></p></translation> + </message> + <message> + <location filename="Helpviewer/Network/FileReply.py" line="214"/> + <source> <tr><th align="left">Name</th><th>Size</th><th align="left">Last modified</th></tr> +</source> + <translation type="unfinished"> <tr><th align="left">Nombre</th><th>Tamaño</th><th align="left">Última modificación</th></tr> +</translation> + </message> + <message> + <location filename="Helpviewer/Network/FileReply.py" line="240"/> + <source>{0} {1}</source> + <comment>size unit</comment> + <translation type="unfinished">{0} {1}</translation> + </message> + <message> + <location filename="Helpviewer/Network/FileReply.py" line="264"/> + <source>Listing of {0}</source> + <translation type="unfinished">Listado de {0}</translation> + </message> +</context> +<context> <name>FiletypeAssociationDialog</name> <message> <location filename="Project/FiletypeAssociationDialog.ui" line="13"/> @@ -27280,52 +27306,52 @@ <context> <name>NetworkAccessManager</name> <message> - <location filename="Helpviewer/Network/NetworkAccessManager.py" line="254"/> + <location filename="Helpviewer/Network/NetworkAccessManager.py" line="256"/> <source>SSL Errors</source> <translation>Errores de SSL</translation> </message> <message> - <location filename="Helpviewer/Network/NetworkAccessManager.py" line="267"/> + <location filename="Helpviewer/Network/NetworkAccessManager.py" line="269"/> <source>Certificates</source> <translation>Certificados</translation> </message> <message> - <location filename="Helpviewer/Network/NetworkAccessManager.py" line="200"/> + <location filename="Helpviewer/Network/NetworkAccessManager.py" line="202"/> <source><b>Enter username and password for '{0}'</b></source> <translation><b>Introduzca nombre de usuario y contraseña para '{0}'</b></translation> </message> <message> - <location filename="Helpviewer/Network/NetworkAccessManager.py" line="197"/> + <location filename="Helpviewer/Network/NetworkAccessManager.py" line="199"/> <source><b>Enter username and password for '{0}', realm '{1}'</b></source> <translation><b>Introduzca nombre de usuario y contraseña para '{0}', reino {1}'</b></translation> </message> <message> - <location filename="Helpviewer/Network/NetworkAccessManager.py" line="254"/> + <location filename="Helpviewer/Network/NetworkAccessManager.py" line="256"/> <source><p>SSL Errors for <br /><b>{0}</b><ul><li>{1}</li></ul></p><p>Do you want to ignore these errors?</p></source> <translation><p>Errores de SSL para <br /><b>{0}</b><ul><li>{1}</li></ul></p><p>¿Desea ignorar estos errores?</p></translation> </message> <message> - <location filename="Helpviewer/Network/NetworkAccessManager.py" line="267"/> + <location filename="Helpviewer/Network/NetworkAccessManager.py" line="269"/> <source><p>Certificates:<br/>{0}<br/>Do you want to accept all these certificates?</p></source> <translation><p>Certificados:<br/>{0}<br/>¿Desea aceptar todos estos certificados?</p></translation> </message> <message> - <location filename="Helpviewer/Network/NetworkAccessManager.py" line="321"/> + <location filename="Helpviewer/Network/NetworkAccessManager.py" line="323"/> <source><br/>Issuer: {0}</source> <translation><br/>Emisor: {0}</translation> </message> <message> - <location filename="Helpviewer/Network/NetworkAccessManager.py" line="325"/> + <location filename="Helpviewer/Network/NetworkAccessManager.py" line="327"/> <source><br/>Not valid before: {0}<br/>Valid Until: {1}</source> <translation><br/>No válido antes de: {0}<br/>Válido Hasta: {1}</translation> </message> <message> - <location filename="Helpviewer/Network/NetworkAccessManager.py" line="313"/> + <location filename="Helpviewer/Network/NetworkAccessManager.py" line="315"/> <source>Name: {0}</source> <translation>Nombre: {0}</translation> </message> <message> - <location filename="Helpviewer/Network/NetworkAccessManager.py" line="317"/> + <location filename="Helpviewer/Network/NetworkAccessManager.py" line="319"/> <source><br/>Organization: {0}</source> <translation><br/>Organización: {0}</translation> </message>
--- a/i18n/eric5_fr.ts Mon Sep 24 19:14:39 2012 +0200 +++ b/i18n/eric5_fr.ts Mon Sep 24 20:23:18 2012 +0200 @@ -13873,6 +13873,31 @@ </message> </context> <context> + <name>FileReply</name> + <message> + <location filename="Helpviewer/Network/FileReply.py" line="201"/> + <source> <p><a class="link_parent" href="{0}">Change to parent directory</a></p></source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="Helpviewer/Network/FileReply.py" line="214"/> + <source> <tr><th align="left">Name</th><th>Size</th><th align="left">Last modified</th></tr> +</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="Helpviewer/Network/FileReply.py" line="240"/> + <source>{0} {1}</source> + <comment>size unit</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="Helpviewer/Network/FileReply.py" line="264"/> + <source>Listing of {0}</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> <name>FiletypeAssociationDialog</name> <message> <location filename="Project/FiletypeAssociationDialog.py" line="37"/> @@ -29399,52 +29424,52 @@ <translation type="obsolete"><b>Connexion au proxy '%1' en utilisant:</b></translation> </message> <message> - <location filename="Helpviewer/Network/NetworkAccessManager.py" line="254"/> + <location filename="Helpviewer/Network/NetworkAccessManager.py" line="256"/> <source>SSL Errors</source> <translation type="unfinished">Erreurs SSL</translation> </message> <message> - <location filename="Helpviewer/Network/NetworkAccessManager.py" line="267"/> + <location filename="Helpviewer/Network/NetworkAccessManager.py" line="269"/> <source>Certificates</source> <translation type="unfinished"></translation> </message> <message> - <location filename="Helpviewer/Network/NetworkAccessManager.py" line="200"/> + <location filename="Helpviewer/Network/NetworkAccessManager.py" line="202"/> <source><b>Enter username and password for '{0}'</b></source> <translation type="unfinished"></translation> </message> <message> - <location filename="Helpviewer/Network/NetworkAccessManager.py" line="197"/> + <location filename="Helpviewer/Network/NetworkAccessManager.py" line="199"/> <source><b>Enter username and password for '{0}', realm '{1}'</b></source> <translation type="unfinished"></translation> </message> <message> - <location filename="Helpviewer/Network/NetworkAccessManager.py" line="254"/> + <location filename="Helpviewer/Network/NetworkAccessManager.py" line="256"/> <source><p>SSL Errors for <br /><b>{0}</b><ul><li>{1}</li></ul></p><p>Do you want to ignore these errors?</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="Helpviewer/Network/NetworkAccessManager.py" line="267"/> + <location filename="Helpviewer/Network/NetworkAccessManager.py" line="269"/> <source><p>Certificates:<br/>{0}<br/>Do you want to accept all these certificates?</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="Helpviewer/Network/NetworkAccessManager.py" line="321"/> + <location filename="Helpviewer/Network/NetworkAccessManager.py" line="323"/> <source><br/>Issuer: {0}</source> <translation type="unfinished"></translation> </message> <message> - <location filename="Helpviewer/Network/NetworkAccessManager.py" line="325"/> + <location filename="Helpviewer/Network/NetworkAccessManager.py" line="327"/> <source><br/>Not valid before: {0}<br/>Valid Until: {1}</source> <translation type="unfinished"></translation> </message> <message> - <location filename="Helpviewer/Network/NetworkAccessManager.py" line="313"/> + <location filename="Helpviewer/Network/NetworkAccessManager.py" line="315"/> <source>Name: {0}</source> <translation type="unfinished"></translation> </message> <message> - <location filename="Helpviewer/Network/NetworkAccessManager.py" line="317"/> + <location filename="Helpviewer/Network/NetworkAccessManager.py" line="319"/> <source><br/>Organization: {0}</source> <translation type="unfinished"></translation> </message>
--- a/i18n/eric5_it.ts Mon Sep 24 19:14:39 2012 +0200 +++ b/i18n/eric5_it.ts Mon Sep 24 20:23:18 2012 +0200 @@ -12889,6 +12889,32 @@ </message> </context> <context> + <name>FileReply</name> + <message> + <location filename="Helpviewer/Network/FileReply.py" line="201"/> + <source> <p><a class="link_parent" href="{0}">Change to parent directory</a></p></source> + <translation type="unfinished"> <p><a class="link_parent" href="{0}">Cambia alla directory superiore</a></p></translation> + </message> + <message> + <location filename="Helpviewer/Network/FileReply.py" line="214"/> + <source> <tr><th align="left">Name</th><th>Size</th><th align="left">Last modified</th></tr> +</source> + <translation type="unfinished"> <tr><th align="left">Nome</th><th>Dimensione</th><th align="left">Ultima modifica</th></tr> +</translation> + </message> + <message> + <location filename="Helpviewer/Network/FileReply.py" line="240"/> + <source>{0} {1}</source> + <comment>size unit</comment> + <translation type="unfinished">{0} {1}</translation> + </message> + <message> + <location filename="Helpviewer/Network/FileReply.py" line="264"/> + <source>Listing of {0}</source> + <translation type="unfinished">Elenco di {0}</translation> + </message> +</context> +<context> <name>FiletypeAssociationDialog</name> <message> <location filename="Project/FiletypeAssociationDialog.py" line="37"/> @@ -27758,52 +27784,52 @@ <context> <name>NetworkAccessManager</name> <message> - <location filename="Helpviewer/Network/NetworkAccessManager.py" line="254"/> + <location filename="Helpviewer/Network/NetworkAccessManager.py" line="256"/> <source>SSL Errors</source> <translation>Errori SSL</translation> </message> <message> - <location filename="Helpviewer/Network/NetworkAccessManager.py" line="267"/> + <location filename="Helpviewer/Network/NetworkAccessManager.py" line="269"/> <source>Certificates</source> <translation>Certificati</translation> </message> <message> - <location filename="Helpviewer/Network/NetworkAccessManager.py" line="200"/> + <location filename="Helpviewer/Network/NetworkAccessManager.py" line="202"/> <source><b>Enter username and password for '{0}'</b></source> <translation><b>Inserisci utente e password per '{0}'</b></translation> </message> <message> - <location filename="Helpviewer/Network/NetworkAccessManager.py" line="197"/> + <location filename="Helpviewer/Network/NetworkAccessManager.py" line="199"/> <source><b>Enter username and password for '{0}', realm '{1}'</b></source> <translation><b>Inserisci utente e password per '{0}', dominio '{1}'</b></translation> </message> <message> - <location filename="Helpviewer/Network/NetworkAccessManager.py" line="254"/> + <location filename="Helpviewer/Network/NetworkAccessManager.py" line="256"/> <source><p>SSL Errors for <br /><b>{0}</b><ul><li>{1}</li></ul></p><p>Do you want to ignore these errors?</p></source> <translation><p>Errori SSL per <br /><b>{0}</b><ul><li>{1}</li></ul></p><p>Vuoi ignorarli ?</p></translation> </message> <message> - <location filename="Helpviewer/Network/NetworkAccessManager.py" line="267"/> + <location filename="Helpviewer/Network/NetworkAccessManager.py" line="269"/> <source><p>Certificates:<br/>{0}<br/>Do you want to accept all these certificates?</p></source> <translation><p>Certificati:<br/>{0}<br/>Vuoi accettare tutti questi certificati?</p></translation> </message> <message> - <location filename="Helpviewer/Network/NetworkAccessManager.py" line="321"/> + <location filename="Helpviewer/Network/NetworkAccessManager.py" line="323"/> <source><br/>Issuer: {0}</source> <translation><br/>Emettitore: {0}</translation> </message> <message> - <location filename="Helpviewer/Network/NetworkAccessManager.py" line="325"/> + <location filename="Helpviewer/Network/NetworkAccessManager.py" line="327"/> <source><br/>Not valid before: {0}<br/>Valid Until: {1}</source> <translation><br/>Non valido prima: {0}<br/>Valido Fino: {1}</translation> </message> <message> - <location filename="Helpviewer/Network/NetworkAccessManager.py" line="313"/> + <location filename="Helpviewer/Network/NetworkAccessManager.py" line="315"/> <source>Name: {0}</source> <translation>Nome: {0}</translation> </message> <message> - <location filename="Helpviewer/Network/NetworkAccessManager.py" line="317"/> + <location filename="Helpviewer/Network/NetworkAccessManager.py" line="319"/> <source><br/>Organization: {0}</source> <translation><br/>Organizzazione: {0}</translation> </message>
--- a/i18n/eric5_ru.ts Mon Sep 24 19:14:39 2012 +0200 +++ b/i18n/eric5_ru.ts Mon Sep 24 20:23:18 2012 +0200 @@ -12986,6 +12986,32 @@ </message> </context> <context> + <name>FileReply</name> + <message> + <location filename="Helpviewer/Network/FileReply.py" line="201"/> + <source> <p><a class="link_parent" href="{0}">Change to parent directory</a></p></source> + <translation type="unfinished"> <p><a class="link_parent" href="{0}">Перейти в родительский каталог</a></p></translation> + </message> + <message> + <location filename="Helpviewer/Network/FileReply.py" line="214"/> + <source> <tr><th align="left">Name</th><th>Size</th><th align="left">Last modified</th></tr> +</source> + <translation type="unfinished"> <tr><th align="left">Имя</th><th>Размер</th><th align="left">Последнее изменение</th></tr> +</translation> + </message> + <message> + <location filename="Helpviewer/Network/FileReply.py" line="240"/> + <source>{0} {1}</source> + <comment>size unit</comment> + <translation type="unfinished">{0} {1}</translation> + </message> + <message> + <location filename="Helpviewer/Network/FileReply.py" line="264"/> + <source>Listing of {0}</source> + <translation type="unfinished">Список {0}</translation> + </message> +</context> +<context> <name>FiletypeAssociationDialog</name> <message> <location filename="Project/FiletypeAssociationDialog.py" line="37"/> @@ -27885,52 +27911,52 @@ <context> <name>NetworkAccessManager</name> <message> - <location filename="Helpviewer/Network/NetworkAccessManager.py" line="200"/> + <location filename="Helpviewer/Network/NetworkAccessManager.py" line="202"/> <source><b>Enter username and password for '{0}'</b></source> <translation><b>Введите имя пользователя и пароль для '{0}'</b></translation> </message> <message> - <location filename="Helpviewer/Network/NetworkAccessManager.py" line="197"/> + <location filename="Helpviewer/Network/NetworkAccessManager.py" line="199"/> <source><b>Enter username and password for '{0}', realm '{1}'</b></source> <translation><b>Введите имя пользователя и пароль для '{0}'; realm '{1}'</b></translation> </message> <message> - <location filename="Helpviewer/Network/NetworkAccessManager.py" line="254"/> + <location filename="Helpviewer/Network/NetworkAccessManager.py" line="256"/> <source>SSL Errors</source> <translation>Ошибки SSL</translation> </message> <message> - <location filename="Helpviewer/Network/NetworkAccessManager.py" line="254"/> + <location filename="Helpviewer/Network/NetworkAccessManager.py" line="256"/> <source><p>SSL Errors for <br /><b>{0}</b><ul><li>{1}</li></ul></p><p>Do you want to ignore these errors?</p></source> <translation><p>Ошибки SSL для <br /><b>{0}</b><ul><li>{1}</li></ul></p><p>Игнорировать?</p></translation> </message> <message> - <location filename="Helpviewer/Network/NetworkAccessManager.py" line="267"/> + <location filename="Helpviewer/Network/NetworkAccessManager.py" line="269"/> <source>Certificates</source> <translation>Сертификаты</translation> </message> <message> - <location filename="Helpviewer/Network/NetworkAccessManager.py" line="267"/> + <location filename="Helpviewer/Network/NetworkAccessManager.py" line="269"/> <source><p>Certificates:<br/>{0}<br/>Do you want to accept all these certificates?</p></source> <translation><p>Сертификаты:<br/>{0}<br/>Принять?</p></translation> </message> <message> - <location filename="Helpviewer/Network/NetworkAccessManager.py" line="321"/> + <location filename="Helpviewer/Network/NetworkAccessManager.py" line="323"/> <source><br/>Issuer: {0}</source> <translation><br/>Эмитент: {0}</translation> </message> <message> - <location filename="Helpviewer/Network/NetworkAccessManager.py" line="325"/> + <location filename="Helpviewer/Network/NetworkAccessManager.py" line="327"/> <source><br/>Not valid before: {0}<br/>Valid Until: {1}</source> <translation><br/>Не действительны ранее: {0}<br/>Действительны до: {1}</translation> </message> <message> - <location filename="Helpviewer/Network/NetworkAccessManager.py" line="313"/> + <location filename="Helpviewer/Network/NetworkAccessManager.py" line="315"/> <source>Name: {0}</source> <translation>Имя: {0}</translation> </message> <message> - <location filename="Helpviewer/Network/NetworkAccessManager.py" line="317"/> + <location filename="Helpviewer/Network/NetworkAccessManager.py" line="319"/> <source><br/>Organization: {0}</source> <translation><br/>Организация: {0}</translation> </message>
--- a/i18n/eric5_tr.ts Mon Sep 24 19:14:39 2012 +0200 +++ b/i18n/eric5_tr.ts Mon Sep 24 20:23:18 2012 +0200 @@ -13067,6 +13067,31 @@ </message> </context> <context> + <name>FileReply</name> + <message> + <location filename="Helpviewer/Network/FileReply.py" line="201"/> + <source> <p><a class="link_parent" href="{0}">Change to parent directory</a></p></source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="Helpviewer/Network/FileReply.py" line="214"/> + <source> <tr><th align="left">Name</th><th>Size</th><th align="left">Last modified</th></tr> +</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="Helpviewer/Network/FileReply.py" line="240"/> + <source>{0} {1}</source> + <comment>size unit</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="Helpviewer/Network/FileReply.py" line="264"/> + <source>Listing of {0}</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> <name>FiletypeAssociationDialog</name> <message> <location filename="Project/FiletypeAssociationDialog.ui" line="13"/> @@ -27958,12 +27983,12 @@ <context> <name>NetworkAccessManager</name> <message> - <location filename="Helpviewer/Network/NetworkAccessManager.py" line="200"/> + <location filename="Helpviewer/Network/NetworkAccessManager.py" line="202"/> <source><b>Enter username and password for '{0}'</b></source> <translation><b> '{0}' için kullanıcı adını ve parolayı giriniz</b></translation> </message> <message> - <location filename="Helpviewer/Network/NetworkAccessManager.py" line="197"/> + <location filename="Helpviewer/Network/NetworkAccessManager.py" line="199"/> <source><b>Enter username and password for '{0}', realm '{1}'</b></source> <translation><b> '{1}' alanı, '{0}' için kullanıcı adı ve parola giriniz</b></translation> </message> @@ -27973,42 +27998,42 @@ <translation type="obsolete"><b>'{0}' proxy'sini kullanarak bağlan:</b></translation> </message> <message> - <location filename="Helpviewer/Network/NetworkAccessManager.py" line="254"/> + <location filename="Helpviewer/Network/NetworkAccessManager.py" line="256"/> <source>SSL Errors</source> <translation>SSL Hataları</translation> </message> <message> - <location filename="Helpviewer/Network/NetworkAccessManager.py" line="254"/> + <location filename="Helpviewer/Network/NetworkAccessManager.py" line="256"/> <source><p>SSL Errors for <br /><b>{0}</b><ul><li>{1}</li></ul></p><p>Do you want to ignore these errors?</p></source> <translation><p>SSL Hataları <br /><b>{0}</b><ul><li>{1}</li></ul></p><p>Bu hataları yoksaymak istiyor musunuz?</p></translation> </message> <message> - <location filename="Helpviewer/Network/NetworkAccessManager.py" line="267"/> + <location filename="Helpviewer/Network/NetworkAccessManager.py" line="269"/> <source>Certificates</source> <translation>Sertifikalar</translation> </message> <message> - <location filename="Helpviewer/Network/NetworkAccessManager.py" line="267"/> + <location filename="Helpviewer/Network/NetworkAccessManager.py" line="269"/> <source><p>Certificates:<br/>{0}<br/>Do you want to accept all these certificates?</p></source> <translation><p>Sertifalar:<br/>{0}<br/>Bu sertifikalrı kabul etmek istiyor musunuz?</p></translation> </message> <message> - <location filename="Helpviewer/Network/NetworkAccessManager.py" line="321"/> + <location filename="Helpviewer/Network/NetworkAccessManager.py" line="323"/> <source><br/>Issuer: {0}</source> <translation><br/>Yayımcı: {0}</translation> </message> <message> - <location filename="Helpviewer/Network/NetworkAccessManager.py" line="325"/> + <location filename="Helpviewer/Network/NetworkAccessManager.py" line="327"/> <source><br/>Not valid before: {0}<br/>Valid Until: {1}</source> <translation><br/>Geçerlilik başlangıcı: {0}<br/>Geçerlilek bitişi: {1}</translation> </message> <message> - <location filename="Helpviewer/Network/NetworkAccessManager.py" line="313"/> + <location filename="Helpviewer/Network/NetworkAccessManager.py" line="315"/> <source>Name: {0}</source> <translation type="unfinished"></translation> </message> <message> - <location filename="Helpviewer/Network/NetworkAccessManager.py" line="317"/> + <location filename="Helpviewer/Network/NetworkAccessManager.py" line="319"/> <source><br/>Organization: {0}</source> <translation type="unfinished"></translation> </message>
--- a/i18n/eric5_zh_CN.GB2312.ts Mon Sep 24 19:14:39 2012 +0200 +++ b/i18n/eric5_zh_CN.GB2312.ts Mon Sep 24 20:23:18 2012 +0200 @@ -13820,6 +13820,31 @@ </message> </context> <context> + <name>FileReply</name> + <message> + <location filename="Helpviewer/Network/FileReply.py" line="201"/> + <source> <p><a class="link_parent" href="{0}">Change to parent directory</a></p></source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="Helpviewer/Network/FileReply.py" line="214"/> + <source> <tr><th align="left">Name</th><th>Size</th><th align="left">Last modified</th></tr> +</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="Helpviewer/Network/FileReply.py" line="240"/> + <source>{0} {1}</source> + <comment>size unit</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="Helpviewer/Network/FileReply.py" line="264"/> + <source>Listing of {0}</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> <name>FiletypeAssociationDialog</name> <message> <location filename="Project/FiletypeAssociationDialog.ui" line="13"/> @@ -29371,52 +29396,52 @@ <translation type="obsolete"><b>连接到代理 '%1' ,使用:</b></translation> </message> <message> - <location filename="Helpviewer/Network/NetworkAccessManager.py" line="254"/> + <location filename="Helpviewer/Network/NetworkAccessManager.py" line="256"/> <source>SSL Errors</source> <translation type="unfinished">SSL 错误</translation> </message> <message> - <location filename="Helpviewer/Network/NetworkAccessManager.py" line="267"/> + <location filename="Helpviewer/Network/NetworkAccessManager.py" line="269"/> <source>Certificates</source> <translation type="unfinished"></translation> </message> <message> - <location filename="Helpviewer/Network/NetworkAccessManager.py" line="200"/> + <location filename="Helpviewer/Network/NetworkAccessManager.py" line="202"/> <source><b>Enter username and password for '{0}'</b></source> <translation type="unfinished"></translation> </message> <message> - <location filename="Helpviewer/Network/NetworkAccessManager.py" line="197"/> + <location filename="Helpviewer/Network/NetworkAccessManager.py" line="199"/> <source><b>Enter username and password for '{0}', realm '{1}'</b></source> <translation type="unfinished"></translation> </message> <message> - <location filename="Helpviewer/Network/NetworkAccessManager.py" line="254"/> + <location filename="Helpviewer/Network/NetworkAccessManager.py" line="256"/> <source><p>SSL Errors for <br /><b>{0}</b><ul><li>{1}</li></ul></p><p>Do you want to ignore these errors?</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="Helpviewer/Network/NetworkAccessManager.py" line="267"/> + <location filename="Helpviewer/Network/NetworkAccessManager.py" line="269"/> <source><p>Certificates:<br/>{0}<br/>Do you want to accept all these certificates?</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="Helpviewer/Network/NetworkAccessManager.py" line="321"/> + <location filename="Helpviewer/Network/NetworkAccessManager.py" line="323"/> <source><br/>Issuer: {0}</source> <translation type="unfinished"></translation> </message> <message> - <location filename="Helpviewer/Network/NetworkAccessManager.py" line="325"/> + <location filename="Helpviewer/Network/NetworkAccessManager.py" line="327"/> <source><br/>Not valid before: {0}<br/>Valid Until: {1}</source> <translation type="unfinished"></translation> </message> <message> - <location filename="Helpviewer/Network/NetworkAccessManager.py" line="313"/> + <location filename="Helpviewer/Network/NetworkAccessManager.py" line="315"/> <source>Name: {0}</source> <translation type="unfinished"></translation> </message> <message> - <location filename="Helpviewer/Network/NetworkAccessManager.py" line="317"/> + <location filename="Helpviewer/Network/NetworkAccessManager.py" line="319"/> <source><br/>Organization: {0}</source> <translation type="unfinished"></translation> </message>