30#include <unordered_set> 
   33#include <wx/chartype.h> 
   87    std::vector<std::pair<FIELD_T, wxString>> 
Fields;
 
 
  133        return wxT( 
"SCH_SCREEN" );
 
 
  208    void Clear( 
bool aFree = 
true );
 
  298                           std::function<
void( 
SCH_ITEM* )>* aChangedHandler = 
nullptr ) 
const;
 
  376                     bool aEndPointOnly = 
false ) 
const;
 
  418    void GetSheets( std::vector<SCH_ITEM*>* aItems ) 
const;
 
  453                                             bool aIgnoreEndpoints = 
false ) 
const;
 
  468    std::vector<VECTOR2I> 
GetNeededJunctions( 
const std::deque<EDA_ITEM*>& aItems ) 
const;
 
  508    void AddBusAlias( std::shared_ptr<BUS_ALIAS> aAlias );
 
  551    void Show( 
int nestLevel, std::ostream& os ) 
const override;
 
  631                       bool* aHasExplicitJunctionDot, 
bool* aHasBusEntry ) 
const;
 
 
  772                        bool aIncludeExclusions = 
true );
 
  832    bool HasSchematic( 
const wxString& aSchematicFileName );
 
 
BASE_SCREEN class implementation.
 
BASE_SCREEN(EDA_ITEM *aParent, KICAD_T aType=SCREEN_T)
 
A base class for most all the KiCad significant classes used in schematics and boards.
 
EDA_ITEM(EDA_ITEM *parent, KICAD_T idType, bool isSCH_ITEM=false, bool isBOARD_ITEM=false)
 
Implement an R-tree for fast spatial and type indexing of schematic items.
 
A logical library item identifier and consists of various portions much like a URI.
 
Define a library symbol object.
 
Describe the page size and margins of a paper page on which to eventually print or plot.
 
Base plotter engine class.
 
A pure virtual class used to derive REPORTER objects from.
 
Holds all the data relating to one schematic.
 
Schematic editor (Eeschema) main window.
 
Object to parser s-expression symbol library and schematic file formats.
 
A SCH_IO derivation for loading schematic files using the new s-expression file format.
 
Base class for any item which can be embedded within the SCHEMATIC container class,...
 
Segment description base class to describe items which have 2 end points (track, wire,...
 
std::vector< SCH_SHEET * > m_sheets
 
SCH_SCREEN * GetScreen(unsigned int aIndex) const
 
void UpdateSymbolLinks(REPORTER *aReporter=nullptr)
Initialize the LIB_SYMBOL reference for each SCH_SYMBOL found in the full schematic.
 
void DeleteMarker(SCH_MARKER *aMarker)
Delete a specific marker.
 
void DeleteMarkers(enum MARKER_BASE::MARKER_T aMarkerTyp, int aErrorCode, bool aIncludeExclusions=true)
Delete all markers of a particular type and error code.
 
void buildScreenList(SCH_SHEET *aSheet)
 
void FixLegacyPowerSymbolMismatches()
Fix legacy power symbols that have mismatched value text fields and invisible power pin names.
 
void DeleteAllMarkers(enum MARKER_BASE::MARKER_T aMarkerType, bool aIncludeExclusions)
Delete all electronic rules check markers of aMarkerType from all the screens in the list.
 
void PruneOrphanedSheetInstances(const wxString &aProjectName, const SCH_SHEET_LIST &aValidSheetPaths)
 
int ChangeSymbolLibNickname(const wxString &aFrom, const wxString &aTo)
Change all of the symbol library nicknames.
 
SCH_SCREENS(SCH_SHEET *aSheet)
 
SCH_SCREENS(SCH_SHEET &aSheet)
 
void BuildClientSheetPathList()
Build the list of sheet paths sharing a screen for each screen in use.
 
bool HasSymbolFieldNamesWithWhiteSpace() const
 
void ClearAnnotationOfNewSheetPaths(SCH_SHEET_LIST &aInitialSheetPathList)
Clear the annotation for the symbols inside new sheetpaths when a complex hierarchy is modified and n...
 
void DeleteVariant(const wxString &aVariantName)
 
void PruneOrphanedSymbolInstances(const wxString &aProjectName, const SCH_SHEET_LIST &aValidSheetPaths)
 
bool HasNoFullyDefinedLibIds()
Test all of the schematic symbols to see if all LIB_ID objects library nickname is not set.
 
SCH_SHEET * GetSheet(unsigned int aIndex) const
 
int ReplaceDuplicateTimeStamps()
Test all sheet and symbol objects in the schematic for duplicate time stamps and replaces them as nec...
 
std::set< wxString > GetVariantNames() const
 
std::vector< SCH_SCREEN * > m_screens
 
bool HasSchematic(const wxString &aSchematicFileName)
Check if one of the schematics in the list of screens is aSchematicFileName.
 
size_t GetLibNicknames(wxArrayString &aLibNicknames)
Fetch all of the symbol library nicknames into aLibNicknames.
 
void SetLegacySymbolInstanceData()
Update the symbol value and footprint instance data for legacy designs.
 
void addScreenToList(SCH_SCREEN *aScreen, SCH_SHEET *aSheet)
 
void SetFileFormatVersionAtLoad(int aVersion)
 
const PAGE_INFO & GetPageSettings() const
 
std::set< wxString > GetVariantNames() const
 
std::map< wxString, LIB_SYMBOL * > m_libSymbols
Library symbols required for this schematic.
 
SCH_PIN * GetPin(const VECTOR2I &aPosition, SCH_SYMBOL **aSymbol=nullptr, bool aEndPointOnly=false) const
Test the screen for a symbol pin item at aPosition.
 
bool m_fileExists
Flag to indicate the file associated with this screen has been created.
 
void ClearDrawingState()
Clear the state flags of all the items in the screen.
 
std::vector< SCH_SHEET_INSTANCE > m_sheetInstances
 
SCH_LINE * GetLine(const VECTOR2I &aPosition, int aAccuracy=0, int aLayer=LAYER_NOTES, SCH_LINE_TEST_T aSearchType=ENTIRE_LENGTH_T) const
Return a line item located at aPosition.
 
void SetTitleBlock(const TITLE_BLOCK &aTitleBlock)
 
void Append(SCH_ITEM *aItem, bool aUpdateLibSymbol=true)
 
void AddLibSymbol(LIB_SYMBOL *aLibSymbol)
Add aLibSymbol to the library symbol map.
 
bool HasSymbolFieldNamesWithWhiteSpace() const
 
void AddBusAlias(std::shared_ptr< BUS_ALIAS > aAlias)
Add a bus alias definition.
 
void FixLegacyPowerSymbolMismatches()
Fix legacy power symbols that have mismatched value text fields and invisible power pin names.
 
bool HasItems(KICAD_T aItemType) const
 
void Clear(bool aFree=true)
Delete all draw items and clears the project settings.
 
bool HasInstanceDataFromOtherProjects() const
Check symbols for instance data from other projects.
 
void PruneOrphanedSymbolInstances(const wxString &aProjectName, const SCH_SHEET_LIST &aValidSheetPaths)
Remove all invalid symbol instance data in this screen object for the project defined by aProjectName...
 
std::vector< SCH_SHEET_PATH > & GetClientSheetPaths()
Return the number of times this screen is used.
 
void UpdateSymbolLinks(REPORTER *aReporter=nullptr)
Initialize the LIB_SYMBOL reference for each SCH_SYMBOL found in this schematic from the project #SYM...
 
SCH_LINE * GetWire(const VECTOR2I &aPosition, int aAccuracy=0, SCH_LINE_TEST_T aSearchType=ENTIRE_LENGTH_T) const
 
std::set< SCH_ITEM * > MarkConnections(SCH_ITEM *aItem, bool aSecondPass)
Return all wires and junctions connected to aItem which are not connected any symbol pin or all graph...
 
std::set< wxString > GetSheetNames() const
 
const EE_RTREE & Items() const
 
void TestDanglingEnds(const SCH_SHEET_PATH *aPath=nullptr, std::function< void(SCH_ITEM *)> *aChangedHandler=nullptr) const
Test all of the connectable objects in the schematic for unused connection points.
 
void EnsureAlternateReferencesExist()
For screens shared by many sheetpaths (complex hierarchies): to be able to clear or modify any refere...
 
void SetPageSettings(const PAGE_INFO &aPageSettings)
 
bool AllSymbolDefaultInstancesNotSet()
Check all symbol default instance to see if they are not set yet.
 
void PruneOrphanedSheetInstances(const wxString &aProjectName, const SCH_SHEET_LIST &aValidSheetPaths)
Remove all invalid sheet instance data in this screen object for the project defined by aProjectName ...
 
std::vector< SCH_LINE * > GetBusesAndWires(const VECTOR2I &aPosition, bool aIgnoreEndpoints=false) const
Return buses and wires passing through aPosition.
 
const std::map< wxString, LIB_SYMBOL * > & GetLibSymbols() const
Fetch a list of unique LIB_SYMBOL object pointers required to properly render each SCH_SYMBOL in this...
 
wxString GroupsSanityCheckInternal(bool repair)
 
double m_LastZoomLevel
last value for the zoom level, useful in Eeschema when changing the current displayed sheet to reuse ...
 
const VECTOR2I & GetAuxOrigin() const
 
void SetAuxOrigin(const VECTOR2I &aPosition)
 
bool IsExplicitJunction(const VECTOR2I &aPosition) const
Indicate that a junction dot is necessary at the given location.
 
EE_RTREE & Items()
Get the full RTree, usually for iterating.
 
int m_fileFormatVersionAtLoad
 
const wxString & GetFileName() const
 
const KIID & GetUuid() const
 
friend SCH_IO_KICAD_SEXPR_PARSER
 
SCH_ITEM * GetItem(const VECTOR2I &aPosition, int aAccuracy=0, KICAD_T aType=SCH_LOCATE_ANY_T) const
Check aPosition within a distance of aAccuracy for items of type aFilter.
 
bool IsExplicitJunctionAllowed(const VECTOR2I &aPosition) const
Indicate that a junction dot may be placed at the given location.
 
bool IsTerminalPoint(const VECTOR2I &aPosition, int aLayer) const
Test if aPosition is a connection point on aLayer.
 
void UpdateLocalLibSymbolLinks()
Initialize the LIB_SYMBOL reference for each SCH_SYMBOL found in this schematic with the local projec...
 
friend TEST_SCH_SCREEN_FIXTURE
 
void SetFileName(const wxString &aFileName)
Set the file name for this screen to aFileName.
 
static bool ClassOf(const EDA_ITEM *aItem)
 
void SetLegacySymbolInstanceData()
Update the symbol value and footprint instance data for legacy designs.
 
void DeleteVariant(const wxString &aVariantName)
 
const std::vector< SCH_SYMBOL_INSTANCE > & GetSymbolInstances() const
 
SCH_LINE * GetBus(const VECTOR2I &aPosition, int aAccuracy=0, SCH_LINE_TEST_T aSearchType=ENTIRE_LENGTH_T) const
 
bool Remove(SCH_ITEM *aItem, bool aUpdateLibSymbol=true)
Remove aItem from the schematic associated with this screen.
 
std::vector< SCH_SHEET_PATH > m_clientSheetPathList
The list of sheet paths sharing this screen.
 
SCH_SCREEN(EDA_ITEM *aParent=nullptr)
 
friend SCH_IO_KICAD_SEXPR
 
SCHEMATIC * Schematic() const
 
void FixupEmbeddedData()
After loading a file from disk, the library symbols do not yet contain the full data for their embedd...
 
int GetFileFormatVersionAtLoad() const
 
void GetHierarchicalItems(std::vector< SCH_ITEM * > *aItems) const
Add all schematic sheet and symbol objects in the screen to aItems.
 
bool IsExplicitJunctionNeeded(const VECTOR2I &aPosition) const
Indicate that a junction dot is necessary at the given location, and does not yet exist.
 
SCH_SHEET_PIN * GetSheetPin(const VECTOR2I &aPosition) const
Test the screen if aPosition is a sheet label object.
 
wxString GroupsSanityCheck(bool repair=false)
Consistency check of internal m_groups structure.
 
bool InProjectPath() const
Check if the schematic file is in the current project path.
 
const TITLE_BLOCK & GetTitleBlock() const
 
void FreeDrawList()
Free all the items from the schematic associated with the screen.
 
void Plot(PLOTTER *aPlotter, const SCH_PLOT_OPTS &aPlotOpts) const
Plot all the schematic objects to aPlotter.
 
virtual wxString GetClass() const override
Return the class name.
 
void Update(SCH_ITEM *aItem, bool aUpdateLibSymbol=true)
Update aItem's bounding box in the tree.
 
void SetConnectivityDirty()
 
std::vector< VECTOR2I > GetNeededJunctions(const std::deque< EDA_ITEM * > &aItems) const
Return the unique set of points belonging to aItems where a junction is needed.
 
bool IsJunction(const VECTOR2I &aPosition) const
Test if a junction is required for the items at aPosition on the screen.
 
const std::vector< SCH_SHEET_INSTANCE > & GetSheetInstances() const
 
bool m_isReadOnly
Read only status of the screen file.
 
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,...
 
bool CheckIfOnDrawList(const SCH_ITEM *aItem) const
 
std::vector< VECTOR2I > GetConnections() const
Collect a unique list of all possible connection points in the schematic.
 
SPIN_STYLE GetLabelOrientationForPoint(const VECTOR2I &aPosition, SPIN_STYLE aDefaultOrientation, const SCH_SHEET_PATH *aSheet) const
 
KIID m_uuid
A unique identifier for each schematic file.
 
std::vector< SCH_SYMBOL_INSTANCE > m_symbolInstances
The list of symbol instances loaded from the schematic file.
 
void ClearAnnotation(SCH_SHEET_PATH *aSheetPath, bool aResetPrefix)
Clear the annotation for the symbols in aSheetPath on the screen.
 
void SetFileReadOnly(bool aIsReadOnly)
 
bool doIsJunction(const VECTOR2I &aPosition, bool aBreakCrossings, bool *aHasExplicitJunctionDot, bool *aHasBusEntry) const
 
size_t CountConnectedItems(const VECTOR2I &aPos, bool aTestJunctions) const
 
void MigrateSimModels()
Migrate any symbols having V6 simulation models to their V7 equivalents.
 
void DeleteItem(SCH_ITEM *aItem)
Remove aItem from the linked list and deletes the object.
 
size_t getLibSymbolNameMatches(const SCH_SYMBOL &aSymbol, std::vector< wxString > &aMatches)
Return a list of potential library symbol matches for aSymbol.
 
void SetFileExists(bool aFileExists)
 
SCH_LABEL_BASE * GetLabel(const VECTOR2I &aPosition, int aAccuracy=0) const
Return a label item located at aPosition.
 
A container for handling SCH_SHEET_PATH objects in a flattened hierarchy.
 
Handle access to a stack of flattened SCH_SHEET objects by way of a path for creating a flattened sch...
 
Define a sheet pin (label) used in sheets to create hierarchical schematics.
 
Sheet symbol placed in a schematic, and is the entry point for a sub schematic.
 
Hold the information shown in the lower right corner of a plot, printout, or editing view.
 
Definition of the SCH_SHEET_PATH and SCH_SHEET_LIST classes for Eeschema.
 
std::vector< std::pair< FIELD_T, wxString > > Fields
 
KICAD_T
The set of class identification values stored in EDA_ITEM::m_structType.
 
VECTOR2< int32_t > VECTOR2I