9 |
9 |
10 import time |
10 import time |
11 |
11 |
12 from E5Gui.E5Application import e5App |
12 from E5Gui.E5Application import e5App |
13 |
13 |
14 from .XMLWriterBase import XMLWriterBase |
14 from .XMLStreamWriterBase import XMLStreamWriterBase |
15 from .Config import debuggerPropertiesFileFormatVersion |
15 from .Config import debuggerPropertiesFileFormatVersion |
16 |
16 |
17 import Preferences |
17 import Preferences |
18 |
18 |
19 class DebuggerPropertiesWriter(XMLWriterBase): |
19 class DebuggerPropertiesWriter(XMLStreamWriterBase): |
20 """ |
20 """ |
21 Class implementing the writer class for writing an XML project debugger properties |
21 Class implementing the writer class for writing an XML project debugger properties |
22 file. |
22 file. |
23 """ |
23 """ |
24 def __init__(self, file, projectName): |
24 def __init__(self, device, projectName): |
25 """ |
25 """ |
26 Constructor |
26 Constructor |
27 |
27 |
28 @param file open file (like) object for writing |
28 @param device reference to the I/O device to write to (QIODevice) |
29 @param projectName name of the project (string) |
29 @param projectName name of the project (string) |
30 """ |
30 """ |
31 XMLWriterBase.__init__(self, file) |
31 XMLStreamWriterBase.__init__(self, device) |
32 |
32 |
33 self.name = projectName |
33 self.name = projectName |
34 self.project = e5App().getObject("Project") |
34 self.project = e5App().getObject("Project") |
35 |
35 |
36 def writeXML(self): |
36 def writeXML(self): |
37 """ |
37 """ |
38 Public method to write the XML to the file. |
38 Public method to write the XML to the file. |
39 """ |
39 """ |
40 XMLWriterBase.writeXML(self) |
40 XMLStreamWriterBase.writeXML(self) |
41 |
41 |
42 self._write('<!DOCTYPE DebuggerProperties SYSTEM "DebuggerProperties-{0}.dtd">'\ |
42 self.writeDTD('<!DOCTYPE DebuggerProperties SYSTEM "DebuggerProperties-{0}.dtd">'\ |
43 .format(debuggerPropertiesFileFormatVersion)) |
43 .format(debuggerPropertiesFileFormatVersion)) |
44 |
44 |
45 # add some generation comments |
45 # add some generation comments |
46 self._write("<!-- eric5 debugger properties file for project {0} -->"\ |
46 self.writeComment(" eric5 debugger properties file for project {0} "\ |
47 .format(self.name)) |
47 .format(self.name)) |
48 self._write("<!-- This file was generated automatically, do not edit. -->") |
48 self.writeComment(" This file was generated automatically, do not edit. ") |
49 if Preferences.getProject("XMLTimestamp"): |
49 if Preferences.getProject("XMLTimestamp"): |
50 self._write("<!-- Saved: {0} -->".format(time.strftime('%Y-%m-%d, %H:%M:%S'))) |
50 self.writeComment(" Saved: {0} ".format(time.strftime('%Y-%m-%d, %H:%M:%S'))) |
51 |
51 |
52 # add the main tag |
52 # add the main tag |
53 self._write('<DebuggerProperties version="{0}">'.format( |
53 self.writeStartElement("DebuggerProperties") |
54 debuggerPropertiesFileFormatVersion)) |
54 self.writeAttribute("version", debuggerPropertiesFileFormatVersion) |
55 |
55 |
56 self._write(' <Interpreter>{0}</Interpreter>'.format( |
56 self.writeTextElement("Interpreter", self.project.debugProperties["INTERPRETER"]) |
57 self.project.debugProperties["INTERPRETER"])) |
|
58 |
57 |
59 self._write(' <DebugClient>{0}</DebugClient>'.format( |
58 self.writeTextElement("DebugClient", self.project.debugProperties["DEBUGCLIENT"]) |
60 self.project.debugProperties["DEBUGCLIENT"])) |
|
61 |
59 |
62 self._write(' <Environment override="{0:d}">{1}</Environment>'.format( |
60 self.writeStartElement("Environment") |
63 self.project.debugProperties["ENVIRONMENTOVERRIDE"], |
61 self.writeAttribute("override", |
64 self.escape(self.project.debugProperties["ENVIRONMENTSTRING"]))) |
62 str(int(self.project.debugProperties["ENVIRONMENTOVERRIDE"]))) |
|
63 self.writeCharacters(self.project.debugProperties["ENVIRONMENTSTRING"]) |
|
64 self.writeEndElement() |
65 |
65 |
66 self._write(' <RemoteDebugger on="{0:d}">'.format( |
66 self.writeStartElement("RemoteDebugger") |
67 self.project.debugProperties["REMOTEDEBUGGER"])) |
67 self.writeAttribute("on", |
68 self._write(' <RemoteHost>{0}</RemoteHost>'.format( |
68 str(int(self.project.debugProperties["REMOTEDEBUGGER"]))) |
69 self.project.debugProperties["REMOTEHOST"])) |
69 self.writeTextElement("RemoteHost", |
70 self._write(' <RemoteCommand>{0}</RemoteCommand>'.format( |
70 self.project.debugProperties["REMOTEHOST"]) |
71 self.escape(self.project.debugProperties["REMOTECOMMAND"]))) |
71 self.writeTextElement("RemoteCommand", |
72 self._write(' </RemoteDebugger>') |
72 self.project.debugProperties["REMOTECOMMAND"]) |
|
73 self.writeEndElement() |
73 |
74 |
74 self._write(' <PathTranslation on="{0:d}">'.format( |
75 self.writeStartElement("PathTranslation") |
75 self.project.debugProperties["PATHTRANSLATION"])) |
76 self.writeAttribute("on", |
76 self._write(' <RemotePath>{0}</RemotePath>'.format( |
77 str(int(self.project.debugProperties["PATHTRANSLATION"]))) |
77 self.project.debugProperties["REMOTEPATH"])) |
78 self.writeTextElement("RemotePath", |
78 self._write(' <LocalPath>{0}</LocalPath>'.format( |
79 self.project.debugProperties["REMOTEPATH"]) |
79 self.project.debugProperties["LOCALPATH"])) |
80 self.writeTextElement("LocalPath", |
80 self._write(' </PathTranslation>') |
81 self.project.debugProperties["LOCALPATH"]) |
|
82 self.writeEndElement() |
81 |
83 |
82 self._write(' <ConsoleDebugger on="{0:d}">{1}</ConsoleDebugger>'.format( |
84 self.writeStartElement("ConsoleDebugger") |
83 self.project.debugProperties["CONSOLEDEBUGGER"], |
85 self.writeAttribute("on", |
84 self.escape(self.project.debugProperties["CONSOLECOMMAND"]))) |
86 str(int(self.project.debugProperties["CONSOLEDEBUGGER"]))) |
|
87 self.writeCharacters(self.project.debugProperties["CONSOLECOMMAND"]) |
|
88 self.writeEndElement() |
85 |
89 |
86 self._write(' <Redirect on="{0:d}" />'.format( |
90 self.writeEmptyElement("Redirect") |
87 self.project.debugProperties["REDIRECT"])) |
91 self.writeAttribute("on", |
|
92 str(int(self.project.debugProperties["REDIRECT"]))) |
88 |
93 |
89 self._write(' <Noencoding on="{0:d}" />'.format( |
94 self.writeEmptyElement("Noencoding") |
90 self.project.debugProperties["NOENCODING"])) |
95 self.writeAttribute("on", |
|
96 str(int(self.project.debugProperties["NOENCODING"]))) |
91 |
97 |
92 self._write("</DebuggerProperties>", newline = False) |
98 self.writeEndElement() |
|
99 self.writeEndDocument() |