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  virtual void onUpdateAddUserDefinedLayer( wxUpdateUIEvent& event ) override;
114 
115  bool testLayerNames();
116 
121 
126 
127  wxArrayString getAvailableUserDefinedLayers();
128 
129  PANEL_SETUP_LAYERS_CTLs getCTLs( LAYER_NUM aLayerNumber );
130  wxControl* getName( LAYER_NUM aLayer );
131  wxCheckBox* getCheckBox( LAYER_NUM aLayer );
132  wxChoice* getChoice( LAYER_NUM aLayer );
133 
139 };
140 
141 
142 
143 #endif //PANEL_SETUP_LAYERS_H
144 
145 
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.
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.
virtual void addUserDefinedLayer(wxCommandEvent &aEvent) override
LSEQ is a sequence (and therefore also a set) of PCB_LAYER_IDs.
void ImportSettingsFrom(BOARD *aBoard)
int LAYER_NUM
This can be replaced with int and removed.
PCB_EDIT_FRAME * m_frame
wxArrayString getAvailableUserDefinedLayers()
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.
virtual void onUpdateAddUserDefinedLayer(wxUpdateUIEvent &event) override
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