diff options
author | Gregor Jasny <gjasny@googlemail.com> | 2016-12-27 15:38:09 (GMT) |
---|---|---|
committer | Brad King <brad.king@kitware.com> | 2017-01-10 14:28:13 (GMT) |
commit | 4164078c8540bbf75b47afd5c1bee0acbbd5b253 (patch) | |
tree | e675d9da2e273acc7f5804024d400247238de88a /Source/QtDialog | |
parent | 65fb0fa63279b96035a144fd2f6413d1b2def47f (diff) | |
download | CMake-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.cxx | 34 | ||||
-rw-r--r-- | Source/QtDialog/RegexExplorer.h | 1 | ||||
-rw-r--r-- | Source/QtDialog/RegexExplorer.ui | 37 |
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"> |