1 /**************************************************************************
3 ** This file is part of Qt Creator
5 ** Copyright (c) 2011 Nokia Corporation and/or its subsidiary(-ies).
7 ** Contact: Nokia Corporation (qt-info@nokia.com)
11 ** This file contains pre-release code and may not be distributed.
12 ** You may use this file in accordance with the terms and conditions
13 ** contained in the Technology Preview License Agreement accompanying
16 ** GNU Lesser General Public License Usage
18 ** Alternatively, this file may be used under the terms of the GNU Lesser
19 ** General Public License version 2.1 as published by the Free Software
20 ** Foundation and appearing in the file LICENSE.LGPL included in the
21 ** packaging of this file. Please review the following information to
22 ** ensure the GNU Lesser General Public License version 2.1 requirements
23 ** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
25 ** In addition, as a special exception, Nokia gives you certain additional
26 ** rights. These rights are described in the Nokia Qt LGPL Exception
27 ** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
29 ** If you have questions regarding the use of this file, please contact
30 ** Nokia at qt-info@nokia.com.
32 **************************************************************************/
34 #ifndef CUSTOMWIDGETS_H
35 #define CUSTOMWIDGETS_H
37 #include "customwidget.h"
39 #include <utils/newclasswidget.h>
40 #include <utils/classnamevalidatinglineedit.h>
41 #include <utils/filenamevalidatinglineedit.h>
42 #include <utils/linecolumnlabel.h>
43 #include <utils/pathchooser.h>
44 #include <utils/projectnamevalidatinglineedit.h>
45 #include <utils/filterlineedit.h>
46 #include <utils/qtcolorbutton.h>
47 #include <utils/submiteditorwidget.h>
48 #include <utils/submitfieldwidget.h>
49 #include <utils/pathlisteditor.h>
50 #include <utils/detailsbutton.h>
51 #include <utils/detailswidget.h>
52 #include <utils/styledbar.h>
53 #include <utils/wizard.h>
54 #include <utils/welcomemodetreewidget.h>
55 #include <utils/crumblepath.h>
57 #include <QtDesigner/QDesignerCustomWidgetCollectionInterface>
58 #include <QtDesigner/QDesignerContainerExtension>
59 #include <QtDesigner/QExtensionFactory>
61 #include <QtCore/qplugin.h>
62 #include <QtCore/QList>
65 class QExtensionManager;
70 class NewClassCustomWidget :
72 public CustomWidget<Utils::NewClassWidget>
75 Q_INTERFACES(QDesignerCustomWidgetInterface)
77 explicit NewClassCustomWidget(QObject *parent = 0);
80 class ClassNameValidatingLineEdit_CW :
82 public CustomWidget<Utils::ClassNameValidatingLineEdit>
85 Q_INTERFACES(QDesignerCustomWidgetInterface)
87 explicit ClassNameValidatingLineEdit_CW(QObject *parent = 0);
90 class FileNameValidatingLineEdit_CW :
92 public CustomWidget<Utils::FileNameValidatingLineEdit>
95 Q_INTERFACES(QDesignerCustomWidgetInterface)
97 explicit FileNameValidatingLineEdit_CW(QObject *parent = 0);
100 class ProjectNameValidatingLineEdit_CW :
102 public CustomWidget<Utils::ProjectNameValidatingLineEdit>
105 Q_INTERFACES(QDesignerCustomWidgetInterface)
107 explicit ProjectNameValidatingLineEdit_CW(QObject *parent = 0);
110 class LineColumnLabel_CW :
112 public CustomWidget<Utils::LineColumnLabel>
115 Q_INTERFACES(QDesignerCustomWidgetInterface)
117 explicit LineColumnLabel_CW(QObject *parent = 0);
120 class PathChooser_CW :
122 public CustomWidget<Utils::PathChooser>
125 Q_INTERFACES(QDesignerCustomWidgetInterface)
127 explicit PathChooser_CW(QObject *parent = 0);
130 class IconButton_CW :
132 public CustomWidget<Utils::IconButton>
135 Q_INTERFACES(QDesignerCustomWidgetInterface)
137 explicit IconButton_CW(QObject *parent = 0);
140 class FancyLineEdit_CW :
142 public CustomWidget<Utils::FancyLineEdit>
145 Q_INTERFACES(QDesignerCustomWidgetInterface)
147 explicit FancyLineEdit_CW(QObject *parent = 0);
149 virtual QWidget *createWidget(QWidget *parent);
152 class FilterLineEdit_CW :
154 public CustomWidget<Utils::FilterLineEdit>
157 Q_INTERFACES(QDesignerCustomWidgetInterface)
159 explicit FilterLineEdit_CW(QObject *parent = 0);
162 class QtColorButton_CW :
164 public CustomWidget<Utils::QtColorButton>
167 Q_INTERFACES(QDesignerCustomWidgetInterface)
169 explicit QtColorButton_CW(QObject *parent = 0);
172 class SubmitEditorWidget_CW :
174 public CustomWidget<Utils::SubmitEditorWidget>
177 Q_INTERFACES(QDesignerCustomWidgetInterface)
179 explicit SubmitEditorWidget_CW(QObject *parent = 0);
182 class SubmitFieldWidget_CW :
184 public CustomWidget<Utils::SubmitFieldWidget>
187 Q_INTERFACES(QDesignerCustomWidgetInterface)
189 explicit SubmitFieldWidget_CW(QObject *parent = 0);
192 class PathListEditor_CW :
194 public CustomWidget<Utils::PathListEditor>
197 Q_INTERFACES(QDesignerCustomWidgetInterface)
199 explicit PathListEditor_CW(QObject *parent = 0);
202 class DetailsButton_CW :
204 public CustomWidget<Utils::DetailsButton>
207 Q_INTERFACES(QDesignerCustomWidgetInterface)
209 explicit DetailsButton_CW(QObject *parent = 0);
214 public CustomWidget<Utils::StyledBar>
217 Q_INTERFACES(QDesignerCustomWidgetInterface)
219 explicit StyledBar_CW(QObject *parent = 0);
222 class StyledSeparator_CW :
224 public CustomWidget<Utils::StyledSeparator>
227 Q_INTERFACES(QDesignerCustomWidgetInterface)
229 explicit StyledSeparator_CW(QObject *parent = 0);
234 public CustomWidget<Utils::Wizard>
237 Q_INTERFACES(QDesignerCustomWidgetInterface)
239 explicit Wizard_CW(QObject *parent = 0);
242 class WelcomePageWidget_CW :
244 public CustomWidget<Utils::WelcomeModeTreeWidget>
247 Q_INTERFACES(QDesignerCustomWidgetInterface)
249 explicit WelcomePageWidget_CW(QObject *parent = 0);
250 virtual QWidget *createWidget(QWidget *parent);
253 class WelcomeModeLabel_CW :
255 public CustomWidget<Utils::WelcomeModeLabel>
258 Q_INTERFACES(QDesignerCustomWidgetInterface)
260 explicit WelcomeModeLabel_CW(QObject *parent = 0);
263 class CrumblePath_CW :
265 public CustomWidget<Utils::CrumblePath>
268 Q_INTERFACES(QDesignerCustomWidgetInterface)
270 explicit CrumblePath_CW(QObject *parent = 0);
273 // Details Widget: plugin + simple, hacky container extension that
274 // accepts only one page.
276 class DetailsWidget_CW :
278 public CustomWidget<Utils::DetailsWidget>
281 Q_INTERFACES(QDesignerCustomWidgetInterface)
283 explicit DetailsWidget_CW(QObject *parent = 0);
284 QString domXml() const;
285 void initialize(QDesignerFormEditorInterface *core);
288 class DetailsWidgetContainerExtension: public QObject,
289 public QDesignerContainerExtension
292 Q_INTERFACES(QDesignerContainerExtension)
294 explicit DetailsWidgetContainerExtension(Utils::DetailsWidget *widget, QObject *parent);
296 void addWidget(QWidget *widget);
298 int currentIndex() const;
299 void insertWidget(int index, QWidget *widget);
300 void remove(int index);
301 void setCurrentIndex(int index);
302 QWidget *widget(int index) const;
305 Utils::DetailsWidget *m_detailsWidget;
308 class DetailsWidgetExtensionFactory: public QExtensionFactory
312 explicit DetailsWidgetExtensionFactory(QExtensionManager *parent = 0);
315 QObject *createExtension(QObject *object, const QString &iid, QObject *parent) const;
318 // ------------ Collection
320 class WidgetCollection : public QObject, public QDesignerCustomWidgetCollectionInterface
323 Q_INTERFACES(QDesignerCustomWidgetCollectionInterface)
325 explicit WidgetCollection(QObject *parent = 0);
327 virtual QList<QDesignerCustomWidgetInterface*> customWidgets() const;
330 QList<QDesignerCustomWidgetInterface*> m_plugins;
333 #endif // CUSTOMWIDGETS_H