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
This commit is contained in:
Seth Hillbrand 2022-03-18 16:44:48 -07:00
parent d801a8689c
commit c44d31fcfb
2 changed files with 36 additions and 11 deletions

View File

@ -94,9 +94,14 @@ bool TITLE_BLOCK::TextVarResolver( wxString* aToken, const PROJECT* aProject ) c
if( aToken->IsSameAs( wxT( "ISSUE_DATE" ) ) ) if( aToken->IsSameAs( wxT( "ISSUE_DATE" ) ) )
{ {
*aToken = GetDate(); wxString ret = GetDate();
if( !ret.empty() )
{
*aToken = ret;
tokenUpdated = true; tokenUpdated = true;
} }
}
else if( aToken->IsSameAs( wxT( "CURRENT_DATE" ) ) ) else if( aToken->IsSameAs( wxT( "CURRENT_DATE" ) ) )
{ {
// We can choose different formats. Should probably be kept in sync with ISSUE_DATE // We can choose different formats. Should probably be kept in sync with ISSUE_DATE
@ -111,19 +116,34 @@ bool TITLE_BLOCK::TextVarResolver( wxString* aToken, const PROJECT* aProject ) c
} }
else if( aToken->IsSameAs( wxT( "REVISION" ) ) ) else if( aToken->IsSameAs( wxT( "REVISION" ) ) )
{ {
*aToken = GetRevision(); wxString ret = GetRevision();
if( !ret.empty() )
{
*aToken = ret;
tokenUpdated = true; tokenUpdated = true;
} }
}
else if( aToken->IsSameAs( wxT( "TITLE" ) ) ) else if( aToken->IsSameAs( wxT( "TITLE" ) ) )
{ {
*aToken = GetTitle(); wxString ret = GetTitle();
if( !ret.empty() )
{
*aToken = ret;
tokenUpdated = true; tokenUpdated = true;
} }
}
else if( aToken->IsSameAs( wxT( "COMPANY" ) ) ) else if( aToken->IsSameAs( wxT( "COMPANY" ) ) )
{ {
*aToken = GetCompany(); wxString ret = GetCompany();
if( !ret.empty() )
{
*aToken = ret;
tokenUpdated = true; tokenUpdated = true;
} }
}
else if( aToken->Left( aToken->Len() - 1 ).IsSameAs( wxT( "COMMENT" ) ) ) else if( aToken->Left( aToken->Len() - 1 ).IsSameAs( wxT( "COMMENT" ) ) )
{ {
wxChar c = aToken->Last(); wxChar c = aToken->Last();
@ -139,10 +159,15 @@ bool TITLE_BLOCK::TextVarResolver( wxString* aToken, const PROJECT* aProject ) c
case '7': case '7':
case '8': case '8':
case '9': case '9':
*aToken = GetComment( c - '1' ); wxString ret = GetComment( c - '1' );
if( !ret.empty() )
{
*aToken = ret;
tokenUpdated = true; tokenUpdated = true;
} }
} }
}
if( tokenUpdated ) if( tokenUpdated )
{ {

View File

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