summaryrefslogtreecommitdiff
path: root/src/plugins/qt4projectmanager
diff options
context:
space:
mode:
authorTobias Hunger <tobias.hunger@digia.com>2013-08-13 10:52:57 +0200
committerTobias Hunger <tobias.hunger@digia.com>2013-09-27 14:34:43 +0200
commit921f86dfa748468a8d7e6bb7787aed8fb8b53da9 (patch)
tree717cc0cd5052ff7a75f27f11e5abb9143fd35447 /src/plugins/qt4projectmanager
parent95828d4691a993e552843738114507a5a30efe2a (diff)
downloadqt-creator-921f86dfa748468a8d7e6bb7787aed8fb8b53da9.tar.gz
TargetSetupPage: Generalize the page
Generalize the target setup page and move it into projectexplorer Move the qmake specific code into a projectimporter class with a specialization for qmake projects in the qt4projectmanager. This change depends heavily on the BuildConfigurationFactory cleanups done earlier and completes that change in such a way that generic build configuration factories are now in theory possible. The remaining problem is how to select the best factory of several that claim to be able to handle a kit and that is left for the next patch. Change-Id: I47134cb1938c52adebcdc1ddfe8dbf26abbbbeee Reviewed-by: Daniel Teske <daniel.teske@digia.com>
Diffstat (limited to 'src/plugins/qt4projectmanager')
-rw-r--r--src/plugins/qt4projectmanager/buildconfigurationinfo.h74
-rw-r--r--src/plugins/qt4projectmanager/qmakebuildinfo.h11
-rw-r--r--src/plugins/qt4projectmanager/qmakeprojectimporter.cpp254
-rw-r--r--src/plugins/qt4projectmanager/qmakeprojectimporter.h (renamed from src/plugins/qt4projectmanager/wizards/importwidget.h)38
-rw-r--r--src/plugins/qt4projectmanager/qt4buildconfiguration.cpp158
-rw-r--r--src/plugins/qt4projectmanager/qt4buildconfiguration.h15
-rw-r--r--src/plugins/qt4projectmanager/qt4project.cpp56
-rw-r--r--src/plugins/qt4projectmanager/qt4project.h7
-rw-r--r--src/plugins/qt4projectmanager/qt4projectmanager.pro15
-rw-r--r--src/plugins/qt4projectmanager/qt4projectmanager.qbs3
-rw-r--r--src/plugins/qt4projectmanager/qt4projectmanagerconstants.h3
-rw-r--r--src/plugins/qt4projectmanager/qt4projectmanagerplugin.cpp2
-rw-r--r--src/plugins/qt4projectmanager/qt4targetsetupwidget.cpp366
-rw-r--r--src/plugins/qt4projectmanager/qt4targetsetupwidget.h115
-rw-r--r--src/plugins/qt4projectmanager/unconfiguredprojectpanel.cpp213
-rw-r--r--src/plugins/qt4projectmanager/unconfiguredprojectpanel.h84
-rw-r--r--src/plugins/qt4projectmanager/wizards/abstractmobileappwizard.cpp10
-rw-r--r--src/plugins/qt4projectmanager/wizards/abstractmobileappwizard.h7
-rw-r--r--src/plugins/qt4projectmanager/wizards/html5appwizard.cpp4
-rw-r--r--src/plugins/qt4projectmanager/wizards/importwidget.cpp88
-rw-r--r--src/plugins/qt4projectmanager/wizards/qtquickappwizard.cpp6
-rw-r--r--src/plugins/qt4projectmanager/wizards/qtwizard.cpp6
-rw-r--r--src/plugins/qt4projectmanager/wizards/qtwizard.h8
-rw-r--r--src/plugins/qt4projectmanager/wizards/targetsetuppage.cpp731
-rw-r--r--src/plugins/qt4projectmanager/wizards/targetsetuppage.h142
25 files changed, 403 insertions, 2013 deletions
diff --git a/src/plugins/qt4projectmanager/buildconfigurationinfo.h b/src/plugins/qt4projectmanager/buildconfigurationinfo.h
deleted file mode 100644
index a784416e0a..0000000000
--- a/src/plugins/qt4projectmanager/buildconfigurationinfo.h
+++ /dev/null
@@ -1,74 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies).
-** Contact: http://www.qt-project.org/legal
-**
-** This file is part of Qt Creator.
-**
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and Digia. For licensing terms and
-** conditions see http://qt.digia.com/licensing. For further information
-** use the contact form at http://qt.digia.com/contact-us.
-**
-** 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.
-**
-** In addition, as a special exception, Digia gives you certain additional
-** rights. These rights are described in the Digia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-****************************************************************************/
-
-#ifndef BUILDCONFIGURATIONINFO_H
-#define BUILDCONFIGURATIONINFO_H
-
-#include "qt4projectmanager_global.h"
-
-#include <qtsupport/baseqtversion.h>
-
-namespace Qt4ProjectManager {
-
-class QT4PROJECTMANAGER_EXPORT BuildConfigurationInfo
-{
-public:
- explicit BuildConfigurationInfo()
- : buildConfig(QtSupport::BaseQtVersion::QmakeBuildConfig(0)), importing(false)
- { }
-
- explicit BuildConfigurationInfo(QtSupport::BaseQtVersion::QmakeBuildConfigs bc,
- const QString &aa, const QString &d,
- bool importing_ = false,
- const QString &makefile_ = QString())
- : buildConfig(bc),
- additionalArguments(aa), directory(d),
- importing(importing_),
- makefile(makefile_)
- { }
-
- bool operator ==(const BuildConfigurationInfo &other) const
- {
- return buildConfig == other.buildConfig
- && additionalArguments == other.additionalArguments
- && directory == other.directory
- && importing == other.importing
- && makefile == other.makefile;
- }
-
- QtSupport::BaseQtVersion::QmakeBuildConfigs buildConfig;
- QString additionalArguments;
- QString directory;
- bool importing;
- QString makefile;
-};
-
-} // namespace Qt4ProjectManager
-
-#endif // BUILDCONFIGURATIONINFO_H
diff --git a/src/plugins/qt4projectmanager/qmakebuildinfo.h b/src/plugins/qt4projectmanager/qmakebuildinfo.h
index 8ceb78f7d4..2e5795d945 100644
--- a/src/plugins/qt4projectmanager/qmakebuildinfo.h
+++ b/src/plugins/qt4projectmanager/qmakebuildinfo.h
@@ -33,7 +33,9 @@
#include "qt4buildconfiguration.h"
#include <projectexplorer/buildinfo.h>
+#include <projectexplorer/kitmanager.h>
#include <qtsupport/baseqtversion.h>
+#include <qtsupport/qtkitinformation.h>
namespace Qt4ProjectManager {
@@ -45,6 +47,15 @@ public:
ProjectExplorer::BuildConfiguration::BuildType type;
QString additionalArguments;
QString makefile;
+
+ QList<ProjectExplorer::Task> reportIssues(const QString &projectPath,
+ const QString &buildDir) const
+ {
+ ProjectExplorer::Kit *k = ProjectExplorer::KitManager::find(kitId);
+ QtSupport::BaseQtVersion *version = QtSupport::QtKitInformation::qtVersion(k);
+ return version ? version->reportIssues(projectPath, buildDir)
+ : QList<ProjectExplorer::Task>();
+ }
};
} // namespace Qt4ProjectManager
diff --git a/src/plugins/qt4projectmanager/qmakeprojectimporter.cpp b/src/plugins/qt4projectmanager/qmakeprojectimporter.cpp
new file mode 100644
index 0000000000..953e2daed0
--- /dev/null
+++ b/src/plugins/qt4projectmanager/qmakeprojectimporter.cpp
@@ -0,0 +1,254 @@
+/****************************************************************************
+**
+** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/legal
+**
+** This file is part of Qt Creator.
+**
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and Digia. For licensing terms and
+** conditions see http://qt.digia.com/licensing. For further information
+** use the contact form at http://qt.digia.com/contact-us.
+**
+** 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.
+**
+** In addition, as a special exception, Digia gives you certain additional
+** rights. These rights are described in the Digia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+****************************************************************************/
+
+#include "qmakeprojectimporter.h"
+
+#include "qmakebuildinfo.h"
+#include "qmakekitinformation.h"
+#include "qt4buildconfiguration.h"
+#include "qt4project.h"
+
+#include <coreplugin/icore.h>
+#include <coreplugin/idocument.h>
+#include <projectexplorer/kitmanager.h>
+#include <projectexplorer/target.h>
+#include <qtsupport/qtkitinformation.h>
+#include <qtsupport/qtsupportconstants.h>
+#include <qtsupport/qtversionfactory.h>
+#include <qtsupport/qtversionmanager.h>
+#include <utils/qtcprocess.h>
+
+#include <QDir>
+#include <QFileInfo>
+#include <QStringList>
+
+#include <QMessageBox>
+
+static const Core::Id QT_IS_TEMPORARY("Qmake.TempQt");
+
+namespace Qt4ProjectManager {
+namespace Internal {
+
+QmakeProjectImporter::QmakeProjectImporter(const QString &path) :
+ ProjectExplorer::ProjectImporter(path)
+{ }
+
+QList<ProjectExplorer::BuildInfo *> QmakeProjectImporter::import(const Utils::FileName &importPath,
+ bool silent)
+{
+ QList<ProjectExplorer::BuildInfo *> result;
+ QFileInfo fi = importPath.toFileInfo();
+ if (!fi.exists() && !fi.isDir())
+ return result;
+
+ QStringList makefiles = QDir(importPath.toString()).entryList(QStringList(QLatin1String("Makefile*")));
+
+ QtSupport::BaseQtVersion *version = 0;
+ bool temporaryVersion = false;
+
+ foreach (const QString &file, makefiles) {
+ // find interesting makefiles
+ QString makefile = importPath.toString() + QLatin1Char('/') + file;
+ Utils::FileName qmakeBinary = QtSupport::QtVersionManager::findQMakeBinaryFromMakefile(makefile);
+ QFileInfo qmakeFi = qmakeBinary.toFileInfo();
+ Utils::FileName canonicalQmakeBinary = Utils::FileName::fromString(qmakeFi.canonicalFilePath());
+ if (canonicalQmakeBinary.isEmpty())
+ continue;
+ if (QtSupport::QtVersionManager::makefileIsFor(makefile, projectFilePath()) != QtSupport::QtVersionManager::SameProject)
+ continue;
+
+ // Find version:
+ foreach (QtSupport::BaseQtVersion *v, QtSupport::QtVersionManager::versions()) {
+ QFileInfo vfi = v->qmakeCommand().toFileInfo();
+ Utils::FileName current = Utils::FileName::fromString(vfi.canonicalFilePath());
+ if (current == canonicalQmakeBinary) {
+ version = v;
+ break;
+ }
+ }
+
+ // Create a new version if not found:
+ if (!version) {
+ // Do not use the canonical path here...
+ version = QtSupport::QtVersionFactory::createQtVersionFromQMakePath(qmakeBinary);
+ if (!version)
+ continue;
+
+ setIsUpdating(true);
+ QtSupport::QtVersionManager::addVersion(version);
+ setIsUpdating(false);
+ temporaryVersion = true;
+ }
+
+ // find qmake arguments and mkspec
+ QPair<QtSupport::BaseQtVersion::QmakeBuildConfigs, QString> makefileBuildConfig =
+ QtSupport::QtVersionManager::scanMakeFile(makefile, version->defaultBuildConfig());
+
+ QString additionalArguments = makefileBuildConfig.second;
+ Utils::FileName parsedSpec =
+ Qt4BuildConfiguration::extractSpecFromArguments(&additionalArguments, importPath.toString(), version);
+ Utils::FileName versionSpec = version->mkspec();
+ if (parsedSpec.isEmpty() || parsedSpec == Utils::FileName::fromString(QLatin1String("default")))
+ parsedSpec = versionSpec;
+
+ QString specArgument;
+ // Compare mkspecs and add to additional arguments
+ if (parsedSpec != versionSpec)
+ specArgument = QLatin1String("-spec ") + Utils::QtcProcess::quoteArg(parsedSpec.toUserOutput());
+ Utils::QtcProcess::addArgs(&specArgument, additionalArguments);
+
+ // Find kits (can be more than one, e.g. (Linux-)Desktop and embedded linux):
+ QList<ProjectExplorer::Kit *> kitList;
+ foreach (ProjectExplorer::Kit *k, ProjectExplorer::KitManager::kits()) {
+ QtSupport::BaseQtVersion *kitVersion = QtSupport::QtKitInformation::qtVersion(k);
+ Utils::FileName kitSpec = QmakeKitInformation::mkspec(k);
+ ProjectExplorer::ToolChain *tc = ProjectExplorer::ToolChainKitInformation::toolChain(k);
+ if (kitSpec.isEmpty() && kitVersion)
+ kitSpec = kitVersion->mkspecFor(tc);
+
+ if (kitVersion == version
+ && kitSpec == parsedSpec)
+ kitList.append(k);
+ }
+ if (kitList.isEmpty())
+ kitList.append(createTemporaryKit(version, temporaryVersion, parsedSpec));
+
+ foreach (ProjectExplorer::Kit *k, kitList) {
+ addProject(k);
+
+ Qt4BuildConfigurationFactory *factory
+ = qobject_cast<Qt4BuildConfigurationFactory *>(
+ ProjectExplorer::IBuildConfigurationFactory::find(k, projectFilePath()));
+
+ if (!factory)
+ continue;
+
+ // create info:
+ QmakeBuildInfo *info = new QmakeBuildInfo(factory);
+ if (makefileBuildConfig.first | QtSupport::BaseQtVersion::DebugBuild) {
+ info->type = ProjectExplorer::BuildConfiguration::Debug;
+ info->displayName = QCoreApplication::translate("Qt4ProjectManager::Internal::QmakeProjectImporter", "Debug");
+ } else {
+ info->type = ProjectExplorer::BuildConfiguration::Release;
+ info->displayName = QCoreApplication::translate("Qt4ProjectManager::Internal::QmakeProjectImporter", "Release");
+ }
+ info->kitId = k->id();
+ info->buildDirectory = Utils::FileName::fromString(fi.absoluteFilePath());
+ info->additionalArguments = additionalArguments;
+ info->makefile = makefile;
+
+ result << info;
+ }
+ }
+
+ if (result.isEmpty() && !silent)
+ QMessageBox::critical(Core::ICore::mainWindow(),
+ QCoreApplication::translate("Qt4ProjectManager::Internal::QmakeProjectImporter", "No Build Found"),
+ QCoreApplication::translate("Qt4ProjectManager::Internal::QmakeProjectImporter", "No build found in %1 matching project %2.")
+ .arg(importPath.toUserOutput()).arg(projectFilePath()));
+
+ return result;
+}
+
+QStringList QmakeProjectImporter::importCandidates(const Utils::FileName &projectPath)
+{
+ QStringList candidates;
+
+ QFileInfo pfi = projectPath.toFileInfo();
+ const QString prefix = pfi.baseName();
+ candidates << pfi.absolutePath();
+
+ QList<ProjectExplorer::Kit *> kitList = ProjectExplorer::KitManager::kits();
+ foreach (ProjectExplorer::Kit *k, kitList) {
+ QFileInfo fi(Qt4Project::shadowBuildDirectory(projectPath.toString(), k, QString()));
+ const QString baseDir = fi.absolutePath();
+
+ foreach (const QString &dir, QDir(baseDir).entryList()) {
+ const QString path = baseDir + QLatin1Char('/') + dir;
+ if (dir.startsWith(prefix) && !candidates.contains(path))
+ candidates << path;
+ }
+ }
+ return candidates;
+}
+
+ProjectExplorer::Target *QmakeProjectImporter::preferredTarget(const QList<ProjectExplorer::Target *> &possibleTargets)
+{
+ // Select active target
+ // a) The default target
+ // b) Simulator target
+ // c) Desktop target
+ // d) the first target
+ ProjectExplorer::Target *activeTarget = possibleTargets.isEmpty() ? 0 : possibleTargets.at(0);
+ int activeTargetPriority = 0;
+ foreach (ProjectExplorer::Target *t, possibleTargets) {
+ QtSupport::BaseQtVersion *version = QtSupport::QtKitInformation::qtVersion(t->kit());
+ if (t->kit() == ProjectExplorer::KitManager::defaultKit()) {
+ activeTarget = t;
+ activeTargetPriority = 3;
+ } else if (activeTargetPriority < 2 && version && version->type() == QLatin1String(QtSupport::Constants::SIMULATORQT)) {
+ activeTarget = t;
+ activeTargetPriority = 2;
+ } else if (activeTargetPriority < 1 && version && version->type() == QLatin1String(QtSupport::Constants::DESKTOPQT)) {
+ activeTarget = t;
+ activeTargetPriority = 1;
+ }
+ }
+ return activeTarget;
+}
+
+void QmakeProjectImporter::cleanupKit(ProjectExplorer::Kit *k)
+{
+ QtSupport::BaseQtVersion *version = QtSupport::QtVersionManager::version(k->value(QT_IS_TEMPORARY, -1).toInt());
+ if (version)
+ QtSupport::QtVersionManager::removeVersion(version);
+}
+
+ProjectExplorer::Kit *QmakeProjectImporter::createTemporaryKit(QtSupport::BaseQtVersion *version,
+ bool temporaryVersion,
+ const Utils::FileName &parsedSpec)
+{
+ ProjectExplorer::Kit *k = new ProjectExplorer::Kit;
+ QtSupport::QtKitInformation::setQtVersion(k, version);
+ ProjectExplorer::ToolChainKitInformation::setToolChain(k, version->preferredToolChain(parsedSpec));
+ QmakeKitInformation::setMkspec(k, parsedSpec);
+
+ markTemporary(k);
+ if (temporaryVersion)
+ k->setValue(QT_IS_TEMPORARY, version->uniqueId());
+
+ k->setDisplayName(version->displayName());
+ setIsUpdating(true);
+ ProjectExplorer::KitManager::registerKit(k);
+ setIsUpdating(false);
+ return k;
+}
+
+} // namespace Internal
+} // namespace Qt4ProjectManager
diff --git a/src/plugins/qt4projectmanager/wizards/importwidget.h b/src/plugins/qt4projectmanager/qmakeprojectimporter.h
index 9cb1d728ca..4ab5be811d 100644
--- a/src/plugins/qt4projectmanager/wizards/importwidget.h
+++ b/src/plugins/qt4projectmanager/qmakeprojectimporter.h
@@ -27,40 +27,38 @@
**
****************************************************************************/
-#ifndef IMPORTWIDGET_H
-#define IMPORTWIDGET_H
+#ifndef QMAKEPROJECTIMPORTER_H
+#define QMAKEPROJECTIMPORTER_H
-#include <QWidget>
+#include <projectexplorer/projectimporter.h>
-namespace Utils {
-class PathChooser;
-class FileName;
-} // namespace Utils
+namespace QtSupport { class BaseQtVersion; }
namespace Qt4ProjectManager {
+
+class Qt4Project;
+
namespace Internal {
-class ImportWidget : public QWidget
+// Documentation inside.
+class QmakeProjectImporter : public ProjectExplorer::ProjectImporter
{
- Q_OBJECT
-
public:
- explicit ImportWidget(QWidget *parent = 0);
- ~ImportWidget();
-
- void setCurrentDirectory(const Utils::FileName &dir);
+ QmakeProjectImporter(const QString &path);
-signals:
- void importFrom(const Utils::FileName &dir);
+ QList<ProjectExplorer::BuildInfo *> import(const Utils::FileName &importPath, bool silent = false);
+ QStringList importCandidates(const Utils::FileName &projectFilePath);
+ ProjectExplorer::Target *preferredTarget(const QList<ProjectExplorer::Target *> &possibleTargets);
-private slots:
- void handleImportRequest();
+ void cleanupKit(ProjectExplorer::Kit *k);
private:
- Utils::PathChooser *m_pathChooser;
+ ProjectExplorer::Kit *createTemporaryKit(QtSupport::BaseQtVersion *version,
+ bool temporaryVersion,
+ const Utils::FileName &parsedSpec);
};
} // namespace Internal
} // namespace Qt4ProjectManager
-#endif // IMPORTWIDGET_H
+#endif // QMAKEPROJECTIMPORTER_H
diff --git a/src/plugins/qt4projectmanager/qt4buildconfiguration.cpp b/src/plugins/qt4projectmanager/qt4buildconfiguration.cpp
index 99bff9e930..c3a1b9959f 100644
--- a/src/plugins/qt4projectmanager/qt4buildconfiguration.cpp
+++ b/src/plugins/qt4projectmanager/qt4buildconfiguration.cpp
@@ -29,7 +29,6 @@
#include "qt4buildconfiguration.h"
-#include "buildconfigurationinfo.h"
#include "qmakebuildinfo.h"
#include "qt4project.h"
#include "qt4projectconfigwidget.h"
@@ -58,6 +57,20 @@
namespace Qt4ProjectManager {
+// --------------------------------------------------------------------
+// Helpers:
+// --------------------------------------------------------------------
+
+static Utils::FileName defaultBuildDirectory(bool supportsShadowBuild,
+ const QString &projectPath,
+ const ProjectExplorer::Kit *k,
+ const QString &suffix)
+{
+ if (supportsShadowBuild)
+ return Utils::FileName::fromString(Qt4Project::shadowBuildDirectory(projectPath, k, suffix));
+ return Utils::FileName::fromString(ProjectExplorer::Project::projectDirectory(projectPath));
+}
+
using namespace Internal;
using namespace ProjectExplorer;
using namespace QtSupport;
@@ -550,10 +563,8 @@ QmakeBuildInfo *Qt4BuildConfigurationFactory::createBuildInfo(const Kit *k,
// Leave info->buildDirectory unset;
info->kitId = k->id();
info->supportsShadowBuild = (version && version->supportsShadowBuilds());
- if (info->supportsShadowBuild)
- info->buildDirectory = Utils::FileName::fromString(Qt4Project::shadowBuildDirectory(projectPath, k, info->displayName));
- else
- info->buildDirectory = Utils::FileName::fromString(ProjectExplorer::Project::projectDirectory(projectPath));
+ info->buildDirectory
+ = defaultBuildDirectory(info->supportsShadowBuild, projectPath, k, info->displayName);
info->type = type;
return info;
}
@@ -571,11 +582,30 @@ QList<BuildInfo *> Qt4BuildConfigurationFactory::availableBuilds(const Target *p
QmakeBuildInfo *info = createBuildInfo(parent->kit(), parent->project()->projectFilePath(),
BuildConfiguration::Debug);
info->displayName.clear(); // ask for a name
+ info->buildDirectory.clear(); // This depends on the displayName
result << info;
return result;
}
+bool Qt4BuildConfigurationFactory::canSetup(const Kit *k, const QString &projectPath) const
+{
+ return k && QtSupport::QtKitInformation::qtVersion(k)
+ && Core::MimeDatabase::findByFile(QFileInfo(projectPath))
+ .matchesType(QLatin1String(Constants::PROFILE_MIMETYPE));
+}
+
+QList<BuildInfo *> Qt4BuildConfigurationFactory::availableSetups(const Kit *k, const QString &projectPath) const
+{
+ QList<ProjectExplorer::BuildInfo *> result;
+ QTC_ASSERT(canSetup(k, projectPath), return result);
+
+ result << createBuildInfo(k, projectPath, ProjectExplorer::BuildConfiguration::Debug);
+ result << createBuildInfo(k, projectPath, ProjectExplorer::BuildConfiguration::Release);
+
+ return result;
+}
+
BuildConfiguration *Qt4BuildConfigurationFactory::create(Target *parent, const BuildInfo *info) const
{
QTC_ASSERT(canCreate(parent), return 0);
@@ -594,11 +624,44 @@ BuildConfiguration *Qt4BuildConfigurationFactory::create(Target *parent, const B
else
config |= QtSupport::BaseQtVersion::DebugBuild;
- BuildConfiguration *bc
- = Qt4BuildConfiguration::setup(parent, info->displayName, info->displayName,
- config, qmakeInfo->additionalArguments,
- info->buildDirectory.toString(), false);
+ Qt4BuildConfiguration *bc = new Qt4BuildConfiguration(parent);
+ bc->setDefaultDisplayName(info->displayName);
+ bc->setDisplayName(info->displayName);
+
+ BuildStepList *buildSteps = bc->stepList(Core::Id(ProjectExplorer::Constants::BUILDSTEPS_BUILD));
+ BuildStepList *cleanSteps = bc->stepList(Core::Id(ProjectExplorer::Constants::BUILDSTEPS_CLEAN));
+ Q_ASSERT(buildSteps);
+ Q_ASSERT(cleanSteps);
+
+ QMakeStep *qmakeStep = new QMakeStep(buildSteps);
+ buildSteps->insertStep(0, qmakeStep);
+
+ MakeStep *makeStep = new MakeStep(buildSteps);
+ buildSteps->insertStep(1, makeStep);
+
+ MakeStep *cleanStep = new MakeStep(cleanSteps);
+ cleanStep->setClean(true);
+ cleanStep->setUserArguments(QLatin1String("clean"));
+ cleanSteps->insertStep(0, cleanStep);
+
+ QString additionalArguments = qmakeInfo->additionalArguments;
+
+ bool enableQmlDebugger
+ = Qt4BuildConfiguration::removeQMLInspectorFromArguments(&additionalArguments);
+ if (!additionalArguments.isEmpty())
+ qmakeStep->setUserArguments(additionalArguments);
+ qmakeStep->setLinkQmlDebuggingLibrary(enableQmlDebugger);
+
+ bc->setQMakeBuildConfiguration(config);
+
+ Utils::FileName directory = qmakeInfo->buildDirectory;
+ if (directory.isEmpty()) {
+ directory = defaultBuildDirectory(qmakeInfo->supportsShadowBuild,
+ parent->project()->projectFilePath(),
+ parent->kit(), info->displayName);
+ }
+ bc->setBuildDirectory(directory);
return bc;
}
@@ -633,35 +696,6 @@ BuildConfiguration *Qt4BuildConfigurationFactory::restore(Target *parent, const
return 0;
}
-QList<BuildConfigurationInfo> Qt4BuildConfigurationFactory::availableBuildConfigurations(const Kit *k,
- const QString &proFilePath)
-{
- QList<BuildConfigurationInfo> infoList;
-
- BaseQtVersion *version = QtKitInformation::qtVersion(k);
- if (!version || !version->isValid())
- return infoList;
- BaseQtVersion::QmakeBuildConfigs config = version->defaultBuildConfig() | QtSupport::BaseQtVersion::DebugBuild;
- BuildConfigurationInfo info = BuildConfigurationInfo(config, QString(), QString(), false);
- info.directory = Qt4Project::shadowBuildDirectory(proFilePath, k, buildConfigurationDisplayName(info));
- infoList.append(info);
-
- info.buildConfig = config ^ BaseQtVersion::DebugBuild;
- info.directory = Qt4Project::shadowBuildDirectory(proFilePath, k, buildConfigurationDisplayName(info));
- infoList.append(info);
- return infoList;
-}
-
-// Return name of a build configuration.
-QString Qt4BuildConfigurationFactory::buildConfigurationDisplayName(const BuildConfigurationInfo &info)
-{
- return (info.buildConfig & BaseQtVersion::DebugBuild) ?
- //: Name of a debug build configuration to created by a project wizard. We recommend not translating it.
- tr("Debug") :
- //: Name of a release build configuration to be created by a project wizard. We recommend not translating it.
- tr("Release");
-}
-
BuildConfiguration::BuildType Qt4BuildConfiguration::buildType() const
{
if (qmakeBuildConfiguration() & BaseQtVersion::DebugBuild)
@@ -670,52 +704,6 @@ BuildConfiguration::BuildType Qt4BuildConfiguration::buildType() const
return Release;
}
-Qt4BuildConfiguration *Qt4BuildConfiguration::setup(Target *t, QString defaultDisplayName,
- QString displayName,
- BaseQtVersion::QmakeBuildConfigs qmakeBuildConfiguration,
- QString additionalArguments, QString directory,
- bool importing)
-{
- Q_UNUSED(importing);
-
- // Add the build configuration.
- Qt4BuildConfiguration *bc = new Qt4BuildConfiguration(t);
- bc->setDefaultDisplayName(defaultDisplayName);
- bc->setDisplayName(displayName);
-
- BuildStepList *buildSteps = bc->stepList(Core::Id(ProjectExplorer::Constants::BUILDSTEPS_BUILD));
- BuildStepList *cleanSteps = bc->stepList(Core::Id(ProjectExplorer::Constants::BUILDSTEPS_CLEAN));
- Q_ASSERT(buildSteps);
- Q_ASSERT(cleanSteps);
-
- QMakeStep *qmakeStep = new QMakeStep(buildSteps);
- buildSteps->insertStep(0, qmakeStep);
-
- MakeStep *makeStep = new MakeStep(buildSteps);
- buildSteps->insertStep(1, makeStep);
-
- MakeStep *cleanStep = new MakeStep(cleanSteps);
- cleanStep->setClean(true);
- cleanStep->setUserArguments(QLatin1String("clean"));
- cleanSteps->insertStep(0, cleanStep);
-
- bool enableQmlDebugger
- = Qt4BuildConfiguration::removeQMLInspectorFromArguments(&additionalArguments);
-
- if (!additionalArguments.isEmpty())
- qmakeStep->setUserArguments(additionalArguments);
- qmakeStep->setLinkQmlDebuggingLibrary(enableQmlDebugger);
-
- bc->setQMakeBuildConfiguration(qmakeBuildConfiguration);
-
- if (directory.isEmpty())
- bc->setBuildDirectory(Utils::FileName::fromString(t->project()->projectDirectory()));
- else
- bc->setBuildDirectory(Utils::FileName::fromString(directory));
-
- return bc;
-}
-
Qt4BuildConfiguration::LastKitState::LastKitState()
{
@@ -743,6 +731,4 @@ bool Qt4BuildConfiguration::LastKitState::operator !=(const LastKitState &other)
return !operator ==(other);
}
-
-
} // namespace Qt4ProjectManager
diff --git a/src/plugins/qt4projectmanager/qt4buildconfiguration.h b/src/plugins/qt4projectmanager/qt4buildconfiguration.h
index 18c76391d2..52ebb9df9a 100644
--- a/src/plugins/qt4projectmanager/qt4buildconfiguration.h
+++ b/src/plugins/qt4projectmanager/qt4buildconfiguration.h
@@ -44,7 +44,6 @@ class QMakeStep;
class MakeStep;
class Qt4BuildConfigurationFactory;
class Qt4ProFileNode;
-class BuildConfigurationInfo;
namespace Internal { class Qt4ProjectConfigWidget; }
@@ -103,13 +102,6 @@ public:
BuildType buildType() const;
- static Qt4BuildConfiguration *setup(ProjectExplorer::Target *t,
- QString defaultDisplayName,
- QString displayName,
- QtSupport::BaseQtVersion::QmakeBuildConfigs qmakeBuildConfiguration,
- QString additionalArguments,
- QString directory,
- bool importing);
/// returns whether the Qt version in the profile supports shadow building (also true for no Qt version)
bool supportsShadowBuilds();
@@ -161,6 +153,7 @@ private:
ProjectExplorer::FileNode *m_fileNodeBuild;
friend class Internal::Qt4ProjectConfigWidget;
+ friend class Qt4BuildConfigurationFactory;
};
class QT4PROJECTMANAGER_EXPORT Qt4BuildConfigurationFactory : public ProjectExplorer::IBuildConfigurationFactory
@@ -173,6 +166,9 @@ public:
bool canCreate(const ProjectExplorer::Target *parent) const;
QList<ProjectExplorer::BuildInfo *> availableBuilds(const ProjectExplorer::Target *parent) const;
+ bool canSetup(const ProjectExplorer::Kit *k, const QString &projectPath) const;
+ QList<ProjectExplorer::BuildInfo *> availableSetups(const ProjectExplorer::Kit *k,
+ const QString &projectPath) const;
ProjectExplorer::BuildConfiguration *create(ProjectExplorer::Target *parent,
const ProjectExplorer::BuildInfo *info) const;
@@ -181,9 +177,6 @@ public:
bool canRestore(const ProjectExplorer::Target *parent, const QVariantMap &map) const;
ProjectExplorer::BuildConfiguration *restore(ProjectExplorer::Target *parent, const QVariantMap &map);
- static QList<BuildConfigurationInfo> availableBuildConfigurations(const ProjectExplorer::Kit *k, const QString &proFilePath);
- static QString buildConfigurationDisplayName(const BuildConfigurationInfo &info);
-
private slots:
void update();
diff --git a/src/plugins/qt4projectmanager/qt4project.cpp b/src/plugins/qt4projectmanager/qt4project.cpp
index 08086eca6f..2e48fcc904 100644
--- a/src/plugins/qt4projectmanager/qt4project.cpp
+++ b/src/plugins/qt4projectmanager/qt4project.cpp
@@ -30,12 +30,13 @@
#include "qt4project.h"
#include "qt4projectmanager.h"
+#include "qmakeprojectimporter.h"
+#include "qmakebuildinfo.h"
#include "qmakestep.h"
#include "qt4nodes.h"
#include "qt4projectmanagerconstants.h"
#include "qt4buildconfiguration.h"
#include "findqt4profiles.h"
-#include "buildconfigurationinfo.h"
#include "qt4projectmanager/wizards/abstractmobileapp.h"
#include "qt4projectmanager/wizards/qtquickapp.h"
#include "qt4projectmanager/wizards/html5app.h"
@@ -380,32 +381,6 @@ void Qt4Project::updateFileList()
}
}
-bool Qt4Project::setupTarget(ProjectExplorer::Target *t)
-{
- QList<BuildConfigurationInfo> infoList
- = Qt4BuildConfigurationFactory::availableBuildConfigurations(t->kit(), m_fileInfo->filePath());
- setupTarget(t, infoList);
- return true;
-}
-
-void Qt4Project::setupTarget(ProjectExplorer::Target *t, const QList<BuildConfigurationInfo> &infoList)
-{
- // Build Configurations:
- foreach (const BuildConfigurationInfo &info, infoList) {
- QString name = info.buildConfig & QtSupport::BaseQtVersion::DebugBuild
- ? tr("Debug") : tr("Release");
- Qt4BuildConfiguration *bc
- = Qt4BuildConfiguration::setup(t, name, name,
- info.buildConfig, info.additionalArguments,
- info.directory, info.importing);
- t->addBuildConfiguration(bc);
- }
-
- // Deploy Configurations:
- t->updateDefaultDeployConfigurations();
- // Do not create Run Configurations: Those will be generated later anyway.
-}
-
bool Qt4Project::fromMap(const QVariantMap &map)
{
if (!Project::fromMap(map))
@@ -1389,6 +1364,7 @@ bool Qt4Project::needsConfiguration() const
void Qt4Project::configureAsExampleProject(const QStringList &platforms)
{
+ QList<const BuildInfo *> infoList;
QList<Kit *> kits = ProjectExplorer::KitManager::kits();
foreach (Kit *k, kits) {
QtSupport::BaseQtVersion *version = QtSupport::QtKitInformation::qtVersion(k);
@@ -1397,12 +1373,14 @@ void Qt4Project::configureAsExampleProject(const QStringList &platforms)
if (!platforms.isEmpty() && !platforms.contains(version->platformName()))
continue;
- QList<BuildConfigurationInfo> infoList
- = Qt4BuildConfigurationFactory::availableBuildConfigurations(k, projectFilePath());
- if (infoList.isEmpty())
+ IBuildConfigurationFactory *factory = IBuildConfigurationFactory::find(k, projectFilePath());
+ if (!factory)
continue;
- addTarget(createTarget(k, infoList));
+ foreach (BuildInfo *info, factory->availableSetups(k, projectFilePath()))
+ infoList << info;
}
+ setup(infoList);
+ qDeleteAll(infoList);
ProjectExplorer::ProjectExplorerPlugin::instance()->requestProjectModeUpdate(this);
}
@@ -1456,16 +1434,6 @@ QString Qt4Project::buildNameFor(const Kit *k)
return k->fileSystemFriendlyName();
}
-Target *Qt4Project::createTarget(Kit *k, const QList<BuildConfigurationInfo> &infoList)
-{
- if (target(k))
- return 0;
-
- Target *t = new Target(this, k);
- setupTarget(t, infoList);
- return t;
-}
-
void Qt4Project::updateBuildSystemData()
{
Target * const target = activeTarget();
@@ -1653,6 +1621,12 @@ void Qt4Project::emitBuildDirectoryInitialized()
{
emit buildDirectoryInitialized();
}
+
+ProjectImporter *Qt4Project::createProjectImporter() const
+{
+ return new QmakeProjectImporter(projectFilePath());
+}
+
} // namespace Qt4ProjectManager
#include "qt4project.moc"
diff --git a/src/plugins/qt4projectmanager/qt4project.h b/src/plugins/qt4projectmanager/qt4project.h
index 474fe49e38..751a22c01c 100644
--- a/src/plugins/qt4projectmanager/qt4project.h
+++ b/src/plugins/qt4projectmanager/qt4project.h
@@ -49,7 +49,6 @@ namespace ProjectExplorer { class DeploymentData; }
namespace QtSupport { class ProFileReader; }
namespace Qt4ProjectManager {
-class BuildConfigurationInfo;
class MakeStep;
class QMakeStep;
class Qt4BuildConfiguration;
@@ -139,10 +138,10 @@ public:
/// used by the default implementation of shadowBuildDirectory
static QString buildNameFor(const ProjectExplorer::Kit *k);
- ProjectExplorer::Target *createTarget(ProjectExplorer::Kit *k, const QList<BuildConfigurationInfo> &infoList);
-
void emitBuildDirectoryInitialized();
+ ProjectExplorer::ProjectImporter *createProjectImporter() const;
+
signals:
void proFileUpdated(Qt4ProjectManager::Qt4ProFileNode *node, bool, bool);
void buildDirectoryInitialized();
@@ -155,8 +154,6 @@ public slots:
protected:
bool fromMap(const QVariantMap &map);
- bool setupTarget(ProjectExplorer::Target *t);
- void setupTarget(ProjectExplorer::Target *t, const QList<BuildConfigurationInfo> &infoList);
private slots:
void asyncUpdate();
diff --git a/src/plugins/qt4projectmanager/qt4projectmanager.pro b/src/plugins/qt4projectmanager/qt4projectmanager.pro
index 9a0bb33d45..a336ae54a0 100644
--- a/src/plugins/qt4projectmanager/qt4projectmanager.pro
+++ b/src/plugins/qt4projectmanager/qt4projectmanager.pro
@@ -8,6 +8,7 @@ HEADERS += \
qmakebuildinfo.h \
qmakekitinformation.h \
qmakekitconfigwidget.h \
+ qmakeprojectimporter.h \
qmakerunconfigurationfactory.h \
qt4projectmanagerplugin.h \
qt4projectmanager.h \
@@ -38,8 +39,6 @@ HEADERS += \
wizards/modulespage.h \
wizards/filespage.h \
wizards/qtwizard.h \
- wizards/targetsetuppage.h \
- wizards/importwidget.h \
wizards/qtquickapp.h \
wizards/qtquickappwizard.h \
wizards/qtquickappwizardpages.h \
@@ -62,16 +61,14 @@ HEADERS += \
librarydetailscontroller.h \
findqt4profiles.h \
qt4projectmanager_global.h \
- qt4targetsetupwidget.h \
- buildconfigurationinfo.h \
winceqtversionfactory.h \
winceqtversion.h \
- profilecompletionassist.h \
- unconfiguredprojectpanel.h
+ profilecompletionassist.h
SOURCES += \
qmakekitconfigwidget.cpp \
qmakekitinformation.cpp \
+ qmakeprojectimporter.cpp \
qmakerunconfigurationfactory.cpp \
qt4projectmanagerplugin.cpp \
qt4projectmanager.cpp \
@@ -102,8 +99,6 @@ SOURCES += \
wizards/modulespage.cpp \
wizards/filespage.cpp \
wizards/qtwizard.cpp \
- wizards/targetsetuppage.cpp \
- wizards/importwidget.cpp \
wizards/qtquickapp.cpp \
wizards/qtquickappwizard.cpp \
wizards/qtquickappwizardpages.cpp \
@@ -124,11 +119,9 @@ SOURCES += \
addlibrarywizard.cpp \
librarydetailscontroller.cpp \
findqt4profiles.cpp \
- qt4targetsetupwidget.cpp \
winceqtversionfactory.cpp \
winceqtversion.cpp \
- profilecompletionassist.cpp \
- unconfiguredprojectpanel.cpp
+ profilecompletionassist.cpp
FORMS += makestep.ui \
qmakestep.ui \
diff --git a/src/plugins/qt4projectmanager/qt4projectmanager.qbs b/src/plugins/qt4projectmanager/qt4projectmanager.qbs
index 7ab0110307..90ee461949 100644
--- a/src/plugins/qt4projectmanager/qt4projectmanager.qbs
+++ b/src/plugins/qt4projectmanager/qt4projectmanager.qbs
@@ -54,7 +54,6 @@ QtcPlugin {
"qt4projectmanagerplugin.cpp", "qt4projectmanagerplugin.h",
"qt4targetsetupwidget.cpp", "qt4targetsetupwidget.h",
"qtmodulesinfo.cpp", "qtmodulesinfo.h",
- "unconfiguredprojectpanel.cpp", "unconfiguredprojectpanel.h",
"winceqtversion.cpp", "winceqtversion.h",
"winceqtversionfactory.cpp", "winceqtversionfactory.h"
]
@@ -117,7 +116,6 @@ QtcPlugin {
"html5appwizard.cpp", "html5appwizard.h",
"html5appwizardpages.cpp", "html5appwizardpages.h",
"html5appwizardsourcespage.ui",
- "importwidget.cpp", "importwidget.h",
"libraryparameters.cpp", "libraryparameters.h",
"librarywizard.cpp", "librarywizard.h",
"librarywizarddialog.cpp", "librarywizarddialog.h",
@@ -137,7 +135,6 @@ QtcPlugin {
"qtwizard.cpp", "qtwizard.h",
"subdirsprojectwizard.cpp", "subdirsprojectwizard.h",
"subdirsprojectwizarddialog.cpp", "subdirsprojectwizarddialog.h",
- "targetsetuppage.cpp", "targetsetuppage.h",
"testwizard.cpp", "testwizard.h",
"testwizarddialog.cpp", "testwizarddialog.h",
"testwizardpage.cpp", "testwizardpage.h",
diff --git a/src/plugins/qt4projectmanager/qt4projectmanagerconstants.h b/src/plugins/qt4projectmanager/qt4projectmanagerconstants.h
index 68ccdb3d32..2845852eb8 100644
--- a/src/plugins/qt4projectmanager/qt4projectmanagerconstants.h
+++ b/src/plugins/qt4projectmanager/qt4projectmanagerconstants.h
@@ -90,9 +90,6 @@ const char QMAKEVAR_QMLJSDEBUGGER_PATH[] = "QMLJSDEBUGGER_PATH";
const char QMAKEVAR_QUICK1_DEBUG[] = "CONFIG+=declarative_debug";
const char QMAKEVAR_QUICK2_DEBUG[] = "CONFIG+=qml_debug";
-// Unconfigured Panel
-const char UNCONFIGURED_PANEL_PAGE_ID[] = "UnconfiguredPanel";
-
} // namespace Constants
} // namespace Qt4ProjectManager
diff --git a/src/plugins/qt4projectmanager/qt4projectmanagerplugin.cpp b/src/plugins/qt4projectmanager/qt4projectmanagerplugin.cpp
index 69453439f1..d23d8045a6 100644
--- a/src/plugins/qt4projectmanager/qt4projectmanagerplugin.cpp
+++ b/src/plugins/qt4projectmanager/qt4projectmanagerplugin.cpp
@@ -53,7 +53,6 @@
#include "qt-desktop/desktopqtversionfactory.h"
#include "qt-desktop/simulatorqtversionfactory.h"
#include "winceqtversionfactory.h"
-#include "unconfiguredprojectpanel.h"
#include "qmakekitinformation.h"
#include "profilehighlighterfactory.h"
@@ -156,7 +155,6 @@ bool Qt4ProjectManagerPlugin::initialize(const QStringList &arguments, QString *
addAutoReleasedObject(new ProFileCompletionAssistProvider);
addAutoReleasedObject(new ProFileHoverHandler(this));
- addAutoReleasedObject(new UnconfiguredProjectPanel);
addAutoReleasedObject(new ProFileHighlighterFactory);
//menus
diff --git a/src/plugins/qt4projectmanager/qt4targetsetupwidget.cpp b/src/plugins/qt4projectmanager/qt4targetsetupwidget.cpp
deleted file mode 100644
index b254fac4d5..0000000000
--- a/src/plugins/qt4projectmanager/qt4targetsetupwidget.cpp
+++ /dev/null
@@ -1,366 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies).
-** Contact: http://www.qt-project.org/legal
-**
-** This file is part of Qt Creator.
-**
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and Digia. For licensing terms and
-** conditions see http://qt.digia.com/licensing. For further information
-** use the contact form at http://qt.digia.com/contact-us.
-**
-** 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.
-**
-** In addition, as a special exception, Digia gives you certain additional
-** rights. These rights are described in the Digia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-****************************************************************************/
-
-#include "qt4targetsetupwidget.h"
-
-#include "buildconfigurationinfo.h"
-#include "qt4buildconfiguration.h"
-
-#include <coreplugin/icore.h>
-#include <extensionsystem/pluginmanager.h>
-#include <projectexplorer/projectexplorerconstants.h>
-#include <projectexplorer/kitoptionspage.h>
-#include <qtsupport/qtkitinformation.h>
-
-#include <utils/detailsbutton.h>
-#include <utils/detailswidget.h>
-#include <utils/hostosinfo.h>
-#include <utils/pathchooser.h>
-
-#include <QCheckBox>
-#include <QHBoxLayout>
-#include <QGridLayout>
-#include <QLabel>
-#include <QPushButton>
-
-namespace Qt4ProjectManager {
-
-// -------------------------------------------------------------------------
-// Qt4TargetSetupWidget
-// -------------------------------------------------------------------------
-
-Qt4TargetSetupWidget::Qt4TargetSetupWidget(ProjectExplorer::Kit *k,
- const QString &proFilePath,
- const QList<BuildConfigurationInfo> &infoList) :
- m_kit(k),
- m_haveImported(false),
- m_ignoreChange(false),
- m_selected(0)
-{
- Q_ASSERT(m_kit);
-
- setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Fixed);
- QVBoxLayout *vboxLayout = new QVBoxLayout();
- setLayout(vboxLayout);
- vboxLayout->setContentsMargins(0, 0, 0, 0);
- m_detailsWidget = new Utils::DetailsWidget(this);
- m_detailsWidget->setUseCheckBox(true);
- m_detailsWidget->setChecked(false);
- m_detailsWidget->setSummaryFontBold(true);
- m_detailsWidget->setToolTip(m_kit->toHtml());
- vboxLayout->addWidget(m_detailsWidget);
-
- Utils::FadingWidget *panel = new Utils::FadingWidget(m_detailsWidget);
- QHBoxLayout *panelLayout = new QHBoxLayout(panel);
- m_manageButton = new QPushButton(tr("Manage..."));
- panelLayout->addWidget(m_manageButton);
- m_detailsWidget->setToolWidget(panel);
-
- handleKitUpdate(m_kit);
-
- QWidget *widget = new QWidget;
- QVBoxLayout *layout = new QVBoxLayout;
- widget->setLayout(layout);
- layout->setContentsMargins(0, 0, 0, 0);
-
- QWidget *w = new QWidget;
- m_newBuildsLayout = new QGridLayout;
- m_newBuildsLayout->setMargin(0);
- if (Utils::HostOsInfo::isMacHost())
- m_newBuildsLayout->setSpacing(0);
- w->setLayout(m_newBuildsLayout);
- layout->addWidget(w);
-
- widget->setEnabled(false);
- m_detailsWidget->setWidget(widget);
-
- foreach (const BuildConfigurationInfo &info, infoList)
- addBuildConfigurationInfo(info);
-
- setProFilePath(proFilePath);
-
- connect(m_detailsWidget, SIGNAL(checked(bool)),
- this, SLOT(targetCheckBoxToggled(bool)));
-
- connect(ProjectExplorer::KitManager::instance(), SIGNAL(kitUpdated(ProjectExplorer::Kit*)),
- this, SLOT(handleKitUpdate(ProjectExplorer::Kit*)));
-
- connect(m_manageButton, SIGNAL(clicked()), this, SLOT(manageKit()));
-}
-
-Qt4TargetSetupWidget::~Qt4TargetSetupWidget()
-{ }
-
-ProjectExplorer::Kit *Qt4TargetSetupWidget::kit()
-{
- return m_kit;
-}
-
-void Qt4TargetSetupWidget::clearKit()
-{
- m_kit = 0;
-}
-
-bool Qt4TargetSetupWidget::isKitSelected() const
-{
- if (!m_detailsWidget->isChecked())
- return false;
-
- return !selectedBuildConfigurationInfoList().isEmpty();
-}
-
-void Qt4TargetSetupWidget::setKitSelected(bool b)
-{
- // Only check target if there are build configurations possible
- b &= !selectedBuildConfigurationInfoList().isEmpty();
- m_ignoreChange = true;
- m_detailsWidget->setChecked(b);
- m_detailsWidget->widget()->setEnabled(b);
- m_ignoreChange = false;
-
- m_detailsWidget->setState(b ? Utils::DetailsWidget::Expanded : Utils::DetailsWidget::Collapsed);
-}
-
-void Qt4TargetSetupWidget::addBuildConfigurationInfo(const BuildConfigurationInfo &info, bool importing)
-{
- if (importing) {
- if (!m_haveImported) {
- // disable everything on first import
- for (int i = 0; i < m_enabled.count(); ++i) {
- m_enabled[i] = false;
- m_checkboxes[i]->setChecked(false);
- }
- m_selected = 0;
- }
-
- m_haveImported = true;
- }
- int pos = m_pathChoosers.count();
- m_enabled.append(true);
- ++m_selected;
-
- m_infoList.append(info);
-
- QCheckBox *checkbox = new QCheckBox;
- checkbox->setText(Qt4BuildConfigurationFactory::buildConfigurationDisplayName(info));
- checkbox->setChecked(m_enabled.at(pos));
- checkbox->setAttribute(Qt::WA_LayoutUsesWidgetRect);
- m_newBuildsLayout->addWidget(checkbox, pos * 2, 0);
-
- Utils::PathChooser *pathChooser = new Utils::PathChooser();
- pathChooser->setExpectedKind(Utils::PathChooser::Directory);
- pathChooser->setPath(info.directory);
- QtSupport::BaseQtVersion *version = QtSupport::QtKitInformation::qtVersion(m_kit);
- if (!version)
- return;
- pathChooser->setReadOnly(!version->supportsShadowBuilds() || importing);
- m_newBuildsLayout->addWidget(pathChooser, pos * 2, 1);
-
- QLabel *reportIssuesLabel = new QLabel;
- reportIssuesLabel->setIndent(32);
- m_newBuildsLayout->addWidget(reportIssuesLabel, pos * 2 + 1, 0, 1, 2);
- reportIssuesLabel->setVisible(false);
-
- connect(checkbox, SIGNAL(toggled(bool)),
- this, SLOT(checkBoxToggled(bool)));
-
- connect(pathChooser, SIGNAL(changed(QString)),
- this, SLOT(pathChanged()));
-
- m_checkboxes.append(checkbox);
- m_pathChoosers.append(pathChooser);
- m_reportIssuesLabels.append(reportIssuesLabel);
-
- m_issues.append(false);
- reportIssues(pos);
-
- emit selectedToggled();
-}
-
-void Qt4TargetSetupWidget::targetCheckBoxToggled(bool b)
-{
- if (m_ignoreChange)
- return;
- m_detailsWidget->widget()->setEnabled(b);
- if (b) {
- foreach (bool error, m_issues) {
- if (error) {
- m_detailsWidget->setState(Utils::DetailsWidget::Expanded);
- break;
- }
- }
- }
- emit selectedToggled();
-}
-
-void Qt4TargetSetupWidget::manageKit()
-{
- ProjectExplorer::KitOptionsPage *page =
- ExtensionSystem::PluginManager::getObject<ProjectExplorer::KitOptionsPage>();
- if (!page || !m_kit)
- return;
-
- page->showKit(m_kit);
- Core::ICore::showOptionsDialog(ProjectExplorer::Constants::PROJECTEXPLORER_SETTINGS_CATEGORY,
- ProjectExplorer::Constants::KITS_SETTINGS_PAGE_ID);
-}
-
-void Qt4TargetSetupWidget::setProFilePath(const QString &proFilePath)
-{
- if (!m_kit)
- return;
-
- m_proFilePath = proFilePath;
- clear();
-
- QList<BuildConfigurationInfo> infoList
- = Qt4BuildConfigurationFactory::availableBuildConfigurations(m_kit, proFilePath);
- foreach (const BuildConfigurationInfo &info, infoList)
- addBuildConfigurationInfo(info);
-}
-
-void Qt4TargetSetupWidget::handleKitUpdate(ProjectExplorer::Kit *k)
-{
- if (k != m_kit)
- return;
-
- m_detailsWidget->setIcon(k->icon());
- m_detailsWidget->setSummaryText(k->displayName());
-}
-
-QList<BuildConfigurationInfo> Qt4TargetSetupWidget::selectedBuildConfigurationInfoList() const
-{
- QList<BuildConfigurationInfo> result;
- for (int i = 0; i < m_infoList.count(); ++i) {
- if (m_enabled.at(i))
- result.append(m_infoList.at(i));
- }
- return result;
-}
-
-QList<BuildConfigurationInfo> Qt4TargetSetupWidget::allBuildConfigurationInfoList() const
-{
- return m_infoList;
-}
-
-void Qt4TargetSetupWidget::clear()
-{
- qDeleteAll(m_checkboxes);
- m_checkboxes.clear();
- qDeleteAll(m_pathChoosers);
- m_pathChoosers.clear();
- qDeleteAll(m_reportIssuesLabels);
- m_reportIssuesLabels.clear();
-
- m_infoList.clear();
- m_issues.clear();
- m_enabled.clear();
- m_selected = 0;
- m_haveImported = false;
-
- emit selectedToggled();
-}
-
-void Qt4TargetSetupWidget::checkBoxToggled(bool b)
-{
- QCheckBox *box = qobject_cast<QCheckBox *>(sender());
- if (!box)
- return;
- int index = m_checkboxes.indexOf(box);
- if (index == -1)
- return;
- if (m_enabled[index] == b)
- return;
- m_selected += b ? 1 : -1;
- m_enabled[index] = b;
- if ((m_selected == 0 && !b) || (m_selected == 1 && b)) {
- emit selectedToggled();
- m_detailsWidget->setChecked(b);
- }
-}
-
-void Qt4TargetSetupWidget::pathChanged()
-{
- if (m_ignoreChange)
- return;
- Utils::PathChooser *pathChooser = qobject_cast<Utils::PathChooser *>(sender());
- if (!pathChooser)
- return;
- int index = m_pathChoosers.indexOf(pathChooser);
- if (index == -1)
- return;
- m_infoList[index].directory = pathChooser->path();
- reportIssues(index);
-}
-
-void Qt4TargetSetupWidget::reportIssues(int index)
-{
- QPair<ProjectExplorer::Task::TaskType, QString> issues = findIssues(m_infoList.at(index));
- QLabel *reportIssuesLabel = m_reportIssuesLabels.at(index);
- reportIssuesLabel->setText(issues.second);
- bool error = issues.first != ProjectExplorer::Task::Unknown;
- reportIssuesLabel->setVisible(error);
- m_issues[index] = error;
-}
-
-QPair<ProjectExplorer::Task::TaskType, QString> Qt4TargetSetupWidget::findIssues(const BuildConfigurationInfo &info)
-{
- if (m_proFilePath.isEmpty())
- return qMakePair(ProjectExplorer::Task::Unknown, QString());
-
- QString buildDir = info.directory;
- QtSupport::BaseQtVersion *version = QtSupport::QtKitInformation::qtVersion(m_kit);
- if (!version)
- return qMakePair(ProjectExplorer::Task::Unknown, QString());
-
- QList<ProjectExplorer::Task> issues = version->reportIssues(m_proFilePath, buildDir);
-
- QString text;
- ProjectExplorer::Task::TaskType highestType = ProjectExplorer::Task::Unknown;
- foreach (const ProjectExplorer::Task &t, issues) {
- if (!text.isEmpty())
- text.append(QLatin1String("<br>"));
- // set severity:
- QString severity;
- if (t.type == ProjectExplorer::Task::Error) {
- highestType = ProjectExplorer::Task::Error;
- severity = tr("<b>Error:</b> ", "Severity is Task::Error");
- } else if (t.type == ProjectExplorer::Task::Warning) {
- if (highestType == ProjectExplorer::Task::Unknown)
- highestType = ProjectExplorer::Task::Warning;
- severity = tr("<b>Warning:</b> ", "Severity is Task::Warning");
- }
- text.append(severity + t.description);
- }
- if (!text.isEmpty())
- text = QLatin1String("<nobr>") + text;
- return qMakePair(highestType, text);
-}
-
-} // namespace Qt4ProjectManager
diff --git a/src/plugins/qt4projectmanager/qt4targetsetupwidget.h b/src/plugins/qt4projectmanager/qt4targetsetupwidget.h
deleted file mode 100644
index a17fe6a51a..0000000000
--- a/src/plugins/qt4projectmanager/qt4targetsetupwidget.h
+++ /dev/null
@@ -1,115 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies).
-** Contact: http://www.qt-project.org/legal
-**
-** This file is part of Qt Creator.
-**
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and Digia. For licensing terms and
-** conditions see http://qt.digia.com/licensing. For further information
-** use the contact form at http://qt.digia.com/contact-us.
-**
-** 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.
-**
-** In addition, as a special exception, Digia gives you certain additional
-** rights. These rights are described in the Digia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-****************************************************************************/
-
-#ifndef QT4TARGETSETUPWIDGET_H
-#define QT4TARGETSETUPWIDGET_H
-
-#include "qt4projectmanager_global.h"
-
-#include <projectexplorer/task.h>
-
-#include <QWidget>
-
-QT_BEGIN_NAMESPACE
-class QCheckBox;
-class QHBoxLayout;
-class QGridLayout;
-class QLabel;
-class QPushButton;
-class QSpacerItem;
-QT_END_NAMESPACE
-
-namespace ProjectExplorer { class Kit; }
-namespace QtSupport {
-class BaseQtVersion;
-} // namespace QtSupport
-namespace Utils {
-class DetailsWidget;
-class PathChooser;
-} // namespace Utils
-
-namespace Qt4ProjectManager {
-class BuildConfigurationInfo;
-
-class QT4PROJECTMANAGER_EXPORT Qt4TargetSetupWidget : public QWidget
-{
- Q_OBJECT
-public:
- Qt4TargetSetupWidget(ProjectExplorer::Kit *k,
- const QString &proFilePath,
- const QList<BuildConfigurationInfo> &infoList);
- ~Qt4TargetSetupWidget();
-
- ProjectExplorer::Kit *kit();
- void clearKit();
-
- bool isKitSelected() const;
- void setKitSelected(bool b);
-
- void addBuildConfigurationInfo(const BuildConfigurationInfo &info, bool importing = false);
-
- QList<BuildConfigurationInfo> selectedBuildConfigurationInfoList() const;
- QList<BuildConfigurationInfo> allBuildConfigurationInfoList() const;
- void setProFilePath(const QString &proFilePath);
-
-signals:
- void selectedToggled() const;
-
-private slots:
- void handleKitUpdate(ProjectExplorer::Kit *k);
-
- void checkBoxToggled(bool b);
- void pathChanged();
- void targetCheckBoxToggled(bool b);
- void manageKit();
-
-private:
- void reportIssues(int index);
- QPair<ProjectExplorer::Task::TaskType, QString> findIssues(const BuildConfigurationInfo &info);
- void clear();
-
- ProjectExplorer::Kit *m_kit;
- QString m_proFilePath;
- bool m_haveImported;
- Utils::DetailsWidget *m_detailsWidget;
- QPushButton *m_manageButton;
- QGridLayout *m_newBuildsLayout;
- QList<QCheckBox *> m_checkboxes;
- QList<Utils::PathChooser *> m_pathChoosers;
- QList<BuildConfigurationInfo> m_infoList;
- QList<bool> m_enabled;
- QList<QLabel *> m_reportIssuesLabels;
- QList<bool> m_issues;
- bool m_ignoreChange;
- int m_selected; // Number of selected buildconfiguartions
-};
-
-} // namespace Qt4ProjectManager
-
-#endif // QT4TARGETSETUPWIDGET_H
diff --git a/src/plugins/qt4projectmanager/unconfiguredprojectpanel.cpp b/src/plugins/qt4projectmanager/unconfiguredprojectpanel.cpp
deleted file mode 100644
index b5cf55dc82..0000000000
--- a/src/plugins/qt4projectmanager/unconfiguredprojectpanel.cpp
+++ /dev/null
@@ -1,213 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies).
-** Contact: http://www.qt-project.org/legal
-**
-** This file is part of Qt Creator.
-**
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and Digia. For licensing terms and
-** conditions see http://qt.digia.com/licensing. For further information
-** use the contact form at http://qt.digia.com/contact-us.
-**
-** 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.
-**
-** In addition, as a special exception, Digia gives you certain additional
-** rights. These rights are described in the Digia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-****************************************************************************/
-
-#include "unconfiguredprojectpanel.h"
-#include "wizards/targetsetuppage.h"
-#include "qt4projectmanagerconstants.h"
-
-#include "qt4project.h"
-
-#include <coreplugin/icore.h>
-#include <coreplugin/modemanager.h>
-#include <coreplugin/coreconstants.h>
-#include <qtsupport/qtkitinformation.h>
-
-#include <projectexplorer/projectexplorer.h>
-#include <projectexplorer/session.h>
-
-#include <QVBoxLayout>
-#include <QPushButton>
-#include <QDialogButtonBox>
-
-using namespace ProjectExplorer;
-using namespace Qt4ProjectManager;
-using namespace Qt4ProjectManager::Internal;
-
-
-UnconfiguredProjectPanel::UnconfiguredProjectPanel()
-{
-}
-
-QString Qt4ProjectManager::Internal::UnconfiguredProjectPanel::id() const
-{
- return QLatin1String(Constants::UNCONFIGURED_PANEL_PAGE_ID);
-}
-
-QString Qt4ProjectManager::Internal::UnconfiguredProjectPanel::displayName() const
-{
- return tr("Configure Project");
-}
-
-int UnconfiguredProjectPanel::priority() const
-{
- return -10;
-}
-
-bool Qt4ProjectManager::Internal::UnconfiguredProjectPanel::supports(ProjectExplorer::Project *project)
-{
- if (qobject_cast<Qt4Project *>(project) && project->targets().isEmpty())
- return true;
- return false;
-}
-
-ProjectExplorer::PropertiesPanel *Qt4ProjectManager::Internal::UnconfiguredProjectPanel::createPanel(ProjectExplorer::Project *project)
-{
- ProjectExplorer::PropertiesPanel *panel = new ProjectExplorer::PropertiesPanel;
- panel->setDisplayName(displayName());
- panel->setIcon(QIcon(QLatin1String(":/projectexplorer/images/unconfigured.png")));
-
- TargetSetupPageWrapper *w = new TargetSetupPageWrapper(project);
- panel->setWidget(w);
- return panel;
-}
-
-/////////
-/// TargetSetupPageWrapper
-////////
-
-TargetSetupPageWrapper::TargetSetupPageWrapper(ProjectExplorer::Project *project)
- : QWidget(), m_project(qobject_cast<Qt4Project *>(project))
-{
- QVBoxLayout *layout = new QVBoxLayout();
- layout->setMargin(0);
- setLayout(layout);
-
- m_targetSetupPage = new TargetSetupPage(this);
- m_targetSetupPage->setRequiredKitMatcher(new QtSupport::QtVersionKitMatcher);
- m_targetSetupPage->setUseScrollArea(false);
- m_targetSetupPage->setImportSearch(true);
- m_targetSetupPage->setProFilePath(project->projectFilePath());
- m_targetSetupPage->initializePage();
- m_targetSetupPage->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Fixed);
- updateNoteText();
-
- layout->addWidget(m_targetSetupPage);
-
- // Apply row
- QHBoxLayout *hbox = new QHBoxLayout();
- layout->addLayout(hbox);
- layout->setMargin(0);
- hbox->addStretch();
-
- QDialogButtonBox *box = new QDialogButtonBox(this);
-
- m_configureButton = new QPushButton(this);
- m_configureButton->setText(tr("Configure Project"));
- box->addButton(m_configureButton, QDialogButtonBox::AcceptRole);
-
- m_cancelButton = new QPushButton(this);
- m_cancelButton->setText(tr("Cancel"));
- box->addButton(m_cancelButton, QDialogButtonBox::RejectRole);
-
- hbox->addWidget(box);
-
- layout->addStretch(10);
-
- completeChanged();
-
- connect(m_configureButton, SIGNAL(clicked()),
- this, SLOT(done()));
- connect(m_cancelButton, SIGNAL(clicked()),
- this, SLOT(cancel()));
- connect(m_targetSetupPage, SIGNAL(completeChanged()),
- this, SLOT(completeChanged()));
- connect(ProjectExplorer::KitManager::instance(), SIGNAL(defaultkitChanged()),
- this, SLOT(updateNoteText()));
- connect(ProjectExplorer::KitManager::instance(), SIGNAL(kitUpdated(ProjectExplorer::Kit*)),
- this, SLOT(kitUpdated(ProjectExplorer::Kit*)));
-}
-
-void TargetSetupPageWrapper::kitUpdated(ProjectExplorer::Kit *k)
-{
- if (k == ProjectExplorer::KitManager::defaultKit())
- updateNoteText();
-}
-
-void TargetSetupPageWrapper::updateNoteText()
-{
- ProjectExplorer::Kit *k = ProjectExplorer::KitManager::defaultKit();
-
- QString text;
- bool showHint = false;
- if (!k) {
- text = tr("The project <b>%1</b> is not yet configured.<br/>"
- "Qt Creator cannot parse the project, because no kit "
- "has been set up.")
- .arg(m_project->displayName());
- showHint = true;
- } else if (k->isValid()) {
- text = tr("The project <b>%1</b> is not yet configured.<br/>"
- "Qt Creator uses the kit <b>%2</b> to parse the project.")
- .arg(m_project->displayName())
- .arg(k->displayName());
- showHint = false;
- } else {
- text = tr("The project <b>%1</b> is not yet configured.<br/>"
- "Qt Creator uses the <b>invalid</b> kit <b>%2</b> to parse the project.")
- .arg(m_project->displayName())
- .arg(k->displayName());
- showHint = true;
- }
-
- m_targetSetupPage->setNoteText(text);
- m_targetSetupPage->showOptionsHint(showHint);
-}
-
-void TargetSetupPageWrapper::keyPressEvent(QKeyEvent *event)
-{
- if (event->key() == Qt::Key_Return || event->key() == Qt::Key_Enter) {
- event->accept();
- done();
- }
-}
-
-void TargetSetupPageWrapper::keyReleaseEvent(QKeyEvent *event)
-{
- if (event->key() == Qt::Key_Return || event->key() == Qt::Key_Enter)
- event->accept();
-}
-
-void TargetSetupPageWrapper::cancel()
-{
- ProjectExplorerPlugin::instance()->unloadProject(m_project);
- if (!SessionManager::hasProjects())
- Core::ModeManager::activateMode(Core::Constants::MODE_WELCOME);
-}
-
-void TargetSetupPageWrapper::done()
-{
- m_targetSetupPage->setupProject(m_project);
- ProjectExplorerPlugin::instance()->requestProjectModeUpdate(m_project);
- Core::ModeManager::activateMode(Core::Constants::MODE_EDIT);
-}
-
-void TargetSetupPageWrapper::completeChanged()
-{
- m_configureButton->setEnabled(m_targetSetupPage->isComplete());
-}
diff --git a/src/plugins/qt4projectmanager/unconfiguredprojectpanel.h b/src/plugins/qt4projectmanager/unconfiguredprojectpanel.h
deleted file mode 100644
index e71e7d2ef1..0000000000
--- a/src/plugins/qt4projectmanager/unconfiguredprojectpanel.h
+++ /dev/null
@@ -1,84 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies).
-** Contact: http://www.qt-project.org/legal
-**
-** This file is part of Qt Creator.
-**
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and Digia. For licensing terms and
-** conditions see http://qt.digia.com/licensing. For further information
-** use the contact form at http://qt.digia.com/contact-us.
-**
-** 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.
-**
-** In addition, as a special exception, Digia gives you certain additional
-** rights. These rights are described in the Digia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-****************************************************************************/
-
-#ifndef UNCONFIGUREDPROJECTPANEL_H
-#define UNCONFIGUREDPROJECTPANEL_H
-
-#include <projectexplorer/iprojectproperties.h>
-
-#include <QString>
-
-QT_FORWARD_DECLARE_CLASS(QPushButton)
-
-namespace ProjectExplorer { class Kit; }
-
-namespace Qt4ProjectManager {
-class TargetSetupPage;
-class Qt4Project;
-
-namespace Internal {
-
-class UnconfiguredProjectPanel : public ProjectExplorer::IProjectPanelFactory
-{
- Q_OBJECT
-public:
- UnconfiguredProjectPanel();
- virtual QString id() const;
- virtual QString displayName() const;
- int priority() const;
- virtual bool supports(ProjectExplorer::Project *project);
- virtual ProjectExplorer::PropertiesPanel *createPanel(ProjectExplorer::Project *project);
-};
-
-class TargetSetupPageWrapper : public QWidget
-{
- Q_OBJECT
-public:
- TargetSetupPageWrapper(ProjectExplorer::Project *project);
-protected:
- void keyReleaseEvent(QKeyEvent *event);
- void keyPressEvent(QKeyEvent *event);
-private slots:
- void done();
- void cancel();
- void kitUpdated(ProjectExplorer::Kit *k);
- void updateNoteText();
- void completeChanged();
-
-private:
- Qt4Project *m_project;
- TargetSetupPage *m_targetSetupPage;
- QPushButton *m_configureButton;
- QPushButton *m_cancelButton;
-};
-
-}
-}
-
-#endif // UNCONFIGUREDPROJECTPANEL_H
diff --git a/src/plugins/qt4projectmanager/wizards/abstractmobileappwizard.cpp b/src/plugins/qt4projectmanager/wizards/abstractmobileappwizard.cpp
index 9be35ad170..8b94e4cdf6 100644
--- a/src/plugins/qt4projectmanager/wizards/abstractmobileappwizard.cpp
+++ b/src/plugins/qt4projectmanager/wizards/abstractmobileappwizard.cpp
@@ -30,7 +30,7 @@
#include "abstractmobileappwizard.h"
#include "mobileappwizardpages.h"
-#include "targetsetuppage.h"
+#include "../qmakeprojectimporter.h"
#include <extensionsystem/pluginmanager.h>
#include <qt4projectmanager/qt4project.h>
@@ -38,6 +38,7 @@
#include <qtsupport/qtsupportconstants.h>
#include <qtsupport/qtkitinformation.h>
#include <projectexplorer/projectexplorer.h>
+#include <projectexplorer/targetsetuppage.h>
#include <projectexplorer/customwizard/customwizard.h>
#include <coreplugin/editormanager/editormanager.h>
@@ -64,7 +65,8 @@ AbstractMobileAppWizardDialog::AbstractMobileAppWizardDialog(QWidget *parent,
.value<QList<Core::Id> >())
{
if (!parameters.extraValues().contains(QLatin1String(ProjectExplorer::Constants::PROJECT_KIT_IDS))) {
- m_targetsPage = new TargetSetupPage;
+ m_targetsPage = new ProjectExplorer::TargetSetupPage;
+ m_targetsPage->setProjectImporter(new Internal::QmakeProjectImporter(path()));
QString platform = selectedPlatform();
if (platform.isEmpty()) {
m_targetsPage->setPreferredKitMatcher(
@@ -120,7 +122,7 @@ void AbstractMobileAppWizardDialog::addMobilePages()
m_targetItem->setNextShownItem(0);
}
-TargetSetupPage *AbstractMobileAppWizardDialog::targetsPage() const
+ProjectExplorer::TargetSetupPage *AbstractMobileAppWizardDialog::targetsPage() const
{
return m_targetsPage;
}
@@ -295,7 +297,7 @@ void AbstractMobileAppWizard::useProjectPath(const QString &projectName,
app()->setProjectName(projectName);
app()->setProjectPath(projectPath);
if (wizardDialog()->m_targetsPage)
- wizardDialog()->m_targetsPage->setProFilePath(app()->path(AbstractMobileApp::AppPro));
+ wizardDialog()->m_targetsPage->setProjectPath(app()->path(AbstractMobileApp::AppPro));
projectPathChanged(app()->path(AbstractMobileApp::AppPro));
}
diff --git a/src/plugins/qt4projectmanager/wizards/abstractmobileappwizard.h b/src/plugins/qt4projectmanager/wizards/abstractmobileappwizard.h
index 4062f17cdb..cfb2a997f8 100644
--- a/src/plugins/qt4projectmanager/wizards/abstractmobileappwizard.h
+++ b/src/plugins/qt4projectmanager/wizards/abstractmobileappwizard.h
@@ -33,6 +33,8 @@
#include <qt4projectmanager/qt4projectmanager_global.h>
#include <projectexplorer/baseprojectwizarddialog.h>
+namespace ProjectExplorer { class TargetSetupPage; }
+
namespace QtSupport {
class QtVersionNumber;
class QtVersionManager;
@@ -41,7 +43,6 @@ class QtVersionManager;
namespace Qt4ProjectManager {
class AbstractMobileApp;
-class TargetSetupPage;
namespace Internal {
class MobileAppWizardGenericOptionsPage;
@@ -61,7 +62,7 @@ protected:
void addMobilePages();
public:
- TargetSetupPage *targetsPage() const;
+ ProjectExplorer::TargetSetupPage *targetsPage() const;
protected:
int addPageWithTitle(QWizardPage *page, const QString &title);
@@ -80,7 +81,7 @@ private:
Internal::MobileAppWizardGenericOptionsPage *m_genericOptionsPage;
Internal::MobileAppWizardMaemoOptionsPage *m_maemoOptionsPage;
Internal::MobileAppWizardHarmattanOptionsPage *m_harmattanOptionsPage;
- TargetSetupPage *m_targetsPage;
+ ProjectExplorer::TargetSetupPage *m_targetsPage;
int m_genericOptionsPageId;
int m_maemoOptionsPageId;
diff --git a/src/plugins/qt4projectmanager/wizards/html5appwizard.cpp b/src/plugins/qt4projectmanager/wizards/html5appwizard.cpp
index 754c16859a..854377dd17 100644
--- a/src/plugins/qt4projectmanager/wizards/html5appwizard.cpp
+++ b/src/plugins/qt4projectmanager/wizards/html5appwizard.cpp
@@ -31,11 +31,11 @@
#include "html5app.h"
#include "html5appwizardpages.h"
-#include "targetsetuppage.h"
#include <qt4projectmanager/qt4projectmanagerconstants.h>
#include <qtsupport/baseqtversion.h>
#include <projectexplorer/projectexplorerconstants.h>
+#include <projectexplorer/targetsetuppage.h>
#include <qtsupport/qtsupportconstants.h>
#include <limits>
@@ -115,7 +115,7 @@ AbstractMobileAppWizardDialog *Html5AppWizard::createWizardDialogInternal(QWidge
void Html5AppWizard::projectPathChanged(const QString &path) const
{
if (d->wizardDialog->targetsPage())
- d->wizardDialog->targetsPage()->setProFilePath(path);
+ d->wizardDialog->targetsPage()->setProjectPath(path);
}
void Html5AppWizard::prepareGenerateFiles(const QWizard *w,
diff --git a/src/plugins/qt4projectmanager/wizards/importwidget.cpp b/src/plugins/qt4projectmanager/wizards/importwidget.cpp
deleted file mode 100644
index d3e5d99395..0000000000
--- a/src/plugins/qt4projectmanager/wizards/importwidget.cpp
+++ /dev/null
@@ -1,88 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies).
-** Contact: http://www.qt-project.org/legal
-**
-** This file is part of Qt Creator.
-**
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and Digia. For licensing terms and
-** conditions see http://qt.digia.com/licensing. For further information
-** use the contact form at http://qt.digia.com/contact-us.
-**
-** 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.
-**
-** In addition, as a special exception, Digia gives you certain additional
-** rights. These rights are described in the Digia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-****************************************************************************/
-
-#include "importwidget.h"
-
-#include <utils/detailswidget.h>
-#include <utils/pathchooser.h>
-
-#include <QPushButton>
-#include <QVBoxLayout>
-
-namespace Qt4ProjectManager {
-namespace Internal {
-
-ImportWidget::ImportWidget(QWidget *parent) :
- QWidget(parent),
- m_pathChooser(new Utils::PathChooser)
-{
- setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Fixed);
- QVBoxLayout *vboxLayout = new QVBoxLayout();
- setLayout(vboxLayout);
- vboxLayout->setContentsMargins(0, 0, 0, 0);
- Utils::DetailsWidget *detailsWidget = new Utils::DetailsWidget(this);
- detailsWidget->setUseCheckBox(false);
- detailsWidget->setSummaryText(tr("Import Build from..."));
- detailsWidget->setSummaryFontBold(true);
- // m_detailsWidget->setIcon(); // FIXME: Set icon!
- vboxLayout->addWidget(detailsWidget);
-
- QWidget *widget = new QWidget;
- QVBoxLayout *layout = new QVBoxLayout(widget);
- layout->setContentsMargins(0, 0, 0, 0);
- layout->addWidget(m_pathChooser);
-
- m_pathChooser->setExpectedKind(Utils::PathChooser::ExistingDirectory);
- QPushButton *importButton = new QPushButton(tr("Import"), widget);
- layout->addWidget(importButton);
-
- connect(importButton, SIGNAL(clicked()), this, SLOT(handleImportRequest()));
-
- detailsWidget->setWidget(widget);
-}
-
-ImportWidget::~ImportWidget()
-{ }
-
-void ImportWidget::setCurrentDirectory(const Utils::FileName &dir)
-{
- m_pathChooser->setBaseFileName(dir);
- m_pathChooser->setFileName(dir);
-}
-
-void ImportWidget::handleImportRequest()
-{
- Utils::FileName dir = m_pathChooser->fileName();
- emit importFrom(dir);
-
- m_pathChooser->setFileName(m_pathChooser->baseFileName());
-}
-
-} // namespace Internal
-} // namespace Qt4ProjectManager
diff --git a/src/plugins/qt4projectmanager/wizards/qtquickappwizard.cpp b/src/plugins/qt4projectmanager/wizards/qtquickappwizard.cpp
index 04afef13f2..660fcba083 100644
--- a/src/plugins/qt4projectmanager/wizards/qtquickappwizard.cpp
+++ b/src/plugins/qt4projectmanager/wizards/qtquickappwizard.cpp
@@ -31,12 +31,12 @@
#include "qtquickapp.h"
#include "qtquickappwizardpages.h"
-#include "targetsetuppage.h"
-#include <qt4projectmanager/qt4projectmanagerconstants.h>
+#include "qt4projectmanagerconstants.h"
#include <qtsupport/qtsupportconstants.h>
#include <qtsupport/baseqtversion.h>
#include <projectexplorer/projectexplorerconstants.h>
+#include <projectexplorer/targetsetuppage.h>
#include <QIcon>
#include <QDebug>
@@ -226,7 +226,7 @@ AbstractMobileAppWizardDialog *QtQuickAppWizard::createWizardDialogInternal(QWid
void QtQuickAppWizard::projectPathChanged(const QString &path) const
{
if (d->wizardDialog->targetsPage())
- d->wizardDialog->targetsPage()->setProFilePath(path);
+ d->wizardDialog->targetsPage()->setProjectPath(path);
}
void QtQuickAppWizard::prepareGenerateFiles(const QWizard *w,
diff --git a/src/plugins/qt4projectmanager/wizards/qtwizard.cpp b/src/plugins/qt4projectmanager/wizards/qtwizard.cpp
index d1629e5f5c..78d4a6a3cb 100644
--- a/src/plugins/qt4projectmanager/wizards/qtwizard.cpp
+++ b/src/plugins/qt4projectmanager/wizards/qtwizard.cpp
@@ -30,7 +30,6 @@
#include "qtwizard.h"
#include "modulespage.h"
-#include "targetsetuppage.h"
#include <qt4projectmanager/qt4project.h>
#include <qt4projectmanager/qt4projectmanager.h>
@@ -41,6 +40,7 @@
#include <cpptools/cpptoolsconstants.h>
#include <projectexplorer/projectexplorer.h>
+#include <projectexplorer/targetsetuppage.h>
#include <qtsupport/qtkitinformation.h>
#include <qtsupport/qtsupportconstants.h>
@@ -212,7 +212,7 @@ int BaseQt4ProjectWizardDialog::addModulesPage(int id)
int BaseQt4ProjectWizardDialog::addTargetSetupPage(bool mobile, int id)
{
- m_targetSetupPage = new TargetSetupPage;
+ m_targetSetupPage = new ProjectExplorer::TargetSetupPage;
const QString platform = selectedPlatform();
Core::FeatureSet features = mobile ? Core::FeatureSet(QtSupport::Constants::FEATURE_MOBILE)
: Core::FeatureSet(QtSupport::Constants::FEATURE_DESKTOP);
@@ -323,5 +323,5 @@ void BaseQt4ProjectWizardDialog::generateProfileName(const QString &name, const
QDir::cleanPath(path + QLatin1Char('/') + name + QLatin1Char('/')
+ name + QLatin1String(".pro"));
- m_targetSetupPage->setProFilePath(proFile);
+ m_targetSetupPage->setProjectPath(proFile);
}
diff --git a/src/plugins/qt4projectmanager/wizards/qtwizard.h b/src/plugins/qt4projectmanager/wizards/qtwizard.h
index 459dc61629..bb78c12d6c 100644
--- a/src/plugins/qt4projectmanager/wizards/qtwizard.h
+++ b/src/plugins/qt4projectmanager/wizards/qtwizard.h
@@ -34,12 +34,14 @@
#include <projectexplorer/baseprojectwizarddialog.h>
#include <projectexplorer/customwizard/customwizard.h>
-namespace ProjectExplorer { class Kit; }
+namespace ProjectExplorer {
+class Kit;
+class TargetSetupPage;
+} // namespace ProjectExplorer
namespace Qt4ProjectManager {
class Qt4Project;
-class TargetSetupPage;
namespace Internal {
@@ -142,7 +144,7 @@ private:
inline void init(bool showModulesPage);
ModulesPage *m_modulesPage;
- TargetSetupPage *m_targetSetupPage;
+ ProjectExplorer::TargetSetupPage *m_targetSetupPage;
QStringList m_selectedModules;
QStringList m_deselectedModules;
QList<Core::Id> m_profileIds;
diff --git a/src/plugins/qt4projectmanager/wizards/targetsetuppage.cpp b/src/plugins/qt4projectmanager/wizards/targetsetuppage.cpp
deleted file mode 100644
index 350bd821bb..0000000000
--- a/src/plugins/qt4projectmanager/wizards/targetsetuppage.cpp
+++ /dev/null
@@ -1,731 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies).
-** Contact: http://www.qt-project.org/legal
-**
-** This file is part of Qt Creator.
-**
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and Digia. For licensing terms and
-** conditions see http://qt.digia.com/licensing. For further information
-** use the contact form at http://qt.digia.com/contact-us.
-**
-** 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.
-**
-** In addition, as a special exception, Digia gives you certain additional
-** rights. These rights are described in the Digia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-****************************************************************************/
-
-#include "targetsetuppage.h"
-#include "importwidget.h"
-#include "../qt4targetsetupwidget.h"
-
-#include <qt4projectmanager/buildconfigurationinfo.h>
-#include <qt4projectmanager/qt4buildconfiguration.h>
-#include <qt4projectmanager/qt4project.h>
-#include <qt4projectmanager/qmakekitinformation.h>
-
-#include <coreplugin/icore.h>
-#include <projectexplorer/projectexplorerconstants.h>
-#include <projectexplorer/target.h>
-#include <qtsupport/qtkitinformation.h>
-#include <qtsupport/qtsupportconstants.h>
-#include <qtsupport/qtversionfactory.h>
-#include <qtsupport/qtversionmanager.h>
-#include <utils/qtcprocess.h>
-
-#include <QLabel>
-#include <QMessageBox>
-#include <QScrollArea>
-#include <QVBoxLayout>
-
-using namespace ProjectExplorer;
-using namespace QtSupport;
-
-namespace Qt4ProjectManager {
-namespace Internal {
-
-static const Core::Id QT_IS_TEMPORARY("Qt4PM.TempQt");
-static const Core::Id KIT_IS_TEMPORARY("Qt4PM.TempKit");
-static const Core::Id KIT_TEMPORARY_NAME("Qt4PM.TempName");
-static const Core::Id KIT_FINAL_NAME("Qt4PM.FinalName");
-static const Core::Id TEMPORARY_OF_PROJECTS("Qt4PM.TempProject");
-
-class TargetSetupPageUi
-{
-public:
- QWidget *centralWidget;
- QWidget *scrollAreaWidget;
- QScrollArea *scrollArea;
- QLabel *headerLabel;
- QLabel *descriptionLabel;
- QLabel *noValidKitLabel;
- QLabel *optionHintLabel;
-
- void setupUi(QWidget *q)
- {
- QWidget *setupTargetPage = new QWidget(q);
- descriptionLabel = new QLabel(setupTargetPage);
- descriptionLabel->setWordWrap(true);
- descriptionLabel->setVisible(false);
-
- headerLabel = new QLabel(setupTargetPage);
- headerLabel->setWordWrap(true);
- headerLabel->setVisible(false);
-
- noValidKitLabel = new QLabel(setupTargetPage);
- noValidKitLabel->setWordWrap(true);
- noValidKitLabel->setText(TargetSetupPage::tr("<span style=\" font-weight:600;\">No valid kits found.</span>"));
-
-
- optionHintLabel = new QLabel(setupTargetPage);
- optionHintLabel->setWordWrap(true);
- optionHintLabel->setText(TargetSetupPage::tr(
- "Please add a kit in the <a href=\"buildandrun\">options</a> "
- "or via the maintenance tool of the SDK."));
- optionHintLabel->setTextInteractionFlags(Qt::TextBrowserInteraction);
- optionHintLabel->setVisible(false);
-
- centralWidget = new QWidget(setupTargetPage);
- QSizePolicy policy(QSizePolicy::Preferred, QSizePolicy::Fixed);
- policy.setHorizontalStretch(0);
- policy.setVerticalStretch(0);
- policy.setHeightForWidth(centralWidget->sizePolicy().hasHeightForWidth());
- centralWidget->setSizePolicy(policy);
-
- scrollAreaWidget = new QWidget(setupTargetPage);
- scrollArea = new QScrollArea(scrollAreaWidget);
- scrollArea->setWidgetResizable(true);
-
- QWidget *scrollAreaWidgetContents;
- scrollAreaWidgetContents = new QWidget();
- scrollAreaWidgetContents->setGeometry(QRect(0, 0, 230, 81));
- scrollArea->setWidget(scrollAreaWidgetContents);
-
- QVBoxLayout *verticalLayout = new QVBoxLayout(scrollAreaWidget);
- verticalLayout->setSpacing(0);
- verticalLayout->setContentsMargins(0, 0, 0, 0);
- verticalLayout->addWidget(scrollArea);
-
- QVBoxLayout *verticalLayout_2 = new QVBoxLayout(setupTargetPage);
- verticalLayout_2->addWidget(headerLabel);
- verticalLayout_2->addWidget(noValidKitLabel);
- verticalLayout_2->addWidget(descriptionLabel);
- verticalLayout_2->addWidget(optionHintLabel);
- verticalLayout_2->addWidget(centralWidget);
- verticalLayout_2->addWidget(scrollAreaWidget);
-
- QVBoxLayout *verticalLayout_3 = new QVBoxLayout(q);
- verticalLayout_3->setContentsMargins(0, 0, 0, -1);
- verticalLayout_3->addWidget(setupTargetPage);
-
- QObject::connect(optionHintLabel, SIGNAL(linkActivated(QString)),
- q, SLOT(openOptions()));
- }
-};
-
-} // namespace Internal
-
-using namespace Internal;
-
-TargetSetupPage::TargetSetupPage(QWidget *parent) :
- QWizardPage(parent),
- m_requiredMatcher(0),
- m_preferredMatcher(0),
- m_baseLayout(0),
- m_importSearch(false),
- m_ignoreUpdates(false),
- m_firstWidget(0),
- m_ui(new TargetSetupPageUi),
- m_importWidget(new Internal::ImportWidget(this)),
- m_spacer(new QSpacerItem(0,0, QSizePolicy::Minimum, QSizePolicy::MinimumExpanding)),
- m_forceOptionHint(false)
-{
- setObjectName(QLatin1String("TargetSetupPage"));
- setWindowTitle(tr("Select Kits for Your Project"));
- m_ui->setupUi(this);
-
- QSizePolicy policy(QSizePolicy::Preferred, QSizePolicy::Preferred);
- policy.setHorizontalStretch(0);
- policy.setVerticalStretch(0);
- policy.setHeightForWidth(sizePolicy().hasHeightForWidth());
- setSizePolicy(policy);
-
- QWidget *centralWidget = new QWidget(this);
- m_ui->scrollArea->setWidget(centralWidget);
- centralWidget->setLayout(new QVBoxLayout);
- m_ui->centralWidget->setLayout(new QVBoxLayout);
- m_ui->centralWidget->layout()->setMargin(0);
-
- setUseScrollArea(true);
- setImportSearch(false);
-
- setTitle(tr("Kit Selection"));
-
- QObject *km = KitManager::instance();
- connect(km, SIGNAL(kitAdded(ProjectExplorer::Kit*)),
- this, SLOT(handleKitAddition(ProjectExplorer::Kit*)));
- connect(km, SIGNAL(kitRemoved(ProjectExplorer::Kit*)),
- this, SLOT(handleKitRemoval(ProjectExplorer::Kit*)));
- connect(km, SIGNAL(kitUpdated(ProjectExplorer::Kit*)),
- this, SLOT(handleKitUpdate(ProjectExplorer::Kit*)));
- connect(m_importWidget, SIGNAL(importFrom(Utils::FileName)),
- this, SLOT(import(Utils::FileName)));
-}
-
-void TargetSetupPage::initializePage()
-{
- reset();
-
- setupWidgets();
- setupImports();
- selectAtLeastOneKit();
-}
-
-void TargetSetupPage::setRequiredKitMatcher(ProjectExplorer::KitMatcher *matcher)
-{
- m_requiredMatcher = matcher;
-}
-
-QList<Core::Id> TargetSetupPage::selectedKits() const
-{
- QList<Core::Id> result;
- QMap<Core::Id, Qt4TargetSetupWidget *>::const_iterator it, end;
- it = m_widgets.constBegin();
- end = m_widgets.constEnd();
-
- for ( ; it != end; ++it) {
- if (isKitSelected(it.key()))
- result << it.key();
- }
- return result;
-}
-
-void TargetSetupPage::setPreferredKitMatcher(ProjectExplorer::KitMatcher *matcher)
-{
- m_preferredMatcher = matcher;
-}
-
-TargetSetupPage::~TargetSetupPage()
-{
- reset();
- delete m_ui;
- delete m_preferredMatcher;
- delete m_requiredMatcher;
-}
-
-bool TargetSetupPage::isKitSelected(Core::Id id) const
-{
- Qt4TargetSetupWidget *widget = m_widgets.value(id);
- return widget && widget->isKitSelected();
-}
-
-void TargetSetupPage::setKitSelected(Core::Id id, bool selected)
-{
- Qt4TargetSetupWidget *widget = m_widgets.value(id);
- if (widget)
- widget->setKitSelected(selected);
-}
-
-bool TargetSetupPage::isComplete() const
-{
- foreach (Qt4TargetSetupWidget *widget, m_widgets.values())
- if (widget->isKitSelected())
- return true;
- return false;
-}
-
-void TargetSetupPage::setImportSearch(bool b)
-{
- m_importSearch = b;
- m_importWidget->setVisible(b);
-}
-
-void TargetSetupPage::setupWidgets()
-{
- // Known profiles:
- QList<Kit *> kits = m_requiredMatcher
- ? KitManager::matchingKits(*m_requiredMatcher) : KitManager::kits();
- foreach (Kit *k, kits)
- addWidget(k);
-
- // Setup import widget:
- m_baseLayout->addWidget(m_importWidget);
- Utils::FileName path = Utils::FileName::fromString(m_proFilePath);
- path = path.parentDir(); // base dir
- path = path.parentDir(); // parent dir
- m_importWidget->setCurrentDirectory(path);
-
- updateVisibility();
-}
-
-void TargetSetupPage::reset()
-{
- foreach (Qt4TargetSetupWidget *widget, m_widgets.values()) {
- ProjectExplorer::Kit *k = widget->kit();
- if (!k)
- continue;
- removeProject(k, m_proFilePath);
- delete widget;
- }
-
- m_widgets.clear();
- m_firstWidget = 0;
-}
-
-ProjectExplorer::Kit *TargetSetupPage::createTemporaryKit(BaseQtVersion *version,
- bool temporaryVersion,
- const Utils::FileName &parsedSpec)
-{
- ProjectExplorer::Kit *k = new ProjectExplorer::Kit;
- QtKitInformation::setQtVersion(k, version);
- ProjectExplorer::ToolChainKitInformation::setToolChain(k, version->preferredToolChain(parsedSpec));
- QmakeKitInformation::setMkspec(k, parsedSpec);
-
- k->setDisplayName(tr("%1 - temporary").arg(version->displayName()));
- k->setValue(KIT_TEMPORARY_NAME, k->displayName());
- k->setValue(KIT_FINAL_NAME, version->displayName());
- k->setValue(KIT_IS_TEMPORARY, true);
- if (temporaryVersion)
- k->setValue(QT_IS_TEMPORARY, version->uniqueId());
-
- m_ignoreUpdates = true;
- ProjectExplorer::KitManager::registerKit(k);
- m_ignoreUpdates = false;
-
- return k;
-}
-
-void TargetSetupPage::cleanKit(ProjectExplorer::Kit *k)
-{
- m_ignoreUpdates = true;
- k->removeKey(KIT_IS_TEMPORARY);
- k->removeKey(QT_IS_TEMPORARY);
- k->removeKey(TEMPORARY_OF_PROJECTS);
- const QString tempName = k->value(KIT_TEMPORARY_NAME).toString();
- if (!tempName.isNull() && k->displayName() == tempName)
- k->setDisplayName(k->value(KIT_FINAL_NAME).toString());
- k->removeKey(KIT_TEMPORARY_NAME);
- k->removeKey(KIT_FINAL_NAME);
- m_ignoreUpdates = false;
-}
-
-void TargetSetupPage::makeQtPersistent(ProjectExplorer::Kit *k)
-{
- m_ignoreUpdates = true;
- k->removeKey(QT_IS_TEMPORARY);
- m_ignoreUpdates = false;
-}
-
-void TargetSetupPage::addProject(ProjectExplorer::Kit *k, const QString &path)
-{
- if (!k->hasValue(KIT_IS_TEMPORARY))
- return;
-
- QStringList projects = k->value(TEMPORARY_OF_PROJECTS, QStringList()).toStringList();
- if (!projects.contains(path)) {
- projects.append(path);
- m_ignoreUpdates = true;
- k->setValue(TEMPORARY_OF_PROJECTS, projects);
- m_ignoreUpdates = false;
- }
-}
-
-void TargetSetupPage::removeProject(ProjectExplorer::Kit *k, const QString &path)
-{
- if (!k->hasValue(KIT_IS_TEMPORARY) || path.isEmpty())
- return;
-
- QStringList projects = k->value(TEMPORARY_OF_PROJECTS, QStringList()).toStringList();
- if (projects.contains(path)) {
- projects.removeOne(path);
- m_ignoreUpdates = true;
- if (projects.isEmpty())
- ProjectExplorer::KitManager::deregisterKit(k);
- else
- k->setValue(TEMPORARY_OF_PROJECTS, projects);
- m_ignoreUpdates = false;
- }
-}
-
-void TargetSetupPage::setProFilePath(const QString &path)
-{
- m_proFilePath = path;
- if (!m_proFilePath.isEmpty())
- m_ui->headerLabel->setText(tr("Qt Creator can use the following kits for project <b>%1</b>:",
- "%1: Project name").arg(QFileInfo(m_proFilePath).baseName()));
- m_ui->headerLabel->setVisible(!m_proFilePath.isEmpty());
-
- if (m_widgets.isEmpty())
- return;
-
- reset();
- setupWidgets();
-}
-
-void TargetSetupPage::setNoteText(const QString &text)
-{
- m_ui->descriptionLabel->setText(text);
- m_ui->descriptionLabel->setVisible(!text.isEmpty());
-}
-
-void TargetSetupPage::showOptionsHint(bool show)
-{
- m_forceOptionHint = show;
- updateVisibility();
-}
-
-void TargetSetupPage::import(const Utils::FileName &path)
-{
- import(path, false);
-}
-
-void TargetSetupPage::import(const Utils::FileName &path, const bool silent)
-{
- QFileInfo fi = path.toFileInfo();
- if (!fi.exists() && !fi.isDir())
- return;
-
- QStringList makefiles = QDir(path.toString()).entryList(QStringList(QLatin1String("Makefile*")));
-
- BaseQtVersion *version = 0;
- bool temporaryVersion = false;
- bool found = false;
-
- foreach (const QString &file, makefiles) {
- // find interesting makefiles
- QString makefile = path.toString() + QLatin1Char('/') + file;
- Utils::FileName qmakeBinary = QtVersionManager::findQMakeBinaryFromMakefile(makefile);
- QFileInfo fi = qmakeBinary.toFileInfo();
- Utils::FileName canonicalQmakeBinary = Utils::FileName::fromString(fi.canonicalFilePath());
- if (canonicalQmakeBinary.isEmpty())
- continue;
- if (QtVersionManager::makefileIsFor(makefile, m_proFilePath) != QtVersionManager::SameProject)
- continue;
-
- // Find version:
- foreach (BaseQtVersion *v, QtVersionManager::versions()) {
- QFileInfo vfi = v->qmakeCommand().toFileInfo();
- Utils::FileName current = Utils::FileName::fromString(vfi.canonicalFilePath());
- if (current == canonicalQmakeBinary) {
- version = v;
- break;
- }
- }
-
- // Create a new version if not found:
- if (!version) {
- // Do not use the canonical path here...
- version = QtVersionFactory::createQtVersionFromQMakePath(qmakeBinary);
- if (!version)
- continue;
-
- QtVersionManager::addVersion(version);
- temporaryVersion = true;
- }
-
- // find qmake arguments and mkspec
- QPair<BaseQtVersion::QmakeBuildConfigs, QString> makefileBuildConfig =
- QtVersionManager::scanMakeFile(makefile, version->defaultBuildConfig());
-
- QString additionalArguments = makefileBuildConfig.second;
- Utils::FileName parsedSpec =
- Qt4BuildConfiguration::extractSpecFromArguments(&additionalArguments, path.toString(), version);
- Utils::FileName versionSpec = version->mkspec();
- if (parsedSpec.isEmpty() || parsedSpec == Utils::FileName::fromString(QLatin1String("default")))
- parsedSpec = versionSpec;
-
- QString specArgument;
- // Compare mkspecs and add to additional arguments
- if (parsedSpec != versionSpec)
- specArgument = QLatin1String("-spec ") + Utils::QtcProcess::quoteArg(parsedSpec.toUserOutput());
- Utils::QtcProcess::addArgs(&specArgument, additionalArguments);
-
- // Find profiles (can be more than one, e.g. (Linux-)Desktop and embedded linux):
- QList<ProjectExplorer::Kit *> kitList;
- foreach (ProjectExplorer::Kit *k, ProjectExplorer::KitManager::kits()) {
- BaseQtVersion *profileVersion = QtKitInformation::qtVersion(k);
- Utils::FileName profileSpec = QmakeKitInformation::mkspec(k);
- ProjectExplorer::ToolChain *tc = ProjectExplorer::ToolChainKitInformation::toolChain(k);
- if (profileSpec.isEmpty() && profileVersion)
- profileSpec = profileVersion->mkspecFor(tc);
-
- if (profileVersion == version
- && profileSpec == parsedSpec)
- kitList.append(k);
- }
- if (kitList.isEmpty())
- kitList.append(createTemporaryKit(version, temporaryVersion, parsedSpec));
-
- foreach (ProjectExplorer::Kit *k, kitList) {
- addProject(k, m_proFilePath);
-
- // Create widget:
- Qt4TargetSetupWidget *widget = m_widgets.value(k->id(), 0);
- if (!widget)
- addWidget(k);
- widget = m_widgets.value(k->id(), 0);
- if (!widget)
- continue;
-
- // create info:
- BuildConfigurationInfo info = BuildConfigurationInfo(makefileBuildConfig.first,
- specArgument,
- path.toString(),
- true,
- file);
-
- widget->addBuildConfigurationInfo(info, true);
- widget->setKitSelected(true);
- found = true;
- }
- }
-
- updateVisibility();
-
- if (!found && !silent)
- QMessageBox::critical(this,
- tr("No Build Found"),
- tr("No build found in %1 matching project %2.").arg(path.toUserOutput()).arg(m_proFilePath));
-}
-
-void TargetSetupPage::handleQtUpdate(const QList<int> &add, const QList<int> &rm, const QList<int> &mod)
-{
- Q_UNUSED(add);
- // Update kit to no longer claim a Qt version is temporary once it is modified/removed.
- foreach (ProjectExplorer::Kit *k, ProjectExplorer::KitManager::kits()) {
- if (!k->hasValue(QT_IS_TEMPORARY))
- continue;
- int qtVersion = k->value(QT_IS_TEMPORARY, -1).toInt();
- if (rm.contains(qtVersion) || mod.contains(qtVersion))
- makeQtPersistent(k);
- }
-}
-
-void TargetSetupPage::setupImports()
-{
- if (!m_importSearch || m_proFilePath.isEmpty())
- return;
-
- QFileInfo pfi(m_proFilePath);
- const QString prefix = pfi.baseName();
- QStringList toImport;
- toImport << pfi.absolutePath();
-
- QList<ProjectExplorer::Kit *> kitList = ProjectExplorer::KitManager::kits();
- foreach (ProjectExplorer::Kit *k, kitList) {
- QFileInfo fi(Qt4Project::shadowBuildDirectory(m_proFilePath, k, QString()));
- const QString baseDir = fi.absolutePath();
-
- foreach (const QString &dir, QDir(baseDir).entryList()) {
- const QString path = baseDir + QLatin1Char('/') + dir;
- if (dir.startsWith(prefix) && !toImport.contains(path))
- toImport << path;
-
- }
- }
- foreach (const QString &path, toImport)
- import(Utils::FileName::fromString(path), true);
-}
-
-void TargetSetupPage::handleKitAddition(ProjectExplorer::Kit *k)
-{
- if (m_ignoreUpdates)
- return;
-
- Q_ASSERT(!m_widgets.contains(k->id()));
- addWidget(k);
- updateVisibility();
-}
-
-void TargetSetupPage::handleKitRemoval(ProjectExplorer::Kit *k)
-{
- BaseQtVersion *version = QtVersionManager::version(k->value(QT_IS_TEMPORARY, -1).toInt());
- if (version)
- QtVersionManager::removeVersion(version);
-
- if (m_ignoreUpdates)
- return;
-
- removeWidget(k);
- updateVisibility();
-}
-
-void TargetSetupPage::handleKitUpdate(ProjectExplorer::Kit *k)
-{
- if (m_ignoreUpdates)
- return;
-
- cleanKit(k);
- Qt4TargetSetupWidget *widget = m_widgets.value(k->id());
-
- bool acceptable = true;
- if (m_requiredMatcher && !m_requiredMatcher->matches(k))
- acceptable = false;
-
- if (widget && !acceptable)
- removeWidget(k);
- else if (!widget && acceptable)
- addWidget(k);
-
- updateVisibility();
-}
-
-void TargetSetupPage::selectAtLeastOneKit()
-{
- bool atLeastOneKitSelected = false;
- foreach (Qt4TargetSetupWidget *w, m_widgets.values()) {
- if (w->isKitSelected()) {
- atLeastOneKitSelected = true;
- break;
- }
- }
-
- if (!atLeastOneKitSelected) {
- Qt4TargetSetupWidget *widget = m_firstWidget;
- ProjectExplorer::Kit *defaultKit = ProjectExplorer::KitManager::defaultKit();
- if (defaultKit)
- widget = m_widgets.value(defaultKit->id(), m_firstWidget);
- if (widget)
- widget->setKitSelected(true);
- m_firstWidget = 0;
- }
- emit completeChanged(); // Is this necessary?
-}
-
-void TargetSetupPage::updateVisibility()
-{
- // Always show the widgets, the import widget always makes sense to show.
- m_ui->scrollAreaWidget->setVisible(m_baseLayout == m_ui->scrollArea->widget()->layout());
- m_ui->centralWidget->setVisible(m_baseLayout == m_ui->centralWidget->layout());
-
- bool hasKits = !m_widgets.isEmpty();
- m_ui->noValidKitLabel->setVisible(!hasKits);
- m_ui->optionHintLabel->setVisible(m_forceOptionHint || !hasKits);
-
- emit completeChanged();
-}
-
-void TargetSetupPage::openOptions()
-{
- Core::ICore::showOptionsDialog(ProjectExplorer::Constants::PROJECTEXPLORER_SETTINGS_CATEGORY,
- ProjectExplorer::Constants::KITS_SETTINGS_PAGE_ID,
- this);
-}
-
-void TargetSetupPage::removeWidget(ProjectExplorer::Kit *k)
-{
- Qt4TargetSetupWidget *widget = m_widgets.value(k->id());
- if (!widget)
- return;
- if (widget == m_firstWidget)
- m_firstWidget = 0;
- widget->deleteLater();
- m_widgets.remove(k->id());
-}
-
-Qt4TargetSetupWidget *TargetSetupPage::addWidget(ProjectExplorer::Kit *k)
-{
- if (m_requiredMatcher && !m_requiredMatcher->matches(k))
- return 0;
-
- QList<BuildConfigurationInfo> infoList = Qt4BuildConfigurationFactory::availableBuildConfigurations(k, m_proFilePath);
- Qt4TargetSetupWidget *widget = infoList.isEmpty() ? 0 : new Qt4TargetSetupWidget(k, m_proFilePath, infoList);
- if (!widget)
- return 0;
-
- m_baseLayout->removeWidget(m_importWidget);
- m_baseLayout->removeItem(m_spacer);
-
- widget->setKitSelected(m_preferredMatcher && m_preferredMatcher->matches(k));
- m_widgets.insert(k->id(), widget);
- m_baseLayout->addWidget(widget);
-
- m_baseLayout->addWidget(m_importWidget);
- m_baseLayout->addItem(m_spacer);
-
- connect(widget, SIGNAL(selectedToggled()),
- this, SIGNAL(completeChanged()));
-
- if (!m_firstWidget)
- m_firstWidget = widget;
-
- return widget;
-}
-
-class KitBuildInfo
-{
-public:
- KitBuildInfo(ProjectExplorer::Kit *k, const QList<BuildConfigurationInfo> &il) :
- kit(k), infoList(il)
- { }
-
- ProjectExplorer::Kit *kit;
- QList<BuildConfigurationInfo> infoList;
-};
-
-bool TargetSetupPage::setupProject(Qt4ProjectManager::Qt4Project *project)
-{
- QList<KitBuildInfo> toRegister;
- foreach (Qt4TargetSetupWidget *widget, m_widgets.values()) {
- if (!widget->isKitSelected())
- continue;
-
- ProjectExplorer::Kit *k = widget->kit();
- cleanKit(k);
- toRegister.append(KitBuildInfo(k, widget->selectedBuildConfigurationInfoList()));
- widget->clearKit();
- }
- reset();
-
- // only register kits after we are done cleaning up
- foreach (const KitBuildInfo &data, toRegister)
- project->addTarget(project->createTarget(data.kit, data.infoList));
-
- // Select active target
- // a) Simulator target
- // b) Desktop target
- // c) the first target
- ProjectExplorer::Target *activeTarget = 0;
- QList<ProjectExplorer::Target *> targets = project->targets();
- int activeTargetPriority = 0;
- foreach (ProjectExplorer::Target *t, targets) {
- BaseQtVersion *version = QtSupport::QtKitInformation::qtVersion(t->kit());
- if (t->kit() == ProjectExplorer::KitManager::defaultKit()) {
- activeTarget = t;
- activeTargetPriority = 3;
- } else if (activeTargetPriority < 2 && version && version->type() == QLatin1String(QtSupport::Constants::SIMULATORQT)) {
- activeTarget = t;
- activeTargetPriority = 2;
- } else if (activeTargetPriority < 1 && version && version->type() == QLatin1String(QtSupport::Constants::DESKTOPQT)) {
- activeTarget = t;
- activeTargetPriority = 1;
- }
- }
- if (!activeTarget && !targets.isEmpty())
- activeTarget = targets.first();
- if (activeTarget)
- project->setActiveTarget(activeTarget);
-
- return true;
-}
-
-void TargetSetupPage::setUseScrollArea(bool b)
-{
- m_baseLayout = b ? m_ui->scrollArea->widget()->layout() : m_ui->centralWidget->layout();
- m_ui->scrollAreaWidget->setVisible(b);
- m_ui->centralWidget->setVisible(!b);
-}
-
-} // namespace Qt4ProjectManager
diff --git a/src/plugins/qt4projectmanager/wizards/targetsetuppage.h b/src/plugins/qt4projectmanager/wizards/targetsetuppage.h
deleted file mode 100644
index 73dd8a601c..0000000000
--- a/src/plugins/qt4projectmanager/wizards/targetsetuppage.h
+++ /dev/null
@@ -1,142 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies).
-** Contact: http://www.qt-project.org/legal
-**
-** This file is part of Qt Creator.
-**
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and Digia. For licensing terms and
-** conditions see http://qt.digia.com/licensing. For further information
-** use the contact form at http://qt.digia.com/contact-us.
-**
-** 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.
-**
-** In addition, as a special exception, Digia gives you certain additional
-** rights. These rights are described in the Digia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-****************************************************************************/
-
-#ifndef TARGETSETUPPAGE_H
-#define TARGETSETUPPAGE_H
-
-#include "../qt4projectmanager_global.h"
-
-#include <QString>
-#include <QWizardPage>
-#include <QMap>
-
-QT_FORWARD_DECLARE_CLASS(QSpacerItem)
-
-namespace Utils { class FileName; }
-
-namespace Core {
-class Id;
-} // namespace Core
-
-namespace ProjectExplorer {
-class Kit;
-class KitMatcher;
-} // namespace ProjectExplorer
-
-namespace QtSupport { class BaseQtVersion; }
-
-namespace Qt4ProjectManager {
-class Qt4Project;
-class Qt4TargetSetupWidget;
-
-namespace Internal {
-class ImportWidget;
-class TargetSetupPageUi;
-} // namespace Internal
-
-/// \internal
-class QT4PROJECTMANAGER_EXPORT TargetSetupPage : public QWizardPage
-{
- Q_OBJECT
-
-public:
- explicit TargetSetupPage(QWidget* parent = 0);
- ~TargetSetupPage();
-
- /// Initializes the TargetSetupPage
- /// \note The import information is gathered in initializePage(), make sure that the right proFilePath is set before
- void initializePage();
-
- // Call these before initializePage!
- void setRequiredKitMatcher(ProjectExplorer::KitMatcher *matcher);
- void setPreferredKitMatcher(ProjectExplorer::KitMatcher *matcher);
- void setImportSearch(bool b);
-
- /// Sets whether the targetsetupage uses a scrollarea
- /// to host the widgets from the factories
- /// call this before \sa initializePage()
- void setUseScrollArea(bool b);
-
- bool isComplete() const;
- bool setupProject(Qt4ProjectManager::Qt4Project *project);
- bool isKitSelected(Core::Id id) const;
- void setKitSelected(Core::Id id, bool selected);
- QList<Core::Id> selectedKits() const;
- void setProFilePath(const QString &dir);
-
- /// Overrides the summary text of the targetsetuppage
- void setNoteText(const QString &text);
- void showOptionsHint(bool show);
-
-private slots:
- void import(const Utils::FileName &path);
- void handleQtUpdate(const QList<int> &add, const QList<int> &rm, const QList<int> &mod);
- void handleKitAddition(ProjectExplorer::Kit *k);
- void handleKitRemoval(ProjectExplorer::Kit *k);
- void handleKitUpdate(ProjectExplorer::Kit *k);
- void updateVisibility();
- void openOptions();
-
-private:
- void selectAtLeastOneKit();
- void import(const Utils::FileName &path, const bool silent);
- void removeWidget(ProjectExplorer::Kit *k);
- Qt4TargetSetupWidget *addWidget(ProjectExplorer::Kit *k);
-
- void setupImports();
-
- void setupWidgets();
- void reset();
- ProjectExplorer::Kit *createTemporaryKit(QtSupport::BaseQtVersion *version, bool temporaryVersion, const Utils::FileName &parsedSpec);
- void cleanKit(ProjectExplorer::Kit *k);
- void makeQtPersistent(ProjectExplorer::Kit *k);
- void addProject(ProjectExplorer::Kit *k, const QString &path);
- void removeProject(ProjectExplorer::Kit *k, const QString &path);
-
- ProjectExplorer::KitMatcher *m_requiredMatcher;
- ProjectExplorer::KitMatcher *m_preferredMatcher;
- QLayout *m_baseLayout;
- bool m_importSearch;
- bool m_ignoreUpdates;
- QString m_proFilePath;
- QString m_defaultShadowBuildLocation;
- QMap<Core::Id, Qt4TargetSetupWidget *> m_widgets;
- Qt4TargetSetupWidget *m_firstWidget;
-
- Internal::TargetSetupPageUi *m_ui;
-
- Internal::ImportWidget *m_importWidget;
- QSpacerItem *m_spacer;
-
- bool m_forceOptionHint;
-};
-
-} // namespace Qt4ProjectManager
-
-#endif // TARGETSETUPPAGE_H