Resolve embedded text vars

Title Block text variables are embedded into the pcb file and should
be used for resolving when the project file is missing

(cherry picked from commit d1bf889e71)
This commit is contained in:
Seth Hillbrand 2022-10-21 08:36:27 -07:00
parent 6289a82a18
commit 61d4a5bfbe
2 changed files with 11 additions and 3 deletions

View File

@ -91,6 +91,7 @@ void TITLE_BLOCK::GetContextualTextVars( wxArrayString* aVars )
bool TITLE_BLOCK::TextVarResolver( wxString* aToken, const PROJECT* aProject ) const
{
bool tokenUpdated = false;
wxString originalToken = *aToken;
if( aToken->IsSameAs( wxT( "ISSUE_DATE" ) ) )
{
@ -146,7 +147,12 @@ bool TITLE_BLOCK::TextVarResolver( wxString* aToken, const PROJECT* aProject ) c
if( tokenUpdated )
{
*aToken = ExpandTextVars( *aToken, aProject );
*aToken = ExpandTextVars( *aToken, aProject );
// This is the default fallback, so don't claim we resolved it
if( *aToken == wxT( "${" ) + originalToken + wxT( "}" ) )
return false;
return true;
}

View File

@ -239,13 +239,15 @@ std::vector<PCB_MARKER*> BOARD::ResolveDRCExclusions()
bool BOARD::ResolveTextVar( wxString* token, int aDepth ) const
{
wxString var = *token;
if( GetTitleBlock().TextVarResolver( token, m_project ) )
{
return true;
}
else if( m_properties.count( *token ) )
else if( m_properties.count( var ) )
{
*token = m_properties.at( *token );
*token = m_properties.at( var );
return true;
}