diff --git a/src/calibre/gui2/convert/regex_builder.py b/src/calibre/gui2/convert/regex_builder.py index b1d8fbcbd5..83e548f81d 100644 --- a/src/calibre/gui2/convert/regex_builder.py +++ b/src/calibre/gui2/convert/regex_builder.py @@ -25,7 +25,7 @@ class RegexHighlighter(QSyntaxHighlighter): self.regex = u'' def update_regex(self, regex): - self.regex = qstring_to_unicode(regex) + self.regex = regex self.rehighlight() def highlightBlock(self, text): @@ -59,14 +59,22 @@ class RegexBuilder(QDialog, Ui_RegexBuilder): self.select_format(db, book_id) self.connect(self.button_box, SIGNAL('clicked(QAbstractButton*)'), self.button_clicked) - self.connect(self.regex, SIGNAL('textChanged(QString)'), self.highlighter.update_regex) - self.connect(self.highlighter, SIGNAL('regex_valid(PyQt_PyObject)'), self.regex_valid) + self.connect(self.regex, SIGNAL('textChanged(QString)'), self.regex_valid) + self.connect(self.test, SIGNAL('clicked()'), self.do_test) def regex_valid(self, valid): - if valid: - self.regex.setStyleSheet('QLineEdit { color: black; background-color: white; }') + regex = qstring_to_unicode(self.regex.text()) + if regex: + try: + re.compile(regex) + self.regex.setStyleSheet('QLineEdit { color: black; background-color: rgba(0,255,0,20%); }') + except: + self.regex.setStyleSheet('QLineEdit { color: black; background-color: rgb(255,0,0,20%); }') else: - self.regex.setStyleSheet('QLineEdit { color: black; background-color: rgb(255,0,0,20%); }') + self.regex.setStyleSheet('QLineEdit { color: black; background-color: white; }') + + def do_test(self): + self.highlighter.update_regex(qstring_to_unicode(self.regex.text())) def select_format(self, db, book_id): format = None diff --git a/src/calibre/gui2/convert/regex_builder.ui b/src/calibre/gui2/convert/regex_builder.ui index 3448c4dded..af17917676 100644 --- a/src/calibre/gui2/convert/regex_builder.ui +++ b/src/calibre/gui2/convert/regex_builder.ui @@ -14,7 +14,7 @@ Regex Builder - + Preview @@ -36,7 +36,7 @@ - + Qt::Horizontal @@ -53,8 +53,19 @@ - - + + + + + + + + + Test + + + +