diff options
Diffstat (limited to 'src/plugins/genericprojectmanager')
8 files changed, 353 insertions, 83 deletions
diff --git a/src/plugins/genericprojectmanager/genericbuildconfiguration.cpp b/src/plugins/genericprojectmanager/genericbuildconfiguration.cpp index 32d64b01f1..ae2ee4b530 100644 --- a/src/plugins/genericprojectmanager/genericbuildconfiguration.cpp +++ b/src/plugins/genericprojectmanager/genericbuildconfiguration.cpp @@ -31,6 +31,7 @@ #include "genericmakestep.h" #include "genericproject.h" +#include "generictarget.h" #include <utils/qtcassert.h> @@ -46,18 +47,18 @@ const char * const GENERIC_BC_ID("GenericProjectManager.GenericBuildConfiguratio const char * const BUILD_DIRECTORY_KEY("GenericProjectManager.GenericBuildConfiguration.BuildDirectory"); } -GenericBuildConfiguration::GenericBuildConfiguration(GenericProject *pro) - : BuildConfiguration(pro, QLatin1String(GENERIC_BC_ID)) +GenericBuildConfiguration::GenericBuildConfiguration(GenericTarget *parent) + : BuildConfiguration(parent, QLatin1String(GENERIC_BC_ID)) { } -GenericBuildConfiguration::GenericBuildConfiguration(GenericProject *pro, const QString &id) - : BuildConfiguration(pro, id) +GenericBuildConfiguration::GenericBuildConfiguration(GenericTarget *parent, const QString &id) + : BuildConfiguration(parent, id) { } -GenericBuildConfiguration::GenericBuildConfiguration(GenericProject *pro, GenericBuildConfiguration *source) : - BuildConfiguration(pro, source), +GenericBuildConfiguration::GenericBuildConfiguration(GenericTarget *parent, GenericBuildConfiguration *source) : + BuildConfiguration(parent, source), m_buildDirectory(source->m_buildDirectory) { } @@ -89,7 +90,7 @@ QString GenericBuildConfiguration::buildDirectory() const { QString buildDirectory = m_buildDirectory; if (buildDirectory.isEmpty()) { - QFileInfo fileInfo(project()->file()->fileName()); + QFileInfo fileInfo(target()->project()->file()->fileName()); buildDirectory = fileInfo.absolutePath(); } @@ -104,9 +105,9 @@ void GenericBuildConfiguration::setBuildDirectory(const QString &buildDirectory) emit buildDirectoryChanged(); } -GenericProject *GenericBuildConfiguration::genericProject() const +GenericTarget *GenericBuildConfiguration::genericTarget() const { - return static_cast<GenericProject *>(project()); + return static_cast<GenericTarget *>(target()); } @@ -123,9 +124,10 @@ GenericBuildConfigurationFactory::~GenericBuildConfigurationFactory() { } -QStringList GenericBuildConfigurationFactory::availableCreationIds(ProjectExplorer::Project *parent) const +QStringList GenericBuildConfigurationFactory::availableCreationIds(ProjectExplorer::Target *parent) const { - Q_UNUSED(parent); + if (!qobject_cast<GenericTarget *>(parent)) + return QStringList(); return QStringList() << QLatin1String(GENERIC_BC_ID); } @@ -136,20 +138,20 @@ QString GenericBuildConfigurationFactory::displayNameForId(const QString &id) co return QString(); } -bool GenericBuildConfigurationFactory::canCreate(ProjectExplorer::Project *parent, const QString &id) const +bool GenericBuildConfigurationFactory::canCreate(ProjectExplorer::Target *parent, const QString &id) const { - if (!qobject_cast<GenericProject *>(parent)) + if (!qobject_cast<GenericTarget *>(parent)) return false; if (id == QLatin1String(GENERIC_BC_ID)) return true; return false; } -BuildConfiguration *GenericBuildConfigurationFactory::create(ProjectExplorer::Project *parent, const QString &id) +BuildConfiguration *GenericBuildConfigurationFactory::create(ProjectExplorer::Target *parent, const QString &id) { if (!canCreate(parent, id)) return 0; - GenericProject *project(static_cast<GenericProject *>(parent)); + GenericTarget *target(static_cast<GenericTarget *>(parent)); //TODO asking for name is duplicated everywhere, but maybe more // wizards will show up, that incorporate choosing the name @@ -162,41 +164,42 @@ BuildConfiguration *GenericBuildConfigurationFactory::create(ProjectExplorer::Pr &ok); if (!ok || buildConfigurationName.isEmpty()) return false; - GenericBuildConfiguration *bc = new GenericBuildConfiguration(project); + GenericBuildConfiguration *bc = new GenericBuildConfiguration(target); bc->setDisplayName(buildConfigurationName); - project->addBuildConfiguration(bc); // also makes the name unique... GenericMakeStep *makeStep = new GenericMakeStep(bc); bc->insertBuildStep(0, makeStep); makeStep->setBuildTarget("all", /* on = */ true); + + target->addBuildConfiguration(bc); // also makes the name unique... return bc; } -bool GenericBuildConfigurationFactory::canClone(ProjectExplorer::Project *parent, ProjectExplorer::BuildConfiguration *source) const +bool GenericBuildConfigurationFactory::canClone(ProjectExplorer::Target *parent, ProjectExplorer::BuildConfiguration *source) const { return canCreate(parent, source->id()); } -BuildConfiguration *GenericBuildConfigurationFactory::clone(ProjectExplorer::Project *parent, BuildConfiguration *source) +BuildConfiguration *GenericBuildConfigurationFactory::clone(ProjectExplorer::Target *parent, BuildConfiguration *source) { if (!canClone(parent, source)) return 0; - GenericProject *project(static_cast<GenericProject *>(parent)); - return new GenericBuildConfiguration(project, qobject_cast<GenericBuildConfiguration *>(source)); + GenericTarget *target(static_cast<GenericTarget *>(parent)); + return new GenericBuildConfiguration(target, qobject_cast<GenericBuildConfiguration *>(source)); } -bool GenericBuildConfigurationFactory::canRestore(ProjectExplorer::Project *parent, const QVariantMap &map) const +bool GenericBuildConfigurationFactory::canRestore(ProjectExplorer::Target *parent, const QVariantMap &map) const { QString id(ProjectExplorer::idFromMap(map)); return canCreate(parent, id); } -BuildConfiguration *GenericBuildConfigurationFactory::restore(ProjectExplorer::Project *parent, const QVariantMap &map) +BuildConfiguration *GenericBuildConfigurationFactory::restore(ProjectExplorer::Target *parent, const QVariantMap &map) { if (!canRestore(parent, map)) return 0; - GenericProject *project(static_cast<GenericProject *>(parent)); - GenericBuildConfiguration *bc(new GenericBuildConfiguration(project)); + GenericTarget *target(static_cast<GenericTarget *>(parent)); + GenericBuildConfiguration *bc(new GenericBuildConfiguration(target)); if (bc->fromMap(map)) return bc; delete bc; diff --git a/src/plugins/genericprojectmanager/genericbuildconfiguration.h b/src/plugins/genericprojectmanager/genericbuildconfiguration.h index 722ca2e217..f22226f7eb 100644 --- a/src/plugins/genericprojectmanager/genericbuildconfiguration.h +++ b/src/plugins/genericprojectmanager/genericbuildconfiguration.h @@ -35,7 +35,7 @@ namespace GenericProjectManager { namespace Internal { -class GenericProject; +class GenericTarget; class GenericBuildConfigurationFactory; class GenericBuildConfiguration : public ProjectExplorer::BuildConfiguration @@ -44,10 +44,10 @@ class GenericBuildConfiguration : public ProjectExplorer::BuildConfiguration friend class GenericBuildConfigurationFactory; public: - explicit GenericBuildConfiguration(GenericProject *pro); + explicit GenericBuildConfiguration(GenericTarget *parent); virtual ~GenericBuildConfiguration(); - GenericProject *genericProject() const; + GenericTarget *genericTarget() const; virtual ProjectExplorer::Environment environment() const; virtual QString buildDirectory() const; @@ -55,8 +55,8 @@ public: QVariantMap toMap() const; protected: - GenericBuildConfiguration(GenericProject *pro, GenericBuildConfiguration *source); - GenericBuildConfiguration(GenericProject *pro, const QString &id); + GenericBuildConfiguration(GenericTarget *parent, GenericBuildConfiguration *source); + GenericBuildConfiguration(GenericTarget *parent, const QString &id); virtual bool fromMap(const QVariantMap &map); private: @@ -71,15 +71,15 @@ public: explicit GenericBuildConfigurationFactory(QObject *parent = 0); virtual ~GenericBuildConfigurationFactory(); - QStringList availableCreationIds(ProjectExplorer::Project *project) const; + QStringList availableCreationIds(ProjectExplorer::Target *parent) const; QString displayNameForId(const QString &id) const; - bool canCreate(ProjectExplorer::Project *parent, const QString &id) const; - ProjectExplorer::BuildConfiguration *create(ProjectExplorer::Project *parent, const QString &id); - bool canClone(ProjectExplorer::Project *parent, ProjectExplorer::BuildConfiguration *source) const; - ProjectExplorer::BuildConfiguration *clone(ProjectExplorer::Project *parent, ProjectExplorer::BuildConfiguration *source); - bool canRestore(ProjectExplorer::Project *parent, const QVariantMap &map) const; - ProjectExplorer::BuildConfiguration *restore(ProjectExplorer::Project *parent, const QVariantMap &map); + bool canCreate(ProjectExplorer::Target *parent, const QString &id) const; + ProjectExplorer::BuildConfiguration *create(ProjectExplorer::Target *parent, const QString &id); + bool canClone(ProjectExplorer::Target *parent, ProjectExplorer::BuildConfiguration *source) const; + ProjectExplorer::BuildConfiguration *clone(ProjectExplorer::Target *parent, ProjectExplorer::BuildConfiguration *source); + bool canRestore(ProjectExplorer::Target *parent, const QVariantMap &map) const; + ProjectExplorer::BuildConfiguration *restore(ProjectExplorer::Target *parent, const QVariantMap &map); }; } // namespace GenericProjectManager diff --git a/src/plugins/genericprojectmanager/genericmakestep.cpp b/src/plugins/genericprojectmanager/genericmakestep.cpp index 4dd38982b0..a4532c4645 100644 --- a/src/plugins/genericprojectmanager/genericmakestep.cpp +++ b/src/plugins/genericprojectmanager/genericmakestep.cpp @@ -30,6 +30,7 @@ #include "genericmakestep.h" #include "genericprojectconstants.h" #include "genericproject.h" +#include "generictarget.h" #include "ui_genericmakestep.h" #include "genericbuildconfiguration.h" @@ -111,8 +112,8 @@ bool GenericMakeStep::init() setEnvironment(bc->environment()); setOutputParser(new ProjectExplorer::GnuMakeParser(buildDir)); - if (bc->genericProject()->toolChain()) - appendOutputParser(bc->genericProject()->toolChain()->outputParser()); + if (bc->genericTarget()->genericProject()->toolChain()) + appendOutputParser(bc->genericTarget()->genericProject()->toolChain()->outputParser()); return AbstractProcessStep::init(); } @@ -155,7 +156,7 @@ QString GenericMakeStep::makeCommand() const { QString command = m_makeCommand; if (command.isEmpty()) { - GenericProject *pro = genericBuildConfiguration()->genericProject(); + GenericProject *pro = genericBuildConfiguration()->genericTarget()->genericProject(); if (ProjectExplorer::ToolChain *toolChain = pro->toolChain()) command = toolChain->makeCommand(); else @@ -206,8 +207,8 @@ GenericMakeStepConfigWidget::GenericMakeStepConfigWidget(GenericMakeStep *makeSt m_ui->setupUi(this); // TODO update this list also on rescans of the GenericLists.txt - GenericProject *pro = m_makeStep->genericBuildConfiguration()->genericProject(); - foreach (const QString &target, pro->targets()) { + GenericProject *pro = m_makeStep->genericBuildConfiguration()->genericTarget()->genericProject(); + foreach (const QString &target, pro->buildTargets()) { QListWidgetItem *item = new QListWidgetItem(target, m_ui->targetsList); item->setFlags(item->flags() | Qt::ItemIsUserCheckable); item->setCheckState(Qt::Unchecked); diff --git a/src/plugins/genericprojectmanager/genericproject.cpp b/src/plugins/genericprojectmanager/genericproject.cpp index 6699e126d3..469651b126 100644 --- a/src/plugins/genericprojectmanager/genericproject.cpp +++ b/src/plugins/genericprojectmanager/genericproject.cpp @@ -28,9 +28,10 @@ **************************************************************************/ #include "genericproject.h" -#include "genericprojectconstants.h" -#include "genericmakestep.h" + #include "genericbuildconfiguration.h" +#include "genericprojectconstants.h" +#include "generictarget.h" #include <projectexplorer/toolchain.h> #include <projectexplorer/projectexplorerconstants.h> @@ -116,7 +117,7 @@ public: GenericProject::GenericProject(Manager *manager, const QString &fileName) : m_manager(manager), m_fileName(fileName), - m_buildConfigurationFactory(new GenericBuildConfigurationFactory(this)), + m_targetFactory(new GenericTargetFactory(this)), m_toolChain(0) { QFileInfo fileInfo(m_fileName); @@ -141,9 +142,14 @@ GenericProject::~GenericProject() delete m_toolChain; } -IBuildConfigurationFactory *GenericProject::buildConfigurationFactory() const +GenericTargetFactory *GenericProject::targetFactory() const +{ + return m_targetFactory; +} + +GenericTarget *GenericProject::activeTarget() const { - return m_buildConfigurationFactory; + return static_cast<GenericTarget *>(Project::activeTarget()); } QString GenericProject::filesFileName() const @@ -424,7 +430,7 @@ QStringList GenericProject::files(FilesMode fileMode) const return m_files; // ### TODO: handle generated files here. } -QStringList GenericProject::targets() const +QStringList GenericProject::buildTargets() const { QStringList targets; targets.append(QLatin1String("all")); @@ -445,21 +451,8 @@ bool GenericProject::fromMap(const QVariantMap &map) return false; // Add default BC: - if (buildConfigurations().isEmpty()) { - GenericBuildConfiguration *bc = new GenericBuildConfiguration(this); - bc->setDisplayName("all"); - addBuildConfiguration(bc); - - GenericMakeStep *makeStep = new GenericMakeStep(bc); - bc->insertBuildStep(0, makeStep); - - makeStep->setBuildTarget("all", /* on = */ true); - - const QFileInfo fileInfo(file()->fileName()); - bc->setBuildDirectory(fileInfo.absolutePath()); - - setActiveBuildConfiguration(bc); - } + if (targets().isEmpty()) + addTarget(targetFactory()->create(this, QLatin1String(GENERIC_DESKTOP_TARGET_ID))); ToolChain::ToolChainType type = static_cast<ProjectExplorer::ToolChain::ToolChainType> diff --git a/src/plugins/genericprojectmanager/genericproject.h b/src/plugins/genericprojectmanager/genericproject.h index d54004511f..a4324d1cb8 100644 --- a/src/plugins/genericprojectmanager/genericproject.h +++ b/src/plugins/genericprojectmanager/genericproject.h @@ -32,30 +32,28 @@ #include "genericprojectmanager.h" #include "genericprojectnodes.h" +#include "generictarget.h" #include <projectexplorer/project.h> #include <projectexplorer/projectnodes.h> +#include <projectexplorer/target.h> #include <projectexplorer/buildstep.h> #include <projectexplorer/toolchain.h> #include <projectexplorer/buildconfiguration.h> #include <coreplugin/ifile.h> -QT_BEGIN_NAMESPACE -class QPushButton; -class QStringListModel; -QT_END_NAMESPACE - namespace Utils { class PathChooser; } namespace GenericProjectManager { namespace Internal { +class GenericBuildConfiguration; class GenericProject; +class GenericTarget; +class GenericTargetFactory; class GenericMakeStep; class GenericProjectFile; -class GenericBuildConfiguration; -class GenericBuildConfigurationFactory; class GenericProject : public ProjectExplorer::Project { @@ -69,23 +67,24 @@ public: QString includesFileName() const; QString configFileName() const; - virtual QString displayName() const; - virtual QString id() const; - virtual Core::IFile *file() const; - virtual ProjectExplorer::IBuildConfigurationFactory *buildConfigurationFactory() const; - virtual ProjectExplorer::IProjectManager *projectManager() const; + QString displayName() const; + QString id() const; + Core::IFile *file() const; + GenericTargetFactory *targetFactory() const; + ProjectExplorer::IProjectManager *projectManager() const; + GenericTarget *activeTarget() const; - virtual QList<ProjectExplorer::Project *> dependsOn(); + QList<ProjectExplorer::Project *> dependsOn(); - virtual bool isApplication() const; + bool isApplication() const; - virtual ProjectExplorer::BuildConfigWidget *createConfigWidget(); - virtual QList<ProjectExplorer::BuildConfigWidget*> subConfigWidgets(); + ProjectExplorer::BuildConfigWidget *createConfigWidget(); + QList<ProjectExplorer::BuildConfigWidget*> subConfigWidgets(); - virtual GenericProjectNode *rootProjectNode() const; - virtual QStringList files(FilesMode fileMode) const; + GenericProjectNode *rootProjectNode() const; + QStringList files(FilesMode fileMode) const; - QStringList targets() const; + QStringList buildTargets() const; ProjectExplorer::ToolChain *toolChain() const; bool setFiles(const QStringList &filePaths); @@ -127,7 +126,7 @@ private: QString m_configFileName; GenericProjectFile *m_file; QString m_projectName; - GenericBuildConfigurationFactory *m_buildConfigurationFactory; + GenericTargetFactory *m_targetFactory; QStringList m_files; QStringList m_generated; diff --git a/src/plugins/genericprojectmanager/genericprojectmanager.pro b/src/plugins/genericprojectmanager/genericprojectmanager.pro index cc7f616424..0c3e3ee304 100644 --- a/src/plugins/genericprojectmanager/genericprojectmanager.pro +++ b/src/plugins/genericprojectmanager/genericprojectmanager.pro @@ -4,6 +4,7 @@ include(../../qtcreatorplugin.pri) include(genericprojectmanager_dependencies.pri) HEADERS = genericproject.h \ genericprojectplugin.h \ + generictarget.h \ genericprojectmanager.h \ genericprojectconstants.h \ genericprojectnodes.h \ @@ -14,6 +15,7 @@ HEADERS = genericproject.h \ genericbuildconfiguration.h SOURCES = genericproject.cpp \ genericprojectplugin.cpp \ + generictarget.cpp \ genericprojectmanager.cpp \ genericprojectnodes.cpp \ genericprojectwizard.cpp \ diff --git a/src/plugins/genericprojectmanager/generictarget.cpp b/src/plugins/genericprojectmanager/generictarget.cpp new file mode 100644 index 0000000000..a2ec758839 --- /dev/null +++ b/src/plugins/genericprojectmanager/generictarget.cpp @@ -0,0 +1,175 @@ +/************************************************************************** +** +** This file is part of Qt Creator +** +** Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). +** +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** Commercial Usage +** +** 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. +** +** GNU Lesser General Public License Usage +** +** 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. +** +** If you are unsure which license is appropriate for your use, please +** contact the sales department at http://qt.nokia.com/contact. +** +**************************************************************************/ + +#include "generictarget.h" + +#include "genericbuildconfiguration.h" +#include "genericproject.h" +#include "genericmakestep.h" + +#include <projectexplorer/customexecutablerunconfiguration.h> + +#include <QtGui/QApplication> +#include <QtGui/QStyle> + +namespace { +const char * const GENERIC_DESKTOP_TARGET_DISPLAY_NAME("Desktop"); +} + +using namespace GenericProjectManager; +using namespace GenericProjectManager::Internal; + +//////////////////////////////////////////////////////////////////////////////////// +// GenericTarget +//////////////////////////////////////////////////////////////////////////////////// + +GenericTarget::GenericTarget(GenericProject *parent) : + ProjectExplorer::Target(parent, QLatin1String(GENERIC_DESKTOP_TARGET_ID)), + m_buildConfigurationFactory(new GenericBuildConfigurationFactory(this)) +{ + setDisplayName(QApplication::translate("GenericProjectManager::GenericTarget", + GENERIC_DESKTOP_TARGET_DISPLAY_NAME, + "Generic desktop target display name")); + setIcon(qApp->style()->standardIcon(QStyle::SP_ComputerIcon)); +} + +GenericTarget::~GenericTarget() +{ +} + +GenericProject *GenericTarget::genericProject() const +{ + return static_cast<GenericProject *>(project()); +} + +GenericBuildConfigurationFactory *GenericTarget::buildConfigurationFactory() const +{ + return m_buildConfigurationFactory; +} + +GenericBuildConfiguration *GenericTarget::activeBuildConfiguration() const +{ + return static_cast<GenericBuildConfiguration *>(Target::activeBuildConfiguration()); +} + +bool GenericTarget::fromMap(const QVariantMap &map) +{ + if (!Target::fromMap(map)) + return false; + + if (displayName().isEmpty()) + setDisplayName(QApplication::translate("GenericProjectManager::GenericTarget", + GENERIC_DESKTOP_TARGET_DISPLAY_NAME, + "Generic desktop target display name")); + if (icon().isNull()) + setIcon(qApp->style()->standardIcon(QStyle::SP_ComputerIcon)); + + return true; +} + +//////////////////////////////////////////////////////////////////////////////////// +// GenericTargetFactory +//////////////////////////////////////////////////////////////////////////////////// + +GenericTargetFactory::GenericTargetFactory(QObject *parent) : + ITargetFactory(parent) +{ +} + +GenericTargetFactory::~GenericTargetFactory() +{ +} + +QStringList GenericTargetFactory::availableCreationIds(ProjectExplorer::Project *parent) const +{ + if (!qobject_cast<GenericProject *>(parent)) + return QStringList(); + return QStringList() << QLatin1String(GENERIC_DESKTOP_TARGET_ID); +} + +QString GenericTargetFactory::displayNameForId(const QString &id) const +{ + if (id == QLatin1String(GENERIC_DESKTOP_TARGET_ID)) + return QCoreApplication::translate("GenericProjectManager::GenericTarget", + GENERIC_DESKTOP_TARGET_DISPLAY_NAME, + "Generic desktop target display name"); + return QString(); +} + +bool GenericTargetFactory::canCreate(ProjectExplorer::Project *parent, const QString &id) const +{ + if (!qobject_cast<GenericProject *>(parent)) + return false; + return id == QLatin1String(GENERIC_DESKTOP_TARGET_ID); +} + +GenericTarget *GenericTargetFactory::create(ProjectExplorer::Project *parent, const QString &id) +{ + if (!canCreate(parent, id)) + return 0; + GenericProject *genericproject = static_cast<GenericProject *>(parent); + GenericTarget *t = new GenericTarget(genericproject); + + // Set up BuildConfiguration: + GenericBuildConfiguration *bc = new GenericBuildConfiguration(t); + bc->setDisplayName("all"); + + GenericMakeStep *makeStep = new GenericMakeStep(bc); + bc->insertBuildStep(0, makeStep); + + makeStep->setBuildTarget("all", /* on = */ true); + + const QFileInfo fileInfo(genericproject->file()->fileName()); + bc->setBuildDirectory(fileInfo.absolutePath()); + + t->addBuildConfiguration(bc); + + // Add a runconfiguration. The CustomExecutableRC one will query the user + // for its settings, so it is a good choice here. + t->addRunConfiguration(new ProjectExplorer::CustomExecutableRunConfiguration(t)); + + return t; +} + +bool GenericTargetFactory::canRestore(ProjectExplorer::Project *parent, const QVariantMap &map) const +{ + return canCreate(parent, ProjectExplorer::idFromMap(map)); +} + +GenericTarget *GenericTargetFactory::restore(ProjectExplorer::Project *parent, const QVariantMap &map) +{ + if (!canRestore(parent, map)) + return 0; + GenericProject *genericproject = static_cast<GenericProject *>(parent); + GenericTarget *target = new GenericTarget(genericproject); + if (target->fromMap(map)) + return target; + delete target; + return 0; +} diff --git a/src/plugins/genericprojectmanager/generictarget.h b/src/plugins/genericprojectmanager/generictarget.h new file mode 100644 index 0000000000..090e321519 --- /dev/null +++ b/src/plugins/genericprojectmanager/generictarget.h @@ -0,0 +1,97 @@ +/************************************************************************** +** +** This file is part of Qt Creator +** +** Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). +** +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** Commercial Usage +** +** 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. +** +** GNU Lesser General Public License Usage +** +** 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. +** +** If you are unsure which license is appropriate for your use, please +** contact the sales department at http://qt.nokia.com/contact. +** +**************************************************************************/ + +#ifndef GENERICTARGET_H +#define GENERICTARGET_H + +#include <projectexplorer/target.h> + +#include "genericbuildconfiguration.h" + +#include <QtCore/QStringList> +#include <QtCore/QVariantMap> + +namespace ProjectExplorer { +class IBuildConfigurationFactory; +} // namespace ProjectExplorer + +namespace GenericProjectManager { + +namespace Internal { + +const char * const GENERIC_DESKTOP_TARGET_ID("GenericProjectManager.GenericTarget"); + +class GenericProject; +class GenericRunConfiguration; + +class GenericTargetFactory; + +class GenericTarget : public ProjectExplorer::Target +{ + Q_OBJECT + friend class GenericTargetFactory; + +public: + explicit GenericTarget(GenericProject *parent); + ~GenericTarget(); + + GenericProject *genericProject() const; + + GenericBuildConfigurationFactory *buildConfigurationFactory() const; + GenericBuildConfiguration *activeBuildConfiguration() const; + +protected: + bool fromMap(const QVariantMap &map); + +private: + GenericBuildConfigurationFactory *m_buildConfigurationFactory; +}; + +class GenericTargetFactory : public ProjectExplorer::ITargetFactory +{ + Q_OBJECT + +public: + explicit GenericTargetFactory(QObject *parent = 0); + ~GenericTargetFactory(); + + QStringList availableCreationIds(ProjectExplorer::Project *parent) const; + QString displayNameForId(const QString &id) const; + + bool canCreate(ProjectExplorer::Project *parent, const QString &id) const; + GenericTarget *create(ProjectExplorer::Project *parent, const QString &id); + bool canRestore(ProjectExplorer::Project *parent, const QVariantMap &map) const; + GenericTarget *restore(ProjectExplorer::Project *parent, const QVariantMap &map); +}; + +} // namespace Internal + +} // namespace GenericProjectManager + +#endif // GENERICTARGET_H |