Implement better sheet-path awareness for label text var resolution.
This commit is contained in:
parent
37c441a189
commit
4b0027a5d7
|
@ -190,7 +190,7 @@ wxString SCH_FIELD::GetShownText( const SCH_SHEET_PATH* aPath, int aDepth,
|
|||
std::function<bool( wxString* )> labelResolver =
|
||||
[&]( wxString* token ) -> bool
|
||||
{
|
||||
return static_cast<SCH_LABEL_BASE*>( m_parent )->ResolveTextVar( token,
|
||||
return static_cast<SCH_LABEL_BASE*>( m_parent )->ResolveTextVar( aPath, token,
|
||||
aDepth + 1 );
|
||||
};
|
||||
|
||||
|
|
|
@ -507,7 +507,8 @@ void SCH_LABEL_BASE::GetContextualTextVars( wxArrayString* aVars ) const
|
|||
}
|
||||
|
||||
|
||||
bool SCH_LABEL_BASE::ResolveTextVar( wxString* token, int aDepth ) const
|
||||
bool SCH_LABEL_BASE::ResolveTextVar( const SCH_SHEET_PATH* aPath, wxString* token,
|
||||
int aDepth ) const
|
||||
{
|
||||
static wxRegEx operatingPoint( wxT( "^"
|
||||
"OP"
|
||||
|
@ -600,9 +601,14 @@ bool SCH_LABEL_BASE::ResolveTextVar( wxString* token, int aDepth ) const
|
|||
if( sheet->ResolveTextVar( token, aDepth + 1 ) )
|
||||
return true;
|
||||
}
|
||||
else if( aPath && aPath->Last() )
|
||||
{
|
||||
if( aPath->Last()->ResolveTextVar( aPath, token, aDepth + 1 ) )
|
||||
return true;
|
||||
}
|
||||
else if( SCH_SHEET* sheet = Schematic()->CurrentSheet().Last() )
|
||||
{
|
||||
if( sheet->ResolveTextVar( token, aDepth + 1 ) )
|
||||
if( sheet->ResolveTextVar( aPath, token, aDepth + 1 ) )
|
||||
return true;
|
||||
}
|
||||
|
||||
|
@ -610,12 +616,12 @@ bool SCH_LABEL_BASE::ResolveTextVar( wxString* token, int aDepth ) const
|
|||
}
|
||||
|
||||
|
||||
wxString SCH_LABEL_BASE::GetShownText( int aDepth, bool aAllowExtraText ) const
|
||||
wxString SCH_LABEL_BASE::GetShownText( const SCH_SHEET_PATH* aPath, int aDepth, bool aAllowExtraText ) const
|
||||
{
|
||||
std::function<bool( wxString* )> textResolver =
|
||||
[&]( wxString* token ) -> bool
|
||||
{
|
||||
return ResolveTextVar( token, aDepth );
|
||||
return ResolveTextVar( aPath, token, aDepth );
|
||||
};
|
||||
|
||||
wxString text = EDA_TEXT::GetShownText();
|
||||
|
@ -1425,7 +1431,8 @@ void SCH_GLOBALLABEL::MirrorVertically( int aCenter )
|
|||
}
|
||||
|
||||
|
||||
bool SCH_GLOBALLABEL::ResolveTextVar( wxString* token, int aDepth ) const
|
||||
bool SCH_GLOBALLABEL::ResolveTextVar( const SCH_SHEET_PATH* aPath, wxString* token,
|
||||
int aDepth ) const
|
||||
{
|
||||
if( token->IsSameAs( wxT( "INTERSHEET_REFS" ) ) && Schematic() )
|
||||
{
|
||||
|
@ -1472,7 +1479,7 @@ bool SCH_GLOBALLABEL::ResolveTextVar( wxString* token, int aDepth ) const
|
|||
return true;
|
||||
}
|
||||
|
||||
return SCH_LABEL_BASE::ResolveTextVar( token, aDepth );
|
||||
return SCH_LABEL_BASE::ResolveTextVar( aPath, token, aDepth );
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -141,9 +141,15 @@ public:
|
|||
*
|
||||
* @param aDepth a counter to limit recursion and circular references.
|
||||
*/
|
||||
virtual bool ResolveTextVar( wxString* token, int aDepth ) const;
|
||||
virtual bool ResolveTextVar( const SCH_SHEET_PATH* aPath, wxString* token, int aDepth ) const;
|
||||
|
||||
wxString GetShownText( int aDepth = 0, bool aAllowExtraText = true ) const override;
|
||||
wxString GetShownText( const SCH_SHEET_PATH* aPath, int aDepth = 0,
|
||||
bool aAllowExtraText = true ) const override;
|
||||
|
||||
wxString GetShownText( int aDepth = 0, bool aAllowExtraText = true ) const override
|
||||
{
|
||||
return GetShownText( nullptr, aDepth, aAllowExtraText );
|
||||
}
|
||||
|
||||
void RunOnChildren( const std::function<void( SCH_ITEM* )>& aFunction ) override;
|
||||
|
||||
|
@ -368,7 +374,7 @@ public:
|
|||
void CreateGraphicShape( const RENDER_SETTINGS* aRenderSettings, std::vector<VECTOR2I>& aPoints,
|
||||
const VECTOR2I& aPos ) const override;
|
||||
|
||||
bool ResolveTextVar( wxString* token, int aDepth ) const override;
|
||||
bool ResolveTextVar( const SCH_SHEET_PATH* aPath, wxString* token, int aDepth ) const override;
|
||||
|
||||
bool IsConnectable() const override { return true; }
|
||||
|
||||
|
|
|
@ -128,8 +128,9 @@ public:
|
|||
return wxT( "SCH_TEXT" );
|
||||
}
|
||||
|
||||
wxString GetShownText( const SCH_SHEET_PATH* aPath, int aDepth = 0,
|
||||
bool aAllowExtraText = true ) const;
|
||||
virtual wxString GetShownText( const SCH_SHEET_PATH* aPath, int aDepth = 0,
|
||||
bool aAllowExtraText = true ) const;
|
||||
|
||||
wxString GetShownText( int aDepth = 0, bool aAllowExtraText = true ) const override
|
||||
{
|
||||
return GetShownText( nullptr, aDepth, aAllowExtraText );
|
||||
|
|
Loading…
Reference in New Issue