From ebef7c03dbd986f0d9027c44167d2bfda4733a2e Mon Sep 17 00:00:00 2001 From: Jeff Young Date: Thu, 30 Jul 2020 12:20:55 +0100 Subject: [PATCH] Add simplified HTML reporter window. --- common/CMakeLists.txt | 1 + common/dialogs/wx_html_report_box.cpp | 71 +++++++++++++++++++++++++++ common/dialogs/wx_html_report_box.h | 57 +++++++++++++++++++++ include/reporter.h | 1 + 4 files changed, 130 insertions(+) create mode 100644 common/dialogs/wx_html_report_box.cpp create mode 100644 common/dialogs/wx_html_report_box.h diff --git a/common/CMakeLists.txt b/common/CMakeLists.txt index 771c64ee0a..532e40cf5b 100644 --- a/common/CMakeLists.txt +++ b/common/CMakeLists.txt @@ -194,6 +194,7 @@ set( COMMON_DLG_SRCS dialogs/panel_setup_severities.cpp dialogs/panel_text_variables.cpp dialogs/panel_text_variables_base.cpp + dialogs/wx_html_report_box.cpp dialogs/wx_html_report_panel.cpp dialogs/wx_html_report_panel_base.cpp ) diff --git a/common/dialogs/wx_html_report_box.cpp b/common/dialogs/wx_html_report_box.cpp new file mode 100644 index 0000000000..cd7f457a42 --- /dev/null +++ b/common/dialogs/wx_html_report_box.cpp @@ -0,0 +1,71 @@ +/* + * This program source code file is part of KiCad, a free EDA CAD application. + * + * Copyright (C) 2020 KiCad Developers, see AUTHORS.txt for contributors. + * + * This program is free software: you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation, either version 2 of the License, or (at your + * option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program. If not, see . + */ + + +#include "wx_html_report_box.h" + + +WX_HTML_REPORT_BOX::WX_HTML_REPORT_BOX( wxWindow* parent, wxWindowID id, const wxPoint& pos, + const wxSize& size, long style ) : + wxHtmlWindow( parent, id, pos, size, style ) +{ +} + + +REPORTER& WX_HTML_REPORT_BOX::Report( const wxString& aText, SEVERITY aSeverity ) +{ + m_messages.push_back( aText ); + return *this; +} + + +void WX_HTML_REPORT_BOX::Flush() +{ + wxString html; + + for( const wxString& line : m_messages ) + html += generateHtml( line ); + + SetPage( addHeader( html ) ); +} + + +wxString WX_HTML_REPORT_BOX::addHeader( const wxString& aBody ) +{ + wxColour bgcolor = wxSystemSettings::GetColour( wxSYS_COLOUR_WINDOW ); + wxColour fgcolor = wxSystemSettings::GetColour( wxSYS_COLOUR_WINDOWTEXT ); + + return wxString::Format( wxT( "%s" ), + bgcolor.GetAsString( wxC2S_HTML_SYNTAX ), + fgcolor.GetAsString( wxC2S_HTML_SYNTAX ), + aBody ); +} + + +wxString WX_HTML_REPORT_BOX::generateHtml( const wxString& aLine ) +{ + return "" + aLine + "
"; +} + + +void WX_HTML_REPORT_BOX::Clear() +{ + m_messages.clear(); +} + diff --git a/common/dialogs/wx_html_report_box.h b/common/dialogs/wx_html_report_box.h new file mode 100644 index 0000000000..e80a67fd56 --- /dev/null +++ b/common/dialogs/wx_html_report_box.h @@ -0,0 +1,57 @@ +/* + * This program source code file is part of KiCad, a free EDA CAD application. + * + * Copyright (C) 2020 KiCad Developers, see change_log.txt for contributors. + * + * This program is free software: you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation, either version 2 of the License, or (at your + * option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program. If not, see . + */ + +#ifndef WX_HTML_REPORT_BOX_H +#define WX_HTML_REPORT_BOX_H + +#include +#include +#include +#include + +/** + * WX_HTML_REPORT_BOX + * + * A slimmed down version of WX_HTML_REPORT_BOX + */ +class WX_HTML_REPORT_BOX : public wxHtmlWindow, public REPORTER +{ +public: + WX_HTML_REPORT_BOX( wxWindow* parent, wxWindowID id = wxID_ANY, + const wxPoint& pos = wxDefaultPosition, + const wxSize& size = wxSize( 500,300 ), long style = wxTAB_TRAVERSAL ); + + REPORTER& Report( const wxString& aText, SEVERITY aSeverity = RPT_SEVERITY_UNDEFINED ) override; + + bool HasMessage() const override { return !m_messages.empty(); } + + void Flush(); + void Clear(); + +private: + wxString addHeader( const wxString& aBody ); + wxString generateHtml( const wxString& aLine ); + + void scrollToBottom(); + + ///> copy of the report, stored for filtering + std::vector m_messages; +}; + +#endif //WX_HTML_REPORT_BOX_H diff --git a/include/reporter.h b/include/reporter.h index 5fb4e5ff54..db8a897008 100644 --- a/include/reporter.h +++ b/include/reporter.h @@ -202,6 +202,7 @@ public: bool HasMessage() const override; }; + /** * NULL_REPORTER *