diff --git a/src/plugins/designer/formeditorplugin.cpp b/src/plugins/designer/formeditorplugin.cpp index 77b1999a37c..f7a0fc965b9 100644 --- a/src/plugins/designer/formeditorplugin.cpp +++ b/src/plugins/designer/formeditorplugin.cpp @@ -31,6 +31,7 @@ #include "formeditorplugin.h" #include "formeditorfactory.h" #include "formeditorw.h" +#include "formtemplatewizardpage.h" #include "formwindoweditor.h" #include "formwizard.h" @@ -49,6 +50,7 @@ #include #include #include +#include #include #include @@ -84,6 +86,7 @@ bool FormEditorPlugin::initialize(const QStringList &arguments, QString *error) initializeTemplates(); + ProjectExplorer::JsonWizardFactory::registerPageFactory(new Internal::FormPageFactory); addAutoReleasedObject(new FormEditorFactory); addAutoReleasedObject(new SettingsPageProvider); addAutoReleasedObject(new QtDesignerFormClassCodeGenerator); diff --git a/src/plugins/designer/formtemplatewizardpage.cpp b/src/plugins/designer/formtemplatewizardpage.cpp index 05c4948c32e..6d5abd5d79b 100644 --- a/src/plugins/designer/formtemplatewizardpage.cpp +++ b/src/plugins/designer/formtemplatewizardpage.cpp @@ -31,8 +31,12 @@ #include "formtemplatewizardpage.h" #include "formeditorw.h" +#include + +#include #include +#include #include #include #include @@ -48,10 +52,39 @@ namespace Designer { namespace Internal { +FormPageFactory::FormPageFactory() +{ + setTypeIdsSuffix(QLatin1String("Form")); +} + +Utils::WizardPage *FormPageFactory::create(ProjectExplorer::JsonWizard *wizard, Core::Id typeId, + const QVariant &data) +{ + Q_UNUSED(wizard); + Q_UNUSED(data); + + QTC_ASSERT(canCreate(typeId), return 0); + + FormTemplateWizardPage *page = new FormTemplateWizardPage; + return page; +} + +bool FormPageFactory::validateData(Core::Id typeId, const QVariant &data, QString *errorMessage) +{ + QTC_ASSERT(canCreate(typeId), return false); + if (!data.isNull() && (data.type() != QVariant::Map || !data.toMap().isEmpty())) { + *errorMessage = QCoreApplication::translate("ProjectExplorer::JsonWizard", + "\"data\" for a \"Form\" page needs to be unset or an empty object."); + return false; + } + + return true; +} + // ----------------- FormTemplateWizardPage FormTemplateWizardPage::FormTemplateWizardPage(QWidget * parent) : - QWizardPage(parent), + Utils::WizardPage(parent), m_newFormWidget(QDesignerNewFormWidgetInterface::createNewFormWidget(FormEditorW::designerEditor())), m_templateSelected(m_newFormWidget->hasCurrentTemplate()) { @@ -89,6 +122,7 @@ bool FormTemplateWizardPage::validatePage() QMessageBox::critical(this, tr("%1 - Error").arg(title()), errorMessage); return false; } + wizard()->setProperty("FormContents", m_templateContents.replace(QLatin1Char('\n'), QLatin1String("\\n"))); return true; } diff --git a/src/plugins/designer/formtemplatewizardpage.h b/src/plugins/designer/formtemplatewizardpage.h index 433f970ad47..caaa5bc757f 100644 --- a/src/plugins/designer/formtemplatewizardpage.h +++ b/src/plugins/designer/formtemplatewizardpage.h @@ -31,7 +31,9 @@ #ifndef FORMTEMPLATEWIZARDPAGE_H #define FORMTEMPLATEWIZARDPAGE_H -#include +#include + +#include QT_BEGIN_NAMESPACE class QDesignerNewFormWidgetInterface; @@ -40,10 +42,22 @@ QT_END_NAMESPACE namespace Designer { namespace Internal { +class FormPageFactory : public ProjectExplorer::JsonWizardPageFactory +{ +public: + FormPageFactory(); + + Utils::WizardPage *create(ProjectExplorer::JsonWizard *wizard, Core::Id typeId, const QVariant &data); + + bool validateData(Core::Id typeId, const QVariant &data, QString *errorMessage); +}; + // A wizard page embedding Qt Designer's QDesignerNewFormWidgetInterface // widget. -class FormTemplateWizardPage : public QWizardPage +// Sets FormContents property. + +class FormTemplateWizardPage : public Utils::WizardPage { Q_OBJECT