Add unit & body style property access.
(It had gotten lost in SCH_ITEM/LIB_ITEM collapse, but then again the old version didn't work right anyway.) Fixes https://gitlab.com/kicad/code/kicad/-/issues/18049
This commit is contained in:
parent
59a2de7408
commit
cb76ad3206
|
@ -422,9 +422,10 @@ void SCH_SYMBOL::UpdatePins()
|
||||||
|
|
||||||
void SCH_SYMBOL::SetBodyStyle( int aBodyStyle )
|
void SCH_SYMBOL::SetBodyStyle( int aBodyStyle )
|
||||||
{
|
{
|
||||||
if( m_bodyStyle != aBodyStyle )
|
if( HasAlternateBodyStyle() && m_bodyStyle != aBodyStyle )
|
||||||
{
|
{
|
||||||
m_bodyStyle = aBodyStyle;
|
m_bodyStyle = ( m_bodyStyle == BODY_STYLE::BASE ) ? BODY_STYLE::DEMORGAN
|
||||||
|
: BODY_STYLE::BASE;
|
||||||
|
|
||||||
// The body style may have a different pin layout so the update the pin map.
|
// The body style may have a different pin layout so the update the pin map.
|
||||||
UpdatePins();
|
UpdatePins();
|
||||||
|
@ -2800,6 +2801,32 @@ static struct SCH_SYMBOL_DESC
|
||||||
NO_SETTER( SCH_SYMBOL, wxString ), &SCH_SYMBOL::GetKeyWords ),
|
NO_SETTER( SCH_SYMBOL, wxString ), &SCH_SYMBOL::GetKeyWords ),
|
||||||
groupFields );
|
groupFields );
|
||||||
|
|
||||||
|
auto multiUnit =
|
||||||
|
[=]( INSPECTABLE* aItem ) -> bool
|
||||||
|
{
|
||||||
|
if( SCH_SYMBOL* symbol = dynamic_cast<SCH_SYMBOL*>( aItem ) )
|
||||||
|
return symbol->IsMulti();
|
||||||
|
|
||||||
|
return false;
|
||||||
|
};
|
||||||
|
|
||||||
|
auto multiBodyStyle =
|
||||||
|
[=]( INSPECTABLE* aItem ) -> bool
|
||||||
|
{
|
||||||
|
if( SCH_SYMBOL* symbol = dynamic_cast<SCH_SYMBOL*>( aItem ) )
|
||||||
|
return symbol->HasAlternateBodyStyle();
|
||||||
|
|
||||||
|
return false;
|
||||||
|
};
|
||||||
|
|
||||||
|
propMgr.AddProperty( new PROPERTY<SCH_SYMBOL, int>( _HKI( "Unit" ),
|
||||||
|
&SCH_SYMBOL::SetUnitProp, &SCH_SYMBOL::GetUnitProp ) )
|
||||||
|
.SetAvailableFunc( multiUnit );
|
||||||
|
|
||||||
|
propMgr.AddProperty( new PROPERTY<SCH_SYMBOL, int>( _HKI( "Body Style" ),
|
||||||
|
&SCH_SYMBOL::SetBodyStyleProp, &SCH_SYMBOL::GetBodyStyleProp ) )
|
||||||
|
.SetAvailableFunc( multiBodyStyle );
|
||||||
|
|
||||||
const wxString groupAttributes = _HKI( "Attributes" );
|
const wxString groupAttributes = _HKI( "Attributes" );
|
||||||
|
|
||||||
propMgr.AddProperty( new PROPERTY<SYMBOL, bool>( _HKI( "Exclude From Board" ),
|
propMgr.AddProperty( new PROPERTY<SYMBOL, bool>( _HKI( "Exclude From Board" ),
|
||||||
|
|
|
@ -548,6 +548,29 @@ public:
|
||||||
{
|
{
|
||||||
SetValueFieldText( aRef );
|
SetValueFieldText( aRef );
|
||||||
}
|
}
|
||||||
|
int GetUnitProp() const
|
||||||
|
{
|
||||||
|
return GetUnitSelection( &Schematic()->CurrentSheet() );
|
||||||
|
}
|
||||||
|
void SetUnitProp( int aUnit )
|
||||||
|
{
|
||||||
|
if( aUnit < 1 )
|
||||||
|
return;
|
||||||
|
|
||||||
|
if( aUnit > GetUnitCount() )
|
||||||
|
aUnit = GetUnitCount();
|
||||||
|
|
||||||
|
SetUnitSelection( &Schematic()->CurrentSheet(), aUnit );
|
||||||
|
SetUnit( aUnit );
|
||||||
|
}
|
||||||
|
int GetBodyStyleProp() const
|
||||||
|
{
|
||||||
|
return GetBodyStyle();
|
||||||
|
}
|
||||||
|
void SetBodyStyleProp( int aBodyStyle )
|
||||||
|
{
|
||||||
|
SetBodyStyle( aBodyStyle );
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Restore fields to the original library values.
|
* Restore fields to the original library values.
|
||||||
|
|
Loading…
Reference in New Issue