Keep LIB_ID and LIB_PART name/library in sync
Updates LIB_ID::LibItemName field when a part is renamed and LIB_PART name when a new LIB_ID is set. Similarly, LIB_ID::LibNickName field is updated when a library set, but there is no easy way to assign library when LIB_ID::LibNickName is modified.
This commit is contained in:
parent
4c4f5ae962
commit
445ac50588
|
@ -180,7 +180,6 @@ LIB_PART::LIB_PART( const wxString& aName, PART_LIB* aLibrary ) :
|
||||||
EDA_ITEM( LIB_PART_T ),
|
EDA_ITEM( LIB_PART_T ),
|
||||||
m_me( this, null_deleter() )
|
m_me( this, null_deleter() )
|
||||||
{
|
{
|
||||||
m_library = aLibrary;
|
|
||||||
m_dateModified = 0;
|
m_dateModified = 0;
|
||||||
m_unitCount = 1;
|
m_unitCount = 1;
|
||||||
m_pinNameOffset = 40;
|
m_pinNameOffset = 40;
|
||||||
|
@ -189,8 +188,6 @@ LIB_PART::LIB_PART( const wxString& aName, PART_LIB* aLibrary ) :
|
||||||
m_showPinNumbers = true;
|
m_showPinNumbers = true;
|
||||||
m_showPinNames = true;
|
m_showPinNames = true;
|
||||||
|
|
||||||
wxASSERT( !aName.IsEmpty() );
|
|
||||||
|
|
||||||
// Add the MANDATORY_FIELDS in RAM only. These are assumed to be present
|
// Add the MANDATORY_FIELDS in RAM only. These are assumed to be present
|
||||||
// when the field editors are invoked.
|
// when the field editors are invoked.
|
||||||
m_drawings[LIB_FIELD_T].push_back( new LIB_FIELD( this, VALUE ) );
|
m_drawings[LIB_FIELD_T].push_back( new LIB_FIELD( this, VALUE ) );
|
||||||
|
@ -198,6 +195,7 @@ LIB_PART::LIB_PART( const wxString& aName, PART_LIB* aLibrary ) :
|
||||||
m_drawings[LIB_FIELD_T].push_back( new LIB_FIELD( this, FOOTPRINT ) );
|
m_drawings[LIB_FIELD_T].push_back( new LIB_FIELD( this, FOOTPRINT ) );
|
||||||
m_drawings[LIB_FIELD_T].push_back( new LIB_FIELD( this, DATASHEET ) );
|
m_drawings[LIB_FIELD_T].push_back( new LIB_FIELD( this, DATASHEET ) );
|
||||||
|
|
||||||
|
SetLib( aLibrary );
|
||||||
SetName( aName );
|
SetName( aName );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -298,13 +296,29 @@ wxString LIB_PART::SubReference( int aUnit, bool aAddSeparator )
|
||||||
|
|
||||||
void LIB_PART::SetName( const wxString& aName )
|
void LIB_PART::SetName( const wxString& aName )
|
||||||
{
|
{
|
||||||
GetValueField().SetText( aName );
|
m_libId.SetLibItemName( aName, false );
|
||||||
|
|
||||||
// The LIB_ALIAS that is the LIB_PART name has to be created so create it.
|
// The LIB_ALIAS that is the LIB_PART name has to be created so create it.
|
||||||
if( m_aliases.size() == 0 )
|
if( m_aliases.size() == 0 )
|
||||||
m_aliases.push_back( new LIB_ALIAS( aName, this ) );
|
m_aliases.push_back( new LIB_ALIAS( aName, this ) );
|
||||||
else
|
else
|
||||||
m_aliases[0]->SetName( aName );
|
m_aliases[0]->SetName( aName );
|
||||||
|
|
||||||
|
LIB_FIELD& valueField = GetValueField();
|
||||||
|
|
||||||
|
// LIB_FIELD::SetText() calls LIB_PART::SetName(),
|
||||||
|
// the following if-clause is to break an infinite loop
|
||||||
|
if( valueField.GetText() != aName )
|
||||||
|
valueField.SetText( aName );
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void LIB_PART::SetLibId( const LIB_ID& aLibId )
|
||||||
|
{
|
||||||
|
m_libId.SetLibNickname( aLibId.GetLibNickname() );
|
||||||
|
// SetName() sets LibItemName in m_libId
|
||||||
|
SetName( aLibId.GetLibItemName() );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -1656,6 +1670,15 @@ void LIB_PART::SetConversion( bool aSetConvert )
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void LIB_PART::SetLib( PART_LIB* aLibrary )
|
||||||
|
{
|
||||||
|
m_library = aLibrary;
|
||||||
|
|
||||||
|
if( aLibrary )
|
||||||
|
m_libId.SetLibNickname( aLibrary->GetName() );
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
wxArrayString LIB_PART::GetAliasNames( bool aIncludeRoot ) const
|
wxArrayString LIB_PART::GetAliasNames( bool aIncludeRoot ) const
|
||||||
{
|
{
|
||||||
wxArrayString names;
|
wxArrayString names;
|
||||||
|
|
|
@ -282,13 +282,13 @@ public:
|
||||||
const wxString& GetName() const { return m_aliases[0]->GetName(); }
|
const wxString& GetName() const { return m_aliases[0]->GetName(); }
|
||||||
|
|
||||||
const LIB_ID& GetLibId() const { return m_libId; }
|
const LIB_ID& GetLibId() const { return m_libId; }
|
||||||
void SetLibId( const LIB_ID& aLibId ) { m_libId = aLibId; }
|
void SetLibId( const LIB_ID& aLibId );
|
||||||
|
|
||||||
const wxString GetLibraryName();
|
const wxString GetLibraryName();
|
||||||
|
|
||||||
PART_LIB* GetLib() { return m_library; }
|
PART_LIB* GetLib() { return m_library; }
|
||||||
|
|
||||||
void SetLib( PART_LIB* aLibrary ) { m_library = aLibrary; }
|
void SetLib( PART_LIB* aLibrary );
|
||||||
|
|
||||||
wxArrayString GetAliasNames( bool aIncludeRoot = true ) const;
|
wxArrayString GetAliasNames( bool aIncludeRoot = true ) const;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue