KiCad PCB EDA Suite
Loading...
Searching...
No Matches
sch_screen.h
Go to the documentation of this file.
1/*
2 * This program source code file is part of KiCad, a free EDA CAD application.
3 *
4 * Copyright (C) 2009 Jean-Pierre Charras, [email protected]
5 * Copyright The KiCad Developers, see AUTHORS.txt for contributors.
6 *
7 * This program is free software; you can redistribute it and/or
8 * modify it under the terms of the GNU General Public License
9 * as published by the Free Software Foundation; either version 2
10 * of the License, or (at your option) any later version.
11 *
12 * This program is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 * GNU General Public License for more details.
16 *
17 * You should have received a copy of the GNU General Public License
18 * along with this program. If not, see <https://www.gnu.org/licenses/>.
19 */
20
21#ifndef SCREEN_H
22#define SCREEN_H
23
24#include <memory>
25#include <stddef.h>
26#include <unordered_set>
27#include <vector>
28#include <wx/arrstr.h>
29#include <wx/chartype.h>
30#include <wx/gdicmn.h>
31#include <wx/string.h>
32
33#include <base_screen.h>
34#include <core/typeinfo.h>
35#include <kiid.h>
36#include <kiway_holder.h>
37#include <layer_ids.h>
38#include <marker_base.h>
39#include <page_info.h>
40#include <template_fieldnames.h>
41#include <title_block.h>
42
43#include <lib_id.h>
44#include <sch_reference_list.h>
45#include <sch_rtree.h>
46#include <sch_sheet.h>
47#include <sch_label.h>
48#include <sch_sheet_path.h> // SCH_SYMBOL_INSTANCE
49
50class BUS_ALIAS;
51class EDA_ITEM;
52class LIB_SYMBOL;
55class SCH_COMMIT;
56class SCH_PIN;
57class SCH_SYMBOL;
58class SCH_LINE;
59class SCH_LABEL_BASE;
60class PLOTTER;
61class REPORTER;
62class SCH_IO_ALTIUM;
63class SCH_IO_PADS;
64class SCH_EDIT_FRAME;
65class SCH_SHEET_LIST;
68class SCHEMATIC;
70
77
78
80{
82 int Unit;
84
87
88 std::vector<std::pair<FIELD_T, wxString>> Fields;
89
91 Unit( 1 ),
92 BodyStyle( 1 ),
93 KeepSymbol( false ),
94 PlaceAllUnits( false )
95 {
96 }
97};
98
99class SCH_SCREEN : public BASE_SCREEN
100{
101public:
102 SCH_SCREEN( EDA_ITEM* aParent = nullptr );
103
104 ~SCH_SCREEN();
105
106 SCHEMATIC* Schematic() const;
107
118 EE_RTREE& Items() { return m_rtree; }
119 const EE_RTREE& Items() const { return m_rtree; }
120
121 bool IsEmpty() const
122 {
123 return m_rtree.empty();
124 }
125
126 bool HasItems( KICAD_T aItemType ) const;
127
128 bool HasSheets() const { return HasItems( SCH_SHEET_T ); }
129
130 static bool ClassOf( const EDA_ITEM* aItem );
131
132 virtual wxString GetClass() const override
133 {
134 return wxT( "SCH_SCREEN" );
135 }
136
137 void SetFileFormatVersionAtLoad( int aVersion ) { m_fileFormatVersionAtLoad = aVersion; }
139
140 const PAGE_INFO& GetPageSettings() const { return m_paper; }
141 void SetPageSettings( const PAGE_INFO& aPageSettings ) { m_paper = aPageSettings; }
142
151 void SetFileName( const wxString& aFileName );
152
153 const wxString& GetFileName() const { return m_fileName; }
154
155 void SetFileReadOnly( bool aIsReadOnly ) { m_isReadOnly = aIsReadOnly; }
156 bool IsReadOnly() const { return m_isReadOnly; }
157
158 void SetFileExists( bool aFileExists ) { m_fileExists = aFileExists; }
159 bool FileExists() const { return m_fileExists; }
160
161 const VECTOR2I& GetAuxOrigin() const { return m_aux_origin; }
162 void SetAuxOrigin( const VECTOR2I& aPosition ) { m_aux_origin = aPosition; }
163
165 const TITLE_BLOCK& GetTitleBlock() const { return m_titles; }
166
167 void SetTitleBlock( const TITLE_BLOCK& aTitleBlock ) { m_titles = aTitleBlock; }
168
169 void DecRefCount();
170 void IncRefCount();
171 int GetRefCount() const { return m_refCount; }
172
174
176 SCH_ITEM* GetConnectivityItem( const KIID& aId ) const;
177
191 std::vector<SCH_SHEET_PATH>& GetClientSheetPaths()
192 {
194 }
195
196 void Append( SCH_ITEM* aItem, bool aUpdateLibSymbol = true );
197
208 void Append( SCH_SCREEN* aScreen );
209
213 void Clear( bool aFree = true );
214
220 void FreeDrawList();
221
230 SCH_ITEM* GetItem( const VECTOR2I& aPosition, int aAccuracy = 0,
231 KICAD_T aType = SCH_LOCATE_ANY_T ) const;
232
250 void UpdateSymbolLinks( REPORTER* aReporter = nullptr, LEGACY_SYMBOL_LIBS* aLegacyLibs = nullptr,
251 SYMBOL_LIBRARY_ADAPTER* aLibraries = nullptr );
252
258
267 void Plot( PLOTTER* aPlotter, const SCH_PLOT_OPTS& aPlotOpts ) const;
268
276 void Plot( PLOTTER* aPlotter, const SCH_PLOT_OPTS& aPlotOpts,
277 const std::vector<SCH_ITEM*>& aItems ) const;
278
287 bool Remove( SCH_ITEM* aItem, bool aUpdateLibSymbol = true );
288
295 void Update( SCH_ITEM* aItem, bool aUpdateLibSymbol = true );
296
305 void DeleteItem( SCH_ITEM* aItem );
306
307 bool CheckIfOnDrawList( const SCH_ITEM* aItem ) const;
308
315 void TestDanglingEnds( const SCH_SHEET_PATH* aPath = nullptr,
316 std::function<void( SCH_ITEM* )>* aChangedHandler = nullptr ) const;
317
325 std::set<SCH_ITEM*> MarkConnections( SCH_ITEM* aItem, bool aSecondPass );
326
330 void ClearDrawingState();
331
332 size_t CountConnectedItems( const VECTOR2I& aPos, bool aTestJunctions ) const;
333
348 bool IsJunction( const VECTOR2I& aPosition ) const;
349
355 bool IsExplicitJunction( const VECTOR2I& aPosition ) const;
356
362 bool IsExplicitJunctionNeeded( const VECTOR2I& aPosition ) const;
363
365 SPIN_STYLE aDefaultOrientation,
366 const SCH_SHEET_PATH* aSheet ) const;
372 bool IsExplicitJunctionAllowed( const VECTOR2I& aPosition ) const;
373
382 bool IsTerminalPoint( const VECTOR2I& aPosition, int aLayer ) const;
383
393 SCH_PIN* GetPin( const VECTOR2I& aPosition, SCH_SYMBOL** aSymbol = nullptr,
394 bool aEndPointOnly = false ) const;
395
402 SCH_SHEET_PIN* GetSheetPin( const VECTOR2I& aPosition ) const;
403
412 void ClearAnnotation( SCH_SHEET_PATH* aSheetPath, bool aResetPrefix );
413
424
430 void GetHierarchicalItems( std::vector<SCH_ITEM*>* aItems ) const;
431
436 void GetSheets( std::vector<SCH_ITEM*>* aItems ) const;
437
448 SCH_LINE* GetLine( const VECTOR2I& aPosition, int aAccuracy = 0, int aLayer = LAYER_NOTES,
449 SCH_LINE_TEST_T aSearchType = ENTIRE_LENGTH_T ) const;
450
451 SCH_LINE* GetWire( const VECTOR2I& aPosition, int aAccuracy = 0,
452 SCH_LINE_TEST_T aSearchType = ENTIRE_LENGTH_T ) const
453 {
454 return GetLine( aPosition, aAccuracy, LAYER_WIRE, aSearchType );
455 }
456
457 SCH_LINE* GetBus( const VECTOR2I& aPosition, int aAccuracy = 0,
458 SCH_LINE_TEST_T aSearchType = ENTIRE_LENGTH_T ) const
459 {
460 return GetLine( aPosition, aAccuracy, LAYER_BUS, aSearchType );
461 }
462
470 std::vector<SCH_LINE*> GetBusesAndWires( const VECTOR2I& aPosition,
471 bool aIgnoreEndpoints = false ) const;
472
478 std::vector<VECTOR2I> GetConnections() const;
479
486 std::vector<VECTOR2I> GetNeededJunctions( const std::deque<EDA_ITEM*>& aItems ) const;
487
495 SCH_LABEL_BASE* GetLabel( const VECTOR2I& aPosition, int aAccuracy = 0 ) const;
496
503 const std::map<wxString, LIB_SYMBOL*>& GetLibSymbols() const { return m_libSymbols; }
504
514 void AddLibSymbol( LIB_SYMBOL* aLibSymbol );
515
516 void AddLibSymbol( const wxString& aKey, std::unique_ptr<LIB_SYMBOL> aLibSymbol );
517
523 void FixupEmbeddedData();
524
528 void AddBusAlias( std::shared_ptr<BUS_ALIAS> aAlias );
529
530 const std::vector<SCH_SYMBOL_INSTANCE>& GetSymbolInstances() const
531 {
532 return m_symbolInstances;
533 }
534
535 const std::vector<SCH_SHEET_INSTANCE>& GetSheetInstances() const
536 {
537 return m_sheetInstances;
538 }
539
540 const KIID& GetUuid() const { return m_uuid; }
541
542 void AssignNewUuid() { m_uuid = KIID(); }
543
548
554
559
561
568 bool InProjectPath() const;
569
570#if defined(DEBUG)
571 void Show( int nestLevel, std::ostream& os ) const override;
572#endif
573
577 void MigrateSimModels();
578
591 void PruneOrphanedSymbolInstances( const wxString& aProjectName,
592 const SCH_SHEET_LIST& aValidSheetPaths );
593
606 void PruneOrphanedSheetInstances( const wxString& aProjectName,
607 const SCH_SHEET_LIST& aValidSheetPaths );
608
612 std::set<wxString> GetSheetNames() const;
613
623
630 wxString GroupsSanityCheck( bool repair = false );
631
637 wxString GroupsSanityCheckInternal( bool repair );
638
639 std::set<wxString> GetVariantNames() const;
640
641 void DeleteVariant( const wxString& aVariantName, SCH_COMMIT* aCommit = nullptr );
642
643 void RenameVariant( const wxString& aOldName, const wxString& aNewName,
644 SCH_COMMIT* aCommit = nullptr );
645
646 void CopyVariant( const wxString& aSourceVariant, const wxString& aNewVariant,
647 SCH_COMMIT* aCommit = nullptr );
648
649private:
650 friend SCH_EDIT_FRAME; // Only to populate m_symbolInstances.
651 friend SCH_IO_KICAD_SEXPR_PARSER; // Only to load instance information from schematic file.
652 friend SCH_IO_KICAD_SEXPR; // Only to save the loaded instance information to schematic file.
655 friend SCHEMATIC; // Only to adopt staged content, see SCHEMATIC::AdoptContent().
657
658 bool doIsJunction( const VECTOR2I& aPosition, bool aBreakCrossings,
659 bool* aHasExplicitJunctionDot, bool* aHasBusEntry ) const;
660
661 void clearLibSymbols();
662
676 size_t getLibSymbolNameMatches( const SCH_SYMBOL& aSymbol, std::vector<wxString>& aMatches );
677
678public:
679 bool IsZoomInitialized() const { return m_zoomInitialized; }
680
686
687private:
688 wxString m_fileName; // File used to load the screen.
690 int m_refCount; // Number of sheets referencing this screen.
691 // Delete when it goes to zero.
699 std::vector<SCH_SHEET_PATH> m_clientSheetPathList;
700
701
702 PAGE_INFO m_paper; // The size of the paper to print or plot on.
704 VECTOR2I m_aux_origin; // Origin used for drill & place files by Pcbnew.
706
707 int m_modification_sync; // Inequality with SYMBOL_LIBS::GetModificationHash()
708 // will trigger ResolveAll().
709
710 bool m_zoomInitialized; // Set to true once the zoom value is initialized with
711 // `InitZoom()`.
712
714
717
719 std::map<wxString, LIB_SYMBOL*> m_libSymbols;
720
735 std::vector<SCH_SYMBOL_INSTANCE> m_symbolInstances;
736 std::vector<SCH_SHEET_INSTANCE> m_sheetInstances;
737
745};
746
747
758{
759public:
760 SCH_SCREENS( SCH_SHEET* aSheet );
761 SCH_SCREENS( SCH_SHEET& aSheet ) : SCH_SCREENS( &aSheet ) {}
762 ~SCH_SCREENS();
763 size_t GetCount() const { return m_screens.size(); }
766 SCH_SCREEN* GetScreen( unsigned int aIndex ) const;
767 SCH_SHEET* GetSheet( unsigned int aIndex ) const;
768
777 void ClearAnnotationOfNewSheetPaths( SCH_SHEET_LIST& aInitialSheetPathList );
778
789
796 void DeleteAllMarkers( enum MARKER_BASE::MARKER_T aMarkerType, bool aIncludeExclusions );
797
801 void DeleteMarkers( enum MARKER_BASE::MARKER_T aMarkerTyp, int aErrorCode,
802 bool aIncludeExclusions = true );
803
807 void DeleteMarker( SCH_MARKER* aMarker );
808
820 void UpdateSymbolLinks( REPORTER* aReporter = nullptr );
821
822 void ClearEditFlags();
823
835
842 size_t GetLibNicknames( wxArrayString& aLibNicknames );
843
851 int ChangeSymbolLibNickname( const wxString& aFrom, const wxString& aTo );
852
862 bool HasSchematic( const wxString& aSchematicFileName );
863
868
873
879
880 void PruneOrphanedSymbolInstances( const wxString& aProjectName,
881 const SCH_SHEET_LIST& aValidSheetPaths );
882
883 void PruneOrphanedSheetInstances( const wxString& aProjectName,
884 const SCH_SHEET_LIST& aValidSheetPaths );
885
887
888 std::set<wxString> GetVariantNames() const;
889
890 void DeleteVariant( const wxString& aVariantName, SCH_COMMIT* aCommit = nullptr );
891
892 void RenameVariant( const wxString& aOldName, const wxString& aNewName,
893 SCH_COMMIT* aCommit = nullptr );
894
895 void CopyVariant( const wxString& aSourceVariant, const wxString& aNewVariant,
896 SCH_COMMIT* aCommit = nullptr );
897
898private:
899 void addScreenToList( SCH_SCREEN* aScreen, SCH_SHEET* aSheet );
900 void buildScreenList( SCH_SHEET* aSheet);
901
902 std::vector< SCH_SCREEN* > m_screens;
903 std::vector< SCH_SHEET* > m_sheets;
904 unsigned int m_index;
905};
906
907#endif /* SCREEN_H */
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.
Definition eda_item.h:98
EDA_ITEM(EDA_ITEM *parent, KICAD_T idType, bool isSCH_ITEM=false, bool isBOARD_ITEM=false)
Definition eda_item.cpp:84
Implement an R-tree for fast spatial and type indexing of schematic items.
Definition sch_rtree.h:37
Definition kiid.h:46
A collection of #SYMBOL_LIB objects.
A logical library item identifier and consists of various portions much like a URI.
Definition lib_id.h:45
Define a library symbol object.
Definition lib_symbol.h:119
Describe the page size and margins of a paper page on which to eventually print or plot.
Definition page_info.h:75
Base plotter engine class.
Definition plotter.h:136
A pure virtual class used to derive REPORTER objects from.
Definition reporter.h:73
Holds all the data relating to one schematic.
Definition schematic.h:148
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.
A SCH_IO derivation for loading PADS Logic schematic files.
Definition sch_io_pads.h:39
Base class for any item which can be embedded within the SCHEMATIC container class,...
Definition sch_item.h:165
Segment description base class to describe items which have 2 end points (track, wire,...
Definition sch_line.h:39
SCH_SCREEN * GetNext()
unsigned int m_index
Definition sch_screen.h:904
std::vector< SCH_SHEET * > m_sheets
Definition sch_screen.h:903
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 CopyVariant(const wxString &aSourceVariant, const wxString &aNewVariant, SCH_COMMIT *aCommit=nullptr)
SCH_SCREEN * GetFirst()
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.
void RenameVariant(const wxString &aOldName, const wxString &aNewName, SCH_COMMIT *aCommit=nullptr)
SCH_SCREENS(SCH_SHEET *aSheet)
SCH_SCREENS(SCH_SHEET &aSheet)
Definition sch_screen.h:761
void BuildClientSheetPathList()
Build the list of sheet paths sharing a screen for each screen in use.
bool HasSymbolFieldNamesWithWhiteSpace() const
size_t GetCount() const
Definition sch_screen.h:763
void ClearAnnotationOfNewSheetPaths(SCH_SHEET_LIST &aInitialSheetPathList)
Clear the annotation for the symbols inside new sheetpaths when a complex hierarchy is modified and n...
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.
void ClearEditFlags()
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
Definition sch_screen.h:902
void DeleteVariant(const wxString &aVariantName, SCH_COMMIT *aCommit=nullptr)
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)
Definition sch_screen.h:137
const PAGE_INFO & GetPageSettings() const
Definition sch_screen.h:140
std::set< wxString > GetVariantNames() const
void DeleteVariant(const wxString &aVariantName, SCH_COMMIT *aCommit=nullptr)
std::map< wxString, LIB_SYMBOL * > m_libSymbols
Library symbols required for this schematic.
Definition sch_screen.h:719
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.
Definition sch_screen.h:716
void ClearDrawingState()
Clear the state flags of all the items in the screen.
std::vector< SCH_SHEET_INSTANCE > m_sheetInstances
Definition sch_screen.h:736
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)
Definition sch_screen.h:167
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.
Definition sch_screen.h:191
SCH_LINE * GetWire(const VECTOR2I &aPosition, int aAccuracy=0, SCH_LINE_TEST_T aSearchType=ENTIRE_LENGTH_T) const
Definition sch_screen.h:451
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
Definition sch_screen.h:119
TITLE_BLOCK m_titles
Definition sch_screen.h:703
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)
Definition sch_screen.h:141
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...
Definition sch_screen.h:503
wxString GroupsSanityCheckInternal(bool repair)
int m_modification_sync
Definition sch_screen.h:707
double m_LastZoomLevel
last value for the zoom level, useful in Eeschema when changing the current displayed sheet to reuse ...
Definition sch_screen.h:685
const VECTOR2I & GetAuxOrigin() const
Definition sch_screen.h:161
void SetAuxOrigin(const VECTOR2I &aPosition)
Definition sch_screen.h:162
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.
Definition sch_screen.h:118
int m_fileFormatVersionAtLoad
Definition sch_screen.h:689
const wxString & GetFileName() const
Definition sch_screen.h:153
void DecRefCount()
const KIID & GetUuid() const
Definition sch_screen.h:540
friend SCH_IO_KICAD_SEXPR_PARSER
Definition sch_screen.h:651
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 IsZoomInitialized() const
Definition sch_screen.h:679
void clearLibSymbols()
wxString m_fileName
Definition sch_screen.h:688
bool IsTerminalPoint(const VECTOR2I &aPosition, int aLayer) const
Test if aPosition is a connection point on aLayer.
bool IsReadOnly() const
Definition sch_screen.h:156
void UpdateLocalLibSymbolLinks()
Initialize the LIB_SYMBOL reference for each SCH_SYMBOL found in this schematic with the local projec...
void IncRefCount()
friend SCH_IO_ALTIUM
Definition sch_screen.h:653
friend TEST_SCH_SCREEN_FIXTURE
Definition sch_screen.h:656
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.
const std::vector< SCH_SYMBOL_INSTANCE > & GetSymbolInstances() const
Definition sch_screen.h:530
void UpdateSymbolLinks(REPORTER *aReporter=nullptr, LEGACY_SYMBOL_LIBS *aLegacyLibs=nullptr, SYMBOL_LIBRARY_ADAPTER *aLibraries=nullptr)
Initialize the LIB_SYMBOL reference for each SCH_SYMBOL found in this schematic from the project #SYM...
SCH_LINE * GetBus(const VECTOR2I &aPosition, int aAccuracy=0, SCH_LINE_TEST_T aSearchType=ENTIRE_LENGTH_T) const
Definition sch_screen.h:457
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.
Definition sch_screen.h:699
SCH_SCREEN(EDA_ITEM *aParent=nullptr)
friend SCH_IO_KICAD_SEXPR
Definition sch_screen.h:652
SCHEMATIC * Schematic() const
EE_RTREE m_rtree
Definition sch_screen.h:705
void FixupEmbeddedData()
After loading a file from disk, the library symbols do not yet contain the full data for their embedd...
bool HasSheets() const
Definition sch_screen.h:128
SCH_ITEM * GetConnectivityItem(const KIID &aId) const
Resolve a drawing item or a connectable child on this screen; ambiguous IDs return null.
int GetFileFormatVersionAtLoad() const
Definition sch_screen.h:138
VECTOR2I m_aux_origin
Definition sch_screen.h:704
void CopyVariant(const wxString &aSourceVariant, const wxString &aNewVariant, SCH_COMMIT *aCommit=nullptr)
void GetHierarchicalItems(std::vector< SCH_ITEM * > *aItems) const
Add all schematic sheet and symbol objects in the screen to aItems.
TITLE_BLOCK & GetTitleBlock()
Definition sch_screen.h:164
bool IsExplicitJunctionNeeded(const VECTOR2I &aPosition) const
Indicate that a junction dot is necessary at the given location, and does not yet exist.
friend SCHEMATIC
Definition sch_screen.h:655
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
Definition sch_screen.h:165
void RenameVariant(const wxString &aOldName, const wxString &aNewName, SCH_COMMIT *aCommit=nullptr)
void FreeDrawList()
Free all the items from the schematic associated with the screen.
friend SCH_IO_PADS
Definition sch_screen.h:654
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.
Definition sch_screen.h:132
friend SCH_EDIT_FRAME
Definition sch_screen.h:650
void Update(SCH_ITEM *aItem, bool aUpdateLibSymbol=true)
Update aItem's bounding box in the tree.
void SetConnectivityDirty()
bool m_zoomInitialized
Definition sch_screen.h:710
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 FileExists() const
Definition sch_screen.h:159
int GetRefCount() const
Definition sch_screen.h:171
void AssignNewUuid()
Definition sch_screen.h:542
PAGE_INFO m_paper
Definition sch_screen.h:702
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
Definition sch_screen.h:535
bool m_isReadOnly
Read only status of the screen file.
Definition sch_screen.h:713
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.
Definition sch_screen.h:744
std::vector< SCH_SYMBOL_INSTANCE > m_symbolInstances
The list of symbol instances loaded from the schematic file.
Definition sch_screen.h:735
void ClearAnnotation(SCH_SHEET_PATH *aSheetPath, bool aResetPrefix)
Clear the annotation for the symbols in aSheetPath on the screen.
void SetFileReadOnly(bool aIsReadOnly)
Definition sch_screen.h:155
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.
bool IsEmpty() const
Definition sch_screen.h:121
void SetFileExists(bool aFileExists)
Definition sch_screen.h:158
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.
Definition sch_sheet.h:48
Schematic symbol object.
Definition sch_symbol.h:75
An interface to the global shared library manager that is schematic-specific and linked to one projec...
Hold the information shown in the lower right corner of a plot, printout, or editing view.
Definition title_block.h:38
@ LAYER_WIRE
Definition layer_ids.h:474
@ LAYER_NOTES
Definition layer_ids.h:489
@ LAYER_BUS
Definition layer_ids.h:475
SCH_LINE_TEST_T
Definition sch_screen.h:72
@ ENTIRE_LENGTH_T
Definition sch_screen.h:73
@ EXCLUDE_END_POINTS_T
Definition sch_screen.h:75
@ END_POINTS_ONLY_T
Definition sch_screen.h:74
Definition of the SCH_SHEET_PATH and SCH_SHEET_LIST classes for Eeschema.
bool PlaceAllUnits
Definition sch_screen.h:86
std::vector< std::pair< FIELD_T, wxString > > Fields
Definition sch_screen.h:88
KICAD_T
The set of class identification values stored in EDA_ITEM::m_structType.
Definition typeinfo.h:70
@ SCH_LOCATE_ANY_T
Definition typeinfo.h:195
@ SCH_SHEET_T
Definition typeinfo.h:171
VECTOR2< int32_t > VECTOR2I
Definition vector2d.h:683