src/eric7/WebBrowser/OpenSearch/OpenSearchWriter.py

branch
eric7
changeset 9209
b99e7fd55fd3
parent 8881
54e42bc2437a
child 9221
bf71ee032bb4
equal deleted inserted replaced
9208:3fc8dfeb6ebe 9209:b99e7fd55fd3
1 # -*- coding: utf-8 -*-
2
3 # Copyright (c) 2009 - 2022 Detlev Offenbach <detlev@die-offenbachs.de>
4 #
5
6 """
7 Module implementing a writer for open search engine descriptions.
8 """
9
10 from PyQt6.QtCore import QXmlStreamWriter, QIODevice
11
12
13 class OpenSearchWriter(QXmlStreamWriter):
14 """
15 Class implementing a writer for open search engine descriptions.
16 """
17 def __init__(self):
18 """
19 Constructor
20 """
21 super().__init__()
22
23 self.setAutoFormatting(True)
24
25 def write(self, device, engine):
26 """
27 Public method to write the description of an engine.
28
29 @param device reference to the device to write to (QIODevice)
30 @param engine reference to the engine (OpenSearchEngine)
31 @return flag indicating success (boolean)
32 """
33 if engine is None:
34 return False
35
36 if (
37 not device.isOpen() and
38 not device.open(QIODevice.OpenModeFlag.WriteOnly)
39 ):
40 return False
41
42 self.setDevice(device)
43 self.__write(engine)
44 return True
45
46 def __write(self, engine):
47 """
48 Private method to write the description of an engine.
49
50 @param engine reference to the engine (OpenSearchEngine)
51 """
52 self.writeStartDocument()
53 self.writeStartElement("OpenSearchDescription")
54 self.writeDefaultNamespace("http://a9.com/-/spec/opensearch/1.1/")
55
56 if engine.name():
57 self.writeTextElement("ShortName", engine.name())
58
59 if engine.description():
60 self.writeTextElement("Description", engine.description())
61
62 if engine.searchUrlTemplate():
63 self.writeStartElement("Url")
64 self.writeAttribute("method", engine.searchMethod())
65 self.writeAttribute("type", "text/html")
66 self.writeAttribute("template", engine.searchUrlTemplate())
67
68 if len(engine.searchParameters()) > 0:
69 self.writeNamespace(
70 "http://a9.com/-/spec/opensearch/extensions/"
71 "parameters/1.0/", "p")
72 for parameter in engine.searchParameters():
73 self.writeStartElement("p:Parameter")
74 self.writeAttribute("name", parameter[0])
75 self.writeAttribute("value", parameter[1])
76
77 self.writeEndElement()
78
79 if engine.suggestionsUrlTemplate():
80 self.writeStartElement("Url")
81 self.writeAttribute("method", engine.suggestionsMethod())
82 self.writeAttribute("type", "application/x-suggestions+json")
83 self.writeAttribute("template", engine.suggestionsUrlTemplate())
84
85 if len(engine.suggestionsParameters()) > 0:
86 self.writeNamespace(
87 "http://a9.com/-/spec/opensearch/extensions/"
88 "parameters/1.0/", "p")
89 for parameter in engine.suggestionsParameters():
90 self.writeStartElement("p:Parameter")
91 self.writeAttribute("name", parameter[0])
92 self.writeAttribute("value", parameter[1])
93
94 self.writeEndElement()
95
96 if engine.imageUrl():
97 self.writeTextElement("Image", engine.imageUrl())
98
99 self.writeEndElement()
100 self.writeEndDocument()

eric ide

mercurial