Debugger: Add a way to copy selected values from Locals and Expressions

Task-number: QTCREATORBUG-14956
Change-Id: I2700820adf716afb784ec686297c15c48f3592f7
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
This commit is contained in:
hjk
2016-06-03 17:02:23 +02:00
parent 797dc11937
commit 6df0a34e99
3 changed files with 16 additions and 8 deletions

View File

@@ -1824,15 +1824,17 @@ void WatchHandler::addTypeFormats(const QByteArray &type, const DisplayFormats &
m_model->m_reportedTypeFormats.insert(QLatin1String(stripForFormat(type)), formats);
}
QString WatchHandler::editorContents()
QString WatchHandler::editorContents(const QModelIndexList &list)
{
QString contents;
QTextStream ts(&contents);
m_model->forAllItems([&ts](WatchItem *item) {
m_model->forAllItems([&ts, this, list](WatchItem *item) {
if (list.isEmpty() || list.contains(m_model->indexForItem(item))) {
const QChar tab = QLatin1Char('\t');
const QChar nl = QLatin1Char('\n');
ts << QString(item->level(), tab) << item->name << tab << displayValue(item) << tab
<< item->type << nl;
}
});
return contents;
}

View File

@@ -100,7 +100,7 @@ public:
static int unprintableBase();
QByteArray watcherName(const QByteArray &exp);
QString editorContents();
QString editorContents(const QModelIndexList &list = QModelIndexList());
void scheduleResetLocation();
void resetLocation();

View File

@@ -811,8 +811,10 @@ void WatchTreeView::contextMenuEvent(QContextMenuEvent *ev)
|| actSetWatchpointAtExpression.isEnabled());
QAction actCopy(tr("Copy View Contents to Clipboard"), 0);
QAction actCopyValue(tr("Copy Value to Clipboard"), 0);
QAction actCopyValue(tr("Copy Current Value to Clipboard"), 0);
actCopyValue.setEnabled(idx.isValid());
QAction actCopySelected(tr("Copy Selected Rows to Clipboard"), 0);
actCopySelected.setEnabled(selectionModel()->hasSelection());
QAction actShowInEditor(tr("Open View Contents in Editor"), 0);
actShowInEditor.setEnabled(actionsEnabled);
@@ -835,6 +837,7 @@ void WatchTreeView::contextMenuEvent(QContextMenuEvent *ev)
menu.addAction(&actCloseEditorToolTips);
menu.addAction(&actCopy);
menu.addAction(&actCopyValue);
menu.addAction(&actCopySelected);
menu.addAction(&actShowInEditor);
menu.addSeparator();
@@ -891,6 +894,9 @@ void WatchTreeView::contextMenuEvent(QContextMenuEvent *ev)
} else if (act == &actCopy) {
QString contents = handler->editorContents();
copyToClipboard(contents);
} else if (act == &actCopySelected) {
QString contents = handler->editorContents(selectionModel()->selectedRows());
copyToClipboard(contents);
} else if (act == &actCopyValue) {
copyToClipboard(mi1.data().toString());
} else if (act == &actShowInEditor) {