mirror of
https://github.com/WarmUpTill/SceneSwitcher.git
synced 2026-08-23 17:55:43 -05:00
Allow using regex capture groups in replacement
This commit is contained in:
committed by
WarmUpTill
parent
c2d2e883c6
commit
0e9875e6b5
@@ -1078,6 +1078,7 @@ AdvSceneSwitcher.action.variable.askForValuePrompt="Assign value to variable:"
|
||||
AdvSceneSwitcher.action.variable.mathExpression.example="( 1 + 2 * 3 ) / 4"
|
||||
AdvSceneSwitcher.action.variable.findAndReplace.find="Text to find"
|
||||
AdvSceneSwitcher.action.variable.findAndReplace.replace="Text to replace with"
|
||||
AdvSceneSwitcher.action.variable.findAndReplace.replace.tooltip="Using \1, \2, etc. to represent first, second, etc. capture groups is supported."
|
||||
AdvSceneSwitcher.action.variable.subString.begin="Beginning"
|
||||
AdvSceneSwitcher.action.variable.subString.all="All"
|
||||
AdvSceneSwitcher.action.variable.invalidSelection="Invalid selection!"
|
||||
|
||||
@@ -150,18 +150,12 @@ void MacroActionVariable::HandleFindAndReplace(Variable *var)
|
||||
var->SetValue(value);
|
||||
return;
|
||||
}
|
||||
QString resultString = QString::fromStdString(value);
|
||||
|
||||
QString replacement = QString::fromStdString(_replaceStr);
|
||||
auto regex = _findRegex.GetRegularExpression(_findStr);
|
||||
auto matchIterator = regex.globalMatch(QString::fromStdString(value));
|
||||
int offset = 0;
|
||||
while (matchIterator.hasNext()) {
|
||||
QRegularExpressionMatch match = matchIterator.next();
|
||||
resultString.replace(match.capturedStart() + offset,
|
||||
match.capturedLength(), replacement);
|
||||
offset += replacement.length() - match.capturedLength();
|
||||
}
|
||||
var->SetValue(resultString.toStdString());
|
||||
auto result = QString::fromStdString(value);
|
||||
result = result.replace(regex, replacement);
|
||||
var->SetValue(result.toStdString());
|
||||
}
|
||||
|
||||
void MacroActionVariable::HandleMathExpression(Variable *var)
|
||||
@@ -739,6 +733,8 @@ MacroActionVariableEdit::MacroActionVariableEdit(
|
||||
_regexMatchIdx->setMinimum(1);
|
||||
_regexMatchIdx->setMaximum(999);
|
||||
_regexMatchIdx->setSuffix(".");
|
||||
_replaceStr->setToolTip(obs_module_text(
|
||||
"AdvSceneSwitcher.action.variable.findAndReplace.replace.tooltip"));
|
||||
_inputPrompt->setSizePolicy(QSizePolicy::MinimumExpanding,
|
||||
QSizePolicy::Preferred);
|
||||
_sceneItemIndex->setMinimum(1);
|
||||
|
||||
Reference in New Issue
Block a user