QmlDesigner: fixes copy and paste of components

This patch ensures that meta info is available for all models
during copy and paste
This commit is contained in:
Thomas Hartmann
2010-01-18 18:50:01 +01:00
parent 97c3d5302f
commit 5dce709263
3 changed files with 13 additions and 4 deletions

View File

@@ -30,6 +30,7 @@
#include "designdocumentcontrollerview.h"
#include <rewriterview.h>
#include <plaintexteditmodifier.h>
#include <metainfo.h>
#include <QApplication>
#include <QPlainTextEdit>
@@ -97,14 +98,15 @@ void DesignDocumentControllerView::fromClipboard()
QString DesignDocumentControllerView::toText() const
{
QScopedPointer<Model> model(Model::create("Qt/Rectangle"));
QScopedPointer<Model> outputModel(Model::create("Qt/Rectangle"));
outputModel->setMetaInfo(model()->metaInfo());
QPlainTextEdit textEdit;
textEdit.setPlainText("import Qt 4.6; Item {}");
PlainTextEditModifier modifier(&textEdit);
QScopedPointer<RewriterView> rewriterView(new RewriterView(RewriterView::Amend, 0));
rewriterView->setTextModifier(&modifier);
model->attachView(rewriterView.data());
outputModel->attachView(rewriterView.data());
ModelMerger merger(rewriterView.data());
@@ -118,7 +120,9 @@ QString DesignDocumentControllerView::toText() const
void DesignDocumentControllerView::fromText(QString text)
{
QScopedPointer<Model> model(Model::create("Qt/Rectangle"));
QScopedPointer<Model> inputModel(Model::create("Qt/Rectangle"));
inputModel->setMetaInfo(model()->metaInfo());
inputModel->setFileUrl(model()->fileUrl());
QPlainTextEdit textEdit;
QString imports("import Qt 4.6;\n");
textEdit.setPlainText(imports + text);
@@ -126,7 +130,7 @@ void DesignDocumentControllerView::fromText(QString text)
QScopedPointer<RewriterView> rewriterView(new RewriterView(RewriterView::Amend, 0));
rewriterView->setTextModifier(&modifier);
model->attachView(rewriterView.data());
inputModel->attachView(rewriterView.data());
if (rewriterView->errors().isEmpty() && rewriterView->rootModelNode().isValid()) {
ModelMerger merger(this);