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