Skip to content

Commit 00cf362

Browse files
committed
Improved 'Replace text' for script editor
1 parent 066b092 commit 00cf362

File tree

5 files changed

+27
-17
lines changed

5 files changed

+27
-17
lines changed

src/core/CMakeLists.txt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,7 @@ set(HEADERS
5656
gui/dialogs/core_dialogs.h
5757
gui/project/core_projectdelegate.h
5858
gui/project/core_projectmodel.h
59+
gui/project/core_projecttreeview.h
5960
gui/project/core_projectui.h
6061
gui/dataview/core_dataviewdelegate.h
6162
gui/dataview/core_dataviewmanager.h
@@ -103,6 +104,7 @@ set(SOURCES
103104
gui/dialogs/core_dialogs.cpp
104105
gui/project/core_projectdelegate.cpp
105106
gui/project/core_projectmodel.cpp
107+
gui/project/core_projecttreeview.cpp
106108
gui/project/core_projectui.cpp
107109
gui/dataview/core_dataviewdelegate.cpp
108110
gui/dataview/core_dataviewmanager.cpp

src/core/gui/core_windowmanager.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ mbCoreWindowManager::mbCoreWindowManager(mbCoreUi *ui, mbCoreDataViewManager *da
5656
m_area->setHorizontalScrollBarPolicy(Qt::ScrollBarAsNeeded);
5757
m_area->setVerticalScrollBarPolicy(Qt::ScrollBarAsNeeded);
5858
m_area->setTabPosition(QTabWidget::South);
59-
m_area->setTabsClosable(true);
59+
m_area->setTabsClosable(false);
6060
m_area->setTabsMovable(true);
6161
connect(m_area, &QMdiArea::subWindowActivated, this, &mbCoreWindowManager::subWindowActivated);
6262

src/server/gui/dialogs/server_dialogfindreplace.cpp

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -148,7 +148,10 @@ void mbServerDialogFindReplace::replace()
148148
mbServerBaseScriptEditor *se = mbServer::global()->ui()->scriptManager()->activeScriptEditor();
149149
if (se)
150150
{
151-
se->replaceText(ui->cmbReplace->currentText());
151+
int flags = getFindFlags();
152+
se->replaceText(ui->cmbFind->currentText(),
153+
ui->cmbReplace->currentText(),
154+
flags);
152155
}
153156
}
154157

@@ -159,7 +162,10 @@ void mbServerDialogFindReplace::replaceAll()
159162
mbServerBaseScriptEditor *se = mbServer::global()->ui()->scriptManager()->activeScriptEditor();
160163
if (se)
161164
{
162-
se->replaceTextAll(ui->cmbReplace->currentText());
165+
int flags = getFindFlags();
166+
se->replaceTextAll(ui->cmbFind->currentText(),
167+
ui->cmbReplace->currentText(),
168+
flags);
163169
}
164170
}
165171

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

Lines changed: 14 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -153,21 +153,30 @@ bool mbServerScriptEditor::findText(const QString &text, int findFlags)
153153
return this->find(text, tFindFlags);
154154
}
155155

156-
bool mbServerScriptEditor::replaceText(const QString &replacement)
156+
bool mbServerScriptEditor::replaceText(const QString &text, const QString &replacement, int findFlags)
157157
{
158158
QTextCursor cursor = textCursor();
159159
if (!cursor.hasSelection())
160+
{
161+
findText(text, findFlags);
160162
return false;
163+
}
161164

162165
// Store selected text before replacement
163166
QString selectedText = cursor.selectedText();
167+
if (text != selectedText)
168+
{
169+
findText(text, findFlags);
170+
return false;
171+
}
164172

165173
// Replace current selection
166174
cursor.insertText(replacement);
167175

168176
// Move to the next occurrence
177+
QTextDocument::FindFlags tFindFlags = toQTextDocumentFindFlags(findFlags);
169178
QTextDocument *doc = document();
170-
QTextCursor next = doc->find(selectedText, cursor);
179+
QTextCursor next = doc->find(selectedText, cursor, tFindFlags);
171180

172181
if (next.isNull())
173182
return true;
@@ -177,16 +186,9 @@ bool mbServerScriptEditor::replaceText(const QString &replacement)
177186
return true;
178187
}
179188

180-
bool mbServerScriptEditor::replaceTextAll(const QString &replacement)
189+
bool mbServerScriptEditor::replaceTextAll(const QString &text, const QString &replacement, int findFlags)
181190
{
182-
QTextCursor cursor = textCursor();
183-
if (!cursor.hasSelection())
184-
return false;
185-
186-
QString selectedText = cursor.selectedText();
187-
if (selectedText.isEmpty())
188-
return false;
189-
191+
QTextDocument::FindFlags tFindFlags = toQTextDocumentFindFlags(findFlags);
190192
moveCursor(QTextCursor::Start);
191193
bool replaced = false;
192194

@@ -207,7 +209,7 @@ bool mbServerScriptEditor::replaceTextAll(const QString &replacement)
207209
*/
208210

209211
this->textCursor().beginEditBlock();
210-
while (this->find(selectedText))
212+
while (this->find(text, tFindFlags))
211213
{
212214
this->textCursor().insertText(replacement);
213215
replaced = true;

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -66,8 +66,8 @@ class mbServerScriptEditor : public QPlainTextEdit
6666
void lineNumberAreaPaintEvent(QPaintEvent *event);
6767
int lineNumberAreaWidth();
6868
bool findText(const QString &text, int findFlags);
69-
bool replaceText(const QString &replacement);
70-
bool replaceTextAll(const QString &replacement);
69+
bool replaceText(const QString &text, const QString &replacement, int findFlags);
70+
bool replaceTextAll(const QString &text, const QString &replacement, int findFlags);
7171

7272
protected:
7373
void resizeEvent(QResizeEvent *event) override;

0 commit comments

Comments
 (0)