Honour alternates when getting SCH_PIN description.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/16407
This commit is contained in:
parent
4bdd5e172c
commit
af158715e5
|
@ -1396,49 +1396,63 @@ BITMAPS LIB_PIN::GetMenuImage() const
|
|||
}
|
||||
|
||||
|
||||
wxString LIB_PIN::GetItemDescription( UNITS_PROVIDER* aUnitsProvider, ALT* aAlt ) const
|
||||
{
|
||||
return getItemDescription( aAlt );
|
||||
}
|
||||
|
||||
|
||||
wxString LIB_PIN::GetItemDescription( UNITS_PROVIDER* aUnitsProvider ) const
|
||||
{
|
||||
return getItemDescription( nullptr );
|
||||
}
|
||||
|
||||
|
||||
wxString LIB_PIN::getItemDescription( ALT* aAlt ) const
|
||||
{
|
||||
// This code previously checked "m_name.IsEmpty()" to choose the correct
|
||||
// formatting path, but that check fails if the pin is called "~" which is
|
||||
// the default for an empty pin name. Instead we get the final display string
|
||||
// that will be shown and check if it's empty.
|
||||
|
||||
wxString shownName = UnescapeString( GetShownName() );
|
||||
wxString name = UnescapeString( aAlt ? aAlt->m_Name : GetShownName() );
|
||||
wxString electricalTypeName = ElectricalPinTypeGetText( aAlt ? aAlt->m_Type : m_type );
|
||||
wxString pinShapeName = PinShapeGetText( aAlt ? aAlt->m_Shape : m_shape );
|
||||
|
||||
if( IsVisible() )
|
||||
{
|
||||
if ( !shownName.IsEmpty() )
|
||||
if ( !name.IsEmpty() )
|
||||
{
|
||||
return wxString::Format( _( "Pin %s [%s, %s, %s]" ),
|
||||
GetShownNumber(),
|
||||
shownName,
|
||||
GetElectricalTypeName(),
|
||||
PinShapeGetText( m_shape ) );
|
||||
name,
|
||||
electricalTypeName,
|
||||
pinShapeName );
|
||||
}
|
||||
else
|
||||
{
|
||||
return wxString::Format( _( "Pin %s [%s, %s]" ),
|
||||
GetShownNumber(),
|
||||
GetElectricalTypeName(),
|
||||
PinShapeGetText( m_shape ) );
|
||||
electricalTypeName,
|
||||
pinShapeName );
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if( !shownName.IsEmpty() )
|
||||
if( !name.IsEmpty() )
|
||||
{
|
||||
return wxString::Format( _( "Hidden pin %s [%s, %s, %s]" ),
|
||||
GetShownNumber(),
|
||||
shownName,
|
||||
GetElectricalTypeName(),
|
||||
PinShapeGetText( m_shape ) );
|
||||
name,
|
||||
electricalTypeName,
|
||||
pinShapeName );
|
||||
}
|
||||
else
|
||||
{
|
||||
return wxString::Format( _( "Hidden pin %s [%s, %s]" ),
|
||||
GetShownNumber(),
|
||||
GetElectricalTypeName(),
|
||||
PinShapeGetText( m_shape ) );
|
||||
electricalTypeName,
|
||||
pinShapeName );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -250,6 +250,7 @@ public:
|
|||
BITMAPS GetMenuImage() const override;
|
||||
|
||||
wxString GetItemDescription( UNITS_PROVIDER* aUnitsProvider ) const override;
|
||||
wxString GetItemDescription( UNITS_PROVIDER* aUnitsProvider, ALT* aAlt ) const;
|
||||
|
||||
EDA_ITEM* Clone() const override;
|
||||
|
||||
|
@ -273,6 +274,8 @@ public:
|
|||
bool operator>( const LIB_PIN& aRhs ) const { return compare( aRhs, EQUALITY ) > 0; }
|
||||
|
||||
protected:
|
||||
wxString getItemDescription( ALT* aAlt ) const;
|
||||
|
||||
struct EXTENTS_CACHE
|
||||
{
|
||||
KIFONT::FONT* m_Font = nullptr;
|
||||
|
|
|
@ -194,9 +194,18 @@ SCH_SYMBOL* SCH_PIN::GetParentSymbol() const
|
|||
|
||||
wxString SCH_PIN::GetItemDescription( UNITS_PROVIDER* aUnitsProvider ) const
|
||||
{
|
||||
LIB_PIN::ALT localStorage;
|
||||
LIB_PIN::ALT* alt = nullptr;
|
||||
|
||||
if( !m_alt.IsEmpty() )
|
||||
{
|
||||
localStorage = m_libPin->GetAlt( m_alt );
|
||||
alt = &localStorage;
|
||||
}
|
||||
|
||||
return wxString::Format( "Symbol %s %s",
|
||||
UnescapeString( GetParentSymbol()->GetField( REFERENCE_FIELD )->GetText() ),
|
||||
m_libPin->GetItemDescription( aUnitsProvider ) );
|
||||
m_libPin->GetItemDescription( aUnitsProvider, alt ) );
|
||||
}
|
||||
|
||||
|
||||
|
|
Loading…
Reference in New Issue