Commit c5dfc33b authored by Christian Kandeler's avatar Christian Kandeler

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: default avatarhjk <hjk@theqtcompany.com>
parent b70081ae
......@@ -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();
}
......@@ -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
......@@ -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;
}
......
......@@ -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()
......
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