39#include <wx/filename.h> 
   57        return _( 
"(Deleted Item)" );
 
 
   62        return wxT( 
"DELETED_SHEET_ITEM" );
 
 
   93    void Show( 
int , std::ostream&  )
 const override {}
 
 
  110        return path.GetCurrentHash();
 
 
  138    m_sheets = std::move( aOther.m_sheets );
 
 
  156    for( 
size_t i = 0; i < 
size; i++ )
 
 
  186    if( 
size() > aSheetPathToTest.
size() )
 
  189    if( 
size() < aSheetPathToTest.
size() )
 
  193    for( 
unsigned i = 0; i < 
size(); i++ )
 
  195        if( 
at( i )->m_Uuid < aSheetPathToTest.
at( i )->
m_Uuid )
 
  198        if( 
at( i )->m_Uuid != aSheetPathToTest.
at( i )->
m_Uuid )
 
 
  213    if( pageNumComp == 0 )
 
  218        if( virtualPageA > virtualPageB )
 
  220        else if( virtualPageA < virtualPageB )
 
 
  230    if( aSheetPathToTest.
size() > 
size() )
 
  233    for( 
size_t i = 0; i < aSheetPathToTest.
size(); ++i )
 
  235        if( 
at( i )->m_Uuid != aSheetPathToTest.
at( i )->
m_Uuid )
 
 
  286        if( sheet->GetExcludedFromSim() )
 
 
  298        if( sheet->GetExcludedFromBOM() )
 
 
  310        if( sheet->GetExcludedFromBoard() )
 
 
  322        if( sheet->GetDNP() )
 
 
  338    for( 
unsigned i = 1; i < 
size(); i++ )
 
 
  364    for( 
size_t i = 1; i < 
size; i++ )
 
 
  372                                            bool aStripTrailingSeparator )
 const 
  379    if( !
empty() && 
at( 0 )->IsVirtualRootSheet() )
 
  382    if( aUseShortRootName )
 
  390        if( 
size() > startIdx && 
at( startIdx )->GetScreen() )
 
  393        wxFileName fn = fileName;
 
  395        s = fn.GetName() + wxS( 
"/" );
 
  399    for( 
unsigned i = startIdx + 1; i < 
size(); i++ )
 
  402    if( aStripTrailingSeparator && s.EndsWith( 
"/" ) )
 
  403        s = s.Left( s.length() - 1 );
 
 
  411    std::vector<SCH_ITEM*> items;
 
  414                  std::back_inserter( items ),
 
  422    std::optional<wxString> variantName;
 
 
  465                                 bool aForceIncludeOrphanSymbols )
 const 
  470        AppendSymbol( aReferences, symbol, aIncludePowerSymbols, aForceIncludeOrphanSymbols );
 
 
  476                                   bool aIncludePowerSymbols,
 
  477                                   bool aForceIncludeOrphanSymbols )
 const 
  481    if( aIncludePowerSymbols || aSymbol->
GetRef( 
this )[0] != wxT( 
'#' ) )
 
  488            aReferences.
AddItem( schReference );
 
 
  495                                          bool aIncludePowerSymbols )
 const 
 
  507                                            bool aIncludePowerSymbols )
 const 
  511    if( !aIncludePowerSymbols && aSymbol->
GetRef( 
this )[0] == wxT( 
'#' ) )
 
  520        wxString reference_str = schReference.
GetRef();
 
  523        if( reference_str[reference_str.Len() - 1] == 
'?' )
 
  526        aRefList[reference_str].AddItem( schReference );
 
 
  539    auto pair = std::make_pair( aSrcFileName, aDestFileName );
 
  546    wxCHECK_MSG( sch, 
false, 
"No SCHEMATIC found in SCH_SHEET_PATH::TestForRecursion!" );
 
  549    wxFileName srcFn = aSrcFileName;
 
  550    wxFileName destFn = aDestFileName;
 
  552    if( srcFn.IsRelative() )
 
  553        srcFn.MakeAbsolute( rootFn.GetPath() );
 
  555    if( destFn.IsRelative() )
 
  556        destFn.MakeAbsolute( rootFn.GetPath() );
 
  559    if( srcFn == destFn )
 
  574        if( cmpFn.IsRelative() )
 
  575            cmpFn.MakeAbsolute( rootFn.GetPath() );
 
  578        if( cmpFn == destFn )
 
  586    if( i >= 
size() || i == 0 )
 
  600        if( cmpFn.IsRelative() )
 
  601            cmpFn.MakeAbsolute( rootFn.GetPath() );
 
 
  621    wxCHECK( sheet, wxEmptyString );
 
 
  634    if( pageStr.ToLong( &page ) )
 
 
  657                                            const wxString& aProjectName )
 
  659    wxCHECK( !aProjectName.IsEmpty(),  );
 
  665    newSheetPath = newSheetPath + currentSheetPath;
 
  671        wxCHECK2( symbol, 
continue );
 
  680            newSymbolInstance.
m_Path = newSheetPath.
Path();
 
  689            newSymbolInstance.
m_Path = newSheetPath.
Path();
 
  698            newSymbolInstance.
m_Path = newSheetPath.
Path();
 
 
  713        wxCHECK2( symbol, 
continue );
 
  719        fullSheetPath = fullSheetPath + currentSheetPath;
 
 
  731    wxLogTrace( 
traceSchSheetPaths, 
"CheckForMissingSymbolInstances for path: %s (project: %s)",
 
  740        wxCHECK2( symbol, 
continue );
 
  753                ( 
LastScreen()->GetFileFormatVersionAtLoad() <= 20200310 ) )
 
  760                           "  Legacy format: Using reference '%s' from field, unit %d",
 
  771                           "  Shared schematic: Setting unannotated reference '%s'",
 
  780                       "  Created instance: ref=%s, path=%s",
 
  786                       "  Symbol %s already has instance: ref=%s, path=%s",
 
 
  802    if( sheetFileName.IsAbsolute() )
 
  808    wxCHECK( screen && parentScreen,  );
 
  811    wxFileName parentFileName = parentScreen->
GetFileName();
 
  815    wxCHECK( fileName.IsAbsolute() && parentFileName.IsAbsolute(),  );
 
  817    if( fileName.GetPath() == parentFileName.GetPath() )
 
  821    else if( fileName.MakeRelativeTo( parentFileName.GetPath() ) )
 
  831                wxT( 
"\n    File name: '%s'" 
  832                     "\n    parent file name '%s'," 
  833                     "\n    sheet '%s' file name '%s'." ),
 
  835                Last()->GetFileName() );
 
 
  841    if( aSheet != 
nullptr )
 
 
  852               "BuildSheetList called with sheet '%s' (UUID=%s, isVirtualRoot=%d)",
 
  864            std::vector<SCH_ITEM*> childSheets;
 
  877    std::vector<SCH_SHEET*> badSheets;
 
  886        std::vector<SCH_ITEM*> childSheets;
 
  893            if( aCheckIntegrity )
 
  898                    badSheets.push_back( sheet );
 
  905                              wxT( 
"Recursion prevented in SCH_SHEET_LIST::BuildSheetList" ) );
 
  912    if( aCheckIntegrity )
 
 
  928        path.CachePageNumber();
 
  930    std::sort( begin(), 
end(),
 
  934            size_t common_len = 0;
 
  935            size_t min_len = std::min( a.
size(), b.
size() );
 
  937            while( common_len < min_len && a.
at( common_len )->
m_Uuid == b.
at( common_len )->
m_Uuid )
 
  942            if( common_len == a.
size() )
 
  944            if( common_len == b.
size() )
 
  955            for( 
size_t i = 0; i < common_len; i++ )
 
  956                ancestor.push_back( a.
at( i )->
m_Uuid );
 
  977    if( aUpdateVirtualPageNums )
 
  979        int virtualPageNum = 1;
 
 
  990        path.CachePageNumber();
 
  992    std::sort( begin(), 
end(),
 
 1000            else if( retval > 0 )
 
 1012    if( aUpdateVirtualPageNums )
 
 1014        int virtualPageNum = 1;
 
 
 1048    auto it = std::remove_if( begin(), 
end(),
 
 1051                                  return std::find( aPageInclusions.begin(),
 
 1052                                                    aPageInclusions.end(),
 
 
 1098    if( aAllowNullptrReturn )
 
 
 1109        if( aItem->m_Uuid == aID )
 
 1117                    if( aChild->
m_Uuid == aID )
 
 1118                        childMatch = aChild;
 
 
 1138            aMap[ aItem->m_Uuid ] = aItem;
 
 1140            aItem->RunOnChildren(
 
 1143                        aMap[ aChild->
m_Uuid ] = aChild;
 
 
 1168            if( libSymbol && libSymbol->
IsPower() )
 
 1171                references.
AddItem( schReference );
 
 1177    std::map<wxString, int> ref_list;   
 
 1179    for( 
unsigned ii = 0; ii< references.
GetCount(); ++ii )
 
 1181        wxString curr_ref = references[ii].GetRef();
 
 1183        if( curr_ref.IsEmpty() )
 
 1186        if( ref_list.find( curr_ref ) == ref_list.end() )
 
 1188            ref_list[curr_ref] = ii;
 
 1193        if( curr_ref.Last() < 
'0' && curr_ref.Last() > 
'9' )
 
 1197        while( !curr_ref.IsEmpty() && curr_ref.Last() >= 
'0' && curr_ref.Last() <= 
'9' )
 
 1198            curr_ref.RemoveLast();
 
 1200        references[ii].SetRef( curr_ref );
 
 1209    for( 
unsigned ii = 0; ii< references.
GetCount(); ++ii )
 
 1213        if( ref_unit.
GetRef()[0] != 
'#' )
 
 1215            wxString new_ref = 
"#" + ref_unit.
GetRef();
 
 1216            ref_unit.
SetRef( new_ref );
 
 
 1224                                 bool aForceIncludeOrphanSymbols )
 const 
 1227        sheet.
GetSymbols( aReferences, aIncludePowerSymbols, aForceIncludeOrphanSymbols );
 
 
 1233                                           bool                  aIncludePowerSymbols,
 
 1234                                           bool                  aForceIncludeOrphanSymbols )
 const 
 1239            sheet.
GetSymbols( aReferences, aIncludePowerSymbols, aForceIncludeOrphanSymbols );
 
 
 1250            aSheets.push_back( sheet );
 
 
 1256                                                                      bool aIncludeLastSheet )
 const 
 1262        if( !aIncludeLastSheet )
 
 1263            testPath.pop_back();
 
 1265        if( testPath == aPath )
 
 1269    return std::nullopt;
 
 
 1274                                          bool aIncludePowerSymbols )
 const 
 1276    for( 
auto it = begin(); it != 
end(); ++it )
 
 1279        ( *it ).GetMultiUnitSymbols( tempMap, aIncludePowerSymbols );
 
 1281        for( SCH_MULTI_UNIT_REFERENCE_MAP::value_type& pair : tempMap )
 
 1284            unsigned n_refs = pair.second.GetCount();
 
 1286            for( 
unsigned thisRef = 0; thisRef < n_refs; ++thisRef )
 
 1287                aRefList[pair.first].AddItem( pair.second[thisRef] );
 
 
 1294                                       const wxString& aDestFileName )
 
 1299    SCHEMATIC* sch = at( 0 ).LastScreen()->Schematic();
 
 1301    wxCHECK_MSG( sch, 
false, 
"No SCHEMATIC found in SCH_SHEET_LIST::TestForRecursion!" );
 
 1304    wxFileName destFn = aDestFileName;
 
 1306    if( destFn.IsRelative() )
 
 1307        destFn.MakeAbsolute( rootFn.GetPath() );
 
 1310    for( 
unsigned i = 0; i < size(); i++ )
 
 1313        for( 
unsigned j = 0; j < aSrcSheetHierarchy.size(); j++ )
 
 1317            for( 
unsigned k = 0; k < sheetPath->
size(); k++ )
 
 
 1364            retval.push_back( sheetpath );
 
 
 1372                                const std::vector<SCH_SYMBOL_INSTANCE>& aSymbolInstances )
 
 1380            wxCHECK2( symbol, 
continue );
 
 1383            sheetPathWithSymbolUuid.push_back( symbol->
m_Uuid );
 
 1385            auto it = std::find_if( aSymbolInstances.begin(), aSymbolInstances.end(),
 
 1388                        return sheetPathWithSymbolUuid == r.m_Path;
 
 1391            if( it == aSymbolInstances.end() )
 
 1394                            sheetPathWithSymbolUuid.
AsString() );
 
 1403            if( !it->m_Value.IsEmpty() )
 
 1406            if( !it->m_Footprint.IsEmpty() )
 
 
 1422        wxCHECK2( sheet && 
path.Last(), 
continue );
 
 1424        auto it = std::find_if( aSheetInstances.begin(), aSheetInstances.end(),
 
 1427                                    return path.Path() == r.m_Path;
 
 1430        if( it == aSheetInstances.end() )
 
 1433                        path.Path().AsString() );
 
 1438                    ( sheet->
GetName().IsEmpty() ) ? wxString( wxT( 
"root" ) ) : sheet->
GetName(),
 
 1439                    path.Path().AsString(), it->m_PageNumber );
 
 1440        path.SetPageNumber( it->m_PageNumber );
 
 
 1447    std::vector<KIID_PATH> paths;
 
 1450        paths.emplace_back( sheetPath.
Path() );
 
 
 1458    std::vector<SCH_SHEET_INSTANCE> retval;
 
 1464        wxCHECK2( sheet, 
continue );
 
 1473        retval.push_back( std::move( instance ) );
 
 
 1505        tmp.Printf( 
"%d", pageNumber );
 
 
 1513                                            const wxString& aProjectName )
 
 
 1528                                           int aLastVirtualPageNumber )
 
 1530    wxString pageNumber;
 
 1531    int lastUsedPageNumber = 1;
 
 1532    int nextVirtualPageNumber = aLastVirtualPageNumber;
 
 1535    std::vector< wxString > usedPageNumbers;
 
 1537    if( aPrefixSheetPath.
size() )
 
 1543            pageNumber = 
path.GetPageNumber();
 
 1545            if( !pageNumber.IsEmpty() )
 
 1546                usedPageNumbers.emplace_back( pageNumber );
 
 1556        newSheetPath = newSheetPath + sheetPath;
 
 1563        wxCHECK2( sheet, 
continue );
 
 1565        nextVirtualPageNumber += 1;
 
 1582                pageNumber.Printf( wxT( 
"%d" ), lastUsedPageNumber );
 
 1583                lastUsedPageNumber += 1;
 
 1584            } 
while( std::find( usedPageNumbers.begin(), usedPageNumbers.end(), pageNumber ) !=
 
 1585                     usedPageNumbers.end() );
 
 
 1600               "SCH_SHEET_LIST::CheckForMissingSymbolInstances: Processing %zu sheet paths",
 
 1606                   "  Processing sheet path: '%s' (size=%zu, KIID_PATH='%s')",
 
 
 1617    int lastVirtualPageNumber = 1;
 
 1625    return lastVirtualPageNumber;
 
 
 1633        if( 
path.Path() == aPath )
 
 
 1645        for( 
size_t i = 0; i < 
path.size(); i++ )
 
 1647            if( 
path.at( i ) == aSheet )
 
 
 1660        return std::nullopt;
 
 1664        if( 
path.LastScreen() == aScreen )
 
 1665            return std::optional<SCH_SHEET_PATH>( 
path );
 
 1668    return std::nullopt;
 
 
bool IsContentModified() const
 
void SetContentModified(bool aModified=true)
 
wxString GetClass() const override
Return the class name.
 
void SetPosition(const VECTOR2I &) override
 
static DELETED_SHEET_ITEM * GetInstance()
 
double Similarity(const SCH_ITEM &aOther) const override
Return a measure of how likely the other object is to represent the same object.
 
void Rotate(const VECTOR2I &aCenter, bool aRotateCCW) override
Rotate the item around aCenter 90 degrees in the clockwise direction.
 
void Move(const VECTOR2I &aMoveVector) override
Move the item by aMoveVector to a new position.
 
wxString GetItemDescription(UNITS_PROVIDER *aUnitsProvider, bool aFull) const override
Return a user-visible description string of this item.
 
bool operator==(const SCH_ITEM &aOther) const override
 
void MirrorVertically(int aCenter) override
Mirror item vertically about aCenter.
 
void MirrorHorizontally(int aCenter) override
Mirror item horizontally about aCenter.
 
KICAD_T Type() const
Returns the type of object.
 
virtual void UpdateHatching() const
 
virtual const wxString & GetText() const
Return the string associated with the text object.
 
virtual bool IsVisible() const
 
virtual void SetVisible(bool aVisible)
 
EE_TYPE OfType(KICAD_T aType) const
 
wxString AsString() const
 
wxString AsString() const
 
Define a library symbol object.
 
bool IsPower() const override
 
int GetUnitCount() const override
 
bool m_IntersheetRefsShow
 
Holds all the data relating to one schematic.
 
wxString GetFileName() const
Helper to retrieve the filename from the root sheet screen.
 
SCHEMATIC_SETTINGS & Settings() const
 
wxString GetCurrentVariant() const
Return the current variant being edited.
 
VECTOR2I GetPosition() const override
 
wxString GetShownText(const SCH_SHEET_PATH *aPath, bool aAllowExtraText, int aDepth=0) const
 
void SetText(const wxString &aText) override
 
SCH_FIELD * GetField(FIELD_T aFieldType)
Return a mandatory field in this label.
 
Base class for any item which can be embedded within the SCHEMATIC container class,...
 
virtual void RunOnChildren(const std::function< void(SCH_ITEM *)> &aFunction, RECURSE_MODE aMode)
 
SCHEMATIC * Schematic() const
Search the item hierarchy to find a SCHEMATIC.
 
virtual void SetUnit(int aUnit)
 
SCH_ITEM(EDA_ITEM *aParent, KICAD_T aType, int aUnit=0, int aBodyStyle=0)
 
void AutoplaceFields(SCH_SCREEN *aScreen, AUTOPLACE_ALGO aAlgo) override
 
std::vector< SCH_FIELD > & GetFields()
 
Container to create a flattened list of symbols because in a complex hierarchy, a symbol can be used ...
 
void SplitReferences()
Attempt to split all reference designators into a name (U) and number (1).
 
void AddItem(const SCH_REFERENCE &aItem)
 
A helper to define a symbol's reference designator in a schematic.
 
void SetRef(const wxString &aReference)
 
void SetSheetNumber(int aSheetNumber)
 
EE_RTREE & Items()
Get the full RTree, usually for iterating.
 
const wxString & GetFileName() const
 
SCHEMATIC * Schematic() const
 
void Update(SCH_ITEM *aItem, bool aUpdateLibSymbol=true)
Update aItem's bounding box in the tree.
 
void GetSheets(std::vector< SCH_ITEM * > *aItems) const
Similar to Items().OfType( SCH_SHEET_T ), but return the sheets in a deterministic order (L-R,...
 
std::optional< SCH_SHEET_PATH > GetSheetPathByKIIDPath(const KIID_PATH &aPath, bool aIncludeLastSheet=true) const
Finds a SCH_SHEET_PATH that matches the provided KIID_PATH.
 
SCH_ITEM * ResolveItem(const KIID &aID, SCH_SHEET_PATH *aPathOut=nullptr, bool aAllowNullptrReturn=false) const
Fetch a SCH_ITEM by ID.
 
void GetMultiUnitSymbols(SCH_MULTI_UNIT_REFERENCE_MAP &aRefList, bool aIncludePowerSymbols=true) const
Add a SCH_REFERENCE_LIST object to aRefList for each same-reference set of multi-unit parts in the li...
 
std::optional< SCH_SHEET_PATH > GetOrdinalPath(const SCH_SCREEN *aScreen) const
Return the ordinal sheet path of aScreen.
 
void FillItemMap(std::map< KIID, EDA_ITEM * > &aMap)
Fill an item cache for temporary use when many items need to be fetched.
 
SCH_SHEET_PATH m_currentSheetPath
 
void TrimToPageNumbers(const std::vector< wxString > &aPageInclusions)
Truncates the list by removing sheet's with page numbers not in the given list.
 
void SortByPageNumbers(bool aUpdateVirtualPageNums=true)
Sort the list of sheets by page number.
 
void AddNewSymbolInstances(const SCH_SHEET_PATH &aPrefixSheetPath, const wxString &aProjectName)
Attempt to add new symbol instances for all symbols in this list of sheet paths prefixed with aPrefix...
 
bool NameExists(const wxString &aSheetName) const
 
std::vector< SCH_SHEET_INSTANCE > GetSheetInstances() const
Fetch the instance information for all of the sheets in the hierarchy.
 
void UpdateSheetInstanceData(const std::vector< SCH_SHEET_INSTANCE > &aSheetInstances)
Update all of the sheet instance information using aSheetInstances.
 
void SetInitialPageNumbers()
Set initial sheet page numbers.
 
void RemoveSymbolInstances(const SCH_SHEET_PATH &aPrefixSheetPath)
 
SCH_SHEET_LIST FindAllSheetsForScreen(const SCH_SCREEN *aScreen) const
Return a SCH_SHEET_LIST with a copy of all the SCH_SHEET_PATH using a particular screen.
 
bool AllSheetPageNumbersEmpty() const
Check all of the sheet instance for empty page numbers.
 
void GetSymbols(SCH_REFERENCE_LIST &aReferences, bool aIncludePowerSymbols=true, bool aForceIncludeOrphanSymbols=false) const
Add a SCH_REFERENCE object to aReferences for each symbol in the list of sheets.
 
bool IsModified() const
Check the entire hierarchy for any modifications.
 
SCH_SHEET_LIST(SCH_SHEET *aSheet=nullptr)
Construct a flattened list of SCH_SHEET_PATH objects from aSheet.
 
void AnnotatePowerSymbols()
Silently annotate the not yet annotated power symbols of the entire hierarchy of the sheet path list.
 
int GetLastVirtualPageNumber() const
 
void UpdateSymbolInstanceData(const std::vector< SCH_SYMBOL_INSTANCE > &aSymbolInstances)
Update all of the symbol instance information using aSymbolInstances.
 
void GetSheetsWithinPath(std::vector< SCH_SHEET_PATH > &aSheets, const SCH_SHEET_PATH &aSheetPath) const
Add a SCH_SHEET_PATH object to aSheets for each sheet in the list that are contained within aSheetPat...
 
bool PageNumberExists(const wxString &aPageNumber) const
 
void SortByHierarchicalPageNumbers(bool aUpdateVirtualPageNums=true)
This works like SortByPageNumbers, but it sorts the sheets first by their hierarchical depth and then...
 
void AddNewSheetInstances(const SCH_SHEET_PATH &aPrefixSheetPath, int aLastVirtualPageNumber)
 
bool ContainsSheet(const SCH_SHEET *aSheet) const
 
std::vector< KIID_PATH > GetPaths() const
 
void GetSymbolsWithinPath(SCH_REFERENCE_LIST &aReferences, const SCH_SHEET_PATH &aSheetPath, bool aIncludePowerSymbols=true, bool aForceIncludeOrphanSymbols=false) const
Add a SCH_REFERENCE object to aReferences for each symbol in the list of sheets that are contained wi...
 
void BuildSheetList(SCH_SHEET *aSheet, bool aCheckIntegrity)
Build the list of sheets and their sheet path from aSheet.
 
SCH_SHEET_PATH FindSheetForScreen(const SCH_SCREEN *aScreen)
Return the first SCH_SHEET_PATH object (not necessarily the only one) using a particular screen.
 
void CheckForMissingSymbolInstances(const wxString &aProjectName)
 
bool HasPath(const KIID_PATH &aPath) const
 
SCH_SHEET_PATH * FindSheetForPath(const SCH_SHEET_PATH *aPath)
Return a pointer to the first SCH_SHEET_PATH object (not necessarily the only one) matching the provi...
 
bool TestForRecursion(const SCH_SHEET_LIST &aSrcSheetHierarchy, const wxString &aDestFileName)
Test every SCH_SHEET_PATH in this SCH_SHEET_LIST to verify if adding the sheets stored in aSrcSheetHi...
 
Handle access to a stack of flattened SCH_SHEET objects by way of a path for creating a flattened sch...
 
bool GetExcludedFromBOM() const
 
void AppendMultiUnitSymbol(SCH_MULTI_UNIT_REFERENCE_MAP &aRefList, SCH_SYMBOL *aSymbol, bool aIncludePowerSymbols=true) const
Append a SCH_REFERENCE_LIST object to aRefList based on aSymbol, storing same-reference set of multi-...
 
const SCH_SHEET * GetSheet(unsigned aIndex) const
 
bool empty() const
Forwarded method from std::vector.
 
void GetSymbols(SCH_REFERENCE_LIST &aReferences, bool aIncludePowerSymbols=true, bool aForceIncludeOrphanSymbols=false) const
Adds SCH_REFERENCE object to aReferences for each symbol in the sheet.
 
int ComparePageNum(const SCH_SHEET_PATH &aSheetPathToTest) const
Compare sheets by their page number.
 
size_t GetCurrentHash() const
 
wxString PathHumanReadable(bool aUseShortRootName=true, bool aStripTrailingSeparator=false) const
Return the sheet path in a human readable form made from the sheet names.
 
bool operator==(const SCH_SHEET_PATH &d1) const
 
void AddNewSymbolInstances(const SCH_SHEET_PATH &aPrefixSheetPath, const wxString &aProjectName)
Attempt to add new symbol instances for all symbols in this sheet path prefixed with aPrefixSheetPath...
 
KIID_PATH Path() const
Get the sheet path as an KIID_PATH.
 
bool TestForRecursion(const wxString &aSrcFileName, const wxString &aDestFileName)
Test the SCH_SHEET_PATH file names to check adding the sheet stored in the file aSrcFileName to the s...
 
void UpdateAllScreenReferences() const
Update all the symbol references for this sheet path.
 
void MakeFilePathRelativeToParentSheet()
Make the sheet file name relative to its parent sheet.
 
SCH_ITEM * ResolveItem(const KIID &aID) const
Fetch a SCH_ITEM by ID.
 
wxString GetCachedPageNumber() const
 
std::vector< SCH_SHEET * > m_sheets
 
SCH_SCREEN * LastScreen()
 
int Cmp(const SCH_SHEET_PATH &aSheetPathToTest) const
Compare if this is the same sheet path as aSheetPathToTest.
 
void GetMultiUnitSymbols(SCH_MULTI_UNIT_REFERENCE_MAP &aRefList, bool aIncludePowerSymbols=true) const
Add a SCH_REFERENCE_LIST object to aRefList for each same-reference set of multi-unit parts in the sh...
 
void initFromOther(const SCH_SHEET_PATH &aOther)
 
wxString m_cached_page_number
 
wxString GetPageNumber() const
 
void RemoveSymbolInstances(const SCH_SHEET_PATH &aPrefixSheetPath)
 
void CheckForMissingSymbolInstances(const wxString &aProjectName)
 
bool IsContainedWithin(const SCH_SHEET_PATH &aSheetPathToTest) const
Check if this path is contained inside aSheetPathToTest.
 
SCH_SHEET * at(size_t aIndex) const
Forwarded method from std::vector.
 
void SetVirtualPageNumber(int aPageNumber)
Set the sheet instance virtual page number.
 
void AppendSymbol(SCH_REFERENCE_LIST &aReferences, SCH_SYMBOL *aSymbol, bool aIncludePowerSymbols=true, bool aForceIncludeOrphanSymbols=false) const
Append a SCH_REFERENCE object to aReferences based on aSymbol.
 
std::map< std::pair< wxString, wxString >, bool > m_recursion_test_cache
 
bool GetExcludedFromSim() const
 
wxString PathAsString() const
Return the path of time stamps which do not changes even when editing sheet parameters.
 
bool GetExcludedFromBoard() const
 
void SetPageNumber(const wxString &aPageNumber)
Set the sheet instance user definable page number.
 
SCH_SHEET_PATH & operator=(const SCH_SHEET_PATH &aOther)
 
int GetPageNumberAsInt() const
 
SCH_SHEET * Last() const
Return a pointer to the last SCH_SHEET of the list.
 
SCH_SHEET_PATH operator+(const SCH_SHEET_PATH &aOther)
 
int m_virtualPageNumber
Page numbers are maintained by the sheet load order.
 
void push_back(SCH_SHEET *aSheet)
Forwarded method from std::vector.
 
size_t size() const
Forwarded method from std::vector.
 
int GetVirtualPageNumber() const
 
void pop_back()
Forwarded method from std::vector.
 
Sheet symbol placed in a schematic, and is the entry point for a sub schematic.
 
void SetFileName(const wxString &aFilename)
 
wxString GetFileName() const
Return the filename corresponding to this sheet.
 
bool getInstance(SCH_SHEET_INSTANCE &aInstance, const KIID_PATH &aSheetPath, bool aTestFromEnd=false) const
 
bool addInstance(const KIID_PATH &aInstance)
Add a new instance aSheetPath to the instance list.
 
wxString getPageNumber(const KIID_PATH &aParentPath) const
Return the sheet page number for aParentPath.
 
SCH_FIELD * GetField(FIELD_T aFieldType)
Return a mandatory field in this sheet.
 
SCH_SCREEN * GetScreen() const
 
static int ComparePageNum(const wxString &aPageNumberA, const wxString &aPageNumberB)
Compare page numbers of schematic sheets.
 
void setPageNumber(const KIID_PATH &aInstance, const wxString &aPageNumber)
Set the page number for the sheet instance aInstance.
 
bool IsVirtualRootSheet() const
 
void InitializeAttributes(const SCH_SYMBOL &aSymbol)
 
void UpdatePrefix()
Set the prefix based on the current reference designator.
 
bool GetExcludedFromSim(const SCH_SHEET_PATH *aInstance=nullptr, const wxString &aVariantName=wxEmptyString) const override
 
const std::vector< SCH_SYMBOL_INSTANCE > & GetInstances() const
 
void RemoveInstance(const SCH_SHEET_PATH &aInstancePath)
 
void SetValueFieldText(const wxString &aValue)
 
bool GetExcludedFromBOM(const SCH_SHEET_PATH *aInstance=nullptr, const wxString &aVariantName=wxEmptyString) const override
 
void SetFootprintFieldText(const wxString &aFootprint)
 
void AddHierarchicalReference(const KIID_PATH &aPath, const wxString &aRef, int aUnit)
Add a full hierarchical reference to this symbol.
 
bool GetInstance(SCH_SYMBOL_INSTANCE &aInstance, const KIID_PATH &aSheetPath, bool aTestFromEnd=false) const
 
int GetUnitSelection(const SCH_SHEET_PATH *aSheet) const
Return the instance-specific unit selection for the given sheet path.
 
std::unique_ptr< LIB_SYMBOL > & GetLibSymbolRef()
 
virtual bool GetDNP(const SCH_SHEET_PATH *aInstance=nullptr, const wxString &aVariantName=wxEmptyString) const override
Set or clear the 'Do Not Populate' flag.
 
const wxString GetRef(const SCH_SHEET_PATH *aSheet, bool aIncludeUnit=false) const override
 
wxString GetPrefix() const
 
SCH_FIELD * GetField(FIELD_T aFieldType)
Return a mandatory field in this symbol.
 
static bool empty(const wxTextEntryBase *aCtrl)
 
const wxChar *const tracePathsAndFiles
Flag to enable path and file name debug output.
 
const wxChar *const traceSchSheetPaths
Flag to enable debug output of schematic symbol sheet path manipulation code.
 
static constexpr void hash_combine(std::size_t &seed)
This is a dummy function to take the final case of hash_combine below.
 
wxString GetRefDesUnannotated(const wxString &aSource)
Return an unannotated refdes from either a prefix or an existing refdes.
 
Collection of utility functions for component reference designators (refdes)
 
Definition of the SCH_SHEET_PATH and SCH_SHEET_LIST classes for Eeschema.
 
std::map< wxString, SCH_REFERENCE_LIST > SCH_MULTI_UNIT_REFERENCE_MAP
Container to map reference designators for multi-unit parts.
 
A simple container for sheet instance information.
 
A simple container for schematic symbol instance information.
 
size_t operator()(const SCH_SHEET_PATH &path) const
 
@ INTERSHEET_REFS
Global label cross-reference page numbers.
 
@ REFERENCE
Field Reference of part, i.e. "IC21".
 
wxLogTrace helper definitions.
 
@ NOT_USED
the 3d code uses this value
 
VECTOR2< int32_t > VECTOR2I