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 <map>
25#include <memory>
26
27#include <sch_field.h>
28
29class KIID_PATH;
30class SCH_SCREEN;
32class SCH_SHEET_LIST;
33class SCH_SHEET_PIN;
34class SCH_SHEET_PATH;
35class EDA_DRAW_FRAME;
36class SCH_NO_CONNECT;
38
39
40#define MIN_SHEET_WIDTH 500 // Units are mils.
41#define MIN_SHEET_HEIGHT 150 // Units are mils.
42
43
47class SCH_SHEET : public SCH_ITEM
48{
49public:
50 SCH_SHEET( EDA_ITEM* aParent = nullptr, const VECTOR2I& aPos = VECTOR2I( 0, 0 ),
51 VECTOR2I aSize = VECTOR2I( schIUScale.MilsToIU( MIN_SHEET_WIDTH ),
52 schIUScale.MilsToIU( MIN_SHEET_HEIGHT ) ) );
53
54 void Serialize( google::protobuf::Any& aContainer ) const override;
55 bool Deserialize( const google::protobuf::Any& aContainer ) override;
56
63 SCH_SHEET( const SCH_SHEET& aSheet );
64
65 ~SCH_SHEET();
66
67 static inline bool ClassOf( const EDA_ITEM* aItem )
68 {
69 return aItem && SCH_SHEET_T == aItem->Type();
70 }
71
72 wxString GetClass() const override
73 {
74 return wxT( "SCH_SHEET" );
75 }
76
86 bool IsMovableFromAnchorPoint() const override { return false; }
87
91 std::vector<SCH_FIELD>& GetFields() { return m_fields; }
92 const std::vector<SCH_FIELD>& GetFields() const { return m_fields; }
93
98 SCH_FIELD* GetField( FIELD_T aFieldType );
99 const SCH_FIELD* GetField( FIELD_T aFieldNdx ) const;
100
108 SCH_FIELD* GetField( const wxString& aFieldName );
109 const SCH_FIELD* GetField( const wxString& aFieldName ) const;
110
111 std::vector<PROPERTY_BASE*> GetDynamicProperties() const override;
112
116 int GetNextFieldOrdinal() const;
117
123 void SetFields( const std::vector<SCH_FIELD>& aFields );
124
130 SCH_FIELD* AddField( const SCH_FIELD& aField );
131
132 void SetFieldText( SCH_FIELD* aField, const wxString& aFieldName, const wxString& aFieldText,
133 const SCH_SHEET_PATH* aPath, const wxString& aVariantName );
134
135 void SetFieldText( const wxString& aFieldName, const wxString& aFieldText, const SCH_SHEET_PATH* aPath = nullptr,
136 const wxString& aVariantName = wxEmptyString );
137
138 wxString GetFieldText( const SCH_FIELD* aField, const wxString& aFieldName, const SCH_SHEET_PATH* aPath,
139 const wxString& aVariantName ) const;
140
141 wxString GetFieldText( const wxString& aFieldName, const SCH_SHEET_PATH* aPath = nullptr,
142 const wxString& aVariantName = wxEmptyString ) const;
143
144 wxString GetShownName( RESOLUTION_CONTEXT aContext ) const
145 {
146 return GetField( FIELD_T::SHEET_NAME )->GetShownText( aContext );
147 }
148 wxString GetName() const { return GetField( FIELD_T::SHEET_NAME )->GetText(); }
149 void SetName( const wxString& aName ) { GetField( FIELD_T::SHEET_NAME )->SetText( aName ); }
150
151 SCH_SCREEN* GetScreen() const { return m_screen; }
152
153 VECTOR2I GetSize() const { return m_size; }
154 void SetSize( const VECTOR2I& aSize ) { m_size = aSize; }
155
156 int GetBorderWidth() const { return m_borderWidth; }
157 void SetBorderWidth( int aWidth ) { m_borderWidth = aWidth; }
158
160 void SetBorderColor( KIGFX::COLOR4D aColor ) { m_borderColor = aColor; }
161
164
170 bool IsVirtualRootSheet() const;
171
179 bool IsTopLevelSheet() const;
180
192 void SetScreen( SCH_SCREEN* aScreen );
193
200 void SyncUuidToScreen();
201
207 int GetScreenCount() const;
208
212 void GetContextualTextVars( wxArrayString* aVars ) const;
213
221 bool ResolveTextVar( const SCH_SHEET_PATH* aPath, wxString* token, int aDepth = 0 ) const;
222
223 void GetMsgPanelInfo( EDA_DRAW_FRAME* aFrame, std::vector<MSG_PANEL_ITEM>& aList ) override;
224
225 /* there is no member for orientation in sch_sheet, to preserve file
226 * format, we detect orientation based on pin edges
227 */
228 bool IsVerticalOrientation() const;
229
234 std::map<SCH_SHEET_PIN*, SCH_NO_CONNECT*> GetNoConnects() const;
235
236 void SetPositionIgnoringPins( const VECTOR2I& aPosition );
237
247 void AddPin( SCH_SHEET_PIN* aSheetPin );
248
249 std::vector<SCH_SHEET_PIN*>& GetPins() { return m_pins; }
250 const std::vector<SCH_SHEET_PIN*>& GetPins() const { return m_pins; }
251
257 void RemovePin( const SCH_SHEET_PIN* aSheetPin );
258
265 void CleanupSheet();
266
274 SCH_SHEET_PIN* GetPin( const VECTOR2I& aPosition );
275
282 bool HasPin( const wxString& aName ) const;
283
284 bool HasPins() const { return !m_pins.empty(); }
285
291 bool HasUndefinedPins() const;
292
304 int GetMinWidth( bool aFromLeft ) const;
305
316 int GetMinHeight( bool aFromTop ) const;
317
318 int GetPenWidth() const override;
319
323 const BOX2I GetBodyBoundingBox() const;
324
325 const BOX2I GetBoundingBox() const override;
326
334
335 void swapData( SCH_ITEM* aItem ) override;
336
340 int SymbolCount() const;
341
349 bool SearchHierarchy( const wxString& aFilename, SCH_SCREEN** aScreen );
350
361 bool LocatePathOfScreen( SCH_SCREEN* aScreen, SCH_SHEET_PATH* aList );
362
368 int CountSheets() const;
369
377 int CountActiveSheets() const;
378
385 int CountSheets( const wxString& aFileName ) const;
386
392 wxString GetFileName() const
393 {
395 }
396
397 // Set a new filename without changing anything else
398 void SetFileName( const wxString& aFilename )
399 {
400 // Filenames are stored using unix notation
401 wxString tmp = aFilename;
402 tmp.Replace( wxT( "\\" ), wxT( "/" ) );
404 }
405
406 // Geometric transforms (used in block operations):
407
408 void Move( const VECTOR2I& aMoveVector ) override;
409 void MirrorHorizontally( int aCenter ) override;
410 void MirrorVertically( int aCenter ) override;
411 void Rotate( const VECTOR2I& aCenter, bool aRotateCCW ) override;
412
413 bool Matches( const EDA_SEARCH_DATA& aSearchData, void* aAuxData ) const override;
414
415 bool IsReplaceable() const override { return true; }
416
422 void Resize( const VECTOR2I& aSize );
423
424 void AutoplaceFields( SCH_SCREEN* aScreen, AUTOPLACE_ALGO aAlgo ) override;
425
426 void GetEndPoints( std::vector <DANGLING_END_ITEM>& aItemList ) override;
427
428 bool UpdateDanglingState( std::vector<DANGLING_END_ITEM>& aItemListByType,
429 std::vector<DANGLING_END_ITEM>& aItemListByPos,
430 const SCH_SHEET_PATH* aPath = nullptr ) override;
431
432 bool IsConnectable() const override { return true; }
433
434 bool HasConnectivityChanges( const SCH_ITEM* aItem,
435 const SCH_SHEET_PATH* aInstance = nullptr ) const override;
436
437 bool CanConnect( const SCH_ITEM* aItem ) const override
438 {
439 return ( aItem->Type() == SCH_LINE_T && aItem->GetLayer() == LAYER_WIRE )
440 || ( aItem->Type() == SCH_LINE_T && aItem->GetLayer() == LAYER_BUS )
441 || ( aItem->Type() == SCH_NO_CONNECT_T )
442 || ( aItem->Type() == SCH_SYMBOL_T );
443 }
444
445 std::vector<VECTOR2I> GetConnectionPoints() const override;
446
447 INSPECT_RESULT Visit( INSPECTOR inspector, void* testData,
448 const std::vector<KICAD_T>& aScanTypes ) override;
449
450 void RunOnChildren( const std::function<void( SCH_ITEM* )>& aFunction, RECURSE_MODE aMode ) override;
451
455 void SetExcludedFromSim( bool aExcludeFromSim, const SCH_SHEET_PATH* aInstance = nullptr,
456 const wxString& aVariantName = wxEmptyString ) override;
457 bool GetExcludedFromSim( const SCH_SHEET_PATH* aInstance = nullptr,
458 const wxString& aVariantName = wxEmptyString ) const override;
459
460 bool GetExcludedFromSimProp() const;
461 void SetExcludedFromSimProp( bool aEnable );
462
466 void SetExcludedFromBOM( bool aExcludeFromBOM, const SCH_SHEET_PATH* aInstance = nullptr,
467 const wxString& aVariantName = wxEmptyString ) override;
468 bool GetExcludedFromBOM( const SCH_SHEET_PATH* aInstance = nullptr,
469 const wxString& aVariantName = wxEmptyString ) const override;
470
471 bool GetExcludedFromBOMProp() const;
472 void SetExcludedFromBOMProp( bool aEnable );
473
477 void SetExcludedFromBoard( bool aExclude, const SCH_SHEET_PATH* aInstance = nullptr,
478 const wxString& aVariantName = wxEmptyString ) override
479 {
480 m_excludedFromBoard = aExclude;
481 }
482
483 bool GetExcludedFromBoard( const SCH_SHEET_PATH* aInstance = nullptr,
484 const wxString& aVariantName = wxEmptyString ) const override
485 {
486 return m_excludedFromBoard;
487 }
488
490 void SetExcludedFromBoardProp( bool aExclude ) { SetExcludedFromBoard( aExclude ); }
491
495 bool GetDNP( const SCH_SHEET_PATH* aInstance = nullptr,
496 const wxString& aVariantName = wxEmptyString ) const override;
497 void SetDNP( bool aDNP, const SCH_SHEET_PATH* aInstance = nullptr,
498 const wxString& aVariantName = wxEmptyString ) override;
499 bool GetDNPProp() const;
500 void SetDNPProp( bool aEnable );
501
502 wxString GetItemDescription( UNITS_PROVIDER* aUnitsProvider, bool aFull ) const override;
503
504 BITMAPS GetMenuImage() const override;
505
506 SCH_SHEET& operator=( const SCH_ITEM& aSheet );
507
508 bool operator <( const SCH_ITEM& aItem ) const override;
509
510 std::vector<int> ViewGetLayers() const override;
511
512 VECTOR2I GetPosition() const override { return m_pos; }
513 void SetPosition( const VECTOR2I& aPosition ) override;
514
515 bool HitTest( const VECTOR2I& aPosition, int aAccuracy ) const override;
516 bool HitTest( const BOX2I& aRect, bool aContained, int aAccuracy = 0 ) const override;
517 bool HitTest( const SHAPE_LINE_CHAIN& aPoly, bool aContained ) const override;
518
519 void Plot( PLOTTER* aPlotter, bool aBackground, const SCH_PLOT_OPTS& aPlotOpts,
520 int aUnit, int aBodyStyle, const VECTOR2I& aOffset, bool aDimmed ) override;
521
522 EDA_ITEM* Clone() const override;
523
527 const std::vector<SCH_SHEET_INSTANCE>& GetInstances() const { return m_instances; }
528
530 const SCH_SHEET_INSTANCE* GetInstance( const KIID_PATH& aParentPath ) const
531 {
532 return getInstance( aParentPath );
533 }
534
544 bool HasRootInstance() const;
545
554 const SCH_SHEET_INSTANCE& GetRootInstance() const;
555
556 void RemoveInstance( const KIID_PATH& aInstancePath );
557
558 void AddInstance( const SCH_SHEET_INSTANCE& aInstance );
559
560 void DeleteVariant( const KIID_PATH& aPath, const wxString& aVariantName );
561
562 // Remove a variant's override of one field
563 void ClearVariantField( const KIID_PATH& aPath, const wxString& aVariantName,
564 const wxString& aFieldName );
565
566 void RenameVariant( const KIID_PATH& aPath, const wxString& aOldName, const wxString& aNewName );
567
568 void CopyVariant( const KIID_PATH& aPath, const wxString& aSourceVariant,
569 const wxString& aNewVariant );
570
571 void AddVariant( const SCH_SHEET_PATH& aInstance, const SCH_SHEET_VARIANT& aVariant );
572 void DeleteVariant( const SCH_SHEET_PATH& aInstance, const wxString& aVariantName )
573 {
574 DeleteVariant( aInstance.Path(), aVariantName );
575 }
576
577 void RenameVariant( const SCH_SHEET_PATH& aInstance, const wxString& aOldName,
578 const wxString& aNewName )
579 {
580 RenameVariant( aInstance.Path(), aOldName, aNewName );
581 }
582
583 void CopyVariant( const SCH_SHEET_PATH& aInstance, const wxString& aSourceVariant,
584 const wxString& aNewVariant )
585 {
586 CopyVariant( aInstance.Path(), aSourceVariant, aNewVariant );
587 }
588
595 bool HasPageNumberChanges( const SCH_SHEET& aOther ) const;
596
597 bool HasHierarchyChanges( const SCH_SHEET& aOther ) const;
598
599 bool HasPinIdentityChanges( const SCH_SHEET& aOther ) const;
600
606 static int ComparePageNum( const wxString& aPageNumberA, const wxString& aPageNumberB );
607
608 double Similarity( const SCH_ITEM& aOther ) const override;
609
610 bool operator==( const SCH_ITEM& aOther ) const override;
611
612#if defined(DEBUG)
613 void Show( int nestLevel, std::ostream& os ) const override;
614#endif
615
616protected:
619 friend SCHEMATIC; // Only to swap a staged screen in, see SCHEMATIC::AdoptContent().
620
621 void setInstances( const std::vector<SCH_SHEET_INSTANCE>& aInstances )
622 {
623 m_instances = aInstances;
624 }
625
639 bool addInstance( const KIID_PATH& aInstance );
640
650 wxString getPageNumber( const KIID_PATH& aParentPath ) const;
651
661 void setPageNumber( const KIID_PATH& aInstance, const wxString& aPageNumber );
662
663 bool getInstance( SCH_SHEET_INSTANCE& aInstance, const KIID_PATH& aSheetPath,
664 bool aTestFromEnd = false ) const;
665
666 void setVariantAttribute( bool aEnable, const SCH_SHEET_PATH* aInstance, const wxString& aVariantName,
667 bool SCH_SHEET::*aBase, bool SCH_SHEET_VARIANT::*aOverride );
668
670 const SCH_SHEET_INSTANCE* getInstance( const KIID_PATH& aPath ) const;
671
672 SCH_SHEET_INSTANCE* getInstance( const SCH_SHEET_PATH& aPath ) { return getInstance( aPath.Path() ); }
673 const SCH_SHEET_INSTANCE* getInstance( const SCH_SHEET_PATH& aPath ) const { return getInstance( aPath.Path() ); }
674
682 void renumberPins();
683
691 SCH_SHEET_PATH findSelf() const;
692
693private:
694 bool doIsConnected( const VECTOR2I& aPosition ) const override;
695
696 friend class SCH_SHEET_PIN;
697 friend class SCH_SHEET_LIST;
698
699private:
700 SCH_SCREEN* m_screen; // Screen that contains the physical data for the
701 // sheet. In complex hierarchies multiple sheets
702 // can share a common screen.
703
704 std::vector<SCH_SHEET_PIN*> m_pins; // The list of sheet connection points.
705 std::vector<SCH_FIELD> m_fields;
706
710 bool m_DNP;
711
712 VECTOR2I m_pos; // The position of the sheet.
713 VECTOR2I m_size; // The size of the sheet.
717
718 std::vector<SCH_SHEET_INSTANCE> m_instances;
719
720 mutable std::map<wxString, std::unique_ptr<SCH_SHEET_FIELD_PROPERTY>> m_dynamicPropertyCache;
721};
722
723
724#endif // SCH_SHEEET_H
constexpr EDA_IU_SCALE schIUScale
Definition base_units.h:130
BITMAPS
A list of all bitmap identifiers.
BOX2< VECTOR2I > BOX2I
Definition box2.h:914
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:98
KICAD_T Type() const
Returns the type of object.
Definition eda_item.h:110
EDA_ITEM(EDA_ITEM *parent, KICAD_T idType, bool isSCH_ITEM=false, bool isBOARD_ITEM=false)
Definition eda_item.cpp:84
A color representation with 4 components: red, green, blue, alpha.
Definition color4d.h:101
Base plotter engine class.
Definition plotter.h:138
virtual const wxString & GetText() const override
Return the string associated with the text object.
Definition sch_field.h:139
wxString GetShownText(const SCH_SHEET_PATH *aPath, RESOLUTION_CONTEXT aContext, const wxString &aVariantName=wxEmptyString, int aDepth=0) 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:170
SCH_LAYER_ID GetLayer() const
Return the layer this item is on.
Definition sch_item.h:353
SCH_ITEM(EDA_ITEM *aParent, KICAD_T aType, int aUnit=0, int aBodyStyle=0)
Definition sch_item.cpp:65
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:48
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:617
bool HasPinIdentityChanges(const SCH_SHEET &aOther) const
void SetBorderColor(KIGFX::COLOR4D aColor)
Definition sch_sheet.h:160
const std::vector< SCH_SHEET_PIN * > & GetPins() const
Definition sch_sheet.h:250
wxString GetFieldText(const SCH_FIELD *aField, const wxString &aFieldName, const SCH_SHEET_PATH *aPath, const wxString &aVariantName) const
friend class SCH_SHEET_PIN
Definition sch_sheet.h:696
void ClearVariantField(const KIID_PATH &aPath, const wxString &aVariantName, const wxString &aFieldName)
VECTOR2I m_size
Definition sch_sheet.h:713
void SetFileName(const wxString &aFilename)
Definition sch_sheet.h:398
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:392
void SetFieldText(SCH_FIELD *aField, const wxString &aFieldName, const wxString &aFieldText, const SCH_SHEET_PATH *aPath, const wxString &aVariantName)
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)
const SCH_SHEET_INSTANCE * GetInstance(const KIID_PATH &aParentPath) const
Return this sheet's placement record under aParentPath, or nullptr if it has none.
Definition sch_sheet.h:530
void SetSize(const VECTOR2I &aSize)
Definition sch_sheet.h:154
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.
void SyncUuidToScreen()
Take the identity of the screen this sheet owns.
void setVariantAttribute(bool aEnable, const SCH_SHEET_PATH *aInstance, const wxString &aVariantName, bool SCH_SHEET::*aBase, bool SCH_SHEET_VARIANT::*aOverride)
wxString GetClass() const override
Return the class name.
Definition sch_sheet.h:72
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:432
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:489
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:712
void CopyVariant(const SCH_SHEET_PATH &aInstance, const wxString &aSourceVariant, const wxString &aNewVariant)
Definition sch_sheet.h:583
std::vector< SCH_FIELD > & GetFields()
Return a reference to the vector holding the sheet's fields.
Definition sch_sheet.h:91
KIGFX::COLOR4D m_borderColor
Definition sch_sheet.h:715
SCH_FIELD * GetField(FIELD_T aFieldType)
Return a mandatory field in this sheet.
bool m_excludedFromBOM
Definition sch_sheet.h:708
wxString GetName() const
Definition sch_sheet.h:148
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...
bool HasHierarchyChanges(const SCH_SHEET &aOther) const
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)
friend SCHEMATIC
Definition sch_sheet.h:619
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:718
bool HasUndefinedPins() const
Check all sheet labels against schematic for undefined hierarchical labels.
bool m_excludedFromSim
Definition sch_sheet.h:707
void SetPosition(const VECTOR2I &aPosition) override
void SetBackgroundColor(KIGFX::COLOR4D aColor)
Definition sch_sheet.h:163
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:415
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:700
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:705
void RenameVariant(const KIID_PATH &aPath, const wxString &aOldName, const wxString &aNewName)
VECTOR2I GetSize() const
Definition sch_sheet.h:153
KIGFX::COLOR4D m_backgroundColor
Definition sch_sheet.h:716
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:477
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)))
void SetName(const wxString &aName)
Definition sch_sheet.h:149
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:151
void SetExcludedFromSimProp(bool aEnable)
bool HasPins() const
Definition sch_sheet.h:284
VECTOR2I GetPosition() const override
Definition sch_sheet.h:512
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.
std::vector< PROPERTY_BASE * > GetDynamicProperties() const override
Return dynamically-computed properties specific to this object instance (e.g.
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.
wxString GetShownName(RESOLUTION_CONTEXT aContext) const
Definition sch_sheet.h:144
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:709
void setInstances(const std::vector< SCH_SHEET_INSTANCE > &aInstances)
Definition sch_sheet.h:621
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:92
std::vector< VECTOR2I > GetConnectionPoints() const override
Add all the connection points for this item to aPoints.
KIGFX::COLOR4D GetBorderColor() const
Definition sch_sheet.h:159
std::vector< SCH_SHEET_PIN * > m_pins
Definition sch_sheet.h:704
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:86
bool CanConnect(const SCH_ITEM *aItem) const override
Definition sch_sheet.h:437
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:697
void SetBorderWidth(int aWidth)
Definition sch_sheet.h:157
std::map< wxString, std::unique_ptr< SCH_SHEET_FIELD_PROPERTY > > m_dynamicPropertyCache
Definition sch_sheet.h:720
static bool ClassOf(const EDA_ITEM *aItem)
Definition sch_sheet.h:67
void MirrorVertically(int aCenter) override
Mirror item vertically about aCenter.
SCH_FIELD * AddField(const SCH_FIELD &aField)
Add aFieldName 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:490
int m_borderWidth
Definition sch_sheet.h:714
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:483
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:156
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:710
std::vector< SCH_SHEET_PIN * > & GetPins()
Definition sch_sheet.h:249
void RunOnChildren(const std::function< void(SCH_ITEM *)> &aFunction, RECURSE_MODE aMode) override
void SetExcludedFromBOMProp(bool aEnable)
void DeleteVariant(const SCH_SHEET_PATH &aInstance, const wxString &aVariantName)
Definition sch_sheet.h:572
friend SCH_IO_KICAD_SEXPR_PARSER
Definition sch_sheet.h:618
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:527
void RenameVariant(const SCH_SHEET_PATH &aInstance, const wxString &aOldName, const wxString &aNewName)
Definition sch_sheet.h:577
SCH_SHEET_INSTANCE * getInstance(const SCH_SHEET_PATH &aPath)
Definition sch_sheet.h:672
bool IsVerticalOrientation() const
const SCH_SHEET_INSTANCE * getInstance(const SCH_SHEET_PATH &aPath) const
Definition sch_sheet.h:673
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:162
Represent a polyline containing arcs as well as line segments: A chain of connected line and/or arc s...
RESOLUTION_CONTEXT
Definition common.h:91
RECURSE_MODE
Definition eda_item.h:50
INSPECT_RESULT
Definition eda_item.h:44
const INSPECTOR_FUNC & INSPECTOR
std::function passed to nested users by ref, avoids copying std::function.
Definition eda_item.h:91
@ LAYER_WIRE
Definition layer_ids.h:480
@ LAYER_BUS
Definition layer_ids.h:481
AUTOPLACE_ALGO
Definition sch_item.h:73
#define MIN_SHEET_HEIGHT
Definition sch_sheet.h:41
#define MIN_SHEET_WIDTH
Definition sch_sheet.h:40
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:159
@ SCH_NO_CONNECT_T
Definition typeinfo.h:156
@ SCH_SYMBOL_T
Definition typeinfo.h:168
@ SCH_SHEET_T
Definition typeinfo.h:171
VECTOR2< int32_t > VECTOR2I
Definition vector2d.h:708