Add target selection wizard to Qt4 projects

This commit is contained in:
Tobias Hunger
2010-02-17 16:18:21 +01:00
parent efe3ac597a
commit 1ff0a7e03a
17 changed files with 357 additions and 44 deletions

View File

@@ -33,9 +33,11 @@
#include "qt4projectmanager.h"
#include "qt4projectmanagerconstants.h"
#include "modulespage.h"
#include "targetspage.h"
#include <coreplugin/icore.h>
#include <cpptools/cpptoolsconstants.h>
#include <extensionsystem/pluginmanager.h>
#include <QtCore/QCoreApplication>
#include <QtCore/QVariant>
@@ -100,10 +102,33 @@ QString QtWizard::profileSuffix()
return preferredSuffix(QLatin1String(Constants::PROFILE_MIMETYPE));
}
bool QtWizard::postGenerateFiles(const Core::GeneratedFiles &l, QString *errorMessage)
bool QtWizard::postGenerateFiles(const QWizard *w, const Core::GeneratedFiles &l, QString *errorMessage)
{
// Post-Generate: Open the project
const QString proFileName = l.back().path();
const BaseQt4ProjectWizardDialog *dialog = qobject_cast<const BaseQt4ProjectWizardDialog *>(w);
// Generate user settings:
QSet<QString> targets;
if (dialog)
targets = dialog->selectedTargets();
if (!targets.isEmpty()) {
Qt4Manager *manager = ExtensionSystem::PluginManager::instance()->getObject<Qt4Manager>();
Q_ASSERT(manager);
QtVersionManager *vm = QtVersionManager::instance();
Qt4Project *pro = new Qt4Project(manager, proFileName);
foreach (const QString &targetId, targets) {
QList<int> versionIds = dialog->selectedQtVersionIdsForTarget(targetId);
QList<QtVersion *> versions;
foreach (int id, versionIds)
versions.append(vm->version(id));
Qt4Target * target = pro->targetFactory()->create(pro, targetId, versions);
pro->addTarget(target);
}
pro->saveSettings();
}
// Post-Generate: Open the project
if (!ProjectExplorer::ProjectExplorerPlugin::instance()->openProject(proFileName)) {
*errorMessage = tr("The project %1 could not be opened.").arg(proFileName);
return false;
@@ -140,7 +165,8 @@ bool QtWizard::showModulesPageForLibraries()
// ----------------- BaseQt4ProjectWizardDialog
BaseQt4ProjectWizardDialog::BaseQt4ProjectWizardDialog(bool showModulesPage, QWidget *parent) :
ProjectExplorer::BaseProjectWizardDialog(parent),
m_modulesPage(0)
m_modulesPage(0),
m_targetsPage(0)
{
init(showModulesPage);
}
@@ -149,15 +175,20 @@ BaseQt4ProjectWizardDialog::BaseQt4ProjectWizardDialog(bool showModulesPage,
Utils::ProjectIntroPage *introPage,
int introId, QWidget *parent) :
ProjectExplorer::BaseProjectWizardDialog(introPage, introId, parent),
m_modulesPage(0)
m_modulesPage(0),
m_targetsPage(0)
{
init(showModulesPage);
}
void BaseQt4ProjectWizardDialog::init(bool showModulesPage)
{
QtVersionManager *vm = QtVersionManager::instance();
if (showModulesPage)
m_modulesPage = new ModulesPage;
if (vm->supportedTargetIds().count() > 1 ||
vm->versions().count() > 1)
m_targetsPage = new TargetsPage;
}
void BaseQt4ProjectWizardDialog::addModulesPage(int id)
@@ -171,6 +202,18 @@ void BaseQt4ProjectWizardDialog::addModulesPage(int id)
}
}
void BaseQt4ProjectWizardDialog::addTargetsPage(int id)
{
if (!m_targetsPage)
return;
if (id >= 0)
setPage(id, m_targetsPage);
else
addPage(m_targetsPage);
}
QString BaseQt4ProjectWizardDialog::selectedModules() const
{
return m_modulesPage ? m_modulesPage->selectedModules() : m_selectedModules;
@@ -203,3 +246,16 @@ void BaseQt4ProjectWizardDialog::setDeselectedModules(const QString &modules)
}
}
QSet<QString> BaseQt4ProjectWizardDialog::selectedTargets() const
{
if (!m_targetsPage)
return QSet<QString>();
return m_targetsPage->selectedTargets();
}
QList<int> BaseQt4ProjectWizardDialog::selectedQtVersionIdsForTarget(const QString &target) const
{
if (!m_targetsPage)
return QList<int>();
return m_targetsPage->selectedVersionIdsForTarget(target);
}