forked from qt-creator/qt-creator
ToolChainManager: Load tool chains in extensionsInitialized()
Change-Id: Iecbdad090c43fdabfb2d3ceac65fbbb2a72b33c2 Reviewed-by: Daniel Teske <daniel.teske@digia.com>
This commit is contained in:
@@ -1128,6 +1128,7 @@ void ProjectExplorerPlugin::extensionsInitialized()
|
|||||||
if (dm->find(Core::Id(Constants::DESKTOP_DEVICE_ID)).isNull())
|
if (dm->find(Core::Id(Constants::DESKTOP_DEVICE_ID)).isNull())
|
||||||
DeviceManager::instance()->addDevice(IDevice::Ptr(new DesktopDevice));
|
DeviceManager::instance()->addDevice(IDevice::Ptr(new DesktopDevice));
|
||||||
dm->load();
|
dm->load();
|
||||||
|
d->m_toolChainManager->restoreToolChains();
|
||||||
}
|
}
|
||||||
|
|
||||||
void ProjectExplorerPlugin::loadCustomWizards()
|
void ProjectExplorerPlugin::loadCustomWizards()
|
||||||
|
|||||||
@@ -80,13 +80,10 @@ public:
|
|||||||
ToolChainManagerPrivate(ToolChainManager *parent);
|
ToolChainManagerPrivate(ToolChainManager *parent);
|
||||||
~ToolChainManagerPrivate();
|
~ToolChainManagerPrivate();
|
||||||
|
|
||||||
QList<ToolChain *> &toolChains();
|
|
||||||
|
|
||||||
ToolChainManager *q;
|
ToolChainManager *q;
|
||||||
QMap<QString, Utils::FileName> m_abiToDebugger;
|
QMap<QString, Utils::FileName> m_abiToDebugger;
|
||||||
Utils::PersistentSettingsWriter *m_writer;
|
Utils::PersistentSettingsWriter *m_writer;
|
||||||
|
|
||||||
private:
|
|
||||||
QList<ToolChain *> m_toolChains;
|
QList<ToolChain *> m_toolChains;
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -101,13 +98,6 @@ ToolChainManagerPrivate::~ToolChainManagerPrivate()
|
|||||||
delete m_writer;
|
delete m_writer;
|
||||||
}
|
}
|
||||||
|
|
||||||
QList<ToolChain *> &ToolChainManagerPrivate::toolChains()
|
|
||||||
{
|
|
||||||
if (!m_writer)
|
|
||||||
q->restoreToolChains();
|
|
||||||
return m_toolChains;
|
|
||||||
}
|
|
||||||
|
|
||||||
} // namespace Internal
|
} // namespace Internal
|
||||||
|
|
||||||
// --------------------------------------------------------------------------
|
// --------------------------------------------------------------------------
|
||||||
@@ -139,7 +129,6 @@ ToolChainManager::ToolChainManager(QObject *parent) :
|
|||||||
void ToolChainManager::restoreToolChains()
|
void ToolChainManager::restoreToolChains()
|
||||||
{
|
{
|
||||||
QTC_ASSERT(!d->m_writer, return);
|
QTC_ASSERT(!d->m_writer, return);
|
||||||
QTC_CHECK(ProjectExplorerPlugin::instance()->pluginSpec()->state() == ExtensionSystem::PluginSpec::Running);
|
|
||||||
d->m_writer =
|
d->m_writer =
|
||||||
new Utils::PersistentSettingsWriter(settingsFileName(QLatin1String(TOOLCHAIN_FILENAME)), QLatin1String("QtCreatorToolChains"));
|
new Utils::PersistentSettingsWriter(settingsFileName(QLatin1String(TOOLCHAIN_FILENAME)), QLatin1String("QtCreatorToolChains"));
|
||||||
|
|
||||||
@@ -209,6 +198,8 @@ void ToolChainManager::restoreToolChains()
|
|||||||
// Store manual tool chains
|
// Store manual tool chains
|
||||||
foreach (ToolChain *tc, tcsToRegister)
|
foreach (ToolChain *tc, tcsToRegister)
|
||||||
registerToolChain(tc);
|
registerToolChain(tc);
|
||||||
|
|
||||||
|
emit toolChainsLoaded();
|
||||||
}
|
}
|
||||||
|
|
||||||
ToolChainManager::~ToolChainManager()
|
ToolChainManager::~ToolChainManager()
|
||||||
@@ -223,7 +214,7 @@ void ToolChainManager::saveToolChains()
|
|||||||
data.insert(QLatin1String(TOOLCHAIN_FILE_VERSION_KEY), 1);
|
data.insert(QLatin1String(TOOLCHAIN_FILE_VERSION_KEY), 1);
|
||||||
|
|
||||||
int count = 0;
|
int count = 0;
|
||||||
foreach (ToolChain *tc, d->toolChains()) {
|
foreach (ToolChain *tc, d->m_toolChains) {
|
||||||
if (tc->isValid()) {
|
if (tc->isValid()) {
|
||||||
QVariantMap tmp = tc->toMap();
|
QVariantMap tmp = tc->toMap();
|
||||||
if (tmp.isEmpty())
|
if (tmp.isEmpty())
|
||||||
@@ -290,18 +281,19 @@ QList<ToolChain *> ToolChainManager::restoreToolChains(const Utils::FileName &fi
|
|||||||
qPrintable(ToolChainFactory::idFromMap(tcMap)),
|
qPrintable(ToolChainFactory::idFromMap(tcMap)),
|
||||||
qPrintable(fileName.toUserOutput()));
|
qPrintable(fileName.toUserOutput()));
|
||||||
}
|
}
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
QList<ToolChain *> ToolChainManager::toolChains() const
|
QList<ToolChain *> ToolChainManager::toolChains() const
|
||||||
{
|
{
|
||||||
return d->toolChains();
|
return d->m_toolChains;
|
||||||
}
|
}
|
||||||
|
|
||||||
QList<ToolChain *> ToolChainManager::findToolChains(const Abi &abi) const
|
QList<ToolChain *> ToolChainManager::findToolChains(const Abi &abi) const
|
||||||
{
|
{
|
||||||
QList<ToolChain *> result;
|
QList<ToolChain *> result;
|
||||||
foreach (ToolChain *tc, toolChains()) {
|
foreach (ToolChain *tc, d->m_toolChains) {
|
||||||
Abi targetAbi = tc->targetAbi();
|
Abi targetAbi = tc->targetAbi();
|
||||||
if (targetAbi.isCompatibleWith(abi))
|
if (targetAbi.isCompatibleWith(abi))
|
||||||
result.append(tc);
|
result.append(tc);
|
||||||
@@ -314,7 +306,7 @@ ToolChain *ToolChainManager::findToolChain(const QString &id) const
|
|||||||
if (id.isEmpty())
|
if (id.isEmpty())
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
foreach (ToolChain *tc, d->toolChains()) {
|
foreach (ToolChain *tc, d->m_toolChains) {
|
||||||
if (tc->id() == id)
|
if (tc->id() == id)
|
||||||
return tc;
|
return tc;
|
||||||
}
|
}
|
||||||
@@ -326,32 +318,39 @@ Utils::FileName ToolChainManager::defaultDebugger(const Abi &abi) const
|
|||||||
return d->m_abiToDebugger.value(abi.toString());
|
return d->m_abiToDebugger.value(abi.toString());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool ToolChainManager::isLoaded() const
|
||||||
|
{
|
||||||
|
return d->m_writer;
|
||||||
|
}
|
||||||
|
|
||||||
void ToolChainManager::notifyAboutUpdate(ProjectExplorer::ToolChain *tc)
|
void ToolChainManager::notifyAboutUpdate(ProjectExplorer::ToolChain *tc)
|
||||||
{
|
{
|
||||||
if (!tc || !toolChains().contains(tc))
|
if (!tc || !d->m_toolChains.contains(tc))
|
||||||
return;
|
return;
|
||||||
emit toolChainUpdated(tc);
|
emit toolChainUpdated(tc);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool ToolChainManager::registerToolChain(ToolChain *tc)
|
bool ToolChainManager::registerToolChain(ToolChain *tc)
|
||||||
{
|
{
|
||||||
if (!tc || d->toolChains().contains(tc))
|
QTC_ASSERT(d->m_writer, return false);
|
||||||
|
|
||||||
|
if (!tc || d->m_toolChains.contains(tc))
|
||||||
return true;
|
return true;
|
||||||
foreach (ToolChain *current, d->toolChains()) {
|
foreach (ToolChain *current, d->m_toolChains) {
|
||||||
if (*tc == *current && !tc->isAutoDetected())
|
if (*tc == *current && !tc->isAutoDetected())
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
d->toolChains().append(tc);
|
d->m_toolChains.append(tc);
|
||||||
emit toolChainAdded(tc);
|
emit toolChainAdded(tc);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void ToolChainManager::deregisterToolChain(ToolChain *tc)
|
void ToolChainManager::deregisterToolChain(ToolChain *tc)
|
||||||
{
|
{
|
||||||
if (!tc || !d->toolChains().contains(tc))
|
if (!tc || !d->m_toolChains.contains(tc))
|
||||||
return;
|
return;
|
||||||
d->toolChains().removeOne(tc);
|
d->m_toolChains.removeOne(tc);
|
||||||
emit toolChainRemoved(tc);
|
emit toolChainRemoved(tc);
|
||||||
delete tc;
|
delete tc;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -66,6 +66,8 @@ public:
|
|||||||
|
|
||||||
Utils::FileName defaultDebugger(const Abi &abi) const;
|
Utils::FileName defaultDebugger(const Abi &abi) const;
|
||||||
|
|
||||||
|
bool isLoaded() const;
|
||||||
|
|
||||||
public slots:
|
public slots:
|
||||||
bool registerToolChain(ProjectExplorer::ToolChain *tc);
|
bool registerToolChain(ProjectExplorer::ToolChain *tc);
|
||||||
void deregisterToolChain(ProjectExplorer::ToolChain *tc);
|
void deregisterToolChain(ProjectExplorer::ToolChain *tc);
|
||||||
@@ -81,6 +83,8 @@ signals:
|
|||||||
// Something changed:
|
// Something changed:
|
||||||
void toolChainsChanged();
|
void toolChainsChanged();
|
||||||
|
|
||||||
|
void toolChainsLoaded();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
explicit ToolChainManager(QObject *parent = 0);
|
explicit ToolChainManager(QObject *parent = 0);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user