summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorErik Verbruggen <erik.verbruggen@nokia.com>2010-02-03 17:27:49 +0100
committerErik Verbruggen <erik.verbruggen@nokia.com>2010-02-08 14:29:42 +0100
commitc453212542359d382867a3bd1342638c2503054a (patch)
tree2befbb0f5ba9981de9437c2746e472b877618d49
parent3efdb87682a5785bac7b90f9f9a8bb819a1cb053 (diff)
downloadqt-creator-c453212542359d382867a3bd1342638c2503054a.tar.gz
Added indenting of dirty areas.
-rw-r--r--src/plugins/qmldesigner/core/include/componenttextmodifier.h2
-rw-r--r--src/plugins/qmldesigner/core/include/plaintexteditmodifier.h2
-rw-r--r--src/plugins/qmldesigner/core/include/textmodifier.h2
-rw-r--r--src/plugins/qmldesigner/core/model/componenttextmodifier.cpp5
-rw-r--r--src/plugins/qmldesigner/core/model/modeltotextmerger.cpp17
-rw-r--r--src/plugins/qmldesigner/core/model/plaintexteditmodifier.cpp30
6 files changed, 46 insertions, 12 deletions
diff --git a/src/plugins/qmldesigner/core/include/componenttextmodifier.h b/src/plugins/qmldesigner/core/include/componenttextmodifier.h
index 723425531e..b164fa2c22 100644
--- a/src/plugins/qmldesigner/core/include/componenttextmodifier.h
+++ b/src/plugins/qmldesigner/core/include/componenttextmodifier.h
@@ -43,6 +43,8 @@ public:
virtual void replace(int offset, int length, const QString& replacement);
virtual void move(const MoveInfo &moveInfo);
+ virtual void indent(int offset, int length);
+
virtual void startGroup();
virtual void flushGroup();
virtual void commitGroup();
diff --git a/src/plugins/qmldesigner/core/include/plaintexteditmodifier.h b/src/plugins/qmldesigner/core/include/plaintexteditmodifier.h
index 29a33b5725..a7090f9fda 100644
--- a/src/plugins/qmldesigner/core/include/plaintexteditmodifier.h
+++ b/src/plugins/qmldesigner/core/include/plaintexteditmodifier.h
@@ -64,6 +64,8 @@ public:
virtual void replace(int offset, int length, const QString &replacement);
virtual void move(const MoveInfo &moveInfo);
+ virtual void indent(int offset, int length);
+
virtual void startGroup();
virtual void flushGroup();
virtual void commitGroup();
diff --git a/src/plugins/qmldesigner/core/include/textmodifier.h b/src/plugins/qmldesigner/core/include/textmodifier.h
index 79092e3836..0931d9b8eb 100644
--- a/src/plugins/qmldesigner/core/include/textmodifier.h
+++ b/src/plugins/qmldesigner/core/include/textmodifier.h
@@ -68,6 +68,8 @@ public:
virtual void replace(int offset, int length, const QString& replacement) = 0;
virtual void move(const MoveInfo &moveInfo) = 0;
+ virtual void indent(int offset, int length) = 0;
+
virtual void startGroup() = 0;
virtual void flushGroup() = 0;
virtual void commitGroup() = 0;
diff --git a/src/plugins/qmldesigner/core/model/componenttextmodifier.cpp b/src/plugins/qmldesigner/core/model/componenttextmodifier.cpp
index 98a78bd955..cfd1f5da20 100644
--- a/src/plugins/qmldesigner/core/model/componenttextmodifier.cpp
+++ b/src/plugins/qmldesigner/core/model/componenttextmodifier.cpp
@@ -58,6 +58,11 @@ void ComponentTextModifier::move(const MoveInfo &moveInfo)
m_originalModifier->move(moveInfo);
}
+void ComponentTextModifier::indent(int offset, int length)
+{
+ m_originalModifier->indent(offset, length);
+}
+
void ComponentTextModifier::startGroup()
{
m_originalModifier->startGroup();
diff --git a/src/plugins/qmldesigner/core/model/modeltotextmerger.cpp b/src/plugins/qmldesigner/core/model/modeltotextmerger.cpp
index 09ba7b31b3..d7e89a09ea 100644
--- a/src/plugins/qmldesigner/core/model/modeltotextmerger.cpp
+++ b/src/plugins/qmldesigner/core/model/modeltotextmerger.cpp
@@ -287,15 +287,16 @@ void ModelToTextMerger::applyChanges()
}
}
-void ModelToTextMerger::reindent(const QMap<int, int> &/*dirtyAreas*/) const
+void ModelToTextMerger::reindent(const QMap<int, int> &dirtyAreas) const
{
-// QList<int> offsets = dirtyAreas.keys();
-// qSort(offsets);
-//
-// foreach (const int offset, offsets) {
-// const int length = dirtyAreas[offset];
-// xxxx
-// }
+ QList<int> offsets = dirtyAreas.keys();
+ qSort(offsets);
+ TextModifier *textModifier = m_rewriterView->textModifier();
+
+ foreach (const int offset, offsets) {
+ const int length = dirtyAreas[offset];
+ textModifier->indent(offset, length);
+ }
}
void ModelToTextMerger::schedule(RewriteAction *action)
diff --git a/src/plugins/qmldesigner/core/model/plaintexteditmodifier.cpp b/src/plugins/qmldesigner/core/model/plaintexteditmodifier.cpp
index 76ff4e510c..5ed763a388 100644
--- a/src/plugins/qmldesigner/core/model/plaintexteditmodifier.cpp
+++ b/src/plugins/qmldesigner/core/model/plaintexteditmodifier.cpp
@@ -27,14 +27,15 @@
**
**************************************************************************/
-#include <QtCore/QDebug>
+#include "plaintexteditmodifier.h"
+
+#include <texteditor/basetexteditor.h>
+#include <utils/changeset.h>
#include <QtGui/QPlainTextEdit>
#include <QtGui/QUndoStack>
-#include <utils/changeset.h>
-
-#include "plaintexteditmodifier.h"
+#include <QtCore/QDebug>
using namespace Utils;
using namespace QmlDesigner;
@@ -112,6 +113,27 @@ void PlainTextEditModifier::move(const MoveInfo &moveInfo)
}
}
+void PlainTextEditModifier::indent(int offset, int length)
+{
+ if (length == 0 || offset < 0 || offset + length >= text().length())
+ return;
+
+// qDebug() << "PlainTextEditModifier::indent(" << offset << "," << length << ")";
+ if (TextEditor::BaseTextEditor *bte = dynamic_cast<TextEditor::BaseTextEditor*>(m_textEdit)) {
+// qDebug() << "**** Doing indentation";
+ // find the applicable block:
+ QTextDocument *doc = bte->document();
+ QTextCursor tc(doc);
+ tc.beginEditBlock();
+ tc.setPosition(offset);
+ tc.setPosition(offset + length, QTextCursor::KeepAnchor);
+ bte->indentInsertedText(tc);
+ tc.endEditBlock();
+ } else {
+// qDebug() << "**** Skipping indentation";
+ }
+}
+
void PlainTextEditModifier::startGroup()
{
if (!m_changeSet)