summaryrefslogtreecommitdiffstats
path: root/Source/QtDialog
diff options
context:
space:
mode:
authorGregor Jasny <gjasny@googlemail.com>2016-12-27 15:38:09 (GMT)
committerBrad King <brad.king@kitware.com>2017-01-10 14:28:13 (GMT)
commit4164078c8540bbf75b47afd5c1bee0acbbd5b253 (patch)
treee675d9da2e273acc7f5804024d400247238de88a /Source/QtDialog
parent65fb0fa63279b96035a144fd2f6413d1b2def47f (diff)
downloadCMake-4164078c8540bbf75b47afd5c1bee0acbbd5b253.zip
CMake-4164078c8540bbf75b47afd5c1bee0acbbd5b253.tar.gz
CMake-4164078c8540bbf75b47afd5c1bee0acbbd5b253.tar.bz2
cmake-gui: Add MATCHALL option to Regex Explorer
Closes: #16204
Diffstat (limited to 'Source/QtDialog')
-rw-r--r--Source/QtDialog/RegexExplorer.cxx34
-rw-r--r--Source/QtDialog/RegexExplorer.h1
-rw-r--r--Source/QtDialog/RegexExplorer.ui37
3 files changed, 65 insertions, 7 deletions
diff --git a/Source/QtDialog/RegexExplorer.cxx b/Source/QtDialog/RegexExplorer.cxx
index 1512166..abed70e 100644
--- a/Source/QtDialog/RegexExplorer.cxx
+++ b/Source/QtDialog/RegexExplorer.cxx
@@ -64,10 +64,32 @@ void RegexExplorer::on_inputText_textChanged()
return;
}
+ std::string matchingText;
+
+ if (matchAll->isChecked()) {
+ const char* p = m_text.c_str();
+ while (m_regexParser.find(p)) {
+ std::string::size_type l = m_regexParser.start();
+ std::string::size_type r = m_regexParser.end();
+ if (r - l == 0) {
+ // matched empty string
+ clearMatch();
+ return;
+ }
+ if (!matchingText.empty()) {
+ matchingText += ";";
+ }
+ matchingText += std::string(p + l, r - l);
+ p += r;
+ }
+ } else {
+ matchingText = m_regexParser.match(0);
+ }
+
#ifdef QT_NO_STL
- QString matchText = m_regexParser.match(0).c_str();
+ QString matchText = matchingText.c_str();
#else
- QString matchText = QString::fromStdString(m_regexParser.match(0));
+ QString matchText = QString::fromStdString(matchingText);
#endif
match0->setPlainText(matchText);
@@ -95,8 +117,16 @@ void RegexExplorer::on_matchNumber_currentIndexChanged(int index)
matchN->setPlainText(match);
}
+void RegexExplorer::on_matchAll_toggled(bool checked)
+{
+ Q_UNUSED(checked);
+
+ on_inputText_textChanged();
+}
+
void RegexExplorer::clearMatch()
{
+ m_matched = false;
match0->clear();
matchN->clear();
}
diff --git a/Source/QtDialog/RegexExplorer.h b/Source/QtDialog/RegexExplorer.h
index f1c1e5f..caef975 100644
--- a/Source/QtDialog/RegexExplorer.h
+++ b/Source/QtDialog/RegexExplorer.h
@@ -22,6 +22,7 @@ private slots:
void on_regularExpression_textChanged(const QString& text);
void on_inputText_textChanged();
void on_matchNumber_currentIndexChanged(int index);
+ void on_matchAll_toggled(bool checked);
private:
static void setStatusColor(QWidget* widget, bool successful);
diff --git a/Source/QtDialog/RegexExplorer.ui b/Source/QtDialog/RegexExplorer.ui
index 2c2d761..0af6999 100644
--- a/Source/QtDialog/RegexExplorer.ui
+++ b/Source/QtDialog/RegexExplorer.ui
@@ -104,11 +104,38 @@
<widget class="QLineEdit" name="regularExpression"/>
</item>
<item>
- <widget class="QLabel" name="label_3">
- <property name="text">
- <string>Complete Match</string>
- </property>
- </widget>
+ <layout class="QHBoxLayout" name="horizontalLayout_3">
+ <item>
+ <widget class="QLabel" name="label_3">
+ <property name="text">
+ <string>Complete Match</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <spacer name="horizontalSpacer_5">
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <property name="sizeType">
+ <enum>QSizePolicy::Fixed</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>40</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ <item>
+ <widget class="QCheckBox" name="matchAll">
+ <property name="text">
+ <string>Match All</string>
+ </property>
+ </widget>
+ </item>
+ </layout>
</item>
<item>
<widget class="QPlainTextEdit" name="match0">