forked from qt-creator/qt-creator
Make Open Project wizard skippable
Task-Nr: QTCREATORBUG-6063 Change-Id: Ieace3e9e68b4e0342c35ac7c279f4b0b61076419 Reviewed-by: Eike Ziller <eike.ziller@nokia.com> Reviewed-by: Tobias Hunger <tobias.hunger@nokia.com>
This commit is contained in:
@@ -1484,9 +1484,10 @@ void DebuggerPluginPrivate::onCurrentProjectChanged(Project *project)
|
|||||||
RunConfiguration *activeRc = 0;
|
RunConfiguration *activeRc = 0;
|
||||||
if (project) {
|
if (project) {
|
||||||
Target *target = project->activeTarget();
|
Target *target = project->activeTarget();
|
||||||
QTC_ASSERT(target, return);
|
if (target)
|
||||||
activeRc = target->activeRunConfiguration();
|
activeRc = target->activeRunConfiguration();
|
||||||
QTC_CHECK(activeRc);
|
if (!activeRc)
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
for (int i = 0, n = m_snapshotHandler->size(); i != n; ++i) {
|
for (int i = 0, n = m_snapshotHandler->size(); i != n; ++i) {
|
||||||
// Run controls might be deleted during exit.
|
// Run controls might be deleted during exit.
|
||||||
|
|||||||
@@ -314,7 +314,7 @@ bool BuildManager::tasksAvailable() const
|
|||||||
return count > 0;
|
return count > 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
void BuildManager::startBuildQueue()
|
void BuildManager::startBuildQueue(const QStringList &preambleMessage)
|
||||||
{
|
{
|
||||||
if (d->m_buildQueue.isEmpty()) {
|
if (d->m_buildQueue.isEmpty()) {
|
||||||
emit buildQueueFinished(true);
|
emit buildQueueFinished(true);
|
||||||
@@ -326,6 +326,8 @@ void BuildManager::startBuildQueue()
|
|||||||
d->m_progressFutureInterface = new QFutureInterface<void>;
|
d->m_progressFutureInterface = new QFutureInterface<void>;
|
||||||
d->m_progressWatcher.setFuture(d->m_progressFutureInterface->future());
|
d->m_progressWatcher.setFuture(d->m_progressFutureInterface->future());
|
||||||
d->m_outputWindow->clearContents();
|
d->m_outputWindow->clearContents();
|
||||||
|
foreach (const QString &str, preambleMessage)
|
||||||
|
addToOutputWindow(str, BuildStep::MessageOutput, BuildStep::DontAppendNewline);
|
||||||
d->m_taskHub->clearTasks(Core::Id(Constants::TASK_CATEGORY_COMPILE));
|
d->m_taskHub->clearTasks(Core::Id(Constants::TASK_CATEGORY_COMPILE));
|
||||||
d->m_taskHub->clearTasks(Core::Id(Constants::TASK_CATEGORY_BUILDSYSTEM));
|
d->m_taskHub->clearTasks(Core::Id(Constants::TASK_CATEGORY_BUILDSYSTEM));
|
||||||
progressManager->setApplicationLabel(QString());
|
progressManager->setApplicationLabel(QString());
|
||||||
@@ -537,7 +539,7 @@ bool BuildManager::buildList(BuildStepList *bsl, const QString &stepListName)
|
|||||||
return buildLists(QList<BuildStepList *>() << bsl, QStringList() << stepListName);
|
return buildLists(QList<BuildStepList *>() << bsl, QStringList() << stepListName);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool BuildManager::buildLists(QList<BuildStepList *> bsls, const QStringList &stepListNames)
|
bool BuildManager::buildLists(QList<BuildStepList *> bsls, const QStringList &stepListNames, const QStringList &preambelMessage)
|
||||||
{
|
{
|
||||||
QList<BuildStep *> steps;
|
QList<BuildStep *> steps;
|
||||||
foreach(BuildStepList *list, bsls)
|
foreach(BuildStepList *list, bsls)
|
||||||
@@ -559,7 +561,7 @@ bool BuildManager::buildLists(QList<BuildStepList *> bsls, const QStringList &st
|
|||||||
|
|
||||||
if (ProjectExplorerPlugin::instance()->projectExplorerSettings().showCompilerOutput)
|
if (ProjectExplorerPlugin::instance()->projectExplorerSettings().showCompilerOutput)
|
||||||
d->m_outputWindow->popup(false);
|
d->m_outputWindow->popup(false);
|
||||||
startBuildQueue();
|
startBuildQueue(preambelMessage);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -60,7 +60,8 @@ public:
|
|||||||
|
|
||||||
bool tasksAvailable() const;
|
bool tasksAvailable() const;
|
||||||
|
|
||||||
bool buildLists(QList<BuildStepList *> bsls, const QStringList &stepListNames);
|
bool buildLists(QList<BuildStepList *> bsls, const QStringList &stepListNames,
|
||||||
|
const QStringList &preambelMessage = QStringList());
|
||||||
bool buildList(BuildStepList *bsl, const QString &stepListName);
|
bool buildList(BuildStepList *bsl, const QString &stepListName);
|
||||||
|
|
||||||
bool isBuilding(Project *p);
|
bool isBuilding(Project *p);
|
||||||
@@ -103,7 +104,7 @@ private slots:
|
|||||||
void finish();
|
void finish();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void startBuildQueue();
|
void startBuildQueue(const QStringList &preambleMessage = QStringList());
|
||||||
void nextStep();
|
void nextStep();
|
||||||
void clearBuildQueue();
|
void clearBuildQueue();
|
||||||
bool buildQueueAppend(QList<BuildStep *> steps, QStringList names);
|
bool buildQueueAppend(QList<BuildStep *> steps, QStringList names);
|
||||||
|
|||||||
@@ -73,6 +73,11 @@ QString BuildSettingsPanelFactory::displayName() const
|
|||||||
return QCoreApplication::translate("BuildSettingsPanelFactory", "Build Settings");
|
return QCoreApplication::translate("BuildSettingsPanelFactory", "Build Settings");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int BuildSettingsPanelFactory::priority() const
|
||||||
|
{
|
||||||
|
return 10;
|
||||||
|
}
|
||||||
|
|
||||||
bool BuildSettingsPanelFactory::supports(Target *target)
|
bool BuildSettingsPanelFactory::supports(Target *target)
|
||||||
{
|
{
|
||||||
return target->buildConfigurationFactory();
|
return target->buildConfigurationFactory();
|
||||||
|
|||||||
@@ -60,6 +60,7 @@ class BuildSettingsPanelFactory : public ITargetPanelFactory
|
|||||||
public:
|
public:
|
||||||
QString id() const;
|
QString id() const;
|
||||||
QString displayName() const;
|
QString displayName() const;
|
||||||
|
int priority() const;
|
||||||
|
|
||||||
bool supports(Target *target);
|
bool supports(Target *target);
|
||||||
PropertiesPanel *createPanel(Target *target);
|
PropertiesPanel *createPanel(Target *target);
|
||||||
|
|||||||
@@ -53,6 +53,11 @@ QString CodeStyleSettingsPanelFactory::displayName() const
|
|||||||
return QCoreApplication::translate("CodeStyleSettingsPanelFactory", "Code Style Settings");
|
return QCoreApplication::translate("CodeStyleSettingsPanelFactory", "Code Style Settings");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int CodeStyleSettingsPanelFactory::priority() const
|
||||||
|
{
|
||||||
|
return 40;
|
||||||
|
}
|
||||||
|
|
||||||
bool CodeStyleSettingsPanelFactory::supports(Project *project)
|
bool CodeStyleSettingsPanelFactory::supports(Project *project)
|
||||||
{
|
{
|
||||||
Q_UNUSED(project);
|
Q_UNUSED(project);
|
||||||
|
|||||||
@@ -49,6 +49,7 @@ class CodeStyleSettingsPanelFactory : public IProjectPanelFactory
|
|||||||
public:
|
public:
|
||||||
QString id() const;
|
QString id() const;
|
||||||
QString displayName() const;
|
QString displayName() const;
|
||||||
|
int priority() const;
|
||||||
PropertiesPanel *createPanel(Project *project);
|
PropertiesPanel *createPanel(Project *project);
|
||||||
bool supports(Project *project);
|
bool supports(Project *project);
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -275,6 +275,11 @@ QString DependenciesPanelFactory::displayName() const
|
|||||||
return QCoreApplication::translate("DependenciesPanelFactory", "Dependencies");
|
return QCoreApplication::translate("DependenciesPanelFactory", "Dependencies");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int DependenciesPanelFactory::priority() const
|
||||||
|
{
|
||||||
|
return 50;
|
||||||
|
}
|
||||||
|
|
||||||
bool DependenciesPanelFactory::supports(Project *project)
|
bool DependenciesPanelFactory::supports(Project *project)
|
||||||
{
|
{
|
||||||
Q_UNUSED(project);
|
Q_UNUSED(project);
|
||||||
|
|||||||
@@ -61,6 +61,7 @@ public:
|
|||||||
|
|
||||||
QString id() const;
|
QString id() const;
|
||||||
QString displayName() const;
|
QString displayName() const;
|
||||||
|
int priority() const;
|
||||||
bool supports(Project *project);
|
bool supports(Project *project);
|
||||||
PropertiesPanel *createPanel(Project *project);
|
PropertiesPanel *createPanel(Project *project);
|
||||||
private:
|
private:
|
||||||
|
|||||||
@@ -49,6 +49,11 @@ QString EditorSettingsPanelFactory::displayName() const
|
|||||||
return QCoreApplication::translate("EditorSettingsPanelFactory", "Editor Settings");
|
return QCoreApplication::translate("EditorSettingsPanelFactory", "Editor Settings");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int EditorSettingsPanelFactory::priority() const
|
||||||
|
{
|
||||||
|
return 30;
|
||||||
|
}
|
||||||
|
|
||||||
bool EditorSettingsPanelFactory::supports(Project *project)
|
bool EditorSettingsPanelFactory::supports(Project *project)
|
||||||
{
|
{
|
||||||
Q_UNUSED(project);
|
Q_UNUSED(project);
|
||||||
|
|||||||
@@ -49,6 +49,7 @@ class EditorSettingsPanelFactory : public IProjectPanelFactory
|
|||||||
public:
|
public:
|
||||||
QString id() const;
|
QString id() const;
|
||||||
QString displayName() const;
|
QString displayName() const;
|
||||||
|
int priority() const;
|
||||||
PropertiesPanel *createPanel(Project *project);
|
PropertiesPanel *createPanel(Project *project);
|
||||||
bool supports(Project *project);
|
bool supports(Project *project);
|
||||||
};
|
};
|
||||||
|
|||||||
BIN
src/plugins/projectexplorer/images/unconfigured.png
Normal file
BIN
src/plugins/projectexplorer/images/unconfigured.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 1.7 KiB |
@@ -75,6 +75,10 @@ class PROJECTEXPLORER_EXPORT IPanelFactory : public QObject
|
|||||||
public:
|
public:
|
||||||
virtual QString id() const = 0;
|
virtual QString id() const = 0;
|
||||||
virtual QString displayName() const = 0;
|
virtual QString displayName() const = 0;
|
||||||
|
virtual int priority() const = 0;
|
||||||
|
static bool prioritySort(IPanelFactory *a, IPanelFactory *b)
|
||||||
|
{ return (a->priority() == b->priority() && a->id() < b->id())
|
||||||
|
|| a->priority() < b->priority(); }
|
||||||
};
|
};
|
||||||
|
|
||||||
class PROJECTEXPLORER_EXPORT IProjectPanelFactory : public IPanelFactory
|
class PROJECTEXPLORER_EXPORT IProjectPanelFactory : public IPanelFactory
|
||||||
@@ -83,6 +87,8 @@ class PROJECTEXPLORER_EXPORT IProjectPanelFactory : public IPanelFactory
|
|||||||
public:
|
public:
|
||||||
virtual bool supports(Project *project) = 0;
|
virtual bool supports(Project *project) = 0;
|
||||||
virtual PropertiesPanel *createPanel(Project *project) = 0;
|
virtual PropertiesPanel *createPanel(Project *project) = 0;
|
||||||
|
signals:
|
||||||
|
void projectUpdated(ProjectExplorer::Project *project);
|
||||||
};
|
};
|
||||||
|
|
||||||
class PROJECTEXPLORER_EXPORT ITargetPanelFactory : public IPanelFactory
|
class PROJECTEXPLORER_EXPORT ITargetPanelFactory : public IPanelFactory
|
||||||
|
|||||||
@@ -40,6 +40,7 @@
|
|||||||
#include <coreplugin/ifile.h>
|
#include <coreplugin/ifile.h>
|
||||||
#include <coreplugin/icore.h>
|
#include <coreplugin/icore.h>
|
||||||
#include <coreplugin/coreconstants.h>
|
#include <coreplugin/coreconstants.h>
|
||||||
|
#include <coreplugin/modemanager.h>
|
||||||
|
|
||||||
#include <projectexplorer/projectexplorer.h>
|
#include <projectexplorer/projectexplorer.h>
|
||||||
#include <projectexplorer/session.h>
|
#include <projectexplorer/session.h>
|
||||||
@@ -487,6 +488,8 @@ MiniProjectTargetSelector::MiniProjectTargetSelector(QAction *targetSelectorActi
|
|||||||
m_summaryLabel->setMargin(3);
|
m_summaryLabel->setMargin(3);
|
||||||
m_summaryLabel->setAlignment(Qt::AlignLeft | Qt::AlignTop);
|
m_summaryLabel->setAlignment(Qt::AlignLeft | Qt::AlignTop);
|
||||||
m_summaryLabel->setStyleSheet(QString::fromLatin1("background: #464646;"));
|
m_summaryLabel->setStyleSheet(QString::fromLatin1("background: #464646;"));
|
||||||
|
m_summaryLabel->setSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::MinimumExpanding);
|
||||||
|
m_summaryLabel->setTextInteractionFlags(m_summaryLabel->textInteractionFlags() | Qt::LinksAccessibleByMouse);
|
||||||
|
|
||||||
grid->addWidget(m_summaryLabel, 0, 0, 1, 2 * LAST - 1);
|
grid->addWidget(m_summaryLabel, 0, 0, 1, 2 * LAST - 1);
|
||||||
|
|
||||||
@@ -519,6 +522,9 @@ MiniProjectTargetSelector::MiniProjectTargetSelector(QAction *targetSelectorActi
|
|||||||
if (m_sessionManager->startupProject())
|
if (m_sessionManager->startupProject())
|
||||||
activeTargetChanged(m_sessionManager->startupProject()->activeTarget());
|
activeTargetChanged(m_sessionManager->startupProject()->activeTarget());
|
||||||
|
|
||||||
|
connect(m_summaryLabel, SIGNAL(linkActivated(QString)),
|
||||||
|
this, SLOT(switchToProjectsMode()));
|
||||||
|
|
||||||
connect(m_sessionManager, SIGNAL(startupProjectChanged(ProjectExplorer::Project*)),
|
connect(m_sessionManager, SIGNAL(startupProjectChanged(ProjectExplorer::Project*)),
|
||||||
this, SLOT(changeStartupProject(ProjectExplorer::Project*)));
|
this, SLOT(changeStartupProject(ProjectExplorer::Project*)));
|
||||||
|
|
||||||
@@ -994,6 +1000,7 @@ QSize MiniProjectTargetSelector::sizeHint() const
|
|||||||
static QWidget *actionBar = Core::ICore::mainWindow()->findChild<QWidget*>(QLatin1String("actionbar"));
|
static QWidget *actionBar = Core::ICore::mainWindow()->findChild<QWidget*>(QLatin1String("actionbar"));
|
||||||
Q_ASSERT(actionBar);
|
Q_ASSERT(actionBar);
|
||||||
|
|
||||||
|
// At least the size of the actionbar
|
||||||
int alignedWithActionHeight
|
int alignedWithActionHeight
|
||||||
= actionBar->height() - statusBar->height();
|
= actionBar->height() - statusBar->height();
|
||||||
QSize s = QWidget::sizeHint();
|
QSize s = QWidget::sizeHint();
|
||||||
@@ -1057,23 +1064,55 @@ void MiniProjectTargetSelector::updateActionAndSummary()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
m_projectAction->setProperty("heading", projectName);
|
m_projectAction->setProperty("heading", projectName);
|
||||||
|
if (project && project->needsConfiguration()) {
|
||||||
|
m_projectAction->setProperty("subtitle", tr("Unconfigured"));
|
||||||
|
} else {
|
||||||
m_projectAction->setProperty("subtitle", buildConfig);
|
m_projectAction->setProperty("subtitle", buildConfig);
|
||||||
|
}
|
||||||
m_projectAction->setIcon(targetIcon);
|
m_projectAction->setIcon(targetIcon);
|
||||||
QString targetTip = targetName.isEmpty() ? QLatin1String("")
|
QStringList lines;
|
||||||
: tr("<b>Target:</b> %1<br/>").arg(targetName);
|
lines << tr("<b>Project:</b> %1").arg(projectName);
|
||||||
QString buildTip = buildConfig.isEmpty() ? QLatin1String("")
|
if (!targetName.isEmpty())
|
||||||
: tr("<b>Build:</b> %1<br/>").arg(buildConfig);
|
lines << tr("<b>Target:</b> %1").arg(targetName);
|
||||||
QString deployTip = deployConfig.isEmpty() ? QLatin1String("")
|
if (!buildConfig.isEmpty())
|
||||||
: tr("<b>Deploy:</b> %1<br/>").arg(deployConfig);
|
lines << tr("<b>Build:</b> %1").arg(buildConfig);
|
||||||
QString targetToolTip = targetToolTipText.isEmpty() ? QLatin1String("")
|
if (!deployConfig.isEmpty())
|
||||||
: tr("<br/>%1").arg(targetToolTipText);
|
lines << tr("<b>Deploy:</b> %1").arg(deployConfig);
|
||||||
QString toolTip = tr("<html><nobr><b>Project:</b> %1<br/>%2%3%4<b>Run:</b> %5%6</html>");
|
if (!runConfig.isEmpty())
|
||||||
m_projectAction->setToolTip(toolTip.arg(projectName, targetTip, buildTip, deployTip, runConfig, targetToolTip));
|
lines << tr("<b>Run:</b> %1").arg(runConfig);
|
||||||
|
if (!targetToolTipText.isEmpty())
|
||||||
|
lines << tr("%1").arg(targetToolTipText);
|
||||||
|
QString toolTip = tr("<html><nobr>%1</html>")
|
||||||
|
.arg(lines.join(QLatin1String("<br/>")));
|
||||||
|
m_projectAction->setToolTip(toolTip);
|
||||||
updateSummary();
|
updateSummary();
|
||||||
}
|
}
|
||||||
|
|
||||||
void MiniProjectTargetSelector::updateSummary()
|
void MiniProjectTargetSelector::updateSummary()
|
||||||
{
|
{
|
||||||
|
// Count the number of lines
|
||||||
|
int visibleLineCount = m_projectListWidget->isVisibleTo(this) ? 0 : 1;
|
||||||
|
for (int i = TARGET; i < LAST; ++i)
|
||||||
|
visibleLineCount += m_listWidgets[i]->isVisibleTo(this) ? 0 : 1;
|
||||||
|
|
||||||
|
if (visibleLineCount == LAST) {
|
||||||
|
m_summaryLabel->setMinimumHeight(0);
|
||||||
|
m_summaryLabel->setMaximumHeight(800);
|
||||||
|
} else {
|
||||||
|
if (visibleLineCount < 3) {
|
||||||
|
foreach (Project *p, m_sessionManager->projects()) {
|
||||||
|
if (p->needsConfiguration()) {
|
||||||
|
visibleLineCount = 3;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
int height = visibleLineCount * QFontMetrics(m_summaryLabel->font()).height() + m_summaryLabel->margin() *2;
|
||||||
|
m_summaryLabel->setMinimumHeight(height);
|
||||||
|
m_summaryLabel->setMaximumHeight(height);
|
||||||
|
}
|
||||||
|
|
||||||
QString summary;
|
QString summary;
|
||||||
if (Project *startupProject = m_sessionManager->startupProject()) {
|
if (Project *startupProject = m_sessionManager->startupProject()) {
|
||||||
if (!m_projectListWidget->isVisibleTo(this))
|
if (!m_projectListWidget->isVisibleTo(this))
|
||||||
@@ -1090,10 +1129,24 @@ void MiniProjectTargetSelector::updateSummary()
|
|||||||
if (!m_listWidgets[RUN]->isVisibleTo(this) && activeTarget->activeRunConfiguration())
|
if (!m_listWidgets[RUN]->isVisibleTo(this) && activeTarget->activeRunConfiguration())
|
||||||
summary.append(tr("Run: <b>%1</b><br/>").arg(
|
summary.append(tr("Run: <b>%1</b><br/>").arg(
|
||||||
activeTarget->activeRunConfiguration()->displayName()));
|
activeTarget->activeRunConfiguration()->displayName()));
|
||||||
|
} else if (startupProject->needsConfiguration()) {
|
||||||
|
summary = tr("<style type=text/css>"
|
||||||
|
"a:link {color: rgb(128, 128, 255, 240);}</style>"
|
||||||
|
"The project <b>%1</b> is not yet configured<br/><br/>"
|
||||||
|
"You can configure it in the <a href=\"projectmode\">Projects mode</a><br/>")
|
||||||
|
.arg(startupProject->displayName());
|
||||||
|
} else {
|
||||||
|
if (!m_listWidgets[TARGET]->isVisibleTo(this))
|
||||||
|
summary.append("<br/>");
|
||||||
|
if (!m_listWidgets[BUILD]->isVisibleTo(this))
|
||||||
|
summary.append("<br/>");
|
||||||
|
if (!m_listWidgets[DEPLOY]->isVisibleTo(this))
|
||||||
|
summary.append("<br/>");
|
||||||
|
if (!m_listWidgets[RUN]->isVisibleTo(this))
|
||||||
|
summary.append("<br/>");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
m_summaryLabel->setText(summary);
|
m_summaryLabel->setText(summary);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void MiniProjectTargetSelector::paintEvent(QPaintEvent *)
|
void MiniProjectTargetSelector::paintEvent(QPaintEvent *)
|
||||||
@@ -1107,3 +1160,9 @@ void MiniProjectTargetSelector::paintEvent(QPaintEvent *)
|
|||||||
static QImage image(QLatin1String(":/projectexplorer/images/targetpanel_bottom.png"));
|
static QImage image(QLatin1String(":/projectexplorer/images/targetpanel_bottom.png"));
|
||||||
Utils::StyleHelper::drawCornerImage(image, &painter, bottomRect, 1, 1, 1, 1);
|
Utils::StyleHelper::drawCornerImage(image, &painter, bottomRect, 1, 1, 1, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void MiniProjectTargetSelector::switchToProjectsMode()
|
||||||
|
{
|
||||||
|
Core::ICore::instance()->modeManager()->activateMode(Constants::MODE_SESSION);
|
||||||
|
hide();
|
||||||
|
}
|
||||||
|
|||||||
@@ -54,7 +54,6 @@ class SessionManager;
|
|||||||
namespace Internal {
|
namespace Internal {
|
||||||
|
|
||||||
// helper classes
|
// helper classes
|
||||||
|
|
||||||
class ListWidget : public QListWidget
|
class ListWidget : public QListWidget
|
||||||
{
|
{
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
@@ -144,6 +143,7 @@ private slots:
|
|||||||
|
|
||||||
void delayedHide();
|
void delayedHide();
|
||||||
void updateActionAndSummary();
|
void updateActionAndSummary();
|
||||||
|
void switchToProjectsMode();
|
||||||
private:
|
private:
|
||||||
void updateProjectListVisible();
|
void updateProjectListVisible();
|
||||||
void updateTargetListVisible();
|
void updateTargetListVisible();
|
||||||
|
|||||||
@@ -383,4 +383,9 @@ void Project::setNamedSettings(const QString &name, QVariant &value)
|
|||||||
d->m_pluginSettings.insert(name, value);
|
d->m_pluginSettings.insert(name, value);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool Project::needsConfiguration() const
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
} // namespace ProjectExplorer
|
} // namespace ProjectExplorer
|
||||||
|
|||||||
@@ -117,6 +117,8 @@ public:
|
|||||||
QVariant namedSettings(const QString &name) const;
|
QVariant namedSettings(const QString &name) const;
|
||||||
void setNamedSettings(const QString &name, QVariant &value);
|
void setNamedSettings(const QString &name, QVariant &value);
|
||||||
|
|
||||||
|
virtual bool needsConfiguration() const;
|
||||||
|
|
||||||
signals:
|
signals:
|
||||||
void fileListChanged();
|
void fileListChanged();
|
||||||
|
|
||||||
|
|||||||
@@ -1340,8 +1340,21 @@ QList<Project *> ProjectExplorerPlugin::openProjects(const QStringList &fileName
|
|||||||
}
|
}
|
||||||
updateActions();
|
updateActions();
|
||||||
|
|
||||||
if (!openedPro.isEmpty())
|
bool switchToProjectsMode = false;
|
||||||
|
foreach (Project *p, openedPro) {
|
||||||
|
if (p->needsConfiguration()) {
|
||||||
|
switchToProjectsMode = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!openedPro.isEmpty()) {
|
||||||
|
if (switchToProjectsMode)
|
||||||
|
Core::ModeManager::activateMode(QLatin1String(ProjectExplorer::Constants::MODE_SESSION));
|
||||||
|
else
|
||||||
Core::ModeManager::activateMode(QLatin1String(Core::Constants::MODE_EDIT));
|
Core::ModeManager::activateMode(QLatin1String(Core::Constants::MODE_EDIT));
|
||||||
|
Core::ModeManager::setFocusToCurrentMode();
|
||||||
|
}
|
||||||
|
|
||||||
return openedPro;
|
return openedPro;
|
||||||
}
|
}
|
||||||
@@ -1812,6 +1825,12 @@ int ProjectExplorerPlugin::queue(QList<Project *> projects, QStringList stepIds)
|
|||||||
|
|
||||||
QList<BuildStepList *> stepLists;
|
QList<BuildStepList *> stepLists;
|
||||||
QStringList names;
|
QStringList names;
|
||||||
|
QStringList preambleMessage;
|
||||||
|
|
||||||
|
foreach (Project *pro, projects)
|
||||||
|
if (pro && pro->needsConfiguration())
|
||||||
|
preambleMessage.append(tr("The project %1 is not configured, skipping it.\n")
|
||||||
|
.arg(pro->displayName()));
|
||||||
foreach (const QString id, stepIds) {
|
foreach (const QString id, stepIds) {
|
||||||
foreach (Project *pro, projects) {
|
foreach (Project *pro, projects) {
|
||||||
if (!pro || !pro->activeTarget())
|
if (!pro || !pro->activeTarget())
|
||||||
@@ -1833,7 +1852,7 @@ int ProjectExplorerPlugin::queue(QList<Project *> projects, QStringList stepIds)
|
|||||||
if (stepLists.isEmpty())
|
if (stepLists.isEmpty())
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
if (!d->m_buildManager->buildLists(stepLists, names))
|
if (!d->m_buildManager->buildLists(stepLists, names, preambleMessage))
|
||||||
return -1;
|
return -1;
|
||||||
return stepLists.count();
|
return stepLists.count();
|
||||||
}
|
}
|
||||||
@@ -1982,6 +2001,9 @@ QPair<bool, QString> ProjectExplorerPlugin::buildSettingsEnabled(Project *pro)
|
|||||||
} else if (d->m_buildManager->isBuilding(pro)) {
|
} else if (d->m_buildManager->isBuilding(pro)) {
|
||||||
result.first = false;
|
result.first = false;
|
||||||
result.second = tr("Currently building the active project.");
|
result.second = tr("Currently building the active project.");
|
||||||
|
} else if (pro->needsConfiguration()) {
|
||||||
|
result.first = false;
|
||||||
|
result.second = tr("The project %1 is not configured.").arg(pro->displayName());
|
||||||
} else if (!hasBuildSettings(pro)) {
|
} else if (!hasBuildSettings(pro)) {
|
||||||
result.first = false;
|
result.first = false;
|
||||||
result.second = tr("Project has no build settings.");
|
result.second = tr("Project has no build settings.");
|
||||||
@@ -2055,8 +2077,9 @@ bool ProjectExplorerPlugin::hasDeploySettings(Project *pro)
|
|||||||
{
|
{
|
||||||
const QList<Project *> & projects = d->m_session->projectOrder(pro);
|
const QList<Project *> & projects = d->m_session->projectOrder(pro);
|
||||||
foreach(Project *project, projects)
|
foreach(Project *project, projects)
|
||||||
if (project->activeTarget()->activeDeployConfiguration() &&
|
if (project->activeTarget()
|
||||||
!project->activeTarget()->activeDeployConfiguration()->stepList()->isEmpty())
|
&& project->activeTarget()->activeDeployConfiguration()
|
||||||
|
&& !project->activeTarget()->activeDeployConfiguration()->stepList()->isEmpty())
|
||||||
return true;
|
return true;
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@@ -2066,7 +2089,9 @@ void ProjectExplorerPlugin::runProject(Project *pro, RunMode mode, const bool fo
|
|||||||
if (!pro)
|
if (!pro)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
runRunConfiguration(pro->activeTarget()->activeRunConfiguration(), mode, forceSkipDeploy);
|
if (Target *target = pro->activeTarget())
|
||||||
|
if (RunConfiguration *rc = target->activeRunConfiguration())
|
||||||
|
runRunConfiguration(rc, mode, forceSkipDeploy);
|
||||||
}
|
}
|
||||||
|
|
||||||
void ProjectExplorerPlugin::runRunConfiguration(ProjectExplorer::RunConfiguration *rc,
|
void ProjectExplorerPlugin::runRunConfiguration(ProjectExplorer::RunConfiguration *rc,
|
||||||
@@ -2285,6 +2310,9 @@ QString ProjectExplorerPlugin::cannotRunReason(Project *project, RunMode runMode
|
|||||||
if (!project)
|
if (!project)
|
||||||
return tr("No active project.");
|
return tr("No active project.");
|
||||||
|
|
||||||
|
if (project->needsConfiguration())
|
||||||
|
return tr("The project %1 is not configured.").arg(project->displayName());
|
||||||
|
|
||||||
if (!project->activeTarget())
|
if (!project->activeTarget())
|
||||||
return tr("The project '%1' has no active target.").arg(project->displayName());
|
return tr("The project '%1' has no active target.").arg(project->displayName());
|
||||||
|
|
||||||
|
|||||||
@@ -41,5 +41,6 @@
|
|||||||
<file>images/window.png</file>
|
<file>images/window.png</file>
|
||||||
<file>images/stop_small.png</file>
|
<file>images/stop_small.png</file>
|
||||||
<file>images/disabledbuildstep.png</file>
|
<file>images/disabledbuildstep.png</file>
|
||||||
|
<file>images/unconfigured.png</file>
|
||||||
</qresource>
|
</qresource>
|
||||||
</RCC>
|
</RCC>
|
||||||
|
|||||||
@@ -142,6 +142,7 @@ PanelsWidget::PanelsWidget(QWidget *parent) :
|
|||||||
setWidget(m_root);
|
setWidget(m_root);
|
||||||
setFrameStyle(QFrame::NoFrame);
|
setFrameStyle(QFrame::NoFrame);
|
||||||
setWidgetResizable(true);
|
setWidgetResizable(true);
|
||||||
|
setFocusPolicy(Qt::NoFocus);
|
||||||
}
|
}
|
||||||
|
|
||||||
PanelsWidget::~PanelsWidget()
|
PanelsWidget::~PanelsWidget()
|
||||||
@@ -263,6 +264,12 @@ void ProjectWindow::extensionsInitialized()
|
|||||||
connect(fac, SIGNAL(supportedTargetIdsChanged()),
|
connect(fac, SIGNAL(supportedTargetIdsChanged()),
|
||||||
this, SLOT(targetFactoriesChanged()));
|
this, SLOT(targetFactoriesChanged()));
|
||||||
|
|
||||||
|
QList<IProjectPanelFactory *> list = ExtensionSystem::PluginManager::instance()->getObjects<IProjectPanelFactory>();
|
||||||
|
qSort(list.begin(), list.end(), &IPanelFactory::prioritySort);
|
||||||
|
foreach (IProjectPanelFactory *fac, list)
|
||||||
|
connect (fac, SIGNAL(projectUpdated(ProjectExplorer::Project *)),
|
||||||
|
this, SLOT(projectUpdated(ProjectExplorer::Project *)));
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void ProjectWindow::aboutToShutdown()
|
void ProjectWindow::aboutToShutdown()
|
||||||
@@ -272,6 +279,15 @@ void ProjectWindow::aboutToShutdown()
|
|||||||
disconnect(ProjectExplorerPlugin::instance()->session(), 0, this, 0);
|
disconnect(ProjectExplorerPlugin::instance()->session(), 0, this, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void ProjectWindow::projectUpdated(Project *p)
|
||||||
|
{
|
||||||
|
// Called after a project was configured
|
||||||
|
int index = m_tabWidget->currentIndex();
|
||||||
|
deregisterProject(p);
|
||||||
|
registerProject(p);
|
||||||
|
m_tabWidget->setCurrentIndex(index);
|
||||||
|
}
|
||||||
|
|
||||||
void ProjectWindow::targetFactoriesChanged()
|
void ProjectWindow::targetFactoriesChanged()
|
||||||
{
|
{
|
||||||
bool changed = false;
|
bool changed = false;
|
||||||
@@ -290,6 +306,8 @@ void ProjectWindow::targetFactoriesChanged()
|
|||||||
|
|
||||||
bool ProjectWindow::useTargetPage(ProjectExplorer::Project *project)
|
bool ProjectWindow::useTargetPage(ProjectExplorer::Project *project)
|
||||||
{
|
{
|
||||||
|
if (project->targets().isEmpty())
|
||||||
|
return false;
|
||||||
if (project->targets().size() > 1)
|
if (project->targets().size() > 1)
|
||||||
return true;
|
return true;
|
||||||
QStringList tmp;
|
QStringList tmp;
|
||||||
@@ -323,10 +341,13 @@ void ProjectWindow::registerProject(ProjectExplorer::Project *project)
|
|||||||
|
|
||||||
if (!usesTargetPage){
|
if (!usesTargetPage){
|
||||||
// Show the target specific pages directly
|
// Show the target specific pages directly
|
||||||
|
if (project->activeTarget()) {
|
||||||
QList<ITargetPanelFactory *> factories =
|
QList<ITargetPanelFactory *> factories =
|
||||||
ExtensionSystem::PluginManager::instance()->getObjects<ITargetPanelFactory>();
|
ExtensionSystem::PluginManager::instance()->getObjects<ITargetPanelFactory>();
|
||||||
|
|
||||||
foreach (ITargetPanelFactory *factory, factories) {
|
qSort(factories.begin(), factories.end(), &IPanelFactory::prioritySort);
|
||||||
|
|
||||||
|
foreach (ITargetPanelFactory *factory, factories)
|
||||||
if (factory->supports(project->activeTarget()))
|
if (factory->supports(project->activeTarget()))
|
||||||
subtabs << factory->displayName();
|
subtabs << factory->displayName();
|
||||||
}
|
}
|
||||||
@@ -336,8 +357,8 @@ void ProjectWindow::registerProject(ProjectExplorer::Project *project)
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Add the project specific pages
|
// Add the project specific pages
|
||||||
|
|
||||||
QList<IProjectPanelFactory *> factories = ExtensionSystem::PluginManager::instance()->getObjects<IProjectPanelFactory>();
|
QList<IProjectPanelFactory *> factories = ExtensionSystem::PluginManager::instance()->getObjects<IProjectPanelFactory>();
|
||||||
|
qSort(factories.begin(), factories.end(), &IPanelFactory::prioritySort);
|
||||||
foreach (IProjectPanelFactory *panelFactory, factories) {
|
foreach (IProjectPanelFactory *panelFactory, factories) {
|
||||||
if (panelFactory->supports(project))
|
if (panelFactory->supports(project))
|
||||||
subtabs << panelFactory->displayName();
|
subtabs << panelFactory->displayName();
|
||||||
@@ -404,9 +425,11 @@ void ProjectWindow::showProperties(int index, int subIndex)
|
|||||||
m_centralWidget->setCurrentWidget(m_currentWidget);
|
m_centralWidget->setCurrentWidget(m_currentWidget);
|
||||||
}
|
}
|
||||||
++pos;
|
++pos;
|
||||||
} else {
|
} else if (project->activeTarget()) {
|
||||||
// No Targets page, target specific pages are first in the list
|
// No Targets page, target specific pages are first in the list
|
||||||
foreach (ITargetPanelFactory *panelFactory, ExtensionSystem::PluginManager::instance()->getObjects<ITargetPanelFactory>()) {
|
QList<ITargetPanelFactory *> factories = ExtensionSystem::PluginManager::instance()->getObjects<ITargetPanelFactory>();
|
||||||
|
qSort(factories.begin(), factories.end(), &ITargetPanelFactory::prioritySort);
|
||||||
|
foreach (ITargetPanelFactory *panelFactory, factories) {
|
||||||
if (panelFactory->supports(project->activeTarget())) {
|
if (panelFactory->supports(project->activeTarget())) {
|
||||||
if (subIndex == pos) {
|
if (subIndex == pos) {
|
||||||
fac = panelFactory;
|
fac = panelFactory;
|
||||||
@@ -418,7 +441,9 @@ void ProjectWindow::showProperties(int index, int subIndex)
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (!fac) {
|
if (!fac) {
|
||||||
foreach (IProjectPanelFactory *panelFactory, ExtensionSystem::PluginManager::instance()->getObjects<IProjectPanelFactory>()) {
|
QList<IProjectPanelFactory *> factories = ExtensionSystem::PluginManager::instance()->getObjects<IProjectPanelFactory>();
|
||||||
|
qSort(factories.begin(), factories.end(), &IPanelFactory::prioritySort);
|
||||||
|
foreach (IProjectPanelFactory *panelFactory, factories) {
|
||||||
if (panelFactory->supports(project)) {
|
if (panelFactory->supports(project)) {
|
||||||
if (subIndex == pos) {
|
if (subIndex == pos) {
|
||||||
fac = panelFactory;
|
fac = panelFactory;
|
||||||
|
|||||||
@@ -90,6 +90,7 @@ private slots:
|
|||||||
void registerProject(ProjectExplorer::Project*);
|
void registerProject(ProjectExplorer::Project*);
|
||||||
void deregisterProject(ProjectExplorer::Project*);
|
void deregisterProject(ProjectExplorer::Project*);
|
||||||
void startupProjectChanged(ProjectExplorer::Project *);
|
void startupProjectChanged(ProjectExplorer::Project *);
|
||||||
|
void projectUpdated(ProjectExplorer::Project *p);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
bool useTargetPage(ProjectExplorer::Project *project);
|
bool useTargetPage(ProjectExplorer::Project *project);
|
||||||
|
|||||||
@@ -94,6 +94,11 @@ QString RunSettingsPanelFactory::displayName() const
|
|||||||
return RunSettingsWidget::tr("Run Settings");
|
return RunSettingsWidget::tr("Run Settings");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int RunSettingsPanelFactory::priority() const
|
||||||
|
{
|
||||||
|
return 20;
|
||||||
|
}
|
||||||
|
|
||||||
bool RunSettingsPanelFactory::supports(Target *target)
|
bool RunSettingsPanelFactory::supports(Target *target)
|
||||||
{
|
{
|
||||||
Q_UNUSED(target);
|
Q_UNUSED(target);
|
||||||
|
|||||||
@@ -67,6 +67,7 @@ class RunSettingsPanelFactory : public ITargetPanelFactory
|
|||||||
public:
|
public:
|
||||||
QString id() const;
|
QString id() const;
|
||||||
QString displayName() const;
|
QString displayName() const;
|
||||||
|
int priority() const;
|
||||||
bool supports(Target *target);
|
bool supports(Target *target);
|
||||||
PropertiesPanel *createPanel(Target *target);
|
PropertiesPanel *createPanel(Target *target);
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -1080,7 +1080,10 @@ QString InternalLibraryDetailsController::snippet() const
|
|||||||
ProjectExplorer::ProjectExplorerPlugin::instance()->session()->projectForFile(proFile());
|
ProjectExplorer::ProjectExplorerPlugin::instance()->session()->projectForFile(proFile());
|
||||||
|
|
||||||
// the build directory of the active build configuration
|
// the build directory of the active build configuration
|
||||||
QDir rootBuildDir(project->activeTarget()->activeBuildConfiguration()->buildDirectory());
|
QDir rootBuildDir = rootDir; // If the project is unconfigured use the project dir
|
||||||
|
if (ProjectExplorer::Target *t = project->activeTarget())
|
||||||
|
if (ProjectExplorer::BuildConfiguration *bc = t->activeBuildConfiguration())
|
||||||
|
rootBuildDir = bc->buildDirectory();
|
||||||
|
|
||||||
// the project for which we insert the snippet inside build tree
|
// the project for which we insert the snippet inside build tree
|
||||||
QFileInfo pfi(rootBuildDir.filePath(proRelavitePath));
|
QFileInfo pfi(rootBuildDir.filePath(proRelavitePath));
|
||||||
|
|||||||
@@ -1,92 +0,0 @@
|
|||||||
/**************************************************************************
|
|
||||||
**
|
|
||||||
** This file is part of Qt Creator
|
|
||||||
**
|
|
||||||
** Copyright (c) 2012 Nokia Corporation and/or its subsidiary(-ies).
|
|
||||||
**
|
|
||||||
** Contact: Nokia Corporation (qt-info@nokia.com)
|
|
||||||
**
|
|
||||||
**
|
|
||||||
** GNU Lesser General Public License Usage
|
|
||||||
**
|
|
||||||
** 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, Nokia gives you certain additional
|
|
||||||
** rights. These rights are described in the Nokia Qt LGPL Exception
|
|
||||||
** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
|
|
||||||
**
|
|
||||||
** Other Usage
|
|
||||||
**
|
|
||||||
** Alternatively, this file may be used in accordance with the terms and
|
|
||||||
** conditions contained in a signed written agreement between you and Nokia.
|
|
||||||
**
|
|
||||||
** If you have questions regarding the use of this file, please contact
|
|
||||||
** Nokia at qt-info@nokia.com.
|
|
||||||
**
|
|
||||||
**************************************************************************/
|
|
||||||
|
|
||||||
#include "projectloadwizard.h"
|
|
||||||
#include "wizards/targetsetuppage.h"
|
|
||||||
#include "qt4project.h"
|
|
||||||
|
|
||||||
#include <coreplugin/ifile.h>
|
|
||||||
|
|
||||||
#include <QtGui/QCheckBox>
|
|
||||||
#include <QtGui/QHeaderView>
|
|
||||||
#include <QtGui/QLabel>
|
|
||||||
#include <QtGui/QVBoxLayout>
|
|
||||||
#include <QtGui/QWizardPage>
|
|
||||||
#include <QtGui/QApplication>
|
|
||||||
|
|
||||||
using namespace Qt4ProjectManager;
|
|
||||||
using namespace Qt4ProjectManager::Internal;
|
|
||||||
|
|
||||||
ProjectLoadWizard::ProjectLoadWizard(Qt4Project *project, QWidget *parent, Qt::WindowFlags flags)
|
|
||||||
: QWizard(parent, flags), m_project(project), m_targetSetupPage(0)
|
|
||||||
{
|
|
||||||
Q_ASSERT(project);
|
|
||||||
|
|
||||||
setWindowTitle(tr("Project Setup"));
|
|
||||||
|
|
||||||
m_targetSetupPage = new TargetSetupPage(this);
|
|
||||||
m_targetSetupPage->setProFilePath(m_project->file()->fileName());
|
|
||||||
m_targetSetupPage->setImportSearch(true);
|
|
||||||
resize(900, 450);
|
|
||||||
|
|
||||||
addPage(m_targetSetupPage);
|
|
||||||
|
|
||||||
setOption(QWizard::NoCancelButton, false);
|
|
||||||
setOption(QWizard::NoDefaultButton, false);
|
|
||||||
setOption(QWizard::NoBackButtonOnLastPage, true);
|
|
||||||
#ifdef Q_OS_MAC
|
|
||||||
setButtonLayout(QList<QWizard::WizardButton>()
|
|
||||||
<< QWizard::CancelButton
|
|
||||||
<< QWizard::Stretch
|
|
||||||
<< QWizard::BackButton
|
|
||||||
<< QWizard::NextButton
|
|
||||||
<< QWizard::CommitButton
|
|
||||||
<< QWizard::FinishButton);
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
ProjectLoadWizard::~ProjectLoadWizard()
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
void ProjectLoadWizard::done(int result)
|
|
||||||
{
|
|
||||||
QWizard::done(result);
|
|
||||||
|
|
||||||
if (result == Accepted)
|
|
||||||
applySettings();
|
|
||||||
}
|
|
||||||
|
|
||||||
void ProjectLoadWizard::applySettings()
|
|
||||||
{
|
|
||||||
m_targetSetupPage->setupProject(m_project);
|
|
||||||
}
|
|
||||||
@@ -774,7 +774,10 @@ bool Qt4PriFileNode::deploysFolder(const QString &folder) const
|
|||||||
|
|
||||||
QList<ProjectExplorer::RunConfiguration *> Qt4PriFileNode::runConfigurationsFor(Node *node)
|
QList<ProjectExplorer::RunConfiguration *> Qt4PriFileNode::runConfigurationsFor(Node *node)
|
||||||
{
|
{
|
||||||
return m_project->activeTarget()->runConfigurationsForNode(node);
|
Qt4BaseTarget *target = m_project->activeTarget();
|
||||||
|
if (target)
|
||||||
|
return target->runConfigurationsForNode(node);
|
||||||
|
return QList<ProjectExplorer::RunConfiguration *>();
|
||||||
}
|
}
|
||||||
|
|
||||||
QList<Qt4PriFileNode *> Qt4PriFileNode::subProjectNodesExact() const
|
QList<Qt4PriFileNode *> Qt4PriFileNode::subProjectNodesExact() const
|
||||||
@@ -854,7 +857,9 @@ QList<ProjectNode::ProjectAction> Qt4PriFileNode::supportedActions(Node *node) c
|
|||||||
if (fileNode && fileNode->fileType() != ProjectExplorer::ProjectFileType)
|
if (fileNode && fileNode->fileType() != ProjectExplorer::ProjectFileType)
|
||||||
actions << Rename;
|
actions << Rename;
|
||||||
|
|
||||||
if (!m_project->activeTarget()->runConfigurationsForNode(node).isEmpty())
|
|
||||||
|
Qt4BaseTarget *target = m_project->activeTarget();
|
||||||
|
if (target && !target->runConfigurationsForNode(node).isEmpty())
|
||||||
actions << HasSubProjectRunConfigurations;
|
actions << HasSubProjectRunConfigurations;
|
||||||
|
|
||||||
return actions;
|
return actions;
|
||||||
@@ -2132,7 +2137,8 @@ TargetInformation Qt4ProFileNode::targetInformation(QtSupport::ProFileReader *re
|
|||||||
// Hmm can we find out whether it's debug or release in a saner way?
|
// Hmm can we find out whether it's debug or release in a saner way?
|
||||||
// Theoretically it's in CONFIG
|
// Theoretically it's in CONFIG
|
||||||
QString qmakeBuildConfig = QLatin1String("release");
|
QString qmakeBuildConfig = QLatin1String("release");
|
||||||
if (m_project->activeTarget()->activeQt4BuildConfiguration()->qmakeBuildConfiguration() & QtSupport::BaseQtVersion::DebugBuild)
|
Qt4BaseTarget *target = m_project->activeTarget();
|
||||||
|
if (!target || target->activeQt4BuildConfiguration()->qmakeBuildConfiguration() & QtSupport::BaseQtVersion::DebugBuild)
|
||||||
qmakeBuildConfig = QLatin1String("debug");
|
qmakeBuildConfig = QLatin1String("debug");
|
||||||
wd += QLatin1Char('/') + qmakeBuildConfig;
|
wd += QLatin1Char('/') + qmakeBuildConfig;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -39,7 +39,6 @@
|
|||||||
#include "qt4nodes.h"
|
#include "qt4nodes.h"
|
||||||
#include "qt4projectconfigwidget.h"
|
#include "qt4projectconfigwidget.h"
|
||||||
#include "qt4projectmanagerconstants.h"
|
#include "qt4projectmanagerconstants.h"
|
||||||
#include "projectloadwizard.h"
|
|
||||||
#include "qt4buildconfiguration.h"
|
#include "qt4buildconfiguration.h"
|
||||||
#include "findqt4profiles.h"
|
#include "findqt4profiles.h"
|
||||||
|
|
||||||
@@ -64,6 +63,8 @@
|
|||||||
#include <qtsupport/baseqtversion.h>
|
#include <qtsupport/baseqtversion.h>
|
||||||
#include <qtsupport/profilereader.h>
|
#include <qtsupport/profilereader.h>
|
||||||
#include <qtsupport/qtsupportconstants.h>
|
#include <qtsupport/qtsupportconstants.h>
|
||||||
|
#include <qtsupport/qtversionmanager.h>
|
||||||
|
#include <qtconcurrent/QtConcurrentTools>
|
||||||
|
|
||||||
#include <QtCore/QDebug>
|
#include <QtCore/QDebug>
|
||||||
#include <QtCore/QDir>
|
#include <QtCore/QDir>
|
||||||
@@ -379,20 +380,6 @@ bool Qt4Project::fromMap(const QVariantMap &map)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Add buildconfigurations so we can parse the pro-files.
|
|
||||||
if (targets().isEmpty()) {
|
|
||||||
ProjectLoadWizard wizard(this);
|
|
||||||
wizard.exec();
|
|
||||||
}
|
|
||||||
|
|
||||||
if (targets().isEmpty()) {
|
|
||||||
qWarning() << "Unable to create targets!";
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
Q_ASSERT(activeTarget());
|
|
||||||
Q_ASSERT(activeTarget()->activeBuildConfiguration());
|
|
||||||
|
|
||||||
m_manager->registerProject(this);
|
m_manager->registerProject(this);
|
||||||
|
|
||||||
m_rootProjectNode = new Qt4ProFileNode(this, m_fileInfo->fileName(), this);
|
m_rootProjectNode = new Qt4ProFileNode(this, m_fileInfo->fileName(), this);
|
||||||
@@ -480,7 +467,7 @@ void Qt4Project::updateCodeModels()
|
|||||||
if (debug)
|
if (debug)
|
||||||
qDebug()<<"Qt4Project::updateCodeModel()";
|
qDebug()<<"Qt4Project::updateCodeModel()";
|
||||||
|
|
||||||
if (!activeTarget() || !activeTarget()->activeBuildConfiguration())
|
if (activeTarget() && !activeTarget()->activeBuildConfiguration())
|
||||||
return;
|
return;
|
||||||
|
|
||||||
updateCppCodeModel();
|
updateCppCodeModel();
|
||||||
@@ -489,7 +476,15 @@ void Qt4Project::updateCodeModels()
|
|||||||
|
|
||||||
void Qt4Project::updateCppCodeModel()
|
void Qt4Project::updateCppCodeModel()
|
||||||
{
|
{
|
||||||
Qt4BuildConfiguration *activeBC = activeTarget()->activeQt4BuildConfiguration();
|
QtSupport::BaseQtVersion *qtVersion = 0;
|
||||||
|
ToolChain *tc = 0;
|
||||||
|
if (Qt4BaseTarget *target = activeTarget()) {
|
||||||
|
qtVersion = target->activeQt4BuildConfiguration()->qtVersion();
|
||||||
|
tc = target->activeQt4BuildConfiguration()->toolChain();
|
||||||
|
} else {
|
||||||
|
qtVersion = qt4ProjectManager()->unconfiguredSettings().version;
|
||||||
|
tc = qt4ProjectManager()->unconfiguredSettings().toolchain;
|
||||||
|
}
|
||||||
|
|
||||||
CPlusPlus::CppModelManagerInterface *modelmanager =
|
CPlusPlus::CppModelManagerInterface *modelmanager =
|
||||||
CPlusPlus::CppModelManagerInterface::instance();
|
CPlusPlus::CppModelManagerInterface::instance();
|
||||||
@@ -503,18 +498,17 @@ void Qt4Project::updateCppCodeModel()
|
|||||||
QByteArray predefinedMacros;
|
QByteArray predefinedMacros;
|
||||||
|
|
||||||
QString qtFrameworkPath;
|
QString qtFrameworkPath;
|
||||||
if (activeBC->qtVersion())
|
if (qtVersion)
|
||||||
qtFrameworkPath = activeBC->qtVersion()->frameworkInstallPath();
|
qtFrameworkPath = qtVersion->frameworkInstallPath();
|
||||||
if (!qtFrameworkPath.isEmpty())
|
if (!qtFrameworkPath.isEmpty())
|
||||||
predefinedFrameworkPaths.append(qtFrameworkPath);
|
predefinedFrameworkPaths.append(qtFrameworkPath);
|
||||||
|
|
||||||
ToolChain *tc = activeBC->toolChain();
|
|
||||||
if (tc) {
|
if (tc) {
|
||||||
predefinedMacros = tc->predefinedMacros();
|
predefinedMacros = tc->predefinedMacros();
|
||||||
|
|
||||||
QList<HeaderPath> headers = tc->systemHeaderPaths();
|
QList<HeaderPath> headers = tc->systemHeaderPaths();
|
||||||
if (activeBC->qtVersion())
|
if (qtVersion)
|
||||||
headers.append(activeBC->qtVersion()->systemHeaderPathes());
|
headers.append(qtVersion->systemHeaderPathes());
|
||||||
foreach (const HeaderPath &headerPath, headers) {
|
foreach (const HeaderPath &headerPath, headers) {
|
||||||
if (headerPath.kind() == HeaderPath::FrameworkHeaderPath)
|
if (headerPath.kind() == HeaderPath::FrameworkHeaderPath)
|
||||||
predefinedFrameworkPaths.append(headerPath.path());
|
predefinedFrameworkPaths.append(headerPath.path());
|
||||||
@@ -562,8 +556,8 @@ void Qt4Project::updateCppCodeModel()
|
|||||||
// Add mkspec directory
|
// Add mkspec directory
|
||||||
if (rootQt4ProjectNode())
|
if (rootQt4ProjectNode())
|
||||||
allIncludePaths.append(rootQt4ProjectNode()->resolvedMkspecPath());
|
allIncludePaths.append(rootQt4ProjectNode()->resolvedMkspecPath());
|
||||||
else if (activeBC->qtVersion())
|
else if (qtVersion)
|
||||||
allIncludePaths.append(activeBC->qtVersion()->mkspecPath().toString());
|
allIncludePaths.append(qtVersion->mkspecPath().toString());
|
||||||
|
|
||||||
allIncludePaths.append(predefinedIncludePaths);
|
allIncludePaths.append(predefinedIncludePaths);
|
||||||
|
|
||||||
@@ -628,9 +622,18 @@ void Qt4Project::updateQmlJSCodeModel()
|
|||||||
|
|
||||||
bool preferDebugDump = false;
|
bool preferDebugDump = false;
|
||||||
projectInfo.tryQmlDump = false;
|
projectInfo.tryQmlDump = false;
|
||||||
if (activeTarget() && activeTarget()->activeBuildConfiguration()) {
|
|
||||||
preferDebugDump = activeTarget()->activeQt4BuildConfiguration()->qmakeBuildConfiguration() & QtSupport::BaseQtVersion::DebugBuild;
|
QtSupport::BaseQtVersion *qtVersion = 0;
|
||||||
QtSupport::BaseQtVersion *qtVersion = activeTarget()->activeQt4BuildConfiguration()->qtVersion();
|
if (Qt4BaseTarget *t = activeTarget()) {
|
||||||
|
if (Qt4BuildConfiguration *bc = t->activeQt4BuildConfiguration()) {
|
||||||
|
qtVersion = bc->qtVersion();
|
||||||
|
preferDebugDump = bc->qmakeBuildConfiguration() & QtSupport::BaseQtVersion::DebugBuild;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
qtVersion = qt4ProjectManager()->unconfiguredSettings().version;
|
||||||
|
preferDebugDump = qtVersion->defaultBuildConfig() & QtSupport::BaseQtVersion::DebugBuild;
|
||||||
|
}
|
||||||
|
if (qtVersion) {
|
||||||
if (qtVersion && qtVersion->isValid()) {
|
if (qtVersion && qtVersion->isValid()) {
|
||||||
projectInfo.tryQmlDump = qtVersion->type() == QLatin1String(QtSupport::Constants::DESKTOPQT)
|
projectInfo.tryQmlDump = qtVersion->type() == QLatin1String(QtSupport::Constants::DESKTOPQT)
|
||||||
|| qtVersion->type() == QLatin1String(QtSupport::Constants::SIMULATORQT);
|
|| qtVersion->type() == QLatin1String(QtSupport::Constants::SIMULATORQT);
|
||||||
@@ -643,9 +646,15 @@ void Qt4Project::updateQmlJSCodeModel()
|
|||||||
projectInfo.importPaths.removeDuplicates();
|
projectInfo.importPaths.removeDuplicates();
|
||||||
|
|
||||||
if (projectInfo.tryQmlDump) {
|
if (projectInfo.tryQmlDump) {
|
||||||
const Qt4BuildConfiguration *bc = activeTarget()->activeQt4BuildConfiguration();
|
if (Qt4BaseTarget *target = activeTarget()) {
|
||||||
if (bc) {
|
const Qt4BuildConfiguration *bc = target->activeQt4BuildConfiguration();
|
||||||
|
if (bc)
|
||||||
QtSupport::QmlDumpTool::pathAndEnvironment(this, bc->qtVersion(), bc->toolChain(),
|
QtSupport::QmlDumpTool::pathAndEnvironment(this, bc->qtVersion(), bc->toolChain(),
|
||||||
|
preferDebugDump, &projectInfo.qmlDumpPath,
|
||||||
|
&projectInfo.qmlDumpEnvironment);
|
||||||
|
} else {
|
||||||
|
UnConfiguredSettings us = qt4ProjectManager()->unconfiguredSettings();
|
||||||
|
QtSupport::QmlDumpTool::pathAndEnvironment(this, us.version, us.toolchain,
|
||||||
preferDebugDump, &projectInfo.qmlDumpPath, &projectInfo.qmlDumpEnvironment);
|
preferDebugDump, &projectInfo.qmlDumpPath, &projectInfo.qmlDumpEnvironment);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
@@ -668,7 +677,9 @@ void Qt4Project::update()
|
|||||||
if (debug)
|
if (debug)
|
||||||
qDebug()<<"State is now Base";
|
qDebug()<<"State is now Base";
|
||||||
m_asyncUpdateState = Base;
|
m_asyncUpdateState = Base;
|
||||||
activeTarget()->activeQt4BuildConfiguration()->setEnabled(true);
|
Qt4BaseTarget *target = activeTarget();
|
||||||
|
if (target)
|
||||||
|
target->activeQt4BuildConfiguration()->setEnabled(true);
|
||||||
emit proParsingDone();
|
emit proParsingDone();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -690,6 +701,7 @@ void Qt4Project::scheduleAsyncUpdate(Qt4ProFileNode *node)
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (activeTarget() && activeTarget()->activeQt4BuildConfiguration())
|
||||||
activeTarget()->activeQt4BuildConfiguration()->setEnabled(false);
|
activeTarget()->activeQt4BuildConfiguration()->setEnabled(false);
|
||||||
|
|
||||||
if (m_asyncUpdateState == AsyncFullUpdatePending) {
|
if (m_asyncUpdateState == AsyncFullUpdatePending) {
|
||||||
@@ -760,6 +772,7 @@ void Qt4Project::scheduleAsyncUpdate()
|
|||||||
qDebug()<<" update in progress, canceling and setting state to full update pending";
|
qDebug()<<" update in progress, canceling and setting state to full update pending";
|
||||||
m_cancelEvaluate = true;
|
m_cancelEvaluate = true;
|
||||||
m_asyncUpdateState = AsyncFullUpdatePending;
|
m_asyncUpdateState = AsyncFullUpdatePending;
|
||||||
|
if (activeTarget() && activeTarget()->activeQt4BuildConfiguration())
|
||||||
activeTarget()->activeQt4BuildConfiguration()->setEnabled(false);
|
activeTarget()->activeQt4BuildConfiguration()->setEnabled(false);
|
||||||
m_rootProjectNode->setParseInProgressRecursive(true);
|
m_rootProjectNode->setParseInProgressRecursive(true);
|
||||||
return;
|
return;
|
||||||
@@ -768,6 +781,7 @@ void Qt4Project::scheduleAsyncUpdate()
|
|||||||
if (debug)
|
if (debug)
|
||||||
qDebug()<<" starting timer for full update, setting state to full update pending";
|
qDebug()<<" starting timer for full update, setting state to full update pending";
|
||||||
m_partialEvaluate.clear();
|
m_partialEvaluate.clear();
|
||||||
|
if (activeTarget() && activeTarget()->activeQt4BuildConfiguration())
|
||||||
activeTarget()->activeQt4BuildConfiguration()->setEnabled(false);
|
activeTarget()->activeQt4BuildConfiguration()->setEnabled(false);
|
||||||
m_rootProjectNode->setParseInProgressRecursive(true);
|
m_rootProjectNode->setParseInProgressRecursive(true);
|
||||||
m_asyncUpdateState = AsyncFullUpdatePending;
|
m_asyncUpdateState = AsyncFullUpdatePending;
|
||||||
@@ -816,6 +830,7 @@ void Qt4Project::decrementPendingEvaluateFutures()
|
|||||||
} else if (m_asyncUpdateState != ShuttingDown){
|
} else if (m_asyncUpdateState != ShuttingDown){
|
||||||
// After being done, we need to call:
|
// After being done, we need to call:
|
||||||
m_asyncUpdateState = Base;
|
m_asyncUpdateState = Base;
|
||||||
|
if (activeTarget() && activeTarget()->activeQt4BuildConfiguration())
|
||||||
activeTarget()->activeQt4BuildConfiguration()->setEnabled(true);
|
activeTarget()->activeQt4BuildConfiguration()->setEnabled(true);
|
||||||
foreach (Target *t, targets())
|
foreach (Target *t, targets())
|
||||||
static_cast<Qt4BaseTarget *>(t)->createApplicationProFiles(true);
|
static_cast<Qt4BaseTarget *>(t)->createApplicationProFiles(true);
|
||||||
@@ -952,31 +967,49 @@ QtSupport::ProFileReader *Qt4Project::createProFileReader(Qt4ProFileNode *qt4Pro
|
|||||||
m_proFileOption = new ProFileOption;
|
m_proFileOption = new ProFileOption;
|
||||||
m_proFileOptionRefCnt = 0;
|
m_proFileOptionRefCnt = 0;
|
||||||
|
|
||||||
if (!bc && activeTarget())
|
QtSupport::BaseQtVersion *qtVersion = 0;
|
||||||
bc = activeTarget()->activeQt4BuildConfiguration();
|
ProjectExplorer::ToolChain *tc = 0;
|
||||||
|
Utils::Environment env = Utils::Environment::systemEnvironment();
|
||||||
|
QStringList qmakeArgs;
|
||||||
if (bc) {
|
if (bc) {
|
||||||
QtSupport::BaseQtVersion *version = bc->qtVersion();
|
qtVersion = bc->qtVersion();
|
||||||
if (version && version->isValid()) {
|
env = bc->environment();
|
||||||
m_proFileOption->properties = version->versionInfo();
|
tc = bc->toolChain();
|
||||||
if (bc->toolChain())
|
if (QMakeStep *qs = bc->qmakeStep()) {
|
||||||
m_proFileOption->sysroot = bc->qtVersion()->systemRoot();
|
qmakeArgs = qs->parserArguments();
|
||||||
|
m_proFileOption->qmakespec = qs->mkspec().toString();
|
||||||
|
} else {
|
||||||
|
qmakeArgs = bc->configCommandLineArguments();
|
||||||
|
}
|
||||||
|
} else if (Qt4BaseTarget *target = activeTarget()) {
|
||||||
|
if (Qt4BuildConfiguration *bc = target->activeQt4BuildConfiguration()) {
|
||||||
|
qtVersion = bc->qtVersion();
|
||||||
|
env = bc->environment();
|
||||||
|
tc = bc->toolChain();
|
||||||
|
if (QMakeStep *qs = bc->qmakeStep()) {
|
||||||
|
qmakeArgs = qs->parserArguments();
|
||||||
|
m_proFileOption->qmakespec = qs->mkspec().toString();
|
||||||
|
} else {
|
||||||
|
qmakeArgs = bc->configCommandLineArguments();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
UnConfiguredSettings ucs = qt4ProjectManager()->unconfiguredSettings();
|
||||||
|
qtVersion = ucs.version;
|
||||||
|
tc = ucs.toolchain;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (qtVersion && qtVersion->isValid()) {
|
||||||
|
m_proFileOption->properties = qtVersion->versionInfo();
|
||||||
|
if (tc)
|
||||||
|
m_proFileOption->sysroot = qtVersion->systemRoot();
|
||||||
}
|
}
|
||||||
|
|
||||||
Utils::Environment env = bc->environment();
|
|
||||||
Utils::Environment::const_iterator eit = env.constBegin(), eend = env.constEnd();
|
Utils::Environment::const_iterator eit = env.constBegin(), eend = env.constEnd();
|
||||||
for (; eit != eend; ++eit)
|
for (; eit != eend; ++eit)
|
||||||
m_proFileOption->environment.insert(env.key(eit), env.value(eit));
|
m_proFileOption->environment.insert(env.key(eit), env.value(eit));
|
||||||
|
|
||||||
QStringList args;
|
m_proFileOption->setCommandLineArguments(qmakeArgs);
|
||||||
if (QMakeStep *qs = bc->qmakeStep()) {
|
|
||||||
args = qs->parserArguments();
|
|
||||||
m_proFileOption->qmakespec = qs->mkspec().toString();
|
|
||||||
} else {
|
|
||||||
args = bc->configCommandLineArguments();
|
|
||||||
}
|
|
||||||
m_proFileOption->setCommandLineArguments(args);
|
|
||||||
}
|
|
||||||
|
|
||||||
QtSupport::ProFileCacheManager::instance()->incRefCount();
|
QtSupport::ProFileCacheManager::instance()->incRefCount();
|
||||||
}
|
}
|
||||||
@@ -1337,6 +1370,11 @@ void CentralizedFolderWatcher::delayedFolderChanged(const QString &folder)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool Qt4Project::needsConfiguration() const
|
||||||
|
{
|
||||||
|
return targets().isEmpty();
|
||||||
|
}
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
Handle special case were a subproject of the qt directory is opened, and
|
Handle special case were a subproject of the qt directory is opened, and
|
||||||
qt was configured to be built as a shadow build -> also build in the sub-
|
qt was configured to be built as a shadow build -> also build in the sub-
|
||||||
|
|||||||
@@ -57,6 +57,7 @@ class Qt4ProFileNode;
|
|||||||
class Qt4PriFileNode;
|
class Qt4PriFileNode;
|
||||||
class Qt4BaseTarget;
|
class Qt4BaseTarget;
|
||||||
class Qt4BuildConfiguration;
|
class Qt4BuildConfiguration;
|
||||||
|
class Qt4Manager;
|
||||||
|
|
||||||
namespace Internal {
|
namespace Internal {
|
||||||
class DeployHelperRunStep;
|
class DeployHelperRunStep;
|
||||||
@@ -71,7 +72,6 @@ namespace Internal {
|
|||||||
class QMakeStep;
|
class QMakeStep;
|
||||||
class MakeStep;
|
class MakeStep;
|
||||||
|
|
||||||
class Qt4Manager;
|
|
||||||
class Qt4Project;
|
class Qt4Project;
|
||||||
class Qt4RunStep;
|
class Qt4RunStep;
|
||||||
|
|
||||||
@@ -138,6 +138,8 @@ public:
|
|||||||
void watchFolders(const QStringList &l, Qt4PriFileNode *node);
|
void watchFolders(const QStringList &l, Qt4PriFileNode *node);
|
||||||
void unwatchFolders(const QStringList &l, Qt4PriFileNode *node);
|
void unwatchFolders(const QStringList &l, Qt4PriFileNode *node);
|
||||||
|
|
||||||
|
bool needsConfiguration() const;
|
||||||
|
|
||||||
signals:
|
signals:
|
||||||
void proParsingDone();
|
void proParsingDone();
|
||||||
void proFileUpdated(Qt4ProjectManager::Qt4ProFileNode *node, bool, bool);
|
void proFileUpdated(Qt4ProjectManager::Qt4ProFileNode *node, bool, bool);
|
||||||
@@ -207,6 +209,7 @@ private:
|
|||||||
|
|
||||||
friend class Internal::Qt4ProjectFile;
|
friend class Internal::Qt4ProjectFile;
|
||||||
friend class Internal::Qt4ProjectConfigWidget;
|
friend class Internal::Qt4ProjectConfigWidget;
|
||||||
|
friend class Qt4Manager; // to schedule a async update if the unconfigured settings change
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace Qt4ProjectManager
|
} // namespace Qt4ProjectManager
|
||||||
|
|||||||
@@ -55,8 +55,12 @@
|
|||||||
#include <projectexplorer/session.h>
|
#include <projectexplorer/session.h>
|
||||||
#include <projectexplorer/project.h>
|
#include <projectexplorer/project.h>
|
||||||
#include <projectexplorer/projectexplorerconstants.h>
|
#include <projectexplorer/projectexplorerconstants.h>
|
||||||
|
#include <projectexplorer/toolchainmanager.h>
|
||||||
|
#include <projectexplorer/toolchain.h>
|
||||||
#include <utils/qtcassert.h>
|
#include <utils/qtcassert.h>
|
||||||
#include <qtsupport/profilereader.h>
|
#include <qtsupport/profilereader.h>
|
||||||
|
#include <qtsupport/baseqtversion.h>
|
||||||
|
#include <qtsupport/qtversionmanager.h>
|
||||||
|
|
||||||
#include <QtCore/QCoreApplication>
|
#include <QtCore/QCoreApplication>
|
||||||
#include <QtCore/QDir>
|
#include <QtCore/QDir>
|
||||||
@@ -141,6 +145,12 @@ void Qt4Manager::init()
|
|||||||
tr("Full path to the bin directory of the current project's Qt version."));
|
tr("Full path to the bin directory of the current project's Qt version."));
|
||||||
connect(vm, SIGNAL(variableUpdateRequested(QByteArray)),
|
connect(vm, SIGNAL(variableUpdateRequested(QByteArray)),
|
||||||
this, SLOT(updateVariable(QByteArray)));
|
this, SLOT(updateVariable(QByteArray)));
|
||||||
|
|
||||||
|
QSettings *settings = Core::ICore::instance()->settings();
|
||||||
|
settings->beginGroup("Qt4ProjectManager");
|
||||||
|
m_unConfiguredVersionId = settings->value("QtVersionId", -1).toInt();
|
||||||
|
m_unconfiguredToolChainId = settings->value("ToolChainId", QString()).toString();
|
||||||
|
settings->endGroup();
|
||||||
}
|
}
|
||||||
|
|
||||||
void Qt4Manager::editorChanged(Core::IEditor *editor)
|
void Qt4Manager::editorChanged(Core::IEditor *editor)
|
||||||
@@ -191,7 +201,14 @@ void Qt4Manager::updateVariable(const QByteArray &variable)
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
QString value;
|
QString value;
|
||||||
QtSupport::BaseQtVersion *qtv = qt4pro->activeTarget()->activeQt4BuildConfiguration()->qtVersion();
|
QtSupport::BaseQtVersion *qtv;
|
||||||
|
if (Qt4BaseTarget *t = qt4pro->activeTarget()) {
|
||||||
|
if (Qt4BuildConfiguration *bc = t->activeQt4BuildConfiguration())
|
||||||
|
qtv = bc->qtVersion();
|
||||||
|
} else {
|
||||||
|
qtv = unconfiguredSettings().version;
|
||||||
|
}
|
||||||
|
|
||||||
if (qtv)
|
if (qtv)
|
||||||
value = qtv->versionInfo().value(QLatin1String("QT_INSTALL_BINS"));
|
value = qtv->versionInfo().value(QLatin1String("QT_INSTALL_BINS"));
|
||||||
Core::VariableManager::instance()->insert(kInstallBins, value);
|
Core::VariableManager::instance()->insert(kInstallBins, value);
|
||||||
@@ -440,3 +457,57 @@ QString Qt4Manager::fileTypeId(ProjectExplorer::FileType type)
|
|||||||
return QString();
|
return QString();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
UnConfiguredSettings Qt4Manager::unconfiguredSettings() const
|
||||||
|
{
|
||||||
|
if (m_unConfiguredVersionId == -1 && m_unconfiguredToolChainId.isEmpty()) {
|
||||||
|
// Choose a good default qtversion and try to find a toolchain that fit
|
||||||
|
QtSupport::BaseQtVersion *version = 0;
|
||||||
|
ProjectExplorer::ToolChain *toolChain = 0;
|
||||||
|
QList<QtSupport::BaseQtVersion *> versions = QtSupport::QtVersionManager::instance()->validVersions();
|
||||||
|
if (!versions.isEmpty()) {
|
||||||
|
version = versions.first();
|
||||||
|
|
||||||
|
foreach (ProjectExplorer::ToolChain *tc, ProjectExplorer::ToolChainManager::instance()->toolChains()) {
|
||||||
|
if (tc->mkspec() == version->mkspec()) {
|
||||||
|
toolChain = tc;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (!toolChain) {
|
||||||
|
foreach (ProjectExplorer::ToolChain *tc, ProjectExplorer::ToolChainManager::instance()->toolChains()) {
|
||||||
|
if (version->qtAbis().contains(tc->targetAbi())) {
|
||||||
|
toolChain = tc;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
m_unConfiguredVersionId = version->uniqueId();
|
||||||
|
m_unconfiguredToolChainId = toolChain->id();
|
||||||
|
}
|
||||||
|
UnConfiguredSettings us;
|
||||||
|
us.version = version;
|
||||||
|
us.toolchain = toolChain;
|
||||||
|
return us;
|
||||||
|
}
|
||||||
|
UnConfiguredSettings us;
|
||||||
|
us.version = QtSupport::QtVersionManager::instance()->version(m_unConfiguredVersionId);
|
||||||
|
us.toolchain = ProjectExplorer::ToolChainManager::instance()->findToolChain(m_unconfiguredToolChainId);
|
||||||
|
return us;
|
||||||
|
}
|
||||||
|
|
||||||
|
void Qt4Manager::setUnconfiguredSettings(const UnConfiguredSettings &setting)
|
||||||
|
{
|
||||||
|
m_unConfiguredVersionId = setting.version ? setting.version->uniqueId() : -1;
|
||||||
|
m_unconfiguredToolChainId = setting.toolchain ? setting.toolchain->id() : QString();
|
||||||
|
|
||||||
|
QSettings *settings = Core::ICore::instance()->settings();
|
||||||
|
settings->beginGroup("Qt4ProjectManager");
|
||||||
|
settings->setValue("QtVersionId", m_unConfiguredVersionId);
|
||||||
|
settings->setValue("ToolChainId", m_unconfiguredToolChainId);
|
||||||
|
settings->endGroup();
|
||||||
|
|
||||||
|
foreach (Qt4Project *pro, m_projects)
|
||||||
|
if (pro->targets().isEmpty())
|
||||||
|
pro->scheduleAsyncUpdate();
|
||||||
|
emit unconfiguredSettingsChanged();
|
||||||
|
}
|
||||||
|
|||||||
@@ -50,10 +50,12 @@ namespace ProjectExplorer {
|
|||||||
class Project;
|
class Project;
|
||||||
class ProjectExplorerPlugin;
|
class ProjectExplorerPlugin;
|
||||||
class Node;
|
class Node;
|
||||||
|
class ToolChain;
|
||||||
}
|
}
|
||||||
|
|
||||||
namespace QtSupport {
|
namespace QtSupport {
|
||||||
class QtVersionManager;
|
class QtVersionManager;
|
||||||
|
class BaseQtVersion;
|
||||||
}
|
}
|
||||||
|
|
||||||
namespace Qt4ProjectManager {
|
namespace Qt4ProjectManager {
|
||||||
@@ -62,6 +64,13 @@ namespace Internal {
|
|||||||
class Qt4Builder;
|
class Qt4Builder;
|
||||||
class ProFileEditorWidget;
|
class ProFileEditorWidget;
|
||||||
class Qt4ProjectManagerPlugin;
|
class Qt4ProjectManagerPlugin;
|
||||||
|
|
||||||
|
class UnConfiguredSettings
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
QtSupport::BaseQtVersion *version;
|
||||||
|
ProjectExplorer::ToolChain *toolchain;
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
class Qt4Project;
|
class Qt4Project;
|
||||||
@@ -96,6 +105,13 @@ public:
|
|||||||
|
|
||||||
enum Action { BUILD, REBUILD, CLEAN };
|
enum Action { BUILD, REBUILD, CLEAN };
|
||||||
|
|
||||||
|
/// Settings to use for codemodel if no targets exist
|
||||||
|
Internal::UnConfiguredSettings unconfiguredSettings() const;
|
||||||
|
void setUnconfiguredSettings(const Internal::UnConfiguredSettings &setting);
|
||||||
|
|
||||||
|
signals:
|
||||||
|
void unconfiguredSettingsChanged();
|
||||||
|
|
||||||
public slots:
|
public slots:
|
||||||
void addLibrary();
|
void addLibrary();
|
||||||
void addLibraryContextMenu();
|
void addLibraryContextMenu();
|
||||||
@@ -118,7 +134,8 @@ private:
|
|||||||
void runQMake(ProjectExplorer::Project *p, ProjectExplorer::Node *node);
|
void runQMake(ProjectExplorer::Project *p, ProjectExplorer::Node *node);
|
||||||
|
|
||||||
Internal::Qt4ProjectManagerPlugin *m_plugin;
|
Internal::Qt4ProjectManagerPlugin *m_plugin;
|
||||||
|
mutable int m_unConfiguredVersionId;
|
||||||
|
mutable QString m_unconfiguredToolChainId;
|
||||||
ProjectExplorer::Node *m_contextNode;
|
ProjectExplorer::Node *m_contextNode;
|
||||||
ProjectExplorer::Project *m_contextProject;
|
ProjectExplorer::Project *m_contextProject;
|
||||||
|
|
||||||
|
|||||||
@@ -51,7 +51,6 @@ HEADERS += \
|
|||||||
qmakestep.h \
|
qmakestep.h \
|
||||||
qtmodulesinfo.h \
|
qtmodulesinfo.h \
|
||||||
qt4projectconfigwidget.h \
|
qt4projectconfigwidget.h \
|
||||||
projectloadwizard.h \
|
|
||||||
qtuicodemodelsupport.h \
|
qtuicodemodelsupport.h \
|
||||||
externaleditors.h \
|
externaleditors.h \
|
||||||
qt4buildconfiguration.h \
|
qt4buildconfiguration.h \
|
||||||
@@ -67,7 +66,9 @@ HEADERS += \
|
|||||||
winceqtversionfactory.h \
|
winceqtversionfactory.h \
|
||||||
winceqtversion.h \
|
winceqtversion.h \
|
||||||
profilecompletionassist.h \
|
profilecompletionassist.h \
|
||||||
qt4basetargetfactory.h
|
qt4basetargetfactory.h \
|
||||||
|
unconfiguredprojectpanel.h \
|
||||||
|
unconfiguredsettingsoptionpage.h
|
||||||
|
|
||||||
SOURCES += qt4projectmanagerplugin.cpp \
|
SOURCES += qt4projectmanagerplugin.cpp \
|
||||||
qt4projectmanager.cpp \
|
qt4projectmanager.cpp \
|
||||||
@@ -113,7 +114,6 @@ SOURCES += qt4projectmanagerplugin.cpp \
|
|||||||
qmakestep.cpp \
|
qmakestep.cpp \
|
||||||
qtmodulesinfo.cpp \
|
qtmodulesinfo.cpp \
|
||||||
qt4projectconfigwidget.cpp \
|
qt4projectconfigwidget.cpp \
|
||||||
projectloadwizard.cpp \
|
|
||||||
qtuicodemodelsupport.cpp \
|
qtuicodemodelsupport.cpp \
|
||||||
externaleditors.cpp \
|
externaleditors.cpp \
|
||||||
qt4buildconfiguration.cpp \
|
qt4buildconfiguration.cpp \
|
||||||
@@ -125,7 +125,9 @@ SOURCES += qt4projectmanagerplugin.cpp \
|
|||||||
profilekeywords.cpp \
|
profilekeywords.cpp \
|
||||||
winceqtversionfactory.cpp \
|
winceqtversionfactory.cpp \
|
||||||
winceqtversion.cpp \
|
winceqtversion.cpp \
|
||||||
profilecompletionassist.cpp
|
profilecompletionassist.cpp \
|
||||||
|
unconfiguredprojectpanel.cpp \
|
||||||
|
unconfiguredsettingsoptionpage.cpp
|
||||||
|
|
||||||
FORMS += makestep.ui \
|
FORMS += makestep.ui \
|
||||||
qmakestep.ui \
|
qmakestep.ui \
|
||||||
|
|||||||
@@ -101,6 +101,13 @@ const char ICON_HTML5_APP[] = ":/wizards/images/html5app.png";
|
|||||||
const char QMAKEVAR_QMLJSDEBUGGER_PATH[] = "QMLJSDEBUGGER_PATH";
|
const char QMAKEVAR_QMLJSDEBUGGER_PATH[] = "QMLJSDEBUGGER_PATH";
|
||||||
const char QMAKEVAR_DECLARATIVE_DEBUG[] = "CONFIG+=declarative_debug";
|
const char QMAKEVAR_DECLARATIVE_DEBUG[] = "CONFIG+=declarative_debug";
|
||||||
|
|
||||||
|
// Unconfigured Settings page
|
||||||
|
const char UNCONFIGURED_SETTINGS_PAGE_ID[] = "R.UnconfiguredSettings";
|
||||||
|
const char UNCONFIGURED_SETTINGS_PAGE_NAME[] = QT_TRANSLATE_NOOP("Qt4ProjectManager", "Unconfigured Project Settings");
|
||||||
|
|
||||||
|
// Unconfigured Panel
|
||||||
|
const char UNCONFIGURED_PANEL_PAGE_ID[] = "UnconfiguredPanel";
|
||||||
|
|
||||||
} // namespace Constants
|
} // namespace Constants
|
||||||
} // namespace Qt4ProjectManager
|
} // namespace Qt4ProjectManager
|
||||||
|
|
||||||
|
|||||||
@@ -36,6 +36,8 @@
|
|||||||
#include "qt4nodes.h"
|
#include "qt4nodes.h"
|
||||||
#include "qmakestep.h"
|
#include "qmakestep.h"
|
||||||
#include "makestep.h"
|
#include "makestep.h"
|
||||||
|
#include "qt4target.h"
|
||||||
|
#include "qt4buildconfiguration.h"
|
||||||
#include "wizards/consoleappwizard.h"
|
#include "wizards/consoleappwizard.h"
|
||||||
#include "wizards/guiappwizard.h"
|
#include "wizards/guiappwizard.h"
|
||||||
#include "wizards/mobileappwizard.h"
|
#include "wizards/mobileappwizard.h"
|
||||||
@@ -60,6 +62,8 @@
|
|||||||
#include "qt-desktop/desktopqtversionfactory.h"
|
#include "qt-desktop/desktopqtversionfactory.h"
|
||||||
#include "qt-desktop/simulatorqtversionfactory.h"
|
#include "qt-desktop/simulatorqtversionfactory.h"
|
||||||
#include "winceqtversionfactory.h"
|
#include "winceqtversionfactory.h"
|
||||||
|
#include "unconfiguredprojectpanel.h"
|
||||||
|
#include "unconfiguredsettingsoptionpage.h"
|
||||||
|
|
||||||
#include <coreplugin/id.h>
|
#include <coreplugin/id.h>
|
||||||
#include <coreplugin/icore.h>
|
#include <coreplugin/icore.h>
|
||||||
@@ -90,6 +94,12 @@ using namespace Qt4ProjectManager::Internal;
|
|||||||
using namespace Qt4ProjectManager;
|
using namespace Qt4ProjectManager;
|
||||||
using ProjectExplorer::Project;
|
using ProjectExplorer::Project;
|
||||||
|
|
||||||
|
Qt4ProjectManagerPlugin::Qt4ProjectManagerPlugin()
|
||||||
|
: m_previousStartupProject(0), m_previousTarget(0)
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
Qt4ProjectManagerPlugin::~Qt4ProjectManagerPlugin()
|
Qt4ProjectManagerPlugin::~Qt4ProjectManagerPlugin()
|
||||||
{
|
{
|
||||||
//removeObject(m_embeddedPropertiesPage);
|
//removeObject(m_embeddedPropertiesPage);
|
||||||
@@ -141,6 +151,7 @@ bool Qt4ProjectManagerPlugin::initialize(const QStringList &arguments, QString *
|
|||||||
addAutoReleasedObject(new MakeStepFactory);
|
addAutoReleasedObject(new MakeStepFactory);
|
||||||
|
|
||||||
addAutoReleasedObject(new Qt4RunConfigurationFactory);
|
addAutoReleasedObject(new Qt4RunConfigurationFactory);
|
||||||
|
addAutoReleasedObject(new UnConfiguredSettingsOptionPage);
|
||||||
|
|
||||||
#ifdef Q_OS_MAC
|
#ifdef Q_OS_MAC
|
||||||
addAutoReleasedObject(new MacDesignerExternalEditor);
|
addAutoReleasedObject(new MacDesignerExternalEditor);
|
||||||
@@ -160,6 +171,7 @@ bool Qt4ProjectManagerPlugin::initialize(const QStringList &arguments, QString *
|
|||||||
|
|
||||||
addAutoReleasedObject(new ProFileCompletionAssistProvider);
|
addAutoReleasedObject(new ProFileCompletionAssistProvider);
|
||||||
addAutoReleasedObject(new ProFileHoverHandler(this));
|
addAutoReleasedObject(new ProFileHoverHandler(this));
|
||||||
|
addAutoReleasedObject(new UnconfiguredProjectPanel);
|
||||||
|
|
||||||
//menus
|
//menus
|
||||||
Core::ActionContainer *mbuild =
|
Core::ActionContainer *mbuild =
|
||||||
@@ -217,8 +229,8 @@ bool Qt4ProjectManagerPlugin::initialize(const QStringList &arguments, QString *
|
|||||||
|
|
||||||
connect(m_projectExplorer->buildManager(), SIGNAL(buildStateChanged(ProjectExplorer::Project *)),
|
connect(m_projectExplorer->buildManager(), SIGNAL(buildStateChanged(ProjectExplorer::Project *)),
|
||||||
this, SLOT(buildStateChanged(ProjectExplorer::Project *)));
|
this, SLOT(buildStateChanged(ProjectExplorer::Project *)));
|
||||||
connect(m_projectExplorer, SIGNAL(currentProjectChanged(ProjectExplorer::Project *)),
|
connect(m_projectExplorer->session(), SIGNAL(startupProjectChanged(ProjectExplorer::Project*)),
|
||||||
this, SLOT(currentProjectChanged()));
|
this, SLOT(startupProjectChanged()));
|
||||||
connect(m_projectExplorer, SIGNAL(currentNodeChanged(ProjectExplorer::Node*,ProjectExplorer::Project*)),
|
connect(m_projectExplorer, SIGNAL(currentNodeChanged(ProjectExplorer::Node*,ProjectExplorer::Project*)),
|
||||||
this, SLOT(currentNodeChanged(ProjectExplorer::Node*)));
|
this, SLOT(currentNodeChanged(ProjectExplorer::Node*)));
|
||||||
|
|
||||||
@@ -276,13 +288,17 @@ void Qt4ProjectManagerPlugin::updateContextMenu(Project *project,
|
|||||||
m_cleanSubProjectContextMenu->setEnabled(false);
|
m_cleanSubProjectContextMenu->setEnabled(false);
|
||||||
|
|
||||||
Qt4ProFileNode *proFileNode = qobject_cast<Qt4ProFileNode *>(node);
|
Qt4ProFileNode *proFileNode = qobject_cast<Qt4ProFileNode *>(node);
|
||||||
if (qobject_cast<Qt4Project *>(project) && proFileNode) {
|
Qt4Project *qt4Project = qobject_cast<Qt4Project *>(project);
|
||||||
|
if (qt4Project && proFileNode
|
||||||
|
&& qt4Project->activeTarget()
|
||||||
|
&& qt4Project->activeTarget()->activeQt4BuildConfiguration()) {
|
||||||
m_runQMakeActionContextMenu->setVisible(true);
|
m_runQMakeActionContextMenu->setVisible(true);
|
||||||
m_buildSubProjectContextMenu->setVisible(true);
|
m_buildSubProjectContextMenu->setVisible(true);
|
||||||
m_rebuildSubProjectContextMenu->setVisible(true);
|
m_rebuildSubProjectContextMenu->setVisible(true);
|
||||||
m_cleanSubProjectContextMenu->setVisible(true);
|
m_cleanSubProjectContextMenu->setVisible(true);
|
||||||
|
|
||||||
if (!m_projectExplorer->buildManager()->isBuilding(project)) {
|
if (!m_projectExplorer->buildManager()->isBuilding(project)) {
|
||||||
|
if (qt4Project->activeTarget()->activeQt4BuildConfiguration()->qmakeStep())
|
||||||
m_runQMakeActionContextMenu->setEnabled(true);
|
m_runQMakeActionContextMenu->setEnabled(true);
|
||||||
m_buildSubProjectContextMenu->setEnabled(true);
|
m_buildSubProjectContextMenu->setEnabled(true);
|
||||||
m_rebuildSubProjectContextMenu->setEnabled(true);
|
m_rebuildSubProjectContextMenu->setEnabled(true);
|
||||||
@@ -296,9 +312,49 @@ void Qt4ProjectManagerPlugin::updateContextMenu(Project *project,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Qt4ProjectManagerPlugin::currentProjectChanged()
|
|
||||||
|
void Qt4ProjectManagerPlugin::startupProjectChanged()
|
||||||
{
|
{
|
||||||
m_runQMakeAction->setEnabled(!m_projectExplorer->buildManager()->isBuilding(m_projectExplorer->currentProject()));
|
if (m_previousStartupProject)
|
||||||
|
disconnect(m_previousStartupProject, SIGNAL(activeTargetChanged(ProjectExplorer::Target*)),
|
||||||
|
this, SLOT(activeTargetChanged()));
|
||||||
|
|
||||||
|
m_previousStartupProject = qobject_cast<Qt4Project *>(m_projectExplorer->session()->startupProject());
|
||||||
|
|
||||||
|
if (m_previousStartupProject)
|
||||||
|
connect(m_previousStartupProject, SIGNAL(activeTargetChanged(ProjectExplorer::Target*)),
|
||||||
|
this, SLOT(activeTargetChanged()));
|
||||||
|
|
||||||
|
activeTargetChanged();
|
||||||
|
}
|
||||||
|
|
||||||
|
void Qt4ProjectManagerPlugin::activeTargetChanged()
|
||||||
|
{
|
||||||
|
if (m_previousTarget)
|
||||||
|
disconnect(m_previousTarget, SIGNAL(activeBuildConfigurationChanged(ProjectExplorer::BuildConfiguration*)),
|
||||||
|
this, SLOT(updateRunQMakeAction()));
|
||||||
|
|
||||||
|
m_previousTarget = m_previousStartupProject ? m_previousStartupProject->activeTarget() : 0;
|
||||||
|
|
||||||
|
if (m_previousTarget)
|
||||||
|
connect(m_previousTarget, SIGNAL(activeBuildConfigurationChanged(ProjectExplorer::BuildConfiguration*)),
|
||||||
|
this, SLOT(updateRunQMakeAction()));
|
||||||
|
|
||||||
|
updateRunQMakeAction();
|
||||||
|
}
|
||||||
|
|
||||||
|
void Qt4ProjectManagerPlugin::updateRunQMakeAction()
|
||||||
|
{
|
||||||
|
bool enable = true;
|
||||||
|
if (m_projectExplorer->buildManager()->isBuilding(m_projectExplorer->currentProject()))
|
||||||
|
enable = false;
|
||||||
|
Qt4Project *pro = qobject_cast<Qt4Project *>(m_projectExplorer->currentProject());
|
||||||
|
if (!pro
|
||||||
|
|| !pro->activeTarget()
|
||||||
|
|| !pro->activeTarget()->activeBuildConfiguration())
|
||||||
|
enable = false;
|
||||||
|
|
||||||
|
m_runQMakeAction->setEnabled(enable);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Qt4ProjectManagerPlugin::currentNodeChanged(ProjectExplorer::Node *node)
|
void Qt4ProjectManagerPlugin::currentNodeChanged(ProjectExplorer::Node *node)
|
||||||
@@ -310,9 +366,7 @@ void Qt4ProjectManagerPlugin::buildStateChanged(ProjectExplorer::Project *pro)
|
|||||||
{
|
{
|
||||||
ProjectExplorer::Project *currentProject = m_projectExplorer->currentProject();
|
ProjectExplorer::Project *currentProject = m_projectExplorer->currentProject();
|
||||||
if (pro == currentProject)
|
if (pro == currentProject)
|
||||||
m_runQMakeAction->setEnabled(!m_projectExplorer->buildManager()->isBuilding(currentProject));
|
updateRunQMakeAction();
|
||||||
if (pro == m_qt4ProjectManager->contextProject())
|
|
||||||
m_runQMakeActionContextMenu->setEnabled(!m_projectExplorer->buildManager()->isBuilding(pro));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void Qt4ProjectManagerPlugin::jumpToFile()
|
void Qt4ProjectManagerPlugin::jumpToFile()
|
||||||
|
|||||||
@@ -49,6 +49,8 @@ namespace Qt4ProjectManager {
|
|||||||
|
|
||||||
class Qt4Manager;
|
class Qt4Manager;
|
||||||
class QtVersionManager;
|
class QtVersionManager;
|
||||||
|
class Qt4Project;
|
||||||
|
class Qt4BaseTarget;
|
||||||
|
|
||||||
namespace Internal {
|
namespace Internal {
|
||||||
|
|
||||||
@@ -59,6 +61,7 @@ class Qt4ProjectManagerPlugin : public ExtensionSystem::IPlugin
|
|||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
Qt4ProjectManagerPlugin();
|
||||||
~Qt4ProjectManagerPlugin();
|
~Qt4ProjectManagerPlugin();
|
||||||
bool initialize(const QStringList &arguments, QString *errorMessage);
|
bool initialize(const QStringList &arguments, QString *errorMessage);
|
||||||
void extensionsInitialized();
|
void extensionsInitialized();
|
||||||
@@ -66,7 +69,9 @@ public:
|
|||||||
private slots:
|
private slots:
|
||||||
void updateContextMenu(ProjectExplorer::Project *project,
|
void updateContextMenu(ProjectExplorer::Project *project,
|
||||||
ProjectExplorer::Node *node);
|
ProjectExplorer::Node *node);
|
||||||
void currentProjectChanged();
|
void startupProjectChanged();
|
||||||
|
void activeTargetChanged();
|
||||||
|
void updateRunQMakeAction();
|
||||||
void currentNodeChanged(ProjectExplorer::Node *node);
|
void currentNodeChanged(ProjectExplorer::Node *node);
|
||||||
void buildStateChanged(ProjectExplorer::Project *pro);
|
void buildStateChanged(ProjectExplorer::Project *pro);
|
||||||
void jumpToFile();
|
void jumpToFile();
|
||||||
@@ -86,6 +91,8 @@ private:
|
|||||||
ProjectExplorer::ProjectExplorerPlugin *m_projectExplorer;
|
ProjectExplorer::ProjectExplorerPlugin *m_projectExplorer;
|
||||||
ProFileEditorFactory *m_proFileEditorFactory;
|
ProFileEditorFactory *m_proFileEditorFactory;
|
||||||
Qt4Manager *m_qt4ProjectManager;
|
Qt4Manager *m_qt4ProjectManager;
|
||||||
|
Qt4Project *m_previousStartupProject;
|
||||||
|
Qt4BaseTarget *m_previousTarget;
|
||||||
|
|
||||||
QAction *m_runQMakeAction;
|
QAction *m_runQMakeAction;
|
||||||
QAction *m_runQMakeActionContextMenu;
|
QAction *m_runQMakeActionContextMenu;
|
||||||
|
|||||||
@@ -34,6 +34,7 @@
|
|||||||
#include "qt4buildconfiguration.h"
|
#include "qt4buildconfiguration.h"
|
||||||
|
|
||||||
#include "qt4project.h"
|
#include "qt4project.h"
|
||||||
|
#include "qt4projectmanager.h"
|
||||||
#include "qt4target.h"
|
#include "qt4target.h"
|
||||||
#include <qtsupport/baseqtversion.h>
|
#include <qtsupport/baseqtversion.h>
|
||||||
|
|
||||||
@@ -57,14 +58,28 @@ Qt4UiCodeModelSupport::~Qt4UiCodeModelSupport()
|
|||||||
|
|
||||||
QString Qt4UiCodeModelSupport::uicCommand() const
|
QString Qt4UiCodeModelSupport::uicCommand() const
|
||||||
{
|
{
|
||||||
Qt4BuildConfiguration *qt4bc = m_project->activeTarget()->activeQt4BuildConfiguration();
|
if (m_project->needsConfiguration()) {
|
||||||
|
UnConfiguredSettings us = m_project->qt4ProjectManager()->unconfiguredSettings();
|
||||||
|
if (!us.version)
|
||||||
|
return QString();
|
||||||
|
return us.version->uicCommand();
|
||||||
|
} else {
|
||||||
|
Qt4BaseTarget *target = m_project->activeTarget();
|
||||||
|
Qt4BuildConfiguration *qt4bc = target->activeQt4BuildConfiguration();
|
||||||
if (!qt4bc->qtVersion())
|
if (!qt4bc->qtVersion())
|
||||||
return QString();
|
return QString();
|
||||||
return qt4bc->qtVersion()->uicCommand();
|
return qt4bc->qtVersion()->uicCommand();
|
||||||
}
|
}
|
||||||
|
return QString();
|
||||||
|
}
|
||||||
|
|
||||||
QStringList Qt4UiCodeModelSupport::environment() const
|
QStringList Qt4UiCodeModelSupport::environment() const
|
||||||
{
|
{
|
||||||
Qt4BuildConfiguration *qt4bc = m_project->activeTarget()->activeQt4BuildConfiguration();
|
if (m_project->needsConfiguration()) {
|
||||||
|
return Utils::Environment::systemEnvironment().toStringList();
|
||||||
|
} else {
|
||||||
|
Qt4BaseTarget *target = m_project->activeTarget();
|
||||||
|
Qt4BuildConfiguration *qt4bc = target->activeQt4BuildConfiguration();
|
||||||
return qt4bc->environment().toStringList();
|
return qt4bc->environment().toStringList();
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|||||||
195
src/plugins/qt4projectmanager/unconfiguredprojectpanel.cpp
Normal file
195
src/plugins/qt4projectmanager/unconfiguredprojectpanel.cpp
Normal file
@@ -0,0 +1,195 @@
|
|||||||
|
/**************************************************************************
|
||||||
|
**
|
||||||
|
** This file is part of Qt Creator
|
||||||
|
**
|
||||||
|
** Copyright (c) 2011 Nokia Corporation and/or its subsidiary(-ies).
|
||||||
|
**
|
||||||
|
** Contact: Nokia Corporation (qt-info@nokia.com)
|
||||||
|
**
|
||||||
|
**
|
||||||
|
** GNU Lesser General Public License Usage
|
||||||
|
**
|
||||||
|
** 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, Nokia gives you certain additional
|
||||||
|
** rights. These rights are described in the Nokia Qt LGPL Exception
|
||||||
|
** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
|
||||||
|
**
|
||||||
|
** Other Usage
|
||||||
|
**
|
||||||
|
** Alternatively, this file may be used in accordance with the terms and
|
||||||
|
** conditions contained in a signed written agreement between you and Nokia.
|
||||||
|
**
|
||||||
|
** If you have questions regarding the use of this file, please contact
|
||||||
|
** Nokia at qt-info@nokia.com.
|
||||||
|
**
|
||||||
|
**************************************************************************/
|
||||||
|
|
||||||
|
#include "unconfiguredprojectpanel.h"
|
||||||
|
#include "wizards/targetsetuppage.h"
|
||||||
|
#include "qt4projectmanagerconstants.h"
|
||||||
|
|
||||||
|
#include "qt4project.h"
|
||||||
|
#include "qt4projectmanager.h"
|
||||||
|
|
||||||
|
#include <coreplugin/ifile.h>
|
||||||
|
#include <coreplugin/icore.h>
|
||||||
|
#include <coreplugin/modemanager.h>
|
||||||
|
#include <coreplugin/coreconstants.h>
|
||||||
|
|
||||||
|
#include <projectexplorer/projectexplorerconstants.h>
|
||||||
|
#include <projectexplorer/toolchain.h>
|
||||||
|
|
||||||
|
#include <QtGui/QLabel>
|
||||||
|
#include <QtGui/QVBoxLayout>
|
||||||
|
#include <QtGui/QPushButton>
|
||||||
|
|
||||||
|
using namespace Qt4ProjectManager;
|
||||||
|
using namespace Qt4ProjectManager::Internal;
|
||||||
|
|
||||||
|
|
||||||
|
UnconfiguredProjectPanel::UnconfiguredProjectPanel()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
QString Qt4ProjectManager::Internal::UnconfiguredProjectPanel::id() const
|
||||||
|
{
|
||||||
|
return 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());
|
||||||
|
// TODO the icon needs a update
|
||||||
|
panel->setIcon(QIcon(":/projectexplorer/images/unconfigured.png"));
|
||||||
|
|
||||||
|
TargetSetupPageWrapper *w = new TargetSetupPageWrapper(project);
|
||||||
|
connect (w, SIGNAL(projectUpdated(ProjectExplorer::Project*)),
|
||||||
|
this, SIGNAL(projectUpdated(ProjectExplorer::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->setUseScrollArea(false);
|
||||||
|
m_targetSetupPage->setImportSearch(true);
|
||||||
|
m_targetSetupPage->setProFilePath(project->file()->fileName());
|
||||||
|
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();
|
||||||
|
QPushButton *button = new QPushButton(this);
|
||||||
|
button->setText(tr("Configure Project"));
|
||||||
|
hbox->addWidget(button);
|
||||||
|
|
||||||
|
layout->addStretch(10);
|
||||||
|
|
||||||
|
connect(button, SIGNAL(clicked()),
|
||||||
|
this, SLOT(done()));
|
||||||
|
connect(m_targetSetupPage, SIGNAL(noteTextLinkActivated()),
|
||||||
|
this, SLOT(noteTextLinkActivated()));
|
||||||
|
connect(m_project->qt4ProjectManager(), SIGNAL(unconfiguredSettingsChanged()),
|
||||||
|
this, SLOT(updateNoteText()));
|
||||||
|
}
|
||||||
|
|
||||||
|
void TargetSetupPageWrapper::updateNoteText()
|
||||||
|
{
|
||||||
|
UnConfiguredSettings us = m_project->qt4ProjectManager()->unconfiguredSettings();
|
||||||
|
|
||||||
|
QString text;
|
||||||
|
if (us.version && us.toolchain)
|
||||||
|
text = tr("<p>The project <b>%1</b> is not yet configured.</p><p>Qt Creator uses the Qt version: <b>%2</b> "
|
||||||
|
"and the tool chain: <b>%3</b> to parse the project. You can edit "
|
||||||
|
"these in the <b><a href=\"edit\">settings</a></b></p>")
|
||||||
|
.arg(m_project->displayName())
|
||||||
|
.arg(us.version->displayName())
|
||||||
|
.arg(us.toolchain->displayName());
|
||||||
|
else if (us.version)
|
||||||
|
text = tr("<p>The project <b>%1</b> is not yet configured.</p><p>Qt Creator uses the Qt version: <b>%2</b> "
|
||||||
|
"and <b>no tool chain</b> to parse the project. You can edit "
|
||||||
|
"these in the <b><a href=\"edit\">settings</a></b></p>")
|
||||||
|
.arg(m_project->displayName())
|
||||||
|
.arg(us.version->displayName());
|
||||||
|
else if (us.toolchain)
|
||||||
|
text = tr("<p>The project <b>%1</b> is not yet configured.</p><p>Qt Creator uses <b>no Qt version</b> "
|
||||||
|
"and the tool chain: <b>%2</b> to parse the project. You can edit "
|
||||||
|
"these in the <b><a href=\"edit\">settings</a></b></p>")
|
||||||
|
.arg(m_project->displayName())
|
||||||
|
.arg(us.toolchain->displayName());
|
||||||
|
else
|
||||||
|
text = tr("<p>The project <b>%1</b> is not yet configured.</p><p>Qt Creator uses <b>no Qt version</b> "
|
||||||
|
"and <b>no tool chain</b> to parse the project. You can edit "
|
||||||
|
"these in the <b><a href=\"edit\">settings</a></b></p>")
|
||||||
|
.arg(m_project->displayName());
|
||||||
|
|
||||||
|
m_targetSetupPage->setNoteText(text);
|
||||||
|
}
|
||||||
|
|
||||||
|
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::done()
|
||||||
|
{
|
||||||
|
m_targetSetupPage->setupProject(m_project);
|
||||||
|
emit projectUpdated(m_project);
|
||||||
|
Core::ICore::instance()->modeManager()->activateMode(QLatin1String(Core::Constants::MODE_EDIT));
|
||||||
|
}
|
||||||
|
|
||||||
|
void TargetSetupPageWrapper::noteTextLinkActivated()
|
||||||
|
{
|
||||||
|
Core::ICore::instance()->showOptionsDialog(QLatin1String(ProjectExplorer::Constants::PROJECTEXPLORER_SETTINGS_CATEGORY),
|
||||||
|
QLatin1String(Constants::UNCONFIGURED_SETTINGS_PAGE_ID));
|
||||||
|
}
|
||||||
@@ -30,33 +30,52 @@
|
|||||||
**
|
**
|
||||||
**************************************************************************/
|
**************************************************************************/
|
||||||
|
|
||||||
#ifndef PROJECTLOADWIZARD_H
|
#ifndef UNCONFIGUREDPROJECTPANEL_H
|
||||||
#define PROJECTLOADWIZARD_H
|
#define UNCONFIGUREDPROJECTPANEL_H
|
||||||
|
|
||||||
#include <QtGui/QWizard>
|
#include <projectexplorer/iprojectproperties.h>
|
||||||
|
|
||||||
|
#include <QtCore/QString>
|
||||||
|
|
||||||
namespace Qt4ProjectManager {
|
namespace Qt4ProjectManager {
|
||||||
class Qt4Project;
|
|
||||||
class TargetSetupPage;
|
class TargetSetupPage;
|
||||||
|
class Qt4Project;
|
||||||
|
|
||||||
namespace Internal {
|
namespace Internal {
|
||||||
|
|
||||||
class ProjectLoadWizard : public QWizard
|
class UnconfiguredProjectPanel : public ProjectExplorer::IProjectPanelFactory
|
||||||
{
|
{
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
public:
|
public:
|
||||||
explicit ProjectLoadWizard(Qt4Project *project, QWidget * parent = 0, Qt::WindowFlags flags = 0);
|
UnconfiguredProjectPanel();
|
||||||
virtual ~ProjectLoadWizard();
|
virtual QString id() const;
|
||||||
virtual void done(int result);
|
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);
|
||||||
|
signals:
|
||||||
|
void projectUpdated(ProjectExplorer::Project *project);
|
||||||
|
private slots:
|
||||||
|
void done();
|
||||||
|
void noteTextLinkActivated();
|
||||||
|
void updateNoteText();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void applySettings();
|
|
||||||
|
|
||||||
Qt4Project *m_project;
|
Qt4Project *m_project;
|
||||||
TargetSetupPage *m_targetSetupPage;
|
TargetSetupPage *m_targetSetupPage;
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace Internal
|
}
|
||||||
} // namespace Qt4ProjectManager
|
}
|
||||||
|
|
||||||
#endif // PROJECTLOADWIZARD_H
|
#endif // UNCONFIGUREDPROJECTPANEL_H
|
||||||
171
src/plugins/qt4projectmanager/unconfiguredsettingsoptionpage.cpp
Normal file
171
src/plugins/qt4projectmanager/unconfiguredsettingsoptionpage.cpp
Normal file
@@ -0,0 +1,171 @@
|
|||||||
|
/**************************************************************************
|
||||||
|
**
|
||||||
|
** This file is part of Qt Creator
|
||||||
|
**
|
||||||
|
** Copyright (c) 2011 Nokia Corporation and/or its subsidiary(-ies).
|
||||||
|
**
|
||||||
|
** Contact: Nokia Corporation (qt-info@nokia.com)
|
||||||
|
**
|
||||||
|
**
|
||||||
|
** GNU Lesser General Public License Usage
|
||||||
|
**
|
||||||
|
** 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, Nokia gives you certain additional
|
||||||
|
** rights. These rights are described in the Nokia Qt LGPL Exception
|
||||||
|
** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
|
||||||
|
**
|
||||||
|
** Other Usage
|
||||||
|
**
|
||||||
|
** Alternatively, this file may be used in accordance with the terms and
|
||||||
|
** conditions contained in a signed written agreement between you and Nokia.
|
||||||
|
**
|
||||||
|
** If you have questions regarding the use of this file, please contact
|
||||||
|
** Nokia at qt-info@nokia.com.
|
||||||
|
**
|
||||||
|
**************************************************************************/
|
||||||
|
|
||||||
|
#include "unconfiguredsettingsoptionpage.h"
|
||||||
|
#include "qt4projectmanagerconstants.h"
|
||||||
|
|
||||||
|
#include <extensionsystem/pluginmanager.h>
|
||||||
|
#include <projectexplorer/projectexplorerconstants.h>
|
||||||
|
#include <projectexplorer/toolchainmanager.h>
|
||||||
|
#include <projectexplorer/toolchain.h>
|
||||||
|
#include <qtsupport/qtversionmanager.h>
|
||||||
|
#include <qt4projectmanager/qt4projectmanager.h>
|
||||||
|
|
||||||
|
#include <QtCore/QCoreApplication>
|
||||||
|
#include <QtGui/QIcon>
|
||||||
|
#include <QtGui/QComboBox>
|
||||||
|
#include <QtGui/QLabel>
|
||||||
|
#include <QtGui/QCheckBox>
|
||||||
|
#include <QFormLayout>
|
||||||
|
|
||||||
|
using namespace Qt4ProjectManager;
|
||||||
|
using namespace Qt4ProjectManager::Internal;
|
||||||
|
|
||||||
|
//////////////////////////
|
||||||
|
// UnConfiguredSettingsWidget
|
||||||
|
//////////////////////////
|
||||||
|
|
||||||
|
UnConfiguredSettingsWidget::UnConfiguredSettingsWidget(QWidget *parent)
|
||||||
|
: QWidget(parent)
|
||||||
|
{
|
||||||
|
QFormLayout *layout = new QFormLayout(this);
|
||||||
|
|
||||||
|
m_qtVersionComboBox = new QComboBox;
|
||||||
|
layout->addRow(tr("Qt Version:"), m_qtVersionComboBox);
|
||||||
|
|
||||||
|
m_toolchainComboBox = new QComboBox;
|
||||||
|
layout->addRow(tr("Tool Chain:"), m_toolchainComboBox);
|
||||||
|
|
||||||
|
Qt4Manager *qt4Manager = ExtensionSystem::PluginManager::instance()->getObject<Qt4Manager>();
|
||||||
|
Internal::UnConfiguredSettings ucs = qt4Manager->unconfiguredSettings();
|
||||||
|
|
||||||
|
QtSupport::QtVersionManager *vm = QtSupport::QtVersionManager::instance();
|
||||||
|
foreach (QtSupport::BaseQtVersion *version, vm->validVersions())
|
||||||
|
m_qtVersionComboBox->addItem(version->displayName(), version->uniqueId());
|
||||||
|
|
||||||
|
int index = ucs.version ? m_qtVersionComboBox->findData(ucs.version->uniqueId()) : 0;
|
||||||
|
if (index == -1)
|
||||||
|
index = 0;
|
||||||
|
if (index < m_qtVersionComboBox->count())
|
||||||
|
m_qtVersionComboBox->setCurrentIndex(index);
|
||||||
|
|
||||||
|
|
||||||
|
ProjectExplorer::ToolChainManager *tm = ProjectExplorer::ToolChainManager::instance();
|
||||||
|
foreach (ProjectExplorer::ToolChain *tc, tm->toolChains())
|
||||||
|
m_toolchainComboBox->addItem(tc->displayName(), tc->id());
|
||||||
|
|
||||||
|
index = ucs.toolchain ? m_toolchainComboBox->findData(ucs.toolchain->id()) : 0;
|
||||||
|
if (index == -1)
|
||||||
|
index = 0;
|
||||||
|
if (index < m_toolchainComboBox->count())
|
||||||
|
m_toolchainComboBox->setCurrentIndex(index);
|
||||||
|
}
|
||||||
|
|
||||||
|
void UnConfiguredSettingsWidget::apply()
|
||||||
|
{
|
||||||
|
Qt4Manager *qt4Manager = ExtensionSystem::PluginManager::instance()->getObject<Qt4Manager>();
|
||||||
|
Internal::UnConfiguredSettings ucs;
|
||||||
|
|
||||||
|
int index = m_qtVersionComboBox->currentIndex();
|
||||||
|
int qtVersionId = (index != -1) ? m_qtVersionComboBox->itemData(index).toInt() : -1;
|
||||||
|
ucs.version = QtSupport::QtVersionManager::instance()->version(qtVersionId);
|
||||||
|
index = m_toolchainComboBox->currentIndex();
|
||||||
|
QString toolChainId = index != -1 ? m_toolchainComboBox->itemData(index).toString() : QString();
|
||||||
|
ucs.toolchain = ProjectExplorer::ToolChainManager::instance()->findToolChain(toolChainId);
|
||||||
|
qt4Manager->setUnconfiguredSettings(ucs);
|
||||||
|
}
|
||||||
|
|
||||||
|
bool UnConfiguredSettingsWidget::matches(const QString &searchKeyword)
|
||||||
|
{
|
||||||
|
for (int i = 0; i < layout()->count(); ++i) {
|
||||||
|
if (QLabel *l = qobject_cast<QLabel *>(layout()->itemAt(i)->widget()))
|
||||||
|
if (l->text().contains(searchKeyword))
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
//////////////////////////
|
||||||
|
// UnConfiguredSettingsOptionPage
|
||||||
|
//////////////////////////
|
||||||
|
|
||||||
|
UnConfiguredSettingsOptionPage::UnConfiguredSettingsOptionPage()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
QString UnConfiguredSettingsOptionPage::id() const
|
||||||
|
{
|
||||||
|
return Constants::UNCONFIGURED_SETTINGS_PAGE_ID;
|
||||||
|
}
|
||||||
|
|
||||||
|
QString UnConfiguredSettingsOptionPage::displayName() const
|
||||||
|
{
|
||||||
|
return QCoreApplication::translate("Qt4ProjectManager", Constants::UNCONFIGURED_SETTINGS_PAGE_NAME);
|
||||||
|
}
|
||||||
|
|
||||||
|
QString UnConfiguredSettingsOptionPage::category() const
|
||||||
|
{
|
||||||
|
return QLatin1String(ProjectExplorer::Constants::PROJECTEXPLORER_SETTINGS_CATEGORY);
|
||||||
|
}
|
||||||
|
|
||||||
|
QString UnConfiguredSettingsOptionPage::displayCategory() const
|
||||||
|
{
|
||||||
|
return QCoreApplication::translate("ProjectExplorer",
|
||||||
|
ProjectExplorer::Constants::PROJECTEXPLORER_SETTINGS_TR_CATEGORY);
|
||||||
|
}
|
||||||
|
|
||||||
|
QIcon UnConfiguredSettingsOptionPage::categoryIcon() const
|
||||||
|
{
|
||||||
|
return QIcon(ProjectExplorer::Constants::PROJECTEXPLORER_SETTINGS_CATEGORY_ICON);
|
||||||
|
}
|
||||||
|
|
||||||
|
bool UnConfiguredSettingsOptionPage::matches(const QString &searchKeyword) const
|
||||||
|
{
|
||||||
|
return m_widget->matches(searchKeyword);
|
||||||
|
}
|
||||||
|
|
||||||
|
QWidget *UnConfiguredSettingsOptionPage::createPage(QWidget *parent)
|
||||||
|
{
|
||||||
|
m_widget = new UnConfiguredSettingsWidget(parent);
|
||||||
|
return m_widget;
|
||||||
|
}
|
||||||
|
|
||||||
|
void UnConfiguredSettingsOptionPage::apply()
|
||||||
|
{
|
||||||
|
if (m_widget)
|
||||||
|
m_widget->apply();
|
||||||
|
}
|
||||||
|
|
||||||
|
void UnConfiguredSettingsOptionPage::finish()
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,81 @@
|
|||||||
|
/**************************************************************************
|
||||||
|
**
|
||||||
|
** This file is part of Qt Creator
|
||||||
|
**
|
||||||
|
** Copyright (c) 2011 Nokia Corporation and/or its subsidiary(-ies).
|
||||||
|
**
|
||||||
|
** Contact: Nokia Corporation (qt-info@nokia.com)
|
||||||
|
**
|
||||||
|
**
|
||||||
|
** GNU Lesser General Public License Usage
|
||||||
|
**
|
||||||
|
** 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, Nokia gives you certain additional
|
||||||
|
** rights. These rights are described in the Nokia Qt LGPL Exception
|
||||||
|
** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
|
||||||
|
**
|
||||||
|
** Other Usage
|
||||||
|
**
|
||||||
|
** Alternatively, this file may be used in accordance with the terms and
|
||||||
|
** conditions contained in a signed written agreement between you and Nokia.
|
||||||
|
**
|
||||||
|
** If you have questions regarding the use of this file, please contact
|
||||||
|
** Nokia at qt-info@nokia.com.
|
||||||
|
**
|
||||||
|
**************************************************************************/
|
||||||
|
|
||||||
|
#ifndef UNCONFIGUREDSETTINGSOPTIONPAGE_H
|
||||||
|
#define UNCONFIGUREDSETTINGSOPTIONPAGE_H
|
||||||
|
|
||||||
|
#include <coreplugin/dialogs/ioptionspage.h>
|
||||||
|
#include <QtGui/QWidget>
|
||||||
|
|
||||||
|
QT_BEGIN_NAMESPACE
|
||||||
|
class QComboBox;
|
||||||
|
class QCheckBox;
|
||||||
|
QT_END_NAMESPACE
|
||||||
|
|
||||||
|
namespace Qt4ProjectManager {
|
||||||
|
namespace Internal {
|
||||||
|
|
||||||
|
class UnConfiguredSettingsWidget : public QWidget
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
UnConfiguredSettingsWidget(QWidget *parent);
|
||||||
|
void apply();
|
||||||
|
bool matches(const QString &searchKeyword);
|
||||||
|
private:
|
||||||
|
QComboBox *m_qtVersionComboBox;
|
||||||
|
QComboBox *m_toolchainComboBox;
|
||||||
|
QCheckBox *m_alwaysSkipCheckBox;
|
||||||
|
};
|
||||||
|
|
||||||
|
class UnConfiguredSettingsOptionPage : public Core::IOptionsPage
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
UnConfiguredSettingsOptionPage();
|
||||||
|
|
||||||
|
QString id() const;
|
||||||
|
QString displayName() const;
|
||||||
|
QString category() const;
|
||||||
|
QString displayCategory() const;
|
||||||
|
QIcon categoryIcon() const;
|
||||||
|
bool matches(const QString &searcKeyword) const;
|
||||||
|
|
||||||
|
QWidget *createPage(QWidget *parent);
|
||||||
|
void apply();
|
||||||
|
void finish();
|
||||||
|
private:
|
||||||
|
UnConfiguredSettingsWidget *m_widget;
|
||||||
|
};
|
||||||
|
|
||||||
|
} // namespace Internal
|
||||||
|
} // namespace Qt4ProjectManager
|
||||||
|
|
||||||
|
#endif // UNCONFIGUREDSETTINGSOPTIONPAGE_H
|
||||||
@@ -35,6 +35,7 @@
|
|||||||
#include "ui_targetsetuppage.h"
|
#include "ui_targetsetuppage.h"
|
||||||
#include "buildconfigurationinfo.h"
|
#include "buildconfigurationinfo.h"
|
||||||
#include "qt4project.h"
|
#include "qt4project.h"
|
||||||
|
#include "qt4projectmanager.h"
|
||||||
#include "qt4projectmanagerconstants.h"
|
#include "qt4projectmanagerconstants.h"
|
||||||
#include "qt4target.h"
|
#include "qt4target.h"
|
||||||
#include "qt4basetargetfactory.h"
|
#include "qt4basetargetfactory.h"
|
||||||
@@ -42,6 +43,8 @@
|
|||||||
#include <extensionsystem/pluginmanager.h>
|
#include <extensionsystem/pluginmanager.h>
|
||||||
#include <projectexplorer/task.h>
|
#include <projectexplorer/task.h>
|
||||||
#include <projectexplorer/taskhub.h>
|
#include <projectexplorer/taskhub.h>
|
||||||
|
#include <projectexplorer/toolchainmanager.h>
|
||||||
|
#include <projectexplorer/toolchain.h>
|
||||||
#include <qtsupport/qtversionfactory.h>
|
#include <qtsupport/qtversionfactory.h>
|
||||||
#include <utils/qtcassert.h>
|
#include <utils/qtcassert.h>
|
||||||
#include <utils/qtcprocess.h>
|
#include <utils/qtcprocess.h>
|
||||||
@@ -54,6 +57,7 @@ using namespace Qt4ProjectManager;
|
|||||||
TargetSetupPage::TargetSetupPage(QWidget *parent) :
|
TargetSetupPage::TargetSetupPage(QWidget *parent) :
|
||||||
QWizardPage(parent),
|
QWizardPage(parent),
|
||||||
m_importSearch(false),
|
m_importSearch(false),
|
||||||
|
m_useScrollArea(true),
|
||||||
m_maximumQtVersionNumber(INT_MAX, INT_MAX, INT_MAX),
|
m_maximumQtVersionNumber(INT_MAX, INT_MAX, INT_MAX),
|
||||||
m_spacer(new QSpacerItem(0, 0, QSizePolicy::Minimum, QSizePolicy::Expanding)),
|
m_spacer(new QSpacerItem(0, 0, QSizePolicy::Minimum, QSizePolicy::Expanding)),
|
||||||
m_ui(new Internal::Ui::TargetSetupPage)
|
m_ui(new Internal::Ui::TargetSetupPage)
|
||||||
@@ -61,11 +65,14 @@ TargetSetupPage::TargetSetupPage(QWidget *parent) :
|
|||||||
m_ui->setupUi(this);
|
m_ui->setupUi(this);
|
||||||
QWidget *centralWidget = new QWidget(this);
|
QWidget *centralWidget = new QWidget(this);
|
||||||
m_ui->scrollArea->setWidget(centralWidget);
|
m_ui->scrollArea->setWidget(centralWidget);
|
||||||
m_layout = new QVBoxLayout;
|
centralWidget->setLayout(new QVBoxLayout);
|
||||||
centralWidget->setLayout(m_layout);
|
m_ui->centralWidget->setLayout(new QVBoxLayout);
|
||||||
m_layout->addSpacerItem(m_spacer);
|
m_ui->centralWidget->layout()->setMargin(0);
|
||||||
|
|
||||||
setTitle(tr("Target Setup"));
|
setTitle(tr("Target Setup"));
|
||||||
|
|
||||||
|
connect(m_ui->descriptionLabel, SIGNAL(linkActivated(QString)),
|
||||||
|
this, SIGNAL(noteTextLinkActivated()));
|
||||||
}
|
}
|
||||||
|
|
||||||
void TargetSetupPage::initializePage()
|
void TargetSetupPage::initializePage()
|
||||||
@@ -130,6 +137,13 @@ void TargetSetupPage::setImportSearch(bool b)
|
|||||||
|
|
||||||
void TargetSetupPage::setupWidgets()
|
void TargetSetupPage::setupWidgets()
|
||||||
{
|
{
|
||||||
|
QLayout *layout = 0;
|
||||||
|
if (m_useScrollArea)
|
||||||
|
layout = m_ui->scrollArea->widget()->layout();
|
||||||
|
else
|
||||||
|
layout = m_ui->centralWidget->layout();
|
||||||
|
|
||||||
|
// Target Page setup
|
||||||
QList<Qt4BaseTargetFactory *> factories = ExtensionSystem::PluginManager::instance()->getObjects<Qt4BaseTargetFactory>();
|
QList<Qt4BaseTargetFactory *> factories = ExtensionSystem::PluginManager::instance()->getObjects<Qt4BaseTargetFactory>();
|
||||||
bool atLeastOneTargetSelected = false;
|
bool atLeastOneTargetSelected = false;
|
||||||
foreach (Qt4BaseTargetFactory *factory, factories) {
|
foreach (Qt4BaseTargetFactory *factory, factories) {
|
||||||
@@ -159,7 +173,7 @@ void TargetSetupPage::setupWidgets()
|
|||||||
atLeastOneTargetSelected |= selectTarget;
|
atLeastOneTargetSelected |= selectTarget;
|
||||||
m_widgets.insert(id, widget);
|
m_widgets.insert(id, widget);
|
||||||
m_factories.insert(widget, factory);
|
m_factories.insert(widget, factory);
|
||||||
m_layout->addWidget(widget);
|
layout->addWidget(widget);
|
||||||
connect(widget, SIGNAL(selectedToggled()),
|
connect(widget, SIGNAL(selectedToggled()),
|
||||||
this, SIGNAL(completeChanged()));
|
this, SIGNAL(completeChanged()));
|
||||||
connect(widget, SIGNAL(newImportBuildConfiguration(BuildConfigurationInfo)),
|
connect(widget, SIGNAL(newImportBuildConfiguration(BuildConfigurationInfo)),
|
||||||
@@ -173,15 +187,17 @@ void TargetSetupPage::setupWidgets()
|
|||||||
widget->setTargetSelected(true);
|
widget->setTargetSelected(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (m_useScrollArea)
|
||||||
m_layout->addSpacerItem(m_spacer);
|
layout->addItem(m_spacer);
|
||||||
if (m_widgets.isEmpty()) {
|
if (m_widgets.isEmpty()) {
|
||||||
// Oh no one can create any targets
|
// Oh no one can create any targets
|
||||||
m_ui->scrollArea->setVisible(false);
|
m_ui->scrollArea->setVisible(false);
|
||||||
|
m_ui->centralWidget->setVisible(false);
|
||||||
m_ui->descriptionLabel->setVisible(false);
|
m_ui->descriptionLabel->setVisible(false);
|
||||||
m_ui->noValidQtVersionsLabel->setVisible(true);
|
m_ui->noValidQtVersionsLabel->setVisible(true);
|
||||||
} else {
|
} else {
|
||||||
m_ui->scrollArea->setVisible(true);
|
m_ui->scrollArea->setVisible(m_useScrollArea);
|
||||||
|
m_ui->centralWidget->setVisible(!m_useScrollArea);
|
||||||
m_ui->descriptionLabel->setVisible(true);
|
m_ui->descriptionLabel->setVisible(true);
|
||||||
m_ui->noValidQtVersionsLabel->setVisible(false);
|
m_ui->noValidQtVersionsLabel->setVisible(false);
|
||||||
}
|
}
|
||||||
@@ -189,11 +205,17 @@ void TargetSetupPage::setupWidgets()
|
|||||||
|
|
||||||
void TargetSetupPage::deleteWidgets()
|
void TargetSetupPage::deleteWidgets()
|
||||||
{
|
{
|
||||||
|
QLayout *layout = 0;
|
||||||
|
if (m_useScrollArea)
|
||||||
|
layout = m_ui->scrollArea->widget()->layout();
|
||||||
|
else
|
||||||
|
layout = m_ui->centralWidget->layout();
|
||||||
foreach (Qt4TargetSetupWidget *widget, m_widgets)
|
foreach (Qt4TargetSetupWidget *widget, m_widgets)
|
||||||
delete widget;
|
delete widget;
|
||||||
m_widgets.clear();
|
m_widgets.clear();
|
||||||
m_factories.clear();
|
m_factories.clear();
|
||||||
m_layout->removeItem(m_spacer);
|
if (m_useScrollArea)
|
||||||
|
layout->removeItem(m_spacer);
|
||||||
}
|
}
|
||||||
|
|
||||||
void TargetSetupPage::setProFilePath(const QString &path)
|
void TargetSetupPage::setProFilePath(const QString &path)
|
||||||
@@ -208,6 +230,11 @@ void TargetSetupPage::setProFilePath(const QString &path)
|
|||||||
setupWidgets();
|
setupWidgets();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void TargetSetupPage::setNoteText(const QString &text)
|
||||||
|
{
|
||||||
|
m_ui->descriptionLabel->setText(text);
|
||||||
|
}
|
||||||
|
|
||||||
void TargetSetupPage::setupImportInfos()
|
void TargetSetupPage::setupImportInfos()
|
||||||
{
|
{
|
||||||
if (m_importSearch)
|
if (m_importSearch)
|
||||||
@@ -251,14 +278,6 @@ bool TargetSetupPage::setupProject(Qt4ProjectManager::Qt4Project *project)
|
|||||||
project->addTarget(target);
|
project->addTarget(target);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Create a desktop target if nothing else was set up:
|
|
||||||
if (project->targets().isEmpty()) {
|
|
||||||
const QString desktopTargetId = QLatin1String(Constants::DESKTOP_TARGET_ID);
|
|
||||||
if (Qt4BaseTargetFactory *tf = Qt4BaseTargetFactory::qt4BaseTargetFactoryForId(desktopTargetId))
|
|
||||||
if (ProjectExplorer::Target *target = tf->create(project, desktopTargetId))
|
|
||||||
project->addTarget(target);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Select active target
|
// Select active target
|
||||||
// a) Simulator target
|
// a) Simulator target
|
||||||
// b) Desktop target
|
// b) Desktop target
|
||||||
@@ -276,5 +295,10 @@ bool TargetSetupPage::setupProject(Qt4ProjectManager::Qt4Project *project)
|
|||||||
if (activeTarget)
|
if (activeTarget)
|
||||||
project->setActiveTarget(activeTarget);
|
project->setActiveTarget(activeTarget);
|
||||||
|
|
||||||
return !project->targets().isEmpty();
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
void TargetSetupPage::setUseScrollArea(bool b)
|
||||||
|
{
|
||||||
|
m_useScrollArea = b;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -91,11 +91,22 @@ public:
|
|||||||
/// Sets whether the TargetSetupPage looks on disk for builds of this project
|
/// Sets whether the TargetSetupPage looks on disk for builds of this project
|
||||||
/// call this before \sa initializePage()
|
/// call this before \sa initializePage()
|
||||||
void setImportSearch(bool b);
|
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 isComplete() const;
|
||||||
bool setupProject(Qt4ProjectManager::Qt4Project *project);
|
bool setupProject(Qt4ProjectManager::Qt4Project *project);
|
||||||
bool isTargetSelected(const QString &id) const;
|
bool isTargetSelected(const QString &id) const;
|
||||||
void setProFilePath(const QString &dir);
|
void setProFilePath(const QString &dir);
|
||||||
|
|
||||||
|
/// Overrides the summary text of the targetsetuppage
|
||||||
|
void setNoteText(const QString &text);
|
||||||
|
signals:
|
||||||
|
void noteTextLinkActivated();
|
||||||
|
|
||||||
private slots:
|
private slots:
|
||||||
void newImportBuildConfiguration(const BuildConfigurationInfo &info);
|
void newImportBuildConfiguration(const BuildConfigurationInfo &info);
|
||||||
|
|
||||||
@@ -109,6 +120,7 @@ private:
|
|||||||
QSet<QString> m_requiredTargetFeatures;
|
QSet<QString> m_requiredTargetFeatures;
|
||||||
Core::FeatureSet m_requiredQtFeatures;
|
Core::FeatureSet m_requiredQtFeatures;
|
||||||
bool m_importSearch;
|
bool m_importSearch;
|
||||||
|
bool m_useScrollArea;
|
||||||
QtSupport::QtVersionNumber m_minimumQtVersionNumber;
|
QtSupport::QtVersionNumber m_minimumQtVersionNumber;
|
||||||
QtSupport::QtVersionNumber m_maximumQtVersionNumber;
|
QtSupport::QtVersionNumber m_maximumQtVersionNumber;
|
||||||
QString m_proFilePath;
|
QString m_proFilePath;
|
||||||
@@ -116,7 +128,6 @@ private:
|
|||||||
QMap<QString, Qt4TargetSetupWidget *> m_widgets;
|
QMap<QString, Qt4TargetSetupWidget *> m_widgets;
|
||||||
QHash<Qt4TargetSetupWidget *, Qt4BaseTargetFactory *> m_factories;
|
QHash<Qt4TargetSetupWidget *, Qt4BaseTargetFactory *> m_factories;
|
||||||
|
|
||||||
QVBoxLayout *m_layout;
|
|
||||||
QSpacerItem *m_spacer;
|
QSpacerItem *m_spacer;
|
||||||
Internal::Ui::TargetSetupPage *m_ui;
|
Internal::Ui::TargetSetupPage *m_ui;
|
||||||
QList<BuildConfigurationInfo> m_importInfos;
|
QList<BuildConfigurationInfo> m_importInfos;
|
||||||
|
|||||||
@@ -6,14 +6,48 @@
|
|||||||
<rect>
|
<rect>
|
||||||
<x>0</x>
|
<x>0</x>
|
||||||
<y>0</y>
|
<y>0</y>
|
||||||
<width>555</width>
|
<width>230</width>
|
||||||
<height>450</height>
|
<height>218</height>
|
||||||
</rect>
|
</rect>
|
||||||
</property>
|
</property>
|
||||||
|
<property name="sizePolicy">
|
||||||
|
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
|
||||||
|
<horstretch>0</horstretch>
|
||||||
|
<verstretch>0</verstretch>
|
||||||
|
</sizepolicy>
|
||||||
|
</property>
|
||||||
<property name="windowTitle">
|
<property name="windowTitle">
|
||||||
<string>Set up Targets for Your Project</string>
|
<string>Set up Targets for Your Project</string>
|
||||||
</property>
|
</property>
|
||||||
|
<layout class="QVBoxLayout" name="verticalLayout_3">
|
||||||
|
<property name="margin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<item>
|
||||||
|
<widget class="QWidget" name="setupTargetPage" native="true">
|
||||||
<layout class="QVBoxLayout" name="verticalLayout">
|
<layout class="QVBoxLayout" name="verticalLayout">
|
||||||
|
<property name="margin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<item>
|
||||||
|
<widget class="QLabel" name="descriptionLabel">
|
||||||
|
<property name="sizePolicy">
|
||||||
|
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
|
||||||
|
<horstretch>0</horstretch>
|
||||||
|
<verstretch>0</verstretch>
|
||||||
|
</sizepolicy>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>Qt Creator can set up the following targets:</string>
|
||||||
|
</property>
|
||||||
|
<property name="wordWrap">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
<property name="textInteractionFlags">
|
||||||
|
<set>Qt::LinksAccessibleByMouse</set>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
<item>
|
<item>
|
||||||
<widget class="QLabel" name="noValidQtVersionsLabel">
|
<widget class="QLabel" name="noValidQtVersionsLabel">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
@@ -25,44 +59,15 @@
|
|||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item>
|
<item>
|
||||||
<layout class="QHBoxLayout" name="horizontalLayout_2">
|
<widget class="QWidget" name="centralWidget" native="true">
|
||||||
<item>
|
|
||||||
<widget class="QLabel" name="descriptionLabel">
|
|
||||||
<property name="sizePolicy">
|
<property name="sizePolicy">
|
||||||
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
|
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
|
||||||
<horstretch>0</horstretch>
|
<horstretch>0</horstretch>
|
||||||
<verstretch>0</verstretch>
|
<verstretch>0</verstretch>
|
||||||
</sizepolicy>
|
</sizepolicy>
|
||||||
</property>
|
</property>
|
||||||
<property name="text">
|
|
||||||
<string>Qt Creator can set up the following targets:</string>
|
|
||||||
</property>
|
|
||||||
<property name="wordWrap">
|
|
||||||
<bool>false</bool>
|
|
||||||
</property>
|
|
||||||
<property name="textInteractionFlags">
|
|
||||||
<set>Qt::NoTextInteraction</set>
|
|
||||||
</property>
|
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item>
|
|
||||||
<spacer name="horizontalSpacer_2">
|
|
||||||
<property name="orientation">
|
|
||||||
<enum>Qt::Horizontal</enum>
|
|
||||||
</property>
|
|
||||||
<property name="sizeType">
|
|
||||||
<enum>QSizePolicy::MinimumExpanding</enum>
|
|
||||||
</property>
|
|
||||||
<property name="sizeHint" stdset="0">
|
|
||||||
<size>
|
|
||||||
<width>13</width>
|
|
||||||
<height>13</height>
|
|
||||||
</size>
|
|
||||||
</property>
|
|
||||||
</spacer>
|
|
||||||
</item>
|
|
||||||
</layout>
|
|
||||||
</item>
|
|
||||||
<item>
|
<item>
|
||||||
<widget class="QScrollArea" name="scrollArea">
|
<widget class="QScrollArea" name="scrollArea">
|
||||||
<property name="widgetResizable">
|
<property name="widgetResizable">
|
||||||
@@ -73,16 +78,18 @@
|
|||||||
<rect>
|
<rect>
|
||||||
<x>0</x>
|
<x>0</x>
|
||||||
<y>0</y>
|
<y>0</y>
|
||||||
<width>541</width>
|
<width>224</width>
|
||||||
<height>358</height>
|
<height>66</height>
|
||||||
</rect>
|
</rect>
|
||||||
</property>
|
</property>
|
||||||
<layout class="QVBoxLayout" name="verticalLayout_2"/>
|
|
||||||
</widget>
|
</widget>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
</layout>
|
</layout>
|
||||||
</widget>
|
</widget>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</widget>
|
||||||
<resources/>
|
<resources/>
|
||||||
<connections/>
|
<connections/>
|
||||||
</ui>
|
</ui>
|
||||||
|
|||||||
@@ -75,7 +75,6 @@ public:
|
|||||||
|
|
||||||
BaseQtVersion *qtVersionForQMakeBinary(const Utils::FileName &qmakePath);
|
BaseQtVersion *qtVersionForQMakeBinary(const Utils::FileName &qmakePath);
|
||||||
|
|
||||||
// Used by the projectloadwizard
|
|
||||||
void addVersion(BaseQtVersion *version);
|
void addVersion(BaseQtVersion *version);
|
||||||
void removeVersion(BaseQtVersion *version);
|
void removeVersion(BaseQtVersion *version);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user