summaryrefslogtreecommitdiff
path: root/src/plugins/debugger
diff options
context:
space:
mode:
authorhjk <hjk121@nokiamail.com>2013-08-30 11:19:55 +0200
committerhjk <hjk121@nokiamail.com>2013-08-30 12:44:33 +0200
commitf33a9813b129e08b3ea78f43c8801f71b7d0fb60 (patch)
tree4b6b989fd86ac0d80fa640cfbc5963a1f983b3ae /src/plugins/debugger
parent99f22de6baeb6488e9523f18e01c4b159766e0b7 (diff)
downloadqt-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.cpp52
-rw-r--r--src/plugins/debugger/debuggerkitconfigwidget.h1
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);