diff --git a/common/dialogs/wx_html_report_box.cpp b/common/dialogs/wx_html_report_box.cpp
index ced4446c4d..93a9391b24 100644
--- a/common/dialogs/wx_html_report_box.cpp
+++ b/common/dialogs/wx_html_report_box.cpp
@@ -34,6 +34,10 @@ WX_HTML_REPORT_BOX::WX_HTML_REPORT_BOX( wxWindow* parent, wxWindowID id, const w
REPORTER& WX_HTML_REPORT_BOX::Report( const wxString& aText, SEVERITY aSeverity )
{
m_messages.push_back( aText );
+
+ if( m_immediateMode )
+ Flush();
+
return *this;
}
diff --git a/common/dialogs/wx_html_report_box.h b/common/dialogs/wx_html_report_box.h
index abdddbb587..40efc9193e 100644
--- a/common/dialogs/wx_html_report_box.h
+++ b/common/dialogs/wx_html_report_box.h
@@ -44,6 +44,8 @@ public:
void SetUnits( EDA_UNITS aUnits ) { m_units = aUnits; }
EDA_UNITS GetUnits() const override { return m_units; }
+ void SetImmediateMode() { m_immediateMode = true; }
+
void Flush();
void Clear();
@@ -53,6 +55,10 @@ private:
EDA_UNITS m_units;
+ // Indicates messages should be flushed as they are added. Required for progress-related
+ // reports, but can be very slow for larger reports.
+ bool m_immediateMode;
+
///> copy of the report, stored for filtering
std::vector m_messages;
};
diff --git a/common/widgets/wx_angle_text.cpp b/common/widgets/wx_angle_text.cpp
index 3a06eafa7f..12e554cae4 100644
--- a/common/widgets/wx_angle_text.cpp
+++ b/common/widgets/wx_angle_text.cpp
@@ -96,8 +96,13 @@ wxSize WX_ANGLE_TEXT::GetTextSize( wxWindow* aWindow, const wxString& aLabel )
wxFont font = wxSystemSettings::GetFont( wxSYS_DEFAULT_GUI_FONT );
#ifdef __WXMAC__
- // Rotated text looks visually smaller on OSX
+ // Rotated text looks visually smaller on OSX...
font.SetPointSize( font.GetPointSize() + 2 );
+#elif __WXGTK3__
+ // TODO: needs testing...
+#else
+ // ... but larger on MSW
+ font.SetPointSize( font.GetPointSize() - 2 );
#endif
// Measure the size of the text
diff --git a/pcbnew/dialogs/dialog_drc.cpp b/pcbnew/dialogs/dialog_drc.cpp
index 0c6bdaf330..0325f3b81a 100644
--- a/pcbnew/dialogs/dialog_drc.cpp
+++ b/pcbnew/dialogs/dialog_drc.cpp
@@ -63,6 +63,8 @@ DIALOG_DRC::DIALOG_DRC( PCB_EDIT_FRAME* aEditorFrame, wxWindow* aParent ) :
m_brdEditor = aEditorFrame;
m_currentBoard = m_brdEditor->GetBoard();
+ m_messages->SetImmediateMode();
+
m_markerTreeModel = new RC_TREE_MODEL( m_brdEditor, m_markerDataView );
m_markerDataView->AssociateModel( m_markerTreeModel );
@@ -167,7 +169,7 @@ void DIALOG_DRC::AdvancePhase( const wxString& aMessage )
PROGRESS_REPORTER::AdvancePhase( aMessage );
SetCurrentProgress( 0.0 );
- m_Messages->Report( aMessage + "
" );
+ m_messages->Report( aMessage );
}
@@ -217,12 +219,12 @@ void DIALOG_DRC::OnRunDRCClick( wxCommandEvent& aEvent )
m_DeleteAllMarkersButton->Enable( false );
m_saveReport->Enable( false );
- m_Messages->Clear();
- m_Messages->Report( _( "DRC incomplete: could not compile design rules. " )
- + wxT( "" )
- + _( "Show design rules." )
- + wxT( "" ) );
- m_Messages->Flush();
+ m_messages->Clear();
+ m_messages->Report( _( "DRC incomplete: could not compile design rules. " )
+ + wxT( "" )
+ + _( "Show design rules." )
+ + wxT( "" ) );
+ m_messages->Flush();
Raise();
return;
@@ -240,7 +242,7 @@ void DIALOG_DRC::OnRunDRCClick( wxCommandEvent& aEvent )
Raise();
m_runningResultsBook->ChangeSelection( 0 ); // Display the "Tests Running..." tab
- m_Messages->Clear();
+ m_messages->Clear();
wxYield(); // Allow time slice to refresh Messages
m_running = true;
@@ -254,9 +256,9 @@ void DIALOG_DRC::OnRunDRCClick( wxCommandEvent& aEvent )
testFootprints );
if( m_cancelled )
- m_Messages->Report( _( "-------- DRC cancelled by user.
" ) );
+ m_messages->Report( _( "-------- DRC cancelled by user.
" ) );
else
- m_Messages->Report( _( "Done.
" ) );
+ m_messages->Report( _( "Done.
" ) );
Raise();
wxYield(); // Allow time slice to refresh Messages
@@ -592,12 +594,12 @@ void DIALOG_DRC::OnSaveReport( wxCommandEvent& aEvent )
if( writeReport( fn.GetFullPath() ) )
{
- m_Messages->Report( wxString::Format( _( "Report file '%s' created
" ),
+ m_messages->Report( wxString::Format( _( "Report file '%s' created
" ),
fn.GetFullPath() ) );
}
else
{
- DisplayError( this, wxString::Format( _( "Unable to create report file '%s'" ),
+ DisplayError( this, wxString::Format( _( "Unable to create report file '%s'
" ),
fn.GetFullPath() ) );
}
}
diff --git a/pcbnew/dialogs/dialog_drc_base.cpp b/pcbnew/dialogs/dialog_drc_base.cpp
index cd12a91711..5c76cf4b81 100644
--- a/pcbnew/dialogs/dialog_drc_base.cpp
+++ b/pcbnew/dialogs/dialog_drc_base.cpp
@@ -62,8 +62,8 @@ DIALOG_DRC_BASE::DIALOG_DRC_BASE( wxWindow* parent, wxWindowID id, const wxStrin
wxBoxSizer* bSizer10;
bSizer10 = new wxBoxSizer( wxVERTICAL );
- m_Messages = new WX_HTML_REPORT_BOX( m_panelMessages, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxHW_SCROLLBAR_AUTO );
- bSizer10->Add( m_Messages, 1, wxEXPAND|wxTOP|wxRIGHT|wxLEFT, 5 );
+ m_messages = new WX_HTML_REPORT_BOX( m_panelMessages, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxHW_SCROLLBAR_AUTO );
+ bSizer10->Add( m_messages, 1, wxEXPAND | wxTOP | wxRIGHT | wxLEFT, 5 );
wxBoxSizer* bGaugeMargins;
bGaugeMargins = new wxBoxSizer( wxVERTICAL );
@@ -224,7 +224,7 @@ DIALOG_DRC_BASE::DIALOG_DRC_BASE( wxWindow* parent, wxWindowID id, const wxStrin
// Connect Events
this->Connect( wxEVT_ACTIVATE, wxActivateEventHandler( DIALOG_DRC_BASE::OnActivateDlg ) );
this->Connect( wxEVT_CLOSE_WINDOW, wxCloseEventHandler( DIALOG_DRC_BASE::OnClose ) );
- m_Messages->Connect( wxEVT_COMMAND_HTML_LINK_CLICKED, wxHtmlLinkEventHandler( DIALOG_DRC_BASE::OnErrorLinkClicked ), NULL, this );
+ m_messages->Connect( wxEVT_COMMAND_HTML_LINK_CLICKED, wxHtmlLinkEventHandler( DIALOG_DRC_BASE::OnErrorLinkClicked ), NULL, this );
m_Notebook->Connect( wxEVT_COMMAND_NOTEBOOK_PAGE_CHANGED, wxNotebookEventHandler( DIALOG_DRC_BASE::OnChangingNotebookPage ), NULL, this );
m_markerDataView->Connect( wxEVT_COMMAND_DATAVIEW_ITEM_ACTIVATED, wxDataViewEventHandler( DIALOG_DRC_BASE::OnDRCItemDClick ), NULL, this );
m_markerDataView->Connect( wxEVT_COMMAND_DATAVIEW_ITEM_CONTEXT_MENU, wxDataViewEventHandler( DIALOG_DRC_BASE::OnDRCItemRClick ), NULL, this );
@@ -249,7 +249,7 @@ DIALOG_DRC_BASE::~DIALOG_DRC_BASE()
// Disconnect Events
this->Disconnect( wxEVT_ACTIVATE, wxActivateEventHandler( DIALOG_DRC_BASE::OnActivateDlg ) );
this->Disconnect( wxEVT_CLOSE_WINDOW, wxCloseEventHandler( DIALOG_DRC_BASE::OnClose ) );
- m_Messages->Disconnect( wxEVT_COMMAND_HTML_LINK_CLICKED, wxHtmlLinkEventHandler( DIALOG_DRC_BASE::OnErrorLinkClicked ), NULL, this );
+ m_messages->Disconnect( wxEVT_COMMAND_HTML_LINK_CLICKED, wxHtmlLinkEventHandler( DIALOG_DRC_BASE::OnErrorLinkClicked ), NULL, this );
m_Notebook->Disconnect( wxEVT_COMMAND_NOTEBOOK_PAGE_CHANGED, wxNotebookEventHandler( DIALOG_DRC_BASE::OnChangingNotebookPage ), NULL, this );
m_markerDataView->Disconnect( wxEVT_COMMAND_DATAVIEW_ITEM_ACTIVATED, wxDataViewEventHandler( DIALOG_DRC_BASE::OnDRCItemDClick ), NULL, this );
m_markerDataView->Disconnect( wxEVT_COMMAND_DATAVIEW_ITEM_CONTEXT_MENU, wxDataViewEventHandler( DIALOG_DRC_BASE::OnDRCItemRClick ), NULL, this );
diff --git a/pcbnew/dialogs/dialog_drc_base.fbp b/pcbnew/dialogs/dialog_drc_base.fbp
index b328692e68..6d934a7162 100644
--- a/pcbnew/dialogs/dialog_drc_base.fbp
+++ b/pcbnew/dialogs/dialog_drc_base.fbp
@@ -619,7 +619,7 @@
0
1
- m_Messages
+ m_messages
1
diff --git a/pcbnew/dialogs/dialog_drc_base.h b/pcbnew/dialogs/dialog_drc_base.h
index 87238e39ee..3efcba8abb 100644
--- a/pcbnew/dialogs/dialog_drc_base.h
+++ b/pcbnew/dialogs/dialog_drc_base.h
@@ -56,7 +56,7 @@ class DIALOG_DRC_BASE : public DIALOG_SHIM
wxPanel* running;
wxNotebook* m_runningNotebook;
wxPanel* m_panelMessages;
- WX_HTML_REPORT_BOX* m_Messages;
+ WX_HTML_REPORT_BOX* m_messages;
wxGauge* m_gauge;
wxPanel* results;
wxNotebook* m_Notebook;