--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/E5XML/DebuggerPropertiesHandler.py Tue Jan 12 17:55:24 2010 +0000 @@ -0,0 +1,167 @@ +# -*- 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