34 for(
const wxString& token : wxSplit( aValue,
'|' ) )
36 int eqPos = token.Find(
'=' );
38 if( eqPos == wxNOT_FOUND )
41 wxString key = token.Left( eqPos ).Trim().Trim(
false );
42 wxString val = token.Mid( eqPos + 1 ).Trim().Trim(
false );
44 if( key.CmpNoCase( wxS(
"Designator" ) ) == 0 )
48 else if( key.CmpNoCase( wxS(
"UniqueId" ) ) == 0 )
52 else if( key.CmpNoCase( wxS(
"Kind" ) ) == 0 )
56 entry.
kind =
static_cast<int>( k );
58 else if( key.CmpNoCase( wxS(
"AlternatePart" ) ) == 0 )
75 bool inAlternatePart =
false;
77 for(
const wxString& token : wxSplit( aValue,
'|' ) )
79 int eqPos = token.Find(
'=' );
81 if( eqPos == wxNOT_FOUND )
84 wxString key = token.Left( eqPos ).Trim().Trim(
false );
85 wxString val = token.Mid( eqPos + 1 ).Trim().Trim(
false );
87 if( key.CmpNoCase( wxS(
"AlternatePart" ) ) == 0 )
89 inAlternatePart =
true;
99 if( inAlternatePart && !val.empty() )
109 std::vector<ALTIUM_PROJECT_VARIANT> variants;
111 wxFileConfig
config( wxEmptyString, wxEmptyString, wxEmptyString, aPrjPcbPath,
112 wxCONFIG_USE_NO_ESCAPE_CHARACTERS );
117 for(
bool more =
config.GetFirstGroup( groupname, groupid ); more;
118 more =
config.GetNextGroup( groupname, groupid ) )
120 if( !groupname.StartsWith( wxS(
"ProjectVariant" ) ) )
123 wxString numStr = groupname.Mid( 14 );
126 if( !numStr.ToLong( &num ) )
131 pv.
description =
config.Read( groupname + wxS(
"/Description" ), wxEmptyString );
134 if( pv.
name.empty() )
137 long variationCount = 0;
138 config.Read( groupname + wxS(
"/VariationCount" ), &variationCount, 0 );
140 for(
long vi = 1; vi <= variationCount; ++vi )
142 wxString key = wxString::Format( wxS(
"%s/Variation%ld" ), groupname, vi );
143 wxString value =
config.Read( key, wxEmptyString );
151 pv.
variations.push_back( std::move( entry ) );
155 variants.push_back( std::move( pv ) );
A single component variation within an Altium project variant.
std::map< wxString, wxString > alternateFields