1 /* 2 * This program source code file is part of KiCad, a free EDA CAD application. 3 * 4 * Copyright (C) 2020-2021 KiCad Developers, see change_log.txt for contributors. 5 * 6 * This program is free software: you can redistribute it and/or modify it 7 * under the terms of the GNU General Public License as published by the 8 * Free Software Foundation, either version 2 of the License, or (at your 9 * option) any later version. 10 * 11 * This program is distributed in the hope that it will be useful, but 12 * WITHOUT ANY WARRANTY; without even the implied warranty of 13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 14 * General Public License for more details. 15 * 16 * You should have received a copy of the GNU General Public License along 17 * with this program. If not, see <http://www.gnu.org/licenses/>. 18 */ 19 20 #ifndef WX_HTML_REPORT_BOX_H 21 #define WX_HTML_REPORT_BOX_H 22 23 #include <reporter.h> 24 #include <vector> 25 #include <html_window.h> 26 #include <eda_units.h> 27 28 /** 29 * A slimmed down version of #WX_HTML_REPORT_PANEL 30 */ 31 class WX_HTML_REPORT_BOX : public HTML_WINDOW, public REPORTER 32 { 33 public: 34 WX_HTML_REPORT_BOX( wxWindow* parent, wxWindowID id = wxID_ANY, 35 const wxPoint& pos = wxDefaultPosition, 36 const wxSize& size = wxSize( 500,300 ), long style = wxTAB_TRAVERSAL ); 37 38 REPORTER& Report( const wxString& aText, SEVERITY aSeverity = RPT_SEVERITY_UNDEFINED ) override; 39 HasMessage()40 bool HasMessage() const override { return !m_messages.empty(); } 41 SetUnits(EDA_UNITS aUnits)42 void SetUnits( EDA_UNITS aUnits ) { m_units = aUnits; } GetUnits()43 EDA_UNITS GetUnits() const override { return m_units; } 44 45 /** 46 * In immediate mode, messages are flushed as they are added. 47 * Required for progress-related reports, but can be very slow for larger reports. 48 */ SetImmediateMode()49 void SetImmediateMode() { m_immediateMode = true; } 50 51 /** 52 * Build the HTML messages page. 53 * Call it if the immediate mode is not activated to be able to display them 54 */ 55 void Flush(); 56 57 /** 58 * Delete the stored messages 59 */ 60 void Clear(); 61 62 private: 63 void onThemeChanged( wxSysColourChangedEvent &aEvent ); 64 65 wxString addHeader( const wxString& aBody ); 66 wxString generateHtml( const wxString& aLine ); 67 68 EDA_UNITS m_units; 69 70 // Indicates messages should be flushed as they are added. Required for progress-related 71 // reports, but can be very slow for larger reports. 72 bool m_immediateMode; 73 74 ///< copy of the report, stored for filtering 75 std::vector<wxString> m_messages; 76 }; 77 78 #endif //WX_HTML_REPORT_BOX_H 79