Helpviewer/HelpWebSearchWidget.py

branch
Py2 comp.
changeset 3057
10516539f238
parent 2791
a9577f248f04
parent 2999
28c75409a78f
child 3058
0a02c433f52d
equal deleted inserted replaced
3056:9986ec0e559a 3057:10516539f238
42 from .OpenSearch.OpenSearchManager import OpenSearchManager 42 from .OpenSearch.OpenSearchManager import OpenSearchManager
43 43
44 self.__mw = parent 44 self.__mw = parent
45 45
46 self.__openSearchManager = OpenSearchManager(self) 46 self.__openSearchManager = OpenSearchManager(self)
47 self.__openSearchManager.currentEngineChanged.connect(self.__currentEngineChanged) 47 self.__openSearchManager.currentEngineChanged.connect(
48 self.__currentEngineChanged)
48 self.__currentEngine = "" 49 self.__currentEngine = ""
49 50
50 self.__enginesMenu = QMenu(self) 51 self.__enginesMenu = QMenu(self)
51 52
52 self.__engineButton = E5LineEditButton(self) 53 self.__engineButton = E5LineEditButton(self)
58 self.addWidget(self.__searchButton, E5LineEdit.LeftSide) 59 self.addWidget(self.__searchButton, E5LineEdit.LeftSide)
59 60
60 self.__model = QStandardItemModel(self) 61 self.__model = QStandardItemModel(self)
61 self.__completer = QCompleter() 62 self.__completer = QCompleter()
62 self.__completer.setModel(self.__model) 63 self.__completer.setModel(self.__model)
63 self.__completer.setCompletionMode(QCompleter.UnfilteredPopupCompletion) 64 self.__completer.setCompletionMode(
65 QCompleter.UnfilteredPopupCompletion)
64 self.__completer.setWidget(self) 66 self.__completer.setWidget(self)
65 67
66 self.__searchButton.clicked[()].connect(self.__searchButtonClicked) 68 self.__searchButton.clicked[()].connect(self.__searchButtonClicked)
67 self.textEdited.connect(self.__textEdited) 69 self.textEdited.connect(self.__textEdited)
68 self.returnPressed[()].connect(self.__searchNow) 70 self.returnPressed[()].connect(self.__searchNow)
69 self.__completer.activated[QModelIndex].connect(self.__completerActivated) 71 self.__completer.activated[QModelIndex].connect(
70 self.__completer.highlighted[QModelIndex].connect(self.__completerHighlighted) 72 self.__completerActivated)
73 self.__completer.highlighted[QModelIndex].connect(
74 self.__completerHighlighted)
71 self.__enginesMenu.aboutToShow.connect(self.__showEnginesMenu) 75 self.__enginesMenu.aboutToShow.connect(self.__showEnginesMenu)
72 76
73 self.__suggestionsItem = None 77 self.__suggestionsItem = None
74 self.__suggestions = [] 78 self.__suggestions = []
75 self.__suggestTimer = None 79 self.__suggestTimer = None
91 searchText = self.text() 95 searchText = self.text()
92 if not searchText: 96 if not searchText:
93 return 97 return
94 98
95 globalSettings = QWebSettings.globalSettings() 99 globalSettings = QWebSettings.globalSettings()
96 if not globalSettings.testAttribute(QWebSettings.PrivateBrowsingEnabled): 100 if not globalSettings.testAttribute(
101 QWebSettings.PrivateBrowsingEnabled):
97 if searchText in self.__recentSearches: 102 if searchText in self.__recentSearches:
98 self.__recentSearches.remove(searchText) 103 self.__recentSearches.remove(searchText)
99 self.__recentSearches.insert(0, searchText) 104 self.__recentSearches.insert(0, searchText)
100 if len(self.__recentSearches) > self.__maxSavedSearches: 105 if len(self.__recentSearches) > self.__maxSavedSearches:
101 self.__recentSearches = self.__recentSearches[:self.__maxSavedSearches] 106 self.__recentSearches = \
107 self.__recentSearches[:self.__maxSavedSearches]
102 self.__setupCompleterMenu() 108 self.__setupCompleterMenu()
103 109
104 url = self.__openSearchManager.currentEngine().searchUrl(searchText) 110 url = self.__openSearchManager.currentEngine().searchUrl(searchText)
105 self.search.emit(url) 111 self.search.emit(url)
106 112
120 boldFont.setBold(True) 126 boldFont.setBold(True)
121 127
122 if self.__suggestions: 128 if self.__suggestions:
123 if self.__model.rowCount() == 0: 129 if self.__model.rowCount() == 0:
124 if not self.__suggestionsItem: 130 if not self.__suggestionsItem:
125 self.__suggestionsItem = QStandardItem(self.trUtf8("Suggestions")) 131 self.__suggestionsItem = QStandardItem(
132 self.trUtf8("Suggestions"))
126 self.__suggestionsItem.setFont(boldFont) 133 self.__suggestionsItem.setFont(boldFont)
127 self.__model.appendRow(self.__suggestionsItem) 134 self.__model.appendRow(self.__suggestionsItem)
128 135
129 for suggestion in self.__suggestions: 136 for suggestion in self.__suggestions:
130 self.__model.appendRow(QStandardItem(suggestion)) 137 self.__model.appendRow(QStandardItem(suggestion))
131 138
132 if not self.__recentSearches: 139 if not self.__recentSearches:
133 self.__recentSearchesItem = QStandardItem(self.trUtf8("No Recent Searches")) 140 self.__recentSearchesItem = QStandardItem(
141 self.trUtf8("No Recent Searches"))
134 self.__recentSearchesItem.setFont(boldFont) 142 self.__recentSearchesItem.setFont(boldFont)
135 self.__model.appendRow(self.__recentSearchesItem) 143 self.__model.appendRow(self.__recentSearchesItem)
136 else: 144 else:
137 self.__recentSearchesItem = QStandardItem(self.trUtf8("Recent Searches")) 145 self.__recentSearchesItem = QStandardItem(
146 self.trUtf8("Recent Searches"))
138 self.__recentSearchesItem.setFont(boldFont) 147 self.__recentSearchesItem.setFont(boldFont)
139 self.__model.appendRow(self.__recentSearchesItem) 148 self.__model.appendRow(self.__recentSearchesItem)
140 for recentSearch in self.__recentSearches: 149 for recentSearch in self.__recentSearches:
141 self.__model.appendRow(QStandardItem(recentSearch)) 150 self.__model.appendRow(QStandardItem(recentSearch))
142 151
143 view = self.__completer.popup() 152 view = self.__completer.popup()
144 view.setFixedHeight( 153 view.setFixedHeight(view.sizeHintForRow(0) * self.__model.rowCount() +
145 view.sizeHintForRow(0) * self.__model.rowCount() + view.frameWidth() * 2) 154 view.frameWidth() * 2)
146 155
147 self.__searchButton.setEnabled( 156 self.__searchButton.setEnabled(
148 bool(self.__recentSearches or self.__suggestions)) 157 bool(self.__recentSearches or self.__suggestions))
149 158
150 def __completerActivated(self, index): 159 def __completerActivated(self, index):
166 def __completerHighlighted(self, index): 175 def __completerHighlighted(self, index):
167 """ 176 """
168 Private slot handling the highlighting of an entry of the completer. 177 Private slot handling the highlighting of an entry of the completer.
169 178
170 @param index index of the item (QModelIndex) 179 @param index index of the item (QModelIndex)
180 @return flah indicating a successful highlighting (boolean)
171 """ 181 """
172 if self.__suggestionsItem and \ 182 if self.__suggestionsItem and \
173 self.__suggestionsItem.index().row() == index.row(): 183 self.__suggestionsItem.index().row() == index.row():
174 return False 184 return False
175 185
197 self.__completer.setCompletionPrefix(txt) 207 self.__completer.setCompletionPrefix(txt)
198 self.__completer.complete() 208 self.__completer.complete()
199 209
200 def __getSuggestions(self): 210 def __getSuggestions(self):
201 """ 211 """
202 Private slot to get search suggestions from the configured search engine. 212 Private slot to get search suggestions from the configured search
213 engine.
203 """ 214 """
204 searchText = self.text() 215 searchText = self.text()
205 if searchText: 216 if searchText:
206 self.__openSearchManager.currentEngine().requestSuggestions(searchText) 217 self.__openSearchManager.currentEngine()\
218 .requestSuggestions(searchText)
207 219
208 def __newSuggestions(self, suggestions): 220 def __newSuggestions(self, suggestions):
209 """ 221 """
210 Private slot to receive a new list of suggestions. 222 Private slot to receive a new list of suggestions.
211 223
257 if not ct.title(): 269 if not ct.title():
258 title = url.host() 270 title = url.host()
259 else: 271 else:
260 title = ct.title() 272 title = ct.title()
261 273
262 action = self.__enginesMenu.addAction(self.trUtf8("Add '{0}'").format(title), 274 action = self.__enginesMenu.addAction(
263 self.__addEngineFromUrl) 275 self.trUtf8("Add '{0}'").format(title),
276 self.__addEngineFromUrl)
264 action.setData(url) 277 action.setData(url)
265 action.setIcon(ct.icon()) 278 action.setIcon(ct.icon())
266 279
267 self.__enginesMenu.addSeparator() 280 self.__enginesMenu.addSeparator()
268 self.__enginesMenu.addAction(self.__mw.searchEnginesAction()) 281 self.__enginesMenu.addAction(self.__mw.searchEnginesAction())
357 if self.__suggestionsEnabled: 370 if self.__suggestionsEnabled:
358 newEngine.suggestions.connect(self.__newSuggestions) 371 newEngine.suggestions.connect(self.__newSuggestions)
359 372
360 self.setInactiveText(self.__openSearchManager.currentEngineName()) 373 self.setInactiveText(self.__openSearchManager.currentEngineName())
361 self.__currentEngine = self.__openSearchManager.currentEngineName() 374 self.__currentEngine = self.__openSearchManager.currentEngineName()
362 self.__engineButton.setIcon( 375 self.__engineButton.setIcon(QIcon(QPixmap.fromImage(
363 QIcon(QPixmap.fromImage(self.__openSearchManager.currentEngine().image()))) 376 self.__openSearchManager.currentEngine().image())))
364 self.__suggestions = [] 377 self.__suggestions = []
365 self.__setupCompleterMenu() 378 self.__setupCompleterMenu()
366 379
367 def __engineImageChanged(self): 380 def __engineImageChanged(self):
368 """ 381 """
369 Private slot to handle a change of the current search engine icon. 382 Private slot to handle a change of the current search engine icon.
370 """ 383 """
371 self.__engineButton.setIcon( 384 self.__engineButton.setIcon(QIcon(QPixmap.fromImage(
372 QIcon(QPixmap.fromImage(self.__openSearchManager.currentEngine().image()))) 385 self.__openSearchManager.currentEngine().image())))
373 386
374 def mousePressEvent(self, evt): 387 def mousePressEvent(self, evt):
375 """ 388 """
376 Protected method called by a mouse press event. 389 Protected method called by a mouse press event.
377 390

eric ide

mercurial