Fix expand variables for built-in

Allow falling back to the alternate variable definitions if the built-in
text block variables are not set.

Also push the project into variable resolution when plotting

Fixes https://gitlab.com/kicad/code/kicad/issues/11168

(cherry picked from commit c44d31fcfb)
This commit is contained in:
Seth Hillbrand 2022-03-18 16:44:48 -07:00
parent 7b82c2ba85
commit 3b6e8464c2
2 changed files with 36 additions and 11 deletions

View File

@ -94,8 +94,13 @@ bool TITLE_BLOCK::TextVarResolver( wxString* aToken, const PROJECT* aProject ) c
if( aToken->IsSameAs( wxT( "ISSUE_DATE" ) ) )
{
*aToken = GetDate();
tokenUpdated = true;
wxString ret = GetDate();
if( !ret.empty() )
{
*aToken = ret;
tokenUpdated = true;
}
}
else if( aToken->IsSameAs( wxT( "CURRENT_DATE" ) ) )
{
@ -111,18 +116,33 @@ bool TITLE_BLOCK::TextVarResolver( wxString* aToken, const PROJECT* aProject ) c
}
else if( aToken->IsSameAs( wxT( "REVISION" ) ) )
{
*aToken = GetRevision();
tokenUpdated = true;
wxString ret = GetRevision();
if( !ret.empty() )
{
*aToken = ret;
tokenUpdated = true;
}
}
else if( aToken->IsSameAs( wxT( "TITLE" ) ) )
{
*aToken = GetTitle();
tokenUpdated = true;
wxString ret = GetTitle();
if( !ret.empty() )
{
*aToken = ret;
tokenUpdated = true;
}
}
else if( aToken->IsSameAs( wxT( "COMPANY" ) ) )
{
*aToken = GetCompany();
tokenUpdated = true;
wxString ret = GetCompany();
if( !ret.empty() )
{
*aToken = ret;
tokenUpdated = true;
}
}
else if( aToken->Left( aToken->Len() - 1 ).IsSameAs( wxT( "COMMENT" ) ) )
{
@ -139,8 +159,13 @@ bool TITLE_BLOCK::TextVarResolver( wxString* aToken, const PROJECT* aProject ) c
case '7':
case '8':
case '9':
*aToken = GetComment( c - '1' );
tokenUpdated = true;
wxString ret = GetComment( c - '1' );
if( !ret.empty() )
{
*aToken = ret;
tokenUpdated = true;
}
}
}

View File

@ -806,7 +806,7 @@ void DIALOG_PLOT::Plot( wxCommandEvent& event )
};
wxString path = m_plotOpts.GetOutputDirectory();
path = ExpandTextVars( path, &textResolver, nullptr, nullptr );
path = ExpandTextVars( path, &textResolver, nullptr, board->GetProject() );
path = ExpandEnvVarSubstitutions( path, nullptr );
wxFileName outputDir = wxFileName::DirName( path );