Naming conventions and other cleanup.

This commit is contained in:
Jeff Young 2021-03-19 20:27:30 +00:00
parent 7a13ad7b17
commit 2e129d9b47
14 changed files with 164 additions and 213 deletions

View File

@ -135,7 +135,7 @@ void SCH_EDIT_FRAME::AnnotateSymbols( bool aAnnotateSchematic,
if( aAnnotateSchematic ) if( aAnnotateSchematic )
sheets.GetMultiUnitSymbols( lockedComponents ); sheets.GetMultiUnitSymbols( lockedComponents );
else else
GetCurrentSheet().GetMultiUnitComponents( lockedComponents ); GetCurrentSheet().GetMultiUnitSymbols( lockedComponents );
} }
// Store previous annotations for building info messages // Store previous annotations for building info messages

View File

@ -193,15 +193,15 @@ void ERC_TESTER::TestTextVars( DS_PROXY_VIEW_ITEM* aDrawingSheet )
{ {
if( item->Type() == SCH_COMPONENT_T ) if( item->Type() == SCH_COMPONENT_T )
{ {
SCH_COMPONENT* component = static_cast<SCH_COMPONENT*>( item ); SCH_COMPONENT* symbol = static_cast<SCH_COMPONENT*>( item );
for( SCH_FIELD& field : component->GetFields() ) for( SCH_FIELD& field : symbol->GetFields() )
{ {
if( unresolved( field.GetShownText() ) ) if( unresolved( field.GetShownText() ) )
{ {
wxPoint pos = field.GetPosition() - component->GetPosition(); wxPoint pos = field.GetPosition() - symbol->GetPosition();
pos = component->GetTransform().TransformCoordinate( pos ); pos = symbol->GetTransform().TransformCoordinate( pos );
pos += component->GetPosition(); pos += symbol->GetPosition();
std::shared_ptr<ERC_ITEM> ercItem = ERC_ITEM::Create( ERCE_UNRESOLVED_VARIABLE ); std::shared_ptr<ERC_ITEM> ercItem = ERC_ITEM::Create( ERCE_UNRESOLVED_VARIABLE );
ercItem->SetItems( &field ); ercItem->SetItems( &field );

View File

@ -59,7 +59,7 @@ PICKED_SYMBOL SCH_BASE_FRAME::PickSymbolFromLibBrowser( wxTopLevelWindow* aParen
if( aPreselectedLibId.IsValid() ) if( aPreselectedLibId.IsValid() )
{ {
viewer->SetSelectedLibrary( aPreselectedLibId.GetLibNickname() ); viewer->SetSelectedLibrary( aPreselectedLibId.GetLibNickname() );
viewer->SetSelectedComponent( aPreselectedLibId.GetLibItemName() ); viewer->SetSelectedSymbol( aPreselectedLibId.GetLibItemName());
} }
viewer->SetUnitAndConvert( aUnit, aConvert ); viewer->SetUnitAndConvert( aUnit, aConvert );
@ -95,7 +95,7 @@ PICKED_SYMBOL SCH_BASE_FRAME::PickSymbolFromLibTree( const SCHLIB_FILTER* aFilte
std::unique_lock<std::mutex> dialogLock( DIALOG_CHOOSE_SYMBOL::g_Mutex, std::defer_lock ); std::unique_lock<std::mutex> dialogLock( DIALOG_CHOOSE_SYMBOL::g_Mutex, std::defer_lock );
SYMBOL_LIB_TABLE* libs = Prj().SchSymbolLibTable(); SYMBOL_LIB_TABLE* libs = Prj().SchSymbolLibTable();
// One CHOOSE_COMPONENT dialog at a time. User probaby can't handle more anyway. // One DIALOG_CHOOSE_SYMBOL dialog at a time. User probaby can't handle more anyway.
if( !dialogLock.try_lock() ) if( !dialogLock.try_lock() )
return PICKED_SYMBOL(); return PICKED_SYMBOL();
@ -162,7 +162,7 @@ PICKED_SYMBOL SCH_BASE_FRAME::PickSymbolFromLibTree( const SCHLIB_FILTER* aFilte
PICKED_SYMBOL sel; PICKED_SYMBOL sel;
LIB_ID id = dlg.GetSelectedLibId( &sel.Unit ); LIB_ID id = dlg.GetSelectedLibId( &sel.Unit );
if( dlg.IsExternalBrowserSelected() ) // User requested component browser. if( dlg.IsExternalBrowserSelected() ) // User requested symbol browser.
{ {
sel = PickSymbolFromLibBrowser( this, aFilter, id, sel.Unit, sel.Convert ); sel = PickSymbolFromLibBrowser( this, aFilter, id, sel.Unit, sel.Convert );
id = sel.LibId; id = sel.LibId;
@ -195,55 +195,55 @@ PICKED_SYMBOL SCH_BASE_FRAME::PickSymbolFromLibTree( const SCHLIB_FILTER* aFilte
} }
void SCH_EDIT_FRAME::SelectUnit( SCH_COMPONENT* aComponent, int aUnit ) void SCH_EDIT_FRAME::SelectUnit( SCH_COMPONENT* aSymbol, int aUnit )
{ {
LIB_PART* part = GetLibPart( aComponent->GetLibId() ); LIB_PART* part = GetLibPart( aSymbol->GetLibId() );
if( !part ) if( !part )
return; return;
int unitCount = part->GetUnitCount(); int unitCount = part->GetUnitCount();
if( unitCount <= 1 || aComponent->GetUnit() == aUnit ) if( unitCount <= 1 || aSymbol->GetUnit() == aUnit )
return; return;
if( aUnit > unitCount ) if( aUnit > unitCount )
aUnit = unitCount; aUnit = unitCount;
STATUS_FLAGS savedFlags = aComponent->GetFlags(); STATUS_FLAGS savedFlags = aSymbol->GetFlags();
if( !aComponent->GetEditFlags() ) // No command in progress: save in undo list if( !aSymbol->GetEditFlags() ) // No command in progress: save in undo list
SaveCopyInUndoList( GetScreen(), aComponent, UNDO_REDO::CHANGED, false ); SaveCopyInUndoList( GetScreen(), aSymbol, UNDO_REDO::CHANGED, false );
/* Update the unit number. */ /* Update the unit number. */
aComponent->SetUnitSelection( &GetCurrentSheet(), aUnit ); aSymbol->SetUnitSelection( &GetCurrentSheet(), aUnit );
aComponent->SetUnit( aUnit ); aSymbol->SetUnit( aUnit );
aComponent->ClearFlags(); aSymbol->ClearFlags();
aComponent->SetFlags( savedFlags ); // Restore m_Flag modified by SetUnit() aSymbol->SetFlags( savedFlags ); // Restore m_Flag modified by SetUnit()
if( !aComponent->GetEditFlags() ) // No command in progress: update schematic if( !aSymbol->GetEditFlags() ) // No command in progress: update schematic
{ {
if( eeconfig()->m_AutoplaceFields.enable ) if( eeconfig()->m_AutoplaceFields.enable )
aComponent->AutoAutoplaceFields( GetScreen() ); aSymbol->AutoAutoplaceFields( GetScreen() );
TestDanglingEnds(); TestDanglingEnds();
UpdateItem( aComponent ); UpdateItem( aSymbol );
OnModify(); OnModify();
} }
} }
void SCH_EDIT_FRAME::ConvertPart( SCH_COMPONENT* aComponent ) void SCH_EDIT_FRAME::ConvertPart( SCH_COMPONENT* aSymbol )
{ {
if( !aComponent || !aComponent->GetPartRef() ) if( !aSymbol || !aSymbol->GetPartRef() )
return; return;
wxString msg; wxString msg;
if( !aComponent->GetPartRef()->HasConversion() ) if( !aSymbol->GetPartRef()->HasConversion() )
{ {
LIB_ID id = aComponent->GetPartRef()->GetLibId(); LIB_ID id = aSymbol->GetPartRef()->GetLibId();
msg.Printf( _( "No alternate body style found for symbol \"%s\" in library \"%s\"." ), msg.Printf( _( "No alternate body style found for symbol \"%s\" in library \"%s\"." ),
id.GetLibItemName().wx_str(), id.GetLibNickname().wx_str() ); id.GetLibItemName().wx_str(), id.GetLibNickname().wx_str() );
@ -251,27 +251,26 @@ void SCH_EDIT_FRAME::ConvertPart( SCH_COMPONENT* aComponent )
return; return;
} }
STATUS_FLAGS savedFlags = aComponent->GetFlags(); STATUS_FLAGS savedFlags = aSymbol->GetFlags();
aComponent->SetConvert( aComponent->GetConvert() + 1 ); aSymbol->SetConvert( aSymbol->GetConvert() + 1 );
// ensure m_convert = 1 or 2 // ensure m_convert = 1 or 2
// 1 = shape 1 = not converted // 1 = shape 1 = not converted
// 2 = shape 2 = first converted shape // 2 = shape 2 = first converted shape
// > 2 is not used but could be used for more shapes // > 2 is not currently supported
// like multiple shapes for a programmable component
// When m_convert = val max, return to the first shape // When m_convert = val max, return to the first shape
if( aComponent->GetConvert() > LIB_ITEM::LIB_CONVERT::DEMORGAN ) if( aSymbol->GetConvert() > LIB_ITEM::LIB_CONVERT::DEMORGAN )
aComponent->SetConvert( LIB_ITEM::LIB_CONVERT::BASE ); aSymbol->SetConvert( LIB_ITEM::LIB_CONVERT::BASE );
TestDanglingEnds(); TestDanglingEnds();
aComponent->ClearFlags(); aSymbol->ClearFlags();
aComponent->SetFlags( savedFlags ); // Restore m_flags (modified by SetConvert()) aSymbol->SetFlags( savedFlags ); // Restore m_flags (modified by SetConvert())
// If selected make sure all the now-included pins are selected // If selected make sure all the now-included pins are selected
if( aComponent->IsSelected() ) if( aSymbol->IsSelected() )
m_toolManager->RunAction( EE_ACTIONS::addItemToSel, true, aComponent ); m_toolManager->RunAction( EE_ACTIONS::addItemToSel, true, aSymbol );
UpdateItem( aComponent ); UpdateItem( aSymbol );
OnModify(); OnModify();
} }

View File

@ -748,9 +748,9 @@ public:
*/ */
void DeleteJunction( SCH_ITEM* aItem, bool aAppend = false ); void DeleteJunction( SCH_ITEM* aItem, bool aAppend = false );
void ConvertPart( SCH_COMPONENT* aComponent ); void ConvertPart( SCH_COMPONENT* aSymbol );
void SelectUnit( SCH_COMPONENT* aComponent, int aUnit ); void SelectUnit( SCH_COMPONENT* aSymbol, int aUnit );
/* Undo - redo */ /* Undo - redo */

View File

@ -667,13 +667,12 @@ void SCH_FIELD::SetPosition( const wxPoint& aPosition )
// the position relative to the parent component. // the position relative to the parent component.
if( m_parent && m_parent->Type() == SCH_COMPONENT_T ) if( m_parent && m_parent->Type() == SCH_COMPONENT_T )
{ {
SCH_COMPONENT* parentComponent = static_cast<SCH_COMPONENT*>( m_parent ); SCH_COMPONENT* parentSymbol = static_cast<SCH_COMPONENT*>( m_parent );
wxPoint relativePos = aPosition - parentComponent->GetPosition(); wxPoint relPos = aPosition - parentSymbol->GetPosition();
relativePos = parentComponent->GetTransform(). relPos = parentSymbol->GetTransform().InverseTransform().TransformCoordinate( relPos );
InverseTransform().TransformCoordinate( relativePos );
SetTextPos( relativePos + parentComponent->GetPosition() ); SetTextPos( relPos + parentSymbol->GetPosition() );
return; return;
} }
@ -685,12 +684,12 @@ wxPoint SCH_FIELD::GetPosition() const
{ {
if( m_parent && m_parent->Type() == SCH_COMPONENT_T ) if( m_parent && m_parent->Type() == SCH_COMPONENT_T )
{ {
SCH_COMPONENT* parentComponent = static_cast<SCH_COMPONENT*>( m_parent ); SCH_COMPONENT* parentSymbol = static_cast<SCH_COMPONENT*>( m_parent );
wxPoint relativePos = GetTextPos() - parentComponent->GetPosition(); wxPoint relativePos = GetTextPos() - parentSymbol->GetPosition();
relativePos = parentComponent->GetTransform().TransformCoordinate( relativePos ); relativePos = parentSymbol->GetTransform().TransformCoordinate( relativePos );
return relativePos + parentComponent->GetPosition(); return relativePos + parentSymbol->GetPosition();
} }
return GetTextPos(); return GetTextPos();

View File

@ -38,13 +38,14 @@ class LIB_FIELD;
/** /**
* SCH_FIELD * SCH_FIELD
* instances are attached to a component and provide a place for the component's value, * instances are attached to a symbol or sheet and provide a place for the component's value,
* reference designator, footprint, and user definable name-value pairs of arbitrary purpose. * reference designator, footprint, , a sheet's name, filename, and user definable name-value
* pairs of arbitrary purpose.
* *
* <ul> <li>Field 0 is reserved for the component reference.</li> * <ul> <li>Field 0 is reserved for the symbol reference.</li>
* <li>Field 1 is reserved for the component value.</li> * <li>Field 1 is reserved for the symbol value.</li>
* <li>Field 2 is reserved for the component footprint.</li> * <li>Field 2 is reserved for the symbol footprint.</li>
* <li>Field 3 is reserved for the component data sheet file.</li> * <li>Field 3 is reserved for the symbol data sheet file.</li>
* <li>Field 4 and higher are user defineable.</li></ul> * <li>Field 4 and higher are user defineable.</li></ul>
*/ */
@ -163,7 +164,7 @@ public:
* @copydoc SCH_ITEM::MirrorVertically() * @copydoc SCH_ITEM::MirrorVertically()
* *
* This overload does nothing. Fields are never mirrored alone. They are moved * This overload does nothing. Fields are never mirrored alone. They are moved
* when the parent component is mirrored. This function is only needed by the * when the parent symbol is mirrored. This function is only needed by the
* pure function of the master class. * pure function of the master class.
*/ */
void MirrorVertically( int aCenter ) override void MirrorVertically( int aCenter ) override
@ -174,7 +175,7 @@ public:
* @copydoc SCH_ITEM::MirrorHorizontally() * @copydoc SCH_ITEM::MirrorHorizontally()
* *
* This overload does nothing. Fields are never mirrored alone. They are moved * This overload does nothing. Fields are never mirrored alone. They are moved
* when the parent component is mirrored. This function is only needed by the * when the parent symbol is mirrored. This function is only needed by the
* pure function of the master class. * pure function of the master class.
*/ */
void MirrorHorizontally( int aCenter ) override void MirrorHorizontally( int aCenter ) override

View File

@ -76,7 +76,7 @@ enum SHEET_FIELD_TYPE {
* Define a sheet pin (label) used in sheets to create hierarchical schematics. * Define a sheet pin (label) used in sheets to create hierarchical schematics.
* *
* A SCH_SHEET_PIN is used to create a hierarchical sheet in the same way a * A SCH_SHEET_PIN is used to create a hierarchical sheet in the same way a
* pin is used in a component. It connects the objects in the sheet object * pin is used in a symbol. It connects the objects in the sheet object
* to the objects in the schematic page to the objects in the page that is * to the objects in the schematic page to the objects in the page that is
* represented by the sheet. In a sheet object, a SCH_SHEET_PIN must be * represented by the sheet. In a sheet object, a SCH_SHEET_PIN must be
* connected to a wire, bus, or label. In the schematic page represented by * connected to a wire, bus, or label. In the schematic page represented by
@ -261,7 +261,7 @@ public:
* and false for items moved with no reference to anchor. * and false for items moved with no reference to anchor.
* *
* Usually return true for small items (labels, junctions) and false for * Usually return true for small items (labels, junctions) and false for
* items which can be large (hierarchical sheets, components) * items which can be large (hierarchical sheets, symbols)
* *
* @return false for a hierarchical sheet * @return false for a hierarchical sheet
*/ */
@ -457,9 +457,7 @@ public:
void SwapData( SCH_ITEM* aItem ) override; void SwapData( SCH_ITEM* aItem ) override;
/** /**
* Count our own components, without the power components. * Count our own symbols, without the power symbols.
*
* @return the component count.
*/ */
int SymbolCount() const; int SymbolCount() const;

View File

@ -251,32 +251,32 @@ void SCH_SHEET_PATH::UpdateAllScreenReferences()
{ {
for( SCH_ITEM* item : LastScreen()->Items().OfType( SCH_COMPONENT_T ) ) for( SCH_ITEM* item : LastScreen()->Items().OfType( SCH_COMPONENT_T ) )
{ {
SCH_COMPONENT* component = static_cast<SCH_COMPONENT*>( item ); SCH_COMPONENT* symbol = static_cast<SCH_COMPONENT*>( item );
component->GetField( REFERENCE_FIELD )->SetText( component->GetRef( this ) ); symbol->GetField( REFERENCE_FIELD )->SetText( symbol->GetRef( this ) );
component->GetField( VALUE_FIELD )->SetText( component->GetValue( this, false ) ); symbol->GetField( VALUE_FIELD )->SetText( symbol->GetValue( this, false ) );
component->GetField( FOOTPRINT_FIELD )->SetText( component->GetFootprint( this, false ) ); symbol->GetField( FOOTPRINT_FIELD )->SetText( symbol->GetFootprint( this, false ) );
component->UpdateUnit( component->GetUnitSelection( this ) ); symbol->UpdateUnit( symbol->GetUnitSelection( this ) );
} }
} }
void SCH_SHEET_PATH::GetSymbols( SCH_REFERENCE_LIST& aReferences, bool aIncludePowerSymbols, void SCH_SHEET_PATH::GetSymbols( SCH_REFERENCE_LIST& aReferences, bool aIncludePowerSymbols,
bool aForceIncludeOrphanComponents ) const bool aForceIncludeOrphanSymbols ) const
{ {
for( SCH_ITEM* item : LastScreen()->Items().OfType( SCH_COMPONENT_T ) ) for( SCH_ITEM* item : LastScreen()->Items().OfType( SCH_COMPONENT_T ) )
{ {
SCH_COMPONENT* component = static_cast<SCH_COMPONENT*>( item ); SCH_COMPONENT* symbol = static_cast<SCH_COMPONENT*>( item );
// Skip pseudo components, which have a reference starting with #. This mainly // Skip pseudo-symbols, which have a reference starting with #. This mainly
// affects power symbols. // affects power symbols.
if( aIncludePowerSymbols || component->GetRef( this )[0] != wxT( '#' ) ) if( aIncludePowerSymbols || symbol->GetRef( this )[0] != wxT( '#' ) )
{ {
LIB_PART* part = component->GetPartRef().get(); LIB_PART* part = symbol->GetPartRef().get();
if( part || aForceIncludeOrphanComponents ) if( part || aForceIncludeOrphanSymbols )
{ {
SCH_REFERENCE schReference( component, part, *this ); SCH_REFERENCE schReference( symbol, part, *this );
schReference.SetSheetNumber( m_virtualPageNumber ); schReference.SetSheetNumber( m_virtualPageNumber );
aReferences.AddItem( schReference ); aReferences.AddItem( schReference );
@ -286,23 +286,23 @@ void SCH_SHEET_PATH::GetSymbols( SCH_REFERENCE_LIST& aReferences, bool aIncludeP
} }
void SCH_SHEET_PATH::GetMultiUnitComponents( SCH_MULTI_UNIT_REFERENCE_MAP& aRefList, void SCH_SHEET_PATH::GetMultiUnitSymbols( SCH_MULTI_UNIT_REFERENCE_MAP& aRefList,
bool aIncludePowerSymbols ) const bool aIncludePowerSymbols ) const
{ {
for( auto item : LastScreen()->Items().OfType( SCH_COMPONENT_T ) ) for( SCH_ITEM* item : LastScreen()->Items().OfType( SCH_COMPONENT_T ) )
{ {
auto component = static_cast<SCH_COMPONENT*>( item ); SCH_COMPONENT* symbol = static_cast<SCH_COMPONENT*>( item );
// Skip pseudo components, which have a reference starting with #. This mainly // Skip pseudo-symbols, which have a reference starting with #. This mainly
// affects power symbols. // affects power symbols.
if( !aIncludePowerSymbols && component->GetRef( this )[0] == wxT( '#' ) ) if( !aIncludePowerSymbols && symbol->GetRef( this )[0] == wxT( '#' ) )
continue; continue;
LIB_PART* part = component->GetPartRef().get(); LIB_PART* part = symbol->GetPartRef().get();
if( part && part->GetUnitCount() > 1 ) if( part && part->GetUnitCount() > 1 )
{ {
SCH_REFERENCE schReference = SCH_REFERENCE( component, part, *this ); SCH_REFERENCE schReference = SCH_REFERENCE( symbol, part, *this );
schReference.SetSheetNumber( m_virtualPageNumber ); schReference.SetSheetNumber( m_virtualPageNumber );
wxString reference_str = schReference.GetRef(); wxString reference_str = schReference.GetRef();
@ -602,23 +602,20 @@ void SCH_SHEET_LIST::AnnotatePowerSymbols()
// List of reference for power symbols // List of reference for power symbols
SCH_REFERENCE_LIST references; SCH_REFERENCE_LIST references;
// Map of locked components (not used, but needed by Annotate() // Map of locked symbols (not used, but needed by Annotate()
SCH_MULTI_UNIT_REFERENCE_MAP lockedComponents; SCH_MULTI_UNIT_REFERENCE_MAP lockedSymbols;
// Build the list of power components: // Build the list of power symbols:
for( SCH_SHEET_PATH& sheet : *this ) for( SCH_SHEET_PATH& sheet : *this )
{ {
for( auto item : sheet.LastScreen()->Items().OfType( SCH_COMPONENT_T ) ) for( SCH_ITEM* item : sheet.LastScreen()->Items().OfType( SCH_COMPONENT_T ) )
{ {
auto component = static_cast<SCH_COMPONENT*>( item ); SCH_COMPONENT* symbol = static_cast<SCH_COMPONENT*>( item );
LIB_PART* part = component->GetPartRef().get(); LIB_PART* part = symbol->GetPartRef().get();
if( !part || !part->IsPower() ) if( part && part->IsPower() )
continue;
if( part )
{ {
SCH_REFERENCE schReference( component, part, sheet ); SCH_REFERENCE schReference( symbol, part, sheet );
references.AddItem( schReference ); references.AddItem( schReference );
} }
} }
@ -649,12 +646,12 @@ void SCH_SHEET_LIST::AnnotatePowerSymbols()
} }
// Break full components reference in name (prefix) and number: // Break full symbol reference into name (prefix) and number:
// example: IC1 become IC, and 1 // example: IC1 become IC, and 1
references.SplitReferences(); references.SplitReferences();
// Ensure all power symbols have the reference starting by '#' // Ensure all power symbols have the reference starting by '#'
// (No sure this is really useful) // (Not sure this is really useful)
for( unsigned ii = 0; ii< references.GetCount(); ++ii ) for( unsigned ii = 0; ii< references.GetCount(); ++ii )
{ {
if( references[ii].GetRef()[0] != '#' ) if( references[ii].GetRef()[0] != '#' )
@ -665,16 +662,16 @@ void SCH_SHEET_LIST::AnnotatePowerSymbols()
} }
// Recalculate and update reference numbers in schematic // Recalculate and update reference numbers in schematic
references.Annotate( false, 0, 100, lockedComponents ); references.Annotate( false, 0, 100, lockedSymbols );
references.UpdateAnnotation(); references.UpdateAnnotation();
} }
void SCH_SHEET_LIST::GetSymbols( SCH_REFERENCE_LIST& aReferences, bool aIncludePowerSymbols, void SCH_SHEET_LIST::GetSymbols( SCH_REFERENCE_LIST& aReferences, bool aIncludePowerSymbols,
bool aForceIncludeOrphanComponents ) const bool aForceIncludeOrphanSymbols ) const
{ {
for( const SCH_SHEET_PATH& sheet : *this ) for( const SCH_SHEET_PATH& sheet : *this )
sheet.GetSymbols( aReferences, aIncludePowerSymbols, aForceIncludeOrphanComponents ); sheet.GetSymbols( aReferences, aIncludePowerSymbols, aForceIncludeOrphanSymbols );
} }
@ -684,7 +681,7 @@ void SCH_SHEET_LIST::GetMultiUnitSymbols( SCH_MULTI_UNIT_REFERENCE_MAP &aRefList
for( SCH_SHEET_PATHS::const_iterator it = begin(); it != end(); ++it ) for( SCH_SHEET_PATHS::const_iterator it = begin(); it != end(); ++it )
{ {
SCH_MULTI_UNIT_REFERENCE_MAP tempMap; SCH_MULTI_UNIT_REFERENCE_MAP tempMap;
(*it).GetMultiUnitComponents( tempMap ); ( *it ).GetMultiUnitSymbols( tempMap );
for( SCH_MULTI_UNIT_REFERENCE_MAP::value_type& pair : tempMap ) for( SCH_MULTI_UNIT_REFERENCE_MAP::value_type& pair : tempMap )
{ {
@ -692,9 +689,7 @@ void SCH_SHEET_LIST::GetMultiUnitSymbols( SCH_MULTI_UNIT_REFERENCE_MAP &aRefList
unsigned n_refs = pair.second.GetCount(); unsigned n_refs = pair.second.GetCount();
for( unsigned thisRef = 0; thisRef < n_refs; ++thisRef ) for( unsigned thisRef = 0; thisRef < n_refs; ++thisRef )
{
aRefList[pair.first].AddItem( pair.second[thisRef] ); aRefList[pair.first].AddItem( pair.second[thisRef] );
}
} }
} }
} }
@ -728,7 +723,9 @@ bool SCH_SHEET_LIST::TestForRecursion( const SCH_SHEET_LIST& aSrcSheetHierarchy,
{ {
if( at( i ).TestForRecursion( sheetPath->GetSheet( k )->GetFileName(), if( at( i ).TestForRecursion( sheetPath->GetSheet( k )->GetFileName(),
aDestFileName ) ) aDestFileName ) )
{
return true; return true;
}
} }
} }
} }
@ -841,27 +838,6 @@ std::vector<KIID_PATH> SCH_SHEET_LIST::GetPaths() const
} }
void SCH_SHEET_LIST::ReplaceLegacySheetPaths( const std::vector<KIID_PATH>& aOldSheetPaths )
{
wxCHECK( size() == aOldSheetPaths.size(), /* void */ );
for( size_t i = 0; i < size(); i++ )
{
const KIID_PATH oldSheetPath = aOldSheetPaths.at( i );
const KIID_PATH newSheetPath = at( i ).Path();
SCH_SCREEN* screen = at(i).LastScreen();
wxCHECK( screen, /* void */ );
for( SCH_ITEM* symbol : screen->Items().OfType( SCH_COMPONENT_T ) )
{
static_cast<SCH_COMPONENT*>( symbol )->ReplaceInstanceSheetPath( oldSheetPath,
newSheetPath );
}
}
}
bool SCH_SHEET_LIST::AllSheetPageNumbersEmpty() const bool SCH_SHEET_LIST::AllSheetPageNumbersEmpty() const
{ {
for( const SCH_SHEET_PATH& instance : *this ) for( const SCH_SHEET_PATH& instance : *this )

View File

@ -279,17 +279,16 @@ public:
void UpdateAllScreenReferences(); void UpdateAllScreenReferences();
/** /**
* Adds #SCH_REFERENCE object to \a aReferences for each component in the sheet. * Adds #SCH_REFERENCE object to \a aReferences for each symbol in the sheet.
* *
* @param aReferences List of references to populate. * @param aReferences List of references to populate.
* @param aIncludePowerSymbols : false to only get normal components. * @param aIncludePowerSymbols : false to only get normal symbols.
* @param aForceIncludeOrphanComponents : true to include components having no symbol found * @param aForceIncludeOrphanSymbols : true to include symbols having no symbol found in lib.
* in lib. * The normal option is false, and set to true only to
* ( orphan components) * build the full list of symbols.
* The normal option is false, and set to true only to build the full list of components.
*/ */
void GetSymbols( SCH_REFERENCE_LIST& aReferences, bool aIncludePowerSymbols = true, void GetSymbols( SCH_REFERENCE_LIST& aReferences, bool aIncludePowerSymbols = true,
bool aForceIncludeOrphanComponents = false ) const; bool aForceIncludeOrphanSymbols = false ) const;
/** /**
* Add a #SCH_REFERENCE_LIST object to \a aRefList for each same-reference set of * Add a #SCH_REFERENCE_LIST object to \a aRefList for each same-reference set of
@ -298,10 +297,10 @@ public:
* The map key for each element will be the reference designator. * The map key for each element will be the reference designator.
* *
* @param aRefList Map of reference designators to reference lists * @param aRefList Map of reference designators to reference lists
* @param aIncludePowerSymbols : false to only get normal components. * @param aIncludePowerSymbols : false to only get normal symbols.
*/ */
void GetMultiUnitComponents( SCH_MULTI_UNIT_REFERENCE_MAP &aRefList, void GetMultiUnitSymbols( SCH_MULTI_UNIT_REFERENCE_MAP &aRefList,
bool aIncludePowerSymbols = true ) const; bool aIncludePowerSymbols = true ) const;
/** /**
* Test the SCH_SHEET_PATH file names to check adding the sheet stored in the file * Test the SCH_SHEET_PATH file names to check adding the sheet stored in the file
@ -344,8 +343,8 @@ typedef SCH_SHEET_PATHS::iterator SCH_SHEET_PATHS_ITER;
* *
* #SCH_SHEET objects are not unique, there can be many sheets with the same filename and * #SCH_SHEET objects are not unique, there can be many sheets with the same filename and
* that share the same #SCH_SCREEN reference. Each The schematic file (#SCH_SCREEN) may * that share the same #SCH_SCREEN reference. Each The schematic file (#SCH_SCREEN) may
* be shared between these sheets and component references are specific to a sheet path. * be shared between these sheets and symbol references are specific to a sheet path.
* When a sheet is entered, component references and sheet page number are updated. * When a sheet is entered, symbol references and sheet page number are updated.
*/ */
class SCH_SHEET_LIST : public SCH_SHEET_PATHS class SCH_SHEET_LIST : public SCH_SHEET_PATHS
{ {
@ -393,18 +392,16 @@ public:
void AnnotatePowerSymbols(); void AnnotatePowerSymbols();
/** /**
* Add a #SCH_REFERENCE object to \a aReferences for each component in the list * Add a #SCH_REFERENCE object to \a aReferences for each symbol in the list of sheets.
* of sheets.
* *
* @param aReferences List of references to populate. * @param aReferences List of references to populate.
* @param aIncludePowerSymbols Set to false to only get normal components. * @param aIncludePowerSymbols Set to false to only get normal symbols.
* @param aForceIncludeOrphanComponents : true to include components having no symbol found * @param aForceIncludeOrphanSymbols : true to include symbols having no symbol found in lib.
* in lib. * The normal option is false, and set to true only to
* ( orphan components) * build the full list of symbols.
* The normal option is false, and set to true only to build the full list of components.
*/ */
void GetSymbols( SCH_REFERENCE_LIST& aReferences, bool aIncludePowerSymbols = true, void GetSymbols( SCH_REFERENCE_LIST& aReferences, bool aIncludePowerSymbols = true,
bool aForceIncludeOrphanComponents = false ) const; bool aForceIncludeOrphanSymbols = false ) const;
/** /**
* Add a #SCH_REFERENCE_LIST object to \a aRefList for each same-reference set of * Add a #SCH_REFERENCE_LIST object to \a aRefList for each same-reference set of
@ -412,7 +409,7 @@ public:
* reference designator. * reference designator.
* *
* @param aRefList Map of reference designators to reference lists * @param aRefList Map of reference designators to reference lists
* @param aIncludePowerSymbols Set to false to only get normal components. * @param aIncludePowerSymbols Set to false to only get normal symbols.
*/ */
void GetMultiUnitSymbols( SCH_MULTI_UNIT_REFERENCE_MAP &aRefList, void GetMultiUnitSymbols( SCH_MULTI_UNIT_REFERENCE_MAP &aRefList,
bool aIncludePowerSymbols = true ) const; bool aIncludePowerSymbols = true ) const;
@ -478,20 +475,6 @@ public:
std::vector<KIID_PATH> GetPaths() const; std::vector<KIID_PATH> GetPaths() const;
/**
* Update all of the symbol sheet paths to the sheet paths defined in \a aOldSheetPaths.
*
* @note The list of old sheet paths must be the exact same size and order as the existing
* sheet paths. This should not be an issue if no new sheets where added between the
* creation of this sheet list and \a aOldSheetPaths. This should only be called
* when updating legacy schematics to the new schematic file format. Once this
* happens, the schematic cannot be save to the legacy file format because the
* time stamp part of UUIDs are no longer guaranteed to be unique.
*
* @param aOldSheetPaths is the #SHEET_PATH_LIST to update from.
*/
void ReplaceLegacySheetPaths( const std::vector<KIID_PATH>& aOldSheetPaths );
/** /**
* Check all of the sheet instance for empty page numbers. * Check all of the sheet instance for empty page numbers.
* *

View File

@ -276,7 +276,7 @@ public:
* @param aConvert the DeMorgan variant to show * @param aConvert the DeMorgan variant to show
* @return true if the symbol defined by \a aLibId was loaded. * @return true if the symbol defined by \a aLibId was loaded.
*/ */
bool LoadSymbolAndSelectLib( const LIB_ID& aLibId, int aUnit, int aConvert ); bool LoadSymbol( const LIB_ID& aLibId, int aUnit, int aConvert );
/** /**
* Print a page. * Print a page.

View File

@ -243,7 +243,7 @@ bool SYMBOL_EDIT_FRAME::saveCurrentPart()
} }
bool SYMBOL_EDIT_FRAME::LoadSymbolAndSelectLib( const LIB_ID& aLibId, int aUnit, int aConvert ) bool SYMBOL_EDIT_FRAME::LoadSymbol( const LIB_ID& aLibId, int aUnit, int aConvert )
{ {
if( GetCurPart() && GetCurPart()->GetLibId() == aLibId if( GetCurPart() && GetCurPart()->GetLibId() == aLibId
&& GetUnit() == aUnit && GetConvert() == aConvert ) && GetUnit() == aUnit && GetConvert() == aConvert )

View File

@ -401,7 +401,7 @@ bool SYMBOL_VIEWER_FRAME::ShowModal( wxString* aSymbol, wxWindow* aParent )
else else
{ {
SetSelectedLibrary( libid.GetLibNickname() ); SetSelectedLibrary( libid.GetLibNickname() );
SetSelectedComponent( libid.GetLibItemName() ); SetSelectedSymbol( libid.GetLibItemName());
} }
} }
} }
@ -635,7 +635,7 @@ void SYMBOL_VIEWER_FRAME::ClickOnCmpList( wxCommandEvent& event )
m_selection_changed = true; m_selection_changed = true;
SetSelectedComponent( m_symbolList->GetString( ii ) ); SetSelectedSymbol( m_symbolList->GetString( ii ));
// The m_symbolList has now the focus, in order to be able to use arrow keys // The m_symbolList has now the focus, in order to be able to use arrow keys
// to navigate inside the list. // to navigate inside the list.
@ -645,16 +645,16 @@ void SYMBOL_VIEWER_FRAME::ClickOnCmpList( wxCommandEvent& event )
} }
void SYMBOL_VIEWER_FRAME::SetSelectedComponent( const wxString& aComponentName ) void SYMBOL_VIEWER_FRAME::SetSelectedSymbol( const wxString& aSymbolName )
{ {
if( m_entryName != aComponentName ) if( m_entryName != aSymbolName )
{ {
m_entryName = aComponentName; m_entryName = aSymbolName;
// Ensure the corresponding line in m_symbolList is selected // Ensure the corresponding line in m_symbolList is selected
// (which is not necessarily the case if SetSelectedComponent is called // (which is not necessarily the case if SetSelectedSymbol is called
// by another caller than ClickOnCmpList. // by another caller than ClickOnCmpList.
m_symbolList->SetStringSelection( aComponentName, true ); m_symbolList->SetStringSelection( aSymbolName, true );
DisplayLibInfos(); DisplayLibInfos();
if( m_selection_changed ) if( m_selection_changed )
@ -847,7 +847,7 @@ void SYMBOL_VIEWER_FRAME::OnSelectSymbol( wxCommandEvent& aEvent )
return; return;
SetSelectedLibrary( id.GetLibNickname() ); SetSelectedLibrary( id.GetLibNickname() );
SetSelectedComponent( id.GetLibItemName() ); SetSelectedSymbol( id.GetLibItemName() );
SetUnitAndConvert( unit, 1 ); SetUnitAndConvert( unit, 1 );
} }

View File

@ -118,17 +118,13 @@ public:
/** /**
* Set the selected library in the library window. * Set the selected library in the library window.
*
* @param aLibName name of the library to be selected.
*/ */
void SetSelectedLibrary( const wxString& aLibName ); void SetSelectedLibrary( const wxString& aLibName );
/** /**
* Set the selected component. * Set the selected component.
*
* @param aComponentName : the name of the component to be selected.
*/ */
void SetSelectedComponent( const wxString& aComponentName ); void SetSelectedSymbol( const wxString& aSymbolName );
// Accessors: // Accessors:
/** /**

View File

@ -88,27 +88,27 @@ private:
{ {
EE_SELECTION_TOOL* selTool = getToolManager()->GetTool<EE_SELECTION_TOOL>(); EE_SELECTION_TOOL* selTool = getToolManager()->GetTool<EE_SELECTION_TOOL>();
EE_SELECTION& selection = selTool->GetSelection(); EE_SELECTION& selection = selTool->GetSelection();
SCH_COMPONENT* component = dynamic_cast<SCH_COMPONENT*>( selection.Front() ); SCH_COMPONENT* symbol = dynamic_cast<SCH_COMPONENT*>( selection.Front() );
Clear(); Clear();
if( !component ) if( !symbol )
{ {
Append( ID_POPUP_SCH_UNFOLD_BUS, _( "no symbol selected" ), wxEmptyString ); Append( ID_POPUP_SCH_UNFOLD_BUS, _( "no symbol selected" ), wxEmptyString );
Enable( ID_POPUP_SCH_UNFOLD_BUS, false ); Enable( ID_POPUP_SCH_UNFOLD_BUS, false );
return; return;
} }
int unit = component->GetUnit(); int unit = symbol->GetUnit();
if( !component->GetPartRef() || component->GetPartRef()->GetUnitCount() < 2 ) if( !symbol->GetPartRef() || symbol->GetPartRef()->GetUnitCount() < 2 )
{ {
Append( ID_POPUP_SCH_UNFOLD_BUS, _( "symbol is not multi-unit" ), wxEmptyString ); Append( ID_POPUP_SCH_UNFOLD_BUS, _( "symbol is not multi-unit" ), wxEmptyString );
Enable( ID_POPUP_SCH_UNFOLD_BUS, false ); Enable( ID_POPUP_SCH_UNFOLD_BUS, false );
return; return;
} }
for( int ii = 0; ii < component->GetPartRef()->GetUnitCount(); ii++ ) for( int ii = 0; ii < symbol->GetPartRef()->GetUnitCount(); ii++ )
{ {
wxString num_unit; wxString num_unit;
num_unit.Printf( _( "Unit %s" ), LIB_PART::SubReference( ii + 1, false ) ); num_unit.Printf( _( "Unit %s" ), LIB_PART::SubReference( ii + 1, false ) );
@ -432,15 +432,15 @@ int SCH_EDIT_TOOL::Rotate( const TOOL_EVENT& aEvent )
{ {
case SCH_COMPONENT_T: case SCH_COMPONENT_T:
{ {
SCH_COMPONENT* component = static_cast<SCH_COMPONENT*>( head ); SCH_COMPONENT* symbol = static_cast<SCH_COMPONENT*>( head );
if( clockwise ) if( clockwise )
component->SetOrientation( CMP_ROTATE_CLOCKWISE ); symbol->SetOrientation( CMP_ROTATE_CLOCKWISE );
else else
component->SetOrientation( CMP_ROTATE_COUNTERCLOCKWISE ); symbol->SetOrientation( CMP_ROTATE_COUNTERCLOCKWISE );
if( m_frame->eeconfig()->m_AutoplaceFields.enable ) if( m_frame->eeconfig()->m_AutoplaceFields.enable )
component->AutoAutoplaceFields( m_frame->GetScreen() ); symbol->AutoAutoplaceFields( m_frame->GetScreen() );
break; break;
} }
@ -625,15 +625,15 @@ int SCH_EDIT_TOOL::Mirror( const TOOL_EVENT& aEvent )
{ {
case SCH_COMPONENT_T: case SCH_COMPONENT_T:
{ {
SCH_COMPONENT* component = static_cast<SCH_COMPONENT*>( item ); SCH_COMPONENT* symbol = static_cast<SCH_COMPONENT*>( item );
if( vertical ) if( vertical )
component->SetOrientation( CMP_MIRROR_X ); symbol->SetOrientation( CMP_MIRROR_X );
else else
component->SetOrientation( CMP_MIRROR_Y ); symbol->SetOrientation( CMP_MIRROR_Y );
if( m_frame->eeconfig()->m_AutoplaceFields.enable ) if( m_frame->eeconfig()->m_AutoplaceFields.enable )
component->AutoAutoplaceFields( m_frame->GetScreen() ); symbol->AutoAutoplaceFields( m_frame->GetScreen() );
break; break;
} }
@ -869,10 +869,10 @@ int SCH_EDIT_TOOL::Duplicate( const TOOL_EVENT& aEvent )
case SCH_COMPONENT_T: case SCH_COMPONENT_T:
{ {
SCH_COMPONENT* component = (SCH_COMPONENT*) newItem; SCH_COMPONENT* symbol = (SCH_COMPONENT*) newItem;
component->ClearAnnotation( NULL ); symbol->ClearAnnotation( NULL );
component->SetParent( m_frame->GetScreen() ); symbol->SetParent( m_frame->GetScreen() );
m_frame->AddToScreen( component, m_frame->GetScreen() ); m_frame->AddToScreen( symbol, m_frame->GetScreen() );
break; break;
} }
@ -884,7 +884,7 @@ int SCH_EDIT_TOOL::Duplicate( const TOOL_EVENT& aEvent )
if( copiedSheets ) if( copiedSheets )
{ {
// We clear annotation of new sheet paths. // We clear annotation of new sheet paths.
// Annotation of new components added in current sheet is already cleared. // Annotation of new symbols added in current sheet is already cleared.
SCH_SCREENS screensList( &m_frame->Schematic().Root() ); SCH_SCREENS screensList( &m_frame->Schematic().Root() );
screensList.ClearAnnotationOfNewSheetPaths( initial_sheetpathList ); screensList.ClearAnnotationOfNewSheetPaths( initial_sheetpathList );
m_frame->SetSheetNumberAndCount(); m_frame->SetSheetNumberAndCount();
@ -910,7 +910,7 @@ int SCH_EDIT_TOOL::RepeatDrawItem( const TOOL_EVENT& aEvent )
SCH_ITEM* newItem = sourceItem->Duplicate(); SCH_ITEM* newItem = sourceItem->Duplicate();
bool performDrag = false; bool performDrag = false;
// If cloning a component then put into 'move' mode. // If cloning a symbol then put into 'move' mode.
if( newItem->Type() == SCH_COMPONENT_T ) if( newItem->Type() == SCH_COMPONENT_T )
{ {
wxPoint cursorPos = (wxPoint) getViewControls()->GetCursorPosition( true ); wxPoint cursorPos = (wxPoint) getViewControls()->GetCursorPosition( true );
@ -955,7 +955,7 @@ int SCH_EDIT_TOOL::RepeatDrawItem( const TOOL_EVENT& aEvent )
m_frame->AddToScreen( newItem, m_frame->GetScreen() ); m_frame->AddToScreen( newItem, m_frame->GetScreen() );
m_frame->SaveCopyInUndoList( m_frame->GetScreen(), newItem, UNDO_REDO::NEWITEM, false ); m_frame->SaveCopyInUndoList( m_frame->GetScreen(), newItem, UNDO_REDO::NEWITEM, false );
// Components need to be handled by the move tool. The move tool will handle schematic // Symbols need to be handled by the move tool. The move tool will handle schematic
// cleanup routines // cleanup routines
if( performDrag ) if( performDrag )
m_toolMgr->RunAction( EE_ACTIONS::move, true ); m_toolMgr->RunAction( EE_ACTIONS::move, true );
@ -1173,7 +1173,7 @@ int SCH_EDIT_TOOL::DeleteItemCursor( const TOOL_EVENT& aEvent )
void SCH_EDIT_TOOL::editFieldText( SCH_FIELD* aField ) void SCH_EDIT_TOOL::editFieldText( SCH_FIELD* aField )
{ {
// Save old component in undo list if not already in edit, or moving. // Save old symbol in undo list if not already in edit, or moving.
if( aField->GetEditFlags() == 0 ) // i.e. not edited, or moved if( aField->GetEditFlags() == 0 ) // i.e. not edited, or moved
saveCopyInUndoList( aField, UNDO_REDO::CHANGED ); saveCopyInUndoList( aField, UNDO_REDO::CHANGED );
@ -1223,14 +1223,14 @@ int SCH_EDIT_TOOL::EditField( const TOOL_EVENT& aEvent )
if( item->Type() == SCH_COMPONENT_T ) if( item->Type() == SCH_COMPONENT_T )
{ {
SCH_COMPONENT* component = (SCH_COMPONENT*) item; SCH_COMPONENT* symbol = (SCH_COMPONENT*) item;
if( aEvent.IsAction( &EE_ACTIONS::editReference ) ) if( aEvent.IsAction( &EE_ACTIONS::editReference ) )
editFieldText( component->GetField( REFERENCE_FIELD ) ); editFieldText( symbol->GetField( REFERENCE_FIELD ) );
else if( aEvent.IsAction( &EE_ACTIONS::editValue ) ) else if( aEvent.IsAction( &EE_ACTIONS::editValue ) )
editFieldText( component->GetField( VALUE_FIELD ) ); editFieldText( symbol->GetField( VALUE_FIELD ) );
else if( aEvent.IsAction( &EE_ACTIONS::editFootprint ) ) else if( aEvent.IsAction( &EE_ACTIONS::editFootprint ) )
editFieldText( component->GetField( FOOTPRINT_FIELD ) ); editFieldText( symbol->GetField( FOOTPRINT_FIELD ) );
} }
else if( item->Type() == SCH_FIELD_T ) else if( item->Type() == SCH_FIELD_T )
{ {
@ -1299,26 +1299,26 @@ int SCH_EDIT_TOOL::ConvertDeMorgan( const TOOL_EVENT& aEvent )
if( selection.Empty() ) if( selection.Empty() )
return 0; return 0;
SCH_COMPONENT* component = (SCH_COMPONENT*) selection.Front(); SCH_COMPONENT* symbol = (SCH_COMPONENT*) selection.Front();
if( aEvent.IsAction( &EE_ACTIONS::showDeMorganStandard ) if( aEvent.IsAction( &EE_ACTIONS::showDeMorganStandard )
&& component->GetConvert() == LIB_ITEM::LIB_CONVERT::BASE ) && symbol->GetConvert() == LIB_ITEM::LIB_CONVERT::BASE )
{ {
return 0; return 0;
} }
if( aEvent.IsAction( &EE_ACTIONS::showDeMorganAlternate ) if( aEvent.IsAction( &EE_ACTIONS::showDeMorganAlternate )
&& component->GetConvert() != LIB_ITEM::LIB_CONVERT::DEMORGAN ) && symbol->GetConvert() != LIB_ITEM::LIB_CONVERT::DEMORGAN )
{ {
return 0; return 0;
} }
if( !component->IsNew() ) if( !symbol->IsNew() )
saveCopyInUndoList( component, UNDO_REDO::CHANGED ); saveCopyInUndoList( symbol, UNDO_REDO::CHANGED );
m_frame->ConvertPart( component ); m_frame->ConvertPart( symbol );
if( component->IsNew() ) if( symbol->IsNew() )
m_toolMgr->RunAction( ACTIONS::refreshPreview ); m_toolMgr->RunAction( ACTIONS::refreshPreview );
if( selection.IsHover() ) if( selection.IsHover() )
@ -1374,8 +1374,8 @@ int SCH_EDIT_TOOL::Properties( const TOOL_EVENT& aEvent )
{ {
case SCH_COMPONENT_T: case SCH_COMPONENT_T:
{ {
SCH_COMPONENT* component = (SCH_COMPONENT*) item; SCH_COMPONENT* symbol = (SCH_COMPONENT*) item;
DIALOG_SYMBOL_PROPERTIES symbolPropsDialog( m_frame, component ); DIALOG_SYMBOL_PROPERTIES symbolPropsDialog( m_frame, symbol );
// This dialog itself subsequently can invoke a KIWAY_PLAYER as a quasimodal // This dialog itself subsequently can invoke a KIWAY_PLAYER as a quasimodal
// frame. Therefore this dialog as a modal frame parent, MUST be run under // frame. Therefore this dialog as a modal frame parent, MUST be run under
@ -1386,7 +1386,7 @@ int SCH_EDIT_TOOL::Properties( const TOOL_EVENT& aEvent )
if( retval == SYMBOL_PROPS_EDIT_OK ) if( retval == SYMBOL_PROPS_EDIT_OK )
{ {
if( m_frame->eeconfig()->m_AutoplaceFields.enable ) if( m_frame->eeconfig()->m_AutoplaceFields.enable )
component->AutoAutoplaceFields( m_frame->GetScreen() ); symbol->AutoAutoplaceFields( m_frame->GetScreen() );
m_toolMgr->PostEvent( EVENTS::SelectedItemsModified ); m_toolMgr->PostEvent( EVENTS::SelectedItemsModified );
m_frame->OnModify(); m_frame->OnModify();
@ -1395,7 +1395,7 @@ int SCH_EDIT_TOOL::Properties( const TOOL_EVENT& aEvent )
{ {
auto editor = (SYMBOL_EDIT_FRAME*) m_frame->Kiway().Player( FRAME_SCH_SYMBOL_EDITOR, true ); auto editor = (SYMBOL_EDIT_FRAME*) m_frame->Kiway().Player( FRAME_SCH_SYMBOL_EDITOR, true );
editor->LoadSymbolFromSchematic( component ); editor->LoadSymbolFromSchematic( symbol );
editor->Show( true ); editor->Show( true );
editor->Raise(); editor->Raise();
@ -1404,20 +1404,19 @@ int SCH_EDIT_TOOL::Properties( const TOOL_EVENT& aEvent )
{ {
auto editor = (SYMBOL_EDIT_FRAME*) m_frame->Kiway().Player( FRAME_SCH_SYMBOL_EDITOR, true ); auto editor = (SYMBOL_EDIT_FRAME*) m_frame->Kiway().Player( FRAME_SCH_SYMBOL_EDITOR, true );
editor->LoadSymbolAndSelectLib( component->GetLibId(), component->GetUnit(), editor->LoadSymbol( symbol->GetLibId(), symbol->GetUnit(), symbol->GetConvert() );
component->GetConvert() );
editor->Show( true ); editor->Show( true );
editor->Raise(); editor->Raise();
} }
else if( retval == SYMBOL_PROPS_WANT_UPDATE_SYMBOL ) else if( retval == SYMBOL_PROPS_WANT_UPDATE_SYMBOL )
{ {
DIALOG_CHANGE_SYMBOLS dlg( m_frame, component, DIALOG_CHANGE_SYMBOLS::MODE::UPDATE ); DIALOG_CHANGE_SYMBOLS dlg( m_frame, symbol, DIALOG_CHANGE_SYMBOLS::MODE::UPDATE );
dlg.ShowQuasiModal(); dlg.ShowQuasiModal();
} }
else if( retval == SYMBOL_PROPS_WANT_EXCHANGE_SYMBOL ) else if( retval == SYMBOL_PROPS_WANT_EXCHANGE_SYMBOL )
{ {
DIALOG_CHANGE_SYMBOLS dlg( m_frame, component, DIALOG_CHANGE_SYMBOLS::MODE::CHANGE ); DIALOG_CHANGE_SYMBOLS dlg( m_frame, symbol, DIALOG_CHANGE_SYMBOLS::MODE::CHANGE );
dlg.ShowQuasiModal(); dlg.ShowQuasiModal();
} }
} }
@ -1446,8 +1445,8 @@ int SCH_EDIT_TOOL::Properties( const TOOL_EVENT& aEvent )
// We clear annotation of new sheet paths here: // We clear annotation of new sheet paths here:
screensList.ClearAnnotationOfNewSheetPaths( initial_sheetpathList ); screensList.ClearAnnotationOfNewSheetPaths( initial_sheetpathList );
// Clear annotation of g_CurrentSheet itself, because its sheetpath is not a new // Clear annotation of g_CurrentSheet itself, because its sheetpath is not a new
// path, but components managed by its sheet path must have their annotation // path, but symbols managed by its sheet path must have their annotation cleared
// cleared, because they are new: // because they are new:
sheet->GetScreen()->ClearAnnotation( &m_frame->GetCurrentSheet() ); sheet->GetScreen()->ClearAnnotation( &m_frame->GetCurrentSheet() );
} }