mirror of
https://github.com/olivierkes/manuskript.git
synced 2024-09-28 07:21:31 +12:00
Change text color to red when the regex is not correct
updated everytime the text changes in the lineedit
This commit is contained in:
parent
e0a3d01091
commit
23ded19d58
1 changed files with 30 additions and 14 deletions
|
@ -1,5 +1,7 @@
|
||||||
#!/usr/bin/env python
|
#!/usr/bin/env python
|
||||||
# --!-- coding: utf8 --!--
|
# --!-- coding: utf8 --!--
|
||||||
|
import re
|
||||||
|
|
||||||
from PyQt5.QtCore import Qt, QRect, QEvent, QCoreApplication
|
from PyQt5.QtCore import Qt, QRect, QEvent, QCoreApplication
|
||||||
from PyQt5.QtGui import QPalette, QFontMetrics, QKeySequence
|
from PyQt5.QtGui import QPalette, QFontMetrics, QKeySequence
|
||||||
from PyQt5.QtWidgets import QWidget, qApp, QListWidgetItem, QStyledItemDelegate, QStyle, QLabel, QToolTip, QShortcut
|
from PyQt5.QtWidgets import QWidget, qApp, QListWidgetItem, QStyledItemDelegate, QStyle, QLabel, QToolTip, QShortcut
|
||||||
|
@ -25,6 +27,7 @@ class search(QWidget, Ui_search):
|
||||||
self.setupUi(self)
|
self.setupUi(self)
|
||||||
|
|
||||||
self.searchTextInput.returnPressed.connect(self.search)
|
self.searchTextInput.returnPressed.connect(self.search)
|
||||||
|
self.searchTextInput.textChanged.connect(self.updateSearchFeedback)
|
||||||
|
|
||||||
self.searchMenu = searchMenu()
|
self.searchMenu = searchMenu()
|
||||||
self.btnOptions.setMenu(self.searchMenu)
|
self.btnOptions.setMenu(self.searchMenu)
|
||||||
|
@ -70,10 +73,30 @@ class search(QWidget, Ui_search):
|
||||||
if 0 < self.result.currentRow() < self.result.count():
|
if 0 < self.result.currentRow() < self.result.count():
|
||||||
self.openItem(self.result.currentItem())
|
self.openItem(self.result.currentItem())
|
||||||
|
|
||||||
|
def updateSearchFeedback(self, search_string):
|
||||||
|
palette = QPalette()
|
||||||
|
try:
|
||||||
|
self.compileRegex(search_string)
|
||||||
|
except Exception as e:
|
||||||
|
# From https://stackoverflow.com/questions/27432456/python-qlineedit-text-color
|
||||||
|
palette.setColor(QPalette.Text, Qt.red)
|
||||||
|
|
||||||
|
self.searchTextInput.setPalette(palette)
|
||||||
|
|
||||||
def prepareRegex(self, searchText):
|
def prepareRegex(self, searchText):
|
||||||
import re
|
|
||||||
rtn = None
|
rtn = None
|
||||||
try:
|
try:
|
||||||
|
rtn = self.compileRegex(searchText)
|
||||||
|
except re.error as e:
|
||||||
|
LOGGER.info("Problem preparing regular expression: " + e.msg)
|
||||||
|
rtn = None
|
||||||
|
except Exception as e:
|
||||||
|
LOGGER.info("Problem preparing regular expression")
|
||||||
|
rtn = None
|
||||||
|
return rtn
|
||||||
|
|
||||||
|
def compileRegex(self, searchText):
|
||||||
|
# Intentionally throws exceptions for use elsewhere
|
||||||
flags = re.UNICODE
|
flags = re.UNICODE
|
||||||
|
|
||||||
if self.searchMenu.caseSensitive() is False:
|
if self.searchMenu.caseSensitive() is False:
|
||||||
|
@ -86,14 +109,7 @@ class search(QWidget, Ui_search):
|
||||||
# Source: https://stackoverflow.com/a/15863102
|
# Source: https://stackoverflow.com/a/15863102
|
||||||
searchText = r'\b' + searchText + r'\b'
|
searchText = r'\b' + searchText + r'\b'
|
||||||
|
|
||||||
rtn = re.compile(searchText, flags)
|
return re.compile(searchText, flags)
|
||||||
except re.error as e:
|
|
||||||
LOGGER.info("Problem preparing regular expression: " + e.msg)
|
|
||||||
rtn = None
|
|
||||||
except Exception as e:
|
|
||||||
LOGGER.info("Problem preparing regular expression")
|
|
||||||
rtn = None
|
|
||||||
return rtn
|
|
||||||
|
|
||||||
def search(self):
|
def search(self):
|
||||||
self.result.clear()
|
self.result.clear()
|
||||||
|
|
Loading…
Reference in a new issue