diff -r 7d0e5ca7eb3e -r 7caa05cd6168 src/eric7/QScintilla/SearchReplaceWidget.py --- a/src/eric7/QScintilla/SearchReplaceWidget.py Fri Sep 15 10:27:46 2023 +0200 +++ b/src/eric7/QScintilla/SearchReplaceWidget.py Fri Sep 22 17:24:02 2023 +0200 @@ -54,6 +54,8 @@ super().__init__(parent) self.setupUi(self) + self.layout().setContentsMargins(1, 1, 1, 1) + self.__viewmanager = vm self.__isMiniEditor = vm is parent self.__sliding = sliding @@ -151,7 +153,22 @@ self.__findtextComboStyleSheet = self.findtextCombo.styleSheet() + self.modeToggleButton.clicked.connect(self.__toggleReplaceMode) + # define actions + self.modeToggleAct = EricAction( + self.tr("Toggle Mode"), + self.tr("Toggle Mode"), + 0, + 0, + self, + "search_widget_togle_mode", + ) + self.modeToggleAct.triggered.connect(self.__toggleReplaceMode) + self.modeToggleAct.setShortcutContext( + Qt.ShortcutContext.WidgetWithChildrenShortcut + ) + self.findNextAct = EricAction( self.tr("Find Next"), self.tr("Find Next"), @@ -220,6 +237,7 @@ Qt.ShortcutContext.WidgetWithChildrenShortcut ) + self.addAction(self.modeToggleAct) self.addAction(self.findNextAct) self.addAction(self.findPrevAct) self.addAction(self.replaceAndSearchAct) @@ -280,6 +298,14 @@ sequences as in the view manager. """ if not self.__isMiniEditor: + if self.__replaceMode: + self.modeToggleAct.setShortcuts( + self.__viewmanager.searchAct.shortcuts() + ) + else: + self.modeToggleAct.setShortcuts( + self.__viewmanager.replaceAct.shortcuts() + ) self.findNextAct.setShortcuts(self.__viewmanager.searchNextAct.shortcuts()) self.findPrevAct.setShortcuts(self.__viewmanager.searchPrevAct.shortcuts()) @@ -423,6 +449,19 @@ return startLine, startIndex, endLine, endIndex + @pyqtSlot() + def __toggleReplaceMode(self): + """ + Private slot to toggle the widget mode. + """ + replaceMode = not self.__replaceMode + if self.__sliding: + self.__topWidget.show( + text=self.findtextCombo.currentText(), replaceMode=replaceMode + ) + else: + self.show(text=self.findtextCombo.currentText(), replaceMode=replaceMode) + @pyqtSlot(str) def on_findtextCombo_editTextChanged(self, txt): """ @@ -969,6 +1008,8 @@ @param text text to be shown in the findtext edit (defaults to "") @type str (optional) """ + self.modeToggleButton.setIcon(EricPixmapCache.getIcon("1downarrow")) + # hide the replace related widgets for widget in ( self.replaceLabel, @@ -1294,7 +1335,9 @@ @param text text to be shown in the findtext edit (defaults to "") @type str (optional) """ - # hide the replace related widgets + self.modeToggleButton.setIcon(EricPixmapCache.getIcon("1uparrow")) + + # show the replace related widgets for widget in ( self.replaceLabel, self.replacetextCombo,