32 std::vector<std::reference_wrapper<RC_ITEM>> aItems,
33 std::map<int, SEVERITY>& aSeverities,
35 wxPanel( aParentWindow ),
40 wxString severities[] = {
_(
"Error" ),
_(
"Warning" ),
_(
"Ignore" ) };
41 int severityCount =
sizeof( severities ) /
sizeof( wxString );
43 wxBoxSizer* panelSizer =
new wxBoxSizer( wxVERTICAL );
44 wxScrolledWindow* scrollWin =
new wxScrolledWindow(
this, wxID_ANY,
45 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, 5 );
55 gridSizer->SetFlexibleDirection( wxBOTH );
56 gridSizer->SetVGap( 5 );
60 int errorCode = item.GetErrorCode();
61 wxString msg = item.GetErrorText(
true );
68 wxStaticText* heading =
new wxStaticText( scrollWin, wxID_ANY, msg );
69 wxFont headingFont = heading->GetFont();
71 heading->SetFont( headingFont.Bold() );
75 gridSizer->AddSpacer( 5 );
76 gridSizer->AddSpacer( 5 );
79 gridSizer->Add( heading, 0, wxALIGN_BOTTOM | wxALL | wxEXPAND, 4 );
80 gridSizer->AddSpacer( 0 );
82 else if( !msg.IsEmpty() )
84 wxStaticText* errorLabel =
new wxStaticText( scrollWin, wxID_ANY, msg + wxT(
":" ) );
85 gridSizer->Add( errorLabel, 0, wxALIGN_CENTER_VERTICAL | wxLEFT, 15 );
89 wxPanel* radioPanel =
new wxPanel( scrollWin );
90 wxBoxSizer* radioSizer =
new wxBoxSizer( wxHORIZONTAL );
92 for(
int i = 0; i < severityCount; ++i )
94 m_buttonMap[ errorCode ][i] =
new wxRadioButton( radioPanel,
95 baseID + errorCode * 10 + i,
97 wxDefaultPosition, wxDefaultSize,
98 i == 0 ? wxRB_GROUP : 0 );
100 wxRIGHT | wxALIGN_CENTER_VERTICAL, 30 );
103 radioPanel->SetSizer( radioSizer );
104 radioPanel->Layout();
105 gridSizer->Add( radioPanel, 0, wxALIGN_CENTER_VERTICAL );
114 wxString pinMapSeverities[] = {
_(
"From Pin Conflicts Map" ), wxT(
"" ),
_(
"Ignore" ) };
118 wxStaticText* errorLabel =
new wxStaticText( scrollWin, wxID_ANY, msg + wxT(
":" ) );
119 gridSizer->Add( errorLabel, 0, wxALIGN_CENTER_VERTICAL | wxALL | wxEXPAND, 15 );
121 wxPanel* radioPanel =
new wxPanel( scrollWin );
122 wxBoxSizer* radioSizer =
new wxBoxSizer( wxHORIZONTAL );
124 for(
size_t i = 0; i < 3; ++i )
126 if( pinMapSeverities[i] == wxT(
"" ) )
128 wxStaticText* spacer =
new wxStaticText( radioPanel, wxID_ANY, wxT(
"" ) );
129 radioSizer->Add( spacer, 0, wxRIGHT | wxEXPAND, 17 );
133 m_buttonMap[ errorCode ][i] =
new wxRadioButton( radioPanel,
134 baseID + errorCode * 10 + i,
136 wxDefaultPosition, wxDefaultSize,
137 i == 0 ? wxRB_GROUP : 0 );
138 radioSizer->Add(
m_buttonMap[ errorCode ][i], 0, wxEXPAND );
142 radioPanel->SetSizer( radioSizer );
143 radioPanel->Layout();
144 gridSizer->Add( radioPanel, 0, wxALIGN_CENTER_VERTICAL );
147 scrollWinSizer->Add( gridSizer, 1, wxEXPAND | wxALL, 5 );
148 panelSizer->Add( scrollWin, 1, wxEXPAND, 0 );
151 [
this]( wxIdleEvent& aEvent )
155 wxWindow* dialog = wxGetTopLevelParent(
this );
156 wxWindow* topLevelFocus = wxGetTopLevelParent( wxWindow::FindFocus() );
158 if( topLevelFocus == dialog )
163 SetSizer( panelSizer );
165 panelSizer->Fit(
this );