Accept EEschema tokens as well as netlist tokens for pintype.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/16169
This commit is contained in:
parent
4eaa0242ca
commit
0fac52dcad
|
@ -89,6 +89,39 @@ protected:
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
class PCBEXPR_PINTYPE_VALUE : public LIBEVAL::VALUE
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
PCBEXPR_PINTYPE_VALUE( const wxString& aPinTypeName ) :
|
||||||
|
LIBEVAL::VALUE( aPinTypeName )
|
||||||
|
{};
|
||||||
|
|
||||||
|
bool EqualTo( LIBEVAL::CONTEXT* aCtx, const VALUE* b ) const override
|
||||||
|
{
|
||||||
|
const wxString& thisStr = AsString();
|
||||||
|
const wxString& otherStr = b->AsString();
|
||||||
|
|
||||||
|
if( thisStr.IsSameAs( otherStr, false ) )
|
||||||
|
return true;
|
||||||
|
|
||||||
|
// Handle cases where the netlist token is different from the EEschema token
|
||||||
|
if( thisStr == wxT( "tri_state" ) )
|
||||||
|
return otherStr.IsSameAs( wxT( "Tri-state" ), false );
|
||||||
|
|
||||||
|
if( thisStr == wxT( "power_in" ) )
|
||||||
|
return otherStr.IsSameAs( wxT( "Power input" ), false );
|
||||||
|
|
||||||
|
if( thisStr == wxT( "power_out" ) )
|
||||||
|
return otherStr.IsSameAs( wxT( "Power output" ), false );
|
||||||
|
|
||||||
|
if( thisStr == wxT( "no_connect" ) )
|
||||||
|
return otherStr.IsSameAs( wxT( "Unconnected" ), false );
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
class PCBEXPR_NETCLASS_VALUE : public LIBEVAL::VALUE
|
class PCBEXPR_NETCLASS_VALUE : public LIBEVAL::VALUE
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
|
@ -184,7 +217,9 @@ LIBEVAL::VALUE* PCBEXPR_VAR_REF::GetValue( LIBEVAL::CONTEXT* aCtx )
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if( m_type == LIBEVAL::VT_NUMERIC )
|
if( m_type == LIBEVAL::VT_NUMERIC )
|
||||||
|
{
|
||||||
return new LIBEVAL::VALUE( (double) item->Get<int>( it->second ) );
|
return new LIBEVAL::VALUE( (double) item->Get<int>( it->second ) );
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
wxString str;
|
wxString str;
|
||||||
|
@ -192,7 +227,11 @@ LIBEVAL::VALUE* PCBEXPR_VAR_REF::GetValue( LIBEVAL::CONTEXT* aCtx )
|
||||||
if( !m_isEnum )
|
if( !m_isEnum )
|
||||||
{
|
{
|
||||||
str = item->Get<wxString>( it->second );
|
str = item->Get<wxString>( it->second );
|
||||||
return new LIBEVAL::VALUE( str );
|
|
||||||
|
if( it->second->Name() == wxT( "Pin Type" ) )
|
||||||
|
return new PCBEXPR_PINTYPE_VALUE( str );
|
||||||
|
else
|
||||||
|
return new LIBEVAL::VALUE( str );
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in New Issue