Merge topic '16204-regex-explorer-match-all'

4164078c cmake-gui: Add MATCHALL option to Regex Explorer
This commit is contained in:
Brad King 2017-01-10 09:34:58 -05:00 committed by CMake Topic Stage
commit 914728f8d7
3 changed files with 65 additions and 7 deletions

View File

@ -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();
}

View File

@ -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);

View File

@ -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">