1 | /**************************************************************************** |
2 | ** |
3 | ** Copyright (C) 2016 The Qt Company Ltd. |
4 | ** Contact: https://www.qt.io/licensing/ |
5 | ** |
6 | ** This file is part of the Qt Designer of the Qt Toolkit. |
7 | ** |
8 | ** $QT_BEGIN_LICENSE:GPL-EXCEPT$ |
9 | ** Commercial License Usage |
10 | ** Licensees holding valid commercial Qt licenses may use this file in |
11 | ** accordance with the commercial license agreement provided with the |
12 | ** Software or, alternatively, in accordance with the terms contained in |
13 | ** a written agreement between you and The Qt Company. For licensing terms |
14 | ** and conditions see https://www.qt.io/terms-conditions. For further |
15 | ** information use the contact form at https://www.qt.io/contact-us. |
16 | ** |
17 | ** GNU General Public License Usage |
18 | ** Alternatively, this file may be used under the terms of the GNU |
19 | ** General Public License version 3 as published by the Free Software |
20 | ** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT |
21 | ** included in the packaging of this file. Please review the following |
22 | ** information to ensure the GNU General Public License requirements will |
23 | ** be met: https://www.gnu.org/licenses/gpl-3.0.html. |
24 | ** |
25 | ** $QT_END_LICENSE$ |
26 | ** |
27 | ****************************************************************************/ |
28 | |
29 | #ifndef ABSTRACTFORMWINDOW_H |
30 | #define ABSTRACTFORMWINDOW_H |
31 | |
32 | #include <QtDesigner/sdk_global.h> |
33 | |
34 | #include <QtWidgets/qwidget.h> |
35 | |
36 | QT_BEGIN_NAMESPACE |
37 | |
38 | class QDesignerFormEditorInterface; |
39 | class QDesignerFormWindowCursorInterface; |
40 | class QDesignerFormWindowToolInterface; |
41 | class QUndoStack; |
42 | class QDir; |
43 | class QtResourceSet; |
44 | |
45 | class QDESIGNER_SDK_EXPORT QDesignerFormWindowInterface: public QWidget |
46 | { |
47 | Q_OBJECT |
48 | public: |
49 | enum FeatureFlag |
50 | { |
51 | EditFeature = 0x01, |
52 | GridFeature = 0x02, |
53 | TabOrderFeature = 0x04, |
54 | DefaultFeature = EditFeature | GridFeature |
55 | }; |
56 | Q_DECLARE_FLAGS(Feature, FeatureFlag) |
57 | |
58 | enum ResourceFileSaveMode |
59 | { |
60 | SaveAllResourceFiles, |
61 | SaveOnlyUsedResourceFiles, |
62 | DontSaveResourceFiles |
63 | }; |
64 | |
65 | public: |
66 | explicit QDesignerFormWindowInterface(QWidget *parent = nullptr, Qt::WindowFlags flags = Qt::WindowFlags()); |
67 | virtual ~QDesignerFormWindowInterface(); |
68 | |
69 | virtual QString fileName() const = 0; |
70 | virtual QDir absoluteDir() const = 0; |
71 | |
72 | virtual QString contents() const = 0; |
73 | virtual QStringList checkContents() const = 0; |
74 | virtual bool setContents(QIODevice *dev, QString *errorMessage = nullptr) = 0; |
75 | |
76 | virtual Feature features() const = 0; |
77 | virtual bool hasFeature(Feature f) const = 0; |
78 | |
79 | virtual QString author() const = 0; |
80 | virtual void setAuthor(const QString &author) = 0; |
81 | |
82 | virtual QString () const = 0; |
83 | virtual void (const QString &) = 0; |
84 | |
85 | virtual void layoutDefault(int *margin, int *spacing) = 0; |
86 | virtual void setLayoutDefault(int margin, int spacing) = 0; |
87 | |
88 | virtual void layoutFunction(QString *margin, QString *spacing) = 0; |
89 | virtual void setLayoutFunction(const QString &margin, const QString &spacing) = 0; |
90 | |
91 | virtual QString pixmapFunction() const = 0; |
92 | virtual void setPixmapFunction(const QString &pixmapFunction) = 0; |
93 | |
94 | virtual QString exportMacro() const = 0; |
95 | virtual void setExportMacro(const QString &exportMacro) = 0; |
96 | |
97 | virtual QStringList includeHints() const = 0; |
98 | virtual void setIncludeHints(const QStringList &includeHints) = 0; |
99 | |
100 | virtual ResourceFileSaveMode resourceFileSaveMode() const = 0; |
101 | virtual void setResourceFileSaveMode(ResourceFileSaveMode behaviour) = 0; |
102 | |
103 | virtual QtResourceSet *resourceSet() const = 0; |
104 | virtual void setResourceSet(QtResourceSet *resourceSet) = 0; |
105 | |
106 | QStringList activeResourceFilePaths() const; |
107 | |
108 | virtual QDesignerFormEditorInterface *core() const; |
109 | virtual QDesignerFormWindowCursorInterface *cursor() const = 0; |
110 | |
111 | virtual int toolCount() const = 0; |
112 | |
113 | virtual int currentTool() const = 0; |
114 | virtual void setCurrentTool(int index) = 0; |
115 | |
116 | virtual QDesignerFormWindowToolInterface *tool(int index) const = 0; |
117 | virtual void registerTool(QDesignerFormWindowToolInterface *tool) = 0; |
118 | |
119 | virtual QPoint grid() const = 0; |
120 | |
121 | virtual QWidget *mainContainer() const = 0; |
122 | virtual void setMainContainer(QWidget *mainContainer) = 0; |
123 | virtual QWidget *formContainer() const = 0; |
124 | |
125 | virtual bool isManaged(QWidget *widget) const = 0; |
126 | |
127 | virtual bool isDirty() const = 0; |
128 | |
129 | static QDesignerFormWindowInterface *findFormWindow(QWidget *w); |
130 | static QDesignerFormWindowInterface *findFormWindow(QObject *obj); |
131 | |
132 | virtual QUndoStack *commandHistory() const = 0; |
133 | virtual void beginCommand(const QString &description) = 0; |
134 | virtual void endCommand() = 0; |
135 | |
136 | virtual void simplifySelection(QList<QWidget*> *widgets) const = 0; |
137 | |
138 | // notifications |
139 | virtual void emitSelectionChanged() = 0; |
140 | |
141 | virtual QStringList resourceFiles() const = 0; |
142 | virtual void addResourceFile(const QString &path) = 0; |
143 | virtual void removeResourceFile(const QString &path) = 0; |
144 | |
145 | virtual void ensureUniqueObjectName(QObject *object) = 0; |
146 | |
147 | public Q_SLOTS: |
148 | virtual void manageWidget(QWidget *widget) = 0; |
149 | virtual void unmanageWidget(QWidget *widget) = 0; |
150 | |
151 | virtual void setFeatures(Feature f) = 0; |
152 | virtual void setDirty(bool dirty) = 0; |
153 | virtual void clearSelection(bool changePropertyDisplay = true) = 0; |
154 | virtual void selectWidget(QWidget *w, bool select = true) = 0; |
155 | virtual void setGrid(const QPoint &grid) = 0; |
156 | virtual void setFileName(const QString &fileName) = 0; |
157 | virtual bool setContents(const QString &contents) = 0; |
158 | |
159 | virtual void editWidgets() = 0; |
160 | void activateResourceFilePaths(const QStringList &paths, int *errorCount = nullptr, QString *errorMessages = nullptr); |
161 | |
162 | Q_SIGNALS: |
163 | void mainContainerChanged(QWidget *mainContainer); |
164 | void toolChanged(int toolIndex); |
165 | void fileNameChanged(const QString &fileName); |
166 | void featureChanged(Feature f); |
167 | void selectionChanged(); |
168 | void geometryChanged(); |
169 | |
170 | void resourceFilesChanged(); |
171 | |
172 | void widgetManaged(QWidget *widget); |
173 | void widgetUnmanaged(QWidget *widget); |
174 | void aboutToUnmanageWidget(QWidget *widget); |
175 | void activated(QWidget *widget); |
176 | |
177 | void changed(); |
178 | void widgetRemoved(QWidget *w); |
179 | void objectRemoved(QObject *o); |
180 | }; |
181 | |
182 | QT_END_NAMESPACE |
183 | |
184 | #endif // ABSTRACTFORMWINDOW_H |
185 | |