Helpviewer/HelpWebSearchWidget.py

changeset 488
4174c2707dba
parent 465
c20e25deb33a
child 501
5c615a85241a
equal deleted inserted replaced
487:4d41d03d3d00 488:4174c2707dba
24 """ 24 """
25 Class implementing a web search widget for the web browser. 25 Class implementing a web search widget for the web browser.
26 26
27 @signal search(url) emitted when the search should be done 27 @signal search(url) emitted when the search should be done
28 """ 28 """
29 search = pyqtSignal(QUrl)
30
29 def __init__(self, parent = None): 31 def __init__(self, parent = None):
30 """ 32 """
31 Constructor 33 Constructor
32 34
33 @param inactiveText text to be shown on inactivity (string) 35 @param inactiveText text to be shown on inactivity (string)
36 QWidget.__init__(self, parent) 38 QWidget.__init__(self, parent)
37 39
38 self.mw = parent 40 self.mw = parent
39 41
40 self.__openSearchManager = OpenSearchManager(self) 42 self.__openSearchManager = OpenSearchManager(self)
41 self.connect(self.__openSearchManager, 43 self.__openSearchManager.currentEngineChanged.connect(self.__currentEngineChanged)
42 SIGNAL("currentEngineChanged()"),
43 self.__currentEngineChanged)
44 self.__currentEngine = "" 44 self.__currentEngine = ""
45 45
46 self.__layout = QHBoxLayout(self) 46 self.__layout = QHBoxLayout(self)
47 self.__layout.setMargin(0) 47 self.__layout.setMargin(0)
48 self.__layout.setSpacing(0) 48 self.__layout.setSpacing(0)
71 self.__completer.setModel(self.__model) 71 self.__completer.setModel(self.__model)
72 self.__completer.setCompletionMode(QCompleter.UnfilteredPopupCompletion) 72 self.__completer.setCompletionMode(QCompleter.UnfilteredPopupCompletion)
73 self.__completer.setWidget(self.__searchEdit) 73 self.__completer.setWidget(self.__searchEdit)
74 74
75 self.__searchButton.clicked[()].connect(self.__searchButtonClicked) 75 self.__searchButton.clicked[()].connect(self.__searchButtonClicked)
76 self.connect(self.__searchEdit, SIGNAL("textEdited(const QString&)"), 76 self.__searchEdit.textEdited.connect(self.__textEdited)
77 self.__textEdited)
78 self.__clearButton.clicked[()].connect(self.__searchEdit.clear) 77 self.__clearButton.clicked[()].connect(self.__searchEdit.clear)
79 self.__searchEdit.returnPressed[()].connect(self.__searchNow) 78 self.__searchEdit.returnPressed[()].connect(self.__searchNow)
80 self.connect(self.__completer, SIGNAL("activated(const QModelIndex &)"), 79 self.__completer.activated[QModelIndex].connect(self.__completerActivated)
81 self.__completerActivated) 80 self.__completer.highlighted[QModelIndex].connect(self.__completerHighlighted)
82 self.connect(self.__completer, SIGNAL("highlighted(const QModelIndex &)"),
83 self.__completerHighlighted)
84 self.__enginesMenu.aboutToShow.connect(self.__showEnginesMenu) 81 self.__enginesMenu.aboutToShow.connect(self.__showEnginesMenu)
85 82
86 self.__suggestionsItem = None 83 self.__suggestionsItem = None
87 self.__suggestions = [] 84 self.__suggestions = []
88 self.__suggestTimer = None 85 self.__suggestTimer = None
113 if len(self.__recentSearches) > self.__maxSavedSearches: 110 if len(self.__recentSearches) > self.__maxSavedSearches:
114 self.__recentSearches = self.__recentSearches[:self.__maxSavedSearches] 111 self.__recentSearches = self.__recentSearches[:self.__maxSavedSearches]
115 self.__setupCompleterMenu() 112 self.__setupCompleterMenu()
116 113
117 url = self.__openSearchManager.currentEngine().searchUrl(searchText) 114 url = self.__openSearchManager.currentEngine().searchUrl(searchText)
118 self.emit(SIGNAL("search"), url) 115 self.search.emit(url)
119 116
120 def __setupCompleterMenu(self): 117 def __setupCompleterMenu(self):
121 """ 118 """
122 Private method to create the completer menu. 119 Private method to create the completer menu.
123 """ 120 """
202 if self.__suggestionsEnabled: 199 if self.__suggestionsEnabled:
203 if self.__suggestTimer is None: 200 if self.__suggestTimer is None:
204 self.__suggestTimer = QTimer(self) 201 self.__suggestTimer = QTimer(self)
205 self.__suggestTimer.setSingleShot(True) 202 self.__suggestTimer.setSingleShot(True)
206 self.__suggestTimer.setInterval(200) 203 self.__suggestTimer.setInterval(200)
207 self.connect(self.__suggestTimer, SIGNAL("timeout()"), 204 self.__suggestTimer.timeout.connect(self.__getSuggestions)
208 self.__getSuggestions)
209 self.__suggestTimer.start() 205 self.__suggestTimer.start()
210 else: 206 else:
211 self.__completer.setCompletionPrefix(txt) 207 self.__completer.setCompletionPrefix(txt)
212 self.__completer.complete() 208 self.__completer.complete()
213 209
357 """ 353 """
358 Private slot to track a change of the current search engine. 354 Private slot to track a change of the current search engine.
359 """ 355 """
360 if self.__openSearchManager.engineExists(self.__currentEngine): 356 if self.__openSearchManager.engineExists(self.__currentEngine):
361 oldEngine = self.__openSearchManager.engine(self.__currentEngine) 357 oldEngine = self.__openSearchManager.engine(self.__currentEngine)
362 self.disconnect(oldEngine, SIGNAL("imageChanged()"), 358 oldEngine.imageChanged.disconnect(self.__engineImageChanged)
363 self.__engineImageChanged)
364 if self.__suggestionsEnabled: 359 if self.__suggestionsEnabled:
365 self.disconnect(oldEngine, SIGNAL("suggestions(const QStringList&)"), 360 oldEngine.suggestions.disconnect(self.__newSuggestions)
366 self.__newSuggestions)
367 361
368 newEngine = self.__openSearchManager.currentEngine() 362 newEngine = self.__openSearchManager.currentEngine()
369 if newEngine.networkAccessManager() is None: 363 if newEngine.networkAccessManager() is None:
370 newEngine.setNetworkAccessManager(self.mw.networkAccessManager()) 364 newEngine.setNetworkAccessManager(self.mw.networkAccessManager())
371 self.connect(newEngine, SIGNAL("imageChanged()"), 365 newEngine.imageChanged.connect(self.__engineImageChanged)
372 self.__engineImageChanged)
373 if self.__suggestionsEnabled: 366 if self.__suggestionsEnabled:
374 self.connect(newEngine, SIGNAL("suggestions(const QStringList&)"), 367 newEngine.suggestions.connect(self.__newSuggestions)
375 self.__newSuggestions)
376 368
377 self.__searchEdit.setInactiveText(self.__openSearchManager.currentEngineName()) 369 self.__searchEdit.setInactiveText(self.__openSearchManager.currentEngineName())
378 self.__currentEngine = self.__openSearchManager.currentEngineName() 370 self.__currentEngine = self.__openSearchManager.currentEngineName()
379 self.__engineButton.setIcon( 371 self.__engineButton.setIcon(
380 QIcon(QPixmap.fromImage(self.__openSearchManager.currentEngine().image()))) 372 QIcon(QPixmap.fromImage(self.__openSearchManager.currentEngine().image())))

eric ide

mercurial