Helpviewer/OpenSearch/OpenSearchEngine.py

changeset 945
8cd4d08fa9f6
parent 791
9ec2ac20e54e
child 1104
029fde1585ed
equal deleted inserted replaced
944:1b59c4ba121e 945:8cd4d08fa9f6
16 16
17 from UI.Info import Program 17 from UI.Info import Program
18 18
19 import Preferences 19 import Preferences
20 20
21
21 class OpenSearchEngine(QObject): 22 class OpenSearchEngine(QObject):
22 """ 23 """
23 Class implementing the open search engine. 24 Class implementing the open search engine.
24 25
25 @signal imageChanged() emitted after the icon has been changed 26 @signal imageChanged() emitted after the icon has been changed
26 @signal suggestions(list of strings) emitted after the suggestions have 27 @signal suggestions(list of strings) emitted after the suggestions have
27 been received 28 been received
28 """ 29 """
29 imageChanged = pyqtSignal() 30 imageChanged = pyqtSignal()
30 suggestions = pyqtSignal(list) 31 suggestions = pyqtSignal(list)
31 32
37 elif loc == "C": 38 elif loc == "C":
38 _language = "" 39 _language = ""
39 else: 40 else:
40 _language = loc[:2] 41 _language = loc[:2]
41 42
42 def __init__(self, parent = None): 43 def __init__(self, parent=None):
43 """ 44 """
44 Constructor 45 Constructor
45 46
46 @param parent reference to the parent object (QObject) 47 @param parent reference to the parent object (QObject)
47 """ 48 """
59 self.__image = QImage() 60 self.__image = QImage()
60 self.__iconMoved = False 61 self.__iconMoved = False
61 self.__searchMethod = "get" 62 self.__searchMethod = "get"
62 self.__suggestionsMethod = "get" 63 self.__suggestionsMethod = "get"
63 self.__requestMethods = { 64 self.__requestMethods = {
64 "get" : QNetworkAccessManager.GetOperation, 65 "get": QNetworkAccessManager.GetOperation,
65 "post" : QNetworkAccessManager.PostOperation, 66 "post": QNetworkAccessManager.PostOperation,
66 } 67 }
67 68
68 self.__replies = [] 69 self.__replies = []
69 70
70 @classmethod 71 @classmethod
81 result = result.replace("{startIndex}", "0") 82 result = result.replace("{startIndex}", "0")
82 result = result.replace("{startPage}", "0") 83 result = result.replace("{startPage}", "0")
83 result = result.replace("{language}", cls._language) 84 result = result.replace("{language}", cls._language)
84 result = result.replace("{inputEncoding}", "UTF-8") 85 result = result.replace("{inputEncoding}", "UTF-8")
85 result = result.replace("{outputEncoding}", "UTF-8") 86 result = result.replace("{outputEncoding}", "UTF-8")
86 result = result.replace("{searchTerms}", 87 result = result.replace("{searchTerms}",
87 bytes(QUrl.toPercentEncoding(searchTerm)).decode()) 88 bytes(QUrl.toPercentEncoding(searchTerm)).decode())
88 result = re.sub(r"""\{([^\}]*:|)source\??\}""", Program, result) 89 result = re.sub(r"""\{([^\}]*:|)source\??\}""", Program, result)
89 90
90 return result 91 return result
91 92
92 @pyqtSlot(result = str) 93 @pyqtSlot(result=str)
93 def name(self): 94 def name(self):
94 """ 95 """
95 Public method to get the name of the engine. 96 Public method to get the name of the engine.
96 97
97 @return name of the engine (string) 98 @return name of the engine (string)
150 151
151 ret = QUrl.fromEncoded(self.parseTemplate(searchTerm, self._searchUrlTemplate)) 152 ret = QUrl.fromEncoded(self.parseTemplate(searchTerm, self._searchUrlTemplate))
152 153
153 if self.__searchMethod != "post": 154 if self.__searchMethod != "post":
154 for parameter in self._searchParameters: 155 for parameter in self._searchParameters:
155 ret.addQueryItem(parameter[0], 156 ret.addQueryItem(parameter[0],
156 self.parseTemplate(searchTerm, parameter[1])) 157 self.parseTemplate(searchTerm, parameter[1]))
157 158
158 return ret 159 return ret
159 160
160 def providesSuggestions(self): 161 def providesSuggestions(self):
195 ret = QUrl.fromEncoded(QByteArray( 196 ret = QUrl.fromEncoded(QByteArray(
196 self.parseTemplate(searchTerm, self._suggestionsUrlTemplate))) 197 self.parseTemplate(searchTerm, self._suggestionsUrlTemplate)))
197 198
198 if self.__searchMethod != "post": 199 if self.__searchMethod != "post":
199 for parameter in self._suggestionsParameters: 200 for parameter in self._suggestionsParameters:
200 ret.addQueryItem(parameter[0], 201 ret.addQueryItem(parameter[0],
201 self.parseTemplate(searchTerm, parameter[1])) 202 self.parseTemplate(searchTerm, parameter[1]))
202 203
203 return ret 204 return ret
204 205
205 def searchParameters(self): 206 def searchParameters(self):
228 229
229 def setSuggestionsParameters(self, suggestionsParameters): 230 def setSuggestionsParameters(self, suggestionsParameters):
230 """ 231 """
231 Public method to set the engine suggestions parameters. 232 Public method to set the engine suggestions parameters.
232 233
233 @param suggestionsParameters suggestions parameters of the 234 @param suggestionsParameters suggestions parameters of the
234 engine (list of two tuples) 235 engine (list of two tuples)
235 """ 236 """
236 self._suggestionsParameters = suggestionsParameters[:] 237 self._suggestionsParameters = suggestionsParameters[:]
237 238
238 def searchMethod(self): 239 def searchMethod(self):
385 386
386 return self._name == other._name and \ 387 return self._name == other._name and \
387 self._description == other._description and \ 388 self._description == other._description and \
388 self._imageUrl == other._imageUrl and \ 389 self._imageUrl == other._imageUrl and \
389 self._searchUrlTemplate == other._searchUrlTemplate and \ 390 self._searchUrlTemplate == other._searchUrlTemplate and \
390 self._suggestionsUrlTemplate ==other._suggestionsUrlTemplate and \ 391 self._suggestionsUrlTemplate == other._suggestionsUrlTemplate and \
391 self._searchParameters == other._searchParameters and \ 392 self._searchParameters == other._searchParameters and \
392 self._suggestionsParameters == other._suggestionsParameters 393 self._suggestionsParameters == other._suggestionsParameters
393 394
394 def __lt__(self, other): 395 def __lt__(self, other):
395 """ 396 """
471 472
472 def setNetworkAccessManager(self, networkAccessManager): 473 def setNetworkAccessManager(self, networkAccessManager):
473 """ 474 """
474 Public method to set the reference to the network access manager. 475 Public method to set the reference to the network access manager.
475 476
476 @param networkAccessManager reference to the network access manager 477 @param networkAccessManager reference to the network access manager
477 object (QNetworkAccessManager) 478 object (QNetworkAccessManager)
478 """ 479 """
479 self.__networkAccessManager = networkAccessManager 480 self.__networkAccessManager = networkAccessManager

eric ide

mercurial