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 =
|
std::function<bool( wxString* )> labelResolver =
|
||||||
[&]( wxString* token ) -> bool
|
[&]( 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 );
|
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( "^"
|
static wxRegEx operatingPoint( wxT( "^"
|
||||||
"OP"
|
"OP"
|
||||||
|
@ -600,9 +601,14 @@ bool SCH_LABEL_BASE::ResolveTextVar( wxString* token, int aDepth ) const
|
||||||
if( sheet->ResolveTextVar( token, aDepth + 1 ) )
|
if( sheet->ResolveTextVar( token, aDepth + 1 ) )
|
||||||
return true;
|
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() )
|
else if( SCH_SHEET* sheet = Schematic()->CurrentSheet().Last() )
|
||||||
{
|
{
|
||||||
if( sheet->ResolveTextVar( token, aDepth + 1 ) )
|
if( sheet->ResolveTextVar( aPath, token, aDepth + 1 ) )
|
||||||
return true;
|
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 =
|
std::function<bool( wxString* )> textResolver =
|
||||||
[&]( wxString* token ) -> bool
|
[&]( wxString* token ) -> bool
|
||||||
{
|
{
|
||||||
return ResolveTextVar( token, aDepth );
|
return ResolveTextVar( aPath, token, aDepth );
|
||||||
};
|
};
|
||||||
|
|
||||||
wxString text = EDA_TEXT::GetShownText();
|
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() )
|
if( token->IsSameAs( wxT( "INTERSHEET_REFS" ) ) && Schematic() )
|
||||||
{
|
{
|
||||||
|
@ -1472,7 +1479,7 @@ bool SCH_GLOBALLABEL::ResolveTextVar( wxString* token, int aDepth ) const
|
||||||
return true;
|
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.
|
* @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;
|
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,
|
void CreateGraphicShape( const RENDER_SETTINGS* aRenderSettings, std::vector<VECTOR2I>& aPoints,
|
||||||
const VECTOR2I& aPos ) const override;
|
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; }
|
bool IsConnectable() const override { return true; }
|
||||||
|
|
||||||
|
|
|
@ -128,8 +128,9 @@ public:
|
||||||
return wxT( "SCH_TEXT" );
|
return wxT( "SCH_TEXT" );
|
||||||
}
|
}
|
||||||
|
|
||||||
wxString GetShownText( const SCH_SHEET_PATH* aPath, int aDepth = 0,
|
virtual wxString GetShownText( const SCH_SHEET_PATH* aPath, int aDepth = 0,
|
||||||
bool aAllowExtraText = true ) const;
|
bool aAllowExtraText = true ) const;
|
||||||
|
|
||||||
wxString GetShownText( int aDepth = 0, bool aAllowExtraText = true ) const override
|
wxString GetShownText( int aDepth = 0, bool aAllowExtraText = true ) const override
|
||||||
{
|
{
|
||||||
return GetShownText( nullptr, aDepth, aAllowExtraText );
|
return GetShownText( nullptr, aDepth, aAllowExtraText );
|
||||||
|
|
Loading…
Reference in New Issue