KiCad PCB EDA Suite
schematic.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) 2020 KiCad Developers, see AUTHORS.txt for contributors.
5  *
6  * This program is free software: you can redistribute it and/or modify it
7  * under the terms of the GNU General Public License as published by the
8  * Free Software Foundation, either version 3 of the License, or (at your
9  * option) any later version.
10  *
11  * This program is distributed in the hope that it will be useful, but
12  * WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14  * General Public License for more details.
15  *
16  * You should have received a copy of the GNU General Public License along
17  * with this program. If not, see <http://www.gnu.org/licenses/>.
18  */
19 
20 #ifndef KICAD_SCHEMATIC_H
21 #define KICAD_SCHEMATIC_H
22 
23 #include <base_struct.h>
24 #include <sch_sheet_path.h>
25 #include <schematic_settings.h>
26 
27 
28 class BUS_ALIAS;
29 class CONNECTION_GRAPH;
30 class EDA_BASE_FRAME;
31 class ERC_SETTINGS;
32 class PROJECT;
33 class SCH_SCREEN;
34 class SCH_SHEET;
35 
42 class SCHEMATIC : public EDA_ITEM
43 {
44  friend class SCH_EDIT_FRAME;
45 
46 private:
48 
51 
59 
62 
63 public:
64  SCHEMATIC( PROJECT* aPrj );
65 
66  ~SCHEMATIC();
67 
68  virtual wxString GetClass() const override
69  {
70  return wxT( "SCHEMATIC" );
71  }
72 
74  void Reset();
75 
77  PROJECT& Prj() const
78  {
79  return *const_cast<PROJECT*>( m_project );
80  }
81 
82  void SetProject( PROJECT* aPrj );
83 
85  void SetTemplateFieldNames( TEMPLATES* aTemplates );
86 
93  {
94  return SCH_SHEET_LIST( m_rootSheet );
95  }
96 
97  SCH_SHEET& Root() const
98  {
99  return *m_rootSheet;
100  }
101 
108  void SetRoot( SCH_SHEET* aRootSheet );
109 
111  bool IsValid() const
112  {
113  return m_rootSheet != nullptr;
114  }
115 
117  SCH_SCREEN* RootScreen() const;
118 
120  wxString GetFileName() const;
121 
123  {
124  return *m_currentSheet;
125  }
126 
127  void SetCurrentSheet( const SCH_SHEET_PATH& aPath )
128  {
129  *m_currentSheet = aPath;
130  }
131 
133  {
134  return m_connectionGraph;
135  }
136 
137  SCHEMATIC_SETTINGS& Settings() const;
138 
139  ERC_SETTINGS& ErcSettings() const;
140 
145  std::shared_ptr<BUS_ALIAS> GetBusAlias( const wxString& aLabel ) const;
146 
152  std::vector<wxString> GetNetClassAssignmentCandidates();
153 
154 #if defined(DEBUG)
155  void Show( int nestLevel, std::ostream& os ) const override {}
156 #endif
157 };
158 
159 #endif
SCH_SHEET_LIST.
PROJECT holds project specific data.
Definition: project.h:61
SCH_SHEET_LIST GetSheets() const
Builds and returns an updated schematic hierarchy TODO: can this be cached?
Definition: schematic.h:92
virtual wxString GetClass() const override
Function GetClass returns the class name.
Definition: schematic.h:68
Holds all the data relating to one schematic A schematic may consist of one or more sheets (and one r...
Definition: schematic.h:42
CONNECTION_GRAPH * ConnectionGraph() const
Definition: schematic.h:132
SCH_SHEET_PATH * m_currentSheet
The sheet path of the sheet currently being edited or displayed.
Definition: schematic.h:58
SCHEMATIC(PROJECT *aPrj)
Definition: schematic.cpp:30
Calculates the connectivity of a schematic and generates netlists.
SCHEMATIC_SETTINGS & Settings() const
Definition: schematic.cpp:138
bool IsValid() const
A simple test if the schematic is loaded, not a complete one.
Definition: schematic.h:111
Schematic editor (Eeschema) main window.
wxString GetFileName() const
Helper to retrieve the filename from the root sheet screen.
Definition: schematic.cpp:132
CONNECTION_GRAPH * m_connectionGraph
Holds and calculates connectivity information of this schematic.
Definition: schematic.h:61
void SetRoot(SCH_SHEET *aRootSheet)
Initializes the schematic with a new root sheet.
Definition: schematic.cpp:113
void SetTemplateFieldNames(TEMPLATES *aTemplates)
Sets up the template fieldnames link if this project is opened in eeschema.
Definition: schematic.cpp:101
std::shared_ptr< BUS_ALIAS > GetBusAlias(const wxString &aLabel) const
Returns a pointer to a bus alias object for the given label, or null if one doesn't exist.
Definition: schematic.cpp:152
PROJECT * m_project
Definition: schematic.h:47
Container for ERC settings.
Definition: erc_settings.h:87
SCH_SHEET_PATH.
void SetProject(PROJECT *aPrj)
Definition: schematic.cpp:72
SCH_SHEET * m_rootSheet
The top-level sheet in this schematic hierarchy (or potentially the only one)
Definition: schematic.h:50
Sheet symbol placed in a schematic, and is the entry point for a sub schematic.
Definition: sch_sheet.h:216
void Reset()
Initializes this schematic to a blank one, unloading anything existing.
Definition: schematic.cpp:49
SCH_SHEET & Root() const
Definition: schematic.h:97
The base frame for deriving all KiCad main window classes.
PROJECT & Prj() const
Return a reference to the project this schematic is part of.
Definition: schematic.h:77
EDA_ITEM is a base class for most all the KiCad significant classes, used in schematics and boards.
Definition: base_struct.h:159
These settings were stored in SCH_BASE_FRAME previously.
ERC_SETTINGS & ErcSettings() const
Definition: schematic.cpp:145
SCH_SCREEN * RootScreen() const
Helper to retreive the screen of the root sheet.
Definition: schematic.cpp:126
Definition of the SCH_SHEET_PATH and SCH_SHEET_LIST classes for Eeschema.
std::vector< wxString > GetNetClassAssignmentCandidates()
Returns a list of name candidates for netclass assignment.
Definition: schematic.cpp:167
void SetCurrentSheet(const SCH_SHEET_PATH &aPath)
Definition: schematic.h:127
SCH_SHEET_PATH & CurrentSheet() const
Definition: schematic.h:122