Mon, 13 Sep 2010 15:59:43 +0200
Migrated project debugger properties handler to project debugger properties reader/writer.
Documentation/Source/eric5.E5XML.DebuggerPropertiesHandler.html | file | annotate | diff | comparison | revisions | |
E5XML/DebuggerPropertiesHandler.py | file | annotate | diff | comparison | revisions | |
E5XML/DebuggerPropertiesReader.py | file | annotate | diff | comparison | revisions | |
E5XML/DebuggerPropertiesWriter.py | file | annotate | diff | comparison | revisions | |
Project/Project.py | file | annotate | diff | comparison | revisions | |
eric5.e4p | file | annotate | diff | comparison | revisions |
--- a/Documentation/Source/eric5.E5XML.DebuggerPropertiesHandler.html Mon Sep 13 09:06:38 2010 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,221 +0,0 @@ -<?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.E5XML.DebuggerPropertiesHandler</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.E5XML.DebuggerPropertiesHandler</h1> -<p> -Module implementing the handler class for reading an XML project debugger properties file. -</p> -<h3>Global Attributes</h3> -<table> -<tr><td>None</td></tr> -</table> -<h3>Classes</h3> -<table> -<tr> -<td><a href="#DebuggerPropertiesHandler">DebuggerPropertiesHandler</a></td> -<td>Class implementing a sax handler to read an XML project debugger properties file.</td> -</tr> -</table> -<h3>Functions</h3> -<table> -<tr><td>None</td></tr> -</table> -<hr /><hr /> -<a NAME="DebuggerPropertiesHandler" ID="DebuggerPropertiesHandler"></a> -<h2>DebuggerPropertiesHandler</h2> -<p> - Class implementing a sax handler to read an XML project debugger properties file. -</p> -<h3>Derived from</h3> -XMLHandlerBase -<h3>Class Attributes</h3> -<table> -<tr><td>None</td></tr> -</table> -<h3>Methods</h3> -<table> -<tr> -<td><a href="#DebuggerPropertiesHandler.__init__">DebuggerPropertiesHandler</a></td> -<td>Constructor</td> -</tr><tr> -<td><a href="#DebuggerPropertiesHandler.endConsoleDebugger">endConsoleDebugger</a></td> -<td>Handler method for the "ConsoleDebugger" end tag.</td> -</tr><tr> -<td><a href="#DebuggerPropertiesHandler.endDebugClient">endDebugClient</a></td> -<td>Handler method for the "DebugClient" end tag.</td> -</tr><tr> -<td><a href="#DebuggerPropertiesHandler.endEnvironment">endEnvironment</a></td> -<td>Handler method for the "Environment" end tag.</td> -</tr><tr> -<td><a href="#DebuggerPropertiesHandler.endInterpreter">endInterpreter</a></td> -<td>Handler method for the "Interpreter" end tag.</td> -</tr><tr> -<td><a href="#DebuggerPropertiesHandler.endLocalPath">endLocalPath</a></td> -<td>Handler method for the "LocalPath" end tag.</td> -</tr><tr> -<td><a href="#DebuggerPropertiesHandler.endRemoteCommand">endRemoteCommand</a></td> -<td>Handler method for the "RemoteCommand" end tag.</td> -</tr><tr> -<td><a href="#DebuggerPropertiesHandler.endRemoteHost">endRemoteHost</a></td> -<td>Handler method for the "RemoteHost" end tag.</td> -</tr><tr> -<td><a href="#DebuggerPropertiesHandler.endRemotePath">endRemotePath</a></td> -<td>Handler method for the "RemotePath" end tag.</td> -</tr><tr> -<td><a href="#DebuggerPropertiesHandler.getVersion">getVersion</a></td> -<td>Public method to retrieve the version of the debugger properties.</td> -</tr><tr> -<td><a href="#DebuggerPropertiesHandler.startConsoleDebugger">startConsoleDebugger</a></td> -<td>Handler method for the "ConsoleDebugger" start tag.</td> -</tr><tr> -<td><a href="#DebuggerPropertiesHandler.startDebuggerProperties">startDebuggerProperties</a></td> -<td>Handler method for the "DebuggerProperties" start tag.</td> -</tr><tr> -<td><a href="#DebuggerPropertiesHandler.startDocumentDebuggerProperties">startDocumentDebuggerProperties</a></td> -<td>Handler called, when the document parsing is started.</td> -</tr><tr> -<td><a href="#DebuggerPropertiesHandler.startEnvironment">startEnvironment</a></td> -<td>Handler method for the "Environment" start tag.</td> -</tr><tr> -<td><a href="#DebuggerPropertiesHandler.startNoencoding">startNoencoding</a></td> -<td>Handler method for the "Noencoding" start tag.</td> -</tr><tr> -<td><a href="#DebuggerPropertiesHandler.startPathTranslation">startPathTranslation</a></td> -<td>Handler method for the "PathTranslation" start tag.</td> -</tr><tr> -<td><a href="#DebuggerPropertiesHandler.startRedirect">startRedirect</a></td> -<td>Handler method for the "Redirect" start tag.</td> -</tr><tr> -<td><a href="#DebuggerPropertiesHandler.startRemoteDebugger">startRemoteDebugger</a></td> -<td>Handler method for the "RemoteDebugger" start tag.</td> -</tr> -</table> -<a NAME="DebuggerPropertiesHandler.__init__" ID="DebuggerPropertiesHandler.__init__"></a> -<h4>DebuggerPropertiesHandler (Constructor)</h4> -<b>DebuggerPropertiesHandler</b>(<i>project</i>) -<p> - Constructor -</p><dl> -<dt><i>project</i></dt> -<dd> -Reference to the project object to store the - information into. -</dd> -</dl><a NAME="DebuggerPropertiesHandler.endConsoleDebugger" ID="DebuggerPropertiesHandler.endConsoleDebugger"></a> -<h4>DebuggerPropertiesHandler.endConsoleDebugger</h4> -<b>endConsoleDebugger</b>(<i></i>) -<p> - Handler method for the "ConsoleDebugger" end tag. -</p><a NAME="DebuggerPropertiesHandler.endDebugClient" ID="DebuggerPropertiesHandler.endDebugClient"></a> -<h4>DebuggerPropertiesHandler.endDebugClient</h4> -<b>endDebugClient</b>(<i></i>) -<p> - Handler method for the "DebugClient" end tag. -</p><a NAME="DebuggerPropertiesHandler.endEnvironment" ID="DebuggerPropertiesHandler.endEnvironment"></a> -<h4>DebuggerPropertiesHandler.endEnvironment</h4> -<b>endEnvironment</b>(<i></i>) -<p> - Handler method for the "Environment" end tag. -</p><a NAME="DebuggerPropertiesHandler.endInterpreter" ID="DebuggerPropertiesHandler.endInterpreter"></a> -<h4>DebuggerPropertiesHandler.endInterpreter</h4> -<b>endInterpreter</b>(<i></i>) -<p> - Handler method for the "Interpreter" end tag. -</p><a NAME="DebuggerPropertiesHandler.endLocalPath" ID="DebuggerPropertiesHandler.endLocalPath"></a> -<h4>DebuggerPropertiesHandler.endLocalPath</h4> -<b>endLocalPath</b>(<i></i>) -<p> - Handler method for the "LocalPath" end tag. -</p><a NAME="DebuggerPropertiesHandler.endRemoteCommand" ID="DebuggerPropertiesHandler.endRemoteCommand"></a> -<h4>DebuggerPropertiesHandler.endRemoteCommand</h4> -<b>endRemoteCommand</b>(<i></i>) -<p> - Handler method for the "RemoteCommand" end tag. -</p><a NAME="DebuggerPropertiesHandler.endRemoteHost" ID="DebuggerPropertiesHandler.endRemoteHost"></a> -<h4>DebuggerPropertiesHandler.endRemoteHost</h4> -<b>endRemoteHost</b>(<i></i>) -<p> - Handler method for the "RemoteHost" end tag. -</p><a NAME="DebuggerPropertiesHandler.endRemotePath" ID="DebuggerPropertiesHandler.endRemotePath"></a> -<h4>DebuggerPropertiesHandler.endRemotePath</h4> -<b>endRemotePath</b>(<i></i>) -<p> - Handler method for the "RemotePath" end tag. -</p><a NAME="DebuggerPropertiesHandler.getVersion" ID="DebuggerPropertiesHandler.getVersion"></a> -<h4>DebuggerPropertiesHandler.getVersion</h4> -<b>getVersion</b>(<i></i>) -<p> - Public method to retrieve the version of the debugger properties. -</p><dl> -<dt>Returns:</dt> -<dd> -String containing the version number. -</dd> -</dl><a NAME="DebuggerPropertiesHandler.startConsoleDebugger" ID="DebuggerPropertiesHandler.startConsoleDebugger"></a> -<h4>DebuggerPropertiesHandler.startConsoleDebugger</h4> -<b>startConsoleDebugger</b>(<i>attrs</i>) -<p> - Handler method for the "ConsoleDebugger" start tag. -</p><a NAME="DebuggerPropertiesHandler.startDebuggerProperties" ID="DebuggerPropertiesHandler.startDebuggerProperties"></a> -<h4>DebuggerPropertiesHandler.startDebuggerProperties</h4> -<b>startDebuggerProperties</b>(<i>attrs</i>) -<p> - Handler method for the "DebuggerProperties" start tag. -</p><dl> -<dt><i>attrs</i></dt> -<dd> -list of tag attributes -</dd> -</dl><a NAME="DebuggerPropertiesHandler.startDocumentDebuggerProperties" ID="DebuggerPropertiesHandler.startDocumentDebuggerProperties"></a> -<h4>DebuggerPropertiesHandler.startDocumentDebuggerProperties</h4> -<b>startDocumentDebuggerProperties</b>(<i></i>) -<p> - Handler called, when the document parsing is started. -</p><a NAME="DebuggerPropertiesHandler.startEnvironment" ID="DebuggerPropertiesHandler.startEnvironment"></a> -<h4>DebuggerPropertiesHandler.startEnvironment</h4> -<b>startEnvironment</b>(<i>attrs</i>) -<p> - Handler method for the "Environment" start tag. -</p><a NAME="DebuggerPropertiesHandler.startNoencoding" ID="DebuggerPropertiesHandler.startNoencoding"></a> -<h4>DebuggerPropertiesHandler.startNoencoding</h4> -<b>startNoencoding</b>(<i>attrs</i>) -<p> - Handler method for the "Noencoding" start tag. -</p><a NAME="DebuggerPropertiesHandler.startPathTranslation" ID="DebuggerPropertiesHandler.startPathTranslation"></a> -<h4>DebuggerPropertiesHandler.startPathTranslation</h4> -<b>startPathTranslation</b>(<i>attrs</i>) -<p> - Handler method for the "PathTranslation" start tag. -</p><a NAME="DebuggerPropertiesHandler.startRedirect" ID="DebuggerPropertiesHandler.startRedirect"></a> -<h4>DebuggerPropertiesHandler.startRedirect</h4> -<b>startRedirect</b>(<i>attrs</i>) -<p> - Handler method for the "Redirect" start tag. -</p><a NAME="DebuggerPropertiesHandler.startRemoteDebugger" ID="DebuggerPropertiesHandler.startRemoteDebugger"></a> -<h4>DebuggerPropertiesHandler.startRemoteDebugger</h4> -<b>startRemoteDebugger</b>(<i>attrs</i>) -<p> - Handler method for the "RemoteDebugger" start tag. -</p> -<div align="right"><a href="#top">Up</a></div> -<hr /> -</body></html> \ No newline at end of file
--- a/E5XML/DebuggerPropertiesHandler.py Mon Sep 13 09:06:38 2010 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,167 +0,0 @@ -# -*- coding: utf-8 -*- - -# Copyright (c) 2003 - 2010 Detlev Offenbach <detlev@die-offenbachs.de> -# - -""" -Module implementing the handler class for reading an XML project debugger properties file. -""" - -from .Config import debuggerPropertiesFileFormatVersion -from .XMLHandlerBase import XMLHandlerBase - -class DebuggerPropertiesHandler(XMLHandlerBase): - """ - Class implementing a sax handler to read an XML project debugger properties file. - """ - def __init__(self, project): - """ - Constructor - - @param project Reference to the project object to store the - information into. - """ - XMLHandlerBase.__init__(self) - - self.startDocumentSpecific = self.startDocumentDebuggerProperties - - self.elements.update({ - 'DebuggerProperties' : (self.startDebuggerProperties, self.defaultEndElement), - 'Interpreter' : (self.defaultStartElement, self.endInterpreter), - 'DebugClient' : (self.defaultStartElement, self.endDebugClient), - 'Environment' : (self.startEnvironment, self.endEnvironment), - 'RemoteDebugger' : (self.startRemoteDebugger, self.defaultEndElement), - 'RemoteHost' : (self.defaultStartElement, self.endRemoteHost), - 'RemoteCommand' : (self.defaultStartElement, self.endRemoteCommand), - 'PathTranslation' : (self.startPathTranslation, self.defaultEndElement), - 'RemotePath' : (self.defaultStartElement, self.endRemotePath), - 'LocalPath' : (self.defaultStartElement, self.endLocalPath), - 'ConsoleDebugger' : (self.startConsoleDebugger, self.endConsoleDebugger), - 'Redirect' : (self.startRedirect, self.defaultEndElement), - 'Noencoding' : (self.startNoencoding, self.defaultEndElement), - }) - - self.project = project - - def startDocumentDebuggerProperties(self): - """ - Handler called, when the document parsing is started. - """ - self.version = '' - - ################################################### - ## below follow the individual handler functions - ################################################### - - def endInterpreter(self): - """ - Handler method for the "Interpreter" end tag. - """ - self.project.debugProperties["INTERPRETER"] = self.buffer - - def endDebugClient(self): - """ - Handler method for the "DebugClient" end tag. - """ - self.project.debugProperties["DEBUGCLIENT"] = self.buffer - - def startEnvironment(self, attrs): - """ - Handler method for the "Environment" start tag. - """ - self.buffer = "" - self.project.debugProperties["ENVIRONMENTOVERRIDE"] = \ - int(attrs.get("override", "0")) - - def endEnvironment(self): - """ - Handler method for the "Environment" end tag. - """ - self.project.debugProperties["ENVIRONMENTSTRING"] = \ - self.unescape(self.buffer) - - def startRemoteDebugger(self, attrs): - """ - Handler method for the "RemoteDebugger" start tag. - """ - self.buffer = "" - self.project.debugProperties["REMOTEDEBUGGER"] = \ - int(attrs.get("on", "0")) - - def endRemoteHost(self): - """ - Handler method for the "RemoteHost" end tag. - """ - self.project.debugProperties["REMOTEHOST"] = self.buffer - - def endRemoteCommand(self): - """ - Handler method for the "RemoteCommand" end tag. - """ - self.project.debugProperties["REMOTECOMMAND"] = \ - self.unescape(self.buffer) - - def startPathTranslation(self, attrs): - """ - Handler method for the "PathTranslation" start tag. - """ - self.buffer = "" - self.project.debugProperties["PATHTRANSLATION"] = \ - int(attrs.get("on", "0")) - - def endRemotePath(self): - """ - Handler method for the "RemotePath" end tag. - """ - self.project.debugProperties["REMOTEPATH"] = self.buffer - - def endLocalPath(self): - """ - Handler method for the "LocalPath" end tag. - """ - self.project.debugProperties["LOCALPATH"] = self.buffer - - def startConsoleDebugger(self, attrs): - """ - Handler method for the "ConsoleDebugger" start tag. - """ - self.buffer = "" - self.project.debugProperties["CONSOLEDEBUGGER"] = \ - int(attrs.get("on", "0")) - - def endConsoleDebugger(self): - """ - Handler method for the "ConsoleDebugger" end tag. - """ - self.project.debugProperties["CONSOLECOMMAND"] = \ - self.unescape(self.buffer) - - def startRedirect(self, attrs): - """ - Handler method for the "Redirect" start tag. - """ - self.project.debugProperties["REDIRECT"] = \ - int(attrs.get("on", "1")) - - def startNoencoding(self, attrs): - """ - Handler method for the "Noencoding" start tag. - """ - self.project.debugProperties["NOENCODING"] = \ - int(attrs.get("on", "0")) - - def startDebuggerProperties(self, attrs): - """ - Handler method for the "DebuggerProperties" start tag. - - @param attrs list of tag attributes - """ - self.version = attrs.get('version', debuggerPropertiesFileFormatVersion) - - def getVersion(self): - """ - Public method to retrieve the version of the debugger properties. - - @return String containing the version number. - """ - return self.version
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/E5XML/DebuggerPropertiesReader.py Mon Sep 13 15:59:43 2010 +0200 @@ -0,0 +1,114 @@ +# -*- coding: utf-8 -*- + +# Copyright (c) 2010 Detlev Offenbach <detlev@die-offenbachs.de> +# + +""" +Module implementing a class for reading an XML project debugger properties file. +""" + +from .Config import debuggerPropertiesFileFormatVersion +from .XMLStreamReaderBase import XMLStreamReaderBase + +class DebuggerPropertiesReader(XMLStreamReaderBase): + """ + Class for reading an XML project debugger properties file. + """ + supportedVersions = ["3.9"] + + def __init__(self, device, project): + """ + Constructor + + @param device reference to the I/O device to read from (QIODevice) + @param project Reference to the project object to store the + information into. + """ + XMLStreamReaderBase.__init__(self, device) + + self.project = project + + self.version = "" + + def readXML(self, quiet = False): + """ + Public method to read and parse the XML document. + + @param quiet flag indicating quiet operations. + If this flag is true, no errors are reported. + """ + while not self.atEnd(): + self.readNext() + if self.isStartElement(): + if self.name() == "DebuggerProperties": + self.version = \ + self.attribute("version", debuggerPropertiesFileFormatVersion) + if self.version not in self.supportedVersions: + self.raiseUnsupportedFormatVersion(self.version) + elif self.name() == "Interpreter": + self.project.debugProperties["INTERPRETER"] = self.readElementText() + elif self.name() == "DebugClient": + self.project.debugProperties["DEBUGCLIENT"] = self.readElementText() + elif self.name() == "Environment": + self.project.debugProperties["ENVIRONMENTOVERRIDE"] = \ + int(self.attribute("override", "0")) + self.project.debugProperties["ENVIRONMENTSTRING"] = \ + self.readElementText() + elif self.name() == "RemoteDebugger": + self.__readRemoteDebugger() + elif self.name() == "PathTranslation": + self.__readPathTranslation() + elif self.name() == "ConsoleDebugger": + self.project.debugProperties["CONSOLEDEBUGGER"] = \ + int(self.attribute("on", "0")) + self.project.debugProperties["CONSOLECOMMAND"] = \ + self.readElementText() + elif self.name() == "Redirect": + self.project.debugProperties["REDIRECT"] = \ + int(self.attribute("on", "1")) + elif self.name() == "Noencoding": + self.project.debugProperties["NOENCODING"] = \ + int(self.attribute("on", "0")) + else: + self.raiseUnexpectedStartTag(self.name()) + + if not quiet: + self.showErrorMessage() + + def __readRemoteDebugger(self): + """ + Private method to read the remote debugger info. + """ + self.project.debugProperties["REMOTEDEBUGGER"] = int(self.attribute("on", "0")) + + while not self.atEnd(): + self.readNext() + if self.isEndElement() and self.name() == "RemoteDebugger": + break + + if self.isStartElement(): + if self.name() == "RemoteHost": + self.project.debugProperties["REMOTEHOST"] = self.readElementText() + elif self.name() == "RemoteCommand": + self.project.debugProperties["REMOTECOMMAND"] = self.readElementText() + else: + self.raiseUnexpectedStartTag(self.name()) + + def __readPathTranslation(self): + """ + Private method to read the path translation info. + """ + self.project.debugProperties["PATHTRANSLATION"] = int(self.attribute("on", "0")) + + while not self.atEnd(): + self.readNext() + if self.isEndElement() and self.name() == "PathTranslation": + break + + if self.isStartElement(): + if self.name() == "RemotePath": + self.project.debugProperties["REMOTEPATH"] = self.readElementText() + elif self.name() == "LocalPath": + self.project.debugProperties["LOCALPATH"] = self.readElementText() + else: + self.raiseUnexpectedStartTag(self.name())
--- a/E5XML/DebuggerPropertiesWriter.py Mon Sep 13 09:06:38 2010 +0200 +++ b/E5XML/DebuggerPropertiesWriter.py Mon Sep 13 15:59:43 2010 +0200 @@ -11,24 +11,24 @@ from E5Gui.E5Application import e5App -from .XMLWriterBase import XMLWriterBase +from .XMLStreamWriterBase import XMLStreamWriterBase from .Config import debuggerPropertiesFileFormatVersion import Preferences -class DebuggerPropertiesWriter(XMLWriterBase): +class DebuggerPropertiesWriter(XMLStreamWriterBase): """ Class implementing the writer class for writing an XML project debugger properties file. """ - def __init__(self, file, projectName): + def __init__(self, device, projectName): """ Constructor - @param file open file (like) object for writing + @param device reference to the I/O device to write to (QIODevice) @param projectName name of the project (string) """ - XMLWriterBase.__init__(self, file) + XMLStreamWriterBase.__init__(self, device) self.name = projectName self.project = e5App().getObject("Project") @@ -37,56 +37,63 @@ """ Public method to write the XML to the file. """ - XMLWriterBase.writeXML(self) + XMLStreamWriterBase.writeXML(self) - self._write('<!DOCTYPE DebuggerProperties SYSTEM "DebuggerProperties-{0}.dtd">'\ + self.writeDTD('<!DOCTYPE DebuggerProperties SYSTEM "DebuggerProperties-{0}.dtd">'\ .format(debuggerPropertiesFileFormatVersion)) # add some generation comments - self._write("<!-- eric5 debugger properties file for project {0} -->"\ + self.writeComment(" eric5 debugger properties file for project {0} "\ .format(self.name)) - self._write("<!-- This file was generated automatically, do not edit. -->") + self.writeComment(" This file was generated automatically, do not edit. ") if Preferences.getProject("XMLTimestamp"): - self._write("<!-- Saved: {0} -->".format(time.strftime('%Y-%m-%d, %H:%M:%S'))) + self.writeComment(" Saved: {0} ".format(time.strftime('%Y-%m-%d, %H:%M:%S'))) # add the main tag - self._write('<DebuggerProperties version="{0}">'.format( - debuggerPropertiesFileFormatVersion)) + self.writeStartElement("DebuggerProperties") + self.writeAttribute("version", debuggerPropertiesFileFormatVersion) - self._write(' <Interpreter>{0}</Interpreter>'.format( - self.project.debugProperties["INTERPRETER"])) + self.writeTextElement("Interpreter", self.project.debugProperties["INTERPRETER"]) + + self.writeTextElement("DebugClient", self.project.debugProperties["DEBUGCLIENT"]) - self._write(' <DebugClient>{0}</DebugClient>'.format( - self.project.debugProperties["DEBUGCLIENT"])) + self.writeStartElement("Environment") + self.writeAttribute("override", + str(int(self.project.debugProperties["ENVIRONMENTOVERRIDE"]))) + self.writeCharacters(self.project.debugProperties["ENVIRONMENTSTRING"]) + self.writeEndElement() - self._write(' <Environment override="{0:d}">{1}</Environment>'.format( - self.project.debugProperties["ENVIRONMENTOVERRIDE"], - self.escape(self.project.debugProperties["ENVIRONMENTSTRING"]))) + self.writeStartElement("RemoteDebugger") + self.writeAttribute("on", + str(int(self.project.debugProperties["REMOTEDEBUGGER"]))) + self.writeTextElement("RemoteHost", + self.project.debugProperties["REMOTEHOST"]) + self.writeTextElement("RemoteCommand", + self.project.debugProperties["REMOTECOMMAND"]) + self.writeEndElement() - self._write(' <RemoteDebugger on="{0:d}">'.format( - self.project.debugProperties["REMOTEDEBUGGER"])) - self._write(' <RemoteHost>{0}</RemoteHost>'.format( - self.project.debugProperties["REMOTEHOST"])) - self._write(' <RemoteCommand>{0}</RemoteCommand>'.format( - self.escape(self.project.debugProperties["REMOTECOMMAND"]))) - self._write(' </RemoteDebugger>') + self.writeStartElement("PathTranslation") + self.writeAttribute("on", + str(int(self.project.debugProperties["PATHTRANSLATION"]))) + self.writeTextElement("RemotePath", + self.project.debugProperties["REMOTEPATH"]) + self.writeTextElement("LocalPath", + self.project.debugProperties["LOCALPATH"]) + self.writeEndElement() - self._write(' <PathTranslation on="{0:d}">'.format( - self.project.debugProperties["PATHTRANSLATION"])) - self._write(' <RemotePath>{0}</RemotePath>'.format( - self.project.debugProperties["REMOTEPATH"])) - self._write(' <LocalPath>{0}</LocalPath>'.format( - self.project.debugProperties["LOCALPATH"])) - self._write(' </PathTranslation>') + self.writeStartElement("ConsoleDebugger") + self.writeAttribute("on", + str(int(self.project.debugProperties["CONSOLEDEBUGGER"]))) + self.writeCharacters(self.project.debugProperties["CONSOLECOMMAND"]) + self.writeEndElement() - self._write(' <ConsoleDebugger on="{0:d}">{1}</ConsoleDebugger>'.format( - self.project.debugProperties["CONSOLEDEBUGGER"], - self.escape(self.project.debugProperties["CONSOLECOMMAND"]))) + self.writeEmptyElement("Redirect") + self.writeAttribute("on", + str(int(self.project.debugProperties["REDIRECT"]))) - self._write(' <Redirect on="{0:d}" />'.format( - self.project.debugProperties["REDIRECT"])) + self.writeEmptyElement("Noencoding") + self.writeAttribute("on", + str(int(self.project.debugProperties["NOENCODING"]))) - self._write(' <Noencoding on="{0:d}" />'.format( - self.project.debugProperties["NOENCODING"])) - - self._write("</DebuggerProperties>", newline = False) + self.writeEndElement() + self.writeEndDocument()
--- a/Project/Project.py Mon Sep 13 09:06:38 2010 +0200 +++ b/Project/Project.py Mon Sep 13 15:59:43 2010 +0200 @@ -49,7 +49,7 @@ from E5XML.SessionWriter import SessionWriter from E5XML.TasksReader import TasksReader from E5XML.TasksWriter import TasksWriter -from E5XML.DebuggerPropertiesHandler import DebuggerPropertiesHandler +from E5XML.DebuggerPropertiesReader import DebuggerPropertiesReader from E5XML.DebuggerPropertiesWriter import DebuggerPropertiesWriter import VCS @@ -1003,115 +1003,21 @@ return fn, ext = os.path.splitext(os.path.basename(self.pfile)) - - try: - if ext.lower() in [".e4pz"]: - fn = os.path.join(self.getProjectManagementDir(), '{0}.e4dz'.format(fn)) - try: - import gzip - except ImportError: - if not quiet: - E5MessageBox.critical(self.ui, - self.trUtf8("Read debugger properties"), - self.trUtf8("""Compressed project session files not""" - """ supported. The compression library is""" - """ missing.""")) - return - g = gzip.open(fn, "rb") - f = io.StringIO(g.read().decode("utf-8")) - g.close() - else: - fn = os.path.join(self.getProjectManagementDir(), '{0}.e4d'.format(fn)) - f = open(fn, "r", encoding = "utf-8") - line = f.readline() - dtdLine = f.readline() + fn = os.path.join(self.getProjectManagementDir(), '{0}.e4d'.format(fn)) + + f = QFile(fn) + if f.open(QIODevice.ReadOnly): + reader = DebuggerPropertiesReader(f, self) + reader.readXML(quiet = quiet) f.close() - except EnvironmentError: + else: if not quiet: E5MessageBox.critical(self.ui, self.trUtf8("Read debugger properties"), self.trUtf8("<p>The project debugger properties file <b>{0}</b> could" " not be read.</p>").format(fn)) - return - - # now read the file - if line.startswith('<?xml'): - self.__readXMLDebugProperties(fn, dtdLine.startswith("<!DOCTYPE"), quiet) - else: - if not quiet: - E5MessageBox.critical(self.ui, - self.trUtf8("Read debugger properties"), - self.trUtf8("<p>The project debugger properties file <b>{0}</b> has" - " an unsupported format.</p>").format(fn)) - - def __readXMLDebugProperties(self, fn, validating, quiet): - """ - Public method to read the debugger properties from an XML file. - - @param fn filename of the project debugger properties file to be read - (string) - @param validating flag indicating a validation of the XML file is - requested (boolean) - @param quiet flag indicating quiet operations. - If this flag is true, no errors are reported. - """ - if fn.lower().endswith("e4dz"): - # work around for a bug in xmlproc - validating = False - - parser = make_parser(validating) - handler = DebuggerPropertiesHandler(self) - er = XMLEntityResolver() - eh = XMLErrorHandler() - - parser.setContentHandler(handler) - parser.setEntityResolver(er) - parser.setErrorHandler(eh) - - try: - if fn.lower().endswith("e4dz"): - try: - import gzip - except ImportError: - if not quiet: - E5MessageBox.critical(self.ui, - self.trUtf8("Read debugger properties"), - self.trUtf8("<p>The project debugger properties file" - " <b>{0}</b> could not be read.</p>").format(fn)) - return - g = gzip.open(fn, "rb") - f = io.StringIO(g.read().decode("utf-8")) - g.close() - else: - f = open(fn, "r", encoding = "utf-8") - try: - try: - parser.parse(f) - except UnicodeEncodeError: - f.seek(0) - buf = io.StringIO(f.read()) - parser.parse(buf) - if self.debugProperties["INTERPRETER"]: - self.debugPropertiesLoaded = True - else: - self.debugPropertiesLoaded = False - finally: - f.close() - except IOError: - if not quiet: - E5MessageBox.critical(self.ui, - self.trUtf8("Read debugger properties"), - self.trUtf8("<p>The project debugger properties file <b>{0}</b> could" - " not be read.</p>") - .format(fn)) - return - except XMLFatalParseError: - pass - - if not quiet: - eh.showParseMessages() - - def __writeDebugProperties(self, quiet=0): + + def __writeDebugProperties(self, quiet = False): """ Private method to write the project debugger properties file (.e4d) @@ -1126,35 +1032,14 @@ return fn, ext = os.path.splitext(os.path.basename(self.pfile)) - - try: - if ext.lower() == ".e4pz": - fn = os.path.join(self.getProjectManagementDir(), '{0}.e4dz'.format(fn)) - try: - import gzip - except ImportError: - if not quiet: - E5MessageBox.critical(self.ui, - self.trUtf8("Save debugger properties"), - self.trUtf8("""Compressed project debugger properties files""" - """ not supported. The compression library is""" - """ missing.""")) - return - f = io.StringIO() - else: - fn = os.path.join(self.getProjectManagementDir(), '{0}.e4d'.format(fn)) - f = open(fn, "w", encoding = "utf-8") - + fn = os.path.join(self.getProjectManagementDir(), '{0}.e4d'.format(fn)) + + f = QFile(fn) + if f.open(QIODevice.WriteOnly): DebuggerPropertiesWriter(f, os.path.splitext(os.path.basename(fn))[0])\ .writeXML() - - if fn.lower().endswith("e4dz"): - g = gzip.open(fn, "wb") - g.write(f.getvalue().encode("utf-8")) - g.close() f.close() - - except IOError: + else: if not quiet: E5MessageBox.critical(self.ui, self.trUtf8("Save debugger properties"),
--- a/eric5.e4p Mon Sep 13 09:06:38 2010 +0200 +++ b/eric5.e4p Mon Sep 13 15:59:43 2010 +0200 @@ -714,7 +714,6 @@ <Source>E5XML/ShortcutsWriter.py</Source> <Source>E5XML/DebuggerPropertiesWriter.py</Source> <Source>E5XML/TemplatesWriter.py</Source> - <Source>E5XML/DebuggerPropertiesHandler.py</Source> <Source>E5XML/Config.py</Source> <Source>E5XML/__init__.py</Source> <Source>E5XML/TasksWriter.py</Source> @@ -821,6 +820,7 @@ <Source>E5XML/SessionReader.py</Source> <Source>E5XML/MultiProjectReader.py</Source> <Source>E5XML/UserProjectReader.py</Source> + <Source>E5XML/DebuggerPropertiesReader.py</Source> </Sources> <Forms> <Form>PyUnit/UnittestDialog.ui</Form>