diff options
author | hjk <hjk121@nokiamail.com> | 2013-08-30 11:19:55 +0200 |
---|---|---|
committer | hjk <hjk121@nokiamail.com> | 2013-08-30 12:44:33 +0200 |
commit | f33a9813b129e08b3ea78f43c8801f71b7d0fb60 (patch) | |
tree | 4b6b989fd86ac0d80fa640cfbc5963a1f983b3ae /src/plugins/debugger | |
parent | 99f22de6baeb6488e9523f18e01c4b159766e0b7 (diff) | |
download | qt-creator-f33a9813b129e08b3ea78f43c8801f71b7d0fb60.tar.gz |
Debugger: Fix configuration upgrade path from 2.8
Change-Id: I67547dfad529ebb918741721b691c39bb0e69720
Reviewed-by: Tobias Hunger <tobias.hunger@digia.com>
Diffstat (limited to 'src/plugins/debugger')
-rw-r--r-- | src/plugins/debugger/debuggerkitconfigwidget.cpp | 52 | ||||
-rw-r--r-- | src/plugins/debugger/debuggerkitconfigwidget.h | 1 |
2 files changed, 29 insertions, 24 deletions
diff --git a/src/plugins/debugger/debuggerkitconfigwidget.cpp b/src/plugins/debugger/debuggerkitconfigwidget.cpp index d3ec750b6b..0df34d0f55 100644 --- a/src/plugins/debugger/debuggerkitconfigwidget.cpp +++ b/src/plugins/debugger/debuggerkitconfigwidget.cpp @@ -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(); + // 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); - if (!id.isValid()) - return DebuggerItem(); - DebuggerItem *item = DebuggerItemManager::debuggerFromId(id); + 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); + 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); diff --git a/src/plugins/debugger/debuggerkitconfigwidget.h b/src/plugins/debugger/debuggerkitconfigwidget.h index 72503393cb..fa93c34068 100644 --- a/src/plugins/debugger/debuggerkitconfigwidget.h +++ b/src/plugins/debugger/debuggerkitconfigwidget.h @@ -71,6 +71,7 @@ public: QList<DebuggerItem *> findDebuggers(const ProjectExplorer::Abi &abi) const; DebuggerItem *currentDebugger() const { return m_currentDebugger; } static DebuggerItem *debuggerFromId(const QVariant &id); + static DebuggerItem *debuggerFromPath(const QString &path); QModelIndex currentIndex() const; void setCurrentIndex(const QModelIndex &index); |