2009-02-25 09:15:00 +01:00
|
|
|
/**************************************************************************
|
2008-12-02 12:01:29 +01:00
|
|
|
**
|
|
|
|
|
** This file is part of Qt Creator
|
|
|
|
|
**
|
2010-03-05 11:25:49 +01:00
|
|
|
** Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
|
2008-12-02 12:01:29 +01:00
|
|
|
**
|
2009-06-17 00:01:27 +10:00
|
|
|
** Contact: Nokia Corporation (qt-info@nokia.com)
|
2008-12-02 12:01:29 +01:00
|
|
|
**
|
2009-02-25 09:15:00 +01:00
|
|
|
** Commercial Usage
|
2008-12-02 14:17:16 +01:00
|
|
|
**
|
2009-02-25 09:15:00 +01:00
|
|
|
** Licensees holding valid Qt Commercial licenses may use this file in
|
|
|
|
|
** accordance with the Qt Commercial License Agreement provided with the
|
|
|
|
|
** Software or, alternatively, in accordance with the terms contained in
|
|
|
|
|
** a written agreement between you and Nokia.
|
2008-12-02 14:17:16 +01:00
|
|
|
**
|
2009-02-25 09:15:00 +01:00
|
|
|
** GNU Lesser General Public License Usage
|
2008-12-02 14:17:16 +01:00
|
|
|
**
|
2009-02-25 09:15:00 +01:00
|
|
|
** 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.
|
2008-12-02 14:17:16 +01:00
|
|
|
**
|
2009-02-25 09:15:00 +01:00
|
|
|
** If you are unsure which license is appropriate for your use, please
|
2009-08-14 09:30:56 +02:00
|
|
|
** contact the sales department at http://qt.nokia.com/contact.
|
2008-12-02 12:01:29 +01:00
|
|
|
**
|
2009-02-25 09:15:00 +01:00
|
|
|
**************************************************************************/
|
2008-12-02 12:01:29 +01:00
|
|
|
|
|
|
|
|
#include "customwidgets.h"
|
|
|
|
|
|
|
|
|
|
#include <QtGui/QMenu>
|
|
|
|
|
#include <QtGui/QAction>
|
2009-10-02 10:12:32 +02:00
|
|
|
#include <QtDesigner/QExtensionManager>
|
|
|
|
|
#include <QtDesigner/QDesignerFormEditorInterface>
|
2008-12-02 12:01:29 +01:00
|
|
|
|
|
|
|
|
static const char *groupC = "QtCreator";
|
|
|
|
|
|
|
|
|
|
NewClassCustomWidget::NewClassCustomWidget(QObject *parent) :
|
|
|
|
|
QObject(parent),
|
2009-10-05 11:06:05 +02:00
|
|
|
CustomWidget<Utils::NewClassWidget>
|
2008-12-02 12:01:29 +01:00
|
|
|
(QLatin1String("<utils/newclasswidget.h>"),
|
|
|
|
|
false,
|
|
|
|
|
QLatin1String(groupC),
|
|
|
|
|
QIcon(),
|
2009-04-08 16:35:56 +02:00
|
|
|
QLatin1String("Widget to enter classes and source files"))
|
2008-12-02 12:01:29 +01:00
|
|
|
{
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
ClassNameValidatingLineEdit_CW::ClassNameValidatingLineEdit_CW(QObject *parent) :
|
|
|
|
|
QObject(parent),
|
2009-10-05 11:06:05 +02:00
|
|
|
CustomWidget<Utils::ClassNameValidatingLineEdit>
|
2008-12-02 12:01:29 +01:00
|
|
|
(QLatin1String("<utils/classnamevalidatinglineedit.h>"),
|
|
|
|
|
false,
|
|
|
|
|
QLatin1String(groupC),
|
|
|
|
|
QIcon(),
|
2009-04-08 16:35:56 +02:00
|
|
|
QLatin1String("Line Edit that validates a class name"))
|
2008-12-02 12:01:29 +01:00
|
|
|
{
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
FileNameValidatingLineEdit_CW::FileNameValidatingLineEdit_CW(QObject *parent) :
|
|
|
|
|
QObject(parent),
|
2009-10-05 11:06:05 +02:00
|
|
|
CustomWidget<Utils::FileNameValidatingLineEdit>
|
2008-12-02 12:01:29 +01:00
|
|
|
(QLatin1String("<utils/filenamevalidatinglineedit.h>"),
|
|
|
|
|
false,
|
|
|
|
|
QLatin1String(groupC),
|
|
|
|
|
QIcon(),
|
2009-04-08 16:35:56 +02:00
|
|
|
QLatin1String("Line Edit that validates a file name"))
|
2008-12-02 12:01:29 +01:00
|
|
|
{
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
ProjectNameValidatingLineEdit_CW::ProjectNameValidatingLineEdit_CW(QObject *parent) :
|
|
|
|
|
QObject(parent),
|
2009-10-05 11:06:05 +02:00
|
|
|
CustomWidget<Utils::ProjectNameValidatingLineEdit>
|
2008-12-02 12:01:29 +01:00
|
|
|
(QLatin1String("<utils/projectnamevalidatinglineedit.h>"),
|
|
|
|
|
false,
|
|
|
|
|
QLatin1String(groupC),
|
|
|
|
|
QIcon(),
|
2009-04-08 16:35:56 +02:00
|
|
|
QLatin1String("Line Edit that validates a project name"))
|
2008-12-02 12:01:29 +01:00
|
|
|
{
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
LineColumnLabel_CW::LineColumnLabel_CW(QObject *parent) :
|
|
|
|
|
QObject(parent),
|
2009-10-05 11:06:05 +02:00
|
|
|
CustomWidget<Utils::LineColumnLabel>
|
2008-12-02 12:01:29 +01:00
|
|
|
(QLatin1String("<utils/linecolumnlabel.h>"),
|
|
|
|
|
false,
|
|
|
|
|
QLatin1String(groupC),
|
|
|
|
|
QIcon(),
|
2009-04-08 16:35:56 +02:00
|
|
|
QLatin1String("Label suited for displaying line numbers with a fixed with depending on the font size"),
|
2008-12-02 12:01:29 +01:00
|
|
|
QSize(100, 20))
|
|
|
|
|
{
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
PathChooser_CW::PathChooser_CW(QObject *parent) :
|
|
|
|
|
QObject(parent),
|
2009-10-05 11:06:05 +02:00
|
|
|
CustomWidget<Utils::PathChooser>
|
2008-12-02 12:01:29 +01:00
|
|
|
(QLatin1String("<utils/pathchooser.h>"),
|
|
|
|
|
false,
|
|
|
|
|
QLatin1String(groupC),
|
|
|
|
|
QIcon(),
|
2009-04-08 16:35:56 +02:00
|
|
|
QLatin1String("Input widget for paths with a browse button"))
|
2008-12-02 12:01:29 +01:00
|
|
|
{
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
FancyLineEdit_CW::FancyLineEdit_CW(QObject *parent) :
|
|
|
|
|
QObject(parent),
|
2009-10-05 11:06:05 +02:00
|
|
|
CustomWidget<Utils::FancyLineEdit>
|
2008-12-02 12:01:29 +01:00
|
|
|
(QLatin1String("<utils/fancylineedit.h>"),
|
|
|
|
|
false,
|
|
|
|
|
QLatin1String(groupC),
|
|
|
|
|
QIcon(),
|
2009-04-08 16:35:56 +02:00
|
|
|
QLatin1String("A Line edit with a clickable menu pixmap"))
|
2008-12-02 12:01:29 +01:00
|
|
|
{
|
|
|
|
|
}
|
|
|
|
|
|
2009-11-27 13:54:27 +01:00
|
|
|
FilterLineEdit_CW::FilterLineEdit_CW(QObject *parent) :
|
|
|
|
|
QObject(parent),
|
|
|
|
|
CustomWidget<Utils::FilterLineEdit>
|
|
|
|
|
(QLatin1String("<utils/filterlineedit.h>"),
|
|
|
|
|
false,
|
|
|
|
|
QLatin1String(groupC),
|
|
|
|
|
QIcon(),
|
|
|
|
|
QLatin1String("A Line edit customized for filtering"))
|
|
|
|
|
{
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
2008-12-02 12:01:29 +01:00
|
|
|
QtColorButton_CW::QtColorButton_CW(QObject *parent) :
|
|
|
|
|
QObject(parent),
|
2009-10-05 11:06:05 +02:00
|
|
|
CustomWidget<Utils::QtColorButton>
|
2008-12-02 12:01:29 +01:00
|
|
|
(QLatin1String("<utils/qtcolorbutton.h>"),
|
|
|
|
|
false,
|
|
|
|
|
QLatin1String(groupC),
|
|
|
|
|
QIcon(),
|
2009-04-08 16:35:56 +02:00
|
|
|
QLatin1String("A color button that spawns a QColorDialog on click"))
|
2008-12-02 12:01:29 +01:00
|
|
|
{
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
QWidget *FancyLineEdit_CW::createWidget(QWidget *parent)
|
|
|
|
|
{
|
2009-10-05 11:06:05 +02:00
|
|
|
Utils::FancyLineEdit *fle = new Utils::FancyLineEdit(parent);
|
2008-12-02 12:01:29 +01:00
|
|
|
QMenu *menu = new QMenu(fle);
|
|
|
|
|
menu->addAction("Test");
|
|
|
|
|
fle->setMenu(menu);
|
|
|
|
|
return fle;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
SubmitEditorWidget_CW::SubmitEditorWidget_CW(QObject *parent) :
|
|
|
|
|
QObject(parent),
|
2009-10-05 11:06:05 +02:00
|
|
|
CustomWidget<Utils::SubmitEditorWidget>
|
2008-12-02 12:01:29 +01:00
|
|
|
(QLatin1String("<utils/submiteditorwidget.h>"),
|
|
|
|
|
false,
|
|
|
|
|
QLatin1String(groupC),
|
|
|
|
|
QIcon(),
|
2009-04-08 16:35:56 +02:00
|
|
|
QLatin1String("Submit editor showing message and file list"))
|
2008-12-02 12:01:29 +01:00
|
|
|
{
|
|
|
|
|
}
|
|
|
|
|
|
2009-03-23 12:03:20 +01:00
|
|
|
SubmitFieldWidget_CW::SubmitFieldWidget_CW(QObject *parent) :
|
|
|
|
|
QObject(parent),
|
2009-10-05 11:06:05 +02:00
|
|
|
CustomWidget<Utils::SubmitFieldWidget>
|
2009-03-23 12:03:20 +01:00
|
|
|
(QLatin1String("<utils/submitfieldwidget.h>"),
|
|
|
|
|
false,
|
|
|
|
|
QLatin1String(groupC),
|
|
|
|
|
QIcon(),
|
2009-04-08 16:35:56 +02:00
|
|
|
QLatin1String("Show predefined fields of a submit message in a control based on mail address controls"))
|
2009-03-23 12:03:20 +01:00
|
|
|
{
|
|
|
|
|
}
|
|
|
|
|
|
2009-05-08 12:21:18 +02:00
|
|
|
PathListEditor_CW::PathListEditor_CW(QObject *parent) :
|
|
|
|
|
QObject(parent),
|
2009-10-05 11:06:05 +02:00
|
|
|
CustomWidget<Utils::PathListEditor>
|
2009-05-08 12:21:18 +02:00
|
|
|
(QLatin1String("<utils/pathlisteditor.h>"),
|
|
|
|
|
false,
|
|
|
|
|
QLatin1String(groupC),
|
|
|
|
|
QIcon(),
|
|
|
|
|
QLatin1String("Edit a path list variable"))
|
|
|
|
|
{
|
|
|
|
|
}
|
|
|
|
|
|
2009-10-02 10:12:32 +02:00
|
|
|
DetailsButton_CW::DetailsButton_CW(QObject *parent) :
|
|
|
|
|
QObject(parent),
|
|
|
|
|
CustomWidget<Utils::DetailsButton>
|
|
|
|
|
(QLatin1String("<utils/detailsbutton.h>"),
|
|
|
|
|
false,
|
|
|
|
|
QLatin1String(groupC),
|
|
|
|
|
QIcon(),
|
|
|
|
|
QLatin1String("Expandable button for 'Details'"))
|
|
|
|
|
{
|
|
|
|
|
}
|
|
|
|
|
|
2010-03-31 10:13:05 +02:00
|
|
|
StyledBar_CW::StyledBar_CW(QObject *parent) :
|
|
|
|
|
QObject(parent),
|
|
|
|
|
CustomWidget<Utils::StyledBar>
|
|
|
|
|
(QLatin1String("<utils/styledbar.h>"),
|
|
|
|
|
false,
|
|
|
|
|
QLatin1String(groupC),
|
|
|
|
|
QIcon(),
|
|
|
|
|
QLatin1String("Styled bar"))
|
|
|
|
|
{
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
StyledSeparator_CW::StyledSeparator_CW(QObject *parent) :
|
|
|
|
|
QObject(parent),
|
|
|
|
|
CustomWidget<Utils::StyledSeparator>
|
|
|
|
|
(QLatin1String("<utils/styledbar.h>"),
|
|
|
|
|
false,
|
|
|
|
|
QLatin1String(groupC),
|
|
|
|
|
QIcon(),
|
|
|
|
|
QLatin1String("Styled separator"))
|
|
|
|
|
{
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
Wizard_CW::Wizard_CW(QObject *parent) :
|
|
|
|
|
QObject(parent),
|
|
|
|
|
CustomWidget<Utils::Wizard>
|
|
|
|
|
(QLatin1String("<utils/wizard.h>"),
|
|
|
|
|
true,
|
|
|
|
|
QLatin1String(groupC),
|
|
|
|
|
QIcon(),
|
|
|
|
|
QLatin1String("Wizard with progress indicator"))
|
|
|
|
|
{
|
|
|
|
|
}
|
|
|
|
|
|
2009-10-02 10:12:32 +02:00
|
|
|
DetailsWidget_CW::DetailsWidget_CW(QObject *parent) :
|
|
|
|
|
QObject(parent),
|
|
|
|
|
CustomWidget<Utils::DetailsWidget>
|
|
|
|
|
(QLatin1String("<utils/detailswidget.h>"),
|
|
|
|
|
true,
|
|
|
|
|
QLatin1String(groupC),
|
|
|
|
|
QIcon(),
|
|
|
|
|
QLatin1String("Expandable widget for 'Details'. You might need an expandable spacer below."))
|
|
|
|
|
{
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
QString DetailsWidget_CW::domXml() const
|
|
|
|
|
{
|
|
|
|
|
// Expanded from start, else child visibility is wrong
|
|
|
|
|
const char *xmlC ="\
|
|
|
|
|
<ui language=\"c++\" displayname=\"DetailsWidget\">\
|
|
|
|
|
<widget class=\"Utils::DetailsWidget\" name=\"detailsWidget\">\
|
|
|
|
|
<property name=\"geometry\">\
|
|
|
|
|
<rect><x>0</x><y>0</y><width>160</width><height>80</height></rect>\
|
|
|
|
|
</property>\
|
|
|
|
|
<property name=\"summaryText\">\
|
|
|
|
|
<string>Summary</string>\
|
|
|
|
|
</property>\
|
|
|
|
|
<property name=\"expanded\">\
|
|
|
|
|
<bool>true</bool>\
|
|
|
|
|
</property>\
|
|
|
|
|
<widget class=\"QWidget\" name=\"detailsContainer\" />\
|
|
|
|
|
</widget>\
|
|
|
|
|
<customwidgets>\
|
|
|
|
|
<customwidget>\
|
|
|
|
|
<class>Utils::DetailsWidget</class>\
|
|
|
|
|
<addpagemethod>setWidget</addpagemethod>\
|
|
|
|
|
</customwidget>\
|
|
|
|
|
</customwidgets>\
|
|
|
|
|
</ui>";
|
|
|
|
|
return QLatin1String(xmlC);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void DetailsWidget_CW::initialize(QDesignerFormEditorInterface *core)
|
|
|
|
|
{
|
|
|
|
|
const bool firstTime = !initialized();
|
2010-01-29 21:33:57 +01:00
|
|
|
CustomWidget<Utils::DetailsWidget>::initialize(core);
|
2009-10-02 10:12:32 +02:00
|
|
|
if (firstTime)
|
|
|
|
|
if (QExtensionManager *manager = core->extensionManager())
|
|
|
|
|
manager->registerExtensions(new DetailsWidgetExtensionFactory(manager), Q_TYPEID(QDesignerContainerExtension));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
DetailsWidgetContainerExtension::DetailsWidgetContainerExtension(Utils::DetailsWidget *widget, QObject *parent) :
|
|
|
|
|
QObject(parent),
|
|
|
|
|
m_detailsWidget(widget)
|
|
|
|
|
{
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void DetailsWidgetContainerExtension::addWidget(QWidget *widget)
|
|
|
|
|
{
|
|
|
|
|
if (m_detailsWidget->widget()) {
|
|
|
|
|
qWarning("Cannot add 2nd child to DetailsWidget");
|
|
|
|
|
} else {
|
|
|
|
|
m_detailsWidget->setWidget(widget);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
int DetailsWidgetContainerExtension::count() const
|
|
|
|
|
{
|
|
|
|
|
return m_detailsWidget->widget() ? 1 : 0;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
int DetailsWidgetContainerExtension::currentIndex() const
|
|
|
|
|
{
|
|
|
|
|
return 0;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void DetailsWidgetContainerExtension::insertWidget(int /* index */, QWidget *widget)
|
|
|
|
|
{
|
|
|
|
|
addWidget(widget);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void DetailsWidgetContainerExtension::remove(int /* index */)
|
|
|
|
|
{
|
|
|
|
|
m_detailsWidget->setWidget(0);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void DetailsWidgetContainerExtension::setCurrentIndex(int /* index */)
|
|
|
|
|
{
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
QWidget *DetailsWidgetContainerExtension::widget(int /* index */) const
|
|
|
|
|
{
|
|
|
|
|
return m_detailsWidget->widget();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
DetailsWidgetExtensionFactory::DetailsWidgetExtensionFactory(QExtensionManager *parent) :
|
|
|
|
|
QExtensionFactory(parent)
|
|
|
|
|
{
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
QObject *DetailsWidgetExtensionFactory::createExtension(QObject *object, const QString &iid, QObject *parent) const
|
|
|
|
|
{
|
|
|
|
|
if (Utils::DetailsWidget *dw = qobject_cast<Utils::DetailsWidget*>(object))
|
|
|
|
|
if (iid == Q_TYPEID(QDesignerContainerExtension))
|
|
|
|
|
return new DetailsWidgetContainerExtension(dw, parent);
|
|
|
|
|
return 0;
|
|
|
|
|
}
|
|
|
|
|
|
2008-12-02 12:01:29 +01:00
|
|
|
// -------------- WidgetCollection
|
|
|
|
|
WidgetCollection::WidgetCollection(QObject *parent) :
|
|
|
|
|
QObject(parent)
|
|
|
|
|
{
|
|
|
|
|
m_plugins.push_back(new NewClassCustomWidget(this));
|
|
|
|
|
m_plugins.push_back(new ClassNameValidatingLineEdit_CW(this));
|
|
|
|
|
m_plugins.push_back(new FileNameValidatingLineEdit_CW(this));
|
|
|
|
|
m_plugins.push_back(new ProjectNameValidatingLineEdit_CW(this));
|
|
|
|
|
m_plugins.push_back(new LineColumnLabel_CW(this));
|
|
|
|
|
m_plugins.push_back(new PathChooser_CW(this));
|
|
|
|
|
m_plugins.push_back(new FancyLineEdit_CW(this));
|
2009-11-27 13:54:27 +01:00
|
|
|
m_plugins.push_back(new FilterLineEdit_CW(this));
|
2008-12-02 12:01:29 +01:00
|
|
|
m_plugins.push_back(new QtColorButton_CW(this));
|
|
|
|
|
m_plugins.push_back(new SubmitEditorWidget_CW(this));
|
2009-03-23 12:03:20 +01:00
|
|
|
m_plugins.push_back(new SubmitFieldWidget_CW(this));
|
2009-05-08 12:21:18 +02:00
|
|
|
m_plugins.push_back(new PathListEditor_CW(this));
|
2009-10-02 10:12:32 +02:00
|
|
|
m_plugins.push_back(new DetailsButton_CW(this));
|
|
|
|
|
m_plugins.push_back(new DetailsWidget_CW(this));
|
2010-03-31 10:13:05 +02:00
|
|
|
m_plugins.push_back(new StyledBar_CW(this));
|
|
|
|
|
m_plugins.push_back(new StyledSeparator_CW(this));
|
|
|
|
|
m_plugins.push_back(new Wizard_CW(this));
|
2008-12-02 12:01:29 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
QList<QDesignerCustomWidgetInterface*> WidgetCollection::customWidgets() const
|
|
|
|
|
{
|
|
|
|
|
return m_plugins;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
Q_EXPORT_PLUGIN(WidgetCollection)
|