Add grouping for violation severities.
Fixes https://gitlab.com/kicad/code/kicad/issues/6616
This commit is contained in:
parent
58afaeb9eb
commit
d0f9503ee0
|
@ -49,6 +49,7 @@ PANEL_SETUP_SEVERITIES::PANEL_SETUP_SEVERITIES( PAGED_DIALOG* aParent,
|
||||||
|
|
||||||
wxFlexGridSizer* gridSizer = new wxFlexGridSizer( 0, 2, 0, 5 );
|
wxFlexGridSizer* gridSizer = new wxFlexGridSizer( 0, 2, 0, 5 );
|
||||||
gridSizer->SetFlexibleDirection( wxBOTH );
|
gridSizer->SetFlexibleDirection( wxBOTH );
|
||||||
|
gridSizer->SetVGap( 5 );
|
||||||
|
|
||||||
for( const RC_ITEM& item : m_items )
|
for( const RC_ITEM& item : m_items )
|
||||||
{
|
{
|
||||||
|
@ -58,13 +59,23 @@ PANEL_SETUP_SEVERITIES::PANEL_SETUP_SEVERITIES( PAGED_DIALOG* aParent,
|
||||||
if( m_pinMapSpecialCase && errorCode == m_pinMapSpecialCase->GetErrorCode() )
|
if( m_pinMapSpecialCase && errorCode == m_pinMapSpecialCase->GetErrorCode() )
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
// When msg is empty, for some reason, the current errorCode is not supported
|
if( errorCode == 0 )
|
||||||
// by the RC_ITEM aDummyItem.
|
{
|
||||||
// Skip this errorCode.
|
wxStaticText* heading = new wxStaticText( scrollWin, wxID_ANY, msg );
|
||||||
if( !msg.IsEmpty() )
|
wxFont headingFont = heading->GetFont();
|
||||||
|
|
||||||
|
heading->SetFont( headingFont.Bold() );
|
||||||
|
|
||||||
|
gridSizer->AddSpacer( 5 ); // col 1
|
||||||
|
gridSizer->AddSpacer( 5 ); // col 2
|
||||||
|
|
||||||
|
gridSizer->Add( heading, 0, wxALIGN_BOTTOM | wxALL, 4 );
|
||||||
|
gridSizer->AddSpacer( 0 ); // col 2
|
||||||
|
}
|
||||||
|
else if( !msg.IsEmpty() ) // items with no message are for internal use only
|
||||||
{
|
{
|
||||||
wxStaticText* errorLabel = new wxStaticText( scrollWin, wxID_ANY, msg + wxT( ":" ) );
|
wxStaticText* errorLabel = new wxStaticText( scrollWin, wxID_ANY, msg + wxT( ":" ) );
|
||||||
gridSizer->Add( errorLabel, 0, wxALIGN_CENTER_VERTICAL | wxALL | wxEXPAND, 4 );
|
gridSizer->Add( errorLabel, 0, wxALIGN_CENTER_VERTICAL | wxLEFT, 15 );
|
||||||
|
|
||||||
// OSX can't handle more than 100 radio buttons in a single window (yes, seriously),
|
// OSX can't handle more than 100 radio buttons in a single window (yes, seriously),
|
||||||
// so we have to create a window for each set
|
// so we have to create a window for each set
|
||||||
|
@ -76,15 +87,15 @@ PANEL_SETUP_SEVERITIES::PANEL_SETUP_SEVERITIES( PAGED_DIALOG* aParent,
|
||||||
m_buttonMap[ errorCode ][i] = new wxRadioButton( radioPanel,
|
m_buttonMap[ errorCode ][i] = new wxRadioButton( radioPanel,
|
||||||
baseID + errorCode * 10 + i,
|
baseID + errorCode * 10 + i,
|
||||||
severities[i],
|
severities[i],
|
||||||
wxDefaultPosition,
|
wxDefaultPosition, wxDefaultSize,
|
||||||
wxDefaultSize,
|
|
||||||
i == 0 ? wxRB_GROUP : 0 );
|
i == 0 ? wxRB_GROUP : 0 );
|
||||||
radioSizer->Add( m_buttonMap[ errorCode ][i], 0, wxRIGHT | wxEXPAND, 30 );
|
radioSizer->Add( m_buttonMap[ errorCode ][i], 0,
|
||||||
|
wxRIGHT | wxALIGN_CENTER_VERTICAL, 30 );
|
||||||
}
|
}
|
||||||
|
|
||||||
radioPanel->SetSizer( radioSizer );
|
radioPanel->SetSizer( radioSizer );
|
||||||
radioPanel->Layout();
|
radioPanel->Layout();
|
||||||
gridSizer->Add( radioPanel, 0, wxALIGN_CENTER_VERTICAL | wxALL | wxEXPAND, 4 );
|
gridSizer->Add( radioPanel, 0, wxALIGN_CENTER_VERTICAL );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -96,7 +107,7 @@ PANEL_SETUP_SEVERITIES::PANEL_SETUP_SEVERITIES( PAGED_DIALOG* aParent,
|
||||||
wxString msg = m_pinMapSpecialCase->GetErrorText();
|
wxString msg = m_pinMapSpecialCase->GetErrorText();
|
||||||
|
|
||||||
wxStaticText* errorLabel = new wxStaticText( scrollWin, wxID_ANY, msg + wxT( ":" ) );
|
wxStaticText* errorLabel = new wxStaticText( scrollWin, wxID_ANY, msg + wxT( ":" ) );
|
||||||
gridSizer->Add( errorLabel, 0, wxALIGN_CENTER_VERTICAL | wxALL | wxEXPAND, 4 );
|
gridSizer->Add( errorLabel, 0, wxALIGN_CENTER_VERTICAL | wxALL | wxEXPAND, 15 );
|
||||||
|
|
||||||
wxPanel* radioPanel = new wxPanel( scrollWin );
|
wxPanel* radioPanel = new wxPanel( scrollWin );
|
||||||
wxBoxSizer* radioSizer = new wxBoxSizer( wxHORIZONTAL );
|
wxBoxSizer* radioSizer = new wxBoxSizer( wxHORIZONTAL );
|
||||||
|
@ -113,16 +124,16 @@ PANEL_SETUP_SEVERITIES::PANEL_SETUP_SEVERITIES( PAGED_DIALOG* aParent,
|
||||||
m_buttonMap[ errorCode ][i] = new wxRadioButton( radioPanel,
|
m_buttonMap[ errorCode ][i] = new wxRadioButton( radioPanel,
|
||||||
baseID + errorCode * 10 + i,
|
baseID + errorCode * 10 + i,
|
||||||
pinMapSeverities[i],
|
pinMapSeverities[i],
|
||||||
wxDefaultPosition,
|
wxDefaultPosition, wxDefaultSize,
|
||||||
wxDefaultSize,
|
|
||||||
i == 0 ? wxRB_GROUP : 0 );
|
i == 0 ? wxRB_GROUP : 0 );
|
||||||
radioSizer->Add( m_buttonMap[ errorCode ][i], 0, wxEXPAND );
|
radioSizer->Add( m_buttonMap[ errorCode ][i], 0,
|
||||||
|
wxEXPAND | wxALIGN_CENTER_VERTICAL );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
radioPanel->SetSizer( radioSizer );
|
radioPanel->SetSizer( radioSizer );
|
||||||
radioPanel->Layout();
|
radioPanel->Layout();
|
||||||
gridSizer->Add( radioPanel, 0, wxALIGN_CENTER_VERTICAL | wxALL | wxEXPAND, 4 );
|
gridSizer->Add( radioPanel, 0, wxALIGN_CENTER_VERTICAL );
|
||||||
}
|
}
|
||||||
|
|
||||||
scrollWin->SetSizer( gridSizer );
|
scrollWin->SetSizer( gridSizer );
|
||||||
|
|
|
@ -38,6 +38,13 @@
|
||||||
|
|
||||||
// NOTE: Avoid changing the settings key for a DRC item after it has been created
|
// NOTE: Avoid changing the settings key for a DRC item after it has been created
|
||||||
|
|
||||||
|
|
||||||
|
DRC_ITEM DRC_ITEM::heading_electrical( 0, _( "Electrical" ), "" );
|
||||||
|
DRC_ITEM DRC_ITEM::heading_DFM( 0, _( "Design For Manufacturing" ), "" );
|
||||||
|
DRC_ITEM DRC_ITEM::heading_schematic_parity( 0, _( "Schematic Parity" ), "" );
|
||||||
|
DRC_ITEM DRC_ITEM::heading_signal_integrity( 0, _( "Signal Integrity" ), "" );
|
||||||
|
DRC_ITEM DRC_ITEM::heading_misc( 0, _( "Miscellaneous" ), "" );
|
||||||
|
|
||||||
DRC_ITEM DRC_ITEM::unconnectedItems( DRCE_UNCONNECTED_ITEMS,
|
DRC_ITEM DRC_ITEM::unconnectedItems( DRCE_UNCONNECTED_ITEMS,
|
||||||
_( "Unconnected items" ),
|
_( "Unconnected items" ),
|
||||||
wxT( "unconnected_items" ) );
|
wxT( "unconnected_items" ) );
|
||||||
|
@ -110,10 +117,6 @@ DRC_ITEM DRC_ITEM::microviaDrillTooSmall( DRCE_TOO_SMALL_MICROVIA_DRILL,
|
||||||
_( "Micro via drill too small" ),
|
_( "Micro via drill too small" ),
|
||||||
wxT( "microvia_drill_too_small" ) );
|
wxT( "microvia_drill_too_small" ) );
|
||||||
|
|
||||||
DRC_ITEM DRC_ITEM::keepout( DRCE_KEEPOUT,
|
|
||||||
_( "Keepout violation" ),
|
|
||||||
wxT( "keepout" ) );
|
|
||||||
|
|
||||||
DRC_ITEM DRC_ITEM::courtyardsOverlap( DRCE_OVERLAPPING_FOOTPRINTS,
|
DRC_ITEM DRC_ITEM::courtyardsOverlap( DRCE_OVERLAPPING_FOOTPRINTS,
|
||||||
_( "Courtyards overlap" ),
|
_( "Courtyards overlap" ),
|
||||||
wxT( "courtyards_overlap" ) );
|
wxT( "courtyards_overlap" ) );
|
||||||
|
@ -191,43 +194,51 @@ DRC_ITEM DRC_ITEM::diffPairUncoupledLengthTooLong( DRCE_DIFF_PAIR_UNCOUPLED_LENG
|
||||||
wxT( "diff_pair_uncoupled_length_too_long" ) );
|
wxT( "diff_pair_uncoupled_length_too_long" ) );
|
||||||
|
|
||||||
std::vector<std::reference_wrapper<RC_ITEM>> DRC_ITEM::allItemTypes( {
|
std::vector<std::reference_wrapper<RC_ITEM>> DRC_ITEM::allItemTypes( {
|
||||||
DRC_ITEM::unconnectedItems,
|
DRC_ITEM::heading_electrical,
|
||||||
DRC_ITEM::shortingItems,
|
DRC_ITEM::shortingItems,
|
||||||
DRC_ITEM::itemsNotAllowed,
|
|
||||||
DRC_ITEM::clearance,
|
|
||||||
DRC_ITEM::tracksCrossing,
|
DRC_ITEM::tracksCrossing,
|
||||||
DRC_ITEM::copperEdgeClearance,
|
DRC_ITEM::clearance,
|
||||||
DRC_ITEM::zonesIntersect,
|
|
||||||
DRC_ITEM::zoneHasEmptyNet,
|
|
||||||
DRC_ITEM::viaDangling,
|
DRC_ITEM::viaDangling,
|
||||||
DRC_ITEM::trackDangling,
|
DRC_ITEM::trackDangling,
|
||||||
DRC_ITEM::holeNearHole,
|
|
||||||
|
DRC_ITEM::heading_DFM,
|
||||||
|
DRC_ITEM::copperEdgeClearance,
|
||||||
DRC_ITEM::holeClearance,
|
DRC_ITEM::holeClearance,
|
||||||
|
DRC_ITEM::holeNearHole,
|
||||||
DRC_ITEM::trackWidth,
|
DRC_ITEM::trackWidth,
|
||||||
DRC_ITEM::annularWidth,
|
DRC_ITEM::annularWidth,
|
||||||
DRC_ITEM::drillTooSmall,
|
DRC_ITEM::drillTooSmall,
|
||||||
DRC_ITEM::padstack,
|
|
||||||
DRC_ITEM::microviaDrillTooSmall,
|
DRC_ITEM::microviaDrillTooSmall,
|
||||||
DRC_ITEM::keepout,
|
|
||||||
DRC_ITEM::courtyardsOverlap,
|
DRC_ITEM::courtyardsOverlap,
|
||||||
DRC_ITEM::missingCourtyard,
|
DRC_ITEM::missingCourtyard,
|
||||||
DRC_ITEM::malformedCourtyard,
|
DRC_ITEM::malformedCourtyard,
|
||||||
DRC_ITEM::pthInsideCourtyard,
|
|
||||||
DRC_ITEM::npthInsideCourtyard,
|
|
||||||
DRC_ITEM::itemOnDisabledLayer,
|
|
||||||
DRC_ITEM::invalidOutline,
|
DRC_ITEM::invalidOutline,
|
||||||
|
|
||||||
|
DRC_ITEM::heading_schematic_parity,
|
||||||
DRC_ITEM::duplicateFootprints,
|
DRC_ITEM::duplicateFootprints,
|
||||||
DRC_ITEM::missingFootprint,
|
DRC_ITEM::missingFootprint,
|
||||||
DRC_ITEM::extraFootprint,
|
DRC_ITEM::extraFootprint,
|
||||||
DRC_ITEM::netConflict,
|
DRC_ITEM::netConflict,
|
||||||
DRC_ITEM::unresolvedVariable,
|
DRC_ITEM::unconnectedItems,
|
||||||
DRC_ITEM::silkOverlaps,
|
|
||||||
DRC_ITEM::silkMaskClearance,
|
DRC_ITEM::heading_signal_integrity,
|
||||||
DRC_ITEM::lengthOutOfRange,
|
DRC_ITEM::lengthOutOfRange,
|
||||||
DRC_ITEM::skewOutOfRange,
|
DRC_ITEM::skewOutOfRange,
|
||||||
DRC_ITEM::tooManyVias,
|
DRC_ITEM::tooManyVias,
|
||||||
DRC_ITEM::diffPairGapOutOfRange,
|
DRC_ITEM::diffPairGapOutOfRange,
|
||||||
DRC_ITEM::diffPairUncoupledLengthTooLong
|
DRC_ITEM::diffPairUncoupledLengthTooLong,
|
||||||
|
|
||||||
|
DRC_ITEM::heading_misc,
|
||||||
|
DRC_ITEM::itemsNotAllowed,
|
||||||
|
DRC_ITEM::silkOverlaps,
|
||||||
|
DRC_ITEM::silkMaskClearance,
|
||||||
|
DRC_ITEM::zonesIntersect,
|
||||||
|
DRC_ITEM::zoneHasEmptyNet,
|
||||||
|
DRC_ITEM::padstack,
|
||||||
|
DRC_ITEM::pthInsideCourtyard,
|
||||||
|
DRC_ITEM::npthInsideCourtyard,
|
||||||
|
DRC_ITEM::itemOnDisabledLayer,
|
||||||
|
DRC_ITEM::unresolvedVariable,
|
||||||
} );
|
} );
|
||||||
|
|
||||||
|
|
||||||
|
@ -253,7 +264,6 @@ std::shared_ptr<DRC_ITEM> DRC_ITEM::Create( int aErrorCode )
|
||||||
case DRCE_VIA_DIAMETER: return std::make_shared<DRC_ITEM>( viaDiameter );
|
case DRCE_VIA_DIAMETER: return std::make_shared<DRC_ITEM>( viaDiameter );
|
||||||
case DRCE_PADSTACK: return std::make_shared<DRC_ITEM>( padstack );
|
case DRCE_PADSTACK: return std::make_shared<DRC_ITEM>( padstack );
|
||||||
case DRCE_TOO_SMALL_MICROVIA_DRILL: return std::make_shared<DRC_ITEM>( microviaDrillTooSmall );
|
case DRCE_TOO_SMALL_MICROVIA_DRILL: return std::make_shared<DRC_ITEM>( microviaDrillTooSmall );
|
||||||
case DRCE_KEEPOUT: return std::make_shared<DRC_ITEM>( keepout );
|
|
||||||
case DRCE_OVERLAPPING_FOOTPRINTS: return std::make_shared<DRC_ITEM>( courtyardsOverlap );
|
case DRCE_OVERLAPPING_FOOTPRINTS: return std::make_shared<DRC_ITEM>( courtyardsOverlap );
|
||||||
case DRCE_MISSING_COURTYARD: return std::make_shared<DRC_ITEM>( missingCourtyard );
|
case DRCE_MISSING_COURTYARD: return std::make_shared<DRC_ITEM>( missingCourtyard );
|
||||||
case DRCE_MALFORMED_COURTYARD: return std::make_shared<DRC_ITEM>( malformedCourtyard );
|
case DRCE_MALFORMED_COURTYARD: return std::make_shared<DRC_ITEM>( malformedCourtyard );
|
||||||
|
|
|
@ -51,7 +51,6 @@ enum PCB_DRC_CODE {
|
||||||
DRCE_VIA_DIAMETER, // Via diameter checks (min/max)
|
DRCE_VIA_DIAMETER, // Via diameter checks (min/max)
|
||||||
DRCE_PADSTACK, // something is wrong with a pad or via stackup
|
DRCE_PADSTACK, // something is wrong with a pad or via stackup
|
||||||
DRCE_TOO_SMALL_MICROVIA_DRILL, // Too small micro via drill
|
DRCE_TOO_SMALL_MICROVIA_DRILL, // Too small micro via drill
|
||||||
DRCE_KEEPOUT, // A disallowed object is inside a keepout
|
|
||||||
DRCE_OVERLAPPING_FOOTPRINTS, // footprint courtyards overlap
|
DRCE_OVERLAPPING_FOOTPRINTS, // footprint courtyards overlap
|
||||||
DRCE_MISSING_COURTYARD, // footprint has no courtyard defined
|
DRCE_MISSING_COURTYARD, // footprint has no courtyard defined
|
||||||
DRCE_MALFORMED_COURTYARD, // footprint has a courtyard but malformed
|
DRCE_MALFORMED_COURTYARD, // footprint has a courtyard but malformed
|
||||||
|
@ -120,6 +119,12 @@ private:
|
||||||
/// A list of all DRC_ITEM types which are valid error codes
|
/// A list of all DRC_ITEM types which are valid error codes
|
||||||
static std::vector<std::reference_wrapper<RC_ITEM>> allItemTypes;
|
static std::vector<std::reference_wrapper<RC_ITEM>> allItemTypes;
|
||||||
|
|
||||||
|
static DRC_ITEM heading_electrical;
|
||||||
|
static DRC_ITEM heading_DFM;
|
||||||
|
static DRC_ITEM heading_schematic_parity;
|
||||||
|
static DRC_ITEM heading_signal_integrity;
|
||||||
|
static DRC_ITEM heading_misc;
|
||||||
|
|
||||||
static DRC_ITEM unconnectedItems;
|
static DRC_ITEM unconnectedItems;
|
||||||
static DRC_ITEM shortingItems;
|
static DRC_ITEM shortingItems;
|
||||||
static DRC_ITEM itemsNotAllowed;
|
static DRC_ITEM itemsNotAllowed;
|
||||||
|
@ -138,7 +143,6 @@ private:
|
||||||
static DRC_ITEM viaDiameter;
|
static DRC_ITEM viaDiameter;
|
||||||
static DRC_ITEM padstack;
|
static DRC_ITEM padstack;
|
||||||
static DRC_ITEM microviaDrillTooSmall;
|
static DRC_ITEM microviaDrillTooSmall;
|
||||||
static DRC_ITEM keepout;
|
|
||||||
static DRC_ITEM courtyardsOverlap;
|
static DRC_ITEM courtyardsOverlap;
|
||||||
static DRC_ITEM missingCourtyard;
|
static DRC_ITEM missingCourtyard;
|
||||||
static DRC_ITEM malformedCourtyard;
|
static DRC_ITEM malformedCourtyard;
|
||||||
|
|
Loading…
Reference in New Issue