From 26a3217b42ee3a9d9aeea5cf50892176d31811b3 Mon Sep 17 00:00:00 2001 From: mwganson Date: Thu, 5 Mar 2020 20:15:50 -0600 Subject: [PATCH] [Report View] add options to show report view on warning, error, normal, and log message types individually --- src/Gui/DlgReportView.ui | 71 +++++++++++++++++++++++++++++++++-- src/Gui/DlgReportViewImp.cpp | 10 ++++- src/Gui/ReportView.cpp | 73 +++++++++++++++++++++++++----------- src/Gui/ReportView.h | 11 +++++- 4 files changed, 136 insertions(+), 29 deletions(-) diff --git a/src/Gui/DlgReportView.ui b/src/Gui/DlgReportView.ui index 9180f2446f..45e2a5d682 100644 --- a/src/Gui/DlgReportView.ui +++ b/src/Gui/DlgReportView.ui @@ -87,19 +87,79 @@ - + When an error has occurred, the Report View dialog becomes visible on-screen while displaying the error - Show report view on warning or error + Show report view on error true - checkShowReportViewOnWarningOrError + checkShowReportViewOnError + + + OutputWindow + + + + + + + When a warning has occurred, the Report View dialog becomes visible +on-screen while displaying the warning + + + Show report view on warning + + + true + + + checkShowReportViewOnWarning + + + OutputWindow + + + + + + + When a normal message has occurred, the Report View dialog becomes visible +on-screen while displaying the message + + + Show report view on normal message + + + false + + + checkShowReportViewOnNormalMessage + + + OutputWindow + + + + + + + When a log message has occurred, the Report View dialog becomes visible +on-screen while displaying the log message + + + Show report view on log message + + + false + + + checkShowReportViewOnLogMessage OutputWindow @@ -489,7 +549,10 @@ from Python console to Report view panel checkLogging checkWarning checkError - checkShowReportViewOnWarningOrError + checkShowReportViewOnWarning + checkShowReportViewOnError + checkShowReportViewOnNormalMessage + checkShowReportViewOnLogMessage colorText colorLogging colorWarning diff --git a/src/Gui/DlgReportViewImp.cpp b/src/Gui/DlgReportViewImp.cpp index d01e4c9f88..a53adb767c 100644 --- a/src/Gui/DlgReportViewImp.cpp +++ b/src/Gui/DlgReportViewImp.cpp @@ -61,7 +61,10 @@ void DlgReportViewImp::saveSettings() ui->checkLogging->onSave(); ui->checkWarning->onSave(); ui->checkError->onSave(); - ui->checkShowReportViewOnWarningOrError->onSave(); + ui->checkShowReportViewOnWarning->onSave(); + ui->checkShowReportViewOnError->onSave(); + ui->checkShowReportViewOnNormalMessage->onSave(); + ui->checkShowReportViewOnLogMessage->onSave(); ui->colorText->onSave(); ui->colorLogging->onSave(); ui->colorWarning->onSave(); @@ -75,7 +78,10 @@ void DlgReportViewImp::loadSettings() ui->checkLogging->onRestore(); ui->checkWarning->onRestore(); ui->checkError->onRestore(); - ui->checkShowReportViewOnWarningOrError->onRestore(); + ui->checkShowReportViewOnWarning->onRestore(); + ui->checkShowReportViewOnError->onRestore(); + ui->checkShowReportViewOnNormalMessage->onRestore(); + ui->checkShowReportViewOnLogMessage->onRestore(); ui->colorText->onRestore(); ui->colorLogging->onRestore(); ui->colorWarning->onRestore(); diff --git a/src/Gui/ReportView.cpp b/src/Gui/ReportView.cpp index 24937a441a..d073f551ac 100644 --- a/src/Gui/ReportView.cpp +++ b/src/Gui/ReportView.cpp @@ -242,30 +242,45 @@ ReportOutputObserver::ReportOutputObserver(ReportOutput *report) this->reportView = report; } +void ReportOutputObserver::showReportView(){ + // get the QDockWidget parent of the report view + QDockWidget* dw = nullptr; + QWidget* par = reportView->parentWidget(); + while (par) { + dw = qobject_cast(par); + if (dw) + break; + par = par->parentWidget(); + } + + if (dw && !dw->toggleViewAction()->isChecked()) { + dw->toggleViewAction()->activate(QAction::Trigger); + } +} + bool ReportOutputObserver::eventFilter(QObject *obj, QEvent *event) { if (event->type() == QEvent::User && obj == reportView.data()) { CustomReportEvent* cr = dynamic_cast(event); if (cr) { + ParameterGrp::handle group = App::GetApplication().GetUserParameter(). + GetGroup("BaseApp")->GetGroup("Preferences")->GetGroup("OutputWindow"); ReportHighlighter::Paragraph msgType = cr->messageType(); - if (msgType == ReportHighlighter::Error || msgType == ReportHighlighter::Warning){ - ParameterGrp::handle group = App::GetApplication().GetUserParameter(). - GetGroup("BaseApp")->GetGroup("Preferences")->GetGroup("OutputWindow"); - - if (group->GetBool("checkShowReportViewOnWarningOrError", true)) { - // get the QDockWidget parent of the report view - QDockWidget* dw = nullptr; - QWidget* par = reportView->parentWidget(); - while (par) { - dw = qobject_cast(par); - if (dw) - break; - par = par->parentWidget(); - } - - if (dw && !dw->toggleViewAction()->isChecked()) { - dw->toggleViewAction()->activate(QAction::Trigger); - } + if (msgType == ReportHighlighter::Warning){ + if (group->GetBool("checkShowReportViewOnWarning", true)) { + showReportView(); + } + } else if (msgType == ReportHighlighter::Error){ + if (group->GetBool("checkShowReportViewOnError", true)) { + showReportView(); + } + } else if (msgType == ReportHighlighter::Message){ + if (group->GetBool("checkShowReportViewOnNormalMessage", false)) { + showReportView(); + } + } else if (msgType == ReportHighlighter::LogText){ + if (group->GetBool("checkShowReportViewOnLogMessage", false)) { + showReportView(); } } } @@ -530,10 +545,26 @@ void ReportOutput::onToggleError() getWindowParameter()->SetBool( "checkError", bErr ); } -void ReportOutput::onToggleShowReportViewOnWarningOrError(){ - bool show = getWindowParameter()->GetBool("checkShowReportViewOnWarningOrError", true); - getWindowParameter()->SetBool("checkShowReportViewOnWarningOrError", !show); +void ReportOutput::onToggleShowReportViewOnWarning(){ + bool show = getWindowParameter()->GetBool("checkShowReportViewOnWarning", true); + getWindowParameter()->SetBool("checkShowReportViewOnWarning", !show); } + +void ReportOutput::onToggleShowReportViewOnError(){ + bool show = getWindowParameter()->GetBool("checkShowReportViewOnError", true); + getWindowParameter()->SetBool("checkShowReportViewOnError", !show); +} + +void ReportOutput::onToggleShowReportViewOnNormalMessage(){ + bool show = getWindowParameter()->GetBool("checkShowReportViewOnNormalMessage", true); + getWindowParameter()->SetBool("checkShowReportViewOnNormalMessage", !show); +} + +void ReportOutput::onToggleShowReportViewOnLogMessage(){ + bool show = getWindowParameter()->GetBool("checkShowReportViewOnLogMessage", true); + getWindowParameter()->SetBool("checkShowReportViewOnLogMessage", !show); +} + void ReportOutput::onToggleWarning() { bWrn = bWrn ? false : true; diff --git a/src/Gui/ReportView.h b/src/Gui/ReportView.h index 9572bc6e74..c0d228027f 100644 --- a/src/Gui/ReportView.h +++ b/src/Gui/ReportView.h @@ -167,8 +167,14 @@ public Q_SLOTS: void onToggleWarning(); /** Toggles the report of log messages. */ void onToggleLogging(); - /** Toggles whether to show report view on warnings or errors */ - void onToggleShowReportViewOnWarningOrError(); + /** Toggles whether to show report view on warnings*/ + void onToggleShowReportViewOnWarning(); + /** Toggles whether to show report view on errors*/ + void onToggleShowReportViewOnError(); + /** Toggles whether to show report view on normal messages*/ + void onToggleShowReportViewOnNormalMessage(); + /** Toggles whether to show report view on log messages*/ + void onToggleShowReportViewOnLogMessage(); /** Toggles the redirection of Python stdout. */ void onToggleRedirectPythonStdout(); /** Toggles the redirection of Python stderr. */ @@ -200,6 +206,7 @@ public: protected: QPointer reportView; + void showReportView(void); }; } // namespace DockWnd