forked from qt-creator/qt-creator
BuildManager: apply 'static' pattern
Change-Id: I00bb591c027a22088d5f1feedc84aa28523dcca2 Reviewed-by: David Schulz <david.schulz@digia.com>
This commit is contained in:
@@ -55,6 +55,7 @@
|
|||||||
namespace Android {
|
namespace Android {
|
||||||
namespace Internal {
|
namespace Internal {
|
||||||
|
|
||||||
|
using namespace ProjectExplorer;
|
||||||
using namespace Qt4ProjectManager;
|
using namespace Qt4ProjectManager;
|
||||||
|
|
||||||
///////////////////////////// CheckModel /////////////////////////////
|
///////////////////////////// CheckModel /////////////////////////////
|
||||||
@@ -251,10 +252,9 @@ void AndroidPackageCreationWidget::setTargetSDK(const QString &sdk)
|
|||||||
|
|
||||||
qs->setForced(true);
|
qs->setForced(true);
|
||||||
|
|
||||||
ProjectExplorer::BuildManager *bm = ProjectExplorer::ProjectExplorerPlugin::instance()->buildManager();
|
BuildManager::buildList(bc->stepList(ProjectExplorer::Constants::BUILDSTEPS_CLEAN),
|
||||||
bm->buildList(bc->stepList(Core::Id(ProjectExplorer::Constants::BUILDSTEPS_CLEAN)),
|
ProjectExplorerPlugin::displayNameForStepId(ProjectExplorer::Constants::BUILDSTEPS_CLEAN));
|
||||||
ProjectExplorer::ProjectExplorerPlugin::displayNameForStepId(Core::Id(ProjectExplorer::Constants::BUILDSTEPS_CLEAN)));
|
BuildManager::appendStep(qs, ProjectExplorerPlugin::displayNameForStepId(ProjectExplorer::Constants::BUILDSTEPS_CLEAN));
|
||||||
bm->appendStep(qs, ProjectExplorer::ProjectExplorerPlugin::displayNameForStepId(Core::Id(ProjectExplorer::Constants::BUILDSTEPS_CLEAN)));
|
|
||||||
bc->setSubNodeBuild(0);
|
bc->setSubNodeBuild(0);
|
||||||
// Make the buildconfiguration emit a evironmentChanged() signal
|
// Make the buildconfiguration emit a evironmentChanged() signal
|
||||||
// TODO find a better way
|
// TODO find a better way
|
||||||
|
|||||||
@@ -3490,8 +3490,7 @@ void DebuggerPluginPrivate::testProjectEvaluated()
|
|||||||
QString fileName = m_testProject->projectFilePath();
|
QString fileName = m_testProject->projectFilePath();
|
||||||
QVERIFY(!fileName.isEmpty());
|
QVERIFY(!fileName.isEmpty());
|
||||||
qWarning("Project %s loaded", qPrintable(fileName));
|
qWarning("Project %s loaded", qPrintable(fileName));
|
||||||
connect(ProjectExplorerPlugin::instance()->buildManager(),
|
connect(BuildManager::instance(), SIGNAL(buildQueueFinished(bool)),
|
||||||
SIGNAL(buildQueueFinished(bool)),
|
|
||||||
SLOT(testProjectBuilt(bool)));
|
SLOT(testProjectBuilt(bool)));
|
||||||
ProjectExplorerPlugin::instance()->buildProject(m_testProject);
|
ProjectExplorerPlugin::instance()->buildProject(m_testProject);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -111,9 +111,15 @@ BuildManagerPrivate::BuildManagerPrivate() :
|
|||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static BuildManagerPrivate *d = 0;
|
||||||
|
static BuildManager *m_instance = 0;
|
||||||
|
|
||||||
BuildManager::BuildManager(QObject *parent, QAction *cancelBuildAction)
|
BuildManager::BuildManager(QObject *parent, QAction *cancelBuildAction)
|
||||||
: QObject(parent), d(new BuildManagerPrivate)
|
: QObject(parent)
|
||||||
{
|
{
|
||||||
|
m_instance = this;
|
||||||
|
d = new BuildManagerPrivate;
|
||||||
|
|
||||||
connect(&d->m_watcher, SIGNAL(finished()),
|
connect(&d->m_watcher, SIGNAL(finished()),
|
||||||
this, SLOT(nextBuildQueue()));
|
this, SLOT(nextBuildQueue()));
|
||||||
|
|
||||||
@@ -148,6 +154,11 @@ BuildManager::BuildManager(QObject *parent, QAction *cancelBuildAction)
|
|||||||
this, SLOT(finish()));
|
this, SLOT(finish()));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QObject *BuildManager::instance()
|
||||||
|
{
|
||||||
|
return m_instance;
|
||||||
|
}
|
||||||
|
|
||||||
void BuildManager::extensionsInitialized()
|
void BuildManager::extensionsInitialized()
|
||||||
{
|
{
|
||||||
TaskHub::addCategory(Constants::TASK_CATEGORY_COMPILE,
|
TaskHub::addCategory(Constants::TASK_CATEGORY_COMPILE,
|
||||||
@@ -161,6 +172,7 @@ void BuildManager::extensionsInitialized()
|
|||||||
BuildManager::~BuildManager()
|
BuildManager::~BuildManager()
|
||||||
{
|
{
|
||||||
cancel();
|
cancel();
|
||||||
|
m_instance = 0;
|
||||||
ExtensionSystem::PluginManager::removeObject(d->m_taskWindow);
|
ExtensionSystem::PluginManager::removeObject(d->m_taskWindow);
|
||||||
delete d->m_taskWindow;
|
delete d->m_taskWindow;
|
||||||
|
|
||||||
@@ -170,7 +182,7 @@ BuildManager::~BuildManager()
|
|||||||
delete d;
|
delete d;
|
||||||
}
|
}
|
||||||
|
|
||||||
void BuildManager::aboutToRemoveProject(ProjectExplorer::Project *p)
|
void BuildManager::aboutToRemoveProject(Project *p)
|
||||||
{
|
{
|
||||||
QHash<Project *, int>::iterator it = d->m_activeBuildSteps.find(p);
|
QHash<Project *, int>::iterator it = d->m_activeBuildSteps.find(p);
|
||||||
QHash<Project *, int>::iterator end = d->m_activeBuildSteps.end();
|
QHash<Project *, int>::iterator end = d->m_activeBuildSteps.end();
|
||||||
@@ -182,13 +194,13 @@ void BuildManager::aboutToRemoveProject(ProjectExplorer::Project *p)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
bool BuildManager::isBuilding() const
|
bool BuildManager::isBuilding()
|
||||||
{
|
{
|
||||||
// we are building even if we are not running yet
|
// we are building even if we are not running yet
|
||||||
return !d->m_buildQueue.isEmpty() || d->m_running;
|
return !d->m_buildQueue.isEmpty() || d->m_running;
|
||||||
}
|
}
|
||||||
|
|
||||||
int BuildManager::getErrorTaskCount() const
|
int BuildManager::getErrorTaskCount()
|
||||||
{
|
{
|
||||||
const int errors =
|
const int errors =
|
||||||
d->m_taskWindow->errorTaskCount(Constants::TASK_CATEGORY_BUILDSYSTEM)
|
d->m_taskWindow->errorTaskCount(Constants::TASK_CATEGORY_BUILDSYSTEM)
|
||||||
@@ -213,7 +225,7 @@ void BuildManager::updateTaskCount()
|
|||||||
{
|
{
|
||||||
const int errors = getErrorTaskCount();
|
const int errors = getErrorTaskCount();
|
||||||
ProgressManager::setApplicationLabel(errors > 0 ? QString::number(errors) : QString());
|
ProgressManager::setApplicationLabel(errors > 0 ? QString::number(errors) : QString());
|
||||||
emit tasksChanged();
|
emit m_instance->tasksChanged();
|
||||||
}
|
}
|
||||||
|
|
||||||
void BuildManager::finish()
|
void BuildManager::finish()
|
||||||
@@ -254,7 +266,7 @@ void BuildManager::clearBuildQueue()
|
|||||||
d->m_futureProgress = 0;
|
d->m_futureProgress = 0;
|
||||||
d->m_maxProgress = 0;
|
d->m_maxProgress = 0;
|
||||||
|
|
||||||
emit buildQueueFinished(false);
|
emit m_instance->buildQueueFinished(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -273,7 +285,7 @@ void BuildManager::toggleTaskWindow()
|
|||||||
d->m_taskWindow->toggle(IOutputPane::ModeSwitch);
|
d->m_taskWindow->toggle(IOutputPane::ModeSwitch);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool BuildManager::tasksAvailable() const
|
bool BuildManager::tasksAvailable()
|
||||||
{
|
{
|
||||||
const int count =
|
const int count =
|
||||||
d->m_taskWindow->taskCount(Constants::TASK_CATEGORY_BUILDSYSTEM)
|
d->m_taskWindow->taskCount(Constants::TASK_CATEGORY_BUILDSYSTEM)
|
||||||
@@ -285,7 +297,7 @@ bool BuildManager::tasksAvailable() const
|
|||||||
void BuildManager::startBuildQueue(const QStringList &preambleMessage)
|
void BuildManager::startBuildQueue(const QStringList &preambleMessage)
|
||||||
{
|
{
|
||||||
if (d->m_buildQueue.isEmpty()) {
|
if (d->m_buildQueue.isEmpty()) {
|
||||||
emit buildQueueFinished(true);
|
emit m_instance->buildQueueFinished(true);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (!d->m_running) {
|
if (!d->m_running) {
|
||||||
@@ -302,7 +314,7 @@ void BuildManager::startBuildQueue(const QStringList &preambleMessage)
|
|||||||
d->m_futureProgress = ProgressManager::addTask(d->m_progressFutureInterface->future(),
|
d->m_futureProgress = ProgressManager::addTask(d->m_progressFutureInterface->future(),
|
||||||
QString(), "ProjectExplorer.Task.Build",
|
QString(), "ProjectExplorer.Task.Build",
|
||||||
ProgressManager::KeepOnFinish | ProgressManager::ShowInApplicationIcon);
|
ProgressManager::KeepOnFinish | ProgressManager::ShowInApplicationIcon);
|
||||||
connect(d->m_futureProgress.data(), SIGNAL(clicked()), this, SLOT(showBuildResults()));
|
connect(d->m_futureProgress.data(), SIGNAL(clicked()), m_instance, SLOT(showBuildResults()));
|
||||||
d->m_futureProgress.data()->setWidget(new Internal::BuildProgress(d->m_taskWindow));
|
d->m_futureProgress.data()->setWidget(new Internal::BuildProgress(d->m_taskWindow));
|
||||||
d->m_futureProgress.data()->setStatusBarWidget(new Internal::BuildProgress(d->m_taskWindow,
|
d->m_futureProgress.data()->setStatusBarWidget(new Internal::BuildProgress(d->m_taskWindow,
|
||||||
Qt::Horizontal));
|
Qt::Horizontal));
|
||||||
@@ -352,7 +364,7 @@ void BuildManager::addToOutputWindow(const QString &string, BuildStep::OutputFor
|
|||||||
void BuildManager::buildStepFinishedAsync()
|
void BuildManager::buildStepFinishedAsync()
|
||||||
{
|
{
|
||||||
disconnect(d->m_currentBuildStep, SIGNAL(finished()),
|
disconnect(d->m_currentBuildStep, SIGNAL(finished()),
|
||||||
this, SLOT(buildStepFinishedAsync()));
|
m_instance, SLOT(buildStepFinishedAsync()));
|
||||||
d->m_futureInterfaceForAysnc = QFutureInterface<bool>();
|
d->m_futureInterfaceForAysnc = QFutureInterface<bool>();
|
||||||
nextBuildQueue();
|
nextBuildQueue();
|
||||||
}
|
}
|
||||||
@@ -361,7 +373,7 @@ void BuildManager::nextBuildQueue()
|
|||||||
{
|
{
|
||||||
if (d->m_canceling) {
|
if (d->m_canceling) {
|
||||||
d->m_canceling = false;
|
d->m_canceling = false;
|
||||||
QTimer::singleShot(0, this, SLOT(emitCancelMessage()));
|
QTimer::singleShot(0, m_instance, SLOT(emitCancelMessage()));
|
||||||
|
|
||||||
disconnectOutput(d->m_currentBuildStep);
|
disconnectOutput(d->m_currentBuildStep);
|
||||||
decrementActiveBuildSteps(d->m_currentBuildStep);
|
decrementActiveBuildSteps(d->m_currentBuildStep);
|
||||||
@@ -443,7 +455,7 @@ void BuildManager::nextStep()
|
|||||||
|
|
||||||
if (d->m_currentBuildStep->runInGuiThread()) {
|
if (d->m_currentBuildStep->runInGuiThread()) {
|
||||||
connect (d->m_currentBuildStep, SIGNAL(finished()),
|
connect (d->m_currentBuildStep, SIGNAL(finished()),
|
||||||
this, SLOT(buildStepFinishedAsync()));
|
m_instance, SLOT(buildStepFinishedAsync()));
|
||||||
d->m_watcher.setFuture(d->m_futureInterfaceForAysnc.future());
|
d->m_watcher.setFuture(d->m_futureInterfaceForAysnc.future());
|
||||||
d->m_currentBuildStep->run(d->m_futureInterfaceForAysnc);
|
d->m_currentBuildStep->run(d->m_futureInterfaceForAysnc);
|
||||||
} else {
|
} else {
|
||||||
@@ -458,7 +470,7 @@ void BuildManager::nextStep()
|
|||||||
delete d->m_progressFutureInterface;
|
delete d->m_progressFutureInterface;
|
||||||
d->m_progressFutureInterface = 0;
|
d->m_progressFutureInterface = 0;
|
||||||
d->m_maxProgress = 0;
|
d->m_maxProgress = 0;
|
||||||
emit buildQueueFinished(true);
|
emit m_instance->buildQueueFinished(true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -471,9 +483,9 @@ bool BuildManager::buildQueueAppend(QList<BuildStep *> steps, QStringList names)
|
|||||||
for (; i < count; ++i) {
|
for (; i < count; ++i) {
|
||||||
BuildStep *bs = steps.at(i);
|
BuildStep *bs = steps.at(i);
|
||||||
connect(bs, SIGNAL(addTask(ProjectExplorer::Task)),
|
connect(bs, SIGNAL(addTask(ProjectExplorer::Task)),
|
||||||
this, SLOT(addToTaskWindow(ProjectExplorer::Task)));
|
m_instance, SLOT(addToTaskWindow(ProjectExplorer::Task)));
|
||||||
connect(bs, SIGNAL(addOutput(QString,ProjectExplorer::BuildStep::OutputFormat,ProjectExplorer::BuildStep::OutputNewlineSetting)),
|
connect(bs, SIGNAL(addOutput(QString,ProjectExplorer::BuildStep::OutputFormat,ProjectExplorer::BuildStep::OutputNewlineSetting)),
|
||||||
this, SLOT(addToOutputWindow(QString,ProjectExplorer::BuildStep::OutputFormat,ProjectExplorer::BuildStep::OutputNewlineSetting)));
|
m_instance, SLOT(addToOutputWindow(QString,ProjectExplorer::BuildStep::OutputFormat,ProjectExplorer::BuildStep::OutputNewlineSetting)));
|
||||||
if (bs->enabled()) {
|
if (bs->enabled()) {
|
||||||
init = bs->init();
|
init = bs->init();
|
||||||
if (!init)
|
if (!init)
|
||||||
@@ -616,7 +628,7 @@ void BuildManager::incrementActiveBuildSteps(BuildStep *bs)
|
|||||||
increment<ProjectConfiguration>(d->m_activeBuildStepsPerProjectConfiguration, bs->projectConfiguration());
|
increment<ProjectConfiguration>(d->m_activeBuildStepsPerProjectConfiguration, bs->projectConfiguration());
|
||||||
increment<Target>(d->m_activeBuildStepsPerTarget, bs->target());
|
increment<Target>(d->m_activeBuildStepsPerTarget, bs->target());
|
||||||
if (increment<Project>(d->m_activeBuildSteps, bs->project()))
|
if (increment<Project>(d->m_activeBuildSteps, bs->project()))
|
||||||
emit buildStateChanged(bs->project());
|
emit m_instance->buildStateChanged(bs->project());
|
||||||
}
|
}
|
||||||
|
|
||||||
void BuildManager::decrementActiveBuildSteps(BuildStep *bs)
|
void BuildManager::decrementActiveBuildSteps(BuildStep *bs)
|
||||||
@@ -624,16 +636,16 @@ void BuildManager::decrementActiveBuildSteps(BuildStep *bs)
|
|||||||
decrement<ProjectConfiguration>(d->m_activeBuildStepsPerProjectConfiguration, bs->projectConfiguration());
|
decrement<ProjectConfiguration>(d->m_activeBuildStepsPerProjectConfiguration, bs->projectConfiguration());
|
||||||
decrement<Target>(d->m_activeBuildStepsPerTarget, bs->target());
|
decrement<Target>(d->m_activeBuildStepsPerTarget, bs->target());
|
||||||
if (decrement<Project>(d->m_activeBuildSteps, bs->project()))
|
if (decrement<Project>(d->m_activeBuildSteps, bs->project()))
|
||||||
emit buildStateChanged(bs->project());
|
emit m_instance->buildStateChanged(bs->project());
|
||||||
}
|
}
|
||||||
|
|
||||||
void BuildManager::disconnectOutput(BuildStep *bs)
|
void BuildManager::disconnectOutput(BuildStep *bs)
|
||||||
{
|
{
|
||||||
disconnect(bs, SIGNAL(addTask(ProjectExplorer::Task)),
|
disconnect(bs, SIGNAL(addTask(ProjectExplorer::Task)),
|
||||||
this, SLOT(addToTaskWindow(ProjectExplorer::Task)));
|
m_instance, SLOT(addToTaskWindow(ProjectExplorer::Task)));
|
||||||
disconnect(bs, SIGNAL(addOutput(QString, ProjectExplorer::BuildStep::OutputFormat,
|
disconnect(bs, SIGNAL(addOutput(QString, ProjectExplorer::BuildStep::OutputFormat,
|
||||||
ProjectExplorer::BuildStep::OutputNewlineSetting)),
|
ProjectExplorer::BuildStep::OutputNewlineSetting)),
|
||||||
this, SLOT(addToOutputWindow(QString, ProjectExplorer::BuildStep::OutputFormat,
|
m_instance, SLOT(addToOutputWindow(QString, ProjectExplorer::BuildStep::OutputFormat,
|
||||||
ProjectExplorer::BuildStep::OutputNewlineSetting)));
|
ProjectExplorer::BuildStep::OutputNewlineSetting)));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -37,11 +37,9 @@
|
|||||||
#include <QStringList>
|
#include <QStringList>
|
||||||
|
|
||||||
namespace ProjectExplorer {
|
namespace ProjectExplorer {
|
||||||
class Task;
|
|
||||||
class ProjectExplorerPlugin;
|
|
||||||
class Project;
|
|
||||||
|
|
||||||
struct BuildManagerPrivate;
|
class Task;
|
||||||
|
class Project;
|
||||||
|
|
||||||
class PROJECTEXPLORER_EXPORT BuildManager : public QObject
|
class PROJECTEXPLORER_EXPORT BuildManager : public QObject
|
||||||
{
|
{
|
||||||
@@ -49,35 +47,35 @@ class PROJECTEXPLORER_EXPORT BuildManager : public QObject
|
|||||||
|
|
||||||
public:
|
public:
|
||||||
explicit BuildManager(QObject *parent, QAction *cancelBuildAction);
|
explicit BuildManager(QObject *parent, QAction *cancelBuildAction);
|
||||||
virtual ~BuildManager();
|
~BuildManager();
|
||||||
|
static QObject *instance();
|
||||||
|
|
||||||
void extensionsInitialized();
|
static void extensionsInitialized();
|
||||||
|
|
||||||
bool isBuilding() const;
|
static bool isBuilding();
|
||||||
|
static bool tasksAvailable();
|
||||||
|
|
||||||
bool tasksAvailable() const;
|
static bool buildLists(QList<BuildStepList *> bsls, const QStringList &stepListNames,
|
||||||
|
|
||||||
bool buildLists(QList<BuildStepList *> bsls, const QStringList &stepListNames,
|
|
||||||
const QStringList &preambelMessage = QStringList());
|
const QStringList &preambelMessage = QStringList());
|
||||||
bool buildList(BuildStepList *bsl, const QString &stepListName);
|
static bool buildList(BuildStepList *bsl, const QString &stepListName);
|
||||||
|
|
||||||
bool isBuilding(Project *p);
|
static bool isBuilding(Project *p);
|
||||||
bool isBuilding(Target *t);
|
static bool isBuilding(Target *t);
|
||||||
bool isBuilding(ProjectConfiguration *p);
|
static bool isBuilding(ProjectConfiguration *p);
|
||||||
bool isBuilding(BuildStep *step);
|
static bool isBuilding(BuildStep *step);
|
||||||
|
|
||||||
// Append any build step to the list of build steps (currently only used to add the QMakeStep)
|
// Append any build step to the list of build steps (currently only used to add the QMakeStep)
|
||||||
void appendStep(BuildStep *step, const QString &name);
|
static void appendStep(BuildStep *step, const QString &name);
|
||||||
|
|
||||||
int getErrorTaskCount() const;
|
static int getErrorTaskCount();
|
||||||
|
|
||||||
public slots:
|
public slots:
|
||||||
void cancel();
|
static void cancel();
|
||||||
// Shows without focus
|
// Shows without focus
|
||||||
void showTaskWindow();
|
static void showTaskWindow();
|
||||||
void toggleTaskWindow();
|
static void toggleTaskWindow();
|
||||||
void toggleOutputWindow();
|
static void toggleOutputWindow();
|
||||||
void aboutToRemoveProject(ProjectExplorer::Project *p);
|
static void aboutToRemoveProject(ProjectExplorer::Project *p);
|
||||||
|
|
||||||
signals:
|
signals:
|
||||||
void buildStateChanged(ProjectExplorer::Project *pro);
|
void buildStateChanged(ProjectExplorer::Project *pro);
|
||||||
@@ -87,30 +85,29 @@ signals:
|
|||||||
void tasksCleared();
|
void tasksCleared();
|
||||||
|
|
||||||
private slots:
|
private slots:
|
||||||
void addToTaskWindow(const ProjectExplorer::Task &task);
|
static void addToTaskWindow(const ProjectExplorer::Task &task);
|
||||||
void addToOutputWindow(const QString &string, ProjectExplorer::BuildStep::OutputFormat,
|
static void addToOutputWindow(const QString &string, ProjectExplorer::BuildStep::OutputFormat,
|
||||||
ProjectExplorer::BuildStep::OutputNewlineSetting = BuildStep::DoAppendNewline);
|
ProjectExplorer::BuildStep::OutputNewlineSetting = BuildStep::DoAppendNewline);
|
||||||
|
|
||||||
void buildStepFinishedAsync();
|
static void buildStepFinishedAsync();
|
||||||
void nextBuildQueue();
|
static void nextBuildQueue();
|
||||||
void progressChanged();
|
static void progressChanged();
|
||||||
void progressTextChanged();
|
static void progressTextChanged();
|
||||||
void emitCancelMessage();
|
static void emitCancelMessage();
|
||||||
void showBuildResults();
|
static void showBuildResults();
|
||||||
void updateTaskCount();
|
static void updateTaskCount();
|
||||||
void finish();
|
static void finish();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void startBuildQueue(const QStringList &preambleMessage = QStringList());
|
static void startBuildQueue(const QStringList &preambleMessage = QStringList());
|
||||||
void nextStep();
|
static void nextStep();
|
||||||
void clearBuildQueue();
|
static void clearBuildQueue();
|
||||||
bool buildQueueAppend(QList<BuildStep *> steps, QStringList names);
|
static bool buildQueueAppend(QList<BuildStep *> steps, QStringList names);
|
||||||
void incrementActiveBuildSteps(BuildStep *bs);
|
static void incrementActiveBuildSteps(BuildStep *bs);
|
||||||
void decrementActiveBuildSteps(BuildStep *bs);
|
static void decrementActiveBuildSteps(BuildStep *bs);
|
||||||
void disconnectOutput(BuildStep *bs);
|
static void disconnectOutput(BuildStep *bs);
|
||||||
|
|
||||||
BuildManagerPrivate *d;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace ProjectExplorer
|
} // namespace ProjectExplorer
|
||||||
|
|
||||||
#endif // BUILDMANAGER_H
|
#endif // BUILDMANAGER_H
|
||||||
|
|||||||
@@ -357,8 +357,7 @@ void BuildSettingsWidget::deleteConfiguration(BuildConfiguration *deleteConfigur
|
|||||||
m_target->buildConfigurations().size() <= 1)
|
m_target->buildConfigurations().size() <= 1)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
ProjectExplorer::BuildManager *bm = ProjectExplorerPlugin::instance()->buildManager();
|
if (BuildManager::isBuilding(deleteConfiguration)) {
|
||||||
if (bm->isBuilding(deleteConfiguration)) {
|
|
||||||
QMessageBox box;
|
QMessageBox box;
|
||||||
QPushButton *closeAnyway = box.addButton(tr("Cancel Build && Remove Build Configuration"), QMessageBox::AcceptRole);
|
QPushButton *closeAnyway = box.addButton(tr("Cancel Build && Remove Build Configuration"), QMessageBox::AcceptRole);
|
||||||
QPushButton *cancelClose = box.addButton(tr("Do Not Remove"), QMessageBox::RejectRole);
|
QPushButton *cancelClose = box.addButton(tr("Do Not Remove"), QMessageBox::RejectRole);
|
||||||
@@ -369,7 +368,7 @@ void BuildSettingsWidget::deleteConfiguration(BuildConfiguration *deleteConfigur
|
|||||||
box.exec();
|
box.exec();
|
||||||
if (box.clickedButton() != closeAnyway)
|
if (box.clickedButton() != closeAnyway)
|
||||||
return;
|
return;
|
||||||
bm->cancel();
|
BuildManager::cancel();
|
||||||
} else {
|
} else {
|
||||||
QMessageBox msgBox(QMessageBox::Question, tr("Remove Build Configuration?"),
|
QMessageBox msgBox(QMessageBox::Question, tr("Remove Build Configuration?"),
|
||||||
tr("Do you really want to delete build configuration <b>%1</b>?").arg(deleteConfiguration->displayName()),
|
tr("Do you really want to delete build configuration <b>%1</b>?").arg(deleteConfiguration->displayName()),
|
||||||
|
|||||||
@@ -184,10 +184,8 @@ void BuildStepList::insertStep(int position, BuildStep *step)
|
|||||||
|
|
||||||
bool BuildStepList::removeStep(int position)
|
bool BuildStepList::removeStep(int position)
|
||||||
{
|
{
|
||||||
ProjectExplorer::BuildManager *bm =
|
|
||||||
ProjectExplorer::ProjectExplorerPlugin::instance()->buildManager();
|
|
||||||
BuildStep *bs = at(position);
|
BuildStep *bs = at(position);
|
||||||
if (bm->isBuilding(bs))
|
if (BuildManager::isBuilding(bs))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
emit aboutToRemoveStep(position);
|
emit aboutToRemoveStep(position);
|
||||||
|
|||||||
@@ -172,9 +172,7 @@ bool Project::removeTarget(Target *target)
|
|||||||
if (!target || !d->m_targets.contains(target))
|
if (!target || !d->m_targets.contains(target))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
ProjectExplorer::BuildManager *bm =
|
if (BuildManager::isBuilding(target))
|
||||||
ProjectExplorer::ProjectExplorerPlugin::instance()->buildManager();
|
|
||||||
if (bm->isBuilding(target))
|
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
if (target == activeTarget()) {
|
if (target == activeTarget()) {
|
||||||
|
|||||||
@@ -215,8 +215,6 @@ struct ProjectExplorerPluginPrivate {
|
|||||||
Context m_lastProjectContext;
|
Context m_lastProjectContext;
|
||||||
Node *m_currentNode;
|
Node *m_currentNode;
|
||||||
|
|
||||||
BuildManager *m_buildManager;
|
|
||||||
|
|
||||||
QList<Internal::ProjectFileFactory*> m_fileFactories;
|
QList<Internal::ProjectFileFactory*> m_fileFactories;
|
||||||
QStringList m_profileMimeTypes;
|
QStringList m_profileMimeTypes;
|
||||||
Internal::AppOutputPane *m_outputPane;
|
Internal::AppOutputPane *m_outputPane;
|
||||||
@@ -971,10 +969,10 @@ bool ProjectExplorerPlugin::initialize(const QStringList &arguments, QString *er
|
|||||||
connect(this, SIGNAL(updateRunActions()), this, SLOT(slotUpdateRunActions()));
|
connect(this, SIGNAL(updateRunActions()), this, SLOT(slotUpdateRunActions()));
|
||||||
connect(this, SIGNAL(settingsChanged()), this, SLOT(updateRunWithoutDeployMenu()));
|
connect(this, SIGNAL(settingsChanged()), this, SLOT(updateRunWithoutDeployMenu()));
|
||||||
|
|
||||||
d->m_buildManager = new BuildManager(this, d->m_cancelBuildAction);
|
QObject *buildManager = new BuildManager(this, d->m_cancelBuildAction);
|
||||||
connect(d->m_buildManager, SIGNAL(buildStateChanged(ProjectExplorer::Project*)),
|
connect(buildManager, SIGNAL(buildStateChanged(ProjectExplorer::Project*)),
|
||||||
this, SLOT(buildStateChanged(ProjectExplorer::Project*)));
|
this, SLOT(buildStateChanged(ProjectExplorer::Project*)));
|
||||||
connect(d->m_buildManager, SIGNAL(buildQueueFinished(bool)),
|
connect(buildManager, SIGNAL(buildQueueFinished(bool)),
|
||||||
this, SLOT(buildQueueFinished(bool)));
|
this, SLOT(buildQueueFinished(bool)));
|
||||||
|
|
||||||
updateActions();
|
updateActions();
|
||||||
@@ -1036,7 +1034,7 @@ void ProjectExplorerPlugin::unloadProject()
|
|||||||
if (debug)
|
if (debug)
|
||||||
qDebug() << "ProjectExplorerPlugin::unloadProject";
|
qDebug() << "ProjectExplorerPlugin::unloadProject";
|
||||||
|
|
||||||
if (buildManager()->isBuilding(d->m_currentProject)) {
|
if (BuildManager::isBuilding(d->m_currentProject)) {
|
||||||
QMessageBox box;
|
QMessageBox box;
|
||||||
QPushButton *closeAnyway = box.addButton(tr("Cancel Build && Unload"), QMessageBox::AcceptRole);
|
QPushButton *closeAnyway = box.addButton(tr("Cancel Build && Unload"), QMessageBox::AcceptRole);
|
||||||
QPushButton *cancelClose = box.addButton(tr("Do Not Unload"), QMessageBox::RejectRole);
|
QPushButton *cancelClose = box.addButton(tr("Do Not Unload"), QMessageBox::RejectRole);
|
||||||
@@ -1047,7 +1045,7 @@ void ProjectExplorerPlugin::unloadProject()
|
|||||||
box.exec();
|
box.exec();
|
||||||
if (box.clickedButton() != closeAnyway)
|
if (box.clickedButton() != closeAnyway)
|
||||||
return;
|
return;
|
||||||
buildManager()->cancel();
|
BuildManager::cancel();
|
||||||
}
|
}
|
||||||
|
|
||||||
IDocument *document = d->m_currentProject->document();
|
IDocument *document = d->m_currentProject->document();
|
||||||
@@ -1098,7 +1096,7 @@ void ProjectExplorerPlugin::extensionsInitialized()
|
|||||||
d->m_profileMimeTypes += pf->mimeTypes();
|
d->m_profileMimeTypes += pf->mimeTypes();
|
||||||
addAutoReleasedObject(pf);
|
addAutoReleasedObject(pf);
|
||||||
}
|
}
|
||||||
d->m_buildManager->extensionsInitialized();
|
BuildManager::extensionsInitialized();
|
||||||
|
|
||||||
DeviceManager::instance()->addDevice(IDevice::Ptr(new DesktopDevice));
|
DeviceManager::instance()->addDevice(IDevice::Ptr(new DesktopDevice));
|
||||||
DeviceManager::instance()->load();
|
DeviceManager::instance()->load();
|
||||||
@@ -1630,16 +1628,11 @@ void ProjectExplorerPlugin::showContextMenu(QWidget *view, const QPoint &globalP
|
|||||||
contextMenu->popup(globalPos);
|
contextMenu->popup(globalPos);
|
||||||
}
|
}
|
||||||
|
|
||||||
BuildManager *ProjectExplorerPlugin::buildManager() const
|
|
||||||
{
|
|
||||||
return d->m_buildManager;
|
|
||||||
}
|
|
||||||
|
|
||||||
void ProjectExplorerPlugin::buildStateChanged(Project * pro)
|
void ProjectExplorerPlugin::buildStateChanged(Project * pro)
|
||||||
{
|
{
|
||||||
if (debug) {
|
if (debug) {
|
||||||
qDebug() << "buildStateChanged";
|
qDebug() << "buildStateChanged";
|
||||||
qDebug() << pro->document()->filePath() << "isBuilding()" << d->m_buildManager->isBuilding(pro);
|
qDebug() << pro->document()->filePath() << "isBuilding()" << BuildManager::isBuilding(pro);
|
||||||
}
|
}
|
||||||
Q_UNUSED(pro)
|
Q_UNUSED(pro)
|
||||||
updateActions();
|
updateActions();
|
||||||
@@ -1704,7 +1697,7 @@ void ProjectExplorerPlugin::buildQueueFinished(bool success)
|
|||||||
updateActions();
|
updateActions();
|
||||||
|
|
||||||
bool ignoreErrors = true;
|
bool ignoreErrors = true;
|
||||||
if (d->m_delayedRunConfiguration && success && d->m_buildManager->getErrorTaskCount() > 0) {
|
if (d->m_delayedRunConfiguration && success && BuildManager::getErrorTaskCount() > 0) {
|
||||||
ignoreErrors = QMessageBox::question(ICore::mainWindow(),
|
ignoreErrors = QMessageBox::question(ICore::mainWindow(),
|
||||||
tr("Ignore all errors?"),
|
tr("Ignore all errors?"),
|
||||||
tr("Found some build errors in current task.\n"
|
tr("Found some build errors in current task.\n"
|
||||||
@@ -1716,8 +1709,8 @@ void ProjectExplorerPlugin::buildQueueFinished(bool success)
|
|||||||
if (success && ignoreErrors && d->m_delayedRunConfiguration) {
|
if (success && ignoreErrors && d->m_delayedRunConfiguration) {
|
||||||
executeRunConfiguration(d->m_delayedRunConfiguration, d->m_runMode);
|
executeRunConfiguration(d->m_delayedRunConfiguration, d->m_runMode);
|
||||||
} else {
|
} else {
|
||||||
if (d->m_buildManager->tasksAvailable())
|
if (BuildManager::tasksAvailable())
|
||||||
d->m_buildManager->showTaskWindow();
|
BuildManager::showTaskWindow();
|
||||||
}
|
}
|
||||||
d->m_delayedRunConfiguration = 0;
|
d->m_delayedRunConfiguration = 0;
|
||||||
d->m_runMode = NoRunMode;
|
d->m_runMode = NoRunMode;
|
||||||
@@ -1894,7 +1887,7 @@ void ProjectExplorerPlugin::updateActions()
|
|||||||
d->m_rebuildSessionAction->setToolTip(buildSessionState.second);
|
d->m_rebuildSessionAction->setToolTip(buildSessionState.second);
|
||||||
d->m_cleanSessionAction->setToolTip(buildSessionState.second);
|
d->m_cleanSessionAction->setToolTip(buildSessionState.second);
|
||||||
|
|
||||||
d->m_cancelBuildAction->setEnabled(d->m_buildManager->isBuilding());
|
d->m_cancelBuildAction->setEnabled(BuildManager::isBuilding());
|
||||||
|
|
||||||
bool canPublish = false;
|
bool canPublish = false;
|
||||||
if (project) {
|
if (project) {
|
||||||
@@ -2028,7 +2021,7 @@ int ProjectExplorerPlugin::queue(QList<Project *> projects, QList<Id> stepIds)
|
|||||||
if (stepLists.isEmpty())
|
if (stepLists.isEmpty())
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
if (!d->m_buildManager->buildLists(stepLists, names, preambleMessage))
|
if (!BuildManager::buildLists(stepLists, names, preambleMessage))
|
||||||
return -1;
|
return -1;
|
||||||
return stepLists.count();
|
return stepLists.count();
|
||||||
}
|
}
|
||||||
@@ -2178,7 +2171,7 @@ QPair<bool, QString> ProjectExplorerPlugin::buildSettingsEnabled(Project *pro)
|
|||||||
if (!pro) {
|
if (!pro) {
|
||||||
result.first = false;
|
result.first = false;
|
||||||
result.second = tr("No project loaded.");
|
result.second = tr("No project loaded.");
|
||||||
} else if (d->m_buildManager->isBuilding(pro)) {
|
} else if (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()) {
|
} else if (pro->needsConfiguration()) {
|
||||||
@@ -2211,7 +2204,7 @@ QPair<bool, QString> ProjectExplorerPlugin::buildSettingsEnabledForSession()
|
|||||||
if (!SessionManager::hasProjects()) {
|
if (!SessionManager::hasProjects()) {
|
||||||
result.first = false;
|
result.first = false;
|
||||||
result.second = tr("No project loaded");
|
result.second = tr("No project loaded");
|
||||||
} else if (d->m_buildManager->isBuilding()) {
|
} else if (BuildManager::isBuilding()) {
|
||||||
result.first = false;
|
result.first = false;
|
||||||
result.second = tr("A build is in progress");
|
result.second = tr("A build is in progress");
|
||||||
} else if (!hasBuildSettings(0)) {
|
} else if (!hasBuildSettings(0)) {
|
||||||
@@ -2235,7 +2228,7 @@ QPair<bool, QString> ProjectExplorerPlugin::buildSettingsEnabledForSession()
|
|||||||
|
|
||||||
bool ProjectExplorerPlugin::coreAboutToClose()
|
bool ProjectExplorerPlugin::coreAboutToClose()
|
||||||
{
|
{
|
||||||
if (d->m_buildManager->isBuilding()) {
|
if (BuildManager::isBuilding()) {
|
||||||
QMessageBox box;
|
QMessageBox box;
|
||||||
QPushButton *closeAnyway = box.addButton(tr("Cancel Build && Close"), QMessageBox::AcceptRole);
|
QPushButton *closeAnyway = box.addButton(tr("Cancel Build && Close"), QMessageBox::AcceptRole);
|
||||||
QPushButton *cancelClose = box.addButton(tr("Do Not Close"), QMessageBox::RejectRole);
|
QPushButton *cancelClose = box.addButton(tr("Do Not Close"), QMessageBox::RejectRole);
|
||||||
@@ -2414,10 +2407,10 @@ void ProjectExplorerPlugin::updateDeployActions()
|
|||||||
Project *project = SessionManager::startupProject();
|
Project *project = SessionManager::startupProject();
|
||||||
|
|
||||||
bool enableDeployActions = project
|
bool enableDeployActions = project
|
||||||
&& ! (d->m_buildManager->isBuilding(project))
|
&& BuildManager::isBuilding(project)
|
||||||
&& hasDeploySettings(project);
|
&& hasDeploySettings(project);
|
||||||
bool enableDeployActionsContextMenu = d->m_currentProject
|
bool enableDeployActionsContextMenu = d->m_currentProject
|
||||||
&& ! (d->m_buildManager->isBuilding(d->m_currentProject))
|
&& !BuildManager::isBuilding(d->m_currentProject)
|
||||||
&& hasDeploySettings(d->m_currentProject);
|
&& hasDeploySettings(d->m_currentProject);
|
||||||
|
|
||||||
if (d->m_projectExplorerSettings.buildBeforeDeploy) {
|
if (d->m_projectExplorerSettings.buildBeforeDeploy) {
|
||||||
@@ -2451,9 +2444,7 @@ void ProjectExplorerPlugin::updateDeployActions()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (!hasProjects
|
if (!hasProjects || !hasDeploySettings(0) || BuildManager::isBuilding())
|
||||||
|| !hasDeploySettings(0)
|
|
||||||
|| d->m_buildManager->isBuilding())
|
|
||||||
enableDeploySessionAction = false;
|
enableDeploySessionAction = false;
|
||||||
d->m_deploySessionAction->setEnabled(enableDeploySessionAction);
|
d->m_deploySessionAction->setEnabled(enableDeploySessionAction);
|
||||||
|
|
||||||
@@ -2479,8 +2470,7 @@ bool ProjectExplorerPlugin::canRun(Project *project, RunMode runMode)
|
|||||||
|
|
||||||
bool canRun = findRunControlFactory(activeRC, runMode)
|
bool canRun = findRunControlFactory(activeRC, runMode)
|
||||||
&& activeRC->isEnabled();
|
&& activeRC->isEnabled();
|
||||||
const bool building = d->m_buildManager->isBuilding();
|
return canRun && !BuildManager::isBuilding();
|
||||||
return (canRun && !building);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
QString ProjectExplorerPlugin::cannotRunReason(Project *project, RunMode runMode)
|
QString ProjectExplorerPlugin::cannotRunReason(Project *project, RunMode runMode)
|
||||||
@@ -2516,8 +2506,7 @@ QString ProjectExplorerPlugin::cannotRunReason(Project *project, RunMode runMode
|
|||||||
if (!findRunControlFactory(activeRC, runMode))
|
if (!findRunControlFactory(activeRC, runMode))
|
||||||
return tr("Cannot run '%1'.").arg(activeRC->displayName());
|
return tr("Cannot run '%1'.").arg(activeRC->displayName());
|
||||||
|
|
||||||
|
if (BuildManager::isBuilding())
|
||||||
if (d->m_buildManager->isBuilding())
|
|
||||||
return tr("A build is still in progress.");
|
return tr("A build is still in progress.");
|
||||||
return QString();
|
return QString();
|
||||||
}
|
}
|
||||||
@@ -2536,8 +2525,8 @@ void ProjectExplorerPlugin::cancelBuild()
|
|||||||
if (debug)
|
if (debug)
|
||||||
qDebug() << "ProjectExplorerPlugin::cancelBuild";
|
qDebug() << "ProjectExplorerPlugin::cancelBuild";
|
||||||
|
|
||||||
if (d->m_buildManager->isBuilding())
|
if (BuildManager::isBuilding())
|
||||||
d->m_buildManager->cancel();
|
BuildManager::cancel();
|
||||||
}
|
}
|
||||||
|
|
||||||
void ProjectExplorerPlugin::addToRecentProjects(const QString &fileName, const QString &displayName)
|
void ProjectExplorerPlugin::addToRecentProjects(const QString &fileName, const QString &displayName)
|
||||||
|
|||||||
@@ -49,7 +49,6 @@ class Id;
|
|||||||
}
|
}
|
||||||
|
|
||||||
namespace ProjectExplorer {
|
namespace ProjectExplorer {
|
||||||
class BuildManager;
|
|
||||||
class RunControl;
|
class RunControl;
|
||||||
class RunConfiguration;
|
class RunConfiguration;
|
||||||
class IRunControlFactory;
|
class IRunControlFactory;
|
||||||
@@ -86,8 +85,6 @@ public:
|
|||||||
void setCurrentFile(Project *project, const QString &file);
|
void setCurrentFile(Project *project, const QString &file);
|
||||||
void setCurrentNode(Node *node);
|
void setCurrentNode(Node *node);
|
||||||
|
|
||||||
BuildManager *buildManager() const;
|
|
||||||
|
|
||||||
bool saveModifiedFiles();
|
bool saveModifiedFiles();
|
||||||
|
|
||||||
void showContextMenu(QWidget *view, const QPoint &globalPos, Node *node);
|
void showContextMenu(QWidget *view, const QPoint &globalPos, Node *node);
|
||||||
|
|||||||
@@ -436,8 +436,7 @@ void RunSettingsWidget::addDeployConfiguration()
|
|||||||
void RunSettingsWidget::removeDeployConfiguration()
|
void RunSettingsWidget::removeDeployConfiguration()
|
||||||
{
|
{
|
||||||
DeployConfiguration *dc = m_target->activeDeployConfiguration();
|
DeployConfiguration *dc = m_target->activeDeployConfiguration();
|
||||||
ProjectExplorer::BuildManager *bm = ProjectExplorerPlugin::instance()->buildManager();
|
if (BuildManager::isBuilding(dc)) {
|
||||||
if (bm->isBuilding(dc)) {
|
|
||||||
QMessageBox box;
|
QMessageBox box;
|
||||||
QPushButton *closeAnyway = box.addButton(tr("Cancel Build && Remove Deploy Configuration"), QMessageBox::AcceptRole);
|
QPushButton *closeAnyway = box.addButton(tr("Cancel Build && Remove Deploy Configuration"), QMessageBox::AcceptRole);
|
||||||
QPushButton *cancelClose = box.addButton(tr("Do Not Remove"), QMessageBox::RejectRole);
|
QPushButton *cancelClose = box.addButton(tr("Do Not Remove"), QMessageBox::RejectRole);
|
||||||
@@ -448,7 +447,7 @@ void RunSettingsWidget::removeDeployConfiguration()
|
|||||||
box.exec();
|
box.exec();
|
||||||
if (box.clickedButton() != closeAnyway)
|
if (box.clickedButton() != closeAnyway)
|
||||||
return;
|
return;
|
||||||
bm->cancel();
|
BuildManager::cancel();
|
||||||
} else {
|
} else {
|
||||||
QMessageBox msgBox(QMessageBox::Question, tr("Remove Deploy Configuration?"),
|
QMessageBox msgBox(QMessageBox::Question, tr("Remove Deploy Configuration?"),
|
||||||
tr("Do you really want to delete deploy configuration <b>%1</b>?").arg(dc->displayName()),
|
tr("Do you really want to delete deploy configuration <b>%1</b>?").arg(dc->displayName()),
|
||||||
|
|||||||
@@ -248,9 +248,7 @@ bool Target::removeBuildConfiguration(BuildConfiguration *configuration)
|
|||||||
if (!d->m_buildConfigurations.contains(configuration))
|
if (!d->m_buildConfigurations.contains(configuration))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
ProjectExplorer::BuildManager *bm =
|
if (BuildManager::isBuilding(configuration))
|
||||||
ProjectExplorer::ProjectExplorerPlugin::instance()->buildManager();
|
|
||||||
if (bm->isBuilding(configuration))
|
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
d->m_buildConfigurations.removeOne(configuration);
|
d->m_buildConfigurations.removeOne(configuration);
|
||||||
@@ -325,9 +323,7 @@ bool Target::removeDeployConfiguration(DeployConfiguration *dc)
|
|||||||
if (!d->m_deployConfigurations.contains(dc))
|
if (!d->m_deployConfigurations.contains(dc))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
ProjectExplorer::BuildManager *bm =
|
if (BuildManager::isBuilding(dc))
|
||||||
ProjectExplorer::ProjectExplorerPlugin::instance()->buildManager();
|
|
||||||
if (bm->isBuilding(dc))
|
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
d->m_deployConfigurations.removeOne(dc);
|
d->m_deployConfigurations.removeOne(dc);
|
||||||
|
|||||||
@@ -443,8 +443,7 @@ void TargetSettingsPanelWidget::removeTarget()
|
|||||||
|
|
||||||
void TargetSettingsPanelWidget::removeTarget(Target *t)
|
void TargetSettingsPanelWidget::removeTarget(Target *t)
|
||||||
{
|
{
|
||||||
ProjectExplorer::BuildManager *bm = ProjectExplorerPlugin::instance()->buildManager();
|
if (BuildManager::isBuilding(t)) {
|
||||||
if (bm->isBuilding(t)) {
|
|
||||||
QMessageBox box;
|
QMessageBox box;
|
||||||
QPushButton *closeAnyway = box.addButton(tr("Cancel Build && Remove Kit"), QMessageBox::AcceptRole);
|
QPushButton *closeAnyway = box.addButton(tr("Cancel Build && Remove Kit"), QMessageBox::AcceptRole);
|
||||||
QPushButton *cancelClose = box.addButton(tr("Do Not Remove"), QMessageBox::RejectRole);
|
QPushButton *cancelClose = box.addButton(tr("Do Not Remove"), QMessageBox::RejectRole);
|
||||||
@@ -455,7 +454,7 @@ void TargetSettingsPanelWidget::removeTarget(Target *t)
|
|||||||
box.exec();
|
box.exec();
|
||||||
if (box.clickedButton() != closeAnyway)
|
if (box.clickedButton() != closeAnyway)
|
||||||
return;
|
return;
|
||||||
bm->cancel();
|
BuildManager::cancel();
|
||||||
} else {
|
} else {
|
||||||
// We don't show the generic message box on removing the target, if we showed the still building one
|
// We don't show the generic message box on removing the target, if we showed the still building one
|
||||||
int ret = QMessageBox::warning(this, tr("Qt Creator"),
|
int ret = QMessageBox::warning(this, tr("Qt Creator"),
|
||||||
|
|||||||
@@ -172,7 +172,7 @@ bool QbsProjectManagerPlugin::initialize(const QStringList &arguments, QString *
|
|||||||
connect(m_projectExplorer, SIGNAL(currentNodeChanged(ProjectExplorer::Node*,ProjectExplorer::Project*)),
|
connect(m_projectExplorer, SIGNAL(currentNodeChanged(ProjectExplorer::Node*,ProjectExplorer::Project*)),
|
||||||
this, SLOT(updateContextActions(ProjectExplorer::Node*,ProjectExplorer::Project*)));
|
this, SLOT(updateContextActions(ProjectExplorer::Node*,ProjectExplorer::Project*)));
|
||||||
|
|
||||||
connect(m_projectExplorer->buildManager(), SIGNAL(buildStateChanged(ProjectExplorer::Project*)),
|
connect(BuildManager::instance(), SIGNAL(buildStateChanged(ProjectExplorer::Project*)),
|
||||||
this, SLOT(buildStateChanged(ProjectExplorer::Project*)));
|
this, SLOT(buildStateChanged(ProjectExplorer::Project*)));
|
||||||
|
|
||||||
connect(Core::EditorManager::instance(), SIGNAL(currentEditorChanged(Core::IEditor*)),
|
connect(Core::EditorManager::instance(), SIGNAL(currentEditorChanged(Core::IEditor*)),
|
||||||
@@ -213,7 +213,7 @@ void QbsProjectManagerPlugin::updateContextActions(ProjectExplorer::Node *node,
|
|||||||
|
|
||||||
activeTargetChanged();
|
activeTargetChanged();
|
||||||
|
|
||||||
bool isBuilding = m_projectExplorer->buildManager()->isBuilding(project);
|
bool isBuilding = BuildManager::isBuilding(project);
|
||||||
bool isFile = m_currentProject && node && (node->nodeType() == ProjectExplorer::FileNodeType);
|
bool isFile = m_currentProject && node && (node->nodeType() == ProjectExplorer::FileNodeType);
|
||||||
bool isProduct = m_currentProject && node && qobject_cast<QbsProductNode *>(node->projectNode());
|
bool isProduct = m_currentProject && node && qobject_cast<QbsProductNode *>(node->projectNode());
|
||||||
bool isFileEnabled = isFile && node->isEnabled();
|
bool isFileEnabled = isFile && node->isEnabled();
|
||||||
@@ -226,7 +226,7 @@ void QbsProjectManagerPlugin::updateContextActions(ProjectExplorer::Node *node,
|
|||||||
void QbsProjectManagerPlugin::updateReparseQbsAction()
|
void QbsProjectManagerPlugin::updateReparseQbsAction()
|
||||||
{
|
{
|
||||||
m_reparseQbs->setEnabled(m_currentProject
|
m_reparseQbs->setEnabled(m_currentProject
|
||||||
&& !m_projectExplorer->buildManager()->isBuilding(m_currentProject)
|
&& !BuildManager::isBuilding(m_currentProject)
|
||||||
&& !m_currentProject->isParsing());
|
&& !m_currentProject->isParsing());
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -246,7 +246,7 @@ void QbsProjectManagerPlugin::updateBuildActions()
|
|||||||
|
|
||||||
m_buildFile->setParameter(QFileInfo(file).fileName());
|
m_buildFile->setParameter(QFileInfo(file).fileName());
|
||||||
fileVisible = project && node && qobject_cast<QbsBaseProjectNode *>(node->projectNode());
|
fileVisible = project && node && qobject_cast<QbsBaseProjectNode *>(node->projectNode());
|
||||||
fileEnabled = !m_projectExplorer->buildManager()->isBuilding(project)
|
fileEnabled = !BuildManager::isBuilding(project)
|
||||||
&& m_currentProject && !m_currentProject->isParsing();
|
&& m_currentProject && !m_currentProject->isParsing();
|
||||||
|
|
||||||
if (QbsProductNode *productNode
|
if (QbsProductNode *productNode
|
||||||
@@ -357,18 +357,17 @@ void QbsProjectManagerPlugin::buildFiles(QbsProject *project, const QStringList
|
|||||||
if (!bc)
|
if (!bc)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
ProjectExplorer::ProjectExplorerPlugin *pe = ProjectExplorer::ProjectExplorerPlugin::instance();
|
if (!ProjectExplorerPlugin::instance()->saveModifiedFiles())
|
||||||
if (!pe->saveModifiedFiles())
|
|
||||||
return;
|
return;
|
||||||
|
|
||||||
bc->setChangedFiles(files);
|
bc->setChangedFiles(files);
|
||||||
bc->setActiveFileTags(activeFileTags);
|
bc->setActiveFileTags(activeFileTags);
|
||||||
bc->setProducts(QStringList());
|
bc->setProducts(QStringList());
|
||||||
|
|
||||||
const Core::Id buildStep = Core::Id(ProjectExplorer::Constants::BUILDSTEPS_BUILD);
|
const Core::Id buildStep = ProjectExplorer::Constants::BUILDSTEPS_BUILD;
|
||||||
|
|
||||||
const QString name = ProjectExplorer::ProjectExplorerPlugin::displayNameForStepId(buildStep);
|
const QString name = ProjectExplorer::ProjectExplorerPlugin::displayNameForStepId(buildStep);
|
||||||
pe->buildManager()->buildList(bc->stepList(buildStep), name);
|
BuildManager::buildList(bc->stepList(buildStep), name);
|
||||||
|
|
||||||
bc->setChangedFiles(QStringList());
|
bc->setChangedFiles(QStringList());
|
||||||
}
|
}
|
||||||
@@ -391,17 +390,16 @@ void QbsProjectManagerPlugin::buildProducts(QbsProject *project, const QStringLi
|
|||||||
if (!bc)
|
if (!bc)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
ProjectExplorer::ProjectExplorerPlugin *pe = ProjectExplorer::ProjectExplorerPlugin::instance();
|
if (!ProjectExplorerPlugin::instance()->saveModifiedFiles())
|
||||||
if (!pe->saveModifiedFiles())
|
|
||||||
return;
|
return;
|
||||||
|
|
||||||
bc->setChangedFiles(QStringList());
|
bc->setChangedFiles(QStringList());
|
||||||
bc->setProducts(products);
|
bc->setProducts(products);
|
||||||
|
|
||||||
const Core::Id buildStep = Core::Id(ProjectExplorer::Constants::BUILDSTEPS_BUILD);
|
const Core::Id buildStep = ProjectExplorer::Constants::BUILDSTEPS_BUILD;
|
||||||
|
|
||||||
const QString name = ProjectExplorer::ProjectExplorerPlugin::displayNameForStepId(buildStep);
|
const QString name = ProjectExplorerPlugin::displayNameForStepId(buildStep);
|
||||||
pe->buildManager()->buildList(bc->stepList(buildStep), name);
|
BuildManager::buildList(bc->stepList(buildStep), name);
|
||||||
|
|
||||||
bc->setProducts(QStringList());
|
bc->setProducts(QStringList());
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -649,11 +649,10 @@ void QMakeStepConfigWidget::recompileMessageBoxFinished(int button)
|
|||||||
return;
|
return;
|
||||||
|
|
||||||
QList<ProjectExplorer::BuildStepList *> stepLists;
|
QList<ProjectExplorer::BuildStepList *> stepLists;
|
||||||
const Core::Id clean = Core::Id(ProjectExplorer::Constants::BUILDSTEPS_CLEAN);
|
const Core::Id clean = ProjectExplorer::Constants::BUILDSTEPS_CLEAN;
|
||||||
const Core::Id build = Core::Id(ProjectExplorer::Constants::BUILDSTEPS_BUILD);
|
const Core::Id build = ProjectExplorer::Constants::BUILDSTEPS_BUILD;
|
||||||
stepLists << bc->stepList(clean) << bc->stepList(build);
|
stepLists << bc->stepList(clean) << bc->stepList(build);
|
||||||
ProjectExplorer::BuildManager *bm = ProjectExplorerPlugin::instance()->buildManager();
|
BuildManager::buildLists(stepLists, QStringList() << ProjectExplorerPlugin::displayNameForStepId(clean)
|
||||||
bm->buildLists(stepLists, QStringList() << ProjectExplorerPlugin::displayNameForStepId(clean)
|
|
||||||
<< ProjectExplorerPlugin::displayNameForStepId(build));
|
<< ProjectExplorerPlugin::displayNameForStepId(build));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -349,8 +349,7 @@ Qt4Project::Qt4Project(Qt4Manager *manager, const QString& fileName) :
|
|||||||
m_asyncUpdateTimer.setInterval(3000);
|
m_asyncUpdateTimer.setInterval(3000);
|
||||||
connect(&m_asyncUpdateTimer, SIGNAL(timeout()), this, SLOT(asyncUpdate()));
|
connect(&m_asyncUpdateTimer, SIGNAL(timeout()), this, SLOT(asyncUpdate()));
|
||||||
|
|
||||||
connect(ProjectExplorerPlugin::instance()->buildManager(),
|
connect(BuildManager::instance(), SIGNAL(buildQueueFinished(bool)),
|
||||||
SIGNAL(buildQueueFinished(bool)),
|
|
||||||
SLOT(buildFinished(bool)));
|
SLOT(buildFinished(bool)));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -108,11 +108,6 @@ ProjectExplorer::Project *Qt4Manager::openProject(const QString &fileName, QStri
|
|||||||
return new Qt4Project(this, fileName);
|
return new Qt4Project(this, fileName);
|
||||||
}
|
}
|
||||||
|
|
||||||
ProjectExplorer::ProjectExplorerPlugin *Qt4Manager::projectExplorer() const
|
|
||||||
{
|
|
||||||
return ProjectExplorer::ProjectExplorerPlugin::instance();
|
|
||||||
}
|
|
||||||
|
|
||||||
ProjectExplorer::Node *Qt4Manager::contextNode() const
|
ProjectExplorer::Node *Qt4Manager::contextNode() const
|
||||||
{
|
{
|
||||||
return m_contextNode;
|
return m_contextNode;
|
||||||
@@ -222,7 +217,7 @@ void Qt4Manager::runQMake(ProjectExplorer::Project *p, ProjectExplorer::Node *no
|
|||||||
if (Qt4ProFileNode *profile = qobject_cast<Qt4ProFileNode *>(node))
|
if (Qt4ProFileNode *profile = qobject_cast<Qt4ProFileNode *>(node))
|
||||||
bc->setSubNodeBuild(profile);
|
bc->setSubNodeBuild(profile);
|
||||||
|
|
||||||
projectExplorer()->buildManager()->appendStep(qs, tr("QMake"));
|
BuildManager::appendStep(qs, tr("QMake"));
|
||||||
bc->setSubNodeBuild(0);
|
bc->setSubNodeBuild(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -287,23 +282,23 @@ void Qt4Manager::handleSubDirContextMenu(Qt4Manager::Action action, bool isFileB
|
|||||||
|
|
||||||
if (isFileBuild)
|
if (isFileBuild)
|
||||||
bc->setFileNodeBuild(contextFile);
|
bc->setFileNodeBuild(contextFile);
|
||||||
if (projectExplorer()->saveModifiedFiles()) {
|
if (ProjectExplorerPlugin::instance()->saveModifiedFiles()) {
|
||||||
const Core::Id buildStep = Core::Id(ProjectExplorer::Constants::BUILDSTEPS_BUILD);
|
const Core::Id buildStep = ProjectExplorer::Constants::BUILDSTEPS_BUILD;
|
||||||
const Core::Id cleanStep = Core::Id(ProjectExplorer::Constants::BUILDSTEPS_CLEAN);
|
const Core::Id cleanStep = ProjectExplorer::Constants::BUILDSTEPS_CLEAN;
|
||||||
if (action == BUILD) {
|
if (action == BUILD) {
|
||||||
const QString name = ProjectExplorer::ProjectExplorerPlugin::displayNameForStepId(buildStep);
|
const QString name = ProjectExplorerPlugin::displayNameForStepId(buildStep);
|
||||||
projectExplorer()->buildManager()->buildList(bc->stepList(buildStep), name);
|
BuildManager::buildList(bc->stepList(buildStep), name);
|
||||||
} else if (action == CLEAN) {
|
} else if (action == CLEAN) {
|
||||||
const QString name = ProjectExplorer::ProjectExplorerPlugin::displayNameForStepId(cleanStep);
|
const QString name = ProjectExplorerPlugin::displayNameForStepId(cleanStep);
|
||||||
projectExplorer()->buildManager()->buildList(bc->stepList(cleanStep), name);
|
BuildManager::buildList(bc->stepList(cleanStep), name);
|
||||||
} else if (action == REBUILD) {
|
} else if (action == REBUILD) {
|
||||||
QStringList names;
|
QStringList names;
|
||||||
names << ProjectExplorer::ProjectExplorerPlugin::displayNameForStepId(cleanStep)
|
names << ProjectExplorerPlugin::displayNameForStepId(cleanStep)
|
||||||
<< ProjectExplorer::ProjectExplorerPlugin::displayNameForStepId(buildStep);
|
<< ProjectExplorerPlugin::displayNameForStepId(buildStep);
|
||||||
|
|
||||||
QList<ProjectExplorer::BuildStepList *> stepLists;
|
QList<ProjectExplorer::BuildStepList *> stepLists;
|
||||||
stepLists << bc->stepList(cleanStep) << bc->stepList(buildStep);
|
stepLists << bc->stepList(cleanStep) << bc->stepList(buildStep);
|
||||||
projectExplorer()->buildManager()->buildLists(stepLists, names);
|
BuildManager::buildLists(stepLists, names);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -40,7 +40,6 @@ namespace ExtensionSystem { class PluginManager; }
|
|||||||
|
|
||||||
namespace ProjectExplorer {
|
namespace ProjectExplorer {
|
||||||
class Project;
|
class Project;
|
||||||
class ProjectExplorerPlugin;
|
|
||||||
class Node;
|
class Node;
|
||||||
class ToolChain;
|
class ToolChain;
|
||||||
}
|
}
|
||||||
@@ -67,8 +66,6 @@ public:
|
|||||||
void unregisterProject(Qt4Project *project);
|
void unregisterProject(Qt4Project *project);
|
||||||
void notifyChanged(const QString &name);
|
void notifyChanged(const QString &name);
|
||||||
|
|
||||||
ProjectExplorer::ProjectExplorerPlugin *projectExplorer() const;
|
|
||||||
|
|
||||||
virtual QString mimeType() const;
|
virtual QString mimeType() const;
|
||||||
ProjectExplorer::Project *openProject(const QString &fileName, QString *errorString);
|
ProjectExplorer::Project *openProject(const QString &fileName, QString *errorString);
|
||||||
|
|
||||||
|
|||||||
@@ -257,7 +257,7 @@ bool Qt4ProjectManagerPlugin::initialize(const QStringList &arguments, QString *
|
|||||||
mbuild->addAction(command, ProjectExplorer::Constants::G_BUILD_BUILD);
|
mbuild->addAction(command, ProjectExplorer::Constants::G_BUILD_BUILD);
|
||||||
connect(m_buildFileAction, SIGNAL(triggered()), m_qt4ProjectManager, SLOT(buildFile()));
|
connect(m_buildFileAction, SIGNAL(triggered()), m_qt4ProjectManager, SLOT(buildFile()));
|
||||||
|
|
||||||
connect(m_projectExplorer->buildManager(), SIGNAL(buildStateChanged(ProjectExplorer::Project*)),
|
connect(BuildManager::instance(), SIGNAL(buildStateChanged(ProjectExplorer::Project*)),
|
||||||
this, SLOT(buildStateChanged(ProjectExplorer::Project*)));
|
this, SLOT(buildStateChanged(ProjectExplorer::Project*)));
|
||||||
connect(SessionManager::instance(), SIGNAL(startupProjectChanged(ProjectExplorer::Project*)),
|
connect(SessionManager::instance(), SIGNAL(startupProjectChanged(ProjectExplorer::Project*)),
|
||||||
this, SLOT(startupProjectChanged()));
|
this, SLOT(startupProjectChanged()));
|
||||||
@@ -333,7 +333,7 @@ void Qt4ProjectManagerPlugin::activeTargetChanged()
|
|||||||
void Qt4ProjectManagerPlugin::updateRunQMakeAction()
|
void Qt4ProjectManagerPlugin::updateRunQMakeAction()
|
||||||
{
|
{
|
||||||
bool enable = true;
|
bool enable = true;
|
||||||
if (m_projectExplorer->buildManager()->isBuilding(m_projectExplorer->currentProject()))
|
if (BuildManager::isBuilding(m_projectExplorer->currentProject()))
|
||||||
enable = false;
|
enable = false;
|
||||||
Qt4Project *pro = qobject_cast<Qt4Project *>(m_projectExplorer->currentProject());
|
Qt4Project *pro = qobject_cast<Qt4Project *>(m_projectExplorer->currentProject());
|
||||||
if (!pro
|
if (!pro
|
||||||
@@ -374,7 +374,7 @@ void Qt4ProjectManagerPlugin::updateContextActions(ProjectExplorer::Node *node,
|
|||||||
Qt4BuildConfiguration *buildConfiguration = (qt4Project && qt4Project->activeTarget()) ?
|
Qt4BuildConfiguration *buildConfiguration = (qt4Project && qt4Project->activeTarget()) ?
|
||||||
static_cast<Qt4BuildConfiguration *>(qt4Project->activeTarget()->activeBuildConfiguration()) : 0;
|
static_cast<Qt4BuildConfiguration *>(qt4Project->activeTarget()->activeBuildConfiguration()) : 0;
|
||||||
bool isProjectNode = qt4Project && proFileNode && buildConfiguration;
|
bool isProjectNode = qt4Project && proFileNode && buildConfiguration;
|
||||||
bool isBuilding = m_projectExplorer->buildManager()->isBuilding(project);
|
bool isBuilding = BuildManager::isBuilding(project);
|
||||||
bool enabled = subProjectActionsVisible && !isBuilding;
|
bool enabled = subProjectActionsVisible && !isBuilding;
|
||||||
|
|
||||||
m_buildSubProjectAction->setVisible(subProjectActionsVisible);
|
m_buildSubProjectAction->setVisible(subProjectActionsVisible);
|
||||||
@@ -424,7 +424,7 @@ void Qt4ProjectManagerPlugin::updateBuildFileAction()
|
|||||||
&& node
|
&& node
|
||||||
&& qobject_cast<Qt4ProFileNode *>(node->projectNode());
|
&& qobject_cast<Qt4ProFileNode *>(node->projectNode());
|
||||||
|
|
||||||
enabled = !m_projectExplorer->buildManager()->isBuilding(project);
|
enabled = !BuildManager::isBuilding(project);
|
||||||
}
|
}
|
||||||
m_buildFileAction->setVisible(visible);
|
m_buildFileAction->setVisible(visible);
|
||||||
m_buildFileAction->setEnabled(enabled);
|
m_buildFileAction->setEnabled(enabled);
|
||||||
|
|||||||
@@ -47,6 +47,7 @@
|
|||||||
|
|
||||||
enum { debug = 0 };
|
enum { debug = 0 };
|
||||||
|
|
||||||
|
using namespace ProjectExplorer;
|
||||||
using namespace CPlusPlus;
|
using namespace CPlusPlus;
|
||||||
|
|
||||||
// Test for form editor (loosely coupled)
|
// Test for form editor (loosely coupled)
|
||||||
@@ -310,11 +311,9 @@ UiCodeModelManager::UiCodeModelManager() :
|
|||||||
m_dirty(false)
|
m_dirty(false)
|
||||||
{
|
{
|
||||||
m_instance = this;
|
m_instance = this;
|
||||||
ProjectExplorer::BuildManager *bm
|
connect(BuildManager::instance(), SIGNAL(buildStateChanged(ProjectExplorer::Project*)),
|
||||||
= ProjectExplorer::ProjectExplorerPlugin::instance()->buildManager();
|
|
||||||
connect(bm, SIGNAL(buildStateChanged(ProjectExplorer::Project*)),
|
|
||||||
this, SLOT(buildStateHasChanged(ProjectExplorer::Project*)));
|
this, SLOT(buildStateHasChanged(ProjectExplorer::Project*)));
|
||||||
connect(ProjectExplorer::SessionManager::instance(),
|
connect(SessionManager::instance(),
|
||||||
SIGNAL(projectRemoved(ProjectExplorer::Project*)),
|
SIGNAL(projectRemoved(ProjectExplorer::Project*)),
|
||||||
this, SLOT(projectWasRemoved(ProjectExplorer::Project*)));
|
this, SLOT(projectWasRemoved(ProjectExplorer::Project*)));
|
||||||
|
|
||||||
@@ -370,7 +369,7 @@ void UiCodeModelManager::update(ProjectExplorer::Project *project, QHash<QString
|
|||||||
|
|
||||||
void UiCodeModelManager::updateContents(const QString &uiFileName, const QString &contents)
|
void UiCodeModelManager::updateContents(const QString &uiFileName, const QString &contents)
|
||||||
{
|
{
|
||||||
QHash<ProjectExplorer::Project *, QList<UiCodeModelSupport *> >::iterator i;
|
QHash<Project *, QList<UiCodeModelSupport *> >::iterator i;
|
||||||
for (i = m_instance->m_projectUiSupport.begin();
|
for (i = m_instance->m_projectUiSupport.begin();
|
||||||
i != m_instance->m_projectUiSupport.end(); ++i) {
|
i != m_instance->m_projectUiSupport.end(); ++i) {
|
||||||
foreach (UiCodeModelSupport *support, i.value()) {
|
foreach (UiCodeModelSupport *support, i.value()) {
|
||||||
@@ -380,9 +379,9 @@ void UiCodeModelManager::updateContents(const QString &uiFileName, const QString
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void UiCodeModelManager::buildStateHasChanged(ProjectExplorer::Project *project)
|
void UiCodeModelManager::buildStateHasChanged(Project *project)
|
||||||
{
|
{
|
||||||
if (ProjectExplorer::ProjectExplorerPlugin::instance()->buildManager()->isBuilding(project))
|
if (BuildManager::isBuilding(project))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
QList<UiCodeModelSupport *> projectSupport = m_projectUiSupport.value(project);
|
QList<UiCodeModelSupport *> projectSupport = m_projectUiSupport.value(project);
|
||||||
@@ -390,7 +389,7 @@ void UiCodeModelManager::buildStateHasChanged(ProjectExplorer::Project *project)
|
|||||||
i->updateFromBuild();
|
i->updateFromBuild();
|
||||||
}
|
}
|
||||||
|
|
||||||
void UiCodeModelManager::projectWasRemoved(ProjectExplorer::Project *project)
|
void UiCodeModelManager::projectWasRemoved(Project *project)
|
||||||
{
|
{
|
||||||
CppTools::CppModelManagerInterface *mm = CppTools::CppModelManagerInterface::instance();
|
CppTools::CppModelManagerInterface *mm = CppTools::CppModelManagerInterface::instance();
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user