Browse Source

Don't try to resolve variables before the schematic is set up.

Fixes https://gitlab.com/kicad/code/kicad/issues/8746
6.0.7
Jeff Young 5 years ago
parent
commit
d51ac65349
  1. 2
      eeschema/sch_sheet.cpp
  2. 45
      eeschema/schematic.cpp

2
eeschema/sch_sheet.cpp

@ -695,7 +695,7 @@ int SCH_SHEET::CountSheets() const
if( m_screen )
{
for( auto aItem : m_screen->Items().OfType( SCH_SHEET_T ) )
for( SCH_ITEM* aItem : m_screen->Items().OfType( SCH_SHEET_T ) )
count += static_cast<SCH_SHEET*>( aItem )->CountSheets();
}

45
eeschema/schematic.cpp

@ -122,29 +122,34 @@ SCH_SCREEN* SCHEMATIC::RootScreen() const
bool SCHEMATIC::ResolveTextVar( wxString* token, int aDepth ) const
{
if( token->IsSameAs( wxT( "#" ) ) )
if( !CurrentSheet().empty() )
{
*token = CurrentSheet().GetPageNumber();
return true;
}
else if( token->IsSameAs( wxT( "##" ) ) )
{
*token = wxString::Format( "%i", Root().CountSheets() );
return true;
}
else if( token->IsSameAs( wxT( "SHEETNAME" ) ) )
{
*token = CurrentSheet().PathHumanReadable();
return true;
}
else if( token->IsSameAs( wxT( "FILENAME" ) ) )
{
wxFileName fn( GetFileName() );
*token = fn.GetFullName();
return true;
if( token->IsSameAs( wxT( "#" ) ) )
{
*token = CurrentSheet().GetPageNumber();
return true;
}
else if( token->IsSameAs( wxT( "##" ) ) )
{
*token = wxString::Format( "%i", Root().CountSheets() );
return true;
}
else if( token->IsSameAs( wxT( "SHEETNAME" ) ) )
{
*token = CurrentSheet().PathHumanReadable();
return true;
}
else if( token->IsSameAs( wxT( "FILENAME" ) ) )
{
wxFileName fn( GetFileName() );
*token = fn.GetFullName();
return true;
}
return CurrentSheet().LastScreen()->GetTitleBlock().TextVarResolver( token, m_project );
}
return CurrentSheet().LastScreen()->GetTitleBlock().TextVarResolver( token, m_project );
return false;
}

Loading…
Cancel
Save