KiCad PCB EDA Suite
Loading...
Searching...
No Matches
sch_sheet.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) 2015 Jean-Pierre Charras, jp.charras at wanadoo.fr
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 SCH_SHEEET_H
22#define SCH_SHEEET_H
23
24#include <sch_field.h>
25
26class KIID_PATH;
27class SCH_SCREEN;
29class SCH_SHEET_LIST;
30class SCH_SHEET_PIN;
31class SCH_SHEET_PATH;
32class EDA_DRAW_FRAME;
33class SCH_NO_CONNECT;
34
35
36#define MIN_SHEET_WIDTH 500 // Units are mils.
37#define MIN_SHEET_HEIGHT 150 // Units are mils.
38
39
43class SCH_SHEET : public SCH_ITEM
44{
45public:
46 SCH_SHEET( EDA_ITEM* aParent = nullptr, const VECTOR2I& aPos = VECTOR2I( 0, 0 ),
47 VECTOR2I aSize = VECTOR2I( schIUScale.MilsToIU( MIN_SHEET_WIDTH ),
48 schIUScale.MilsToIU( MIN_SHEET_HEIGHT ) ) );
49
50 void Serialize( google::protobuf::Any& aContainer ) const override;
51 bool Deserialize( const google::protobuf::Any& aContainer ) override;
52
59 SCH_SHEET( const SCH_SHEET& aSheet );
60
61 ~SCH_SHEET();
62
63 static inline bool ClassOf( const EDA_ITEM* aItem )
64 {
65 return aItem && SCH_SHEET_T == aItem->Type();
66 }
67
68 wxString GetClass() const override
69 {
70 return wxT( "SCH_SHEET" );
71 }
72
82 bool IsMovableFromAnchorPoint() const override { return false; }
83
87 std::vector<SCH_FIELD>& GetFields() { return m_fields; }
88 const std::vector<SCH_FIELD>& GetFields() const { return m_fields; }
89
94 SCH_FIELD* GetField( FIELD_T aFieldType );
95 const SCH_FIELD* GetField( FIELD_T aFieldNdx ) const;
96
104 SCH_FIELD* GetField( const wxString& aFieldName );
105 const SCH_FIELD* GetField( const wxString& aFieldName ) const;
106
110 int GetNextFieldOrdinal() const;
111
117 void SetFields( const std::vector<SCH_FIELD>& aFields );
118
124 SCH_FIELD* AddField( const SCH_FIELD& aField );
125
126 void SetFieldText( const wxString& aFieldName, const wxString& aFieldText, const SCH_SHEET_PATH* aPath = nullptr,
127 const wxString& aVariantName = wxEmptyString );
128
129 wxString GetFieldText( const wxString& aFieldName, const SCH_SHEET_PATH* aPath = nullptr,
130 const wxString& aVariantName = wxEmptyString ) const;
131
132 wxString GetShownName( bool aAllowExtraText ) const
133 {
134 return GetField( FIELD_T::SHEET_NAME )->GetShownText( aAllowExtraText );
135 }
136 wxString GetName() const { return GetField( FIELD_T::SHEET_NAME )->GetText(); }
137 void SetName( const wxString& aName ) { GetField( FIELD_T::SHEET_NAME )->SetText( aName ); }
138
139 SCH_SCREEN* GetScreen() const { return m_screen; }
140
141 VECTOR2I GetSize() const { return m_size; }
142 void SetSize( const VECTOR2I& aSize ) { m_size = aSize; }
143
144 int GetBorderWidth() const { return m_borderWidth; }
145 void SetBorderWidth( int aWidth ) { m_borderWidth = aWidth; }
146
148 void SetBorderColor( KIGFX::COLOR4D aColor ) { m_borderColor = aColor; }
149
152
158 bool IsVirtualRootSheet() const;
159
167 bool IsTopLevelSheet() const;
168
180 void SetScreen( SCH_SCREEN* aScreen );
181
187 int GetScreenCount() const;
188
192 void GetContextualTextVars( wxArrayString* aVars ) const;
193
199 bool ResolveTextVar( const SCH_SHEET_PATH* aPath, wxString* token, int aDepth = 0 ) const;
200
201 void GetMsgPanelInfo( EDA_DRAW_FRAME* aFrame, std::vector<MSG_PANEL_ITEM>& aList ) override;
202
203 /* there is no member for orientation in sch_sheet, to preserve file
204 * format, we detect orientation based on pin edges
205 */
206 bool IsVerticalOrientation() const;
207
212 std::map<SCH_SHEET_PIN*, SCH_NO_CONNECT*> GetNoConnects() const;
213
214 void SetPositionIgnoringPins( const VECTOR2I& aPosition );
215
225 void AddPin( SCH_SHEET_PIN* aSheetPin );
226
227 std::vector<SCH_SHEET_PIN*>& GetPins() { return m_pins; }
228 const std::vector<SCH_SHEET_PIN*>& GetPins() const { return m_pins; }
229
235 void RemovePin( const SCH_SHEET_PIN* aSheetPin );
236
243 void CleanupSheet();
244
252 SCH_SHEET_PIN* GetPin( const VECTOR2I& aPosition );
253
260 bool HasPin( const wxString& aName ) const;
261
262 bool HasPins() const { return !m_pins.empty(); }
263
269 bool HasUndefinedPins() const;
270
282 int GetMinWidth( bool aFromLeft ) const;
283
294 int GetMinHeight( bool aFromTop ) const;
295
296 int GetPenWidth() const override;
297
301 const BOX2I GetBodyBoundingBox() const;
302
303 const BOX2I GetBoundingBox() const override;
304
312
313 void swapData( SCH_ITEM* aItem ) override;
314
318 int SymbolCount() const;
319
327 bool SearchHierarchy( const wxString& aFilename, SCH_SCREEN** aScreen );
328
339 bool LocatePathOfScreen( SCH_SCREEN* aScreen, SCH_SHEET_PATH* aList );
340
346 int CountSheets() const;
347
355 int CountActiveSheets() const;
356
363 int CountSheets( const wxString& aFileName ) const;
364
370 wxString GetFileName() const
371 {
373 }
374
375 // Set a new filename without changing anything else
376 void SetFileName( const wxString& aFilename )
377 {
378 // Filenames are stored using unix notation
379 wxString tmp = aFilename;
380 tmp.Replace( wxT( "\\" ), wxT( "/" ) );
382 }
383
384 // Geometric transforms (used in block operations):
385
386 void Move( const VECTOR2I& aMoveVector ) override;
387 void MirrorHorizontally( int aCenter ) override;
388 void MirrorVertically( int aCenter ) override;
389 void Rotate( const VECTOR2I& aCenter, bool aRotateCCW ) override;
390
391 bool Matches( const EDA_SEARCH_DATA& aSearchData, void* aAuxData ) const override;
392
393 bool IsReplaceable() const override { return true; }
394
400 void Resize( const VECTOR2I& aSize );
401
402 void AutoplaceFields( SCH_SCREEN* aScreen, AUTOPLACE_ALGO aAlgo ) override;
403
404 void GetEndPoints( std::vector <DANGLING_END_ITEM>& aItemList ) override;
405
406 bool UpdateDanglingState( std::vector<DANGLING_END_ITEM>& aItemListByType,
407 std::vector<DANGLING_END_ITEM>& aItemListByPos,
408 const SCH_SHEET_PATH* aPath = nullptr ) override;
409
410 bool IsConnectable() const override { return true; }
411
412 bool HasConnectivityChanges( const SCH_ITEM* aItem,
413 const SCH_SHEET_PATH* aInstance = nullptr ) const override;
414
415 bool CanConnect( const SCH_ITEM* aItem ) const override
416 {
417 return ( aItem->Type() == SCH_LINE_T && aItem->GetLayer() == LAYER_WIRE )
418 || ( aItem->Type() == SCH_LINE_T && aItem->GetLayer() == LAYER_BUS )
419 || ( aItem->Type() == SCH_NO_CONNECT_T )
420 || ( aItem->Type() == SCH_SYMBOL_T );
421 }
422
423 std::vector<VECTOR2I> GetConnectionPoints() const override;
424
425 INSPECT_RESULT Visit( INSPECTOR inspector, void* testData,
426 const std::vector<KICAD_T>& aScanTypes ) override;
427
428 void RunOnChildren( const std::function<void( SCH_ITEM* )>& aFunction, RECURSE_MODE aMode ) override;
429
433 void SetExcludedFromSim( bool aExcludeFromSim, const SCH_SHEET_PATH* aInstance = nullptr,
434 const wxString& aVariantName = wxEmptyString ) override;
435 bool GetExcludedFromSim( const SCH_SHEET_PATH* aInstance = nullptr,
436 const wxString& aVariantName = wxEmptyString ) const override;
437
438 bool GetExcludedFromSimProp() const;
439 void SetExcludedFromSimProp( bool aEnable );
440
444 void SetExcludedFromBOM( bool aExcludeFromBOM, const SCH_SHEET_PATH* aInstance = nullptr,
445 const wxString& aVariantName = wxEmptyString ) override;
446 bool GetExcludedFromBOM( const SCH_SHEET_PATH* aInstance = nullptr,
447 const wxString& aVariantName = wxEmptyString ) const override;
448
449 bool GetExcludedFromBOMProp() const;
450 void SetExcludedFromBOMProp( bool aEnable );
451
455 void SetExcludedFromBoard( bool aExclude, const SCH_SHEET_PATH* aInstance = nullptr,
456 const wxString& aVariantName = wxEmptyString ) override
457 {
458 m_excludedFromBoard = aExclude;
459 }
460
461 bool GetExcludedFromBoard( const SCH_SHEET_PATH* aInstance = nullptr,
462 const wxString& aVariantName = wxEmptyString ) const override
463 {
464 return m_excludedFromBoard;
465 }
466
468 void SetExcludedFromBoardProp( bool aExclude ) { SetExcludedFromBoard( aExclude ); }
469
473 bool GetDNP( const SCH_SHEET_PATH* aInstance = nullptr,
474 const wxString& aVariantName = wxEmptyString ) const override;
475 void SetDNP( bool aDNP, const SCH_SHEET_PATH* aInstance = nullptr,
476 const wxString& aVariantName = wxEmptyString ) override;
477 bool GetDNPProp() const;
478 void SetDNPProp( bool aEnable );
479
480 wxString GetItemDescription( UNITS_PROVIDER* aUnitsProvider, bool aFull ) const override;
481
482 BITMAPS GetMenuImage() const override;
483
484 SCH_SHEET& operator=( const SCH_ITEM& aSheet );
485
486 bool operator <( const SCH_ITEM& aItem ) const override;
487
488 std::vector<int> ViewGetLayers() const override;
489
490 VECTOR2I GetPosition() const override { return m_pos; }
491 void SetPosition( const VECTOR2I& aPosition ) override;
492
493 bool HitTest( const VECTOR2I& aPosition, int aAccuracy ) const override;
494 bool HitTest( const BOX2I& aRect, bool aContained, int aAccuracy = 0 ) const override;
495 bool HitTest( const SHAPE_LINE_CHAIN& aPoly, bool aContained ) const override;
496
497 void Plot( PLOTTER* aPlotter, bool aBackground, const SCH_PLOT_OPTS& aPlotOpts,
498 int aUnit, int aBodyStyle, const VECTOR2I& aOffset, bool aDimmed ) override;
499
500 EDA_ITEM* Clone() const override;
501
505 const std::vector<SCH_SHEET_INSTANCE>& GetInstances() const { return m_instances; }
506
516 bool HasRootInstance() const;
517
526 const SCH_SHEET_INSTANCE& GetRootInstance() const;
527
528 void RemoveInstance( const KIID_PATH& aInstancePath );
529
530 void AddInstance( const SCH_SHEET_INSTANCE& aInstance );
531
532 void DeleteVariant( const KIID_PATH& aPath, const wxString& aVariantName );
533
534 void RenameVariant( const KIID_PATH& aPath, const wxString& aOldName, const wxString& aNewName );
535
536 void CopyVariant( const KIID_PATH& aPath, const wxString& aSourceVariant,
537 const wxString& aNewVariant );
538
539 void AddVariant( const SCH_SHEET_PATH& aInstance, const SCH_SHEET_VARIANT& aVariant );
540 void DeleteVariant( const SCH_SHEET_PATH& aInstance, const wxString& aVariantName )
541 {
542 DeleteVariant( aInstance.Path(), aVariantName );
543 }
544
545 void RenameVariant( const SCH_SHEET_PATH& aInstance, const wxString& aOldName,
546 const wxString& aNewName )
547 {
548 RenameVariant( aInstance.Path(), aOldName, aNewName );
549 }
550
551 void CopyVariant( const SCH_SHEET_PATH& aInstance, const wxString& aSourceVariant,
552 const wxString& aNewVariant )
553 {
554 CopyVariant( aInstance.Path(), aSourceVariant, aNewVariant );
555 }
556
563 bool HasPageNumberChanges( const SCH_SHEET& aOther ) const;
564
570 static int ComparePageNum( const wxString& aPageNumberA, const wxString& aPageNumberB );
571
572 double Similarity( const SCH_ITEM& aOther ) const override;
573
574 bool operator==( const SCH_ITEM& aOther ) const override;
575
576#if defined(DEBUG)
577 void Show( int nestLevel, std::ostream& os ) const override;
578#endif
579
580protected:
583
584 void setInstances( const std::vector<SCH_SHEET_INSTANCE>& aInstances )
585 {
586 m_instances = aInstances;
587 }
588
602 bool addInstance( const KIID_PATH& aInstance );
603
613 wxString getPageNumber( const KIID_PATH& aParentPath ) const;
614
624 void setPageNumber( const KIID_PATH& aInstance, const wxString& aPageNumber );
625
626 bool getInstance( SCH_SHEET_INSTANCE& aInstance, const KIID_PATH& aSheetPath,
627 bool aTestFromEnd = false ) const;
628
630 const SCH_SHEET_INSTANCE* getInstance( const KIID_PATH& aPath ) const;
631
632 SCH_SHEET_INSTANCE* getInstance( const SCH_SHEET_PATH& aPath ) { return getInstance( aPath.Path() ); }
633 const SCH_SHEET_INSTANCE* getInstance( const SCH_SHEET_PATH& aPath ) const { return getInstance( aPath.Path() ); }
634
642 void renumberPins();
643
648 SCH_SHEET_PATH findSelf() const;
649
650private:
651 bool doIsConnected( const VECTOR2I& aPosition ) const override;
652
653 friend class SCH_SHEET_PIN;
654 friend class SCH_SHEET_LIST;
655
656private:
657 SCH_SCREEN* m_screen; // Screen that contains the physical data for the
658 // sheet. In complex hierarchies multiple sheets
659 // can share a common screen.
660
661 std::vector<SCH_SHEET_PIN*> m_pins; // The list of sheet connection points.
662 std::vector<SCH_FIELD> m_fields;
663
667 bool m_DNP;
668
669 VECTOR2I m_pos; // The position of the sheet.
670 VECTOR2I m_size; // The size of the sheet.
674
675 std::vector<SCH_SHEET_INSTANCE> m_instances;
676};
677
678
679#endif // SCH_SHEEET_H
constexpr EDA_IU_SCALE schIUScale
Definition base_units.h:123
BITMAPS
A list of all bitmap identifiers.
BOX2< VECTOR2I > BOX2I
Definition box2.h:918
The base class for create windows for drawing purpose.
A base class for most all the KiCad significant classes used in schematics and boards.
Definition eda_item.h:96
KICAD_T Type() const
Returns the type of object.
Definition eda_item.h:108
EDA_ITEM(EDA_ITEM *parent, KICAD_T idType, bool isSCH_ITEM=false, bool isBOARD_ITEM=false)
Definition eda_item.cpp:37
A color representation with 4 components: red, green, blue, alpha.
Definition color4d.h:101
Base plotter engine class.
Definition plotter.h:133
virtual const wxString & GetText() const override
Return the string associated with the text object.
Definition sch_field.h:128
wxString GetShownText(const SCH_SHEET_PATH *aPath, bool aAllowExtraText, int aDepth=0, const wxString &aVariantName=wxEmptyString) const
void SetText(const wxString &aText) override
Object to parser s-expression symbol library and schematic file formats.
Base class for any item which can be embedded within the SCHEMATIC container class,...
Definition sch_item.h:162
SCH_LAYER_ID GetLayer() const
Return the layer this item is on.
Definition sch_item.h:338
SCH_ITEM(EDA_ITEM *aParent, KICAD_T aType, int aUnit=0, int aBodyStyle=0)
Definition sch_item.cpp:52
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...
KIID_PATH Path() const
Get the sheet path as an KIID_PATH.
Define a sheet pin (label) used in sheets to create hierarchical schematics.
Variant information for a schematic sheet.
Sheet symbol placed in a schematic, and is the entry point for a sub schematic.
Definition sch_sheet.h:44
void GetEndPoints(std::vector< DANGLING_END_ITEM > &aItemList) override
Add the schematic item end points to aItemList if the item has end points.
void GetContextualTextVars(wxArrayString *aVars) const
Return the list of system text vars & fields for this sheet.
friend SCH_SHEET_PATH
Definition sch_sheet.h:581
void SetBorderColor(KIGFX::COLOR4D aColor)
Definition sch_sheet.h:148
const std::vector< SCH_SHEET_PIN * > & GetPins() const
Definition sch_sheet.h:228
friend class SCH_SHEET_PIN
Definition sch_sheet.h:653
VECTOR2I m_size
Definition sch_sheet.h:670
void SetFileName(const wxString &aFilename)
Definition sch_sheet.h:376
bool HasConnectivityChanges(const SCH_ITEM *aItem, const SCH_SHEET_PATH *aInstance=nullptr) const override
Check if aItem has connectivity changes against this object.
wxString GetFileName() const
Return the filename corresponding to this sheet.
Definition sch_sheet.h:370
bool getInstance(SCH_SHEET_INSTANCE &aInstance, const KIID_PATH &aSheetPath, bool aTestFromEnd=false) const
BITMAPS GetMenuImage() const override
Return a pointer to an image to be used in menus.
void SetExcludedFromSim(bool aExcludeFromSim, const SCH_SHEET_PATH *aInstance=nullptr, const wxString &aVariantName=wxEmptyString) override
Set or clear the exclude from simulation flag.
void CopyVariant(const KIID_PATH &aPath, const wxString &aSourceVariant, const wxString &aNewVariant)
void SetSize(const VECTOR2I &aSize)
Definition sch_sheet.h:142
void RemoveInstance(const KIID_PATH &aInstancePath)
void SetDNP(bool aDNP, const SCH_SHEET_PATH *aInstance=nullptr, const wxString &aVariantName=wxEmptyString) override
bool addInstance(const KIID_PATH &aInstance)
Add a new instance aSheetPath to the instance list.
void AddPin(SCH_SHEET_PIN *aSheetPin)
Add aSheetPin to the sheet.
bool HasRootInstance() const
Check to see if this sheet has a root sheet instance.
wxString GetClass() const override
Return the class name.
Definition sch_sheet.h:68
wxString getPageNumber(const KIID_PATH &aParentPath) const
Return the sheet page number for aParentPath.
void SetExcludedFromBOM(bool aExcludeFromBOM, const SCH_SHEET_PATH *aInstance=nullptr, const wxString &aVariantName=wxEmptyString) override
Set or clear the exclude from schematic bill of materials flag.
int GetPenWidth() const override
std::map< SCH_SHEET_PIN *, SCH_NO_CONNECT * > GetNoConnects() const
EDA_ITEM * Clone() const override
Create a duplicate of this item with linked list members set to NULL.
bool IsConnectable() const override
Definition sch_sheet.h:410
bool IsTopLevelSheet() const
Check if this sheet is a top-level sheet.
SCH_SHEET_PATH findSelf() const
Get the sheetpath of this sheet.
bool GetDNPProp() const
bool Matches(const EDA_SEARCH_DATA &aSearchData, void *aAuxData) const override
Compare the item against the search criteria in aSearchData.
bool GetExcludedFromBoardProp() const
Definition sch_sheet.h:467
double Similarity(const SCH_ITEM &aOther) const override
Return a measure of how likely the other object is to represent the same object.
bool GetExcludedFromBOMProp() const
VECTOR2I m_pos
Definition sch_sheet.h:669
void CopyVariant(const SCH_SHEET_PATH &aInstance, const wxString &aSourceVariant, const wxString &aNewVariant)
Definition sch_sheet.h:551
std::vector< SCH_FIELD > & GetFields()
Return a reference to the vector holding the sheet's fields.
Definition sch_sheet.h:87
KIGFX::COLOR4D m_borderColor
Definition sch_sheet.h:672
SCH_FIELD * GetField(FIELD_T aFieldType)
Return a mandatory field in this sheet.
bool m_excludedFromBOM
Definition sch_sheet.h:665
wxString GetName() const
Definition sch_sheet.h:136
void renumberPins()
Renumber the sheet pins in the sheet.
VECTOR2I GetRotationCenter() const
Rotating around the boundingBox's center can cause walking when the sheetname or filename is longer t...
SCH_SHEET_PIN * GetPin(const VECTOR2I &aPosition)
Return the sheet pin item found at aPosition in the sheet.
bool GetExcludedFromBOM(const SCH_SHEET_PATH *aInstance=nullptr, const wxString &aVariantName=wxEmptyString) const override
bool operator<(const SCH_ITEM &aItem) const override
void CleanupSheet()
Delete sheet label which do not have a corresponding hierarchical label.
void RemovePin(const SCH_SHEET_PIN *aSheetPin)
Remove aSheetPin from the sheet.
void SetPositionIgnoringPins(const VECTOR2I &aPosition)
bool SearchHierarchy(const wxString &aFilename, SCH_SCREEN **aScreen)
Search the existing hierarchy for an instance of screen loaded from aFileName.
bool GetExcludedFromSim(const SCH_SHEET_PATH *aInstance=nullptr, const wxString &aVariantName=wxEmptyString) const override
bool LocatePathOfScreen(SCH_SCREEN *aScreen, SCH_SHEET_PATH *aList)
Search the existing hierarchy for an instance of screen loaded from aFileName.
std::vector< SCH_SHEET_INSTANCE > m_instances
Definition sch_sheet.h:675
bool HasUndefinedPins() const
Check all sheet labels against schematic for undefined hierarchical labels.
bool m_excludedFromSim
Definition sch_sheet.h:664
void SetPosition(const VECTOR2I &aPosition) override
wxString GetFieldText(const wxString &aFieldName, const SCH_SHEET_PATH *aPath=nullptr, const wxString &aVariantName=wxEmptyString) const
void SetBackgroundColor(KIGFX::COLOR4D aColor)
Definition sch_sheet.h:151
int SymbolCount() const
Count our own symbols, without the power symbols.
void Plot(PLOTTER *aPlotter, bool aBackground, const SCH_PLOT_OPTS &aPlotOpts, int aUnit, int aBodyStyle, const VECTOR2I &aOffset, bool aDimmed) override
Plot the item to aPlotter.
bool IsReplaceable() const override
Override this method in any derived object that supports test find and replace.
Definition sch_sheet.h:393
void SetDNPProp(bool aEnable)
void AddInstance(const SCH_SHEET_INSTANCE &aInstance)
int GetMinWidth(bool aFromLeft) const
Return the minimum width of the sheet based on the widths of the sheet pin text.
bool operator==(const SCH_ITEM &aOther) const override
SCH_SCREEN * m_screen
Definition sch_sheet.h:657
std::vector< int > ViewGetLayers() const override
Return the layers the item is drawn on (which may be more than its "home" layer)
std::vector< SCH_FIELD > m_fields
Definition sch_sheet.h:662
void RenameVariant(const KIID_PATH &aPath, const wxString &aOldName, const wxString &aNewName)
VECTOR2I GetSize() const
Definition sch_sheet.h:141
KIGFX::COLOR4D m_backgroundColor
Definition sch_sheet.h:673
void SetExcludedFromBoard(bool aExclude, const SCH_SHEET_PATH *aInstance=nullptr, const wxString &aVariantName=wxEmptyString) override
Set or clear exclude from board netlist flag.
Definition sch_sheet.h:455
void DeleteVariant(const KIID_PATH &aPath, const wxString &aVariantName)
SCH_SHEET(EDA_ITEM *aParent=nullptr, const VECTOR2I &aPos=VECTOR2I(0, 0), VECTOR2I aSize=VECTOR2I(schIUScale.MilsToIU(MIN_SHEET_WIDTH), schIUScale.MilsToIU(MIN_SHEET_HEIGHT)))
Definition sch_sheet.cpp:55
void SetName(const wxString &aName)
Definition sch_sheet.h:137
int CountSheets() const
Count the number of sheets found in "this" sheet including all of the subsheets.
int GetNextFieldOrdinal() const
Return the next ordinal for a user field for this sheet.
SCH_SCREEN * GetScreen() const
Definition sch_sheet.h:139
void SetExcludedFromSimProp(bool aEnable)
bool HasPins() const
Definition sch_sheet.h:262
VECTOR2I GetPosition() const override
Definition sch_sheet.h:490
const BOX2I GetBodyBoundingBox() const
Return a bounding box for the sheet body but not the fields.
bool HasPin(const wxString &aName) const
Check if the sheet already has a sheet pin named aName.
static int ComparePageNum(const wxString &aPageNumberA, const wxString &aPageNumberB)
Compare page numbers of schematic sheets.
void SetFieldText(const wxString &aFieldName, const wxString &aFieldText, const SCH_SHEET_PATH *aPath=nullptr, const wxString &aVariantName=wxEmptyString)
bool Deserialize(const google::protobuf::Any &aContainer) override
Deserializes the given protobuf message into this object.
void MirrorHorizontally(int aCenter) override
Mirror item horizontally about aCenter.
void SetFields(const std::vector< SCH_FIELD > &aFields)
Set multiple schematic fields.
int CountActiveSheets() const
Count the number of sheets found in "this" sheet including all of the subsheets.
void Serialize(google::protobuf::Any &aContainer) const override
Serializes this object to the given Any message.
Definition sch_sheet.cpp:82
int GetScreenCount() const
Return the number of times the associated screen for the sheet is being used.
void SetScreen(SCH_SCREEN *aScreen)
Set the SCH_SCREEN associated with this sheet to aScreen.
SCH_SHEET & operator=(const SCH_ITEM &aSheet)
bool HasPageNumberChanges(const SCH_SHEET &aOther) const
Check if the instance data of this sheet has any changes compared to aOther.
const SCH_SHEET_INSTANCE & GetRootInstance() const
Return the root sheet instance data.
bool doIsConnected(const VECTOR2I &aPosition) const override
Provide the object specific test to see if it is connected to aPosition.
void swapData(SCH_ITEM *aItem) override
Swap the internal data structures aItem with the schematic item.
bool m_excludedFromBoard
Definition sch_sheet.h:666
void setInstances(const std::vector< SCH_SHEET_INSTANCE > &aInstances)
Definition sch_sheet.h:584
const BOX2I GetBoundingBox() const override
Return the orthogonal bounding box of this object for display purposes.
const std::vector< SCH_FIELD > & GetFields() const
Definition sch_sheet.h:88
std::vector< VECTOR2I > GetConnectionPoints() const override
Add all the connection points for this item to aPoints.
KIGFX::COLOR4D GetBorderColor() const
Definition sch_sheet.h:147
std::vector< SCH_SHEET_PIN * > m_pins
Definition sch_sheet.h:661
bool IsMovableFromAnchorPoint() const override
Return true for items which are moved with the anchor point at mouse cursor and false for items moved...
Definition sch_sheet.h:82
bool CanConnect(const SCH_ITEM *aItem) const override
Definition sch_sheet.h:415
INSPECT_RESULT Visit(INSPECTOR inspector, void *testData, const std::vector< KICAD_T > &aScanTypes) override
May be re-implemented for each derived class in order to handle all the types given by its member dat...
friend class SCH_SHEET_LIST
Definition sch_sheet.h:654
void SetBorderWidth(int aWidth)
Definition sch_sheet.h:145
static bool ClassOf(const EDA_ITEM *aItem)
Definition sch_sheet.h:63
void MirrorVertically(int aCenter) override
Mirror item vertically about aCenter.
SCH_FIELD * AddField(const SCH_FIELD &aField)
Add a @aField to the list of fields.
void setPageNumber(const KIID_PATH &aInstance, const wxString &aPageNumber)
Set the page number for the sheet instance aInstance.
bool IsVirtualRootSheet() const
void AutoplaceFields(SCH_SCREEN *aScreen, AUTOPLACE_ALGO aAlgo) override
int GetMinHeight(bool aFromTop) const
Return the minimum height that the sheet can be resized based on the sheet pin positions.
bool GetDNP(const SCH_SHEET_PATH *aInstance=nullptr, const wxString &aVariantName=wxEmptyString) const override
Set or clear the 'Do Not Populate' flags.
bool GetExcludedFromSimProp() const
void SetExcludedFromBoardProp(bool aExclude)
Definition sch_sheet.h:468
int m_borderWidth
Definition sch_sheet.h:671
wxString GetItemDescription(UNITS_PROVIDER *aUnitsProvider, bool aFull) const override
Return a user-visible description string of this item.
bool UpdateDanglingState(std::vector< DANGLING_END_ITEM > &aItemListByType, std::vector< DANGLING_END_ITEM > &aItemListByPos, const SCH_SHEET_PATH *aPath=nullptr) override
Test the schematic item to aItemList to check if it's dangling state has changed.
bool GetExcludedFromBoard(const SCH_SHEET_PATH *aInstance=nullptr, const wxString &aVariantName=wxEmptyString) const override
Definition sch_sheet.h:461
void Resize(const VECTOR2I &aSize)
Resize this sheet to aSize and adjust all of the labels accordingly.
void Move(const VECTOR2I &aMoveVector) override
Move the item by aMoveVector to a new position.
int GetBorderWidth() const
Definition sch_sheet.h:144
void GetMsgPanelInfo(EDA_DRAW_FRAME *aFrame, std::vector< MSG_PANEL_ITEM > &aList) override
Populate aList of MSG_PANEL_ITEM objects with it's internal state for display purposes.
bool m_DNP
Definition sch_sheet.h:667
std::vector< SCH_SHEET_PIN * > & GetPins()
Definition sch_sheet.h:227
void RunOnChildren(const std::function< void(SCH_ITEM *)> &aFunction, RECURSE_MODE aMode) override
void SetExcludedFromBOMProp(bool aEnable)
wxString GetShownName(bool aAllowExtraText) const
Definition sch_sheet.h:132
void DeleteVariant(const SCH_SHEET_PATH &aInstance, const wxString &aVariantName)
Definition sch_sheet.h:540
friend SCH_IO_KICAD_SEXPR_PARSER
Definition sch_sheet.h:582
void Rotate(const VECTOR2I &aCenter, bool aRotateCCW) override
Rotate the item around aCenter 90 degrees in the clockwise direction.
void AddVariant(const SCH_SHEET_PATH &aInstance, const SCH_SHEET_VARIANT &aVariant)
bool ResolveTextVar(const SCH_SHEET_PATH *aPath, wxString *token, int aDepth=0) const
Resolve any references to system tokens supported by the sheet.
const std::vector< SCH_SHEET_INSTANCE > & GetInstances() const
Definition sch_sheet.h:505
void RenameVariant(const SCH_SHEET_PATH &aInstance, const wxString &aOldName, const wxString &aNewName)
Definition sch_sheet.h:545
SCH_SHEET_INSTANCE * getInstance(const SCH_SHEET_PATH &aPath)
Definition sch_sheet.h:632
bool IsVerticalOrientation() const
const SCH_SHEET_INSTANCE * getInstance(const SCH_SHEET_PATH &aPath) const
Definition sch_sheet.h:633
bool HitTest(const VECTOR2I &aPosition, int aAccuracy) const override
Test if aPosition is inside or on the boundary of this item.
KIGFX::COLOR4D GetBackgroundColor() const
Definition sch_sheet.h:150
Represent a polyline containing arcs as well as line segments: A chain of connected line and/or arc s...
RECURSE_MODE
Definition eda_item.h:48
INSPECT_RESULT
Definition eda_item.h:42
const INSPECTOR_FUNC & INSPECTOR
std::function passed to nested users by ref, avoids copying std::function.
Definition eda_item.h:89
@ LAYER_WIRE
Definition layer_ids.h:450
@ LAYER_BUS
Definition layer_ids.h:451
AUTOPLACE_ALGO
Definition sch_item.h:65
#define MIN_SHEET_HEIGHT
Definition sch_sheet.h:37
#define MIN_SHEET_WIDTH
Definition sch_sheet.h:36
A simple container for sheet instance information.
FIELD_T
The set of all field indices assuming an array like sequence that a SCH_COMPONENT or LIB_PART can hol...
@ SCH_LINE_T
Definition typeinfo.h:160
@ SCH_NO_CONNECT_T
Definition typeinfo.h:157
@ SCH_SYMBOL_T
Definition typeinfo.h:169
@ SCH_SHEET_T
Definition typeinfo.h:172
VECTOR2< int32_t > VECTOR2I
Definition vector2d.h:683