/**************************************************************************** ** ** Copyright (C) 2016 The Qt Company Ltd. ** Contact: https://www.qt.io/licensing/ ** ** This file is part of Qt Creator. ** ** Commercial License Usage ** Licensees holding valid commercial Qt licenses may use this file in ** accordance with the commercial license agreement provided with the ** Software or, alternatively, in accordance with the terms contained in ** a written agreement between you and The Qt Company. For licensing terms ** and conditions see https://www.qt.io/terms-conditions. For further ** information use the contact form at https://www.qt.io/contact-us. ** ** GNU General Public License Usage ** Alternatively, this file may be used under the terms of the GNU ** General Public License version 3 as published by the Free Software ** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT ** included in the packaging of this file. Please review the following ** information to ensure the GNU General Public License requirements will ** be met: https://www.gnu.org/licenses/gpl-3.0.html. ** ****************************************************************************/ #pragma once #include #include #include #include #include #include #include #include #include QT_BEGIN_NAMESPACE class QPlainTextEdit; QT_END_NAMESPACE namespace ProjectExplorer { class Target; } namespace QmlDesigner { class ModelNode; class TextModifier; class QmlObjectNode; class CrumbleBarInfo; class ViewManager; class AbstractView; class QMLDESIGNERCORE_EXPORT DesignDocument: public QObject { Q_OBJECT public: DesignDocument(QObject *parent = nullptr); ~DesignDocument() override; QString displayName() const; QString simplfiedDisplayName() const; void loadDocument(QPlainTextEdit *edit); void attachRewriterToModel(); void close(); void updateSubcomponentManager(); void addSubcomponentManagerImport(const Import &import); bool isUndoAvailable() const; bool isRedoAvailable() const; Model *currentModel() const; Model *documentModel() const; bool inFileComponentModelActive() const; void contextHelp(const Core::IContext::HelpCallback &callback) const; QList qmlParseWarnings() const; bool hasQmlParseWarnings() const; QList qmlParseErrors() const; bool hasQmlParseErrors() const; RewriterView *rewriterView() const; void setEditor(Core::IEditor *editor); Core::IEditor *editor() const; TextEditor::BaseTextEditor *textEditor() const; QPlainTextEdit *plainTextEdit() const; Utils::FilePath fileName() const; ProjectExplorer::Target *currentTarget() const; bool isDocumentLoaded() const; void resetToDocumentModel(); void changeToDocumentModel(); bool isQtForMCUsProject() const; Utils::FilePath projectFolder() const; bool hasProject() const; signals: void displayNameChanged(const QString &newFileName); void dirtyStateChanged(bool newState); void undoAvailable(bool isAvailable); void redoAvailable(bool isAvailable); void designDocumentClosed(); void qmlErrorsChanged(const QList &errors); public: void deleteSelected(); void copySelected(); void cutSelected(); void paste(); void selectAll(); void undo(); void redo(); void updateActiveTarget(); void changeToSubComponent(const ModelNode &componentNode); void changeToMaster(); private: // functions void updateFileName(const Utils::FilePath &oldFileName, const Utils::FilePath &newFileName); void changeToInFileComponentModel(ComponentTextModifier *textModifer); void updateQrcFiles(); QWidget *centralWidget() const; QString pathToQt() const; const ViewManager &viewManager() const; ViewManager &viewManager(); ModelNode rootModelNode() const; bool loadInFileComponent(const ModelNode &componentNode); AbstractView *view() const; Model *createInFileComponentModel(); bool pasteSVG(); private: // variables QScopedPointer m_documentModel; QScopedPointer m_inFileComponentModel; QPointer m_textEditor; QScopedPointer m_documentTextModifier; QScopedPointer m_inFileComponentTextModifier; QScopedPointer m_subComponentManager; QScopedPointer m_rewriterView; bool m_documentLoaded; ProjectExplorer::Target *m_currentTarget; }; } // namespace QmlDesigner