From abc14db7d112dc6d5781446d54ba38bcdd3631e6 Mon Sep 17 00:00:00 2001 From: "Veronica K. B. Olsen" <1619840+vkbo@users.noreply.github.com> Date: Tue, 16 Jun 2020 23:07:18 +0200 Subject: [PATCH] Search options can now be set in a popup menu --- nw/gui/doceditor.py | 46 ++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 45 insertions(+), 1 deletion(-) diff --git a/nw/gui/doceditor.py b/nw/gui/doceditor.py index 8ad72649..9deb071b 100644 --- a/nw/gui/doceditor.py +++ b/nw/gui/doceditor.py @@ -37,7 +37,7 @@ from time import time from PyQt5.QtCore import Qt, QSize, QThread, QTimer, pyqtSlot, QRegExp from PyQt5.QtGui import ( QTextCursor, QTextOption, QKeySequence, QFont, QColor, QPalette, - QTextDocument, QCursor + QTextDocument, QCursor, QIcon ) from PyQt5.QtWidgets import ( qApp, QTextEdit, QAction, QMenu, QShortcut, QMessageBox, QWidget, QLabel, @@ -1297,6 +1297,32 @@ class GuiDocEditSearch(QWidget): self.replaceBox.setFont(boxFont) self.replaceBox.returnPressed.connect(self._doSearch) + self.searchOpt = QMenu(self) + + self.toggleCase = QAction("Case Sensitive", self) + self.toggleCase.setFont(boxFont) + self.toggleCase.setCheckable(True) + self.toggleCase.toggled.connect(self._doToggleCase) + self.searchOpt.addAction(self.toggleCase) + + self.toggleWord = QAction("Whole Words Only", self) + self.toggleWord.setFont(boxFont) + self.toggleWord.setCheckable(True) + self.toggleWord.toggled.connect(self._doToggleWord) + self.searchOpt.addAction(self.toggleWord) + + self.toggleRegEx = QAction("RegEx Mode", self) + self.toggleRegEx.setFont(boxFont) + self.toggleRegEx.setCheckable(True) + self.toggleRegEx.toggled.connect(self._doToggleRegEx) + self.searchOpt.addAction(self.toggleRegEx) + + self.optButton = QAction(self) + self.optButton.setIcon(self.theTheme.getIcon("edit")) + self.optButton.setMenu(self.searchOpt) + + self.searchBox.addAction(self.optButton, QLineEdit.TrailingPosition) + # Buttons # ======= bPx = self.searchBox.sizeHint().height() @@ -1440,6 +1466,24 @@ class GuiDocEditSearch(QWidget): self.docEditor.docAction(nwDocAction.REPL_NEXT) return + def _doToggleCase(self, theState): + """Enable/disable case sensitive mode. + """ + self.isCaseSense = theState + return + + def _doToggleWord(self, theState): + """Enable/disable whole word search mode. + """ + self.isWholeWord = theState + return + + def _doToggleRegEx(self, theState): + """Enable/disable regular expression search mode. + """ + self.isRegEx = theState + return + ## # Internal Functions ##