Debugger: Fix configuration upgrade path from 2.8

Change-Id: I67547dfad529ebb918741721b691c39bb0e69720
Reviewed-by: Tobias Hunger <tobias.hunger@digia.com>
This commit is contained in:
hjk
2013-08-30 11:19:55 +02:00
parent 99f22de6ba
commit f33a9813b1
2 changed files with 30 additions and 25 deletions

View File

@@ -159,26 +159,6 @@ void DebuggerItem::fromMap(const QVariantMap &data)
if (abi.isValid())
abis.append(abi);
}
// // Check for special 'auto' entry for binary written by the sdktool during
// // installation. Try to autodetect.
// if (command == QLatin1String("auto")) {
// command.clear();
// switch (engineType) {
// case Debugger::GdbEngineType: // Auto-detect system gdb on Unix
// if (Abi::hostAbi().os() != Abi::WindowsOS)
// comman = Environment::systemEnvironment().searchInPath(QLatin1String("gdb"));
// break;
// case Debugger::CdbEngineType: { // Auto-detect system CDB on Windows.
// const QPair<QString, QString> cdbs = autoDetectCdbDebugger();
// binary = cdbs.second.isEmpty() ? cdbs.first : cdbs.second;
// }
// break;
// default:
// break;
// }
// }
// command = FileName::fromString(binary);
}
QString DebuggerItem::userOutput() const
@@ -330,16 +310,32 @@ DebuggerItem DebuggerKitInformation::debuggerItem(const ProjectExplorer::Kit *k)
if (!k)
return DebuggerItem();
QVariant id = k->value(DEBUGGER_INFORMATION);
if (!id.isValid())
return DebuggerItem();
// We used to have:
// <valuemap type="QVariantMap" key="Debugger.Information">
// <value type="QString" key="Binary">/data/dev/debugger/gdb-git/gdb/gdb</value>
// <value type="int" key="EngineType">1</value>
// </valuemap>
// Starting with 3.0 we have:
// <value type="QString" key="Debugger.Information">{75ecf347-f221-44c3-b613-ea1d29929cd4}</value>
QVariant id = k->value(DEBUGGER_INFORMATION);
QString pathOrUid;
if (id.type() == QVariant::Map) // 2.x
pathOrUid = id.toMap().value(QLatin1String("Binary")).toString();
else if (id.type() == QVariant::String) // 3.x
pathOrUid = id.toString();
DebuggerItem *item;
if (pathOrUid.startsWith(QLatin1Char('{')))
item = DebuggerItemManager::debuggerFromId(id);
else
item = DebuggerItemManager::debuggerFromPath(pathOrUid);
DebuggerItem *item = DebuggerItemManager::debuggerFromId(id);
QTC_ASSERT(item, return DebuggerItem());
return *item;
}
void DebuggerKitInformation::setDebuggerItem(Kit *k,
DebuggerEngineType type, const Utils::FileName &command)
{
@@ -741,6 +737,14 @@ DebuggerItem *DebuggerItemManager::debuggerFromId(const QVariant &id)
return 0;
}
DebuggerItem *DebuggerItemManager::debuggerFromPath(const QString &path)
{
foreach (DebuggerItem *item, theDebuggerItemManager()->m_debuggers)
if (item->command.toString() == path)
return item;
return 0;
}
QModelIndex DebuggerItemManager::currentIndex() const
{
QStandardItem *current = m_itemFromDebugger.value(m_currentDebugger);