Consistently handle env/prj variables
User-defined variables cannot be used for internally-reserved variables
Fixes https://gitlab.com/kicad/code/kicad/issues/11232
(cherry picked from commit c23679d9bd
)
This commit is contained in:
parent
6b99a937d8
commit
49c48e2fe0
|
@ -160,9 +160,8 @@ wxString DS_DRAW_ITEM_LIST::BuildFullText( const wxString& aTextbase )
|
||||||
}
|
}
|
||||||
else if( m_titleBlock )
|
else if( m_titleBlock )
|
||||||
{
|
{
|
||||||
m_titleBlock->TextVarResolver( token, m_project );
|
|
||||||
// no need for tokenUpdated; TextVarResolver() did a full resolve
|
// no need for tokenUpdated; TextVarResolver() did a full resolve
|
||||||
return true;
|
return m_titleBlock->TextVarResolver( token, m_project );
|
||||||
}
|
}
|
||||||
|
|
||||||
if( tokenUpdated )
|
if( tokenUpdated )
|
||||||
|
|
|
@ -94,13 +94,8 @@ bool TITLE_BLOCK::TextVarResolver( wxString* aToken, const PROJECT* aProject ) c
|
||||||
|
|
||||||
if( aToken->IsSameAs( wxT( "ISSUE_DATE" ) ) )
|
if( aToken->IsSameAs( wxT( "ISSUE_DATE" ) ) )
|
||||||
{
|
{
|
||||||
wxString ret = GetDate();
|
*aToken = GetDate();
|
||||||
|
tokenUpdated = true;
|
||||||
if( !ret.empty() )
|
|
||||||
{
|
|
||||||
*aToken = ret;
|
|
||||||
tokenUpdated = true;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
else if( aToken->IsSameAs( wxT( "CURRENT_DATE" ) ) )
|
else if( aToken->IsSameAs( wxT( "CURRENT_DATE" ) ) )
|
||||||
{
|
{
|
||||||
|
@ -116,33 +111,18 @@ bool TITLE_BLOCK::TextVarResolver( wxString* aToken, const PROJECT* aProject ) c
|
||||||
}
|
}
|
||||||
else if( aToken->IsSameAs( wxT( "REVISION" ) ) )
|
else if( aToken->IsSameAs( wxT( "REVISION" ) ) )
|
||||||
{
|
{
|
||||||
wxString ret = GetRevision();
|
*aToken = GetRevision();
|
||||||
|
tokenUpdated = true;
|
||||||
if( !ret.empty() )
|
|
||||||
{
|
|
||||||
*aToken = ret;
|
|
||||||
tokenUpdated = true;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
else if( aToken->IsSameAs( wxT( "TITLE" ) ) )
|
else if( aToken->IsSameAs( wxT( "TITLE" ) ) )
|
||||||
{
|
{
|
||||||
wxString ret = GetTitle();
|
*aToken = GetTitle();
|
||||||
|
tokenUpdated = true;
|
||||||
if( !ret.empty() )
|
|
||||||
{
|
|
||||||
*aToken = ret;
|
|
||||||
tokenUpdated = true;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
else if( aToken->IsSameAs( wxT( "COMPANY" ) ) )
|
else if( aToken->IsSameAs( wxT( "COMPANY" ) ) )
|
||||||
{
|
{
|
||||||
wxString ret = GetCompany();
|
*aToken = GetCompany();
|
||||||
|
tokenUpdated = true;
|
||||||
if( !ret.empty() )
|
|
||||||
{
|
|
||||||
*aToken = ret;
|
|
||||||
tokenUpdated = true;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
else if( aToken->Left( aToken->Len() - 1 ).IsSameAs( wxT( "COMMENT" ) ) )
|
else if( aToken->Left( aToken->Len() - 1 ).IsSameAs( wxT( "COMMENT" ) ) )
|
||||||
{
|
{
|
||||||
|
@ -159,13 +139,8 @@ bool TITLE_BLOCK::TextVarResolver( wxString* aToken, const PROJECT* aProject ) c
|
||||||
case '7':
|
case '7':
|
||||||
case '8':
|
case '8':
|
||||||
case '9':
|
case '9':
|
||||||
wxString ret = GetComment( c - '1' );
|
*aToken = GetComment( c - '1' );
|
||||||
|
tokenUpdated = true;
|
||||||
if( !ret.empty() )
|
|
||||||
{
|
|
||||||
*aToken = ret;
|
|
||||||
tokenUpdated = true;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1246,7 +1246,15 @@ wxString DIALOG_PLOT_SCHEMATIC::getOutputPath()
|
||||||
wxStandardPaths::Get().GetDocumentsDir() );
|
wxStandardPaths::Get().GetDocumentsDir() );
|
||||||
|
|
||||||
// Build the absolute path of current output directory to preselect it in the file browser.
|
// Build the absolute path of current output directory to preselect it in the file browser.
|
||||||
wxString path = ExpandEnvVarSubstitutions( m_outputDirectoryName->GetValue(), &Prj() );
|
std::function<bool( wxString* )> textResolver =
|
||||||
|
[&]( wxString* token ) -> bool
|
||||||
|
{
|
||||||
|
return m_parent->Schematic().ResolveTextVar( token, 0 );
|
||||||
|
};
|
||||||
|
|
||||||
|
wxString path = m_outputDirectoryName->GetValue();
|
||||||
|
path = ExpandTextVars( path, &textResolver, nullptr, &Prj() );
|
||||||
|
path = ExpandEnvVarSubstitutions( path, &Prj() );
|
||||||
|
|
||||||
fn.SetPath( path );
|
fn.SetPath( path );
|
||||||
|
|
||||||
|
|
|
@ -806,7 +806,7 @@ void DIALOG_PLOT::Plot( wxCommandEvent& event )
|
||||||
|
|
||||||
wxString path = m_plotOpts.GetOutputDirectory();
|
wxString path = m_plotOpts.GetOutputDirectory();
|
||||||
path = ExpandTextVars( path, &textResolver, nullptr, board->GetProject() );
|
path = ExpandTextVars( path, &textResolver, nullptr, board->GetProject() );
|
||||||
path = ExpandEnvVarSubstitutions( path, nullptr );
|
path = ExpandEnvVarSubstitutions( path, board->GetProject() );
|
||||||
|
|
||||||
wxFileName outputDir = wxFileName::DirName( path );
|
wxFileName outputDir = wxFileName::DirName( path );
|
||||||
wxString boardFilename = m_parent->GetBoard()->GetFileName();
|
wxString boardFilename = m_parent->GetBoard()->GetFileName();
|
||||||
|
|
Loading…
Reference in New Issue