KiCad PCB EDA Suite
panel_setup_layers.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) 2018-2021 KiCad Developers, see change_log.txt for contributors.
5  *
6  * This program is free software; you can redistribute it and/or
7  * modify it under the terms of the GNU General Public License
8  * as published by the Free Software Foundation; either version 2
9  * of the License, or (at your option) any later version.
10  *
11  * This program is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14  * GNU General Public License for more details.
15  *
16  * You should have received a copy of the GNU General Public License
17  * along with this program; if not, you may find one here:
18  * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
19  * or you may search the http://www.gnu.org website for the version 2 license,
20  * or you may write to the Free Software Foundation, Inc.,
21  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
22  */
23 
24 
25 #ifndef PANEL_SETUP_LAYERS_H
26 #define PANEL_SETUP_LAYERS_H
27 
28 #include <widgets/unit_binder.h>
29 #include <widgets/paged_dialog.h>
31 
32 class PCB_EDIT_FRAME;
33 class BOARD;
36 
37 
42 {
43  PANEL_SETUP_LAYERS_CTLs( wxControl* aName, wxCheckBox* aCheckBox, wxControl* aChoiceOrDesc )
44  {
45  name = aName;
46  checkbox = aCheckBox;
47  choice = aChoiceOrDesc;
48  }
49 
50  wxControl* name;
51  wxCheckBox* checkbox;
52  wxControl* choice;
53 };
54 
55 
57 {
58 public:
59  PANEL_SETUP_LAYERS( PAGED_DIALOG* aParent, PCB_EDIT_FRAME* aFrame );
60 
61  void ImportSettingsFrom( BOARD* aBoard );
62 
74  bool CheckCopperLayerCount( BOARD* aWorkingBoard, BOARD* aImportedBoard );
75 
78 
80  wxString GetLayerName( LAYER_NUM layer );
81 
87  void SyncCopperLayers( int aNumCopperLayers );
88 
90  {
91  m_physicalStackup = aPanel;
92  }
93 
94 private:
95 
96  void setLayerCheckBox( LAYER_NUM layer, bool isChecked );
97  void setCopperLayerCheckBoxes( int copperCount );
100 
101  void showBoardLayerNames();
102  void showSelectedLayerCheckBoxes( LSET enableLayerMask );
103  void showLayerTypes();
104 
105  int getLayerTypeIndex( LAYER_NUM layer );
106 
107  void OnCheckBox( wxCommandEvent& event ) override;
108  void DenyChangeCheckBox( wxCommandEvent& event ) override;
109  bool TransferDataToWindow() override;
110  bool TransferDataFromWindow() override;
111  virtual void addUserDefinedLayer( wxCommandEvent& aEvent ) override;
112 
113  bool testLayerNames();
114 
119 
124 
125  PANEL_SETUP_LAYERS_CTLs getCTLs( LAYER_NUM aLayerNumber );
126  wxControl* getName( LAYER_NUM aLayer );
127  wxCheckBox* getCheckBox( LAYER_NUM aLayer );
128  wxChoice* getChoice( LAYER_NUM aLayer );
129 
135 };
136 
137 
138 
139 #endif //PANEL_SETUP_LAYERS_H
140 
141 
LSEQ getNonRemovableLayers()
Return a list of layers in use in footprints, and therefore not removable.
void OnCheckBox(wxCommandEvent &event) override
PANEL_SETUP_LAYERS(PAGED_DIALOG *aParent, PCB_EDIT_FRAME *aFrame)
bool TransferDataFromWindow() override
void SyncCopperLayers(int aNumCopperLayers)
Called when switching to this tab to make sure that any changes to the copper layer count made on the...
bool TransferDataToWindow() override
Class PANEL_SETUP_LAYERS_BASE.
int LAYER_NUM
This can be replaced with int and removed.
Definition: layer_ids.h:40
wxChoice * getChoice(LAYER_NUM aLayer)
PAGED_DIALOG * m_parentDialog
wxCheckBox * getCheckBox(LAYER_NUM aLayer)
PANEL_SETUP_LAYERS_CTLs(wxControl *aName, wxCheckBox *aCheckBox, wxControl *aChoiceOrDesc)
void setCopperLayerCheckBoxes(int copperCount)
bool CheckCopperLayerCount(BOARD *aWorkingBoard, BOARD *aImportedBoard)
Check and warn if inner copper layers will be deleted.
LSET is a set of PCB_LAYER_IDs.
Definition: layer_ids.h:502
virtual void addUserDefinedLayer(wxCommandEvent &aEvent) override
LSEQ is a sequence (and therefore also a set) of PCB_LAYER_IDs.
Definition: layer_ids.h:463
void ImportSettingsFrom(BOARD *aBoard)
PCB_EDIT_FRAME * m_frame
PANEL_SETUP_LAYERS_CTLs getCTLs(LAYER_NUM aLayerNumber)
Information pertinent to a Pcbnew printed circuit board.
Definition: board.h:190
The main frame for Pcbnew.
void showSelectedLayerCheckBoxes(LSET enableLayerMask)
wxControl * getName(LAYER_NUM aLayer)
wxString GetLayerName(LAYER_NUM layer)
void setLayerCheckBox(LAYER_NUM layer, bool isChecked)
int getLayerTypeIndex(LAYER_NUM layer)
void SetPhysicalStackupPanel(PANEL_SETUP_BOARD_STACKUP *aPanel)
The 3 UI control pointers for a single board layer.
void DenyChangeCheckBox(wxCommandEvent &event) override
LSEQ getRemovedLayersWithItems()
Return a list of layers removed from the board that contain items.
Container for design settings for a BOARD object.
PANEL_SETUP_BOARD_STACKUP * m_physicalStackup