diff --git a/gui/resultsview.cpp b/gui/resultsview.cpp index 936685a3b..8c37b232a 100644 --- a/gui/resultsview.cpp +++ b/gui/resultsview.cpp @@ -29,6 +29,7 @@ #include #include #include +#include #include "common.h" #include "erroritem.h" #include "resultsview.h" @@ -406,17 +407,47 @@ void ResultsView::debugError(const ErrorItem &item) mUI.mListLog->addItem(item.ToString()); } -void ResultsView::log_clear() +void ResultsView::logClear() { mUI.mListLog->clear(); } +void ResultsView::logCopyEntry() +{ + const QListWidgetItem * item = mUI.mListLog->currentItem(); + if(nullptr != item) + { + QClipboard *clipboard = QApplication::clipboard(); + clipboard->setText(item->text()); + } +} + +void ResultsView::logCopyComplete() +{ + QString logText; + for(int i=0; i < mUI.mListLog->count(); ++i) + { + const QListWidgetItem * item = mUI.mListLog->item(i); + if(nullptr != item) + { + logText += item->text(); + } + } + QClipboard *clipboard = QApplication::clipboard(); + clipboard->setText(logText); +} + void ResultsView::on_mListLog_customContextMenuRequested(const QPoint &pos) { - QPoint globalPos = mUI.mListLog->mapToGlobal(pos); + if(mUI.mListLog->count() > 0) + { + QPoint globalPos = mUI.mListLog->mapToGlobal(pos); - QMenu contextMenu; - contextMenu.addAction(tr("Clear Log"), this, SLOT(log_clear())); + QMenu contextMenu; + contextMenu.addAction(tr("Clear Log"), this, SLOT(logClear())); + contextMenu.addAction(tr("Copy this Log entry"), this, SLOT(logCopyEntry())); + contextMenu.addAction(tr("Copy complete Log"), this, SLOT(logCopyComplete())); - contextMenu.exec(globalPos); + contextMenu.exec(globalPos); + } } diff --git a/gui/resultsview.h b/gui/resultsview.h index ac32b3376..8f2ffcf22 100644 --- a/gui/resultsview.h +++ b/gui/resultsview.h @@ -314,7 +314,17 @@ public slots: /** * \brief Clear log messages */ - void log_clear(); + void logClear(); + + /** + * \brief Copy selected log message entry + */ + void logCopyEntry(); + + /** + * \brief Copy all log messages + */ + void logCopyComplete(); protected: /**