viewmanager.h 3.77 KB
Newer Older
Marco Bubke's avatar
Marco Bubke committed
1
2
/****************************************************************************
**
3
** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies).
Marco Bubke's avatar
Marco Bubke committed
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
** Contact: http://www.qt-project.org/legal
**
** 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 Digia.  For licensing terms and
** conditions see http://qt.digia.com/licensing.  For further information
** use the contact form at http://qt.digia.com/contact-us.
**
** GNU Lesser General Public License Usage
** Alternatively, this file may be used under the terms of the GNU Lesser
** General Public License version 2.1 as published by the Free Software
** Foundation and appearing in the file LICENSE.LGPL included in the
** packaging of this file.  Please review the following information to
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
** In addition, as a special exception, Digia gives you certain additional
** rights.  These rights are described in the Digia Qt LGPL Exception
** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
**
****************************************************************************/

#ifndef QMLDESIGNER_VIEWMANAGER_H
#define QMLDESIGNER_VIEWMANAGER_H

#include "abstractview.h"

#include <rewriterview.h>
#include <nodeinstanceview.h>
#include <itemlibraryview.h>
#include <navigatorview.h>
#include <stateseditorview.h>
#include <formeditorview.h>
#include <propertyeditor.h>
#include <componentview.h>
#include <model/viewlogger.h>

namespace QmlDesigner {

class DesignDocument;

namespace Internal {
    class DesignModeWidget;
}

class ViewManager
{
public:
    ViewManager();
57
    ~ViewManager();
Marco Bubke's avatar
Marco Bubke committed
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72

    void attachRewriterView(TextModifier *textModifier);
    void detachRewriterView();

    void attachComponentView();
    void detachComponentView();

    void attachViewsExceptRewriterAndComponetView();
    void detachViewsExceptRewriterAndComponetView();

    void setItemLibraryViewResourcePath(const QString &resourcePath);
    void setComponentNode(const ModelNode &componentNode);
    void setNodeInstanceViewQtPath(const QString & qtPath);

    void resetPropertyEditorView();
73

74
    void resisterFormEditorTool(AbstractFormEditorTool *tool); // takes ownership
75
76
77
    void registerView(AbstractView *view);

    QList<WidgetInfo> widgetInfos();
Marco Bubke's avatar
Marco Bubke committed
78

79
80
    void disableWidgets();
    void enableWidgets();
Marco Bubke's avatar
Marco Bubke committed
81
82
83
84
85

    void pushFileOnCrambleBar(const QString &fileName);
    void pushInFileComponentOnCrambleBar(const QString &componentId);
    void nextFileIsCalledInternally();

86
87
88
    //used by DesignDocument ### find a better solution
    QmlModelView *qmlModelView();

Marco Bubke's avatar
Marco Bubke committed
89
90
91
92
93
private: // functions
    Q_DISABLE_COPY(ViewManager)

    void attachNodeInstanceView();
    void attachItemLibraryView();
94
95
    void attachAdditionalViews();
    void detachAdditionalViews();
Marco Bubke's avatar
Marco Bubke committed
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121

    Model *currentModel() const;
    Model *documentModel() const;
    DesignDocument *currentDesignDocument() const;
    QString pathToQt() const;

    void switchStateEditorViewToBaseState();
    void switchStateEditorViewToSavedState();

private: // variables
    QmlModelState m_savedState;
    Internal::ViewLogger m_viewLogger;
    ComponentView m_componentView;
    FormEditorView m_formEditorView;
    ItemLibraryView m_itemLibraryView;
    NavigatorView m_navigatorView;
    PropertyEditor m_propertyEditorView;
    StatesEditorView m_statesEditorView;
    NodeInstanceView m_nodeInstanceView;

    QList<QWeakPointer<AbstractView> > m_additionalViews;
};

} // namespace QmlDesigner

#endif // QMLDESIGNER_VIEWMANAGER_H