diff options
author | Tobias Hunger <tobias.hunger@digia.com> | 2014-05-30 13:21:48 +0200 |
---|---|---|
committer | Tobias Hunger <tobias.hunger@digia.com> | 2014-06-12 16:29:39 +0200 |
commit | 0888390b09d8d437653201de9a5a9ea7cf9810a8 (patch) | |
tree | 5b0e669868441046d7ffd0a96409f39eab99d5e2 | |
parent | 4b00a2bf55bdc88cb13db6590885c6a5ac0431d7 (diff) | |
download | qt-creator-0888390b09d8d437653201de9a5a9ea7cf9810a8.tar.gz |
Remove IWizardFactory::Data
It makes the code more complicated in one place just to make it harder
to follow in another...
Remove CustomWizardParameters::toString() while at it: It would need some
extending to work with this change and I do not think it is worth it, considering
that it is only used when the CustomWizard is set to verbose.
Change-Id: Ice14b197ed2fe98c54bc9c1c55ece3ed2222fbbf
Reviewed-by: Orgad Shaneh <orgads@gmail.com>
5 files changed, 81 insertions, 139 deletions
diff --git a/src/plugins/coreplugin/iwizardfactory.h b/src/plugins/coreplugin/iwizardfactory.h index b3da5a5eec..f32ac26d66 100644 --- a/src/plugins/coreplugin/iwizardfactory.h +++ b/src/plugins/coreplugin/iwizardfactory.h @@ -57,48 +57,30 @@ public: }; Q_DECLARE_FLAGS(WizardFlags, WizardFlag) - class CORE_EXPORT Data - { - public: - Data() : kind(IWizardFactory::FileWizard) {} - - IWizardFactory::WizardKind kind; - QIcon icon; - QString description; - QString displayName; - QString id; - QString category; - QString displayCategory; - FeatureSet requiredFeatures; - IWizardFactory::WizardFlags flags; - QString descriptionImage; - }; - IWizardFactory() { } - QString id() const { return m_data.id; } - WizardKind kind() const { return m_data.kind; } - QIcon icon() const { return m_data.icon; } - QString description() const { return m_data.description; } - QString displayName() const { return m_data.displayName; } - QString category() const { return m_data.category; } - QString displayCategory() const { return m_data.displayCategory; } - QString descriptionImage() const { return m_data.descriptionImage; } - FeatureSet requiredFeatures() const { return m_data.requiredFeatures; } - WizardFlags flags() const { return m_data.flags; } - - void setData(const Data &data) { m_data = data; } - void setId(const QString &id) { m_data.id = id; } - void setWizardKind(WizardKind kind) { m_data.kind = kind; } - void setIcon(const QIcon &icon) { m_data.icon = icon; } - void setDescription(const QString &description) { m_data.description = description; } - void setDisplayName(const QString &displayName) { m_data.displayName = displayName; } - void setCategory(const QString &category) { m_data.category = category; } - void setDisplayCategory(const QString &displayCategory) { m_data.displayCategory = displayCategory; } - void setDescriptionImage(const QString &descriptionImage) { m_data.descriptionImage = descriptionImage; } - void setRequiredFeatures(const FeatureSet &featureSet) { m_data.requiredFeatures = featureSet; } - void addRequiredFeature(const Feature &feature) { m_data.requiredFeatures |= feature; } - void setFlags(WizardFlags flags) { m_data.flags = flags; } + QString id() const { return m_id; } + WizardKind kind() const { return m_kind; } + QIcon icon() const { return m_icon; } + QString description() const { return m_description; } + QString displayName() const { return m_displayName; } + QString category() const { return m_category; } + QString displayCategory() const { return m_displayCategory; } + QString descriptionImage() const { return m_descriptionImage; } + FeatureSet requiredFeatures() const { return m_requiredFeatures; } + WizardFlags flags() const { return m_flags; } + + void setId(const QString &id) { m_id = id; } + void setWizardKind(WizardKind kind) { m_kind = kind; } + void setIcon(const QIcon &icon) { m_icon = icon; } + void setDescription(const QString &description) { m_description = description; } + void setDisplayName(const QString &displayName) { m_displayName = displayName; } + void setCategory(const QString &category) { m_category = category; } + void setDisplayCategory(const QString &displayCategory) { m_displayCategory = displayCategory; } + void setDescriptionImage(const QString &descriptionImage) { m_descriptionImage = descriptionImage; } + void setRequiredFeatures(const FeatureSet &featureSet) { m_requiredFeatures = featureSet; } + void addRequiredFeature(const Feature &feature) { m_requiredFeatures |= feature; } + void setFlags(WizardFlags flags) { m_flags = flags; } virtual void runWizard(const QString &path, QWidget *parent, const QString &platform, const QVariantMap &variables) = 0; @@ -113,7 +95,16 @@ public: static QString displayNameForPlatform(const QString &string); private: - Data m_data; + IWizardFactory::WizardKind m_kind; + QIcon m_icon; + QString m_description; + QString m_displayName; + QString m_id; + QString m_category; + QString m_displayCategory; + FeatureSet m_requiredFeatures; + WizardFlags m_flags; + QString m_descriptionImage; }; } // namespace Core diff --git a/src/plugins/projectexplorer/customwizard/customwizard.cpp b/src/plugins/projectexplorer/customwizard/customwizard.cpp index a45beb2a0d..39ee682d88 100644 --- a/src/plugins/projectexplorer/customwizard/customwizard.cpp +++ b/src/plugins/projectexplorer/customwizard/customwizard.cpp @@ -113,7 +113,19 @@ int CustomWizard::verbose() void CustomWizard::setParameters(const CustomWizardParametersPtr &p) { + QTC_ASSERT(p, return); + d->m_parameters = p; + + setId(p->id); + setWizardKind(p->kind); + setIcon(p->icon); + setDescription(p->description); + setDisplayName(p->displayName); + setCategory(p->category); + setDisplayCategory(p->displayCategory); + setRequiredFeatures(p->requiredFeatures); + setFlags(p->flags); } Core::BaseFileWizard *CustomWizard::create(QWidget *parent, const Core::WizardDialogParameters &p) const @@ -307,13 +319,11 @@ CustomWizard::CustomWizardContextPtr CustomWizard::context() const return d->m_context; } -CustomWizard *CustomWizard::createWizard(const CustomProjectWizard::CustomWizardParametersPtr &p, - const Core::IWizardFactory::Data &b) +CustomWizard *CustomWizard::createWizard(const CustomProjectWizard::CustomWizardParametersPtr &p) { - ICustomWizardFactory * factory = ExtensionSystem::PluginManager::getObject<ICustomWizardFactory>( - [&p, &b](ICustomWizardFactory *factory) { - return ((p->klass.isEmpty() && b.kind == factory->kind()) - || (!p->klass.isEmpty() && p->klass == factory->klass())); + ICustomWizardFactory *factory = ExtensionSystem::PluginManager::getObject<ICustomWizardFactory>( + [&p](ICustomWizardFactory *factory) { + return p->klass.isEmpty() ? (p->kind == factory->kind()) : (p->klass == factory->klass()); }); CustomWizard *rc = 0; @@ -325,7 +335,6 @@ CustomWizard *CustomWizard::createWizard(const CustomProjectWizard::CustomWizard return 0; } - rc->setData(b); rc->setParameters(p); return rc; } @@ -413,20 +422,13 @@ QList<CustomWizard*> CustomWizard::createWizards() verboseLog += QString::fromLatin1("CustomWizard: Scanning %1\n").arg(dirFi.absoluteFilePath()); if (dir.exists(configFile)) { CustomWizardParametersPtr parameters(new Internal::CustomWizardParameters); - IWizardFactory::Data data; - switch (parameters->parse(dir.absoluteFilePath(configFile), &data, &errorMessage)) { + switch (parameters->parse(dir.absoluteFilePath(configFile), &errorMessage)) { case Internal::CustomWizardParameters::ParseOk: parameters->directory = dir.absolutePath(); - if (CustomWizardPrivate::verbose) - QTextStream(&verboseLog) - << "\n### Adding: " << data.id << " / " << data.displayName << '\n' - << data.category << " / " << data.displayCategory << '\n' - << " (" << data.description << ")\n" - << parameters->toString(); - if (CustomWizard *w = createWizard(parameters, data)) + if (CustomWizard *w = createWizard(parameters)) rc.push_back(w); else - qWarning("Custom wizard factory function failed for %s", qPrintable(data.id)); + qWarning("Custom wizard factory function failed for %s", qPrintable(parameters->id)); break; case Internal::CustomWizardParameters::ParseDisabled: if (CustomWizardPrivate::verbose) diff --git a/src/plugins/projectexplorer/customwizard/customwizard.h b/src/plugins/projectexplorer/customwizard/customwizard.h index 733abd5aae..d00c2894df 100644 --- a/src/plugins/projectexplorer/customwizard/customwizard.h +++ b/src/plugins/projectexplorer/customwizard/customwizard.h @@ -120,12 +120,11 @@ protected: CustomWizardParametersPtr parameters() const; CustomWizardContextPtr context() const; - static CustomWizard *createWizard(const CustomWizardParametersPtr &p, const Core::IWizardFactory::Data &b); + static CustomWizard *createWizard(const CustomWizardParametersPtr &p); private: void setParameters(const CustomWizardParametersPtr &p); - static CustomWizard *createWizard(const CustomWizardParametersPtr &p); CustomWizardPrivate *d; }; diff --git a/src/plugins/projectexplorer/customwizard/customwizardparameters.cpp b/src/plugins/projectexplorer/customwizard/customwizardparameters.cpp index 81fedc8436..e389d0b5ef 100644 --- a/src/plugins/projectexplorer/customwizard/customwizardparameters.cpp +++ b/src/plugins/projectexplorer/customwizard/customwizardparameters.cpp @@ -272,8 +272,7 @@ static inline bool assignLanguageElementText(QXmlStreamReader &reader, static bool parseCustomProjectElement(QXmlStreamReader &reader, const QString &configFileFullPath, const QString &language, - CustomWizardParameters *p, - IWizardFactory::Data *bp) + CustomWizardParameters *p) { const QStringRef elementName = reader.name(); if (elementName == QLatin1String(iconElementC)) { @@ -283,20 +282,20 @@ static bool parseCustomProjectElement(QXmlStreamReader &reader, qWarning("Invalid icon path '%s' encountered in custom project template %s.", qPrintable(path), qPrintable(configFileFullPath)); } else { - bp->icon = icon; + p->icon = icon; } return true; } if (elementName == QLatin1String(descriptionElementC)) { - assignLanguageElementText(reader, language, &bp->description); + assignLanguageElementText(reader, language, &p->description); return true; } if (elementName == QLatin1String(displayNameElementC)) { - assignLanguageElementText(reader, language, &bp->displayName); + assignLanguageElementText(reader, language, &p->displayName); return true; } if (elementName == QLatin1String(displayCategoryElementC)) { - assignLanguageElementText(reader, language, &bp->displayCategory); + assignLanguageElementText(reader, language, &p->displayCategory); return true; } if (elementName == QLatin1String(fieldPageTitleElementC)) { @@ -460,7 +459,7 @@ static inline IWizardFactory::WizardKind kindAttribute(const QXmlStreamReader &r return IWizardFactory::ProjectWizard; } -static inline FeatureSet requiredFeatures(const QXmlStreamReader &reader) +static inline FeatureSet readRequiredFeatures(const QXmlStreamReader &reader) { QString value = reader.attributes().value(QLatin1String(featuresRequiredC)).toString(); QStringList stringList = value.split(QLatin1Char(','), QString::SkipEmptyParts); @@ -550,18 +549,15 @@ GeneratorScriptArgument::GeneratorScriptArgument(const QString &v) : // Main parsing routine CustomWizardParameters::ParseResult - CustomWizardParameters::parse(QIODevice &device, - const QString &configFileFullPath, - IWizardFactory::Data *bp, - QString *errorMessage) +CustomWizardParameters::parse(QIODevice &device, const QString &configFileFullPath, + QString *errorMessage) { int comboEntryCount = 0; QXmlStreamReader reader(&device); QXmlStreamReader::TokenType token = QXmlStreamReader::EndDocument; ParseState state = ParseBeginning; clear(); - *bp = IWizardFactory::Data(); - bp->kind = IWizardFactory::ProjectWizard; + kind = IWizardFactory::ProjectWizard; const QString language = languageSetting(); CustomWizardField field; do { @@ -573,7 +569,7 @@ CustomWizardParameters::ParseResult case QXmlStreamReader::StartElement: do { // Read out subelements applicable to current state - if (state == ParseWithinWizard && parseCustomProjectElement(reader, configFileFullPath, language, this, bp)) + if (state == ParseWithinWizard && parseCustomProjectElement(reader, configFileFullPath, language, this)) break; // switch to next state state = nextOpeningState(state, reader.name()); @@ -586,12 +582,11 @@ CustomWizardParameters::ParseResult case ParseWithinWizard: if (!booleanAttributeValue(reader, wizardEnabledAttributeC, true)) return ParseDisabled; - bp->id = attributeValue(reader, idAttributeC); - id = bp->id; - bp->category = attributeValue(reader, categoryAttributeC); - bp->kind = kindAttribute(reader); - bp->requiredFeatures = requiredFeatures(reader); - bp->flags = wizardFlags(reader); + id = attributeValue(reader, idAttributeC); + category = attributeValue(reader, categoryAttributeC); + kind = kindAttribute(reader); + requiredFeatures = readRequiredFeatures(reader); + flags = wizardFlags(reader); klass = attributeValue(reader, klassAttributeC); firstPageId = integerAttributeValue(reader, firstPageAttributeC, -1); break; @@ -704,67 +699,14 @@ CustomWizardParameters::ParseResult } CustomWizardParameters::ParseResult - CustomWizardParameters::parse(const QString &configFileFullPath, - IWizardFactory::Data *bp, - QString *errorMessage) +CustomWizardParameters::parse(const QString &configFileFullPath, QString *errorMessage) { QFile configFile(configFileFullPath); if (!configFile.open(QIODevice::ReadOnly|QIODevice::Text)) { *errorMessage = QString::fromLatin1("Cannot open %1: %2").arg(configFileFullPath, configFile.errorString()); return ParseFailed; } - return parse(configFile, configFileFullPath, bp, errorMessage); -} - -QString CustomWizardParameters::toString() const -{ - QString rc; - QTextStream str(&rc); - str << "Directory: " << directory << " Klass: '" << klass << "'\n"; - if (!filesGeneratorScriptArguments.isEmpty()) { - str << "Script:"; - foreach (const QString &a, filesGeneratorScript) - str << " '" << a << '\''; - if (!filesGeneratorScriptWorkingDirectory.isEmpty()) - str << "\nrun in '" << filesGeneratorScriptWorkingDirectory << '\''; - str << "\nArguments: "; - foreach (const GeneratorScriptArgument &a, filesGeneratorScriptArguments) { - str << " '" << a.value << '\''; - if (a.flags & GeneratorScriptArgument::OmitEmpty) - str << " [omit empty]"; - if (a.flags & GeneratorScriptArgument::WriteFile) - str << " [write file]"; - str << ','; - } - str << '\n'; - } - foreach (const CustomWizardFile &f, files) { - str << " File source: " << f.source << " Target: " << f.target; - if (f.openEditor) - str << " [editor]"; - if (f.openProject) - str << " [project]"; - if (f.binary) - str << " [binary]"; - str << '\n'; - } - foreach (const CustomWizardField &f, fields) { - str << " Field name: " << f.name; - if (f.mandatory) - str << '*'; - str << " Description: '" << f.description << '\''; - if (!f.controlAttributes.isEmpty()) { - typedef CustomWizardField::ControlAttributeMap::const_iterator AttrMapConstIt; - str << " Control: "; - const AttrMapConstIt cend = f.controlAttributes.constEnd(); - for (AttrMapConstIt it = f.controlAttributes.constBegin(); it != cend; ++it) - str << '\'' << it.key() << "' -> '" << it.value() << "' "; - } - str << '\n'; - } - foreach (const CustomWizardValidationRule &r, rules) - str << " Rule: '" << r.condition << "'->'" << r.message << '\n'; - return rc; + return parse(configFile, configFileFullPath, errorMessage); } // ------------ CustomWizardContext diff --git a/src/plugins/projectexplorer/customwizard/customwizardparameters.h b/src/plugins/projectexplorer/customwizard/customwizardparameters.h index d9f5ab61ae..bd7c1e2f10 100644 --- a/src/plugins/projectexplorer/customwizard/customwizardparameters.h +++ b/src/plugins/projectexplorer/customwizard/customwizardparameters.h @@ -107,10 +107,8 @@ public: CustomWizardParameters(); void clear(); ParseResult parse(QIODevice &device, const QString &configFileFullPath, - Core::IWizardFactory::Data *bp, QString *errorMessage); - ParseResult parse(const QString &configFileFullPath, - Core::IWizardFactory::Data *bp, QString *errorMessage); - QString toString() const; + QString *errorMessage); + ParseResult parse(const QString &configFileFullPath, QString *errorMessage); QString id; QString directory; @@ -124,6 +122,16 @@ public: QList<CustomWizardField> fields; QList<CustomWizardValidationRule> rules; int firstPageId; + + // Wizard Factory data: + Core::IWizardFactory::WizardKind kind; + QIcon icon; + QString description; + QString displayName; + QString category; + QString displayCategory; + Core::FeatureSet requiredFeatures; + Core::IWizardFactory::WizardFlags flags; }; // Documentation inside. |