--- a/src/eric7/WebBrowser/SearchWidget.py Wed Jul 13 11:16:20 2022 +0200 +++ b/src/eric7/WebBrowser/SearchWidget.py Wed Jul 13 14:55:47 2022 +0200 @@ -20,93 +20,91 @@ """ Class implementing the search bar for the web browser. """ + def __init__(self, mainWindow, parent=None): """ Constructor - + @param mainWindow reference to the main window (QMainWindow) @param parent parent widget of this dialog (QWidget) """ super().__init__(parent) self.setupUi(self) - + self.__mainWindow = mainWindow - + self.closeButton.setIcon(UI.PixmapCache.getIcon("close")) self.findPrevButton.setIcon(UI.PixmapCache.getIcon("1leftarrow")) self.findNextButton.setIcon(UI.PixmapCache.getIcon("1rightarrow")) - + self.__defaultBaseColor = ( - self.findtextCombo.lineEdit().palette().color( - QPalette.ColorRole.Base) + self.findtextCombo.lineEdit().palette().color(QPalette.ColorRole.Base) ) self.__defaultTextColor = ( - self.findtextCombo.lineEdit().palette().color( - QPalette.ColorRole.Text) + self.findtextCombo.lineEdit().palette().color(QPalette.ColorRole.Text) ) - + self.__findHistory = [] self.__havefound = False self.__findBackwards = False - + self.findtextCombo.setCompleter(None) - self.findtextCombo.lineEdit().returnPressed.connect( - self.__findByReturnPressed) - self.findtextCombo.lineEdit().textEdited.connect( - self.__searchTextEdited) + self.findtextCombo.lineEdit().returnPressed.connect(self.__findByReturnPressed) + self.findtextCombo.lineEdit().textEdited.connect(self.__searchTextEdited) def on_findtextCombo_editTextChanged(self, txt): """ Private slot to enable/disable the find buttons. - + @param txt text of the combobox (string) """ self.findPrevButton.setEnabled(txt != "") self.findNextButton.setEnabled(txt != "") - + def __searchTextEdited(self, txt): """ Private slot to perform an incremental search. - + @param txt current text of the search combos line edit (string) (unused) """ self.__findNextPrev() - + def __findNextPrev(self): """ Private slot to find the next occurrence of text. """ self.infoLabel.clear() self.__setFindtextComboBackground(False) - + if not self.findtextCombo.currentText(): return - + self.__mainWindow.currentBrowser().findNextPrev( self.findtextCombo.currentText(), self.caseCheckBox.isChecked(), self.__findBackwards, - self.__findNextPrevCallback) - + self.__findNextPrevCallback, + ) + def __findNextPrevCallback(self, result): """ Private method to process the result of the last search. - + @param result reference to the search result @type QWebEngineFindTextResult """ if result.numberOfMatches() == 0: self.infoLabel.setText(self.tr("Expression was not found.")) self.__setFindtextComboBackground(True) - + @pyqtSlot() def on_findNextButton_clicked(self): """ Private slot to find the next occurrence. """ txt = self.findtextCombo.currentText() - + # This moves any previous occurrence of this statement to the head # of the list and updates the combobox if txt in self.__findHistory: @@ -114,10 +112,10 @@ self.__findHistory.insert(0, txt) self.findtextCombo.clear() self.findtextCombo.addItems(self.__findHistory) - + self.__findBackwards = False self.__findNextPrev() - + def findNext(self): """ Public slot to find the next occurrence. @@ -125,7 +123,7 @@ if not self.__havefound or not self.findtextCombo.currentText(): self.showFind() return - + self.on_findNextButton_clicked() @pyqtSlot() @@ -134,7 +132,7 @@ Private slot to find the previous occurrence. """ txt = self.findtextCombo.currentText() - + # This moves any previous occurrence of this statement to the head # of the list and updates the combobox if txt in self.__findHistory: @@ -142,10 +140,10 @@ self.__findHistory.insert(0, txt) self.findtextCombo.clear() self.findtextCombo.addItems(self.__findHistory) - + self.__findBackwards = True self.__findNextPrev() - + def findPrevious(self): """ Public slot to find the previous occurrence. @@ -153,9 +151,9 @@ if not self.__havefound or not self.findtextCombo.currentText(): self.showFind() return - + self.on_findPrevButton_clicked() - + def __findByReturnPressed(self): """ Private slot to handle the returnPressed signal of the findtext @@ -172,27 +170,28 @@ """ self.__havefound = True self.__findBackwards = False - + self.findtextCombo.clear() self.findtextCombo.addItems(self.__findHistory) - self.findtextCombo.setEditText('') + self.findtextCombo.setEditText("") self.findtextCombo.setFocus() - + self.caseCheckBox.setChecked(False) - + if self.__mainWindow.currentBrowser().hasSelection(): self.findtextCombo.setEditText( - self.__mainWindow.currentBrowser().selectedText()) - + self.__mainWindow.currentBrowser().selectedText() + ) + self.__setFindtextComboBackground(False) self.show() - + def __resetSearch(self): """ Private method to reset the last search. """ self.__mainWindow.currentBrowser().findText("") - + @pyqtSlot() def on_closeButton_clicked(self): """ @@ -200,11 +199,11 @@ """ self.__resetSearch() self.close() - + def keyPressEvent(self, event): """ Protected slot to handle key press events. - + @param event reference to the key press event (QKeyEvent) """ if event.key() == Qt.Key.Key_Escape: @@ -214,18 +213,18 @@ event.accept() self.__resetSearch() self.close() - + def __setFindtextComboBackground(self, error): """ Private slot to change the findtext combo background to indicate errors. - + @param error flag indicating an error condition (boolean) """ styleSheet = ( "color: #000000; background-color: #ff6666" - if error else - f"color: {self.__defaultTextColor};" + if error + else f"color: {self.__defaultTextColor};" f" background-color: {self.__defaultBaseColor}" ) self.findtextCombo.setStyleSheet(styleSheet)