Helpviewer/HelpWebSearchWidget.py

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

eric ide

mercurial