Fix Bug #1381287 (CvPCB ignores the footprint filter field on aliased components)

This commit is contained in:
Fat-Zer 2015-01-02 08:52:29 +01:00 committed by jean-pierre charras
parent 45fcc04dbf
commit 846b2ae24e
2 changed files with 27 additions and 0 deletions

View File

@ -36,3 +36,5 @@ tstamps
uri uri
value value
version version
aliases
alias

View File

@ -386,6 +386,9 @@ void KICAD_NETLIST_PARSER::parseLibPartList() throw( IO_ERROR, PARSE_ERROR )
{ {
/* Parses a section like /* Parses a section like
* (libpart (lib device) (part C) * (libpart (lib device) (part C)
* (aliases
* (alias Cxx)
* (alias Cyy))
* (description "Condensateur non polarise") * (description "Condensateur non polarise")
* (footprints * (footprints
* (fp SM*) * (fp SM*)
@ -405,6 +408,7 @@ void KICAD_NETLIST_PARSER::parseLibPartList() throw( IO_ERROR, PARSE_ERROR )
wxString libName; wxString libName;
wxString libPartName; wxString libPartName;
wxArrayString footprintFilters; wxArrayString footprintFilters;
wxArrayString aliases;
// The last token read was libpart, so read the next token // The last token read was libpart, so read the next token
while( (token = NextTok()) != T_RIGHT ) while( (token = NextTok()) != T_RIGHT )
@ -443,6 +447,20 @@ void KICAD_NETLIST_PARSER::parseLibPartList() throw( IO_ERROR, PARSE_ERROR )
break; break;
case T_aliases:
while( (token = NextTok()) != T_RIGHT )
{
if( token == T_LEFT )
token = NextTok();
if( token != T_alias )
Expecting( T_alias );
NeedSYMBOLorNUMBER();
aliases.Add( FROM_UTF8( CurText() ) );
NeedRIGHT();
}
break;
default: default:
// Skip not used data (i.e all other tokens) // Skip not used data (i.e all other tokens)
skipCurrent(); skipCurrent();
@ -457,5 +475,12 @@ void KICAD_NETLIST_PARSER::parseLibPartList() throw( IO_ERROR, PARSE_ERROR )
if( component->IsLibSource( libName, libPartName ) ) if( component->IsLibSource( libName, libPartName ) )
component->SetFootprintFilters( footprintFilters ); component->SetFootprintFilters( footprintFilters );
for( unsigned jj = 0; jj < aliases.GetCount(); jj++ )
{
if( component->IsLibSource( libName, aliases[jj] ) )
component->SetFootprintFilters( footprintFilters );
}
} }
} }