diff -r 7685cec9fd3c -r f2ddfa555b0f doc/api/python/helium.outputer-pysrc.html
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/doc/api/python/helium.outputer-pysrc.html Fri Sep 11 11:54:49 2009 +0100
@@ -0,0 +1,701 @@
+
+
+
+
+ helium.outputer
+
+
+
+
+
+
+
+
+
+
+ 1
+ 2
+ 3
+ 4
+ 5
+ 6
+ 7
+ 8
+ 9
+ 10
+ 11
+ 12
+ 13
+ 14
+ 15
+ 16
+ 17
+ 18
+ 19
+ 20
+ 21
+ 22
+ 23
+ 24
+ 25
+ 26
+ 27 import codecs
+ 28 import xml.dom.minidom
+ 29 from helium.output.widgets import *
+ 30 import urllib2
+ 31 import amara
+ 32 import re
+ 33 import dataurl
+ 34
+ 37 f = urllib2.urlopen(url)
+
38 data = f.read()
+
39 f.close()
+
40 self.__xml = amara.parse(data)
+
41
+
42 - def getClass(self, type, default = None):
+
44
+
45 - def getImg(self, type, default = None):
+
47
+
48 - def getWidth(self, type, default = None):
+
50
+
53
+
54 - def _getValue(self, type, attr, default = None):
+
55 r = self.__xml.xml_xpath("/htmloutput/icons/icon[@type='%s']" % type)
+
56 if len(r) == 0:
+
57 if default == None:
+
58 raise Exception("Not found")
+
59 else:
+
60 return default
+
61 return r[0][attr]
+
62
+ 64
+
65 - def __init__(self, filename, url="http://fawww.europe.nokia.com/isis/isis_interface/configuration.xml", usedataurl=False):
+
66 self.__config = Configuration(url)
+
67 self.__filename = filename
+
68 self.__srcdoc = xml.dom.minidom.parse(filename)
+
69 self.__srcdoc.normalize()
+
70 self.__usedataurl = usedataurl
+
71
+
72
+
73 dom = xml.dom.minidom.getDOMImplementation()
+
74 doctype = dom.createDocumentType("html",
+
75 "-//W3C//DTD XHTML 1.0 Strict//EN",
+
76 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd")
+
77 self.__doc = dom.createDocument(None, "html", doctype)
+
78 self.__xhtml = self.__doc.getElementsByTagName("html")[0]
+
79 self.__xhtml.setAttributeNS("", "xmlns", "http://www.w3.org/1999/xhtml")
+
80 self.__id = 0
+
81 self.__xhtml_summary = None
+
82 self.__tags = {}
+
83 self.__css = ["http://fawww.europe.nokia.com/isis/isis_interface/css/logger2.css"]
+
84 self.__javascript = ["http://fawww.europe.nokia.com/isis/isis_interface/javascript/expand2.js"]
+
85 self.__factory = {'__header' : XML2XHTML.forname('helium.output.widgets.Header'),
+
86 '__footer' : XML2XHTML.forname('helium.output.widgets.Footer'),
+
87 '__maincontent' : XML2XHTML.forname('helium.output.widgets.Box'),
+
88 '__summary' : XML2XHTML.forname('helium.output.widgets.Summary'),
+
89 '__print' : XML2XHTML.forname('helium.output.widgets.Text'),
+
90 '__printraw' : XML2XHTML.forname('helium.output.widgets.RawText'),
+
91 '__event' : XML2XHTML.forname('helium.output.widgets.Event')}
+
92
+
94 self.__id += 1
+
95 return self.__id
+
96
+
99
+
101 self.__javascript.append(url)
+
102
+
104 for link in self.__css:
+
105 l = self.__doc.createElementNS("", "link")
+
106 if self.__usedataurl:
+
107 l.setAttributeNS("", "href", dataurl.from_url(link))
+
108 else:
+
109 l.setAttributeNS("", "href", link)
+
110 l.setAttributeNS("", "rel", "stylesheet")
+
111 l.setAttributeNS("", "type", "text/css")
+
112 container.appendChild(l)
+
113
+
115 for link in self.__javascript:
+
116 l = self.__doc.createElementNS("", "script")
+
117 if self.__usedataurl:
+
118 l.setAttributeNS("", "src", dataurl.from_url(link))
+
119 else:
+
120 l.setAttributeNS("", "src", link)
+
121 l.setAttributeNS("", "type", "text/javascript")
+
122 l.appendChild(self.__doc.createTextNode(""))
+
123 container.appendChild(l)
+
124
+
125
+
127 root = self.__srcdoc.documentElement
+
128 if root.tagName != "__log":
+
129 raise Exception("Invalid document must be __log.")
+
130
+
131 for c in root.getElementsByTagName("__customoutputer"):
+
132 self.__factory[c.attributes['type'].value] = XML2XHTML.forname(c.attributes['module'].value)
+
133
+
134
+
135 head = self.__doc.createElementNS("", "head")
+
136 title = self.__doc.createElementNS("", "title")
+
137 self.__title = self.__doc.createTextNode("")
+
138 title.appendChild(self.__title)
+
139 head.appendChild(title)
+
140
+
141 self._generateCSSLinks(head)
+
142 self._generateJScriptLink(head)
+
143
+
144 body = self.__doc.createElementNS("", "body")
+
145 self.__xhtml.appendChild(head)
+
146 self.__xhtml.appendChild(body)
+
147
+
148
+
149 for c in root.childNodes:
+
150 if c.nodeType == xml.dom.Node.ELEMENT_NODE and c.tagName == "__header":
+
151 self._handleHeader(c, body)
+
152 elif c.nodeType == xml.dom.Node.ELEMENT_NODE and c.tagName == "__summary":
+
153 self._handleSummary(c, body)
+
154 elif c.nodeType == xml.dom.Node.ELEMENT_NODE and c.tagName == "__maincontent":
+
155 self._handleMainContent(c, body)
+
156 elif c.nodeType == xml.dom.Node.ELEMENT_NODE and c.tagName == "build":
+
157 self._handleBuild(c, body)
+
158 elif c.nodeType == xml.dom.Node.ELEMENT_NODE and c.tagName == "task" and c.attributes.has_key('type') and c.attributes['type'] == "maincontent":
+
159 self._handleMainContent(c, body)
+
160
+
161 try:
+
162 footer = root.getElementsByTagName("__footer")[0]
+
163 f = self.__factory["__footer"](self.__doc, body)
+
164 if footer.attributes.has_key("title"):
+
165 f.setTitle(footer.attributes['title'].value)
+
166 if footer.attributes.has_key("subtitle"):
+
167 f.setSubTitle(footer.attributes['subtitle'].value)
+
168 except Exception:
+
169 pass
+
170
+
171 self._createSummary()
+
172
+
174 h = self.__factory["__header"](self.__doc, container)
+
175 if node.attributes.has_key('title'):
+
176 self.__title.data = node.attributes['title'].value
+
177 h.setTitle(node.attributes['title'].value)
+
178 if node.attributes.has_key("subtitle"):
+
179 h.setSubTitle(node.attributes['subtitle'].value)
+
180
+
182 box = self.__factory["__summary"](self.__doc, container)
+
183 if node.attributes.has_key('title'):
+
184 box.setTitle(node.attributes["title"].value)
+
185
+
186 for c in node.getElementsByTagName("__elmt"):
+
187 box.addElement(c.attributes['tag'].value, c.attributes['val'].value)
+
188 self.__xhtml_summary = box
+
189
+
191 for c in node.childNodes:
+
192 if c.nodeType == xml.dom.Node.ELEMENT_NODE and c.tagName == "task" and c.attributes.has_key('type') and c.attributes['type'].value == 'maincontent':
+
193 self._handleMainContent(c, container)
+
194
+
195
+
196 - def _handleMainContent(self, node, container):
+
197 box = self.__factory["__maincontent"](self.__doc, container)
+
198 if node.attributes.has_key("title"):
+
199 box.setTitle(node.attributes["title"].value)
+
200 if node.attributes.has_key("name"):
+
201 box.setTitle(node.attributes["name"].value)
+
202 for c in node.childNodes:
+
203 if c.nodeType == xml.dom.Node.ELEMENT_NODE and c.tagName == "__event":
+
204 self._handleEvent(c, box.getDOMContainer())
+
205 elif c.nodeType == xml.dom.Node.ELEMENT_NODE and c.tagName == "task" and c.attributes.has_key('type') and c.attributes['type'].value == 'event':
+
206 self._handleEvent(c, box.getDOMContainer())
+
207 elif c.nodeType == xml.dom.Node.ELEMENT_NODE and c.tagName == "message":
+
208 self._handleMessage(c, box.getDOMContainer())
+
209 elif c.nodeType == xml.dom.Node.ELEMENT_NODE:
+
210 self._handlePrint(c, box.getDOMContainer())
+
211
+
213 tags = self.__tags
+
214 self.__tags = {}
+
215 event = self.__factory["__event"](self.__doc, container, self._getId())
+
216 if node.attributes.has_key('title'):
+
217 event.setTitle(node.attributes['title'].value)
+
218 elif node.attributes.has_key('name'):
+
219 event.setTitle(node.attributes['name'].value)
+
220 for c in node.childNodes:
+
221 if c.nodeType == xml.dom.Node.ELEMENT_NODE and c.tagName == "__event":
+
222 self._handleEvent(c, event.getDOMContainer())
+
223 elif c.nodeType == xml.dom.Node.ELEMENT_NODE and c.tagName == "task" and c.attributes.has_key('type') and c.attributes['type'].value == 'event':
+
224 self._handleEvent(c, event.getDOMContainer())
+
225 elif c.nodeType == xml.dom.Node.ELEMENT_NODE and c.tagName == "message":
+
226 self._handleMessage(c, event.getDOMContainer())
+
227 elif c.nodeType == xml.dom.Node.ELEMENT_NODE:
+
228 self._handlePrint(c, event.getDOMContainer())
+
229
+
230 keys = self.__tags.keys()
+
231 keys.sort()
+
232 for name in keys:
+
233 event.addStatistics(name.replace("__", ""), self.__tags[name])
+
234 self.__tags = self._mergeStatistics(tags, self.__tags)
+
235
+
237 if node.attributes['priority'].value == "printraw":
+
238 t = self.__factory["__printraw"](self.__doc, container)
+
239 for n in node.childNodes:
+
240 if n.nodeType == xml.dom.Node.CDATA_SECTION_NODE:
+
241 t.appendText(n.data)
+
242 else:
+
243 t = self.__factory["__print"](self.__doc, container)
+
244 for n in node.childNodes:
+
245 if n.nodeType == xml.dom.Node.CDATA_SECTION_NODE:
+
246 t.appendText(n.data)
+
247 if node.attributes['priority'].value != "print":
+
248 t.setIcon(self.__config.getClass(node.attributes['priority'].value, "icn_dft"))
+
249 if self.__tags.has_key(node.attributes['priority'].value):
+
250 self.__tags[node.attributes['priority'].value] += 1
+
251 else:
+
252 self.__tags[node.attributes['priority'].value] = 1
+
253
+
255 if node.tagName == "__printraw":
+
256 t = self.__factory["__printraw"](self.__doc, container)
+
257 for n in node.childNodes:
+
258 if n.nodeType == xml.dom.Node.CDATA_SECTION_NODE or n.nodeType == xml.dom.Node.TEXT_NODE:
+
259 t.appendText(n.data)
+
260 else:
+
261 t = self.__factory["__print"](self.__doc, container)
+
262 for n in node.childNodes:
+
263 if n.nodeType == xml.dom.Node.CDATA_SECTION_NODE or n.nodeType == xml.dom.Node.TEXT_NODE:
+
264 t.appendText(n.data)
+
265 if node.tagName != "__print":
+
266 t.setIcon(self.__config.getClass(node.tagName, "icn_dft"))
+
267 if self.__tags.has_key(node.tagName):
+
268 self.__tags[node.tagName] += 1
+
269 else:
+
270 self.__tags[node.tagName] = 1
+
271
+
273
+
274 if self.__xhtml_summary == None:
+
275 self.__xhtml_summary = Summary(self.__doc, self.__body)
+
276 self.__xhtml_summary.setTitle("Global Statistics")
+
277 keys = self.__tags.keys()
+
278 keys.sort()
+
279 for name in keys:
+
280 self.__xhtml_summary.addStatistics(name.replace("__", ""), self.__tags[name])
+
281
+
282
+
284 for name in newTags.keys():
+
285 if tags.has_key(name):
+
286 tags[name] += newTags[name]
+
287 else:
+
288 tags[name] = newTags[name]
+
289 return tags
+
290
+
292 file_object = open(filename, "w")
+
293 file_object.write(codecs.BOM_UTF8)
+
294 file_object.write(self.__doc.toprettyxml(encoding="utf-8"))
+
295 file_object.close()
+
296
+297
+298 @staticmethod
+300 r = re.match("^(?P<modname>(?:\w+\.?)*)\.(?P<classname>(\w+?))$", classname)
+
301 if r != None:
+
302 return getattr(__import__(r.groupdict()['modname'], [], [], r.groupdict()['classname']), r.groupdict()['classname'])
+
303 else:
+
304 raise Exception("Error retreiving module and classname for %s" % classname)
+
305
+
+
+
+
+
+
+
+
+
+