Skip to content

Commit 4305835

Browse files
committed
Implement 'ReplaceAll' text for script editor
1 parent b5d5d03 commit 4305835

File tree

3 files changed

+43
-17
lines changed

3 files changed

+43
-17
lines changed

src/server/gui/dialogs/server_dialogfindreplace.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -159,7 +159,7 @@ void mbServerDialogFindReplace::replaceAll()
159159
mbServerBaseScriptEditor *se = mbServer::global()->ui()->scriptManager()->activeScriptEditor();
160160
if (se)
161161
{
162-
;//se->replaceTextAll(ui->cmbReplace->currentText());
162+
se->replaceTextAll(ui->cmbReplace->currentText());
163163
}
164164
}
165165

src/server/gui/script/editor/server_scripteditor.cpp

Lines changed: 40 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,15 @@ const mbServerScriptEditor::Defaults &mbServerScriptEditor::Defaults::instance()
2626
return d;
2727
}
2828

29+
QTextDocument::FindFlags mbServerScriptEditor::toQTextDocumentFindFlags(int findFlags)
30+
{
31+
QTextDocument::FindFlags tFindFlags;
32+
if (findFlags & mb::FindBackward ) tFindFlags |= QTextDocument::FindBackward ;
33+
if (findFlags & mb::FindCaseSensitively) tFindFlags |= QTextDocument::FindCaseSensitively;
34+
if (findFlags & mb::FindWholeWords ) tFindFlags |= QTextDocument::FindWholeWords ;
35+
return tFindFlags;
36+
}
37+
2938
mbServerScriptEditor::mbServerScriptEditor(const mbServerScriptEditor::Settings settings, QWidget *parent) : QPlainTextEdit(parent)
3039
{
3140
lineNumberArea = nullptr;
@@ -140,10 +149,7 @@ int mbServerScriptEditor::lineNumberAreaWidth()
140149

141150
bool mbServerScriptEditor::findText(const QString &text, int findFlags)
142151
{
143-
QTextDocument::FindFlags tFindFlags;
144-
if (findFlags & mb::FindBackward ) tFindFlags |= QTextDocument::FindBackward ;
145-
if (findFlags & mb::FindCaseSensitively) tFindFlags |= QTextDocument::FindCaseSensitively;
146-
if (findFlags & mb::FindWholeWords ) tFindFlags |= QTextDocument::FindWholeWords ;
152+
QTextDocument::FindFlags tFindFlags = toQTextDocumentFindFlags(findFlags);
147153
return this->find(text, tFindFlags);
148154
}
149155

@@ -173,24 +179,42 @@ bool mbServerScriptEditor::replaceText(const QString &replacement)
173179

174180
bool mbServerScriptEditor::replaceTextAll(const QString &replacement)
175181
{
176-
QTextDocument *doc = document();
177-
QTextCursor cursor(doc);
182+
QTextCursor cursor = textCursor();
183+
if (!cursor.hasSelection())
184+
return false;
178185

179-
// Get the selected text to replace
180-
QString selectedText = textCursor().selectedText();
186+
QString selectedText = cursor.selectedText();
181187
if (selectedText.isEmpty())
182188
return false;
183189

184-
// Disable undo compression to group all changes
185-
cursor.beginEditBlock();
186-
while (!cursor.isNull() && !cursor.atEnd())
190+
moveCursor(QTextCursor::Start);
191+
bool replaced = false;
192+
193+
/*
194+
QTextDocument *doc = document();
195+
QTextCursor searchCursor(doc);
196+
197+
searchCursor.beginEditBlock();
198+
while (true)
187199
{
188-
cursor = doc->find(selectedText, cursor);
189-
if (!cursor.isNull())
190-
cursor.insertText(replacement);
200+
searchCursor = doc->find(selectedText, searchCursor);
201+
if (searchCursor.isNull())
202+
break;
203+
searchCursor.insertText(replacement);
204+
replaced = true;
191205
}
192-
cursor.endEditBlock();
193-
return true;
206+
searchCursor.endEditBlock();
207+
*/
208+
209+
this->textCursor().beginEditBlock();
210+
while (this->find(selectedText))
211+
{
212+
this->textCursor().insertText(replacement);
213+
replaced = true;
214+
}
215+
this->textCursor().endEditBlock();
216+
217+
return replaced;
194218
}
195219

196220
void mbServerScriptEditor::updateLineNumberAreaWidth(int /* newBlockCount */)

src/server/gui/script/editor/server_scripteditor.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,8 @@ class mbServerScriptEditor : public QPlainTextEdit
4343
static const Defaults &instance();
4444
};
4545

46+
public:
47+
QTextDocument::FindFlags toQTextDocumentFindFlags(int findFlags);
4648

4749
public:
4850
mbServerScriptEditor(const mbServerScriptEditor::Settings settings, QWidget *parent = nullptr);

0 commit comments

Comments
 (0)