From 9e8219fda29df325bf5f5246385b5abab1fd61ae Mon Sep 17 00:00:00 2001 From: Friedemann Kleint <Friedemann.Kleint@nokia.com> Date: Tue, 25 May 2010 15:24:21 +0200 Subject: [PATCH] Debugger: Add menu option for saving debugger logs. ...as X11-clipboard is unreliable for long logs. --- src/plugins/debugger/debuggeroutputwindow.cpp | 30 +++++++++++++++++-- 1 file changed, 28 insertions(+), 2 deletions(-) diff --git a/src/plugins/debugger/debuggeroutputwindow.cpp b/src/plugins/debugger/debuggeroutputwindow.cpp index f29d5ab8c72..e65499686e2 100644 --- a/src/plugins/debugger/debuggeroutputwindow.cpp +++ b/src/plugins/debugger/debuggeroutputwindow.cpp @@ -32,6 +32,7 @@ #include "debuggermanager.h" #include <QtCore/QDebug> +#include <QtCore/QFile> #include <QtGui/QAction> #include <QtGui/QHBoxLayout> @@ -45,6 +46,8 @@ #include <QtGui/QSyntaxHighlighter> #include <QtGui/QTextBlock> #include <QtGui/QPlainTextEdit> +#include <QtGui/QFileDialog> +#include <QtGui/QMessageBox> #include <aggregation/aggregate.h> #include <coreplugin/findplaceholder.h> @@ -190,13 +193,14 @@ public: m_saveContentsAction = new QAction(this); m_saveContentsAction->setText(tr("Save Contents")); m_saveContentsAction->setEnabled(true); + connect(m_saveContentsAction, SIGNAL(triggered()), this, SLOT(saveContents())); } void contextMenuEvent(QContextMenuEvent *ev) { QMenu *menu = createStandardContextMenu(); menu->addAction(m_clearContentsAction); - //menu->addAction(m_saveContentsAction); + menu->addAction(m_saveContentsAction); // X11 clipboard is unreliable for long texts addContextActions(menu); theDebuggerAction(ExecuteCommand)->setData(textCursor().block().text()); menu->addAction(theDebuggerAction(ExecuteCommand)); @@ -210,11 +214,33 @@ public: virtual void addContextActions(QMenu *) {} -public: +private slots: + void saveContents(); + +private: QAction *m_clearContentsAction; QAction *m_saveContentsAction; }; +void DebuggerPane::saveContents() +{ + while (true) { + const QString fileName = QFileDialog::getSaveFileName(this, tr("Log File")); + if (fileName.isEmpty()) + break; + QFile file(fileName); + if (file.open(QIODevice::WriteOnly|QIODevice::Text|QIODevice::Truncate)) { + file.write(toPlainText().toUtf8()); + file.close(); + break; + } else { + QMessageBox::warning(this, tr("Write Failure"), + tr("Unable to write log contents to '%1': %2"). + arg(fileName, file.errorString())); + } + } +} + ///////////////////////////////////////////////////////////////////// // -- GitLab