src/eric7/WebBrowser/OpenSearch/OpenSearchWriter.py

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

eric ide

mercurial