diff --git a/src/plugins/cmakeprojectmanager/cmakerunconfiguration.cpp b/src/plugins/cmakeprojectmanager/cmakerunconfiguration.cpp new file mode 100644 index 0000000000000000000000000000000000000000..eed15c3593e16faf5dca94fcc5667b004771b1e2 --- /dev/null +++ b/src/plugins/cmakeprojectmanager/cmakerunconfiguration.cpp @@ -0,0 +1,155 @@ +/*************************************************************************** +** +** This file is part of Qt Creator +** +** Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies). +** +** Contact: Qt Software Information (qt-info@nokia.com) +** +** +** Non-Open Source Usage +** +** Licensees may use this file in accordance with the Qt Beta Version +** License Agreement, Agreement version 2.2 provided with the Software or, +** alternatively, in accordance with the terms contained in a written +** agreement between you and Nokia. +** +** GNU General Public License Usage +** +** Alternatively, this file may be used under the terms of the GNU General +** Public License versions 2.0 or 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the packaging +** of this file. Please review the following information to ensure GNU +** General Public Licensing requirements will be met: +** +** http://www.fsf.org/licensing/licenses/info/GPLv2.html and +** http://www.gnu.org/copyleft/gpl.html. +** +** In addition, as a special exception, Nokia gives you certain additional +** rights. These rights are described in the Nokia Qt GPL Exception +** version 1.2, included in the file GPL_EXCEPTION.txt in this package. +** +***************************************************************************/ + +#include "cmakerunconfiguration.h" +#include "cmakeprojectconstants.h" +#include "cmakeproject.h" + +#include <projectexplorer/environment.h> + +using namespace CMakeProjectManager; +using namespace CMakeProjectManager::Internal; + +CMakeRunConfiguration::CMakeRunConfiguration(CMakeProject *pro, const QString &target, const QString &workingDirectory) + : ProjectExplorer::ApplicationRunConfiguration(pro), m_target(target), m_workingDirectory(workingDirectory) +{ + setName(target); +} +CMakeRunConfiguration::~CMakeRunConfiguration() +{ + +} + +QString CMakeRunConfiguration::type() const +{ + return Constants::CMAKERUNCONFIGURATION; +} + +QString CMakeRunConfiguration::executable() const +{ + return m_target; +} + +ProjectExplorer::ApplicationRunConfiguration::RunMode CMakeRunConfiguration::runMode() const +{ + return ProjectExplorer::ApplicationRunConfiguration::Gui; +} + +QString CMakeRunConfiguration::workingDirectory() const +{ + return m_workingDirectory; +} + +QStringList CMakeRunConfiguration::commandLineArguments() const +{ + // TODO + return QStringList(); +} + +ProjectExplorer::Environment CMakeRunConfiguration::environment() const +{ + // TODO + return ProjectExplorer::Environment::systemEnvironment(); +} + +void CMakeRunConfiguration::save(ProjectExplorer::PersistentSettingsWriter &writer) const +{ + ProjectExplorer::ApplicationRunConfiguration::save(writer); +} + +void CMakeRunConfiguration::restore(const ProjectExplorer::PersistentSettingsReader &reader) +{ + ProjectExplorer::ApplicationRunConfiguration::restore(reader); +} + +QWidget *CMakeRunConfiguration::configurationWidget() +{ + //TODO + return new QWidget(); +} + +// Factory +CMakeRunConfigurationFactory::CMakeRunConfigurationFactory() +{ + +} + +CMakeRunConfigurationFactory::~CMakeRunConfigurationFactory() +{ + +} + +// used to recreate the runConfigurations when restoring settings +bool CMakeRunConfigurationFactory::canCreate(const QString &type) const +{ + if (type.startsWith(Constants::CMAKERUNCONFIGURATION)) + return true; + return false; +} + +// used to show the list of possible additons to a project, returns a list of types +QStringList CMakeRunConfigurationFactory::canCreate(ProjectExplorer::Project *project) const +{ + CMakeProject *pro = qobject_cast<CMakeProject *>(project); + if (!pro) + return QStringList(); + // TODO gather all targets and return them here + return QStringList(); +} + +// used to translate the types to names to display to the user +QString CMakeRunConfigurationFactory::nameForType(const QString &type) const +{ + Q_ASSERT(type.startsWith(Constants::CMAKERUNCONFIGURATION)); + + if (type == Constants::CMAKERUNCONFIGURATION) + return "CMake"; // Doesn't happen + else + return type.mid(QString(Constants::CMAKERUNCONFIGURATION).length()); +} + +QSharedPointer<ProjectExplorer::RunConfiguration> CMakeRunConfigurationFactory::create(ProjectExplorer::Project *project, const QString &type) +{ + CMakeProject *pro = qobject_cast<CMakeProject *>(project); + Q_ASSERT(pro); + if (type == Constants::CMAKERUNCONFIGURATION) { + // Restoring, filename will be added by restoreSettings + QSharedPointer<ProjectExplorer::RunConfiguration> rc(new CMakeRunConfiguration(pro, QString::null, QString::null)); + return rc; + } else { + // Adding new + QString file = type.mid(QString(Constants::CMAKERUNCONFIGURATION).length()); + QSharedPointer<ProjectExplorer::RunConfiguration> rc(new CMakeRunConfiguration(pro, file, QString::null)); + return rc; + } +} diff --git a/src/plugins/cmakeprojectmanager/cmakerunconfiguration.h b/src/plugins/cmakeprojectmanager/cmakerunconfiguration.h new file mode 100644 index 0000000000000000000000000000000000000000..082364e3042ad5a7594034f0c41715533b2932b0 --- /dev/null +++ b/src/plugins/cmakeprojectmanager/cmakerunconfiguration.h @@ -0,0 +1,93 @@ +/*************************************************************************** +** +** This file is part of Qt Creator +** +** Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies). +** +** Contact: Qt Software Information (qt-info@nokia.com) +** +** +** Non-Open Source Usage +** +** Licensees may use this file in accordance with the Qt Beta Version +** License Agreement, Agreement version 2.2 provided with the Software or, +** alternatively, in accordance with the terms contained in a written +** agreement between you and Nokia. +** +** GNU General Public License Usage +** +** Alternatively, this file may be used under the terms of the GNU General +** Public License versions 2.0 or 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the packaging +** of this file. Please review the following information to ensure GNU +** General Public Licensing requirements will be met: +** +** http://www.fsf.org/licensing/licenses/info/GPLv2.html and +** http://www.gnu.org/copyleft/gpl.html. +** +** In addition, as a special exception, Nokia gives you certain additional +** rights. These rights are described in the Nokia Qt GPL Exception +** version 1.2, included in the file GPL_EXCEPTION.txt in this package. +** +***************************************************************************/ + +#ifndef CMAKERUNCONFIGURATION_H +#define CMAKERUNCONFIGURATION_H + +#include <projectexplorer/applicationrunconfiguration.h> +#include <projectexplorer/environment.h> +#include <projectexplorer/persistentsettings.h> + +namespace CMakeProjectManager { +namespace Internal { + +class CMakeProject; + +class CMakeRunConfiguration : public ProjectExplorer::ApplicationRunConfiguration +{ +public: + CMakeRunConfiguration(CMakeProject *pro, const QString &target, const QString &workingDirectory); + virtual ~CMakeRunConfiguration(); + virtual QString type() const; + virtual QString executable() const; + virtual RunMode runMode() const; + virtual QString workingDirectory() const; + virtual QStringList commandLineArguments() const; + virtual ProjectExplorer::Environment environment() const; + virtual QWidget *configurationWidget(); + + virtual void save(ProjectExplorer::PersistentSettingsWriter &writer) const; + virtual void restore(const ProjectExplorer::PersistentSettingsReader &reader); +private: + QString m_target; + QString m_workingDirectory; +}; + +/* The run configuration factory is used for restoring run configurations from + * settings. And used to create new runconfigurations in the "Run Settings" Dialog. + * For the first case bool canCreate(const QString &type) and + * QSharedPointer<RunConfiguration> create(Project *project, QString type) are used. + * For the second type the functions QStringList canCreate(Project *pro) and + * QString nameForType(const QString&) are used to generate a list of creatable + * RunConfigurations, and create(..) is used to create it. + */ +class CMakeRunConfigurationFactory : public QObject +{ + Q_OBJECT; +public: + CMakeRunConfigurationFactory(); + virtual ~CMakeRunConfigurationFactory(); + // used to recreate the runConfigurations when restoring settings + virtual bool canCreate(const QString &type) const; + // used to show the list of possible additons to a project, returns a list of types + virtual QStringList canCreate(ProjectExplorer::Project *pro) const; + // used to translate the types to names to display to the user + virtual QString nameForType(const QString &type) const; + virtual QSharedPointer<ProjectExplorer::RunConfiguration> create(ProjectExplorer::Project *project, const QString &type); +}; + + +} +} + +#endif // CMAKERUNCONFIGURATION_H