diff -r 000000000000 -r de9c2efb9d02 Helpviewer/OpenSearch/OpenSearchWriter.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Helpviewer/OpenSearch/OpenSearchWriter.py Mon Dec 28 16:03:33 2009 +0000 @@ -0,0 +1,94 @@ +# -*- coding: utf-8 -*- + +# Copyright (c) 2009 Detlev Offenbach <detlev@die-offenbachs.de> +# + +""" +Module implementing a writer for open search engine descriptions. +""" + +from PyQt4.QtCore import * + +class OpenSearchWriter(QXmlStreamWriter): + """ + Class implementing a writer for open search engine descriptions. + """ + def __init__(self): + """ + Constructor + """ + QXmlStreamWriter.__init__(self) + + self.setAutoFormatting(True) + + def write(self, device, engine): + """ + Public method to write the description of an engine. + + @param device reference to the device to write to (QIODevice) + @param engine reference to the engine (OpenSearchEngine) + """ + if engine is None: + return False + + if not device.isOpen(): + if not device.open(QIODevice.WriteOnly): + return False + + self.setDevice(device) + self.__write(engine) + return True + + def __write(self, engine): + """ + Private method to write the description of an engine. + + @param engine reference to the engine (OpenSearchEngine) + """ + self.writeStartDocument() + self.writeStartElement("OpenSearchDescription") + self.writeDefaultNamespace("http://a9.com/-/spec/opensearch/1.1/") + + if engine.name(): + self.writeTextElement("ShortName", engine.name()) + + if engine.description(): + self.writeTextElement("Description", engine.description()) + + if engine.searchUrlTemplate(): + self.writeStartElement("Url") + self.writeAttribute("method", engine.searchMethod()) + self.writeAttribute("type", "text/html") + self.writeAttribute("template", engine.searchUrlTemplate()) + + if len(engine.searchParameters()) > 0: + self.writeNamespace( + "http://a9.com/-/spec/opensearch/extensions/parameters/1.0/", "p") + for parameter in engine.searchParameters(): + self.writeStartElement("p:Parameter") + self.writeAttribute("name", parameter[0]) + self.writeAttribute("value", parameter[1]) + + self.writeEndElement() + + if engine.suggestionsUrlTemplate(): + self.writeStartElement("Url") + self.writeAttribute("method", engine.suggestionsMethod()) + self.writeAttribute("type", "application/x-suggestions+json") + self.writeAttribute("template", engine.suggestionsUrlTemplate()) + + if len(engine.suggestionsParameters()) > 0: + self.writeNamespace( + "http://a9.com/-/spec/opensearch/extensions/parameters/1.0/", "p") + for parameter in engine.suggestionsParameters(): + self.writeStartElement("p:Parameter") + self.writeAttribute("name", parameter[0]) + self.writeAttribute("value", parameter[1]) + + self.writeEndElement() + + if engine.imageUrl(): + self.writeTextElement("Image", engine.imageUrl()) + + self.writeEndElement() + self.writeEndDocument()