forked from qt-creator/qt-creator
QmlDesigner: Remove DesignDocumentControllerPrivate
Change-Id: I760c79eddc2e8abfe9edcda270d3e81df337d51d Reviewed-by: Alessandro Portale <alessandro.portale@nokia.com>
This commit is contained in:
committed by
Alessandro Portale
parent
d3f0560120
commit
41b03629a0
@@ -32,25 +32,14 @@
|
|||||||
#include "designdocumentcontrollerview.h"
|
#include "designdocumentcontrollerview.h"
|
||||||
#include "xuifiledialog.h"
|
#include "xuifiledialog.h"
|
||||||
#include "componentview.h"
|
#include "componentview.h"
|
||||||
#include "subcomponentmanager.h"
|
|
||||||
#include "model/viewlogger.h"
|
|
||||||
|
|
||||||
#include <itemlibraryview.h>
|
|
||||||
#include <itemlibrarywidget.h>
|
#include <itemlibrarywidget.h>
|
||||||
#include <navigatorview.h>
|
|
||||||
#include <stateseditorview.h>
|
|
||||||
#include <formeditorview.h>
|
|
||||||
#include <propertyeditor.h>
|
|
||||||
#include <formeditorwidget.h>
|
#include <formeditorwidget.h>
|
||||||
#include <toolbox.h>
|
#include <toolbox.h>
|
||||||
#include <basetexteditmodifier.h>
|
|
||||||
#include <componenttextmodifier.h>
|
|
||||||
#include <metainfo.h>
|
#include <metainfo.h>
|
||||||
#include <invalidargumentexception.h>
|
#include <invalidargumentexception.h>
|
||||||
#include <componentview.h>
|
|
||||||
#include <componentaction.h>
|
#include <componentaction.h>
|
||||||
#include <qmlobjectnode.h>
|
#include <qmlobjectnode.h>
|
||||||
#include <rewriterview.h>
|
|
||||||
#include <rewritingexception.h>
|
#include <rewritingexception.h>
|
||||||
#include <nodelistproperty.h>
|
#include <nodelistproperty.h>
|
||||||
#include <variantproperty.h>
|
#include <variantproperty.h>
|
||||||
@@ -96,41 +85,9 @@ enum {
|
|||||||
|
|
||||||
namespace QmlDesigner {
|
namespace QmlDesigner {
|
||||||
|
|
||||||
class DesignDocumentControllerPrivate {
|
|
||||||
public:
|
|
||||||
QWeakPointer<FormEditorView> formEditorView;
|
|
||||||
|
|
||||||
QWeakPointer<ItemLibraryView> itemLibraryView;
|
bool DesignDocumentController::s_clearCrumblePath = true;
|
||||||
QWeakPointer<NavigatorView> navigator;
|
bool DesignDocumentController::s_pushCrumblePath = true;
|
||||||
QWeakPointer<PropertyEditor> propertyEditorView;
|
|
||||||
QWeakPointer<StatesEditorView> statesEditorView;
|
|
||||||
QWeakPointer<QStackedWidget> stackedWidget;
|
|
||||||
QWeakPointer<NodeInstanceView> nodeInstanceView;
|
|
||||||
QWeakPointer<ComponentView> componentView;
|
|
||||||
|
|
||||||
QWeakPointer<QmlDesigner::Model> model;
|
|
||||||
QWeakPointer<QmlDesigner::Model> subComponentModel;
|
|
||||||
QWeakPointer<QmlDesigner::Model> masterModel;
|
|
||||||
QWeakPointer<QPlainTextEdit> textEdit;
|
|
||||||
QWeakPointer<RewriterView> rewriterView;
|
|
||||||
QmlDesigner::BaseTextEditModifier *textModifier;
|
|
||||||
QmlDesigner::ComponentTextModifier *componentTextModifier;
|
|
||||||
QWeakPointer<SubComponentManager> subComponentManager;
|
|
||||||
QWeakPointer<Internal::ViewLogger> viewLogger;
|
|
||||||
ModelNode componentNode;
|
|
||||||
|
|
||||||
QString fileName;
|
|
||||||
QUrl searchPath;
|
|
||||||
bool documentLoaded;
|
|
||||||
bool syncBlocked;
|
|
||||||
int qt_versionId;
|
|
||||||
static bool clearCrumblePath;
|
|
||||||
static bool pushCrumblePath;
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
bool DesignDocumentControllerPrivate::clearCrumblePath = true;
|
|
||||||
bool DesignDocumentControllerPrivate::pushCrumblePath = true;
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -140,11 +97,10 @@ bool DesignDocumentControllerPrivate::pushCrumblePath = true;
|
|||||||
and the different views/widgets accessing it.
|
and the different views/widgets accessing it.
|
||||||
*/
|
*/
|
||||||
DesignDocumentController::DesignDocumentController(QObject *parent) :
|
DesignDocumentController::DesignDocumentController(QObject *parent) :
|
||||||
QObject(parent),
|
QObject(parent)
|
||||||
d(new DesignDocumentControllerPrivate)
|
|
||||||
{
|
{
|
||||||
d->documentLoaded = false;
|
m_documentLoaded = false;
|
||||||
d->syncBlocked = false;
|
m_syncBlocked = false;
|
||||||
|
|
||||||
ProjectExplorer::ProjectExplorerPlugin *projectExplorer = ProjectExplorer::ProjectExplorerPlugin::instance();
|
ProjectExplorer::ProjectExplorerPlugin *projectExplorer = ProjectExplorer::ProjectExplorerPlugin::instance();
|
||||||
connect(projectExplorer, SIGNAL(currentProjectChanged(ProjectExplorer::Project*)), this, SLOT(activeQtVersionChanged()));
|
connect(projectExplorer, SIGNAL(currentProjectChanged(ProjectExplorer::Project*)), this, SLOT(activeQtVersionChanged()));
|
||||||
@@ -153,58 +109,56 @@ DesignDocumentController::DesignDocumentController(QObject *parent) :
|
|||||||
|
|
||||||
DesignDocumentController::~DesignDocumentController()
|
DesignDocumentController::~DesignDocumentController()
|
||||||
{
|
{
|
||||||
delete d->model.data();
|
delete m_model.data();
|
||||||
delete d->subComponentModel.data();
|
delete m_subComponentModel.data();
|
||||||
|
|
||||||
delete d->rewriterView.data();
|
delete m_rewriterView.data();
|
||||||
|
|
||||||
if (d->componentTextModifier) //componentTextModifier might not be created
|
if (m_componentTextModifier) //componentTextModifier might not be created
|
||||||
delete d->componentTextModifier;
|
delete m_componentTextModifier;
|
||||||
|
|
||||||
delete d;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Model *DesignDocumentController::model() const
|
Model *DesignDocumentController::model() const
|
||||||
{
|
{
|
||||||
return d->model.data();
|
return m_model.data();
|
||||||
}
|
}
|
||||||
|
|
||||||
Model *DesignDocumentController::masterModel() const
|
Model *DesignDocumentController::masterModel() const
|
||||||
{
|
{
|
||||||
return d->masterModel.data();
|
return m_masterModel.data();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void DesignDocumentController::detachNodeInstanceView()
|
void DesignDocumentController::detachNodeInstanceView()
|
||||||
{
|
{
|
||||||
if (d->nodeInstanceView)
|
if (m_nodeInstanceView)
|
||||||
model()->detachView(d->nodeInstanceView.data());
|
model()->detachView(m_nodeInstanceView.data());
|
||||||
}
|
}
|
||||||
|
|
||||||
void DesignDocumentController::attachNodeInstanceView()
|
void DesignDocumentController::attachNodeInstanceView()
|
||||||
{
|
{
|
||||||
if (d->nodeInstanceView) {
|
if (m_nodeInstanceView) {
|
||||||
model()->attachView(d->nodeInstanceView.data());
|
model()->attachView(m_nodeInstanceView.data());
|
||||||
}
|
}
|
||||||
if (d->formEditorView) {
|
if (m_formEditorView) {
|
||||||
d->formEditorView->resetView();
|
m_formEditorView->resetView();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void DesignDocumentController::changeToMasterModel()
|
void DesignDocumentController::changeToMasterModel()
|
||||||
{
|
{
|
||||||
d->model->detachView(d->rewriterView.data());
|
m_model->detachView(m_rewriterView.data());
|
||||||
d->rewriterView->setTextModifier(d->textModifier);
|
m_rewriterView->setTextModifier(m_textModifier);
|
||||||
d->model = d->masterModel;
|
m_model = m_masterModel;
|
||||||
d->model->attachView(d->rewriterView.data());
|
m_model->attachView(m_rewriterView.data());
|
||||||
d->componentNode = d->rewriterView->rootModelNode();
|
m_componentNode = m_rewriterView->rootModelNode();
|
||||||
}
|
}
|
||||||
|
|
||||||
QVariant DesignDocumentController::createCrumbleBarInfo()
|
QVariant DesignDocumentController::createCrumbleBarInfo()
|
||||||
{
|
{
|
||||||
CrumbleBarInfo info;
|
CrumbleBarInfo info;
|
||||||
info.fileName = fileName();
|
info.fileName = fileName();
|
||||||
info.modelNode = d->componentNode;
|
info.modelNode = m_componentNode;
|
||||||
return QVariant::fromValue<CrumbleBarInfo>(info);
|
return QVariant::fromValue<CrumbleBarInfo>(info);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -215,7 +169,7 @@ QWidget *DesignDocumentController::centralWidget() const
|
|||||||
|
|
||||||
QString DesignDocumentController::pathToQt() const
|
QString DesignDocumentController::pathToQt() const
|
||||||
{
|
{
|
||||||
QtSupport::BaseQtVersion *activeQtVersion = QtSupport::QtVersionManager::instance()->version(d->qt_versionId);
|
QtSupport::BaseQtVersion *activeQtVersion = QtSupport::QtVersionManager::instance()->version(m_qt_versionId);
|
||||||
if (activeQtVersion && (activeQtVersion->qtVersion().majorVersion > 3)
|
if (activeQtVersion && (activeQtVersion->qtVersion().majorVersion > 3)
|
||||||
&& (activeQtVersion->type() == QLatin1String(QtSupport::Constants::DESKTOPQT)
|
&& (activeQtVersion->type() == QLatin1String(QtSupport::Constants::DESKTOPQT)
|
||||||
|| activeQtVersion->type() == QLatin1String(QtSupport::Constants::SIMULATORQT)))
|
|| activeQtVersion->type() == QLatin1String(QtSupport::Constants::SIMULATORQT)))
|
||||||
@@ -228,7 +182,7 @@ QString DesignDocumentController::pathToQt() const
|
|||||||
*/
|
*/
|
||||||
bool DesignDocumentController::isModelSyncBlocked() const
|
bool DesignDocumentController::isModelSyncBlocked() const
|
||||||
{
|
{
|
||||||
return d->syncBlocked;
|
return m_syncBlocked;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
@@ -240,35 +194,35 @@ bool DesignDocumentController::isModelSyncBlocked() const
|
|||||||
*/
|
*/
|
||||||
void DesignDocumentController::blockModelSync(bool block)
|
void DesignDocumentController::blockModelSync(bool block)
|
||||||
{
|
{
|
||||||
if (d->syncBlocked == block)
|
if (m_syncBlocked == block)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
d->syncBlocked = block;
|
m_syncBlocked = block;
|
||||||
|
|
||||||
if (d->textModifier) {
|
if (m_textModifier) {
|
||||||
if (d->syncBlocked) {
|
if (m_syncBlocked) {
|
||||||
detachNodeInstanceView();
|
detachNodeInstanceView();
|
||||||
d->textModifier->deactivateChangeSignals();
|
m_textModifier->deactivateChangeSignals();
|
||||||
} else {
|
} else {
|
||||||
activeQtVersionChanged();
|
activeQtVersionChanged();
|
||||||
changeToMasterModel();
|
changeToMasterModel();
|
||||||
QmlModelState state;
|
QmlModelState state;
|
||||||
//We go back to base state (and back again) to avoid side effects from text editing.
|
//We go back to base state (and back again) to avoid side effects from text editing.
|
||||||
if (d->statesEditorView && d->statesEditorView->model()) {
|
if (m_statesEditorView && m_statesEditorView->model()) {
|
||||||
state = d->statesEditorView->currentState();
|
state = m_statesEditorView->currentState();
|
||||||
d->statesEditorView->setCurrentState(d->statesEditorView->baseState());
|
m_statesEditorView->setCurrentState(m_statesEditorView->baseState());
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
d->textModifier->reactivateChangeSignals();
|
m_textModifier->reactivateChangeSignals();
|
||||||
|
|
||||||
if (state.isValid() && d->statesEditorView)
|
if (state.isValid() && m_statesEditorView)
|
||||||
d->statesEditorView->setCurrentState(state);
|
m_statesEditorView->setCurrentState(state);
|
||||||
attachNodeInstanceView();
|
attachNodeInstanceView();
|
||||||
if (d->propertyEditorView)
|
if (m_propertyEditorView)
|
||||||
d->propertyEditorView->resetView();
|
m_propertyEditorView->resetView();
|
||||||
if (d->formEditorView)
|
if (m_formEditorView)
|
||||||
d->formEditorView->resetView();
|
m_formEditorView->resetView();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -278,43 +232,43 @@ void DesignDocumentController::blockModelSync(bool block)
|
|||||||
*/
|
*/
|
||||||
QList<RewriterView::Error> DesignDocumentController::qmlErrors() const
|
QList<RewriterView::Error> DesignDocumentController::qmlErrors() const
|
||||||
{
|
{
|
||||||
return d->rewriterView->errors();
|
return m_rewriterView->errors();
|
||||||
}
|
}
|
||||||
|
|
||||||
void DesignDocumentController::setItemLibraryView(ItemLibraryView* itemLibraryView)
|
void DesignDocumentController::setItemLibraryView(ItemLibraryView* itemLibraryView)
|
||||||
{
|
{
|
||||||
d->itemLibraryView = itemLibraryView;
|
m_itemLibraryView = itemLibraryView;
|
||||||
}
|
}
|
||||||
|
|
||||||
void DesignDocumentController::setNavigator(NavigatorView* navigatorView)
|
void DesignDocumentController::setNavigator(NavigatorView* navigatorView)
|
||||||
{
|
{
|
||||||
d->navigator = navigatorView;
|
m_navigator = navigatorView;
|
||||||
}
|
}
|
||||||
|
|
||||||
void DesignDocumentController::setPropertyEditorView(PropertyEditor *propertyEditor)
|
void DesignDocumentController::setPropertyEditorView(PropertyEditor *propertyEditor)
|
||||||
{
|
{
|
||||||
d->propertyEditorView = propertyEditor;
|
m_propertyEditorView = propertyEditor;
|
||||||
}
|
}
|
||||||
|
|
||||||
void DesignDocumentController::setStatesEditorView(StatesEditorView* statesEditorView)
|
void DesignDocumentController::setStatesEditorView(StatesEditorView* statesEditorView)
|
||||||
{
|
{
|
||||||
d->statesEditorView = statesEditorView;
|
m_statesEditorView = statesEditorView;
|
||||||
}
|
}
|
||||||
|
|
||||||
void DesignDocumentController::setFormEditorView(FormEditorView *formEditorView)
|
void DesignDocumentController::setFormEditorView(FormEditorView *formEditorView)
|
||||||
{
|
{
|
||||||
d->formEditorView = formEditorView;
|
m_formEditorView = formEditorView;
|
||||||
}
|
}
|
||||||
|
|
||||||
void DesignDocumentController::setNodeInstanceView(NodeInstanceView *nodeInstanceView)
|
void DesignDocumentController::setNodeInstanceView(NodeInstanceView *nodeInstanceView)
|
||||||
{
|
{
|
||||||
d->nodeInstanceView = nodeInstanceView;
|
m_nodeInstanceView = nodeInstanceView;
|
||||||
}
|
}
|
||||||
|
|
||||||
void DesignDocumentController::setComponentView(ComponentView *componentView)
|
void DesignDocumentController::setComponentView(ComponentView *componentView)
|
||||||
{
|
{
|
||||||
d->componentView = componentView;
|
m_componentView = componentView;
|
||||||
connect(d->componentView->action(), SIGNAL(currentComponentChanged(ModelNode)), SLOT(changeCurrentModelTo(ModelNode)));
|
connect(componentView->action(), SIGNAL(currentComponentChanged(ModelNode)), SLOT(changeCurrentModelTo(ModelNode)));
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline bool compareCrumbleBarInfo(const CrumbleBarInfo &crumbleBarInfo1, const CrumbleBarInfo &crumbleBarInfo2)
|
static inline bool compareCrumbleBarInfo(const CrumbleBarInfo &crumbleBarInfo1, const CrumbleBarInfo &crumbleBarInfo2)
|
||||||
@@ -324,20 +278,20 @@ static inline bool compareCrumbleBarInfo(const CrumbleBarInfo &crumbleBarInfo1,
|
|||||||
|
|
||||||
void DesignDocumentController::setCrumbleBarInfo(const CrumbleBarInfo &crumbleBarInfo)
|
void DesignDocumentController::setCrumbleBarInfo(const CrumbleBarInfo &crumbleBarInfo)
|
||||||
{
|
{
|
||||||
DesignDocumentControllerPrivate::clearCrumblePath = false;
|
s_clearCrumblePath = false;
|
||||||
DesignDocumentControllerPrivate::pushCrumblePath = false;
|
s_pushCrumblePath = false;
|
||||||
while (!compareCrumbleBarInfo(d->formEditorView->crumblePath()->dataForLastIndex().value<CrumbleBarInfo>(), crumbleBarInfo))
|
while (!compareCrumbleBarInfo(m_formEditorView->crumblePath()->dataForLastIndex().value<CrumbleBarInfo>(), crumbleBarInfo))
|
||||||
d->formEditorView->crumblePath()->popElement();
|
m_formEditorView->crumblePath()->popElement();
|
||||||
Core::EditorManager::openEditor(crumbleBarInfo.fileName);
|
Core::EditorManager::openEditor(crumbleBarInfo.fileName);
|
||||||
DesignDocumentControllerPrivate::pushCrumblePath = true;
|
s_pushCrumblePath = true;
|
||||||
Internal::DesignModeWidget::instance()->currentDesignDocumentController()->changeToSubComponent(crumbleBarInfo.modelNode);
|
Internal::DesignModeWidget::instance()->currentDesignDocumentController()->changeToSubComponent(crumbleBarInfo.modelNode);
|
||||||
DesignDocumentControllerPrivate::clearCrumblePath = true;
|
s_clearCrumblePath = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void DesignDocumentController::setBlockCrumbleBar(bool b)
|
void DesignDocumentController::setBlockCrumbleBar(bool b)
|
||||||
{
|
{
|
||||||
DesignDocumentControllerPrivate::clearCrumblePath = !b;
|
s_clearCrumblePath = !b;
|
||||||
DesignDocumentControllerPrivate::pushCrumblePath = !b;
|
s_pushCrumblePath = !b;
|
||||||
}
|
}
|
||||||
|
|
||||||
QString DesignDocumentController::displayName() const
|
QString DesignDocumentController::displayName() const
|
||||||
@@ -350,14 +304,14 @@ QString DesignDocumentController::displayName() const
|
|||||||
|
|
||||||
QString DesignDocumentController::simplfiedDisplayName() const
|
QString DesignDocumentController::simplfiedDisplayName() const
|
||||||
{
|
{
|
||||||
if (!d->componentNode.isRootNode()) {
|
if (!m_componentNode.isRootNode()) {
|
||||||
if (d->componentNode.id().isEmpty()) {
|
if (m_componentNode.id().isEmpty()) {
|
||||||
if (d->formEditorView->rootModelNode().id().isEmpty()) {
|
if (m_formEditorView->rootModelNode().id().isEmpty()) {
|
||||||
return d->formEditorView->rootModelNode().simplifiedTypeName();
|
return m_formEditorView->rootModelNode().simplifiedTypeName();
|
||||||
}
|
}
|
||||||
return d->formEditorView->rootModelNode().id();
|
return m_formEditorView->rootModelNode().id();
|
||||||
}
|
}
|
||||||
return d->componentNode.id();
|
return m_componentNode.id();
|
||||||
}
|
}
|
||||||
|
|
||||||
QStringList list = displayName().split(QLatin1Char('/'));
|
QStringList list = displayName().split(QLatin1Char('/'));
|
||||||
@@ -366,24 +320,24 @@ QString DesignDocumentController::simplfiedDisplayName() const
|
|||||||
|
|
||||||
QString DesignDocumentController::fileName() const
|
QString DesignDocumentController::fileName() const
|
||||||
{
|
{
|
||||||
return d->fileName;
|
return m_fileName;
|
||||||
}
|
}
|
||||||
|
|
||||||
void DesignDocumentController::setFileName(const QString &fileName)
|
void DesignDocumentController::setFileName(const QString &fileName)
|
||||||
{
|
{
|
||||||
d->fileName = fileName;
|
m_fileName = fileName;
|
||||||
|
|
||||||
if (QFileInfo(fileName).exists()) {
|
if (QFileInfo(fileName).exists()) {
|
||||||
d->searchPath = QUrl::fromLocalFile(fileName);
|
m_searchPath = QUrl::fromLocalFile(fileName);
|
||||||
} else {
|
} else {
|
||||||
d->searchPath = QUrl(fileName);
|
m_searchPath = QUrl(fileName);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (d->model)
|
if (m_model)
|
||||||
d->model->setFileUrl(d->searchPath);
|
m_model->setFileUrl(m_searchPath);
|
||||||
|
|
||||||
if (d->itemLibraryView)
|
if (m_itemLibraryView)
|
||||||
d->itemLibraryView->widget()->setResourcePath(QFileInfo(fileName).absolutePath());
|
m_itemLibraryView->widget()->setResourcePath(QFileInfo(fileName).absolutePath());
|
||||||
emit displayNameChanged(displayName());
|
emit displayNameChanged(displayName());
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -391,7 +345,7 @@ QList<RewriterView::Error> DesignDocumentController::loadMaster(QPlainTextEdit *
|
|||||||
{
|
{
|
||||||
Q_CHECK_PTR(edit);
|
Q_CHECK_PTR(edit);
|
||||||
|
|
||||||
d->textEdit = edit;
|
m_textEdit = edit;
|
||||||
|
|
||||||
connect(edit, SIGNAL(undoAvailable(bool)),
|
connect(edit, SIGNAL(undoAvailable(bool)),
|
||||||
this, SIGNAL(undoAvailable(bool)));
|
this, SIGNAL(undoAvailable(bool)));
|
||||||
@@ -400,70 +354,70 @@ QList<RewriterView::Error> DesignDocumentController::loadMaster(QPlainTextEdit *
|
|||||||
connect(edit, SIGNAL(modificationChanged(bool)),
|
connect(edit, SIGNAL(modificationChanged(bool)),
|
||||||
this, SIGNAL(dirtyStateChanged(bool)));
|
this, SIGNAL(dirtyStateChanged(bool)));
|
||||||
|
|
||||||
d->textModifier = new BaseTextEditModifier(dynamic_cast<TextEditor::BaseTextEditorWidget*>(d->textEdit.data()));
|
m_textModifier = new BaseTextEditModifier(dynamic_cast<TextEditor::BaseTextEditorWidget*>(m_textEdit.data()));
|
||||||
|
|
||||||
d->componentTextModifier = 0;
|
m_componentTextModifier = 0;
|
||||||
|
|
||||||
//d->masterModel = Model::create(d->textModifier, d->searchPath, errors);
|
//masterModel = Model::create(textModifier, searchPath, errors);
|
||||||
|
|
||||||
d->masterModel = Model::create("QtQuick.Rectangle", 1, 0);
|
m_masterModel = Model::create("QtQuick.Rectangle", 1, 0);
|
||||||
|
|
||||||
#if defined(VIEWLOGGER)
|
#if defined(VIEWLOGGER)
|
||||||
d->viewLogger = new Internal::ViewLogger(d->model.data());
|
m_viewLogger = new Internal::ViewLogger(m_model.data());
|
||||||
d->masterModel->attachView(d->viewLogger.data());
|
m_masterModel->attachView(m_viewLogger.data());
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
d->masterModel->setFileUrl(d->searchPath);
|
m_masterModel->setFileUrl(m_searchPath);
|
||||||
|
|
||||||
d->subComponentModel = Model::create("QtQuick.Rectangle", 1, 0);
|
m_subComponentModel = Model::create("QtQuick.Rectangle", 1, 0);
|
||||||
d->subComponentModel->setFileUrl(d->searchPath);
|
m_subComponentModel->setFileUrl(m_searchPath);
|
||||||
|
|
||||||
d->rewriterView = new RewriterView(RewriterView::Amend, d->masterModel.data());
|
m_rewriterView = new RewriterView(RewriterView::Amend, m_masterModel.data());
|
||||||
d->rewriterView->setTextModifier( d->textModifier);
|
m_rewriterView->setTextModifier( m_textModifier);
|
||||||
connect(d->rewriterView.data(), SIGNAL(errorsChanged(QList<RewriterView::Error>)),
|
connect(m_rewriterView.data(), SIGNAL(errorsChanged(QList<RewriterView::Error>)),
|
||||||
this, SIGNAL(qmlErrorsChanged(QList<RewriterView::Error>)));
|
this, SIGNAL(qmlErrorsChanged(QList<RewriterView::Error>)));
|
||||||
|
|
||||||
d->masterModel->attachView(d->rewriterView.data());
|
m_masterModel->attachView(m_rewriterView.data());
|
||||||
d->model = d->masterModel;
|
m_model = m_masterModel;
|
||||||
d->componentNode = d->rewriterView->rootModelNode();
|
m_componentNode = m_rewriterView->rootModelNode();
|
||||||
|
|
||||||
d->subComponentManager = new SubComponentManager(d->masterModel.data(), this);
|
m_subComponentManager = new SubComponentManager(m_masterModel.data(), this);
|
||||||
d->subComponentManager->update(d->searchPath, d->model->imports());
|
m_subComponentManager->update(m_searchPath, m_model->imports());
|
||||||
|
|
||||||
loadCurrentModel();
|
loadCurrentModel();
|
||||||
|
|
||||||
d->masterModel->attachView(d->componentView.data());
|
m_masterModel->attachView(m_componentView.data());
|
||||||
|
|
||||||
return d->rewriterView->errors();
|
return m_rewriterView->errors();
|
||||||
}
|
}
|
||||||
|
|
||||||
void DesignDocumentController::changeCurrentModelTo(const ModelNode &node)
|
void DesignDocumentController::changeCurrentModelTo(const ModelNode &node)
|
||||||
{
|
{
|
||||||
if (d->componentNode == node)
|
if (m_componentNode == node)
|
||||||
return;
|
return;
|
||||||
if (Internal::DesignModeWidget::instance()->currentDesignDocumentController() != this)
|
if (Internal::DesignModeWidget::instance()->currentDesignDocumentController() != this)
|
||||||
return;
|
return;
|
||||||
DesignDocumentControllerPrivate::clearCrumblePath = false;
|
s_clearCrumblePath = false;
|
||||||
while (d->formEditorView->crumblePath()->dataForLastIndex().value<CrumbleBarInfo>().modelNode.isValid() &&
|
while (m_formEditorView->crumblePath()->dataForLastIndex().value<CrumbleBarInfo>().modelNode.isValid() &&
|
||||||
!d->formEditorView->crumblePath()->dataForLastIndex().value<CrumbleBarInfo>().modelNode.isRootNode())
|
!m_formEditorView->crumblePath()->dataForLastIndex().value<CrumbleBarInfo>().modelNode.isRootNode())
|
||||||
d->formEditorView->crumblePath()->popElement();
|
m_formEditorView->crumblePath()->popElement();
|
||||||
if (node.isRootNode() && d->formEditorView->crumblePath()->dataForLastIndex().isValid())
|
if (node.isRootNode() && m_formEditorView->crumblePath()->dataForLastIndex().isValid())
|
||||||
d->formEditorView->crumblePath()->popElement();
|
m_formEditorView->crumblePath()->popElement();
|
||||||
changeToSubComponent(node);
|
changeToSubComponent(node);
|
||||||
DesignDocumentControllerPrivate::clearCrumblePath = true;
|
s_clearCrumblePath = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void DesignDocumentController::changeToSubComponent(const ModelNode &componentNode)
|
void DesignDocumentController::changeToSubComponent(const ModelNode &componentNode)
|
||||||
{
|
{
|
||||||
Q_ASSERT(d->masterModel);
|
Q_ASSERT(m_masterModel);
|
||||||
QWeakPointer<Model> oldModel = d->model;
|
QWeakPointer<Model> oldModel = m_model;
|
||||||
Q_ASSERT(oldModel.data());
|
Q_ASSERT(oldModel.data());
|
||||||
|
|
||||||
if (d->model == d->subComponentModel) {
|
if (m_model == m_subComponentModel) {
|
||||||
changeToMasterModel();
|
changeToMasterModel();
|
||||||
}
|
}
|
||||||
|
|
||||||
QString componentText = d->rewriterView->extractText(QList<ModelNode>() << componentNode).value(componentNode);
|
QString componentText = m_rewriterView->extractText(QList<ModelNode>() << componentNode).value(componentNode);
|
||||||
|
|
||||||
if (componentText.isEmpty())
|
if (componentText.isEmpty())
|
||||||
return;
|
return;
|
||||||
@@ -473,110 +427,110 @@ void DesignDocumentController::changeToSubComponent(const ModelNode &componentNo
|
|||||||
explicitComponent = true;
|
explicitComponent = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
d->componentNode = componentNode;
|
m_componentNode = componentNode;
|
||||||
if (!componentNode.isRootNode()) {
|
if (!componentNode.isRootNode()) {
|
||||||
Q_ASSERT(d->model == d->masterModel);
|
Q_ASSERT(m_model == m_masterModel);
|
||||||
Q_ASSERT(componentNode.isValid());
|
Q_ASSERT(componentNode.isValid());
|
||||||
//change to subcomponent model
|
//change to subcomponent model
|
||||||
ModelNode rootModelNode = componentNode.view()->rootModelNode();
|
ModelNode rootModelNode = componentNode.view()->rootModelNode();
|
||||||
Q_ASSERT(rootModelNode.isValid());
|
Q_ASSERT(rootModelNode.isValid());
|
||||||
if (d->componentTextModifier)
|
if (m_componentTextModifier)
|
||||||
delete d->componentTextModifier;
|
delete m_componentTextModifier;
|
||||||
|
|
||||||
|
|
||||||
int componentStartOffset;
|
int componentStartOffset;
|
||||||
int componentEndOffset;
|
int componentEndOffset;
|
||||||
|
|
||||||
int rootStartOffset = d->rewriterView->nodeOffset(rootModelNode);
|
int rootStartOffset = m_rewriterView->nodeOffset(rootModelNode);
|
||||||
|
|
||||||
if (explicitComponent) { //the component is explciit we have to find the first definition inside
|
if (explicitComponent) { //the component is explciit we have to find the first definition inside
|
||||||
componentStartOffset = d->rewriterView->firstDefinitionInsideOffset(componentNode);
|
componentStartOffset = m_rewriterView->firstDefinitionInsideOffset(componentNode);
|
||||||
componentEndOffset = componentStartOffset + d->rewriterView->firstDefinitionInsideLength(componentNode);
|
componentEndOffset = componentStartOffset + m_rewriterView->firstDefinitionInsideLength(componentNode);
|
||||||
} else { //the component is implicit
|
} else { //the component is implicit
|
||||||
componentStartOffset = d->rewriterView->nodeOffset(componentNode);
|
componentStartOffset = m_rewriterView->nodeOffset(componentNode);
|
||||||
componentEndOffset = componentStartOffset + d->rewriterView->nodeLength(componentNode);
|
componentEndOffset = componentStartOffset + m_rewriterView->nodeLength(componentNode);
|
||||||
}
|
}
|
||||||
|
|
||||||
d->componentTextModifier = new ComponentTextModifier (d->textModifier, componentStartOffset, componentEndOffset, rootStartOffset);
|
m_componentTextModifier = new ComponentTextModifier (m_textModifier, componentStartOffset, componentEndOffset, rootStartOffset);
|
||||||
|
|
||||||
|
|
||||||
d->model->detachView(d->rewriterView.data());
|
m_model->detachView(m_rewriterView.data());
|
||||||
|
|
||||||
d->rewriterView->setTextModifier(d->componentTextModifier);
|
m_rewriterView->setTextModifier(m_componentTextModifier);
|
||||||
|
|
||||||
d->subComponentModel->attachView(d->rewriterView.data());
|
m_subComponentModel->attachView(m_rewriterView.data());
|
||||||
|
|
||||||
Q_ASSERT(d->rewriterView->rootModelNode().isValid());
|
Q_ASSERT(m_rewriterView->rootModelNode().isValid());
|
||||||
|
|
||||||
d->model = d->subComponentModel;
|
m_model = m_subComponentModel;
|
||||||
}
|
}
|
||||||
|
|
||||||
Q_ASSERT(d->masterModel);
|
Q_ASSERT(m_masterModel);
|
||||||
Q_ASSERT(d->model);
|
Q_ASSERT(m_model);
|
||||||
|
|
||||||
loadCurrentModel();
|
loadCurrentModel();
|
||||||
d->componentView->setComponentNode(componentNode);
|
m_componentView->setComponentNode(componentNode);
|
||||||
}
|
}
|
||||||
|
|
||||||
void DesignDocumentController::changeToExternalSubComponent(const QString &fileName)
|
void DesignDocumentController::changeToExternalSubComponent(const QString &fileName)
|
||||||
{
|
{
|
||||||
DesignDocumentControllerPrivate::clearCrumblePath = false;
|
s_clearCrumblePath = false;
|
||||||
Core::EditorManager::openEditor(fileName);
|
Core::EditorManager::openEditor(fileName);
|
||||||
DesignDocumentControllerPrivate::clearCrumblePath = true;
|
s_clearCrumblePath = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void DesignDocumentController::goIntoComponent()
|
void DesignDocumentController::goIntoComponent()
|
||||||
{
|
{
|
||||||
if (!d->model)
|
if (!m_model)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
QList<ModelNode> selectedNodes;
|
QList<ModelNode> selectedNodes;
|
||||||
if (d->formEditorView)
|
if (m_formEditorView)
|
||||||
selectedNodes = d->formEditorView->selectedModelNodes();
|
selectedNodes = m_formEditorView->selectedModelNodes();
|
||||||
|
|
||||||
DesignDocumentControllerPrivate::clearCrumblePath = false;
|
s_clearCrumblePath = false;
|
||||||
if (selectedNodes.count() == 1)
|
if (selectedNodes.count() == 1)
|
||||||
ModelNodeAction::goIntoComponent(selectedNodes.first());
|
ModelNodeAction::goIntoComponent(selectedNodes.first());
|
||||||
DesignDocumentControllerPrivate::clearCrumblePath = true;
|
s_clearCrumblePath = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void DesignDocumentController::loadCurrentModel()
|
void DesignDocumentController::loadCurrentModel()
|
||||||
{
|
{
|
||||||
QApplication::setOverrideCursor(QCursor(Qt::WaitCursor));
|
QApplication::setOverrideCursor(QCursor(Qt::WaitCursor));
|
||||||
|
|
||||||
Q_ASSERT(d->masterModel);
|
Q_ASSERT(m_masterModel);
|
||||||
Q_ASSERT(d->model);
|
Q_ASSERT(m_model);
|
||||||
d->model->setMasterModel(d->masterModel.data());
|
m_model->setMasterModel(m_masterModel.data());
|
||||||
d->masterModel->attachView(d->componentView.data());
|
m_masterModel->attachView(m_componentView.data());
|
||||||
|
|
||||||
d->nodeInstanceView->setPathToQt(pathToQt());
|
m_nodeInstanceView->setPathToQt(pathToQt());
|
||||||
d->model->attachView(d->nodeInstanceView.data());
|
m_model->attachView(m_nodeInstanceView.data());
|
||||||
d->model->attachView(d->navigator.data());
|
m_model->attachView(m_navigator.data());
|
||||||
d->itemLibraryView->widget()->setResourcePath(QFileInfo(d->fileName).absolutePath());
|
m_itemLibraryView->widget()->setResourcePath(QFileInfo(m_fileName).absolutePath());
|
||||||
|
|
||||||
d->model->attachView(d->formEditorView.data());
|
m_model->attachView(m_formEditorView.data());
|
||||||
d->model->attachView(d->itemLibraryView.data());
|
m_model->attachView(m_itemLibraryView.data());
|
||||||
|
|
||||||
if (!d->textEdit->parent()) // hack to prevent changing owner of external text edit
|
if (!m_textEdit->parent()) // hack to prevent changing owner of external text edit
|
||||||
d->stackedWidget->addWidget(d->textEdit.data());
|
m_stackedWidget->addWidget(m_textEdit.data());
|
||||||
|
|
||||||
// Will call setCurrentState (formEditorView etc has to be constructed first)
|
// Will call setCurrentState (formEditorView etc has to be constructed first)
|
||||||
d->model->attachView(d->statesEditorView.data());
|
m_model->attachView(m_statesEditorView.data());
|
||||||
|
|
||||||
d->model->attachView(d->propertyEditorView.data());
|
m_model->attachView(m_propertyEditorView.data());
|
||||||
|
|
||||||
|
|
||||||
if (DesignDocumentControllerPrivate::clearCrumblePath)
|
if (s_clearCrumblePath)
|
||||||
d->formEditorView->crumblePath()->clear();
|
m_formEditorView->crumblePath()->clear();
|
||||||
|
|
||||||
if (DesignDocumentControllerPrivate::pushCrumblePath &&
|
if (s_pushCrumblePath &&
|
||||||
!compareCrumbleBarInfo(d->formEditorView->crumblePath()->dataForLastIndex().value<CrumbleBarInfo>(),
|
!compareCrumbleBarInfo(m_formEditorView->crumblePath()->dataForLastIndex().value<CrumbleBarInfo>(),
|
||||||
createCrumbleBarInfo().value<CrumbleBarInfo>()))
|
createCrumbleBarInfo().value<CrumbleBarInfo>()))
|
||||||
d->formEditorView->crumblePath()->pushElement(simplfiedDisplayName(), createCrumbleBarInfo());
|
m_formEditorView->crumblePath()->pushElement(simplfiedDisplayName(), createCrumbleBarInfo());
|
||||||
|
|
||||||
d->documentLoaded = true;
|
m_documentLoaded = true;
|
||||||
d->subComponentManager->update(d->searchPath, d->model->imports());
|
m_subComponentManager->update(m_searchPath, m_model->imports());
|
||||||
Q_ASSERT(d->masterModel);
|
Q_ASSERT(m_masterModel);
|
||||||
QApplication::restoreOverrideCursor();
|
QApplication::restoreOverrideCursor();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -590,7 +544,7 @@ QList<RewriterView::Error> DesignDocumentController::loadMaster(const QByteArray
|
|||||||
|
|
||||||
void DesignDocumentController::saveAs(QWidget *parent)
|
void DesignDocumentController::saveAs(QWidget *parent)
|
||||||
{
|
{
|
||||||
QFileInfo oldFileInfo(d->fileName);
|
QFileInfo oldFileInfo(m_fileName);
|
||||||
XUIFileDialog::runSaveFileDialog(oldFileInfo.path(), parent, this, SLOT(doRealSaveAs(QString)));
|
XUIFileDialog::runSaveFileDialog(oldFileInfo.path(), parent, this, SLOT(doRealSaveAs(QString)));
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -622,8 +576,8 @@ void DesignDocumentController::doRealSaveAs(const QString &fileName)
|
|||||||
|
|
||||||
bool DesignDocumentController::isDirty() const
|
bool DesignDocumentController::isDirty() const
|
||||||
{
|
{
|
||||||
if (d->textEdit)
|
if (m_textEdit)
|
||||||
return d->textEdit->document()->isModified();
|
return m_textEdit->document()->isModified();
|
||||||
else
|
else
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@@ -631,33 +585,33 @@ bool DesignDocumentController::isDirty() const
|
|||||||
bool DesignDocumentController::isUndoAvailable() const
|
bool DesignDocumentController::isUndoAvailable() const
|
||||||
{
|
{
|
||||||
|
|
||||||
if (d->textEdit)
|
if (m_textEdit)
|
||||||
return d->textEdit->document()->isUndoAvailable();
|
return m_textEdit->document()->isUndoAvailable();
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool DesignDocumentController::isRedoAvailable() const
|
bool DesignDocumentController::isRedoAvailable() const
|
||||||
{
|
{
|
||||||
if (d->textEdit)
|
if (m_textEdit)
|
||||||
return d->textEdit->document()->isRedoAvailable();
|
return m_textEdit->document()->isRedoAvailable();
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
void DesignDocumentController::close()
|
void DesignDocumentController::close()
|
||||||
{
|
{
|
||||||
d->documentLoaded = false;
|
m_documentLoaded = false;
|
||||||
emit designDocumentClosed();
|
emit designDocumentClosed();
|
||||||
}
|
}
|
||||||
|
|
||||||
void DesignDocumentController::deleteSelected()
|
void DesignDocumentController::deleteSelected()
|
||||||
{
|
{
|
||||||
if (!d->model)
|
if (!m_model)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
try {
|
try {
|
||||||
if (d->formEditorView) {
|
if (m_formEditorView) {
|
||||||
RewriterTransaction transaction(d->formEditorView.data());
|
RewriterTransaction transaction(m_formEditorView.data());
|
||||||
QList<ModelNode> toDelete = d->formEditorView->selectedModelNodes();
|
QList<ModelNode> toDelete = m_formEditorView->selectedModelNodes();
|
||||||
foreach (ModelNode node, toDelete) {
|
foreach (ModelNode node, toDelete) {
|
||||||
if (node.isValid() && !node.isRootNode() && QmlObjectNode(node).isValid())
|
if (node.isValid() && !node.isRootNode() && QmlObjectNode(node).isValid())
|
||||||
QmlObjectNode(node).destroy();
|
QmlObjectNode(node).destroy();
|
||||||
@@ -670,15 +624,15 @@ void DesignDocumentController::deleteSelected()
|
|||||||
|
|
||||||
void DesignDocumentController::copySelected()
|
void DesignDocumentController::copySelected()
|
||||||
{
|
{
|
||||||
QScopedPointer<Model> model(Model::create("QtQuick.Rectangle", 1, 0, this->model()));
|
QScopedPointer<Model> copyModel(Model::create("QtQuick.Rectangle", 1, 0, model()));
|
||||||
model->setFileUrl(d->model->fileUrl());
|
copyModel->setFileUrl(model()->fileUrl());
|
||||||
model->changeImports(d->model->imports(), QList<Import>());
|
copyModel->changeImports(model()->imports(), QList<Import>());
|
||||||
|
|
||||||
Q_ASSERT(model);
|
Q_ASSERT(copyModel);
|
||||||
|
|
||||||
DesignDocumentControllerView view;
|
DesignDocumentControllerView view;
|
||||||
|
|
||||||
d->model->attachView(&view);
|
copyModel->attachView(&view);
|
||||||
|
|
||||||
if (view.selectedModelNodes().isEmpty())
|
if (view.selectedModelNodes().isEmpty())
|
||||||
return;
|
return;
|
||||||
@@ -698,9 +652,9 @@ void DesignDocumentController::copySelected()
|
|||||||
if (!selectedNode.isValid())
|
if (!selectedNode.isValid())
|
||||||
return;
|
return;
|
||||||
|
|
||||||
d->model->detachView(&view);
|
copyModel->detachView(&view);
|
||||||
|
|
||||||
model->attachView(&view);
|
copyModel->attachView(&view);
|
||||||
view.replaceModel(selectedNode);
|
view.replaceModel(selectedNode);
|
||||||
|
|
||||||
Q_ASSERT(view.rootModelNode().isValid());
|
Q_ASSERT(view.rootModelNode().isValid());
|
||||||
@@ -708,8 +662,8 @@ void DesignDocumentController::copySelected()
|
|||||||
|
|
||||||
view.toClipboard();
|
view.toClipboard();
|
||||||
} else { //multi items selected
|
} else { //multi items selected
|
||||||
d->model->detachView(&view);
|
copyModel->detachView(&view);
|
||||||
model->attachView(&view);
|
copyModel->attachView(&view);
|
||||||
|
|
||||||
foreach (ModelNode node, view.rootModelNode().allDirectSubModelNodes()) {
|
foreach (ModelNode node, view.rootModelNode().allDirectSubModelNodes()) {
|
||||||
node.destroy();
|
node.destroy();
|
||||||
@@ -765,17 +719,17 @@ static void scatterItem(ModelNode pastedNode, const ModelNode targetNode, int of
|
|||||||
|
|
||||||
void DesignDocumentController::paste()
|
void DesignDocumentController::paste()
|
||||||
{
|
{
|
||||||
QScopedPointer<Model> model(Model::create("empty", 1, 0, this->model()));
|
QScopedPointer<Model> pasteModel(Model::create("empty", 1, 0, model()));
|
||||||
model->setFileUrl(d->model->fileUrl());
|
pasteModel->setFileUrl(model()->fileUrl());
|
||||||
model->changeImports(d->model->imports(), QList<Import>());
|
pasteModel->changeImports(model()->imports(), QList<Import>());
|
||||||
|
|
||||||
Q_ASSERT(model);
|
Q_ASSERT(pasteModel);
|
||||||
|
|
||||||
if (!d->model)
|
if (!pasteModel)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
DesignDocumentControllerView view;
|
DesignDocumentControllerView view;
|
||||||
model->attachView(&view);
|
pasteModel->attachView(&view);
|
||||||
|
|
||||||
view.fromClipboard();
|
view.fromClipboard();
|
||||||
|
|
||||||
@@ -788,8 +742,8 @@ void DesignDocumentController::paste()
|
|||||||
QList<ModelNode> selectedNodes = rootNode.allDirectSubModelNodes();
|
QList<ModelNode> selectedNodes = rootNode.allDirectSubModelNodes();
|
||||||
qDebug() << rootNode;
|
qDebug() << rootNode;
|
||||||
qDebug() << selectedNodes;
|
qDebug() << selectedNodes;
|
||||||
model->detachView(&view);
|
pasteModel->detachView(&view);
|
||||||
d->model->attachView(&view);
|
pasteModel->attachView(&view);
|
||||||
|
|
||||||
ModelNode targetNode;
|
ModelNode targetNode;
|
||||||
|
|
||||||
@@ -814,7 +768,7 @@ void DesignDocumentController::paste()
|
|||||||
QList<ModelNode> pastedNodeList;
|
QList<ModelNode> pastedNodeList;
|
||||||
|
|
||||||
try {
|
try {
|
||||||
RewriterTransaction transaction(d->formEditorView.data());
|
RewriterTransaction transaction(m_formEditorView.data());
|
||||||
|
|
||||||
int offset = double(qrand()) / RAND_MAX * 20 - 10;
|
int offset = double(qrand()) / RAND_MAX * 20 - 10;
|
||||||
|
|
||||||
@@ -832,10 +786,10 @@ void DesignDocumentController::paste()
|
|||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
try {
|
try {
|
||||||
RewriterTransaction transaction(d->formEditorView.data());
|
RewriterTransaction transaction(m_formEditorView.data());
|
||||||
|
|
||||||
model->detachView(&view);
|
pasteModel->detachView(&view);
|
||||||
d->model->attachView(&view);
|
pasteModel->attachView(&view);
|
||||||
ModelNode pastedNode(view.insertModel(rootNode));
|
ModelNode pastedNode(view.insertModel(rootNode));
|
||||||
ModelNode targetNode;
|
ModelNode targetNode;
|
||||||
|
|
||||||
@@ -871,11 +825,11 @@ void DesignDocumentController::paste()
|
|||||||
|
|
||||||
void DesignDocumentController::selectAll()
|
void DesignDocumentController::selectAll()
|
||||||
{
|
{
|
||||||
if (!d->model)
|
if (!m_model)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
DesignDocumentControllerView view;
|
DesignDocumentControllerView view;
|
||||||
d->model->attachView(&view);
|
m_model->attachView(&view);
|
||||||
|
|
||||||
|
|
||||||
QList<ModelNode> allNodesExceptRootNode(view.allModelNodes());
|
QList<ModelNode> allNodesExceptRootNode(view.allModelNodes());
|
||||||
@@ -885,21 +839,21 @@ void DesignDocumentController::selectAll()
|
|||||||
|
|
||||||
RewriterView *DesignDocumentController::rewriterView() const
|
RewriterView *DesignDocumentController::rewriterView() const
|
||||||
{
|
{
|
||||||
return d->rewriterView.data();
|
return m_rewriterView.data();
|
||||||
}
|
}
|
||||||
|
|
||||||
void DesignDocumentController::undo()
|
void DesignDocumentController::undo()
|
||||||
{
|
{
|
||||||
if (d->rewriterView && !d->rewriterView->modificationGroupActive())
|
if (m_rewriterView && !m_rewriterView->modificationGroupActive())
|
||||||
d->textEdit->undo();
|
m_textEdit->undo();
|
||||||
d->propertyEditorView->resetView();
|
m_propertyEditorView->resetView();
|
||||||
}
|
}
|
||||||
|
|
||||||
void DesignDocumentController::redo()
|
void DesignDocumentController::redo()
|
||||||
{
|
{
|
||||||
if (d->rewriterView && !d->rewriterView->modificationGroupActive())
|
if (m_rewriterView && !m_rewriterView->modificationGroupActive())
|
||||||
d->textEdit->redo();
|
m_textEdit->redo();
|
||||||
d->propertyEditorView->resetView();
|
m_propertyEditorView->resetView();
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline QtSupport::BaseQtVersion *getActiveQtVersion(DesignDocumentController *controller)
|
static inline QtSupport::BaseQtVersion *getActiveQtVersion(DesignDocumentController *controller)
|
||||||
@@ -930,48 +884,48 @@ void DesignDocumentController::activeQtVersionChanged()
|
|||||||
QtSupport::BaseQtVersion *newQtVersion = getActiveQtVersion(this);
|
QtSupport::BaseQtVersion *newQtVersion = getActiveQtVersion(this);
|
||||||
|
|
||||||
if (!newQtVersion ) {
|
if (!newQtVersion ) {
|
||||||
d->qt_versionId = -1;
|
m_qt_versionId = -1;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (d->qt_versionId == newQtVersion->uniqueId())
|
if (m_qt_versionId == newQtVersion->uniqueId())
|
||||||
return;
|
return;
|
||||||
|
|
||||||
d->qt_versionId = newQtVersion->uniqueId();
|
m_qt_versionId = newQtVersion->uniqueId();
|
||||||
|
|
||||||
if (d->nodeInstanceView)
|
if (m_nodeInstanceView)
|
||||||
d->nodeInstanceView->setPathToQt(pathToQt());
|
m_nodeInstanceView->setPathToQt(pathToQt());
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef ENABLE_TEXT_VIEW
|
#ifdef ENABLE_TEXT_VIEW
|
||||||
void DesignDocumentController::showText()
|
void DesignDocumentController::showText()
|
||||||
{
|
{
|
||||||
d->stackedWidget->setCurrentWidget(d->textEdit.data());
|
m_stackedWidget->setCurrentWidget(m_textEdit.data());
|
||||||
}
|
}
|
||||||
#endif // ENABLE_TEXT_VIEW
|
#endif // ENABLE_TEXT_VIEW
|
||||||
|
|
||||||
#ifdef ENABLE_TEXT_VIEW
|
#ifdef ENABLE_TEXT_VIEW
|
||||||
void DesignDocumentController::showForm()
|
void DesignDocumentController::showForm()
|
||||||
{
|
{
|
||||||
d->stackedWidget->setCurrentWidget(d->formEditorView->widget());
|
m_stackedWidget->setCurrentWidget(m_formEditorView->widget());
|
||||||
}
|
}
|
||||||
#endif // ENABLE_TEXT_VIEW
|
#endif // ENABLE_TEXT_VIEW
|
||||||
|
|
||||||
bool DesignDocumentController::save(QWidget *parent)
|
bool DesignDocumentController::save(QWidget *parent)
|
||||||
{
|
{
|
||||||
// qDebug() << "Saving document to file \"" << d->fileName << "\"...";
|
// qDebug() << "Saving document to file \"" << fileName << "\"...";
|
||||||
//
|
//
|
||||||
if (d->fileName.isEmpty()) {
|
if (m_fileName.isEmpty()) {
|
||||||
saveAs(parent);
|
saveAs(parent);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
Utils::FileSaver saver(d->fileName, QIODevice::Text);
|
Utils::FileSaver saver(m_fileName, QIODevice::Text);
|
||||||
if (d->model)
|
if (m_model)
|
||||||
saver.write(d->textEdit->toPlainText().toLatin1());
|
saver.write(m_textEdit->toPlainText().toLatin1());
|
||||||
if (!saver.finalize(parent ? parent : d->stackedWidget.data()))
|
if (!saver.finalize(parent ? parent : m_stackedWidget.data()))
|
||||||
return false;
|
return false;
|
||||||
if (d->model)
|
if (m_model)
|
||||||
d->textEdit->setPlainText(d->textEdit->toPlainText()); // clear undo/redo history
|
m_textEdit->setPlainText(m_textEdit->toPlainText()); // clear undo/redo history
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@@ -980,7 +934,7 @@ bool DesignDocumentController::save(QWidget *parent)
|
|||||||
QString DesignDocumentController::contextHelpId() const
|
QString DesignDocumentController::contextHelpId() const
|
||||||
{
|
{
|
||||||
DesignDocumentControllerView view;
|
DesignDocumentControllerView view;
|
||||||
d->model->attachView(&view);
|
m_model->attachView(&view);
|
||||||
|
|
||||||
QList<ModelNode> nodes = view.selectedModelNodes();
|
QList<ModelNode> nodes = view.selectedModelNodes();
|
||||||
QString helpId;
|
QString helpId;
|
||||||
|
@@ -33,9 +33,24 @@
|
|||||||
|
|
||||||
#include "rewriterview.h"
|
#include "rewriterview.h"
|
||||||
|
|
||||||
|
#include <model.h>
|
||||||
|
#include <rewriterview.h>
|
||||||
|
#include <itemlibraryview.h>
|
||||||
|
#include <navigatorview.h>
|
||||||
|
#include <stateseditorview.h>
|
||||||
|
#include <formeditorview.h>
|
||||||
|
#include <propertyeditor.h>
|
||||||
|
#include <componentview.h>
|
||||||
|
#include <basetexteditmodifier.h>
|
||||||
|
#include <componenttextmodifier.h>
|
||||||
|
#include <subcomponentmanager.h>
|
||||||
|
#include <model/viewlogger.h>
|
||||||
|
|
||||||
#include <QObject>
|
#include <QObject>
|
||||||
#include <QString>
|
#include <QString>
|
||||||
|
|
||||||
|
#include <QStackedWidget>
|
||||||
|
|
||||||
QT_BEGIN_NAMESPACE
|
QT_BEGIN_NAMESPACE
|
||||||
class QUndoStack;
|
class QUndoStack;
|
||||||
class QWidget;
|
class QWidget;
|
||||||
@@ -47,23 +62,14 @@ QT_END_NAMESPACE
|
|||||||
|
|
||||||
namespace QmlDesigner {
|
namespace QmlDesigner {
|
||||||
|
|
||||||
class Model;
|
|
||||||
class ModelNode;
|
class ModelNode;
|
||||||
class TextModifier;
|
class TextModifier;
|
||||||
class QmlObjectNode;
|
class QmlObjectNode;
|
||||||
class RewriterView;
|
|
||||||
class ItemLibraryView;
|
|
||||||
class NavigatorView;
|
|
||||||
class ComponentView;
|
|
||||||
class PropertyEditor;
|
|
||||||
class StatesEditorView;
|
|
||||||
class FormEditorView;
|
|
||||||
struct CrumbleBarInfo;
|
struct CrumbleBarInfo;
|
||||||
|
|
||||||
class DesignDocumentController: public QObject
|
class DesignDocumentController: public QObject
|
||||||
{
|
{
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
|
|
||||||
public:
|
public:
|
||||||
DesignDocumentController(QObject *parent);
|
DesignDocumentController(QObject *parent);
|
||||||
~DesignDocumentController();
|
~DesignDocumentController();
|
||||||
@@ -72,7 +78,7 @@ public:
|
|||||||
QString simplfiedDisplayName() const;
|
QString simplfiedDisplayName() const;
|
||||||
|
|
||||||
QString fileName() const;
|
QString fileName() const;
|
||||||
void setFileName(const QString &fileName);
|
void setFileName(const QString &m_fileName);
|
||||||
|
|
||||||
QList<RewriterView::Error> loadMaster(QPlainTextEdit *edit);
|
QList<RewriterView::Error> loadMaster(QPlainTextEdit *edit);
|
||||||
QList<RewriterView::Error> loadMaster(const QByteArray &qml);
|
QList<RewriterView::Error> loadMaster(const QByteArray &qml);
|
||||||
@@ -94,13 +100,13 @@ public:
|
|||||||
QString contextHelpId() const;
|
QString contextHelpId() const;
|
||||||
QList<RewriterView::Error> qmlErrors() const;
|
QList<RewriterView::Error> qmlErrors() const;
|
||||||
|
|
||||||
void setItemLibraryView(ItemLibraryView* itemLibraryView);
|
void setItemLibraryView(ItemLibraryView* m_itemLibraryView);
|
||||||
void setNavigator(NavigatorView* navigatorView);
|
void setNavigator(NavigatorView* navigatorView);
|
||||||
void setPropertyEditorView(PropertyEditor *propertyEditor);
|
void setPropertyEditorView(PropertyEditor *propertyEditor);
|
||||||
void setStatesEditorView(StatesEditorView* statesEditorView);
|
void setStatesEditorView(StatesEditorView* m_statesEditorView);
|
||||||
void setFormEditorView(FormEditorView *formEditorView);
|
void setFormEditorView(FormEditorView *m_formEditorView);
|
||||||
void setNodeInstanceView(NodeInstanceView *nodeInstanceView);
|
void setNodeInstanceView(NodeInstanceView *m_nodeInstanceView);
|
||||||
void setComponentView(ComponentView *componentView);
|
void setComponentView(ComponentView *m_componentView);
|
||||||
|
|
||||||
void setCrumbleBarInfo(const CrumbleBarInfo &crumbleBarInfo);
|
void setCrumbleBarInfo(const CrumbleBarInfo &crumbleBarInfo);
|
||||||
static void setBlockCrumbleBar(bool);
|
static void setBlockCrumbleBar(bool);
|
||||||
@@ -129,7 +135,7 @@ public slots:
|
|||||||
void activeQtVersionChanged();
|
void activeQtVersionChanged();
|
||||||
void changeCurrentModelTo(const ModelNode &node);
|
void changeCurrentModelTo(const ModelNode &node);
|
||||||
void changeToSubComponent(const ModelNode &node);
|
void changeToSubComponent(const ModelNode &node);
|
||||||
void changeToExternalSubComponent(const QString &fileName);
|
void changeToExternalSubComponent(const QString &m_fileName);
|
||||||
void goIntoComponent();
|
void goIntoComponent();
|
||||||
|
|
||||||
#ifdef ENABLE_TEXT_VIEW
|
#ifdef ENABLE_TEXT_VIEW
|
||||||
@@ -138,9 +144,9 @@ public slots:
|
|||||||
#endif // ENABLE_TEXT_VIEW
|
#endif // ENABLE_TEXT_VIEW
|
||||||
|
|
||||||
private slots:
|
private slots:
|
||||||
void doRealSaveAs(const QString &fileName);
|
void doRealSaveAs(const QString &m_fileName);
|
||||||
|
|
||||||
private:
|
private: // functions
|
||||||
void detachNodeInstanceView();
|
void detachNodeInstanceView();
|
||||||
void attachNodeInstanceView();
|
void attachNodeInstanceView();
|
||||||
void changeToMasterModel();
|
void changeToMasterModel();
|
||||||
@@ -149,8 +155,35 @@ private:
|
|||||||
QWidget *centralWidget() const;
|
QWidget *centralWidget() const;
|
||||||
QString pathToQt() const;
|
QString pathToQt() const;
|
||||||
|
|
||||||
|
private: // variables
|
||||||
|
QWeakPointer<FormEditorView> m_formEditorView;
|
||||||
|
|
||||||
class DesignDocumentControllerPrivate *d;
|
QWeakPointer<ItemLibraryView> m_itemLibraryView;
|
||||||
|
QWeakPointer<NavigatorView> m_navigator;
|
||||||
|
QWeakPointer<PropertyEditor> m_propertyEditorView;
|
||||||
|
QWeakPointer<StatesEditorView> m_statesEditorView;
|
||||||
|
QWeakPointer<QStackedWidget> m_stackedWidget;
|
||||||
|
QWeakPointer<NodeInstanceView> m_nodeInstanceView;
|
||||||
|
QWeakPointer<ComponentView> m_componentView;
|
||||||
|
|
||||||
|
QWeakPointer<Model> m_model;
|
||||||
|
QWeakPointer<Model> m_subComponentModel;
|
||||||
|
QWeakPointer<Model> m_masterModel;
|
||||||
|
QWeakPointer<QPlainTextEdit> m_textEdit;
|
||||||
|
QWeakPointer<RewriterView> m_rewriterView;
|
||||||
|
BaseTextEditModifier *m_textModifier;
|
||||||
|
ComponentTextModifier *m_componentTextModifier;
|
||||||
|
QWeakPointer<SubComponentManager> m_subComponentManager;
|
||||||
|
QWeakPointer<Internal::ViewLogger> m_viewLogger;
|
||||||
|
ModelNode m_componentNode;
|
||||||
|
|
||||||
|
QString m_fileName;
|
||||||
|
QUrl m_searchPath;
|
||||||
|
bool m_documentLoaded;
|
||||||
|
bool m_syncBlocked;
|
||||||
|
int m_qt_versionId;
|
||||||
|
static bool s_clearCrumblePath;
|
||||||
|
static bool s_pushCrumblePath;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user