Commit 1d3606f4 authored by hjk's avatar hjk
Browse files

debugger: provide a method to copy Locals&Watchers contents into a main editor.

Task-number: QTCREATORBUG-982
parent 18d14b53
......@@ -232,6 +232,7 @@ enum ModelRoles
LocalsPointerValueRole, // Pointer value (address) as quint64
LocalsIsWatchpointAtAddressRole,
LocalsIsWatchpointAtPointerValueRole,
RequestShowInEditorRole,
RequestWatchPointRole,
RequestToggleWatchRole,
RequestToolTipByExpressionRole,
......
......@@ -743,6 +743,11 @@ bool WatchModel::setData(const QModelIndex &index, const QVariant &value, int ro
return true;
}
case RequestShowInEditorRole: {
m_handler->showInEditor();
return true;
}
case RequestToggleWatchRole: {
BreakHandler *handler = engine()->breakHandler();
const quint64 address = value.toULongLong();
......@@ -1616,5 +1621,26 @@ void WatchHandler::addTypeFormats(const QByteArray &type, const QStringList &for
m_reportedTypeFormats.insert(type, formats);
}
void WatchHandler::showInEditor()
{
QString contents;
showInEditorHelper(&contents, m_locals->m_root, 0);
showInEditorHelper(&contents, m_watchers->m_root, 0);
plugin()->openTextEditor(tr("Locals & Watchers"), contents);
}
void WatchHandler::showInEditorHelper(QString *contents, WatchItem *item, int depth)
{
const QChar tab = QLatin1Char('\t');
const QChar nl = QLatin1Char('\n');
contents->append(QString(depth, tab));
contents->append(item->name);
contents->append(tab);
contents->append(item->value);
contents->append(nl);
foreach (WatchItem *child, item->children)
showInEditorHelper(contents, child, depth + 1);
}
} // namespace Internal
} // namespace Debugger
......@@ -187,6 +187,8 @@ private:
void saveTypeFormats();
void setFormat(const QByteArray &type, int format);
void updateWatchersWindow();
void showInEditor();
void showInEditorHelper(QString *contents, WatchItem *item, int level);
bool m_inChange;
......
......@@ -383,6 +383,10 @@ void WatchWindow::contextMenuEvent(QContextMenuEvent *ev)
actClearCodeModelSnapshot->setEnabled(actionsEnabled
&& theDebuggerAction(UseCodeModel)->isChecked());
menu.addAction(actClearCodeModelSnapshot);
QAction *actShowInEditor
= new QAction(tr("Show View Contents in Editor"), &menu);
actShowInEditor->setEnabled(actionsEnabled);
menu.addAction(actShowInEditor);
menu.addSeparator();
menu.addAction(theDebuggerAction(UseToolTipsInLocalsView));
......@@ -435,6 +439,8 @@ void WatchWindow::contextMenuEvent(QContextMenuEvent *ev)
setModelData(LocalsTypeFormatRole, -1, mi1);
} else if (act == clearIndividualFormatAction) {
setModelData(LocalsIndividualFormatRole, -1, mi1);
} else if (act == actShowInEditor) {
setModelData(RequestShowInEditorRole);
} else {
for (int i = 0; i != typeFormatActions.size(); ++i) {
if (act == typeFormatActions.at(i))
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment