From c5dfc33b3d0aa6aa25dbd2400460cee9df7d938d Mon Sep 17 00:00:00 2001 From: Christian Kandeler <christian.kandeler@theqtcompany.com> Date: Tue, 3 Mar 2015 12:13:21 +0100 Subject: [PATCH] Valgrind: Log errors to issues pane instead of popping up a QMessageBox. Just as informative, but less intrusive and can't introduce event loop problems. Change-Id: I7dec17b1e82ba23340376075125f965017047959 Reviewed-by: hjk <hjk@theqtcompany.com> --- src/plugins/analyzerbase/analyzerutils.cpp | 9 +++++++++ src/plugins/analyzerbase/analyzerutils.h | 6 +++--- src/plugins/valgrind/callgrindtool.cpp | 5 ++--- src/plugins/valgrind/memchecktool.cpp | 10 +++++----- 4 files changed, 19 insertions(+), 11 deletions(-) diff --git a/src/plugins/analyzerbase/analyzerutils.cpp b/src/plugins/analyzerbase/analyzerutils.cpp index 1216f9cfb53..3d4e71747d4 100644 --- a/src/plugins/analyzerbase/analyzerutils.cpp +++ b/src/plugins/analyzerbase/analyzerutils.cpp @@ -33,6 +33,7 @@ #include "analyzerconstants.h" #include <cpptools/cppmodelmanager.h> +#include <projectexplorer/taskhub.h> #include <texteditor/texteditor.h> #include <texteditor/textdocument.h> @@ -46,6 +47,7 @@ using namespace Analyzer; using namespace Core; +using namespace ProjectExplorer; static void moveCursorToEndOfName(QTextCursor *tc) { @@ -93,3 +95,10 @@ CPlusPlus::Symbol *AnalyzerUtils::findSymbolUnderCursor() const CPlusPlus::LookupItem &lookupItem = lookupItems.first(); // ### TODO: select best candidate. return lookupItem.declaration(); } + +void AnalyzerUtils::logToIssuesPane(Task::TaskType type, const QString &message) +{ + TaskHub::addTask(type, message, Analyzer::Constants::ANALYZERTASK_ID); + if (type == Task::Error) + TaskHub::requestPopup(); +} diff --git a/src/plugins/analyzerbase/analyzerutils.h b/src/plugins/analyzerbase/analyzerutils.h index 210da4860d8..a7d544e8b5d 100644 --- a/src/plugins/analyzerbase/analyzerutils.h +++ b/src/plugins/analyzerbase/analyzerutils.h @@ -33,15 +33,15 @@ #include "analyzerbase_global.h" -QT_BEGIN_NAMESPACE -class QWidget; -QT_END_NAMESPACE +#include <projectexplorer/task.h> namespace CPlusPlus { class Symbol; } namespace AnalyzerUtils { ANALYZER_EXPORT CPlusPlus::Symbol *findSymbolUnderCursor(); + ANALYZER_EXPORT void logToIssuesPane(ProjectExplorer::Task::TaskType type, + const QString &message); } #endif // ANALYZERUTILS_H diff --git a/src/plugins/valgrind/callgrindtool.cpp b/src/plugins/valgrind/callgrindtool.cpp index c658815aaad..dcd2a1396b2 100644 --- a/src/plugins/valgrind/callgrindtool.cpp +++ b/src/plugins/valgrind/callgrindtool.cpp @@ -88,7 +88,6 @@ #include <QHBoxLayout> #include <QLineEdit> #include <QMenu> -#include <QMessageBox> #include <QSortFilterProxyModel> #include <QToolBar> #include <QToolButton> @@ -933,8 +932,8 @@ void CallgrindToolPrivate::loadExternalLogFile() QFile logFile(filePath); if (!logFile.open(QIODevice::ReadOnly | QIODevice::Text)) { - QMessageBox::critical(AnalyzerManager::mainWindow(), tr("Internal Error"), - tr("Failed to open file for reading: %1").arg(filePath)); + AnalyzerUtils::logToIssuesPane(Task::Error, + tr("Callgrind: Failed to open file for reading: %1").arg(filePath)); return; } diff --git a/src/plugins/valgrind/memchecktool.cpp b/src/plugins/valgrind/memchecktool.cpp index 4365c077dfc..ebee6c1c3b1 100644 --- a/src/plugins/valgrind/memchecktool.cpp +++ b/src/plugins/valgrind/memchecktool.cpp @@ -36,6 +36,7 @@ #include "valgrindplugin.h" #include <analyzerbase/analyzermanager.h> +#include <analyzerbase/analyzerutils.h> #include <analyzerbase/analyzerconstants.h> #include <valgrind/valgrindsettings.h> @@ -83,7 +84,6 @@ #include <QSpinBox> #include <QAction> #include <QMenu> -#include <QMessageBox> #include <QToolButton> #include <QCheckBox> #include <utils/stylehelper.h> @@ -493,8 +493,8 @@ void MemcheckTool::loadExternalXmlLogFile() QFile *logFile = new QFile(filePath); if (!logFile->open(QIODevice::ReadOnly | QIODevice::Text)) { delete logFile; - QMessageBox::critical(m_errorView, tr("Internal Error"), - tr("Failed to open file for reading: %1").arg(filePath)); + AnalyzerUtils::logToIssuesPane(Task::Error, + tr("Memcheck: Failed to open file for reading: %1").arg(filePath)); return; } @@ -524,8 +524,8 @@ void MemcheckTool::parserError(const Error &error) void MemcheckTool::internalParserError(const QString &errorString) { - QMessageBox::critical(m_errorView, tr("Internal Error"), - tr("Error occurred parsing Valgrind output: %1").arg(errorString)); + AnalyzerUtils::logToIssuesPane(Task::Error, + tr("Memcheck: Error occurred parsing Valgrind output: %1").arg(errorString)); } void MemcheckTool::clearErrorView() -- GitLab