summaryrefslogtreecommitdiffstats
path: root/examples/widgets/tools
diff options
context:
space:
mode:
Diffstat (limited to 'examples/widgets/tools')
-rw-r--r--examples/widgets/tools/regularexpression/regularexpressiondialog.cpp98
-rw-r--r--examples/widgets/tools/regularexpression/regularexpressiondialog.h1
2 files changed, 58 insertions, 41 deletions
diff --git a/examples/widgets/tools/regularexpression/regularexpressiondialog.cpp b/examples/widgets/tools/regularexpression/regularexpressiondialog.cpp
index 7a67c763d8..371e2bda4b 100644
--- a/examples/widgets/tools/regularexpression/regularexpressiondialog.cpp
+++ b/examples/widgets/tools/regularexpression/regularexpressiondialog.cpp
@@ -109,6 +109,19 @@ RegularExpressionDialog::RegularExpressionDialog(QWidget *parent)
refresh();
}
+void RegularExpressionDialog::setResultUiEnabled(bool enabled)
+{
+ matchDetailsTreeWidget->setEnabled(enabled);
+ namedGroupsTreeWidget->setEnabled(enabled);
+}
+
+static void setTextColor(QWidget *widget, const QColor &color)
+{
+ QPalette palette = widget->palette();
+ palette.setColor(QPalette::Text, color);
+ widget->setPalette(palette);
+}
+
void RegularExpressionDialog::refresh()
{
setUpdatesEnabled(false);
@@ -125,7 +138,30 @@ void RegularExpressionDialog::refresh()
escaped.append(QLatin1Char('"'));
escapedPatternLineEdit->setText(escaped);
+ setTextColor(patternLineEdit, subjectTextEdit->palette().color(QPalette::Text));
+ matchDetailsTreeWidget->clear();
+ namedGroupsTreeWidget->clear();
+ regexpStatusLabel->setText(QString());
+
+ if (pattern.isEmpty()) {
+ setResultUiEnabled(false);
+ setUpdatesEnabled(true);
+ return;
+ }
+
QRegularExpression rx(pattern);
+ if (!rx.isValid()) {
+ setTextColor(patternLineEdit, Qt::red);
+ regexpStatusLabel->setText(tr("Invalid: syntax error at position %1 (%2)")
+ .arg(rx.patternErrorOffset())
+ .arg(rx.errorString()));
+ setResultUiEnabled(false);
+ setUpdatesEnabled(true);
+ return;
+ }
+
+ setResultUiEnabled(true);
+
QRegularExpression::MatchType matchType = matchTypeComboBox->currentData().value<QRegularExpression::MatchType>();
QRegularExpression::PatternOptions patternOptions = QRegularExpression::NoPatternOption;
QRegularExpression::MatchOptions matchOptions = QRegularExpression::NoMatchOption;
@@ -156,60 +192,40 @@ void RegularExpressionDialog::refresh()
rx.setPatternOptions(patternOptions);
- QPalette palette = patternLineEdit->palette();
- if (rx.isValid())
- palette.setColor(QPalette::Text, subjectTextEdit->palette().color(QPalette::Text));
- else
- palette.setColor(QPalette::Text, Qt::red);
- patternLineEdit->setPalette(palette);
-
- matchDetailsTreeWidget->clear();
- matchDetailsTreeWidget->setEnabled(rx.isValid());
+ const int capturingGroupsCount = rx.captureCount() + 1;
- if (rx.isValid()) {
- const int capturingGroupsCount = rx.captureCount() + 1;
+ QRegularExpressionMatchIterator iterator = rx.globalMatch(text, offsetSpinBox->value(), matchType, matchOptions);
+ int i = 0;
- QRegularExpressionMatchIterator iterator = rx.globalMatch(text, offsetSpinBox->value(), matchType, matchOptions);
- int i = 0;
+ while (iterator.hasNext()) {
+ QRegularExpressionMatch match = iterator.next();
- while (iterator.hasNext()) {
- QRegularExpressionMatch match = iterator.next();
+ QTreeWidgetItem *matchDetailTopItem = new QTreeWidgetItem(matchDetailsTreeWidget);
+ matchDetailTopItem->setText(0, QString::number(i));
- QTreeWidgetItem *matchDetailTopItem = new QTreeWidgetItem(matchDetailsTreeWidget);
- matchDetailTopItem->setText(0, QString::number(i));
-
- for (int captureGroupIndex = 0; captureGroupIndex < capturingGroupsCount; ++captureGroupIndex) {
- QTreeWidgetItem *matchDetailItem = new QTreeWidgetItem(matchDetailTopItem);
- matchDetailItem->setText(1, QString::number(captureGroupIndex));
- matchDetailItem->setText(2, match.captured(captureGroupIndex));
- }
-
- ++i;
+ for (int captureGroupIndex = 0; captureGroupIndex < capturingGroupsCount; ++captureGroupIndex) {
+ QTreeWidgetItem *matchDetailItem = new QTreeWidgetItem(matchDetailTopItem);
+ matchDetailItem->setText(1, QString::number(captureGroupIndex));
+ matchDetailItem->setText(2, match.captured(captureGroupIndex));
}
+
+ ++i;
}
matchDetailsTreeWidget->expandAll();
- namedGroupsTreeWidget->clear();
- namedGroupsTreeWidget->setEnabled(rx.isValid());
-
- if (rx.isValid()) {
- regexpStatusLabel->setText(tr("Valid"));
+ regexpStatusLabel->setText(tr("Valid"));
- const QStringList namedCaptureGroups = rx.namedCaptureGroups();
- for (int i = 0; i < namedCaptureGroups.size(); ++i) {
- const QString currentNamedCaptureGroup = namedCaptureGroups.at(i);
+ const QStringList namedCaptureGroups = rx.namedCaptureGroups();
+ for (int i = 0; i < namedCaptureGroups.size(); ++i) {
+ const QString currentNamedCaptureGroup = namedCaptureGroups.at(i);
- QTreeWidgetItem *namedGroupItem = new QTreeWidgetItem(namedGroupsTreeWidget);
- namedGroupItem->setText(0, QString::number(i));
- namedGroupItem->setText(1, currentNamedCaptureGroup.isNull() ? tr("<no name>") : currentNamedCaptureGroup);
- }
- } else {
- regexpStatusLabel->setText(tr("Invalid: syntax error at position %1 (%2)")
- .arg(rx.patternErrorOffset())
- .arg(rx.errorString()));
+ QTreeWidgetItem *namedGroupItem = new QTreeWidgetItem(namedGroupsTreeWidget);
+ namedGroupItem->setText(0, QString::number(i));
+ namedGroupItem->setText(1, currentNamedCaptureGroup.isNull() ? tr("<no name>") : currentNamedCaptureGroup);
}
+
setUpdatesEnabled(true);
}
diff --git a/examples/widgets/tools/regularexpression/regularexpressiondialog.h b/examples/widgets/tools/regularexpression/regularexpressiondialog.h
index e75abc83e8..f7d64085fc 100644
--- a/examples/widgets/tools/regularexpression/regularexpressiondialog.h
+++ b/examples/widgets/tools/regularexpression/regularexpressiondialog.h
@@ -78,6 +78,7 @@ private:
void setupUi();
QWidget *setupLeftUi();
QWidget *setupRightUi();
+ void setResultUiEnabled(bool enabled);
QLineEdit *patternLineEdit;
QLineEdit *escapedPatternLineEdit;