// Copyright (C) 2016 The Qt Company Ltd. // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0 #include "customwidgets.h" #include #include #include #include static const char groupC[] = "QtCreator"; NewClassCustomWidget::NewClassCustomWidget(QObject *parent) : QObject(parent), CustomWidget (QLatin1String(""), false, QLatin1String(groupC), QIcon(), QLatin1String("Widget to enter classes and source files")) { } ClassNameValidatingLineEdit_CW::ClassNameValidatingLineEdit_CW(QObject *parent) : QObject(parent), CustomWidget (QLatin1String(""), false, QLatin1String(groupC), QIcon(), QLatin1String("Line Edit that validates a class name")) { } FileNameValidatingLineEdit_CW::FileNameValidatingLineEdit_CW(QObject *parent) : QObject(parent), CustomWidget (QLatin1String(""), false, QLatin1String(groupC), QIcon(), QLatin1String("Line Edit that validates a file name")) { } ProjectNameValidatingLineEdit_CW::ProjectNameValidatingLineEdit_CW(QObject *parent) : QObject(parent), CustomWidget (QLatin1String(""), false, QLatin1String(groupC), QIcon(), QLatin1String("Line Edit that validates a project name")) { } LineColumnLabel_CW::LineColumnLabel_CW(QObject *parent) : QObject(parent), CustomWidget (QLatin1String(""), false, QLatin1String(groupC), QIcon(), QLatin1String("Label suited for displaying line numbers with a fixed with depending on the font size"), QSize(100, 20)) { } PathChooser_CW::PathChooser_CW(QObject *parent) : QObject(parent), CustomWidget (QLatin1String(""), false, QLatin1String(groupC), QIcon(), QLatin1String("Input widget for paths with a browse button")) { } IconButton_CW::IconButton_CW(QObject *parent) : QObject(parent), CustomWidget (QLatin1String(""), false, QLatin1String(groupC), QIcon(), QLatin1String("Icon button of FancyLineEdit")) { } FancyLineEdit_CW::FancyLineEdit_CW(QObject *parent) : QObject(parent), CustomWidget (QLatin1String(""), false, QLatin1String(groupC), QIcon(), QLatin1String("A Line edit with a clickable menu pixmap")) { } QtColorButton_CW::QtColorButton_CW(QObject *parent) : QObject(parent), CustomWidget (QLatin1String(""), false, QLatin1String(groupC), QIcon(), QLatin1String("A color button that spawns a QColorDialog on click")) { } QWidget *FancyLineEdit_CW::createWidget(QWidget *parent) { Utils::FancyLineEdit *fle = new Utils::FancyLineEdit(parent); fle->setButtonVisible(Utils::FancyLineEdit::Left, true); fle->setButtonPixmap(Utils::FancyLineEdit::Left, fle->style()->standardIcon(QStyle::SP_ArrowRight).pixmap(16)); QMenu *menu = new QMenu(fle); menu->addAction(QLatin1String("Example")); fle->setButtonMenu(Utils::FancyLineEdit::Left, menu); return fle; } SubmitEditorWidget_CW::SubmitEditorWidget_CW(QObject *parent) : QObject(parent), CustomWidget (QLatin1String(""), false, QLatin1String(groupC), QIcon(), QLatin1String("Submit editor showing message and file list")) { } SubmitFieldWidget_CW::SubmitFieldWidget_CW(QObject *parent) : QObject(parent), CustomWidget (QLatin1String(""), false, QLatin1String(groupC), QIcon(), QLatin1String("Show predefined fields of a submit message in a control based on mail address controls")) { } PathListEditor_CW::PathListEditor_CW(QObject *parent) : QObject(parent), CustomWidget (QLatin1String(""), false, QLatin1String(groupC), QIcon(), QLatin1String("Edit a path list variable")) { } DetailsButton_CW::DetailsButton_CW(QObject *parent) : QObject(parent), CustomWidget (QLatin1String(""), false, QLatin1String(groupC), QIcon(), QLatin1String("Expandable button for 'Details'")) { } StyledBar_CW::StyledBar_CW(QObject *parent) : QObject(parent), CustomWidget (QLatin1String(""), false, QLatin1String(groupC), QIcon(), QLatin1String("Styled bar")) { } StyledSeparator_CW::StyledSeparator_CW(QObject *parent) : QObject(parent), CustomWidget (QLatin1String(""), false, QLatin1String(groupC), QIcon(), QLatin1String("Styled separator")) { } Wizard_CW::Wizard_CW(QObject *parent) : QObject(parent), CustomWidget (QLatin1String(""), true, QLatin1String(groupC), QIcon(), QLatin1String("Wizard with progress indicator")) { } CrumblePath_CW::CrumblePath_CW(QObject *parent) : QObject(parent), CustomWidget (QLatin1String(""), false, QLatin1String(groupC), QIcon(), QLatin1String("Crumble Path")) { } DetailsWidget_CW::DetailsWidget_CW(QObject *parent) : QObject(parent), CustomWidget (QLatin1String(""), 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 ="\ \ \ \ 0016080\ \ \ Summary\ \ \ true\ \ \ \ \ \ Utils::DetailsWidget\ setWidget\ \ \ "; return QLatin1String(xmlC); } void DetailsWidget_CW::initialize(QDesignerFormEditorInterface *core) { const bool firstTime = !initialized(); CustomWidget::initialize(core); 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(object)) if (iid == Q_TYPEID(QDesignerContainerExtension)) return new DetailsWidgetContainerExtension(dw, parent); return 0; } // -------------- 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 IconButton_CW(this)); m_plugins.push_back(new FancyLineEdit_CW(this)); m_plugins.push_back(new FilterLineEdit_CW(this)); m_plugins.push_back(new QtColorButton_CW(this)); m_plugins.push_back(new SubmitEditorWidget_CW(this)); m_plugins.push_back(new SubmitFieldWidget_CW(this)); m_plugins.push_back(new PathListEditor_CW(this)); m_plugins.push_back(new DetailsButton_CW(this)); m_plugins.push_back(new DetailsWidget_CW(this)); m_plugins.push_back(new StyledBar_CW(this)); m_plugins.push_back(new StyledSeparator_CW(this)); m_plugins.push_back(new Wizard_CW(this)); m_plugins.push_back(new CrumblePath_CW(this)); } QList WidgetCollection::customWidgets() const { return m_plugins; } Q_EXPORT_PLUGIN(WidgetCollection)