33 std::vector<std::reference_wrapper<RC_ITEM>> aItems,
34 std::map<int, SEVERITY>& aSeverities,
36 wxPanel( aParentWindow ),
41 wxString severities[] = {
_(
"Error" ),
_(
"Warning" ),
_(
"Ignore" ) };
42 int severityCount =
sizeof( severities ) /
sizeof( wxString );
44 wxBoxSizer* panelSizer =
new wxBoxSizer( wxVERTICAL );
45 wxScrolledWindow* scrollWin =
new wxScrolledWindow(
this, wxID_ANY, wxDefaultPosition, wxDefaultSize,
46 wxTAB_TRAVERSAL | wxVSCROLL );
47 bool firstLine =
true;
49 scrollWin->SetScrollRate( 0, 5 );
51 wxBoxSizer* scrollWinSizer =
new wxBoxSizer( wxVERTICAL );
52 scrollWin->SetSizer( scrollWinSizer );
54 wxFlexGridSizer* gridSizer =
new wxFlexGridSizer( 0, 2, 0, 0 );
55 gridSizer->SetFlexibleDirection( wxBOTH );
57 for(
const std::reference_wrapper<RC_ITEM>& item :
m_items )
59 int errorCode = item.get().GetErrorCode();
60 wxString msg = item.get().GetErrorText(
true );
67 wxStaticText* heading =
new wxStaticText( scrollWin, wxID_ANY, msg );
68 wxStaticLine* underline1 =
new wxStaticLine( scrollWin, wxHORIZONTAL );
69 wxStaticLine* underline2 =
new wxStaticLine( scrollWin, wxHORIZONTAL );
73 gridSizer->AddSpacer( 5 );
74 gridSizer->AddSpacer( 5 );
77 gridSizer->Add( heading, 0, wxLEFT | wxRIGHT | wxTOP | wxEXPAND, 13 );
78 gridSizer->AddSpacer( 0 );
80 gridSizer->Add( underline1, 0, wxTOP | wxBOTTOM | wxEXPAND, 2 );
81 gridSizer->Add( underline2, 0, wxTOP | wxBOTTOM | wxEXPAND, 2 );
83 else if( !msg.IsEmpty() )
85 wxStaticText* errorLabel =
new wxStaticText( scrollWin, wxID_ANY, msg + wxT(
":" ) );
86 gridSizer->Add( errorLabel, 0, wxALIGN_CENTER_VERTICAL | wxLEFT, 7 );
90 wxPanel* radioPanel =
new wxPanel( scrollWin );
91 wxBoxSizer* radioSizer =
new wxBoxSizer( wxHORIZONTAL );
93 for(
int i = 0; i < severityCount; ++i )
95 m_buttonMap[ errorCode ][i] =
new wxRadioButton( radioPanel,
96 baseID + errorCode * 10 + i,
98 wxDefaultPosition, wxDefaultSize,
99 i == 0 ? wxRB_GROUP : 0 );
100 radioSizer->Add(
m_buttonMap[ errorCode ][i], 0, wxRIGHT | wxALIGN_CENTER_VERTICAL, 30 );
103 radioPanel->SetSizer( radioSizer );
104 radioPanel->Layout();
105 gridSizer->Add( radioPanel, 0, wxTOP, 5 );
114 gridSizer->AddSpacer( 5 );
115 gridSizer->AddSpacer( 5 );
117 wxString pinMapSeverities[] = {
_(
"From Pin Conflicts Map" ), wxT(
"" ),
_(
"Ignore" ) };
121 wxStaticText* errorLabel =
new wxStaticText( scrollWin, wxID_ANY, msg + wxT(
":" ) );
122 gridSizer->Add( errorLabel, 0, wxALIGN_CENTER_VERTICAL | wxALL | wxEXPAND, 7 );
124 wxPanel* radioPanel =
new wxPanel( scrollWin );
125 wxBoxSizer* radioSizer =
new wxBoxSizer( wxHORIZONTAL );
127 for(
size_t i = 0; i <
sizeof( pinMapSeverities ) /
sizeof( wxString ); ++i )
129 if( pinMapSeverities[i] == wxT(
"" ) )
131 wxStaticText* spacer =
new wxStaticText( radioPanel, wxID_ANY, wxT(
"" ) );
132 radioSizer->Add( spacer, 0, wxRIGHT | wxEXPAND, 22 );
136 m_buttonMap[ errorCode ][i] =
new wxRadioButton( radioPanel,
137 baseID + errorCode * 10 + i,
139 wxDefaultPosition, wxDefaultSize,
140 i == 0 ? wxRB_GROUP : 0 );
141 radioSizer->Add(
m_buttonMap[ errorCode ][i], 0, wxEXPAND );
145 radioPanel->SetSizer( radioSizer );
146 radioPanel->Layout();
147 gridSizer->Add( radioPanel, 0, wxALIGN_CENTER_VERTICAL );
150 scrollWinSizer->Add( gridSizer, 1, wxEXPAND | wxALL, 5 );
151 panelSizer->Add( scrollWin, 1, wxEXPAND, 0 );
154 [
this]( wxIdleEvent& aEvent )
158 wxWindow* dialog = wxGetTopLevelParent(
this );
159 wxWindow* topLevelFocus = wxGetTopLevelParent( wxWindow::FindFocus() );
161 if( topLevelFocus == dialog )
166 SetSizer( panelSizer );
168 panelSizer->Fit(
this );