Add quick DRC action for Diff Footprints.
Also makes the strings match the GUI better so people will know where to find them later. And fixes a couple of ERC items that referred to Board Setup (oops).
This commit is contained in:
parent
283770fc45
commit
37b0a5a504
|
@ -696,13 +696,13 @@ void DIALOG_ERC::OnERCItemRClick( wxDataViewEvent& aEvent )
|
|||
{
|
||||
menu.Append( 4, wxString::Format( _( "Change severity to Error for all '%s' violations" ),
|
||||
rcItem->GetErrorText() ),
|
||||
_( "Violation severities can also be edited in the Board Setup... dialog" ) );
|
||||
_( "Violation severities can also be edited in the Schematic Setup... dialog" ) );
|
||||
}
|
||||
else
|
||||
{
|
||||
menu.Append( 5, wxString::Format( _( "Change severity to Warning for all '%s' violations" ),
|
||||
rcItem->GetErrorText() ),
|
||||
_( "Violation severities can also be edited in the Board Setup... dialog" ) );
|
||||
_( "Violation severities can also be edited in the Schematic Setup... dialog" ) );
|
||||
}
|
||||
|
||||
menu.Append( 6, wxString::Format( _( "Ignore all '%s' violations" ), rcItem->GetErrorText() ),
|
||||
|
|
|
@ -596,7 +596,7 @@ void DIALOG_DRC::OnDRCItemRClick( wxDataViewEvent& aEvent )
|
|||
|| rcItem->GetErrorCode() == DRCE_HOLE_CLEARANCE
|
||||
|| rcItem->GetErrorCode() == DRCE_DRILLED_HOLES_TOO_CLOSE )
|
||||
{
|
||||
menu.Append( 3, _( "Run clearance resolution tool..." ) );
|
||||
menu.Append( 3, _( "Run Inspect > Clearance Resolution" ) );
|
||||
}
|
||||
else if( rcItem->GetErrorCode() == DRCE_TEXT_HEIGHT
|
||||
|| rcItem->GetErrorCode() == DRCE_TEXT_THICKNESS
|
||||
|
@ -608,7 +608,11 @@ void DIALOG_DRC::OnDRCItemRClick( wxDataViewEvent& aEvent )
|
|||
|| rcItem->GetErrorCode() == DRCE_MICROVIA_DRILL_OUT_OF_RANGE
|
||||
|| rcItem->GetErrorCode() == DRCE_CONNECTION_WIDTH )
|
||||
{
|
||||
menu.Append( 3, _( "Run constraints resolution tool..." ) );
|
||||
menu.Append( 3, _( "Run Inspect > Constraints Resolution" ) );
|
||||
}
|
||||
else if( rcItem->GetErrorCode() == DRCE_LIB_FOOTPRINT_MISMATCH )
|
||||
{
|
||||
menu.Append( 3, _( "Run Inspect > Diff Footprint with Library" ) );
|
||||
}
|
||||
|
||||
menu.AppendSeparator();
|
||||
|
|
|
@ -246,6 +246,14 @@ void BOARD_INSPECTION_TOOL::InspectDRCError( const std::shared_ptr<RC_ITEM>& aDR
|
|||
|
||||
wxCHECK( m_frame, /* void */ );
|
||||
|
||||
if( aDRCItem->GetErrorCode() == DRCE_LIB_FOOTPRINT_MISMATCH )
|
||||
{
|
||||
if( FOOTPRINT* footprint = dynamic_cast<FOOTPRINT*>( a ) )
|
||||
DiffFootprint( footprint );
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
DIALOG_BOOK_REPORTER* dialog = m_frame->GetInspectDrcErrorDialog();
|
||||
|
||||
wxCHECK( dialog, /* void */ );
|
||||
|
@ -1343,21 +1351,24 @@ int BOARD_INSPECTION_TOOL::DiffFootprint( const TOOL_EVENT& aEvent )
|
|||
},
|
||||
false /* ignore locked flag */ );
|
||||
|
||||
if( selection.Size() != 1 )
|
||||
{
|
||||
m_frame->ShowInfoBarError( _( "Select a footprint to diff against its library "
|
||||
"equivalent." ) );
|
||||
return 0;
|
||||
}
|
||||
if( selection.Size() == 1 )
|
||||
DiffFootprint( static_cast<FOOTPRINT*>( selection.GetItem( 0 ) ) );
|
||||
else
|
||||
m_frame->ShowInfoBarError( _( "Select a footprint to diff with its library equivalent." ) );
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
void BOARD_INSPECTION_TOOL::DiffFootprint( FOOTPRINT* aFootprint )
|
||||
{
|
||||
DIALOG_BOOK_REPORTER* dialog = m_frame->GetFootprintDiffDialog();
|
||||
|
||||
wxCHECK( dialog, 0 );
|
||||
wxCHECK( dialog, /* void */ );
|
||||
|
||||
dialog->DeleteAllPages();
|
||||
|
||||
FOOTPRINT* footprint = static_cast<FOOTPRINT*>( selection.GetItem( 0 ) );
|
||||
LIB_ID fpID = footprint->GetFPID();
|
||||
LIB_ID fpID = aFootprint->GetFPID();
|
||||
wxString libName = fpID.GetLibNickname();
|
||||
wxString fpName = fpID.GetLibItemName();
|
||||
WX_HTML_REPORT_BOX* r = nullptr;
|
||||
|
@ -1365,13 +1376,13 @@ int BOARD_INSPECTION_TOOL::DiffFootprint( const TOOL_EVENT& aEvent )
|
|||
r = dialog->AddHTMLPage( _( "Summary" ) );
|
||||
|
||||
r->Report( wxS( "<h7>" ) + _( "Board vs library diff for:" ) + wxS( "</h7>" ) );
|
||||
r->Report( wxS( "<ul><li>" ) + EscapeHTML( getItemDescription( footprint ) ) + wxS( "</li>" )
|
||||
r->Report( wxS( "<ul><li>" ) + EscapeHTML( getItemDescription( aFootprint ) ) + wxS( "</li>" )
|
||||
+ wxS( "<li>" ) + _( "Library: " ) + EscapeHTML( libName ) + wxS( "</li>" )
|
||||
+ wxS( "<li>" ) + _( "Library item: " ) + EscapeHTML( fpName ) + wxS( "</li></ul>" ) );
|
||||
|
||||
r->Report( "" );
|
||||
|
||||
PROJECT* project = footprint->GetBoard()->GetProject();
|
||||
PROJECT* project = aFootprint->GetBoard()->GetProject();
|
||||
FP_LIB_TABLE* libTable = project->PcbFootprintLibs();
|
||||
const LIB_TABLE_ROW* libTableRow = nullptr;
|
||||
|
||||
|
@ -1418,13 +1429,13 @@ int BOARD_INSPECTION_TOOL::DiffFootprint( const TOOL_EVENT& aEvent )
|
|||
}
|
||||
else
|
||||
{
|
||||
if( !footprint->FootprintNeedsUpdate( libFootprint.get(), r ) )
|
||||
if( !aFootprint->FootprintNeedsUpdate( libFootprint.get(), r ) )
|
||||
r->Report( _( "No relevant differences detected." ) );
|
||||
|
||||
wxPanel* panel = dialog->AddBlankPage( _( "Visual" ) );
|
||||
FOOTPRINT_DIFF_WIDGET* diff = constructDiffPanel( panel );
|
||||
|
||||
diff->DisplayDiff( footprint, libFootprint );
|
||||
diff->DisplayDiff( aFootprint, libFootprint );
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1432,7 +1443,6 @@ int BOARD_INSPECTION_TOOL::DiffFootprint( const TOOL_EVENT& aEvent )
|
|||
|
||||
dialog->Raise();
|
||||
dialog->Show( true );
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -90,6 +90,7 @@ public:
|
|||
int InspectConstraints( const TOOL_EVENT& aEvent );
|
||||
|
||||
int DiffFootprint( const TOOL_EVENT& aEvent );
|
||||
void DiffFootprint( FOOTPRINT* aFootprint );
|
||||
|
||||
/**
|
||||
* @return true if a net or nets to highlight have been set
|
||||
|
|
Loading…
Reference in New Issue