Naming conventions (including some component -> symbol).
This commit is contained in:
parent
4e8072b8c2
commit
6e6e0aa644
|
@ -37,11 +37,11 @@ void SCH_EDIT_FRAME::mapExistingAnnotation( std::map<wxString, wxString>& aMap )
|
|||
{
|
||||
SCH_REFERENCE_LIST references;
|
||||
|
||||
Schematic().GetSheets().GetComponents( references );
|
||||
Schematic().GetSheets().GetSymbols( references );
|
||||
|
||||
for( size_t i = 0; i < references.GetCount(); i++ )
|
||||
{
|
||||
SCH_COMPONENT* comp = references[ i ].GetComp();
|
||||
SCH_COMPONENT* comp = references[ i ].GetSymbol();
|
||||
SCH_SHEET_PATH* curr_sheetpath = &references[ i ].GetSheetPath();
|
||||
KIID_PATH curr_full_uuid = curr_sheetpath->Path();
|
||||
curr_full_uuid.push_back( comp->m_Uuid );
|
||||
|
@ -133,7 +133,7 @@ void SCH_EDIT_FRAME::AnnotateComponents( bool aAnnotateSchematic,
|
|||
if( aLockUnits )
|
||||
{
|
||||
if( aAnnotateSchematic )
|
||||
sheets.GetMultiUnitComponents( lockedComponents );
|
||||
sheets.GetMultiUnitSymbols( lockedComponents );
|
||||
else
|
||||
GetCurrentSheet().GetMultiUnitComponents( lockedComponents );
|
||||
}
|
||||
|
@ -150,9 +150,9 @@ void SCH_EDIT_FRAME::AnnotateComponents( bool aAnnotateSchematic,
|
|||
|
||||
// Build component list
|
||||
if( aAnnotateSchematic )
|
||||
sheets.GetComponents( references );
|
||||
sheets.GetSymbols( references );
|
||||
else
|
||||
GetCurrentSheet().GetComponents( references );
|
||||
GetCurrentSheet().GetSymbols( references );
|
||||
|
||||
// Break full components reference in name (prefix) and number:
|
||||
// example: IC1 become IC, and 1
|
||||
|
@ -190,21 +190,21 @@ void SCH_EDIT_FRAME::AnnotateComponents( bool aAnnotateSchematic,
|
|||
for( size_t i = 0; i < references.GetCount(); i++ )
|
||||
{
|
||||
SCH_REFERENCE& ref = references[i];
|
||||
SCH_COMPONENT* comp = ref.GetComp();
|
||||
SCH_COMPONENT* symbol = ref.GetSymbol();
|
||||
SCH_SHEET_PATH* sheet = &ref.GetSheetPath();
|
||||
|
||||
SaveCopyInUndoList( sheet->LastScreen(), comp, UNDO_REDO::CHANGED, appendUndo );
|
||||
SaveCopyInUndoList( sheet->LastScreen(), symbol, UNDO_REDO::CHANGED, appendUndo );
|
||||
appendUndo = true;
|
||||
ref.Annotate();
|
||||
|
||||
KIID_PATH full_uuid = sheet->Path();
|
||||
full_uuid.push_back( comp->m_Uuid );
|
||||
full_uuid.push_back( symbol->m_Uuid );
|
||||
|
||||
wxString prevRef = previousAnnotation[ full_uuid.AsString() ];
|
||||
wxString newRef = comp->GetRef( sheet );
|
||||
wxString newRef = symbol->GetRef( sheet );
|
||||
|
||||
if( comp->GetUnitCount() > 1 )
|
||||
newRef << LIB_PART::SubReference( comp->GetUnitSelection( sheet ) );
|
||||
if( symbol->GetUnitCount() > 1 )
|
||||
newRef << LIB_PART::SubReference( symbol->GetUnitSelection( sheet ) );
|
||||
|
||||
wxString msg;
|
||||
|
||||
|
@ -213,28 +213,28 @@ void SCH_EDIT_FRAME::AnnotateComponents( bool aAnnotateSchematic,
|
|||
if( newRef == prevRef )
|
||||
continue;
|
||||
|
||||
if( comp->GetUnitCount() > 1 )
|
||||
if( symbol->GetUnitCount() > 1 )
|
||||
msg.Printf( _( "Updated %s (unit %s) from %s to %s" ),
|
||||
comp->GetValue( sheet ),
|
||||
LIB_PART::SubReference( comp->GetUnit(), false ),
|
||||
symbol->GetValue( sheet ),
|
||||
LIB_PART::SubReference( symbol->GetUnit(), false ),
|
||||
prevRef,
|
||||
newRef );
|
||||
else
|
||||
msg.Printf( _( "Updated %s from %s to %s" ),
|
||||
comp->GetValue( sheet ),
|
||||
symbol->GetValue( sheet ),
|
||||
prevRef,
|
||||
newRef );
|
||||
}
|
||||
else
|
||||
{
|
||||
if( comp->GetUnitCount() > 1 )
|
||||
if( symbol->GetUnitCount() > 1 )
|
||||
msg.Printf( _( "Annotated %s (unit %s) as %s" ),
|
||||
comp->GetValue( sheet ),
|
||||
LIB_PART::SubReference( comp->GetUnit(), false ),
|
||||
symbol->GetValue( sheet ),
|
||||
LIB_PART::SubReference( symbol->GetUnit(), false ),
|
||||
newRef );
|
||||
else
|
||||
msg.Printf( _( "Annotated %s as %s" ),
|
||||
comp->GetValue( sheet ),
|
||||
symbol->GetValue( sheet ),
|
||||
newRef );
|
||||
}
|
||||
|
||||
|
@ -260,18 +260,18 @@ void SCH_EDIT_FRAME::AnnotateComponents( bool aAnnotateSchematic,
|
|||
|
||||
int SCH_EDIT_FRAME::CheckAnnotate( REPORTER& aReporter, bool aOneSheetOnly )
|
||||
{
|
||||
SCH_REFERENCE_LIST componentsList;
|
||||
SCH_REFERENCE_LIST referenceList;
|
||||
constexpr bool includePowerSymbols = false;
|
||||
|
||||
// Build the list of components
|
||||
// Build the list of symbols
|
||||
if( !aOneSheetOnly )
|
||||
Schematic().GetSheets().GetComponents( componentsList, includePowerSymbols );
|
||||
Schematic().GetSheets().GetSymbols( referenceList, includePowerSymbols );
|
||||
else
|
||||
GetCurrentSheet().GetComponents( componentsList );
|
||||
GetCurrentSheet().GetSymbols( referenceList );
|
||||
|
||||
// Empty schematic does not need annotation
|
||||
if( componentsList.GetCount() == 0 )
|
||||
if( referenceList.GetCount() == 0 )
|
||||
return 0;
|
||||
|
||||
return componentsList.CheckAnnotation( aReporter );
|
||||
return referenceList.CheckAnnotation( aReporter );
|
||||
}
|
||||
|
|
|
@ -54,16 +54,16 @@ bool SCH_REFERENCE_LIST::sortByXPosition( const SCH_REFERENCE& item1, const SCH_
|
|||
int ii = item1.CompareRef( item2 );
|
||||
|
||||
if( ii == 0 )
|
||||
ii = item1.m_SheetNum - item2.m_SheetNum;
|
||||
ii = item1.m_sheetNum - item2.m_sheetNum;
|
||||
|
||||
if( ii == 0 )
|
||||
ii = item1.m_CmpPos.x - item2.m_CmpPos.x;
|
||||
ii = item1.m_symbolPos.x - item2.m_symbolPos.x;
|
||||
|
||||
if( ii == 0 )
|
||||
ii = item1.m_CmpPos.y - item2.m_CmpPos.y;
|
||||
ii = item1.m_symbolPos.y - item2.m_symbolPos.y;
|
||||
|
||||
if( ii == 0 )
|
||||
return item1.m_Uuid < item2.m_Uuid; // ensure a deterministic sort
|
||||
return item1.m_symbolUuid < item2.m_symbolUuid; // ensure a deterministic sort
|
||||
else
|
||||
return ii < 0;
|
||||
}
|
||||
|
@ -74,16 +74,16 @@ bool SCH_REFERENCE_LIST::sortByYPosition( const SCH_REFERENCE& item1, const SCH_
|
|||
int ii = item1.CompareRef( item2 );
|
||||
|
||||
if( ii == 0 )
|
||||
ii = item1.m_SheetNum - item2.m_SheetNum;
|
||||
ii = item1.m_sheetNum - item2.m_sheetNum;
|
||||
|
||||
if( ii == 0 )
|
||||
ii = item1.m_CmpPos.y - item2.m_CmpPos.y;
|
||||
ii = item1.m_symbolPos.y - item2.m_symbolPos.y;
|
||||
|
||||
if( ii == 0 )
|
||||
ii = item1.m_CmpPos.x - item2.m_CmpPos.x;
|
||||
ii = item1.m_symbolPos.x - item2.m_symbolPos.x;
|
||||
|
||||
if( ii == 0 )
|
||||
return item1.m_Uuid < item2.m_Uuid; // ensure a deterministic sort
|
||||
return item1.m_symbolUuid < item2.m_symbolUuid; // ensure a deterministic sort
|
||||
else
|
||||
return ii < 0;
|
||||
}
|
||||
|
@ -98,19 +98,19 @@ bool SCH_REFERENCE_LIST::sortByRefAndValue( const SCH_REFERENCE& item1,
|
|||
ii = item1.CompareValue( item2 );
|
||||
|
||||
if( ii == 0 )
|
||||
ii = item1.m_Unit - item2.m_Unit;
|
||||
ii = item1.m_unit - item2.m_unit;
|
||||
|
||||
if( ii == 0 )
|
||||
ii = item1.m_SheetNum - item2.m_SheetNum;
|
||||
ii = item1.m_sheetNum - item2.m_sheetNum;
|
||||
|
||||
if( ii == 0 )
|
||||
ii = item1.m_CmpPos.x - item2.m_CmpPos.x;
|
||||
ii = item1.m_symbolPos.x - item2.m_symbolPos.x;
|
||||
|
||||
if( ii == 0 )
|
||||
ii = item1.m_CmpPos.y - item2.m_CmpPos.y;
|
||||
ii = item1.m_symbolPos.y - item2.m_symbolPos.y;
|
||||
|
||||
if( ii == 0 )
|
||||
return item1.m_Uuid < item2.m_Uuid; // ensure a deterministic sort
|
||||
return item1.m_symbolUuid < item2.m_symbolUuid; // ensure a deterministic sort
|
||||
else
|
||||
return ii < 0;
|
||||
}
|
||||
|
@ -122,10 +122,10 @@ bool SCH_REFERENCE_LIST::sortByReferenceOnly( const SCH_REFERENCE& item1,
|
|||
int ii = UTIL::RefDesStringCompare( item1.GetRef(), item2.GetRef() );
|
||||
|
||||
if( ii == 0 )
|
||||
ii = item1.m_Unit - item2.m_Unit;
|
||||
ii = item1.m_unit - item2.m_unit;
|
||||
|
||||
if( ii == 0 )
|
||||
return item1.m_Uuid < item2.m_Uuid; // ensure a deterministic sort
|
||||
return item1.m_symbolUuid < item2.m_symbolUuid; // ensure a deterministic sort
|
||||
else
|
||||
return ii < 0;
|
||||
}
|
||||
|
@ -134,10 +134,10 @@ bool SCH_REFERENCE_LIST::sortByReferenceOnly( const SCH_REFERENCE& item1,
|
|||
bool SCH_REFERENCE_LIST::sortByTimeStamp( const SCH_REFERENCE& item1,
|
||||
const SCH_REFERENCE& item2 )
|
||||
{
|
||||
int ii = item1.m_SheetPath.Cmp( item2.m_SheetPath );
|
||||
int ii = item1.m_sheetPath.Cmp( item2.m_sheetPath );
|
||||
|
||||
if( ii == 0 )
|
||||
return item1.m_Uuid < item2.m_Uuid; // ensure a deterministic sort
|
||||
return item1.m_symbolUuid < item2.m_symbolUuid; // ensure a deterministic sort
|
||||
else
|
||||
return ii < 0;
|
||||
}
|
||||
|
@ -147,17 +147,17 @@ int SCH_REFERENCE_LIST::FindUnit( size_t aIndex, int aUnit )
|
|||
{
|
||||
int NumRef;
|
||||
|
||||
NumRef = flatList[aIndex].m_NumRef;
|
||||
NumRef = flatList[aIndex].m_numRef;
|
||||
|
||||
for( size_t ii = 0; ii < flatList.size(); ii++ )
|
||||
{
|
||||
if( ( aIndex == ii )
|
||||
|| ( flatList[ii].m_IsNew )
|
||||
|| ( flatList[ii].m_NumRef != NumRef )
|
||||
|| ( flatList[ii].m_isNew )
|
||||
|| ( flatList[ii].m_numRef != NumRef )
|
||||
|| ( flatList[aIndex].CompareRef( flatList[ii] ) != 0 ) )
|
||||
continue;
|
||||
|
||||
if( flatList[ii].m_Unit == aUnit )
|
||||
if( flatList[ii].m_unit == aUnit )
|
||||
return (int) ii;
|
||||
}
|
||||
|
||||
|
@ -195,8 +195,8 @@ void SCH_REFERENCE_LIST::GetRefsInUse( int aIndex, std::vector< int >& aIdList,
|
|||
|
||||
for( SCH_REFERENCE& ref : flatList )
|
||||
{
|
||||
if( flatList[aIndex].CompareRef( ref ) == 0 && ref.m_NumRef >= aMinRefId )
|
||||
aIdList.push_back( ref.m_NumRef );
|
||||
if( flatList[aIndex].CompareRef( ref ) == 0 && ref.m_numRef >= aMinRefId )
|
||||
aIdList.push_back( ref.m_numRef );
|
||||
}
|
||||
|
||||
sort( aIdList.begin(), aIdList.end() );
|
||||
|
@ -222,8 +222,8 @@ int SCH_REFERENCE_LIST::GetLastReference( int aIndex, int aMinValue )
|
|||
continue;
|
||||
|
||||
// update max value for the current reference prefix
|
||||
if( lastNumber < ref.m_NumRef )
|
||||
lastNumber = ref.m_NumRef;
|
||||
if( lastNumber < ref.m_numRef )
|
||||
lastNumber = ref.m_numRef;
|
||||
}
|
||||
|
||||
return lastNumber;
|
||||
|
@ -301,7 +301,7 @@ void SCH_REFERENCE_LIST::Annotate( bool aUseSheetNum, int aSheetIntervalId, int
|
|||
|
||||
// when using sheet number, ensure ref number >= sheet number* aSheetIntervalId
|
||||
if( aUseSheetNum )
|
||||
minRefId = flatList[first].m_SheetNum * aSheetIntervalId + 1;
|
||||
minRefId = flatList[first].m_sheetNum * aSheetIntervalId + 1;
|
||||
else
|
||||
minRefId = aStartNumber + 1;
|
||||
|
||||
|
@ -326,7 +326,7 @@ void SCH_REFERENCE_LIST::Annotate( bool aUseSheetNum, int aSheetIntervalId, int
|
|||
{
|
||||
auto& ref_unit = flatList[ii];
|
||||
|
||||
if( ref_unit.m_Flag )
|
||||
if( ref_unit.m_flag )
|
||||
continue;
|
||||
|
||||
// Check whether this component is in aLockedUnitMap.
|
||||
|
@ -349,14 +349,14 @@ void SCH_REFERENCE_LIST::Annotate( bool aUseSheetNum, int aSheetIntervalId, int
|
|||
}
|
||||
|
||||
if( ( flatList[first].CompareRef( ref_unit ) != 0 )
|
||||
|| ( aUseSheetNum && ( flatList[first].m_SheetNum != ref_unit.m_SheetNum ) ) )
|
||||
|| ( aUseSheetNum && ( flatList[first].m_sheetNum != ref_unit.m_sheetNum ) ) )
|
||||
{
|
||||
// New reference found: we need a new ref number for this reference
|
||||
first = ii;
|
||||
|
||||
// when using sheet number, ensure ref number >= sheet number* aSheetIntervalId
|
||||
if( aUseSheetNum )
|
||||
minRefId = ref_unit.m_SheetNum * aSheetIntervalId + 1;
|
||||
minRefId = ref_unit.m_sheetNum * aSheetIntervalId + 1;
|
||||
else
|
||||
minRefId = aStartNumber + 1;
|
||||
|
||||
|
@ -366,30 +366,30 @@ void SCH_REFERENCE_LIST::Annotate( bool aUseSheetNum, int aSheetIntervalId, int
|
|||
// Annotation of one part per package components (trivial case).
|
||||
if( ref_unit.GetLibPart()->GetUnitCount() <= 1 )
|
||||
{
|
||||
if( ref_unit.m_IsNew )
|
||||
if( ref_unit.m_isNew )
|
||||
{
|
||||
LastReferenceNumber = CreateFirstFreeRefId( idList, minRefId );
|
||||
ref_unit.m_NumRef = LastReferenceNumber;
|
||||
ref_unit.m_numRef = LastReferenceNumber;
|
||||
}
|
||||
|
||||
ref_unit.m_Unit = 1;
|
||||
ref_unit.m_Flag = 1;
|
||||
ref_unit.m_IsNew = false;
|
||||
ref_unit.m_unit = 1;
|
||||
ref_unit.m_flag = 1;
|
||||
ref_unit.m_isNew = false;
|
||||
continue;
|
||||
}
|
||||
|
||||
// Annotation of multi-unit parts ( n units per part ) (complex case)
|
||||
NumberOfUnits = ref_unit.GetLibPart()->GetUnitCount();
|
||||
|
||||
if( ref_unit.m_IsNew )
|
||||
if( ref_unit.m_isNew )
|
||||
{
|
||||
LastReferenceNumber = CreateFirstFreeRefId( idList, minRefId );
|
||||
ref_unit.m_NumRef = LastReferenceNumber;
|
||||
ref_unit.m_numRef = LastReferenceNumber;
|
||||
|
||||
if( !ref_unit.IsUnitsLocked() )
|
||||
ref_unit.m_Unit = 1;
|
||||
ref_unit.m_unit = 1;
|
||||
|
||||
ref_unit.m_Flag = 1;
|
||||
ref_unit.m_flag = 1;
|
||||
}
|
||||
|
||||
// If this component is in aLockedUnitMap, copy the annotation to all
|
||||
|
@ -405,7 +405,7 @@ void SCH_REFERENCE_LIST::Annotate( bool aUseSheetNum, int aSheetIntervalId, int
|
|||
if( thisRef.IsSameInstance( ref_unit ) )
|
||||
{
|
||||
// This is the component we're currently annotating. Hold the unit!
|
||||
ref_unit.m_Unit = thisRef.m_Unit;
|
||||
ref_unit.m_unit = thisRef.m_unit;
|
||||
// lock this new full reference
|
||||
inUseRefs.insert( buildFullReference( ref_unit ) );
|
||||
}
|
||||
|
@ -422,17 +422,17 @@ void SCH_REFERENCE_LIST::Annotate( bool aUseSheetNum, int aSheetIntervalId, int
|
|||
if( ! thisRef.IsSameInstance( flatList[jj] ) )
|
||||
continue;
|
||||
|
||||
wxString ref_candidate = buildFullReference( ref_unit, thisRef.m_Unit );
|
||||
wxString ref_candidate = buildFullReference( ref_unit, thisRef.m_unit );
|
||||
|
||||
// propagate the new reference and unit selection to the "old" component,
|
||||
// if this new full reference is not already used (can happens when initial
|
||||
// multiunits components have duplicate references)
|
||||
if( inUseRefs.find( ref_candidate ) == inUseRefs.end() )
|
||||
{
|
||||
flatList[jj].m_NumRef = ref_unit.m_NumRef;
|
||||
flatList[jj].m_Unit = thisRef.m_Unit;
|
||||
flatList[jj].m_IsNew = false;
|
||||
flatList[jj].m_Flag = 1;
|
||||
flatList[jj].m_numRef = ref_unit.m_numRef;
|
||||
flatList[jj].m_unit = thisRef.m_unit;
|
||||
flatList[jj].m_isNew = false;
|
||||
flatList[jj].m_flag = 1;
|
||||
// lock this new full reference
|
||||
inUseRefs.insert( ref_candidate );
|
||||
break;
|
||||
|
@ -448,7 +448,7 @@ void SCH_REFERENCE_LIST::Annotate( bool aUseSheetNum, int aSheetIntervalId, int
|
|||
*/
|
||||
for( Unit = 1; Unit <= NumberOfUnits; Unit++ )
|
||||
{
|
||||
if( ref_unit.m_Unit == Unit )
|
||||
if( ref_unit.m_unit == Unit )
|
||||
continue;
|
||||
|
||||
int found = FindUnit( ii, Unit );
|
||||
|
@ -461,7 +461,7 @@ void SCH_REFERENCE_LIST::Annotate( bool aUseSheetNum, int aSheetIntervalId, int
|
|||
{
|
||||
auto& cmp_unit = flatList[jj];
|
||||
|
||||
if( cmp_unit.m_Flag ) // already tested
|
||||
if( cmp_unit.m_flag ) // already tested
|
||||
continue;
|
||||
|
||||
if( cmp_unit.CompareRef( ref_unit ) != 0 )
|
||||
|
@ -477,17 +477,17 @@ void SCH_REFERENCE_LIST::Annotate( bool aUseSheetNum, int aSheetIntervalId, int
|
|||
cmp_unit.GetSheetPath().Cmp( ref_unit.GetSheetPath() ) != 0 )
|
||||
continue;
|
||||
|
||||
if( !cmp_unit.m_IsNew )
|
||||
if( !cmp_unit.m_isNew )
|
||||
continue;
|
||||
|
||||
// Component without reference number found, annotate it if possible
|
||||
if( !cmp_unit.IsUnitsLocked()
|
||||
|| ( cmp_unit.m_Unit == Unit ) )
|
||||
|| ( cmp_unit.m_unit == Unit ) )
|
||||
{
|
||||
cmp_unit.m_NumRef = ref_unit.m_NumRef;
|
||||
cmp_unit.m_Unit = Unit;
|
||||
cmp_unit.m_Flag = 1;
|
||||
cmp_unit.m_IsNew = false;
|
||||
cmp_unit.m_numRef = ref_unit.m_numRef;
|
||||
cmp_unit.m_unit = Unit;
|
||||
cmp_unit.m_flag = 1;
|
||||
cmp_unit.m_isNew = false;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@ -513,21 +513,21 @@ int SCH_REFERENCE_LIST::CheckAnnotation( REPORTER& aReporter )
|
|||
msg.Empty();
|
||||
tmp.Empty();
|
||||
|
||||
if( flatList[ii].m_IsNew ) // Not yet annotated
|
||||
if( flatList[ii].m_isNew ) // Not yet annotated
|
||||
{
|
||||
if( flatList[ii].m_NumRef >= 0 )
|
||||
tmp << flatList[ii].m_NumRef;
|
||||
if( flatList[ii].m_numRef >= 0 )
|
||||
tmp << flatList[ii].m_numRef;
|
||||
else
|
||||
tmp = wxT( "?" );
|
||||
|
||||
|
||||
if( ( flatList[ii].m_Unit > 0 )
|
||||
&& ( flatList[ii].m_Unit < 0x7FFFFFFF ) )
|
||||
if( ( flatList[ii].m_unit > 0 )
|
||||
&& ( flatList[ii].m_unit < 0x7FFFFFFF ) )
|
||||
{
|
||||
msg.Printf( _( "Item not annotated: %s%s (unit %d)\n" ),
|
||||
flatList[ii].GetRef(),
|
||||
tmp,
|
||||
flatList[ii].m_Unit );
|
||||
flatList[ii].m_unit );
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -545,17 +545,17 @@ int SCH_REFERENCE_LIST::CheckAnnotation( REPORTER& aReporter )
|
|||
// parts in the component ). This can happen if a component has changed in a
|
||||
// library after a previous annotation.
|
||||
if( std::max( flatList[ii].GetLibPart()->GetUnitCount(), 1 )
|
||||
< flatList[ii].m_Unit )
|
||||
< flatList[ii].m_unit )
|
||||
{
|
||||
if( flatList[ii].m_NumRef >= 0 )
|
||||
tmp << flatList[ii].m_NumRef;
|
||||
if( flatList[ii].m_numRef >= 0 )
|
||||
tmp << flatList[ii].m_numRef;
|
||||
else
|
||||
tmp = wxT( "?" );
|
||||
|
||||
msg.Printf( _( "Error: symbol %s%s unit %d and symbol has only %d units defined\n" ),
|
||||
flatList[ii].GetRef(),
|
||||
tmp,
|
||||
flatList[ii].m_Unit,
|
||||
flatList[ii].m_unit,
|
||||
flatList[ii].GetLibPart()->GetUnitCount() );
|
||||
|
||||
aReporter.Report( msg, RPT_SEVERITY_ERROR );
|
||||
|
@ -576,24 +576,24 @@ int SCH_REFERENCE_LIST::CheckAnnotation( REPORTER& aReporter )
|
|||
tmp.Empty();
|
||||
|
||||
if( ( flatList[ii].CompareRef( flatList[ii + 1] ) != 0 )
|
||||
|| ( flatList[ii].m_NumRef != flatList[ii + 1].m_NumRef ) )
|
||||
|| ( flatList[ii].m_numRef != flatList[ ii + 1].m_numRef ) )
|
||||
continue;
|
||||
|
||||
// Same reference found. If same unit, error!
|
||||
if( flatList[ii].m_Unit == flatList[ii + 1].m_Unit )
|
||||
if( flatList[ii].m_unit == flatList[ ii + 1].m_unit )
|
||||
{
|
||||
if( flatList[ii].m_NumRef >= 0 )
|
||||
tmp << flatList[ii].m_NumRef;
|
||||
if( flatList[ii].m_numRef >= 0 )
|
||||
tmp << flatList[ii].m_numRef;
|
||||
else
|
||||
tmp = wxT( "?" );
|
||||
|
||||
if( ( flatList[ii].m_Unit > 0 )
|
||||
&& ( flatList[ii].m_Unit < 0x7FFFFFFF ) )
|
||||
if( ( flatList[ii].m_unit > 0 )
|
||||
&& ( flatList[ii].m_unit < 0x7FFFFFFF ) )
|
||||
{
|
||||
msg.Printf( _( "Multiple item %s%s (unit %d)\n" ),
|
||||
flatList[ii].GetRef(),
|
||||
tmp,
|
||||
flatList[ii].m_Unit );
|
||||
flatList[ii].m_unit );
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -612,18 +612,18 @@ int SCH_REFERENCE_LIST::CheckAnnotation( REPORTER& aReporter )
|
|||
if( flatList[ii].GetLibPart()->GetUnitCount()
|
||||
!= flatList[ ii + 1].GetLibPart()->GetUnitCount() )
|
||||
{
|
||||
if( flatList[ii].m_NumRef >= 0 )
|
||||
tmp << flatList[ii].m_NumRef;
|
||||
if( flatList[ii].m_numRef >= 0 )
|
||||
tmp << flatList[ii].m_numRef;
|
||||
else
|
||||
tmp = wxT( "?" );
|
||||
|
||||
if( ( flatList[ii].m_Unit > 0 )
|
||||
&& ( flatList[ii].m_Unit < 0x7FFFFFFF ) )
|
||||
if( ( flatList[ii].m_unit > 0 )
|
||||
&& ( flatList[ii].m_unit < 0x7FFFFFFF ) )
|
||||
{
|
||||
msg.Printf( _( "Multiple item %s%s (unit %d)\n" ),
|
||||
flatList[ii].GetRef(),
|
||||
tmp,
|
||||
flatList[ii].m_Unit );
|
||||
flatList[ii].m_unit );
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -643,13 +643,13 @@ int SCH_REFERENCE_LIST::CheckAnnotation( REPORTER& aReporter )
|
|||
{
|
||||
msg.Printf( _( "Different values for %s%d%s (%s) and %s%d%s (%s)" ),
|
||||
flatList[ii].GetRef(),
|
||||
flatList[ii].m_NumRef,
|
||||
LIB_PART::SubReference( flatList[ii].m_Unit ),
|
||||
flatList[ii].m_Value,
|
||||
flatList[ii].m_numRef,
|
||||
LIB_PART::SubReference( flatList[ii].m_unit ),
|
||||
flatList[ii].m_value,
|
||||
flatList[next].GetRef(),
|
||||
flatList[next].m_NumRef,
|
||||
LIB_PART::SubReference( flatList[next].m_Unit ),
|
||||
flatList[next].m_Value );
|
||||
flatList[next].m_numRef,
|
||||
LIB_PART::SubReference( flatList[next].m_unit ),
|
||||
flatList[next].m_value );
|
||||
|
||||
aReporter.Report( msg, RPT_SEVERITY_ERROR );
|
||||
error++;
|
||||
|
@ -660,48 +660,48 @@ int SCH_REFERENCE_LIST::CheckAnnotation( REPORTER& aReporter )
|
|||
}
|
||||
|
||||
|
||||
SCH_REFERENCE::SCH_REFERENCE( SCH_COMPONENT* aComponent, LIB_PART* aLibPart,
|
||||
SCH_REFERENCE::SCH_REFERENCE( SCH_COMPONENT* aSymbol, LIB_PART* aLibPart,
|
||||
const SCH_SHEET_PATH& aSheetPath )
|
||||
{
|
||||
wxASSERT( aComponent != NULL );
|
||||
wxASSERT( aSymbol != NULL );
|
||||
|
||||
m_RootCmp = aComponent;
|
||||
m_Entry = aLibPart; // Warning: can be nullptr for orphan components
|
||||
m_rootSymbol = aSymbol;
|
||||
m_libPart = aLibPart; // Warning: can be nullptr for orphan components
|
||||
// (i.e. with a symbol library not found)
|
||||
m_Unit = aComponent->GetUnitSelection( &aSheetPath );
|
||||
m_Footprint = aComponent->GetFootprint( &aSheetPath );
|
||||
m_SheetPath = aSheetPath;
|
||||
m_IsNew = false;
|
||||
m_Flag = 0;
|
||||
m_Uuid = aComponent->m_Uuid;
|
||||
m_CmpPos = aComponent->GetPosition();
|
||||
m_SheetNum = 0;
|
||||
m_unit = aSymbol->GetUnitSelection( &aSheetPath );
|
||||
m_footprint = aSymbol->GetFootprint( &aSheetPath );
|
||||
m_sheetPath = aSheetPath;
|
||||
m_isNew = false;
|
||||
m_flag = 0;
|
||||
m_symbolUuid = aSymbol->m_Uuid;
|
||||
m_symbolPos = aSymbol->GetPosition();
|
||||
m_sheetNum = 0;
|
||||
|
||||
if( aComponent->GetRef( &aSheetPath ).IsEmpty() )
|
||||
aComponent->SetRef( &aSheetPath, wxT( "DefRef?" ) );
|
||||
if( aSymbol->GetRef( &aSheetPath ).IsEmpty() )
|
||||
aSymbol->SetRef( &aSheetPath, wxT( "DefRef?" ) );
|
||||
|
||||
wxString ref = aComponent->GetRef( &aSheetPath );
|
||||
wxString ref = aSymbol->GetRef( &aSheetPath );
|
||||
SetRef( ref );
|
||||
|
||||
m_NumRef = -1;
|
||||
m_numRef = -1;
|
||||
|
||||
if( aComponent->GetValue( &aSheetPath ).IsEmpty() )
|
||||
aComponent->SetValue( &aSheetPath, wxT( "~" ) );
|
||||
if( aSymbol->GetValue( &aSheetPath ).IsEmpty() )
|
||||
aSymbol->SetValue( &aSheetPath, wxT( "~" ) );
|
||||
|
||||
m_Value = aComponent->GetValue( &aSheetPath );
|
||||
m_value = aSymbol->GetValue( &aSheetPath );
|
||||
}
|
||||
|
||||
|
||||
void SCH_REFERENCE::Annotate()
|
||||
{
|
||||
if( m_NumRef < 0 )
|
||||
m_Ref += '?';
|
||||
if( m_numRef < 0 )
|
||||
m_ref += '?';
|
||||
else
|
||||
m_Ref = TO_UTF8( GetRef() << GetRefNumber() );
|
||||
m_ref = TO_UTF8( GetRef() << GetRefNumber() );
|
||||
|
||||
m_RootCmp->SetRef( &m_SheetPath, FROM_UTF8( m_Ref.c_str() ) );
|
||||
m_RootCmp->SetUnit( m_Unit );
|
||||
m_RootCmp->SetUnitSelection( &m_SheetPath, m_Unit );
|
||||
m_rootSymbol->SetRef( &m_sheetPath, FROM_UTF8( m_ref.c_str() ) );
|
||||
m_rootSymbol->SetUnit( m_unit );
|
||||
m_rootSymbol->SetUnitSelection( &m_sheetPath, m_unit );
|
||||
}
|
||||
|
||||
|
||||
|
@ -709,16 +709,16 @@ void SCH_REFERENCE::Split()
|
|||
{
|
||||
std::string refText = GetRefStr();
|
||||
|
||||
m_NumRef = -1;
|
||||
m_numRef = -1;
|
||||
|
||||
int ll = refText.length() - 1;
|
||||
|
||||
if( refText[ll] == '?' )
|
||||
{
|
||||
m_IsNew = true;
|
||||
m_isNew = true;
|
||||
|
||||
if( !IsUnitsLocked() )
|
||||
m_Unit = 0x7FFFFFFF;
|
||||
m_unit = 0x7FFFFFFF;
|
||||
|
||||
refText.erase( ll ); // delete last char
|
||||
|
||||
|
@ -726,10 +726,10 @@ void SCH_REFERENCE::Split()
|
|||
}
|
||||
else if( isdigit( refText[ll] ) == 0 )
|
||||
{
|
||||
m_IsNew = true;
|
||||
m_isNew = true;
|
||||
|
||||
if( !IsUnitsLocked() )
|
||||
m_Unit = 0x7FFFFFFF;
|
||||
m_unit = 0x7FFFFFFF;
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -744,7 +744,7 @@ void SCH_REFERENCE::Split()
|
|||
// null terminated C string into cp
|
||||
const char* cp = refText.c_str() + ll + 1;
|
||||
|
||||
m_NumRef = atoi( cp );
|
||||
m_numRef = atoi( cp );
|
||||
}
|
||||
|
||||
refText.erase( ll+1 ); // delete from ll+1 to end
|
||||
|
@ -765,13 +765,13 @@ wxString SCH_REFERENCE_LIST::Shorthand( std::vector<SCH_REFERENCE> aList )
|
|||
while( i < aList.size() )
|
||||
{
|
||||
wxString ref = aList[ i ].GetRef();
|
||||
int numRef = aList[ i ].m_NumRef;
|
||||
int numRef = aList[ i ].m_numRef;
|
||||
|
||||
size_t range = 1;
|
||||
|
||||
while( i + range < aList.size()
|
||||
&& aList[ i + range ].GetRef() == ref
|
||||
&& aList[ i + range ].m_NumRef == int( numRef + range ) )
|
||||
&& aList[ i + range ].m_numRef == int( numRef + range ) )
|
||||
{
|
||||
range++;
|
||||
}
|
||||
|
|
|
@ -411,13 +411,13 @@ void DIALOG_EDIT_COMPONENTS_LIBID::initDlg()
|
|||
SCH_REFERENCE_LIST references;
|
||||
// build the full list of components including component having no symbol in loaded libs
|
||||
// (orphan components)
|
||||
sheets.GetComponents( references, /* include power symbols */true,
|
||||
/* include orphan components */true );
|
||||
sheets.GetSymbols( references, /* include power symbols */true,
|
||||
/* include orphan components */true );
|
||||
|
||||
for( unsigned ii = 0; ii < references.GetCount(); ii++ )
|
||||
{
|
||||
SCH_REFERENCE& item = references[ii];
|
||||
CMP_CANDIDATE candidate( item.GetComp() );
|
||||
CMP_CANDIDATE candidate( item.GetSymbol() );
|
||||
candidate.m_Screen = item.GetSheetPath().LastScreen();
|
||||
SCH_SHEET_PATH sheetpath = item.GetSheetPath();
|
||||
candidate.m_Reference = candidate.m_Component->GetRef( &sheetpath );
|
||||
|
|
|
@ -246,21 +246,21 @@ void DIALOG_LABEL_EDITOR::onScintillaCharAdded( wxStyledTextEvent &aEvent )
|
|||
wxString ref = te->GetRange( refStart, start-1 );
|
||||
SCH_SHEET_LIST sheets = m_Parent->Schematic().GetSheets();
|
||||
SCH_REFERENCE_LIST refs;
|
||||
SCH_COMPONENT* refComponent = nullptr;
|
||||
SCH_COMPONENT* refSymbol = nullptr;
|
||||
|
||||
sheets.GetComponents( refs );
|
||||
sheets.GetSymbols( refs );
|
||||
|
||||
for( size_t jj = 0; jj < refs.GetCount(); jj++ )
|
||||
{
|
||||
if( refs[ jj ].GetComp()->GetRef( &refs[ jj ].GetSheetPath(), true ) == ref )
|
||||
if( refs[ jj ].GetSymbol()->GetRef( &refs[ jj ].GetSheetPath(), true ) == ref )
|
||||
{
|
||||
refComponent = refs[ jj ].GetComp();
|
||||
refSymbol = refs[ jj ].GetSymbol();
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if( refComponent )
|
||||
refComponent->GetContextualTextVars( &autocompleteTokens );
|
||||
if( refSymbol )
|
||||
refSymbol->GetContextualTextVars( &autocompleteTokens );
|
||||
}
|
||||
}
|
||||
else if( textVarRef( start ) )
|
||||
|
|
|
@ -339,21 +339,21 @@ void DIALOG_SCH_EDIT_ONE_FIELD::onScintillaCharAdded( wxStyledTextEvent &aEvent
|
|||
wxString ref = m_StyledTextCtrl->GetRange( refStart, start - 1 );
|
||||
SCH_SHEET_LIST sheets = editFrame->Schematic().GetSheets();
|
||||
SCH_REFERENCE_LIST refs;
|
||||
SCH_COMPONENT* refComponent = nullptr;
|
||||
SCH_COMPONENT* refSymbol = nullptr;
|
||||
|
||||
sheets.GetComponents( refs );
|
||||
sheets.GetSymbols( refs );
|
||||
|
||||
for( size_t jj = 0; jj < refs.GetCount(); jj++ )
|
||||
{
|
||||
if( refs[ jj ].GetComp()->GetRef( &refs[ jj ].GetSheetPath(), true ) == ref )
|
||||
if( refs[ jj ].GetSymbol()->GetRef( &refs[ jj ].GetSheetPath(), true ) == ref )
|
||||
{
|
||||
refComponent = refs[ jj ].GetComp();
|
||||
refSymbol = refs[ jj ].GetSymbol();
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if( refComponent )
|
||||
refComponent->GetContextualTextVars( &autocompleteTokens );
|
||||
if( refSymbol )
|
||||
refSymbol->GetContextualTextVars( &autocompleteTokens );
|
||||
}
|
||||
}
|
||||
else if( textVarRef( start ) )
|
||||
|
|
|
@ -167,7 +167,7 @@ protected:
|
|||
// The data model is fundamentally m_componentRefs X m_fieldNames.
|
||||
|
||||
SCH_EDIT_FRAME* m_frame;
|
||||
SCH_REFERENCE_LIST m_componentRefs;
|
||||
SCH_REFERENCE_LIST m_symbolsList;
|
||||
bool m_edited;
|
||||
std::vector<wxString> m_fieldNames;
|
||||
int m_sortColumn;
|
||||
|
@ -189,14 +189,14 @@ protected:
|
|||
|
||||
|
||||
public:
|
||||
FIELDS_EDITOR_GRID_DATA_MODEL( SCH_EDIT_FRAME* aFrame, SCH_REFERENCE_LIST& aComponentList ) :
|
||||
FIELDS_EDITOR_GRID_DATA_MODEL( SCH_EDIT_FRAME* aFrame, SCH_REFERENCE_LIST& aSymbolsList ) :
|
||||
m_frame( aFrame ),
|
||||
m_componentRefs( aComponentList ),
|
||||
m_symbolsList( aSymbolsList ),
|
||||
m_edited( false ),
|
||||
m_sortColumn( 0 ),
|
||||
m_sortAscending( false )
|
||||
{
|
||||
m_componentRefs.SplitReferences();
|
||||
m_symbolsList.SplitReferences();
|
||||
}
|
||||
|
||||
|
||||
|
@ -204,10 +204,10 @@ public:
|
|||
{
|
||||
m_fieldNames.push_back( aFieldName );
|
||||
|
||||
for( unsigned i = 0; i < m_componentRefs.GetCount(); ++i )
|
||||
for( unsigned i = 0; i < m_symbolsList.GetCount(); ++i )
|
||||
{
|
||||
SCH_COMPONENT* comp = m_componentRefs[ i ].GetComp();
|
||||
m_dataStore[ comp->m_Uuid ][ aFieldName ] = comp->GetFieldText( aFieldName, m_frame );
|
||||
SCH_COMPONENT* symbol = m_symbolsList[ i ].GetSymbol();
|
||||
m_dataStore[ symbol->m_Uuid ][ aFieldName ] = symbol->GetFieldText( aFieldName, m_frame );
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -281,19 +281,19 @@ public:
|
|||
}
|
||||
else // Other columns are either a single value or ROW_MULTI_ITEMS
|
||||
{
|
||||
const KIID& compID = ref.GetComp()->m_Uuid;
|
||||
const KIID& symbolID = ref.GetSymbol()->m_Uuid;
|
||||
|
||||
if( !m_dataStore.count( compID ) ||
|
||||
!m_dataStore[ compID ].count( m_fieldNames[ aCol ] ) )
|
||||
if( !m_dataStore.count( symbolID ) ||
|
||||
!m_dataStore[ symbolID ].count( m_fieldNames[ aCol ] ) )
|
||||
{
|
||||
return INDETERMINATE_STATE;
|
||||
}
|
||||
|
||||
if( &ref == &group.m_Refs.front() )
|
||||
{
|
||||
fieldValue = m_dataStore[ compID ][ m_fieldNames[ aCol ] ];
|
||||
fieldValue = m_dataStore[ symbolID ][ m_fieldNames[ aCol ] ];
|
||||
}
|
||||
else if ( fieldValue != m_dataStore[ compID ][ m_fieldNames[ aCol ] ] )
|
||||
else if ( fieldValue != m_dataStore[ symbolID ][ m_fieldNames[ aCol ] ] )
|
||||
{
|
||||
return INDETERMINATE_STATE;
|
||||
}
|
||||
|
@ -348,7 +348,7 @@ public:
|
|||
wxString fieldName = m_fieldNames[ aCol ];
|
||||
|
||||
for( const auto& ref : rowGroup.m_Refs )
|
||||
m_dataStore[ ref.GetComp()->m_Uuid ][ fieldName ] = aValue;
|
||||
m_dataStore[ ref.GetSymbol()->m_Uuid ][ fieldName ] = aValue;
|
||||
|
||||
m_edited = true;
|
||||
}
|
||||
|
@ -411,8 +411,7 @@ public:
|
|||
|
||||
bool unitMatch( const SCH_REFERENCE& lhRef, const SCH_REFERENCE& rhRef )
|
||||
{
|
||||
// If items are unannotated then we can't tell if they're units of the same
|
||||
// component or not
|
||||
// If items are unannotated then we can't tell if they're units of the same symbol or not
|
||||
if( lhRef.GetRefNumber() == wxT( "?" ) )
|
||||
return false;
|
||||
|
||||
|
@ -436,8 +435,8 @@ public:
|
|||
matchFound = true;
|
||||
}
|
||||
|
||||
const KIID& lhRefID = lhRef.GetComp()->m_Uuid;
|
||||
const KIID& rhRefID = rhRef.GetComp()->m_Uuid;
|
||||
const KIID& lhRefID = lhRef.GetSymbol()->m_Uuid;
|
||||
const KIID& rhRefID = rhRef.GetSymbol()->m_Uuid;
|
||||
|
||||
// Now check all the other columns. This must be done out of the dataStore
|
||||
// for the refresh button to work after editing.
|
||||
|
@ -458,7 +457,7 @@ public:
|
|||
}
|
||||
|
||||
|
||||
void RebuildRows( wxCheckBox* groupComponentsBox, wxDataViewListCtrl* fieldsCtrl )
|
||||
void RebuildRows( wxCheckBox* aGroupSymbolsBox, wxDataViewListCtrl* aFieldsCtrl )
|
||||
{
|
||||
if ( GetView() )
|
||||
{
|
||||
|
@ -472,12 +471,12 @@ public:
|
|||
|
||||
m_rows.clear();
|
||||
|
||||
for( unsigned i = 0; i < m_componentRefs.GetCount(); ++i )
|
||||
for( unsigned i = 0; i < m_symbolsList.GetCount(); ++i )
|
||||
{
|
||||
SCH_REFERENCE ref = m_componentRefs[ i ];
|
||||
bool matchFound = false;
|
||||
SCH_REFERENCE ref = m_symbolsList[ i ];
|
||||
bool matchFound = false;
|
||||
|
||||
// See if we already have a row which this component fits into
|
||||
// See if we already have a row which this symbol fits into
|
||||
for( auto& row : m_rows )
|
||||
{
|
||||
// all group members must have identical refs so just use the first one
|
||||
|
@ -489,7 +488,7 @@ public:
|
|||
row.m_Refs.push_back( ref );
|
||||
break;
|
||||
}
|
||||
else if (groupComponentsBox->GetValue() && groupMatch( ref, rowRef, fieldsCtrl ) )
|
||||
else if ( aGroupSymbolsBox->GetValue() && groupMatch( ref, rowRef, aFieldsCtrl ) )
|
||||
{
|
||||
matchFound = true;
|
||||
row.m_Refs.push_back( ref );
|
||||
|
@ -518,7 +517,7 @@ public:
|
|||
{
|
||||
bool matchFound = false;
|
||||
|
||||
// See if we already have a child group which this component fits into
|
||||
// See if we already have a child group which this symbol fits into
|
||||
for( auto& child : children )
|
||||
{
|
||||
// group members are by definition all matching, so just check
|
||||
|
@ -608,30 +607,30 @@ public:
|
|||
|
||||
void ApplyData()
|
||||
{
|
||||
for( unsigned i = 0; i < m_componentRefs.GetCount(); ++i )
|
||||
for( unsigned i = 0; i < m_symbolsList.GetCount(); ++i )
|
||||
{
|
||||
SCH_COMPONENT& comp = *m_componentRefs[i].GetComp();
|
||||
SCH_SCREEN* screen = m_componentRefs[i].GetSheetPath().LastScreen();
|
||||
SCH_COMPONENT& symbol = *m_symbolsList[ i ].GetSymbol();
|
||||
SCH_SCREEN* screen = m_symbolsList[i].GetSheetPath().LastScreen();
|
||||
|
||||
m_frame->SaveCopyInUndoList( screen, &comp, UNDO_REDO::CHANGED, true );
|
||||
m_frame->SaveCopyInUndoList( screen, &symbol, UNDO_REDO::CHANGED, true );
|
||||
|
||||
const std::map<wxString, wxString>& fieldStore = m_dataStore[comp.m_Uuid];
|
||||
const std::map<wxString, wxString>& fieldStore = m_dataStore[symbol.m_Uuid];
|
||||
|
||||
for( const std::pair<wxString, wxString> srcData : fieldStore )
|
||||
{
|
||||
const wxString& srcName = srcData.first;
|
||||
const wxString& srcValue = srcData.second;
|
||||
SCH_FIELD* destField = comp.FindField( srcName );
|
||||
SCH_FIELD* destField = symbol.FindField( srcName );
|
||||
|
||||
if( !destField && !srcValue.IsEmpty() )
|
||||
{
|
||||
const auto compOrigin = comp.GetPosition();
|
||||
destField = comp.AddField( SCH_FIELD( compOrigin, -1, &comp, srcName ) );
|
||||
const wxPoint symbolPos = symbol.GetPosition();
|
||||
destField = symbol.AddField( SCH_FIELD( symbolPos, -1, &symbol, srcName ) );
|
||||
}
|
||||
|
||||
if( !destField )
|
||||
{
|
||||
comp.RemoveField( srcName );
|
||||
symbol.RemoveField( srcName );
|
||||
}
|
||||
else if( destField->GetId() == REFERENCE_FIELD )
|
||||
{
|
||||
|
@ -641,11 +640,11 @@ public:
|
|||
{
|
||||
// Value field cannot be empty
|
||||
if( !srcValue.IsEmpty() )
|
||||
comp.SetValue( srcValue );
|
||||
symbol.SetValue( srcValue );
|
||||
}
|
||||
else if( destField->GetId() == FOOTPRINT_FIELD )
|
||||
{
|
||||
comp.SetFootprint( srcValue );
|
||||
symbol.SetFootprint( srcValue );
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -671,12 +670,12 @@ public:
|
|||
}
|
||||
else
|
||||
{
|
||||
wxString column_label = GetColLabelValue( aCol ); // component fieldName or Qty string
|
||||
wxString column_label = GetColLabelValue( aCol ); // symbol fieldName or Qty string
|
||||
|
||||
for( unsigned compRef = 0; compRef < m_componentRefs.GetCount(); ++ compRef )
|
||||
for( unsigned symbolRef = 0; symbolRef < m_symbolsList.GetCount(); ++ symbolRef )
|
||||
{
|
||||
const KIID& compId = m_componentRefs[ compRef ].GetComp()->m_Uuid;
|
||||
wxString text = m_dataStore[ compId ][ column_label ];
|
||||
const KIID& symbolID = m_symbolsList[ symbolRef ].GetSymbol()->m_Uuid;
|
||||
wxString text = m_dataStore[ symbolID ][ column_label ];
|
||||
|
||||
width = std::max( width, KIUI::GetTextSize( text, GetView() ).x );
|
||||
}
|
||||
|
@ -699,8 +698,8 @@ DIALOG_FIELDS_EDITOR_GLOBAL::DIALOG_FIELDS_EDITOR_GLOBAL( SCH_EDIT_FRAME* parent
|
|||
{
|
||||
wxSize defaultDlgSize = ConvertDialogToPixels( wxSize( 600, 300 ) );
|
||||
|
||||
// Get all components from the list of schematic sheets
|
||||
m_parent->Schematic().GetSheets().GetComponents( m_componentRefs, false );
|
||||
// Get all symbols from the list of schematic sheets
|
||||
m_parent->Schematic().GetSheets().GetSymbols( m_symbolsList, false );
|
||||
|
||||
m_bRefresh->SetBitmap( KiBitmap( refresh_xpm ) );
|
||||
|
||||
|
@ -725,7 +724,7 @@ DIALOG_FIELDS_EDITOR_GLOBAL::DIALOG_FIELDS_EDITOR_GLOBAL( SCH_EDIT_FRAME* parent
|
|||
// expander buttons... but it doesn't. Fix by forcing the indent to 0.
|
||||
m_fieldsCtrl->SetIndent( 0 );
|
||||
|
||||
m_dataModel = new FIELDS_EDITOR_GRID_DATA_MODEL( m_parent, m_componentRefs );
|
||||
m_dataModel = new FIELDS_EDITOR_GRID_DATA_MODEL( m_parent, m_symbolsList );
|
||||
|
||||
LoadFieldNames(); // loads rows into m_fieldsCtrl and columns into m_dataModel
|
||||
|
||||
|
@ -754,7 +753,7 @@ DIALOG_FIELDS_EDITOR_GLOBAL::DIALOG_FIELDS_EDITOR_GLOBAL( SCH_EDIT_FRAME* parent
|
|||
m_splitterMainWindow->SetMinimumPaneSize( fieldsMinWidth );
|
||||
m_splitterMainWindow->SetSashPosition( fieldsMinWidth + 40 );
|
||||
|
||||
m_dataModel->RebuildRows( m_groupComponentsBox, m_fieldsCtrl );
|
||||
m_dataModel->RebuildRows( m_groupSymbolsBox, m_fieldsCtrl );
|
||||
m_dataModel->Sort( 0, true );
|
||||
|
||||
// wxGrid's column moving is buggy with native headers and this is one dialog where you'd
|
||||
|
@ -866,19 +865,19 @@ bool DIALOG_FIELDS_EDITOR_GLOBAL::TransferDataToWindow()
|
|||
TOOL_MANAGER* toolMgr = m_parent->GetToolManager();
|
||||
EE_SELECTION_TOOL* selectionTool = toolMgr->GetTool<EE_SELECTION_TOOL>();
|
||||
EE_SELECTION& selection = selectionTool->GetSelection();
|
||||
SCH_COMPONENT* component = nullptr;
|
||||
SCH_COMPONENT* symbol = nullptr;
|
||||
|
||||
if( selection.GetSize() == 1 )
|
||||
{
|
||||
EDA_ITEM* item = selection.Front();
|
||||
|
||||
if( item->Type() == SCH_COMPONENT_T )
|
||||
component = (SCH_COMPONENT*) item;
|
||||
symbol = (SCH_COMPONENT*) item;
|
||||
else if( item->GetParent() && item->GetParent()->Type() == SCH_COMPONENT_T )
|
||||
component = (SCH_COMPONENT*) item->GetParent();
|
||||
symbol = (SCH_COMPONENT*) item->GetParent();
|
||||
}
|
||||
|
||||
if( component )
|
||||
if( symbol )
|
||||
{
|
||||
for( int row = 0; row < m_dataModel->GetNumberRows(); ++row )
|
||||
{
|
||||
|
@ -887,7 +886,7 @@ bool DIALOG_FIELDS_EDITOR_GLOBAL::TransferDataToWindow()
|
|||
|
||||
for( const SCH_REFERENCE& ref : references )
|
||||
{
|
||||
if( ref.GetComp() == component )
|
||||
if( ref.GetSymbol() == symbol )
|
||||
{
|
||||
found = true;
|
||||
break;
|
||||
|
@ -967,12 +966,12 @@ void DIALOG_FIELDS_EDITOR_GLOBAL::LoadFieldNames()
|
|||
{
|
||||
std::set<wxString> userFieldNames;
|
||||
|
||||
for( unsigned i = 0; i < m_componentRefs.GetCount(); ++i )
|
||||
for( unsigned i = 0; i < m_symbolsList.GetCount(); ++i )
|
||||
{
|
||||
SCH_COMPONENT* comp = m_componentRefs[ i ].GetComp();
|
||||
SCH_COMPONENT* symbol = m_symbolsList[ i ].GetSymbol();
|
||||
|
||||
for( int j = MANDATORY_FIELDS; j < comp->GetFieldCount(); ++j )
|
||||
userFieldNames.insert( comp->GetField( j )->GetName() );
|
||||
for( int j = MANDATORY_FIELDS; j < symbol->GetFieldCount(); ++j )
|
||||
userFieldNames.insert( symbol->GetField( j )->GetName() );
|
||||
}
|
||||
|
||||
// Force References to always be shown
|
||||
|
@ -1090,7 +1089,7 @@ void DIALOG_FIELDS_EDITOR_GLOBAL::OnColumnItemToggled( wxDataViewEvent& event )
|
|||
std::string fieldName( m_fieldsCtrl->GetTextValue( row, CANONICAL_NAME_COLUMN ).ToUTF8() );
|
||||
cfg->m_FieldEditorPanel.fields_group_by[fieldName] = value;
|
||||
|
||||
m_dataModel->RebuildRows( m_groupComponentsBox, m_fieldsCtrl );
|
||||
m_dataModel->RebuildRows( m_groupSymbolsBox, m_fieldsCtrl );
|
||||
m_dataModel->Sort( m_grid->GetSortingColumn(), m_grid->IsSortOrderAscending() );
|
||||
m_grid->ForceRefresh();
|
||||
break;
|
||||
|
@ -1099,9 +1098,9 @@ void DIALOG_FIELDS_EDITOR_GLOBAL::OnColumnItemToggled( wxDataViewEvent& event )
|
|||
}
|
||||
|
||||
|
||||
void DIALOG_FIELDS_EDITOR_GLOBAL::OnGroupComponentsToggled( wxCommandEvent& event )
|
||||
void DIALOG_FIELDS_EDITOR_GLOBAL::OnGroupSymbolsToggled( wxCommandEvent& event )
|
||||
{
|
||||
m_dataModel->RebuildRows( m_groupComponentsBox, m_fieldsCtrl );
|
||||
m_dataModel->RebuildRows( m_groupSymbolsBox, m_fieldsCtrl );
|
||||
m_dataModel->Sort( m_grid->GetSortingColumn(), m_grid->IsSortOrderAscending() );
|
||||
m_grid->ForceRefresh();
|
||||
}
|
||||
|
@ -1145,9 +1144,9 @@ void DIALOG_FIELDS_EDITOR_GLOBAL::OnTableColSize( wxGridSizeEvent& aEvent )
|
|||
}
|
||||
|
||||
|
||||
void DIALOG_FIELDS_EDITOR_GLOBAL::OnRegroupComponents( wxCommandEvent& aEvent )
|
||||
void DIALOG_FIELDS_EDITOR_GLOBAL::OnRegroupSymbols( wxCommandEvent& aEvent )
|
||||
{
|
||||
m_dataModel->RebuildRows( m_groupComponentsBox, m_fieldsCtrl );
|
||||
m_dataModel->RebuildRows( m_groupSymbolsBox, m_fieldsCtrl );
|
||||
m_dataModel->Sort( m_grid->GetSortingColumn(), m_grid->IsSortOrderAscending() );
|
||||
m_grid->ForceRefresh();
|
||||
}
|
||||
|
@ -1163,7 +1162,7 @@ void DIALOG_FIELDS_EDITOR_GLOBAL::OnTableCellClick( wxGridEvent& event )
|
|||
m_dataModel->ExpandCollapseRow( event.GetRow() );
|
||||
std::vector<SCH_REFERENCE> refs = m_dataModel->GetRowReferences( event.GetRow() );
|
||||
|
||||
// Focus Eeschema view on the component selected in the dialog
|
||||
// Focus Eeschema view on the symbol selected in the dialog
|
||||
if( refs.size() == 1 )
|
||||
{
|
||||
SCH_EDITOR_CONTROL* editor = m_parent->GetToolManager()->GetTool<SCH_EDITOR_CONTROL>();
|
||||
|
|
|
@ -49,7 +49,7 @@ private:
|
|||
int m_groupByColWidth;
|
||||
int m_canonicalNameColWidth;
|
||||
|
||||
SCH_REFERENCE_LIST m_componentRefs;
|
||||
SCH_REFERENCE_LIST m_symbolsList;
|
||||
FIELDS_EDITOR_GRID_DATA_MODEL* m_dataModel;
|
||||
|
||||
void AddField( const wxString& displayName, const wxString& aCanonicalName, bool defaultShow,
|
||||
|
@ -59,8 +59,8 @@ private:
|
|||
void OnColSort( wxGridEvent& aEvent );
|
||||
|
||||
void OnColumnItemToggled( wxDataViewEvent& event ) override;
|
||||
void OnGroupComponentsToggled( wxCommandEvent& event ) override;
|
||||
void OnRegroupComponents( wxCommandEvent& event ) override;
|
||||
void OnGroupSymbolsToggled( wxCommandEvent& event ) override;
|
||||
void OnRegroupSymbols( wxCommandEvent& aEvent ) override;
|
||||
void OnTableValueChanged( wxGridEvent& event ) override;
|
||||
void OnTableCellClick( wxGridEvent& event ) override;
|
||||
void OnTableItemContextMenu( wxGridEvent& event ) override;
|
||||
|
|
|
@ -28,11 +28,11 @@ DIALOG_FIELDS_EDITOR_GLOBAL_BASE::DIALOG_FIELDS_EDITOR_GLOBAL_BASE( wxWindow* pa
|
|||
wxBoxSizer* bGroupSizer;
|
||||
bGroupSizer = new wxBoxSizer( wxHORIZONTAL );
|
||||
|
||||
m_groupComponentsBox = new wxCheckBox( m_leftPanel, OPT_GROUP_COMPONENTS, _("Group symbols"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_groupComponentsBox->SetValue(true);
|
||||
m_groupComponentsBox->SetToolTip( _("Group components together based on common properties") );
|
||||
m_groupSymbolsBox = new wxCheckBox( m_leftPanel, OPT_GROUP_COMPONENTS, _( "Group symbols"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_groupSymbolsBox->SetValue( true);
|
||||
m_groupSymbolsBox->SetToolTip( _( "Group components together based on common properties") );
|
||||
|
||||
bGroupSizer->Add( m_groupComponentsBox, 0, wxALL|wxEXPAND, 5 );
|
||||
bGroupSizer->Add( m_groupSymbolsBox, 0, wxALL | wxEXPAND, 5 );
|
||||
|
||||
|
||||
bGroupSizer->Add( 0, 0, 1, wxEXPAND|wxRIGHT|wxLEFT, 10 );
|
||||
|
@ -126,8 +126,8 @@ DIALOG_FIELDS_EDITOR_GLOBAL_BASE::DIALOG_FIELDS_EDITOR_GLOBAL_BASE( wxWindow* pa
|
|||
|
||||
// Connect Events
|
||||
this->Connect( wxEVT_CLOSE_WINDOW, wxCloseEventHandler( DIALOG_FIELDS_EDITOR_GLOBAL_BASE::OnClose ) );
|
||||
m_groupComponentsBox->Connect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( DIALOG_FIELDS_EDITOR_GLOBAL_BASE::OnGroupComponentsToggled ), NULL, this );
|
||||
m_bRefresh->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_FIELDS_EDITOR_GLOBAL_BASE::OnRegroupComponents ), NULL, this );
|
||||
m_groupSymbolsBox->Connect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( DIALOG_FIELDS_EDITOR_GLOBAL_BASE::OnGroupSymbolsToggled ), NULL, this );
|
||||
m_bRefresh->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_FIELDS_EDITOR_GLOBAL_BASE::OnRegroupSymbols ), NULL, this );
|
||||
m_fieldsCtrl->Connect( wxEVT_COMMAND_DATAVIEW_ITEM_VALUE_CHANGED, wxDataViewEventHandler( DIALOG_FIELDS_EDITOR_GLOBAL_BASE::OnColumnItemToggled ), NULL, this );
|
||||
m_fieldsCtrl->Connect( wxEVT_SIZE, wxSizeEventHandler( DIALOG_FIELDS_EDITOR_GLOBAL_BASE::OnSizeFieldList ), NULL, this );
|
||||
m_addFieldButton->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_FIELDS_EDITOR_GLOBAL_BASE::OnAddField ), NULL, this );
|
||||
|
@ -144,8 +144,8 @@ DIALOG_FIELDS_EDITOR_GLOBAL_BASE::~DIALOG_FIELDS_EDITOR_GLOBAL_BASE()
|
|||
{
|
||||
// Disconnect Events
|
||||
this->Disconnect( wxEVT_CLOSE_WINDOW, wxCloseEventHandler( DIALOG_FIELDS_EDITOR_GLOBAL_BASE::OnClose ) );
|
||||
m_groupComponentsBox->Disconnect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( DIALOG_FIELDS_EDITOR_GLOBAL_BASE::OnGroupComponentsToggled ), NULL, this );
|
||||
m_bRefresh->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_FIELDS_EDITOR_GLOBAL_BASE::OnRegroupComponents ), NULL, this );
|
||||
m_groupSymbolsBox->Disconnect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( DIALOG_FIELDS_EDITOR_GLOBAL_BASE::OnGroupSymbolsToggled ), NULL, this );
|
||||
m_bRefresh->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_FIELDS_EDITOR_GLOBAL_BASE::OnRegroupSymbols ), NULL, this );
|
||||
m_fieldsCtrl->Disconnect( wxEVT_COMMAND_DATAVIEW_ITEM_VALUE_CHANGED, wxDataViewEventHandler( DIALOG_FIELDS_EDITOR_GLOBAL_BASE::OnColumnItemToggled ), NULL, this );
|
||||
m_fieldsCtrl->Disconnect( wxEVT_SIZE, wxSizeEventHandler( DIALOG_FIELDS_EDITOR_GLOBAL_BASE::OnSizeFieldList ), NULL, this );
|
||||
m_addFieldButton->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_FIELDS_EDITOR_GLOBAL_BASE::OnAddField ), NULL, this );
|
||||
|
|
|
@ -227,7 +227,7 @@
|
|||
<property name="minimize_button">0</property>
|
||||
<property name="minimum_size"></property>
|
||||
<property name="moveable">1</property>
|
||||
<property name="name">m_groupComponentsBox</property>
|
||||
<property name="name">m_groupSymbolsBox</property>
|
||||
<property name="pane_border">1</property>
|
||||
<property name="pane_position"></property>
|
||||
<property name="pane_size"></property>
|
||||
|
@ -240,7 +240,7 @@
|
|||
<property name="style"></property>
|
||||
<property name="subclass"></property>
|
||||
<property name="toolbar_pane">0</property>
|
||||
<property name="tooltip">Group components together based on common properties</property>
|
||||
<property name="tooltip">Group symbols together based on common properties</property>
|
||||
<property name="validator_data_type"></property>
|
||||
<property name="validator_style">wxFILTER_NONE</property>
|
||||
<property name="validator_type">wxDefaultValidator</property>
|
||||
|
@ -248,7 +248,7 @@
|
|||
<property name="window_extra_style"></property>
|
||||
<property name="window_name"></property>
|
||||
<property name="window_style"></property>
|
||||
<event name="OnCheckBox">OnGroupComponentsToggled</event>
|
||||
<event name="OnCheckBox">OnGroupSymbolsToggled</event>
|
||||
</object>
|
||||
</object>
|
||||
<object class="sizeritem" expanded="0">
|
||||
|
@ -331,7 +331,7 @@
|
|||
<property name="window_extra_style"></property>
|
||||
<property name="window_name"></property>
|
||||
<property name="window_style"></property>
|
||||
<event name="OnButtonClick">OnRegroupComponents</event>
|
||||
<event name="OnButtonClick">OnRegroupSymbols</event>
|
||||
</object>
|
||||
</object>
|
||||
</object>
|
||||
|
|
|
@ -45,7 +45,7 @@ class DIALOG_FIELDS_EDITOR_GLOBAL_BASE : public DIALOG_SHIM
|
|||
protected:
|
||||
wxSplitterWindow* m_splitterMainWindow;
|
||||
wxPanel* m_leftPanel;
|
||||
wxCheckBox* m_groupComponentsBox;
|
||||
wxCheckBox* m_groupSymbolsBox;
|
||||
wxBitmapButton* m_bRefresh;
|
||||
wxDataViewListCtrl* m_fieldsCtrl;
|
||||
wxButton* m_addFieldButton;
|
||||
|
@ -58,8 +58,8 @@ class DIALOG_FIELDS_EDITOR_GLOBAL_BASE : public DIALOG_SHIM
|
|||
|
||||
// Virtual event handlers, overide them in your derived class
|
||||
virtual void OnClose( wxCloseEvent& event ) { event.Skip(); }
|
||||
virtual void OnGroupComponentsToggled( wxCommandEvent& event ) { event.Skip(); }
|
||||
virtual void OnRegroupComponents( wxCommandEvent& event ) { event.Skip(); }
|
||||
virtual void OnGroupSymbolsToggled( wxCommandEvent& event ) { event.Skip(); }
|
||||
virtual void OnRegroupSymbols( wxCommandEvent& event ) { event.Skip(); }
|
||||
virtual void OnColumnItemToggled( wxDataViewEvent& event ) { event.Skip(); }
|
||||
virtual void OnSizeFieldList( wxSizeEvent& event ) { event.Skip(); }
|
||||
virtual void OnAddField( wxCommandEvent& event ) { event.Skip(); }
|
||||
|
|
|
@ -197,14 +197,14 @@ void CollectOtherUnits( const wxString& aRef, int aUnit, SCH_SHEET_PATH& aSheet,
|
|||
std::vector<SCH_COMPONENT*>* otherUnits )
|
||||
{
|
||||
SCH_REFERENCE_LIST components;
|
||||
aSheet.GetComponents( components );
|
||||
aSheet.GetSymbols( components );
|
||||
|
||||
for( unsigned i = 0; i < components.GetCount(); i++ )
|
||||
{
|
||||
SCH_REFERENCE component = components[i];
|
||||
|
||||
if( component.GetRef() == aRef && component.GetUnit() != aUnit )
|
||||
otherUnits->push_back( component.GetComp() );
|
||||
otherUnits->push_back( component.GetSymbol() );
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -334,7 +334,7 @@ int ERC_TESTER::TestMultiunitFootprints()
|
|||
int errors = 0;
|
||||
std::map<wxString, LIB_ID> footprints;
|
||||
SCH_MULTI_UNIT_REFERENCE_MAP refMap;
|
||||
sheets.GetMultiUnitComponents( refMap, true );
|
||||
sheets.GetMultiUnitSymbols( refMap, true );
|
||||
|
||||
for( std::pair<const wxString, SCH_REFERENCE_LIST>& component : refMap )
|
||||
{
|
||||
|
@ -358,7 +358,7 @@ int ERC_TESTER::TestMultiunitFootprints()
|
|||
|
||||
if( !unitFP.IsEmpty() )
|
||||
{
|
||||
unit = refList.GetItem( i ).GetComp();
|
||||
unit = refList.GetItem( i ).GetSymbol();
|
||||
unitName = unit->GetRef( &sheetPath, true );
|
||||
break;
|
||||
}
|
||||
|
@ -367,7 +367,7 @@ int ERC_TESTER::TestMultiunitFootprints()
|
|||
for( unsigned i = 0; i < refList.GetCount(); ++i )
|
||||
{
|
||||
SCH_REFERENCE& secondRef = refList.GetItem( i );
|
||||
SCH_COMPONENT* secondUnit = secondRef.GetComp();
|
||||
SCH_COMPONENT* secondUnit = secondRef.GetSymbol();
|
||||
wxString secondName = secondUnit->GetRef( &secondRef.GetSheetPath(), true );
|
||||
const wxString secondFp = secondRef.GetFootprint();
|
||||
wxString msg;
|
||||
|
|
|
@ -725,7 +725,7 @@ void SCH_SEXPR_PLUGIN::Format( SCH_SHEET* aSheet )
|
|||
{
|
||||
SCH_REFERENCE_LIST instances;
|
||||
|
||||
sheetPath.GetComponents( instances, true, true );
|
||||
sheetPath.GetSymbols( instances, true, true );
|
||||
instances.SortByReferenceOnly();
|
||||
|
||||
for( size_t i = 0; i < instances.GetCount(); i++ )
|
||||
|
|
|
@ -38,117 +38,97 @@
|
|||
|
||||
/**
|
||||
* SCH_REFERENCE
|
||||
* is used as a helper to define a component's reference designator in a schematic. This
|
||||
* helper is required in a complex hierarchy because a component can be used more than
|
||||
* once and its reference depends on the sheet path. This class is used to flatten the
|
||||
* schematic hierarchy for annotation, net list generation, and bill of material
|
||||
* generation.
|
||||
* is used as a helper to define a symbol's reference designator in a schematic. This helper
|
||||
* is required in a complex hierarchy because a symbol can be used more than once and its
|
||||
* reference depends on the sheet path. This class is used to flatten the schematic hierarchy
|
||||
* for annotation, net list generation, and bill of material generation.
|
||||
*/
|
||||
class SCH_REFERENCE
|
||||
{
|
||||
/// Component reference prefix, without number (for IC1, this is IC) )
|
||||
UTF8 m_Ref; // it's private, use the accessors please
|
||||
SCH_COMPONENT* m_RootCmp; ///< The component associated the reference object.
|
||||
LIB_PART* m_Entry; ///< The source component from a library.
|
||||
wxPoint m_CmpPos; ///< The physical position of the component in schematic
|
||||
/// Symbol reference prefix, without number (for IC1, this is IC) )
|
||||
UTF8 m_ref; // it's private, use the accessors please
|
||||
SCH_COMPONENT* m_rootSymbol; ///< The symbol associated the reference object.
|
||||
LIB_PART* m_libPart; ///< The source symbol from a library.
|
||||
wxPoint m_symbolPos; ///< The physical position of the symbol in schematic
|
||||
///< used to annotate by X or Y position
|
||||
int m_Unit; ///< The unit number for components with multiple parts
|
||||
int m_unit; ///< The unit number for symbol with multiple parts
|
||||
///< per package.
|
||||
wxString m_Value; ///< The component value.
|
||||
wxString m_Footprint; ///< The footprint assigned.
|
||||
SCH_SHEET_PATH m_SheetPath; ///< The sheet path for this reference.
|
||||
bool m_IsNew; ///< True if not yet annotated.
|
||||
int m_SheetNum; ///< The sheet number for the reference.
|
||||
KIID m_Uuid; ///< UUID of the component.
|
||||
int m_NumRef; ///< The numeric part of the reference designator.
|
||||
int m_Flag;
|
||||
wxString m_value; ///< The symbol value.
|
||||
wxString m_footprint; ///< The footprint assigned.
|
||||
SCH_SHEET_PATH m_sheetPath; ///< The sheet path for this reference.
|
||||
bool m_isNew; ///< True if not yet annotated.
|
||||
int m_sheetNum; ///< The sheet number for the reference.
|
||||
KIID m_symbolUuid; ///< UUID of the symbol.
|
||||
int m_numRef; ///< The numeric part of the reference designator.
|
||||
int m_flag;
|
||||
|
||||
friend class SCH_REFERENCE_LIST;
|
||||
|
||||
public:
|
||||
|
||||
SCH_REFERENCE() :
|
||||
m_SheetPath()
|
||||
m_sheetPath()
|
||||
{
|
||||
m_RootCmp = NULL;
|
||||
m_Entry = NULL;
|
||||
m_Unit = 0;
|
||||
m_IsNew = false;
|
||||
m_NumRef = 0;
|
||||
m_Flag = 0;
|
||||
m_SheetNum = 0;
|
||||
m_rootSymbol = NULL;
|
||||
m_libPart = NULL;
|
||||
m_unit = 0;
|
||||
m_isNew = false;
|
||||
m_numRef = 0;
|
||||
m_flag = 0;
|
||||
m_sheetNum = 0;
|
||||
}
|
||||
|
||||
SCH_REFERENCE( SCH_COMPONENT* aComponent, LIB_PART* aLibComponent,
|
||||
const SCH_SHEET_PATH& aSheetPath );
|
||||
SCH_REFERENCE( SCH_COMPONENT* aSymbol, LIB_PART* aLibPart, const SCH_SHEET_PATH& aSheetPath );
|
||||
|
||||
SCH_COMPONENT* GetComp() const { return m_RootCmp; }
|
||||
SCH_COMPONENT* GetSymbol() const { return m_rootSymbol; }
|
||||
|
||||
LIB_PART* GetLibPart() const { return m_Entry; }
|
||||
LIB_PART* GetLibPart() const { return m_libPart; }
|
||||
|
||||
const SCH_SHEET_PATH& GetSheetPath() const { return m_SheetPath; }
|
||||
const SCH_SHEET_PATH& GetSheetPath() const { return m_sheetPath; }
|
||||
|
||||
SCH_SHEET_PATH& GetSheetPath() { return m_SheetPath; }
|
||||
SCH_SHEET_PATH& GetSheetPath() { return m_sheetPath; }
|
||||
|
||||
int GetUnit() const { return m_Unit; }
|
||||
void SetUnit( int aUnit ) { m_Unit = aUnit; }
|
||||
int GetUnit() const { return m_unit; }
|
||||
void SetUnit( int aUnit ) { m_unit = aUnit; }
|
||||
|
||||
const wxString GetValue() const { return m_Value; }
|
||||
void SetValue( const wxString& aValue ) { m_Value = aValue; }
|
||||
const wxString GetValue() const { return m_value; }
|
||||
void SetValue( const wxString& aValue ) { m_value = aValue; }
|
||||
|
||||
const wxString GetFootprint() const { return m_Footprint; }
|
||||
void SetFootprint( const wxString& aFP ) { m_Footprint = aFP; }
|
||||
const wxString GetFootprint() const { return m_footprint; }
|
||||
void SetFootprint( const wxString& aFP ) { m_footprint = aFP; }
|
||||
|
||||
void SetSheetNumber( int aSheetNumber ) { m_SheetNum = aSheetNumber; }
|
||||
void SetSheetNumber( int aSheetNumber ) { m_sheetNum = aSheetNumber; }
|
||||
|
||||
const wxString GetPath() const
|
||||
{
|
||||
return m_RootCmp ? m_SheetPath.PathAsString() + m_RootCmp->m_Uuid.AsString() : "";
|
||||
return m_rootSymbol ? m_sheetPath.PathAsString() + m_rootSymbol->m_Uuid.AsString() : "";
|
||||
}
|
||||
|
||||
/**
|
||||
* Function Annotate
|
||||
* updates the annotation of the component according the the current object state.
|
||||
* updates the annotation of the symbol according the the current object state.
|
||||
*/
|
||||
void Annotate();
|
||||
|
||||
/**
|
||||
* Function Split
|
||||
* attempts to split the reference designator into a name (U) and number (1). If the
|
||||
* last character is '?' or not a digit, the reference is tagged as not annotated.
|
||||
* For components with multiple parts per package that are not already annotated, set
|
||||
* m_Unit to a max value (0x7FFFFFFF).
|
||||
* last character is '?' or not a digit, the reference is tagged as not annotated. For
|
||||
* sybmols with multiple parts per package that are not already annotated, sets m_unit to
|
||||
* a max value (0x7FFFFFFF).
|
||||
*/
|
||||
void Split();
|
||||
|
||||
/* Some accessors which hide the strategy of how the reference is stored,
|
||||
thereby making it easy to change that strategy.
|
||||
*/
|
||||
void SetRef( const wxString& aReference ) { m_ref = aReference; }
|
||||
wxString GetRef() const { return m_ref; }
|
||||
|
||||
void SetRef( const wxString& aReference )
|
||||
{
|
||||
m_Ref = aReference;
|
||||
}
|
||||
|
||||
wxString GetRef() const
|
||||
{
|
||||
return m_Ref;
|
||||
}
|
||||
|
||||
void SetRefStr( const std::string& aReference )
|
||||
{
|
||||
m_Ref = aReference;
|
||||
}
|
||||
|
||||
const char* GetRefStr() const
|
||||
{
|
||||
return m_Ref.c_str();
|
||||
}
|
||||
void SetRefStr( const std::string& aReference ) { m_ref = aReference; }
|
||||
const char* GetRefStr() const { return m_ref.c_str(); }
|
||||
|
||||
///> Return reference name with unit altogether
|
||||
wxString GetFullRef()
|
||||
{
|
||||
if( GetComp()->GetUnitCount() > 1 )
|
||||
if( GetSymbol()->GetUnitCount() > 1 )
|
||||
return GetRef() + LIB_PART::SubReference( GetUnit() );
|
||||
else
|
||||
return GetRef();
|
||||
|
@ -158,59 +138,58 @@ public:
|
|||
{
|
||||
wxString ref;
|
||||
|
||||
if( m_NumRef < 0 )
|
||||
if( m_numRef < 0 )
|
||||
return wxT( "?" );
|
||||
|
||||
// To avoid a risk of duplicate, for power components
|
||||
// the ref number is 0nnn instead of nnn.
|
||||
// Just because sometimes only power components are annotated
|
||||
// To avoid a risk of duplicate, for power symbols the ref number is 0nnn instead of nnn.
|
||||
// Just because sometimes only power symbols are annotated
|
||||
if( GetLibPart() && GetLibPart()->IsPower() )
|
||||
ref = wxT( "0" );
|
||||
|
||||
return ref << m_NumRef;
|
||||
return ref << m_numRef;
|
||||
}
|
||||
|
||||
int CompareValue( const SCH_REFERENCE& item ) const
|
||||
{
|
||||
return m_Value.Cmp( item.m_Value );
|
||||
return m_value.Cmp( item.m_value );
|
||||
}
|
||||
|
||||
int CompareRef( const SCH_REFERENCE& item ) const
|
||||
{
|
||||
return m_Ref.compare( item.m_Ref );
|
||||
return m_ref.compare( item.m_ref );
|
||||
}
|
||||
|
||||
int CompareLibName( const SCH_REFERENCE& item ) const
|
||||
{
|
||||
return m_RootCmp->GetLibId().GetLibItemName().compare(
|
||||
item.m_RootCmp->GetLibId().GetLibItemName() );
|
||||
return m_rootSymbol->GetLibId().GetLibItemName().compare(
|
||||
item.m_rootSymbol->GetLibId().GetLibItemName() );
|
||||
}
|
||||
|
||||
/**
|
||||
* Function IsSameInstance
|
||||
* returns whether this reference refers to the same component instance
|
||||
* (component and sheet) as another.
|
||||
* returns whether this reference refers to the same symbol instance (symbol and sheet) as
|
||||
* another.
|
||||
*/
|
||||
bool IsSameInstance( const SCH_REFERENCE& other ) const
|
||||
{
|
||||
// JEY TODO: should this be checking unit as well?
|
||||
return GetComp() == other.GetComp()
|
||||
&& GetSheetPath().Path() == other.GetSheetPath().Path();
|
||||
return GetSymbol() == other.GetSymbol()
|
||||
&& GetSheetPath().Path() == other.GetSheetPath().Path();
|
||||
}
|
||||
|
||||
bool IsUnitsLocked()
|
||||
{
|
||||
return m_Entry->UnitsLocked();
|
||||
return m_libPart->UnitsLocked();
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* SCH_REFERENCE_LIST
|
||||
* is used to create a flattened list of components because in a complex hierarchy, a component
|
||||
* is used to create a flattened list of symbols because in a complex hierarchy, a symbol
|
||||
* can be used more than once and its reference designator is dependent on the sheet path for
|
||||
* the same component. This flattened list is used for netlist generation, BOM generation,
|
||||
* and schematic annotation.
|
||||
* the same symbol. This flattened list is used for netlist generation, BOM generation, and
|
||||
* schematic annotation.
|
||||
*/
|
||||
class SCH_REFERENCE_LIST
|
||||
{
|
||||
|
@ -234,33 +213,11 @@ public:
|
|||
flatList.clear();
|
||||
}
|
||||
|
||||
/**
|
||||
* Function GetCount
|
||||
* @return the number of items in the list
|
||||
*/
|
||||
unsigned GetCount() const
|
||||
{
|
||||
return flatList.size();
|
||||
}
|
||||
unsigned GetCount() const { return flatList.size(); }
|
||||
|
||||
/**
|
||||
* Function GetItem
|
||||
* @return the aIdx item
|
||||
*/
|
||||
SCH_REFERENCE& GetItem( int aIdx )
|
||||
{
|
||||
return flatList[aIdx];
|
||||
}
|
||||
SCH_REFERENCE& GetItem( int aIdx ) { return flatList[aIdx]; }
|
||||
|
||||
/**
|
||||
* Function AddItem
|
||||
* adds a SCH_REFERENCE object to the list of references.
|
||||
* @param aItem - a SCH_REFERENCE item to add
|
||||
*/
|
||||
void AddItem( SCH_REFERENCE& aItem )
|
||||
{
|
||||
flatList.push_back( aItem );
|
||||
}
|
||||
void AddItem( SCH_REFERENCE& aItem ) { flatList.push_back( aItem ); }
|
||||
|
||||
/**
|
||||
* Function RemoveItem
|
||||
|
@ -271,21 +228,20 @@ public:
|
|||
void RemoveItem( unsigned int aIndex );
|
||||
|
||||
/* Sort functions:
|
||||
* Sort functions are used to sort components for annotation or BOM generation.
|
||||
* Because sorting depends on what we want to do, there are many sort functions.
|
||||
* Sort functions are used to sort symbols for annotation or BOM generation. Because
|
||||
* sorting depends on what we want to do, there are many sort functions.
|
||||
* Note:
|
||||
* When creating BOM, components are fully annotated.
|
||||
* references are something like U3, U5 or R4, R8
|
||||
* When annotating, some or all components are not annotated,
|
||||
* i.e. ref is only U or R, with no number.
|
||||
* When creating BOM, symbols are fully annotated. References are something like U3,
|
||||
* U5 or R4, R8. When annotating, some or all suymbols are not annotated, i.e. ref is
|
||||
* only U or R, with no number.
|
||||
*/
|
||||
|
||||
/**
|
||||
* Function SplitReferences
|
||||
* attempts to split all reference designators into a name (U) and number (1). If the
|
||||
* last character is '?' or not a digit, the reference is tagged as not annotated.
|
||||
* For components with multiple parts per package that are not already annotated, set
|
||||
* m_Unit to a max value (0x7FFFFFFF).
|
||||
* last character is '?' or not a digit, the reference is tagged as not annotated. For
|
||||
* symbols with multiple parts per package that are not already annotated, set m_unit to
|
||||
* a max value (0x7FFFFFFF).
|
||||
* @see SCH_REFERENCE::Split()
|
||||
*/
|
||||
void SplitReferences()
|
||||
|
@ -296,18 +252,16 @@ public:
|
|||
|
||||
/**
|
||||
* function UpdateAnnotation
|
||||
* Updates the reference components for the schematic project (or the current sheet)
|
||||
* Note: this function does not calculate the reference numbers stored in m_NumRef
|
||||
* So, it must be called after calculation of new reference numbers
|
||||
* Updates the symbol references for the schematic project (or the current sheet).
|
||||
* Note: this function does not calculate the reference numbers stored in m_numRef so it
|
||||
* must be called after calculation of new reference numbers
|
||||
* @see SCH_REFERENCE::Annotate()
|
||||
*/
|
||||
void UpdateAnnotation()
|
||||
{
|
||||
/* update the reference numbers */
|
||||
for( unsigned ii = 0; ii < GetCount(); ii++ )
|
||||
{
|
||||
flatList[ii].Annotate();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -336,10 +290,10 @@ public:
|
|||
* <p>
|
||||
* The following annotation error conditions are tested:
|
||||
* <ul>
|
||||
* <li>Components not annotated.</li>
|
||||
* <li>Components having the same reference designator (duplicates).</li>
|
||||
* <li>Components with multiple parts per package having different reference designators.</li>
|
||||
* <li>Components with multiple parts per package with invalid part count.</li>
|
||||
* <li>Symbols not annotated.</li>
|
||||
* <li>Symbols having the same reference designator (duplicates).</li>
|
||||
* <li>Symbols with multiple parts per package having different reference designators.</li>
|
||||
* <li>Symbols with multiple parts per package with invalid part count.</li>
|
||||
* </ul>
|
||||
* </p>
|
||||
* @param aReporter A sink for error messages. Use NULL_REPORTER if you don't need errors.
|
||||
|
@ -348,10 +302,10 @@ public:
|
|||
int CheckAnnotation( REPORTER& aReporter );
|
||||
|
||||
/**
|
||||
* Function sortByXCoordinate
|
||||
* Function SortByXCoordinate
|
||||
* sorts the list of references by X position.
|
||||
* <p>
|
||||
* Components are sorted as follows:
|
||||
* Symbols are sorted as follows:
|
||||
* <ul>
|
||||
* <li>Numeric value of reference designator.</li>
|
||||
* <li>Sheet number.</li>
|
||||
|
@ -367,10 +321,10 @@ public:
|
|||
}
|
||||
|
||||
/**
|
||||
* Function sortByYCoordinate
|
||||
* Function SortByYCoordinate
|
||||
* sorts the list of references by Y position.
|
||||
* <p>
|
||||
* Components are sorted as follows:
|
||||
* Symbols are sorted as follows:
|
||||
* <ul>
|
||||
* <li>Numeric value of reference designator.</li>
|
||||
* <li>Sheet number.</li>
|
||||
|
@ -386,7 +340,7 @@ public:
|
|||
}
|
||||
|
||||
/**
|
||||
* Function SortComponentsByTimeStamp
|
||||
* Function SortByTimeStamp
|
||||
* sort the flat list by Time Stamp (sheet path + timestamp).
|
||||
* Useful to detect duplicate Time Stamps
|
||||
*/
|
||||
|
@ -399,11 +353,11 @@ public:
|
|||
* Function SortByRefAndValue
|
||||
* sorts the list of references by value.
|
||||
* <p>
|
||||
* Components are sorted in the following order:
|
||||
* Symbols are sorted in the following order:
|
||||
* <ul>
|
||||
* <li>Numeric value of reference designator.</li>
|
||||
* <li>Value of component.</li>
|
||||
* <li>Unit number when component has multiple parts.</li>
|
||||
* <li>Value of symbol.</li>
|
||||
* <li>Unit number when symbol has multiple parts.</li>
|
||||
* <li>Sheet number.</li>
|
||||
* <li>X coordinate position.</li>
|
||||
* <li>Y coordinate position.</li>
|
||||
|
@ -419,10 +373,10 @@ public:
|
|||
* Function SortByReferenceOnly
|
||||
* sorts the list of references by reference.
|
||||
* <p>
|
||||
* Components are sorted in the following order:
|
||||
* Symbols are sorted in the following order:
|
||||
* <ul>
|
||||
* <li>Numeric value of reference designator.</li>
|
||||
* <li>Unit number when component has multiple parts.</li>
|
||||
* <li>Unit number when symbol has multiple parts.</li>
|
||||
* </ul>
|
||||
* </p>
|
||||
*/
|
||||
|
@ -432,26 +386,25 @@ public:
|
|||
}
|
||||
|
||||
/**
|
||||
* searches the list for a component with a given reference.
|
||||
* searches the list for a symbol with a given reference.
|
||||
* @param aPath
|
||||
* @return
|
||||
*/
|
||||
int FindRef( const wxString& aPath ) const;
|
||||
|
||||
/**
|
||||
* searches the sorted list of components for a another component with the same
|
||||
* reference and a given part unit. Use this method to manage components with
|
||||
* multiple parts per package.
|
||||
* @param aIndex = index in aComponentsList for of given SCH_REFERENCE item to test.
|
||||
* searches the sorted list of symbols for a another symbol with the same reference and a
|
||||
* given part unit. Use this method to manage symbols with multiple parts per package.
|
||||
* @param aIndex = index in aSymbolsList for of given SCH_REFERENCE item to test.
|
||||
* @param aUnit = the given unit number to search
|
||||
* @return index in aComponentsList if found or -1 if not found
|
||||
* @return index in aSymbolsList if found or -1 if not found
|
||||
*/
|
||||
int FindUnit( size_t aIndex, int aUnit );
|
||||
|
||||
/**
|
||||
* searches the list for a component with the given KIID path
|
||||
* searches the list for a symbol with the given KIID path
|
||||
* @param aPath path to search
|
||||
* @return index in aComponentsList if found or -1 if not found
|
||||
* @return index in aSymbolsList if found or -1 if not found
|
||||
*/
|
||||
int FindRefByPath( const wxString& aPath ) const;
|
||||
|
||||
|
@ -459,7 +412,7 @@ public:
|
|||
* Function GetRefsInUse
|
||||
* adds all the reference designator numbers greater than \a aMinRefId to \a aIdList
|
||||
* skipping the reference at \a aIndex.
|
||||
* @param aIndex = the current component index to use for reference prefix filtering.
|
||||
* @param aIndex = the current symbol's index to use for reference prefix filtering.
|
||||
* @param aIdList = the buffer to fill
|
||||
* @param aMinRefId = the min id value to store. all values < aMinRefId are ignored
|
||||
*/
|
||||
|
@ -467,9 +420,8 @@ public:
|
|||
|
||||
/**
|
||||
* Function GetLastReference
|
||||
* returns the last used (greatest) reference number in the reference list
|
||||
* for the prefix reference given by \a aIndex. The component list must be
|
||||
* sorted.
|
||||
* returns the last used (greatest) reference number in the reference list for the prefix
|
||||
* used by the symbol pointed to by \a aIndex. The symbol list must be sorted.
|
||||
*
|
||||
* @param aIndex The index of the reference item used for the search pattern.
|
||||
* @param aMinValue The minimum value for the current search.
|
||||
|
@ -486,11 +438,10 @@ public:
|
|||
SCH_REFERENCE& schref = flatList[i];
|
||||
|
||||
printf( " [%-2d] ref:%-8s num:%-3d lib_part:%s\n",
|
||||
i,
|
||||
schref.m_Ref.c_str(),
|
||||
schref.m_NumRef,
|
||||
TO_UTF8( schref.GetLibPart()->GetName() )
|
||||
);
|
||||
i,
|
||||
schref.m_ref.c_str(),
|
||||
schref.m_numRef,
|
||||
TO_UTF8( schref.GetLibPart()->GetName() ) );
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
|
|
@ -261,8 +261,8 @@ void SCH_SHEET_PATH::UpdateAllScreenReferences()
|
|||
|
||||
|
||||
|
||||
void SCH_SHEET_PATH::GetComponents( SCH_REFERENCE_LIST& aReferences, bool aIncludePowerSymbols,
|
||||
bool aForceIncludeOrphanComponents ) const
|
||||
void SCH_SHEET_PATH::GetSymbols( SCH_REFERENCE_LIST& aReferences, bool aIncludePowerSymbols,
|
||||
bool aForceIncludeOrphanComponents ) const
|
||||
{
|
||||
for( SCH_ITEM* item : LastScreen()->Items().OfType( SCH_COMPONENT_T ) )
|
||||
{
|
||||
|
@ -693,16 +693,16 @@ void SCH_SHEET_LIST::AnnotatePowerSymbols()
|
|||
}
|
||||
|
||||
|
||||
void SCH_SHEET_LIST::GetComponents( SCH_REFERENCE_LIST& aReferences, bool aIncludePowerSymbols,
|
||||
bool aForceIncludeOrphanComponents ) const
|
||||
void SCH_SHEET_LIST::GetSymbols( SCH_REFERENCE_LIST& aReferences, bool aIncludePowerSymbols,
|
||||
bool aForceIncludeOrphanComponents ) const
|
||||
{
|
||||
for( const SCH_SHEET_PATH& sheet : *this )
|
||||
sheet.GetComponents( aReferences, aIncludePowerSymbols, aForceIncludeOrphanComponents );
|
||||
sheet.GetSymbols( aReferences, aIncludePowerSymbols, aForceIncludeOrphanComponents );
|
||||
}
|
||||
|
||||
|
||||
void SCH_SHEET_LIST::GetMultiUnitComponents( SCH_MULTI_UNIT_REFERENCE_MAP &aRefList,
|
||||
bool aIncludePowerSymbols ) const
|
||||
void SCH_SHEET_LIST::GetMultiUnitSymbols( SCH_MULTI_UNIT_REFERENCE_MAP &aRefList,
|
||||
bool aIncludePowerSymbols ) const
|
||||
{
|
||||
for( SCH_SHEET_PATHS::const_iterator it = begin(); it != end(); ++it )
|
||||
{
|
||||
|
@ -778,7 +778,7 @@ void SCH_SHEET_LIST::UpdateSymbolInstances(
|
|||
{
|
||||
SCH_REFERENCE_LIST symbolInstances;
|
||||
|
||||
GetComponents( symbolInstances, true, true );
|
||||
GetSymbols( symbolInstances, true, true );
|
||||
|
||||
std::map<KIID_PATH, wxString> pathNameCache;
|
||||
|
||||
|
@ -811,7 +811,7 @@ void SCH_SHEET_LIST::UpdateSymbolInstances(
|
|||
continue;
|
||||
}
|
||||
|
||||
SCH_COMPONENT* symbol = symbolInstances[i].GetComp();
|
||||
SCH_COMPONENT* symbol = symbolInstances[ i ].GetSymbol();
|
||||
|
||||
wxCHECK2( symbol, continue );
|
||||
|
||||
|
|
|
@ -293,8 +293,8 @@ public:
|
|||
* ( orphan components)
|
||||
* The normal option is false, and set to true only to build the full list of components.
|
||||
*/
|
||||
void GetComponents( SCH_REFERENCE_LIST& aReferences, bool aIncludePowerSymbols = true,
|
||||
bool aForceIncludeOrphanComponents = false ) const;
|
||||
void GetSymbols( SCH_REFERENCE_LIST& aReferences, bool aIncludePowerSymbols = true,
|
||||
bool aForceIncludeOrphanComponents = false ) const;
|
||||
|
||||
/**
|
||||
* Add a #SCH_REFERENCE_LIST object to \a aRefList for each same-reference set of
|
||||
|
@ -408,8 +408,8 @@ public:
|
|||
* ( orphan components)
|
||||
* The normal option is false, and set to true only to build the full list of components.
|
||||
*/
|
||||
void GetComponents( SCH_REFERENCE_LIST& aReferences, bool aIncludePowerSymbols = true,
|
||||
bool aForceIncludeOrphanComponents = false ) const;
|
||||
void GetSymbols( SCH_REFERENCE_LIST& aReferences, bool aIncludePowerSymbols = true,
|
||||
bool aForceIncludeOrphanComponents = false ) const;
|
||||
|
||||
/**
|
||||
* Add a #SCH_REFERENCE_LIST object to \a aRefList for each same-reference set of
|
||||
|
@ -419,8 +419,8 @@ public:
|
|||
* @param aRefList Map of reference designators to reference lists
|
||||
* @param aIncludePowerSymbols Set to false to only get normal components.
|
||||
*/
|
||||
void GetMultiUnitComponents( SCH_MULTI_UNIT_REFERENCE_MAP &aRefList,
|
||||
bool aIncludePowerSymbols = true ) const;
|
||||
void GetMultiUnitSymbols( SCH_MULTI_UNIT_REFERENCE_MAP &aRefList,
|
||||
bool aIncludePowerSymbols = true ) const;
|
||||
|
||||
/**
|
||||
* Test every #SCH_SHEET_PATH in this #SCH_SHEET_LIST to verify if adding the sheets stored
|
||||
|
|
|
@ -230,18 +230,18 @@ wxString SCHEMATIC::ConvertRefsToKIIDs( const wxString& aSource ) const
|
|||
wxString ref = token.BeforeFirst( ':', &remainder );
|
||||
SCH_REFERENCE_LIST references;
|
||||
|
||||
sheetList.GetComponents( references );
|
||||
sheetList.GetSymbols( references );
|
||||
|
||||
for( size_t jj = 0; jj < references.GetCount(); jj++ )
|
||||
{
|
||||
SCH_COMPONENT* refComponent = references[ jj ].GetComp();
|
||||
SCH_COMPONENT* refSymbol = references[ jj ].GetSymbol();
|
||||
|
||||
if( ref == refComponent->GetRef( &references[ jj ].GetSheetPath(), true ) )
|
||||
if( ref == refSymbol->GetRef( &references[ jj ].GetSheetPath(), true ) )
|
||||
{
|
||||
wxString test( remainder );
|
||||
|
||||
if( refComponent->ResolveTextVar( &test ) )
|
||||
token = refComponent->m_Uuid.AsString() + ":" + remainder;
|
||||
if( refSymbol->ResolveTextVar( &test ) )
|
||||
token = refSymbol->m_Uuid.AsString() + ":" + remainder;
|
||||
|
||||
break;
|
||||
}
|
||||
|
|
|
@ -141,7 +141,7 @@ SYMBOL_EDIT_FRAME::SYMBOL_EDIT_FRAME( KIWAY* aKiway, wxWindow* aParent ) :
|
|||
InitExitKey();
|
||||
|
||||
updateTitle();
|
||||
DisplayCmpDoc();
|
||||
DisplaySymbolDatasheet();
|
||||
RebuildSymbolUnitsList();
|
||||
|
||||
// Create the infobar
|
||||
|
@ -1252,6 +1252,6 @@ void SYMBOL_EDIT_FRAME::LoadSymbolFromSchematic( const std::unique_ptr<LIB_PART>
|
|||
updateTitle();
|
||||
RebuildSymbolUnitsList();
|
||||
SetShowDeMorgan( GetCurPart()->HasConversion() );
|
||||
DisplayCmpDoc();
|
||||
DisplaySymbolDatasheet();
|
||||
Refresh();
|
||||
}
|
||||
|
|
|
@ -76,8 +76,8 @@ class SYMBOL_EDIT_FRAME : public SCH_BASE_FRAME
|
|||
wxString m_reference;
|
||||
|
||||
// True to force DeMorgan/normal tools selection enabled.
|
||||
// They are enabled when the loaded component has graphic items for converted shape
|
||||
// But under some circumstances (New component created) these tools must left enabled
|
||||
// They are enabled when the loaded symbol has graphic items for converted shape
|
||||
// But under some circumstances (New symbol created) these tools must left enabled
|
||||
static bool m_showDeMorgan;
|
||||
|
||||
public:
|
||||
|
@ -267,7 +267,10 @@ public:
|
|||
bool GetShowDeMorgan() const { return m_showDeMorgan; }
|
||||
void SetShowDeMorgan( bool show ) { m_showDeMorgan = show; }
|
||||
|
||||
void ClearMsgPanel() override { DisplayCmpDoc(); }
|
||||
void ClearMsgPanel() override
|
||||
{
|
||||
DisplaySymbolDatasheet();
|
||||
}
|
||||
|
||||
bool IsSymbolFromSchematic() const { return m_isSymbolFromSchematic; }
|
||||
|
||||
|
@ -324,7 +327,7 @@ private:
|
|||
* @param aConvert Convert to be selected
|
||||
* @return true if the symbol loaded correctly.
|
||||
*/
|
||||
bool LoadComponentFromCurrentLib( const wxString& aAliasName, int aUnit = 0, int aConvert = 0 );
|
||||
bool LoadSymbolFromCurrentLib( const wxString& aAliasName, int aUnit = 0, int aConvert = 0 );
|
||||
|
||||
/**
|
||||
* Create a copy of \a aLibEntry into memory.
|
||||
|
@ -341,24 +344,24 @@ private:
|
|||
|
||||
public:
|
||||
/**
|
||||
* Display the documentation of the selected component.
|
||||
* Display the documentation of the selected symbol.
|
||||
*/
|
||||
void DisplayCmpDoc();
|
||||
void DisplaySymbolDatasheet();
|
||||
|
||||
// General editing
|
||||
/**
|
||||
* Create a copy of the current component, and save it in the undo list.
|
||||
* Create a copy of the current symbol, and save it in the undo list.
|
||||
*
|
||||
* Because a component in library editor does not have a lot of primitives,
|
||||
* the full data is duplicated. It is not worth to try to optimize this save function.
|
||||
* Because a symbol in library editor does not have a lot of primitives, the full data is
|
||||
* duplicated. It is not worth to try to optimize this save function.
|
||||
*/
|
||||
void SaveCopyInUndoList( EDA_ITEM* aItem, UNDO_REDO aUndoType = UNDO_REDO::LIBEDIT,
|
||||
bool aAppend = false );
|
||||
|
||||
void GetComponentFromUndoList();
|
||||
void GetComponentFromRedoList();
|
||||
void GetSymbolFromUndoList();
|
||||
void GetSymbolFromRedoList();
|
||||
|
||||
void RollbackPartFromUndo();
|
||||
void RollbackSymbolFromUndo();
|
||||
|
||||
/**
|
||||
* Free the undo or redo list from \a aList element.
|
||||
|
@ -376,7 +379,7 @@ public:
|
|||
|
||||
private:
|
||||
/**
|
||||
* Read a component symbol file (*.sym ) and add graphic items to the current component.
|
||||
* Read a symbol file (*.sym ) and add graphic items to the current symbol.
|
||||
*
|
||||
* A symbol file *.sym has the same format as a library, and contains only one symbol.
|
||||
*/
|
||||
|
@ -385,7 +388,7 @@ private:
|
|||
/**
|
||||
* Saves the current symbol to a symbol file.
|
||||
*
|
||||
* The symbol file format is similar to the standard component library file format, but
|
||||
* The symbol file format is similar to the standard symbol library file format, but
|
||||
* there is only one symbol. Invisible pins are not saved.
|
||||
*/
|
||||
void SaveOneSymbol();
|
||||
|
@ -401,7 +404,7 @@ public:
|
|||
* @param aConvert the DeMorgan variant to show
|
||||
* @return true if the symbol defined by \a aLibId was loaded.
|
||||
*/
|
||||
bool LoadComponentAndSelectLib( const LIB_ID& aLibId, int aUnit, int aConvert );
|
||||
bool LoadSymbolAndSelectLib( const LIB_ID& aLibId, int aUnit, int aConvert );
|
||||
|
||||
/**
|
||||
* Print a page
|
||||
|
@ -411,9 +414,9 @@ public:
|
|||
void PrintPage( RENDER_SETTINGS* aSettings ) override;
|
||||
|
||||
/**
|
||||
* Creates the SVG print file for the current edited component.
|
||||
* Creates the SVG print file for the current edited symbol.
|
||||
*/
|
||||
void SVG_PlotComponent( const wxString& aFullFileName );
|
||||
void SVGPlotSymbol( const wxString& aFullFileName );
|
||||
|
||||
/**
|
||||
* Synchronize the library manager to the symbol library table, and then the symbol tree
|
||||
|
@ -461,7 +464,7 @@ public:
|
|||
* @param aConvert the alternate body style of the symbol to edit.
|
||||
*/
|
||||
void LoadSymbolFromSchematic( const std::unique_ptr<LIB_PART>& aSymbol,
|
||||
const wxString& aReference, int aUnit, int aConvert );
|
||||
const wxString& aReference, int aUnit, int aConvert );
|
||||
|
||||
///> Restores the empty editor screen, without any part or library selected.
|
||||
void emptyScreen();
|
||||
|
@ -483,16 +486,17 @@ private:
|
|||
///> Returns currently edited part.
|
||||
LIB_PART* getTargetPart() const;
|
||||
|
||||
///> Returns either the part selected in the component tree, if context menu is active
|
||||
///> or the currently modified part.
|
||||
///> Returns either the part selected in the symbol tree, if context menu is active or the
|
||||
///> currently modified part.
|
||||
LIB_ID getTargetLibId() const;
|
||||
|
||||
///> Returns either the library selected in the component tree, if context menu is active
|
||||
///> or the library that is currently modified.
|
||||
///> Returns either the library selected in the symbol tree, if context menu is active or
|
||||
///> the library that is currently modified.
|
||||
wxString getTargetLib() const;
|
||||
|
||||
/* Returns true when the operation has succeeded (all requested libraries have been saved or
|
||||
* none was selected and confirmed by OK).
|
||||
/*
|
||||
* Returns true when the operation has succeeded (all requested libraries have been saved
|
||||
* or none was selected and confirmed by OK).
|
||||
* @param aRequireConfirmation when true, the user must be asked to confirm.
|
||||
*/
|
||||
bool saveAllLibraries( bool aRequireConfirmation );
|
||||
|
@ -506,7 +510,7 @@ private:
|
|||
///> Returns true if \a aLibId is an alias for the editor screen part.
|
||||
bool isCurrentPart( const LIB_ID& aLibId ) const;
|
||||
|
||||
///> Renames LIB_PART aliases to avoid conflicts before adding a component to a library
|
||||
///> Renames LIB_PART aliases to avoid conflicts before adding a symbol to a library
|
||||
void ensureUniqueName( LIB_PART* aPart, const wxString& aLibrary );
|
||||
|
||||
DECLARE_EVENT_TABLE()
|
||||
|
|
|
@ -148,7 +148,7 @@ bool SYMBOL_EDIT_FRAME::saveCurrentPart()
|
|||
}
|
||||
|
||||
|
||||
bool SYMBOL_EDIT_FRAME::LoadComponentAndSelectLib( const LIB_ID& aLibId, int aUnit, int aConvert )
|
||||
bool SYMBOL_EDIT_FRAME::LoadSymbolAndSelectLib( const LIB_ID& aLibId, int aUnit, int aConvert )
|
||||
{
|
||||
if( GetCurPart() && GetCurPart()->GetLibId() == aLibId
|
||||
&& GetUnit() == aUnit && GetConvert() == aConvert )
|
||||
|
@ -167,12 +167,12 @@ bool SYMBOL_EDIT_FRAME::LoadComponentAndSelectLib( const LIB_ID& aLibId, int aUn
|
|||
}
|
||||
|
||||
SelectActiveLibrary( aLibId.GetLibNickname() );
|
||||
return LoadComponentFromCurrentLib( aLibId.GetLibItemName(), aUnit, aConvert );
|
||||
return LoadSymbolFromCurrentLib( aLibId.GetLibItemName(), aUnit, aConvert );
|
||||
}
|
||||
|
||||
|
||||
bool SYMBOL_EDIT_FRAME::LoadComponentFromCurrentLib( const wxString& aAliasName, int aUnit,
|
||||
int aConvert )
|
||||
bool SYMBOL_EDIT_FRAME::LoadSymbolFromCurrentLib( const wxString& aAliasName, int aUnit,
|
||||
int aConvert )
|
||||
{
|
||||
LIB_PART* alias = nullptr;
|
||||
|
||||
|
@ -264,7 +264,7 @@ bool SYMBOL_EDIT_FRAME::LoadOneLibraryPartAux( LIB_PART* aEntry, const wxString&
|
|||
|
||||
// Display the document information based on the entry selected just in
|
||||
// case the entry is an alias.
|
||||
DisplayCmpDoc();
|
||||
DisplaySymbolDatasheet();
|
||||
Refresh();
|
||||
|
||||
return true;
|
||||
|
@ -750,7 +750,7 @@ void SYMBOL_EDIT_FRAME::UpdateAfterSymbolProperties( wxString* aOldName )
|
|||
RebuildSymbolUnitsList();
|
||||
SetShowDeMorgan( GetCurPart()->Flatten()->HasConversion() );
|
||||
updateTitle();
|
||||
DisplayCmpDoc();
|
||||
DisplaySymbolDatasheet();
|
||||
|
||||
RebuildView();
|
||||
OnModify();
|
||||
|
@ -1136,7 +1136,7 @@ bool SYMBOL_EDIT_FRAME::saveAllLibraries( bool aRequireConfirmation )
|
|||
}
|
||||
|
||||
|
||||
void SYMBOL_EDIT_FRAME::DisplayCmpDoc()
|
||||
void SYMBOL_EDIT_FRAME::DisplaySymbolDatasheet()
|
||||
{
|
||||
EDA_DRAW_FRAME::ClearMsgPanel();
|
||||
|
||||
|
|
|
@ -29,7 +29,7 @@
|
|||
#include <class_library.h>
|
||||
#include <plotters_specific.h>
|
||||
|
||||
void SYMBOL_EDIT_FRAME::SVG_PlotComponent( const wxString& aFullFileName )
|
||||
void SYMBOL_EDIT_FRAME::SVGPlotSymbol( const wxString& aFullFileName )
|
||||
{
|
||||
KIGFX::SCH_RENDER_SETTINGS renderSettings;
|
||||
renderSettings.LoadColors( GetColorSettings() );
|
||||
|
|
|
@ -57,7 +57,7 @@ void SYMBOL_EDIT_FRAME::SaveCopyInUndoList( EDA_ITEM* aItem, UNDO_REDO aUndoType
|
|||
}
|
||||
|
||||
|
||||
void SYMBOL_EDIT_FRAME::GetComponentFromRedoList()
|
||||
void SYMBOL_EDIT_FRAME::GetSymbolFromRedoList()
|
||||
{
|
||||
if( GetRedoCommandCount() <= 0 )
|
||||
return;
|
||||
|
@ -105,7 +105,7 @@ void SYMBOL_EDIT_FRAME::GetComponentFromRedoList()
|
|||
}
|
||||
|
||||
|
||||
void SYMBOL_EDIT_FRAME::GetComponentFromUndoList()
|
||||
void SYMBOL_EDIT_FRAME::GetSymbolFromUndoList()
|
||||
{
|
||||
if( GetUndoCommandCount() <= 0 )
|
||||
return;
|
||||
|
@ -153,7 +153,7 @@ void SYMBOL_EDIT_FRAME::GetComponentFromUndoList()
|
|||
}
|
||||
|
||||
|
||||
void SYMBOL_EDIT_FRAME::RollbackPartFromUndo()
|
||||
void SYMBOL_EDIT_FRAME::RollbackSymbolFromUndo()
|
||||
{
|
||||
m_toolManager->RunAction( EE_ACTIONS::clearSelection, true );
|
||||
|
||||
|
|
|
@ -46,7 +46,7 @@ void SCH_EDITOR_CONTROL::AssignFootprints( const std::string& aChangedSetOfRefer
|
|||
SCH_SHEET_LIST sheets = m_frame->Schematic().GetSheets();
|
||||
bool isChanged = false;
|
||||
|
||||
sheets.GetComponents( refs, false );
|
||||
sheets.GetSymbols( refs, false );
|
||||
|
||||
DSNLEXER lexer( aChangedSetOfReferences, FROM_UTF8( __func__ ) );
|
||||
PTREE doc;
|
||||
|
@ -81,7 +81,7 @@ void SCH_EDITOR_CONTROL::AssignFootprints( const std::string& aChangedSetOfRefer
|
|||
// We have found a candidate.
|
||||
// Note: it can be not unique (multiple parts per package)
|
||||
// So we *do not* stop the search here
|
||||
SCH_COMPONENT* component = refs[ii].GetComp();
|
||||
SCH_COMPONENT* component = refs[ ii ].GetSymbol();
|
||||
// For backwards-compatibility CvPcb currently updates all instances of a
|
||||
// component (even though it lists these instances separately).
|
||||
SCH_SHEET_PATH* sheetPath = nullptr; // &refs[ii].GetSheetPath();
|
||||
|
@ -122,7 +122,7 @@ bool SCH_EDITOR_CONTROL::processCmpToFootprintLinkFile( const wxString& aFullFil
|
|||
SCH_REFERENCE_LIST referencesList;
|
||||
SCH_SHEET_LIST sheetList = m_frame->Schematic().GetSheets();
|
||||
|
||||
sheetList.GetComponents( referencesList, false );
|
||||
sheetList.GetSymbols( referencesList, false );
|
||||
|
||||
FILE* cmpFile = wxFopen( aFullFilename, wxT( "rt" ) );
|
||||
|
||||
|
@ -182,13 +182,13 @@ bool SCH_EDITOR_CONTROL::processCmpToFootprintLinkFile( const wxString& aFullFil
|
|||
// We have found a candidate.
|
||||
// Note: it can be not unique (multiple units per part)
|
||||
// So we *do not* stop the search here
|
||||
SCH_COMPONENT* component = referencesList[ii].GetComp();
|
||||
SCH_COMPONENT* symbol = referencesList[ ii ].GetSymbol();
|
||||
SCH_SHEET_PATH* sheetPath = &referencesList[ii].GetSheetPath();
|
||||
|
||||
component->SetFootprint( sheetPath, footprint );
|
||||
symbol->SetFootprint( sheetPath, footprint );
|
||||
|
||||
if( aForceVisibilityState )
|
||||
component->GetField( FOOTPRINT_FIELD )->SetVisible( aVisibilityState );
|
||||
symbol->GetField( FOOTPRINT_FIELD )->SetVisible( aVisibilityState );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -74,8 +74,8 @@ bool BACK_ANNOTATE::BackAnnotateSymbols( const std::string& aNetlist )
|
|||
getPcbModulesFromString( aNetlist );
|
||||
|
||||
SCH_SHEET_LIST sheets = m_frame->Schematic().GetSheets();
|
||||
sheets.GetComponents( m_refs, false );
|
||||
sheets.GetMultiUnitComponents( m_multiUnitsRefs );
|
||||
sheets.GetSymbols( m_refs, false );
|
||||
sheets.GetMultiUnitSymbols( m_multiUnitsRefs );
|
||||
|
||||
getChangeList();
|
||||
checkForUnusedSymbols();
|
||||
|
@ -230,7 +230,7 @@ void BACK_ANNOTATE::getChangeList()
|
|||
|
||||
for( size_t i = 0; i < refList.GetCount(); ++i )
|
||||
{
|
||||
refList[i].GetComp()->ClearFlags( SKIP_STRUCT );
|
||||
refList[ i ].GetSymbol()->ClearFlags(SKIP_STRUCT );
|
||||
m_changelist.emplace_back( CHANGELIST_ITEM( refList[i], pcbData ) );
|
||||
}
|
||||
|
||||
|
@ -248,7 +248,7 @@ void BACK_ANNOTATE::getChangeList()
|
|||
|
||||
if( refIndex >= 0 )
|
||||
{
|
||||
m_refs[refIndex].GetComp()->ClearFlags( SKIP_STRUCT );
|
||||
m_refs[ refIndex ].GetSymbol()->ClearFlags(SKIP_STRUCT );
|
||||
m_changelist.emplace_back( CHANGELIST_ITEM( m_refs[refIndex], pcbData ) );
|
||||
}
|
||||
else
|
||||
|
@ -304,13 +304,13 @@ void BACK_ANNOTATE::applyChangelist()
|
|||
// Apply changes from change list
|
||||
for( CHANGELIST_ITEM& item : m_changelist )
|
||||
{
|
||||
SCH_REFERENCE& ref = item.first;
|
||||
PCB_FP_DATA& fpData = *item.second;
|
||||
SCH_COMPONENT* comp = ref.GetComp();
|
||||
SCH_SCREEN* screen = ref.GetSheetPath().LastScreen();
|
||||
wxString oldFootprint = ref.GetFootprint();
|
||||
wxString oldValue = ref.GetValue();
|
||||
bool skip = ( ref.GetComp()->GetFlags() & SKIP_STRUCT ) > 0;
|
||||
SCH_REFERENCE& ref = item.first;
|
||||
PCB_FP_DATA& fpData = *item.second;
|
||||
SCH_COMPONENT* symbol = ref.GetSymbol();
|
||||
SCH_SCREEN* screen = ref.GetSheetPath().LastScreen();
|
||||
wxString oldFootprint = ref.GetFootprint();
|
||||
wxString oldValue = ref.GetValue();
|
||||
bool skip = ( ref.GetSymbol()->GetFlags() & SKIP_STRUCT ) > 0;
|
||||
|
||||
if( m_processReferences && ref.GetRef() != fpData.m_ref && !skip )
|
||||
{
|
||||
|
@ -321,9 +321,9 @@ void BACK_ANNOTATE::applyChangelist()
|
|||
|
||||
if( !m_dryRun )
|
||||
{
|
||||
m_frame->SaveCopyInUndoList( screen, comp, UNDO_REDO::CHANGED, m_appendUndo );
|
||||
m_frame->SaveCopyInUndoList( screen, symbol, UNDO_REDO::CHANGED, m_appendUndo );
|
||||
m_appendUndo = true;
|
||||
comp->SetRef( &ref.GetSheetPath(), fpData.m_ref );
|
||||
symbol->SetRef( &ref.GetSheetPath(), fpData.m_ref );
|
||||
}
|
||||
|
||||
m_reporter.ReportHead( msg, RPT_SEVERITY_ACTION );
|
||||
|
@ -339,9 +339,9 @@ void BACK_ANNOTATE::applyChangelist()
|
|||
|
||||
if( !m_dryRun )
|
||||
{
|
||||
m_frame->SaveCopyInUndoList( screen, comp, UNDO_REDO::CHANGED, m_appendUndo );
|
||||
m_frame->SaveCopyInUndoList( screen, symbol, UNDO_REDO::CHANGED, m_appendUndo );
|
||||
m_appendUndo = true;
|
||||
comp->SetFootprint( &ref.GetSheetPath(), fpData.m_footprint );
|
||||
symbol->SetFootprint( &ref.GetSheetPath(), fpData.m_footprint );
|
||||
}
|
||||
|
||||
m_reporter.ReportHead( msg, RPT_SEVERITY_ACTION );
|
||||
|
@ -357,9 +357,9 @@ void BACK_ANNOTATE::applyChangelist()
|
|||
|
||||
if( !m_dryRun )
|
||||
{
|
||||
m_frame->SaveCopyInUndoList( screen, comp, UNDO_REDO::CHANGED, m_appendUndo );
|
||||
m_frame->SaveCopyInUndoList( screen, symbol, UNDO_REDO::CHANGED, m_appendUndo );
|
||||
m_appendUndo = true;
|
||||
comp->SetValue( &ref.GetSheetPath(), fpData.m_value );
|
||||
symbol->SetValue( &ref.GetSheetPath(), fpData.m_value );
|
||||
}
|
||||
|
||||
m_reporter.ReportHead( msg, RPT_SEVERITY_ACTION );
|
||||
|
@ -371,7 +371,7 @@ void BACK_ANNOTATE::applyChangelist()
|
|||
{
|
||||
const wxString& pinNumber = entry.first;
|
||||
const wxString& shortNetName = entry.second;
|
||||
SCH_PIN* pin = comp->GetPin( pinNumber );
|
||||
SCH_PIN* pin = symbol->GetPin( pinNumber );
|
||||
|
||||
if( !pin )
|
||||
{
|
||||
|
@ -421,7 +421,7 @@ static LABEL_SPIN_STYLE orientLabel( SCH_PIN* aPin )
|
|||
case PIN_RIGHT: spin = LABEL_SPIN_STYLE::LEFT; break;
|
||||
}
|
||||
|
||||
// Reorient based on the actual component orientation now
|
||||
// Reorient based on the actual symbol orientation now
|
||||
struct ORIENT
|
||||
{
|
||||
int flag;
|
||||
|
@ -447,16 +447,16 @@ static LABEL_SPIN_STYLE orientLabel( SCH_PIN* aPin )
|
|||
|
||||
ORIENT o = orientations[ 0 ];
|
||||
|
||||
SCH_COMPONENT* comp = aPin->GetParentSymbol();
|
||||
SCH_COMPONENT* parentSymbol = aPin->GetParentSymbol();
|
||||
|
||||
if( !comp )
|
||||
if( !parentSymbol )
|
||||
return spin;
|
||||
|
||||
int compOrient = comp->GetOrientation();
|
||||
int symbolOrientation = parentSymbol->GetOrientation();
|
||||
|
||||
for( auto& i : orientations )
|
||||
{
|
||||
if( i.flag == compOrient )
|
||||
if( i.flag == symbolOrientation )
|
||||
{
|
||||
o = i;
|
||||
break;
|
||||
|
|
|
@ -899,7 +899,7 @@ void EE_POINT_EDITOR::saveItemsToUndo()
|
|||
void EE_POINT_EDITOR::rollbackFromUndo()
|
||||
{
|
||||
if( m_isSymbolEditor )
|
||||
static_cast<SYMBOL_EDIT_FRAME*>( m_frame )->RollbackPartFromUndo();
|
||||
static_cast<SYMBOL_EDIT_FRAME*>( m_frame )->RollbackSymbolFromUndo();
|
||||
else
|
||||
static_cast<SCH_EDIT_FRAME*>( m_frame )->RollbackSchematicFromUndo();
|
||||
}
|
||||
|
|
|
@ -379,7 +379,7 @@ int LIB_CONTROL::ExportSymbolAsSVG( const TOOL_EVENT& aEvent )
|
|||
pageTemp.SetHeightMils( int( componentSize.y * 1.2 ) );
|
||||
|
||||
editFrame->GetScreen()->SetPageSettings( pageTemp );
|
||||
editFrame->SVG_PlotComponent( fullFileName );
|
||||
editFrame->SVGPlotSymbol( fullFileName );
|
||||
editFrame->GetScreen()->SetPageSettings( pageSave );
|
||||
}
|
||||
|
||||
|
|
|
@ -527,7 +527,7 @@ void LIB_EDIT_TOOL::editFieldProperties( LIB_FIELD* aField )
|
|||
updateItem( aField, true );
|
||||
m_frame->GetCanvas()->Refresh();
|
||||
m_frame->OnModify();
|
||||
m_frame->DisplayCmpDoc();
|
||||
m_frame->DisplaySymbolDatasheet();
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -594,7 +594,7 @@ int LIB_EDIT_TOOL::PinTable( const TOOL_EVENT& aEvent )
|
|||
|
||||
int LIB_EDIT_TOOL::Undo( const TOOL_EVENT& aEvent )
|
||||
{
|
||||
m_frame->GetComponentFromUndoList();
|
||||
m_frame->GetSymbolFromUndoList();
|
||||
|
||||
EE_SELECTION_TOOL* selTool = m_toolMgr->GetTool<EE_SELECTION_TOOL>();
|
||||
selTool->RebuildSelection();
|
||||
|
@ -605,7 +605,7 @@ int LIB_EDIT_TOOL::Undo( const TOOL_EVENT& aEvent )
|
|||
|
||||
int LIB_EDIT_TOOL::Redo( const TOOL_EVENT& aEvent )
|
||||
{
|
||||
m_frame->GetComponentFromRedoList();
|
||||
m_frame->GetSymbolFromRedoList();
|
||||
|
||||
EE_SELECTION_TOOL* selTool = m_toolMgr->GetTool<EE_SELECTION_TOOL>();
|
||||
selTool->RebuildSelection();
|
||||
|
|
|
@ -286,7 +286,7 @@ int LIB_MOVE_TOOL::Main( const TOOL_EVENT& aEvent )
|
|||
|
||||
if( restore_state )
|
||||
{
|
||||
m_frame->RollbackPartFromUndo();
|
||||
m_frame->RollbackSymbolFromUndo();
|
||||
|
||||
if( unselect )
|
||||
m_toolMgr->RunAction( EE_ACTIONS::clearSelection, true );
|
||||
|
|
|
@ -1422,8 +1422,8 @@ int SCH_EDIT_TOOL::Properties( const TOOL_EVENT& aEvent )
|
|||
{
|
||||
auto editor = (SYMBOL_EDIT_FRAME*) m_frame->Kiway().Player( FRAME_SCH_SYMBOL_EDITOR, true );
|
||||
|
||||
editor->LoadComponentAndSelectLib( component->GetLibId(), component->GetUnit(),
|
||||
component->GetConvert() );
|
||||
editor->LoadSymbolAndSelectLib( component->GetLibId(), component->GetUnit(),
|
||||
component->GetConvert());
|
||||
|
||||
editor->Show( true );
|
||||
editor->Raise();
|
||||
|
|
|
@ -1246,7 +1246,7 @@ bool SCH_EDITOR_CONTROL::doCopy()
|
|||
}
|
||||
|
||||
m_supplementaryClipboardInstances.Clear();
|
||||
schematic.GetSheets().GetComponents( m_supplementaryClipboardInstances, true, true );
|
||||
schematic.GetSheets().GetSymbols( m_supplementaryClipboardInstances, true, true );
|
||||
m_supplementaryClipboardPath = m_frame->GetCurrentSheet().Path();
|
||||
|
||||
STRING_FORMATTER formatter;
|
||||
|
|
Loading…
Reference in New Issue