From 20a4f1e195143731a880408596afb5b75984ca4f Mon Sep 17 00:00:00 2001 From: Kimmo Varis Date: Sat, 28 Aug 2010 20:37:21 +0300 Subject: [PATCH] GUI: Output debug errors to log view. Debug errors were not shown anywhere in the GUI, they were just ignored. This commit adds new signal for those debug errors and directs them to checking log. Solves ticket #1898 (GUI: Handle internal errors from lib) --- gui/erroritem.cpp | 9 +++++++++ gui/erroritem.h | 6 ++++++ gui/mainwindow.cpp | 8 ++++++++ gui/mainwindow.h | 7 +++++++ gui/threadhandler.cpp | 3 +++ gui/threadresult.cpp | 5 ++++- gui/threadresult.h | 7 +++++++ 7 files changed, 44 insertions(+), 1 deletion(-) diff --git a/gui/erroritem.cpp b/gui/erroritem.cpp index bb2eb219b..280617494 100644 --- a/gui/erroritem.cpp +++ b/gui/erroritem.cpp @@ -37,3 +37,12 @@ ErrorItem::ErrorItem(const ErrorLine &line) severity = line.severity; msg = line.msg; } + +QString ErrorItem::ToString() const +{ + QString str = file + " - " + id + " - " + severity +"\n"; + str += " " + msg; + for (int i = 0; i < files.size(); i++) + str += " " + files[i] + ": " + lines[i] + "\n"; + return str; +} diff --git a/gui/erroritem.h b/gui/erroritem.h index 692e6d888..281f01bfb 100644 --- a/gui/erroritem.h +++ b/gui/erroritem.h @@ -39,6 +39,12 @@ public: ErrorItem(const ErrorLine &line); ~ErrorItem() { } + /** + * @brief Convert error item to string. + * @return Error item as string. + */ + QString ToString() const; + QString file; QStringList files; QList lines; diff --git a/gui/mainwindow.cpp b/gui/mainwindow.cpp index 7a7b9cea0..df9c96395 100644 --- a/gui/mainwindow.cpp +++ b/gui/mainwindow.cpp @@ -819,6 +819,14 @@ void MainWindow::Log(const QString &logline) } } +void MainWindow::DebugError(const ErrorItem &item) +{ + if (mLogView) + { + mLogView->AppendLine(item.ToString()); + } +} + void MainWindow::EnableProjectActions(bool enable) { mUI.mActionCloseProjectFile->setEnabled(enable); diff --git a/gui/mainwindow.h b/gui/mainwindow.h index b166f71ae..23daa9a85 100644 --- a/gui/mainwindow.h +++ b/gui/mainwindow.h @@ -36,6 +36,7 @@ class ThreadHandler; class LogView; class HelpWindow; class Project; +class ErrorItem; /// @addtogroup GUI /// @{ @@ -218,6 +219,12 @@ protected slots: */ void Log(const QString &logline); + /** + * @brief Handle new debug error. + * + */ + void DebugError(const ErrorItem &item); + protected: /** diff --git a/gui/threadhandler.cpp b/gui/threadhandler.cpp index 9b1bca96f..6a8c0196c 100644 --- a/gui/threadhandler.cpp +++ b/gui/threadhandler.cpp @@ -146,6 +146,9 @@ void ThreadHandler::Initialize(ResultsView *view) connect(&mResults, SIGNAL(Log(const QString &)), parent(), SLOT(Log(const QString &))); + + connect(&mResults, SIGNAL(Error(const ErrorItem &)), + parent(), SLOT(Error(const ErrorItem &))); } void ThreadHandler::LoadSettings(QSettings &settings) diff --git a/gui/threadresult.cpp b/gui/threadresult.cpp index ad249936b..428303d00 100644 --- a/gui/threadresult.cpp +++ b/gui/threadresult.cpp @@ -71,7 +71,10 @@ void ThreadResult::reportErr(const ErrorLogger::ErrorMessage &msg) item.msg = QString(msg._msg.c_str()); item.severity = QString::fromStdString(Severity::toString(msg._severity)); - emit Error(item); + if (msg._severity != Severity::debug) + emit Error(item); + else + emit DebugError(item); } QString ThreadResult::GetNextFile() diff --git a/gui/threadresult.h b/gui/threadresult.h index 80133a90e..978b3a118 100644 --- a/gui/threadresult.h +++ b/gui/threadresult.h @@ -100,6 +100,13 @@ signals: */ void Log(const QString &logline); + /** + * @brief Signal of a debug error + * + * @param item Error data + */ + void DebugError(const ErrorItem &item); + protected: /**