KiCad PCB EDA Suite
PANEL_SETUP_LAYERS Class Reference

#include <panel_setup_layers.h>

Inheritance diagram for PANEL_SETUP_LAYERS:
PANEL_SETUP_LAYERS_BASE

Public Member Functions

 PANEL_SETUP_LAYERS (PAGED_DIALOG *aParent, PCB_EDIT_FRAME *aFrame)
 
void ImportSettingsFrom (BOARD *aBoard)
 
bool CheckCopperLayerCount (BOARD *aWorkingBoard, BOARD *aImportedBoard)
 Check and warn if inner copper layers will be deleted. More...
 
LSET GetUILayerMask ()
 
wxString GetLayerName (int layer)
 
void SyncCopperLayers (int aNumCopperLayers)
 Called when switching to this tab to make sure that any changes to the copper layer count made on the physical stackup page are reflected here. More...
 
void SetPhysicalStackupPanel (PANEL_SETUP_BOARD_STACKUP *aPanel)
 

Protected Attributes

wxButton * m_addUserDefinedLayerButton
 
wxStaticLine * m_staticline2
 
wxScrolledWindow * m_LayersListPanel
 
wxFlexGridSizer * m_LayerListFlexGridSizer
 
wxTextCtrl * m_CrtYdFrontName
 
wxStaticText * m_CrtYdFrontStaticText
 
wxCheckBox * m_FabFrontCheckBox
 
wxTextCtrl * m_FabFrontName
 
wxStaticText * m_FabFrontStaticText
 
wxCheckBox * m_AdhesFrontCheckBox
 
wxTextCtrl * m_AdhesFrontName
 
wxStaticText * m_AdhesFrontStaticText
 
wxCheckBox * m_SoldPFrontCheckBox
 
wxTextCtrl * m_SoldPFrontName
 
wxStaticText * m_SoldPFrontStaticText
 
wxCheckBox * m_SilkSFrontCheckBox
 
wxTextCtrl * m_SilkSFrontName
 
wxStaticText * m_SilkSFrontStaticText
 
wxCheckBox * m_MaskFrontCheckBox
 
wxTextCtrl * m_MaskFrontName
 
wxStaticText * m_MaskFrontStaticText
 
wxCheckBox * m_FrontCheckBox
 
wxTextCtrl * m_FrontName
 
wxChoice * m_FrontChoice
 
wxCheckBox * m_In1CheckBox
 
wxTextCtrl * m_In1Name
 
wxChoice * m_In1Choice
 
wxCheckBox * m_In2CheckBox
 
wxTextCtrl * m_In2Name
 
wxChoice * m_In2Choice
 
wxCheckBox * m_In3CheckBox
 
wxTextCtrl * m_In3Name
 
wxChoice * m_In3Choice
 
wxCheckBox * m_In4CheckBox
 
wxTextCtrl * m_In4Name
 
wxChoice * m_In4Choice
 
wxCheckBox * m_In5CheckBox
 
wxTextCtrl * m_In5Name
 
wxChoice * m_In5Choice
 
wxCheckBox * m_In6CheckBox
 
wxTextCtrl * m_In6Name
 
wxChoice * m_In6Choice
 
wxCheckBox * m_In7CheckBox
 
wxTextCtrl * m_In7Name
 
wxChoice * m_In7Choice
 
wxCheckBox * m_In8CheckBox
 
wxTextCtrl * m_In8Name
 
wxChoice * m_In8Choice
 
wxCheckBox * m_In9CheckBox
 
wxTextCtrl * m_In9Name
 
wxChoice * m_In9Choice
 
wxCheckBox * m_In10CheckBox
 
wxTextCtrl * m_In10Name
 
wxChoice * m_In10Choice
 
wxCheckBox * m_In11CheckBox
 
wxTextCtrl * m_In11Name
 
wxChoice * m_In11Choice
 
wxCheckBox * m_In12CheckBox
 
wxTextCtrl * m_In12Name
 
wxChoice * m_In12Choice
 
wxCheckBox * m_In13CheckBox
 
wxTextCtrl * m_In13Name
 
wxChoice * m_In13Choice
 
wxCheckBox * m_In14CheckBox
 
wxTextCtrl * m_In14Name
 
wxChoice * m_In14Choice
 
wxCheckBox * m_In15CheckBox
 
wxTextCtrl * m_In15Name
 
wxChoice * m_In15Choice
 
wxCheckBox * m_In16CheckBox
 
wxTextCtrl * m_In16Name
 
wxChoice * m_In16Choice
 
wxCheckBox * m_In17CheckBox
 
wxTextCtrl * m_In17Name
 
wxChoice * m_In17Choice
 
wxCheckBox * m_In18CheckBox
 
wxTextCtrl * m_In18Name
 
wxChoice * m_In18Choice
 
wxCheckBox * m_In19CheckBox
 
wxTextCtrl * m_In19Name
 
wxChoice * m_In19Choice
 
wxCheckBox * m_In20CheckBox
 
wxTextCtrl * m_In20Name
 
wxChoice * m_In20Choice
 
wxCheckBox * m_In21CheckBox
 
wxTextCtrl * m_In21Name
 
wxChoice * m_In21Choice
 
wxCheckBox * m_In22CheckBox
 
wxTextCtrl * m_In22Name
 
wxChoice * m_In22Choice
 
wxCheckBox * m_In23CheckBox
 
wxTextCtrl * m_In23Name
 
wxChoice * m_In23Choice
 
wxCheckBox * m_In24CheckBox
 
wxTextCtrl * m_In24Name
 
wxChoice * m_In24Choice
 
wxCheckBox * m_In25CheckBox
 
wxTextCtrl * m_In25Name
 
wxChoice * m_In25Choice
 
wxCheckBox * m_In26CheckBox
 
wxTextCtrl * m_In26Name
 
wxChoice * m_In26Choice
 
wxCheckBox * m_In27CheckBox
 
wxTextCtrl * m_In27Name
 
wxChoice * m_In27Choice
 
wxCheckBox * m_In28CheckBox
 
wxTextCtrl * m_In28Name
 
wxChoice * m_In28Choice
 
wxCheckBox * m_In29CheckBox
 
wxTextCtrl * m_In29Name
 
wxChoice * m_In29Choice
 
wxCheckBox * m_In30CheckBox
 
wxTextCtrl * m_In30Name
 
wxChoice * m_In30Choice
 
wxCheckBox * m_BackCheckBox
 
wxTextCtrl * m_BackName
 
wxChoice * m_BackChoice
 
wxCheckBox * m_MaskBackCheckBox
 
wxTextCtrl * m_MaskBackName
 
wxStaticText * m_MaskBackStaticText
 
wxCheckBox * m_SilkSBackCheckBox
 
wxTextCtrl * m_SilkSBackName
 
wxStaticText * m_SilkSBackStaticText
 
wxCheckBox * m_SoldPBackCheckBox
 
wxTextCtrl * m_SoldPBackName
 
wxStaticText * m_SoldPBackStaticText
 
wxCheckBox * m_AdhesBackCheckBox
 
wxTextCtrl * m_AdhesBackName
 
wxStaticText * m_AdhesBackStaticText
 
wxCheckBox * m_FabBackCheckBox
 
wxTextCtrl * m_FabBackName
 
wxStaticText * m_FabBackStaticText
 
wxTextCtrl * m_CrtYdBackName
 
wxStaticText * m_CrtYdBackStaticText
 
wxTextCtrl * m_PCBEdgesName
 
wxStaticText * m_PCBEdgesStaticText
 
wxTextCtrl * m_MarginName
 
wxStaticText * m_MarginStaticText
 
wxCheckBox * m_Eco1CheckBox
 
wxTextCtrl * m_Eco1Name
 
wxStaticText * m_Eco1StaticText
 
wxCheckBox * m_Eco2CheckBox
 
wxTextCtrl * m_Eco2Name
 
wxStaticText * m_Eco2StaticText
 
wxCheckBox * m_CommentsCheckBox
 
wxTextCtrl * m_CommentsName
 
wxStaticText * m_CommentsStaticText
 
wxCheckBox * m_DrawingsCheckBox
 
wxTextCtrl * m_DrawingsName
 
wxStaticText * m_DrawingsStaticText
 
wxCheckBox * m_User1CheckBox
 
wxTextCtrl * m_User1Name
 
wxStaticText * m_User1StaticText
 
wxCheckBox * m_User2CheckBox
 
wxTextCtrl * m_User2Name
 
wxStaticText * m_User2StaticText
 
wxCheckBox * m_User3CheckBox
 
wxTextCtrl * m_User3Name
 
wxStaticText * m_User3StaticText
 
wxCheckBox * m_User4CheckBox
 
wxTextCtrl * m_User4Name
 
wxStaticText * m_User4StaticText
 
wxCheckBox * m_User5CheckBox
 
wxTextCtrl * m_User5Name
 
wxStaticText * m_User5StaticText
 
wxCheckBox * m_User6CheckBox
 
wxTextCtrl * m_User6Name
 
wxStaticText * m_User6StaticText
 
wxCheckBox * m_User7CheckBox
 
wxTextCtrl * m_User7Name
 
wxStaticText * m_User7StaticText
 
wxCheckBox * m_User8CheckBox
 
wxTextCtrl * m_User8Name
 
wxStaticText * m_User8StaticText
 
wxCheckBox * m_User9CheckBox
 
wxTextCtrl * m_User9Name
 
wxStaticText * m_User9StaticText
 

Private Member Functions

void setLayerCheckBox (int layer, bool isChecked)
 
void setCopperLayerCheckBoxes (int copperCount)
 
void setMandatoryLayerCheckBoxes ()
 
void setUserDefinedLayerCheckBoxes ()
 
void showBoardLayerNames ()
 
void showSelectedLayerCheckBoxes (LSET enableLayerMask)
 
void showLayerTypes ()
 
int getLayerTypeIndex (int layer)
 
void OnCheckBox (wxCommandEvent &event) override
 
void DenyChangeCheckBox (wxCommandEvent &event) override
 
bool TransferDataToWindow () override
 
bool TransferDataFromWindow () override
 
virtual void addUserDefinedLayer (wxCommandEvent &aEvent) override
 
bool testLayerNames ()
 
LSEQ getRemovedLayersWithItems ()
 Return a list of layers removed from the board that contain items. More...
 
LSEQ getNonRemovableLayers ()
 Return a list of layers in use in footprints, and therefore not removable. More...
 
PANEL_SETUP_LAYERS_CTLs getCTLs (int aLayerNumber)
 
wxControl * getName (int aLayer)
 
wxCheckBox * getCheckBox (int aLayer)
 
wxChoice * getChoice (int aLayer)
 

Private Attributes

PAGED_DIALOGm_parentDialog
 
PCB_EDIT_FRAMEm_frame
 
PANEL_SETUP_BOARD_STACKUPm_physicalStackup
 
BOARDm_pcb
 
LSET m_enabledLayers
 

Detailed Description

Definition at line 56 of file panel_setup_layers.h.

Constructor & Destructor Documentation

◆ PANEL_SETUP_LAYERS()

PANEL_SETUP_LAYERS::PANEL_SETUP_LAYERS ( PAGED_DIALOG aParent,
PCB_EDIT_FRAME aFrame 
)

Definition at line 127 of file panel_setup_layers.cpp.

127 :
129 m_parentDialog( aParent ),
130 m_frame( aFrame ),
131 m_physicalStackup( nullptr )
132{
133 m_pcb = aFrame->GetBoard();
134}
wxTreebook * GetTreebook()
Definition: paged_dialog.h:37
PANEL_SETUP_LAYERS_BASE(wxWindow *parent, wxWindowID id=wxID_ANY, const wxPoint &pos=wxDefaultPosition, const wxSize &size=wxSize(-1,-1), long style=wxTAB_TRAVERSAL, const wxString &name=wxEmptyString)
PANEL_SETUP_BOARD_STACKUP * m_physicalStackup
PCB_EDIT_FRAME * m_frame
PAGED_DIALOG * m_parentDialog
BOARD * GetBoard() const

References PCB_BASE_FRAME::GetBoard(), and m_pcb.

Member Function Documentation

◆ addUserDefinedLayer()

void PANEL_SETUP_LAYERS::addUserDefinedLayer ( wxCommandEvent &  aEvent)
overrideprivatevirtual

Reimplemented from PANEL_SETUP_LAYERS_BASE.

Definition at line 810 of file panel_setup_layers.cpp.

811{
812 wxArrayString headers;
813 headers.Add( _( "Layers" ) );
814
815 // Build the available user-defined layers list:
816 std::vector<wxArrayString> list;
817
818 for( LSEQ seq = LSET::UserDefinedLayers().Seq(); seq; ++seq )
819 {
820 wxCheckBox* checkBox = getCheckBox( *seq );
821
822 if( checkBox && checkBox->IsShown() )
823 continue;
824
825 wxArrayString available_user_layer;
826 available_user_layer.Add( LayerName( *seq ) );
827
828 list.emplace_back( available_user_layer );
829 }
830
831 if( list.empty() )
832 {
834 _( "All user-defined layers have already been added." ) );
835 return;
836 }
837
838 EDA_LIST_DIALOG dlg( m_parentDialog, _( "Add User-defined Layer" ), headers, list );
839 dlg.SetListLabel( _( "Select layer to add:" ) );
840 dlg.HideFilter();
841
842 if( dlg.ShowModal() == wxID_CANCEL || dlg.GetTextSelection().IsEmpty() )
843 return;
844
845 LSEQ seq;
846
847 for( seq = LSET::UserDefinedLayers().Seq(); seq; ++seq )
848 {
849 if( LayerName( *seq ) == dlg.GetTextSelection() )
850 break;
851 }
852
853 wxCHECK( *seq >= User_1 && *seq <= User_9, /* void */ );
854
855 LSET newLayer( *seq );
856
857 m_enabledLayers |= newLayer;
858
859 PANEL_SETUP_LAYERS_CTLs ctl = getCTLs( *seq );
860
861 // All user-defined layers should have a checkbox
862 wxASSERT( ctl.checkbox );
863
864 wxTextCtrl* textCtrl = dynamic_cast<wxTextCtrl*>( ctl.name );
865
866 wxCHECK( textCtrl, /* void */ );
867 textCtrl->ChangeValue( LSET::Name( *seq ) );
868 ctl.name->Show( true );
869 ctl.checkbox->Show( true );
870 ctl.choice->Show( true );
871
872 wxSizeEvent evt_size( m_LayersListPanel->GetSize() );
873 m_LayersListPanel->GetEventHandler()->ProcessEvent( evt_size );
874
875 setLayerCheckBox( *seq, true );
876}
A dialog which shows:
LSEQ is a sequence (and therefore also a set) of PCB_LAYER_IDs.
Definition: layer_ids.h:491
LSET is a set of PCB_LAYER_IDs.
Definition: layer_ids.h:530
static LSET UserDefinedLayers()
Return a mask with all of the allowable user defined layers.
Definition: lset.cpp:877
static const wxChar * Name(PCB_LAYER_ID aLayerId)
Return the fixed name association with aLayerId.
Definition: lset.cpp:82
wxScrolledWindow * m_LayersListPanel
PANEL_SETUP_LAYERS_CTLs getCTLs(int aLayerNumber)
void setLayerCheckBox(int layer, bool isChecked)
wxCheckBox * getCheckBox(int aLayer)
void DisplayErrorMessage(wxWindow *aParent, const wxString &aText, const wxString &aExtraInfo)
Display an error message with aMessage.
Definition: confirm.cpp:299
#define _(s)
wxString LayerName(int aLayer)
Returns the default display name for a given layer.
Definition: layer_id.cpp:30
@ User_9
Definition: layer_ids.h:131
@ User_1
Definition: layer_ids.h:123
The 3 UI control pointers for a single board layer.

References _, PANEL_SETUP_LAYERS_CTLs::checkbox, PANEL_SETUP_LAYERS_CTLs::choice, DisplayErrorMessage(), getCheckBox(), getCTLs(), EDA_LIST_DIALOG::GetTextSelection(), EDA_LIST_DIALOG::HideFilter(), LayerName(), m_enabledLayers, PANEL_SETUP_LAYERS_BASE::m_LayersListPanel, m_parentDialog, LSET::Name(), PANEL_SETUP_LAYERS_CTLs::name, setLayerCheckBox(), EDA_LIST_DIALOG::SetListLabel(), User_1, User_9, and LSET::UserDefinedLayers().

◆ CheckCopperLayerCount()

bool PANEL_SETUP_LAYERS::CheckCopperLayerCount ( BOARD aWorkingBoard,
BOARD aImportedBoard 
)

Check and warn if inner copper layers will be deleted.

This function warns users if they are going to delete inner copper layers because they're importing settings from a board with less copper layers than the board already loaded.

Parameters
aWorkingBoardis the currently loaded PCB
aImportedBoardis the PCB imported to get settings from.
Returns
Approval to delete inner copper if needed.
the selected layer mask within the UI checkboxes

Definition at line 776 of file panel_setup_layers.cpp.

777{
778 /*
779 * This function warns users if they are going to delete inner copper layers because
780 * they're importing settings from a board with less copper layers than the board
781 * already loaded. We want to return "true" as default on the assumption no layer will
782 * actually be deleted.
783 */
784 bool okToDeleteCopperLayers = true;
785
786 // Get the number of copper layers in the loaded board and the "import settings" board
787 int currNumLayers = aWorkingBoard->GetCopperLayerCount();
788 int newNumLayers = aImportedBoard->GetCopperLayerCount();
789
790 if( newNumLayers < currNumLayers )
791 {
792 wxString msg = wxString::Format( _( "Imported settings have fewer copper layers than "
793 "the current board (%i instead of %i).\n\n"
794 "Continue and delete the extra inner copper layers "
795 "from the current board?" ),
796 newNumLayers,
797 currNumLayers );
798
799 wxMessageDialog dlg( this, msg, _( "Inner Layers To Be Deleted" ),
800 wxICON_WARNING | wxSTAY_ON_TOP | wxYES | wxNO | wxNO_DEFAULT );
801
802 if( wxID_NO == dlg.ShowModal() )
803 okToDeleteCopperLayers = false;
804 }
805
806 return okToDeleteCopperLayers;
807}
int GetCopperLayerCount() const
Definition: board.cpp:502
void Format(OUTPUTFORMATTER *out, int aNestLevel, int aCtl, const CPTREE &aTree)
Output a PTREE into s-expression format via an OUTPUTFORMATTER derivative.
Definition: ptree.cpp:200

References _, Format(), and BOARD::GetCopperLayerCount().

Referenced by DIALOG_BOARD_SETUP::onAuxiliaryAction().

◆ DenyChangeCheckBox()

void PANEL_SETUP_LAYERS::DenyChangeCheckBox ( wxCommandEvent &  event)
overrideprivatevirtual

Reimplemented from PANEL_SETUP_LAYERS_BASE.

Definition at line 422 of file panel_setup_layers.cpp.

423{
424 wxObject* source = event.GetEventObject();
425
426 for( LSEQ seq = LSET::AllCuMask().Seq(); seq; ++seq )
427 {
428 wxCheckBox* copper = getCheckBox( *seq );
429
430 if( source == copper )
431 {
432 DisplayError( this, _( "Use the Physical Stackup page to change the number of "
433 "copper layers." ) );
434
435 copper->SetValue( true );
436 return;
437 }
438 }
439}
static LSET AllCuMask(int aCuLayerCount=MAX_CU_LAYERS)
Return a mask holding the requested number of Cu PCB_LAYER_IDs.
Definition: lset.cpp:773
void DisplayError(wxWindow *aParent, const wxString &aText, int aDisplayTime)
Display an error or warning message box with aMessage.
Definition: confirm.cpp:280

References _, LSET::AllCuMask(), DisplayError(), and getCheckBox().

◆ getCheckBox()

wxCheckBox * PANEL_SETUP_LAYERS::getCheckBox ( int  aLayer)
private

Definition at line 223 of file panel_setup_layers.cpp.

224{
225 return getCTLs( aLayer ).checkbox;
226}

References PANEL_SETUP_LAYERS_CTLs::checkbox, and getCTLs().

Referenced by addUserDefinedLayer(), DenyChangeCheckBox(), and GetUILayerMask().

◆ getChoice()

wxChoice * PANEL_SETUP_LAYERS::getChoice ( int  aLayer)
private

Definition at line 229 of file panel_setup_layers.cpp.

230{
231 return (wxChoice*) getCTLs( aLayer ).choice;
232}

References PANEL_SETUP_LAYERS_CTLs::choice, and getCTLs().

Referenced by getLayerTypeIndex(), and showLayerTypes().

◆ getCTLs()

PANEL_SETUP_LAYERS_CTLs PANEL_SETUP_LAYERS::getCTLs ( int  aLayerNumber)
private

Definition at line 137 of file panel_setup_layers.cpp.

138{
139#define RETURN_COPPER( x ) return PANEL_SETUP_LAYERS_CTLs( x##Name, x##CheckBox, x##Choice )
140#define RETURN_AUX( x ) return PANEL_SETUP_LAYERS_CTLs( x##Name, x##CheckBox, x##StaticText )
141#define RETURN_MANDATORY( x ) return PANEL_SETUP_LAYERS_CTLs( x##Name, nullptr, x##StaticText )
142
143 switch( aLayerNumber )
144 {
145 case F_CrtYd: RETURN_MANDATORY( m_CrtYdFront );
146 case F_Fab: RETURN_AUX( m_FabFront );
147 case F_Adhes: RETURN_AUX( m_AdhesFront );
148 case F_Paste: RETURN_AUX( m_SoldPFront );
149 case F_SilkS: RETURN_AUX( m_SilkSFront );
150 case F_Mask: RETURN_AUX( m_MaskFront );
151 case F_Cu: RETURN_COPPER( m_Front );
152
153 case In1_Cu: RETURN_COPPER( m_In1 );
154 case In2_Cu: RETURN_COPPER( m_In2 );
155 case In3_Cu: RETURN_COPPER( m_In3 );
156 case In4_Cu: RETURN_COPPER( m_In4 );
157 case In5_Cu: RETURN_COPPER( m_In5 );
158 case In6_Cu: RETURN_COPPER( m_In6 );
159 case In7_Cu: RETURN_COPPER( m_In7 );
160 case In8_Cu: RETURN_COPPER( m_In8 );
161 case In9_Cu: RETURN_COPPER( m_In9 );
162 case In10_Cu: RETURN_COPPER( m_In10 );
163 case In11_Cu: RETURN_COPPER( m_In11 );
164 case In12_Cu: RETURN_COPPER( m_In12 );
165 case In13_Cu: RETURN_COPPER( m_In13 );
166 case In14_Cu: RETURN_COPPER( m_In14 );
167 case In15_Cu: RETURN_COPPER( m_In15 );
168
169 case In16_Cu: RETURN_COPPER( m_In16 );
170 case In17_Cu: RETURN_COPPER( m_In17 );
171 case In18_Cu: RETURN_COPPER( m_In18 );
172 case In19_Cu: RETURN_COPPER( m_In19 );
173 case In20_Cu: RETURN_COPPER( m_In20 );
174 case In21_Cu: RETURN_COPPER( m_In21 );
175 case In22_Cu: RETURN_COPPER( m_In22 );
176 case In23_Cu: RETURN_COPPER( m_In23 );
177 case In24_Cu: RETURN_COPPER( m_In24 );
178 case In25_Cu: RETURN_COPPER( m_In25 );
179 case In26_Cu: RETURN_COPPER( m_In26 );
180 case In27_Cu: RETURN_COPPER( m_In27 );
181 case In28_Cu: RETURN_COPPER( m_In28 );
182 case In29_Cu: RETURN_COPPER( m_In29 );
183 case In30_Cu: RETURN_COPPER( m_In30 );
184
185 case B_Cu: RETURN_COPPER( m_Back );
186 case B_Mask: RETURN_AUX( m_MaskBack );
187 case B_SilkS: RETURN_AUX( m_SilkSBack );
188 case B_Paste: RETURN_AUX( m_SoldPBack );
189 case B_Adhes: RETURN_AUX( m_AdhesBack );
190 case B_Fab: RETURN_AUX( m_FabBack );
191 case B_CrtYd: RETURN_MANDATORY( m_CrtYdBack );
192
193 case Edge_Cuts: RETURN_MANDATORY( m_PCBEdges );
194 case Margin: RETURN_MANDATORY( m_Margin );
195 case Eco2_User: RETURN_AUX( m_Eco2 );
196 case Eco1_User: RETURN_AUX( m_Eco1 );
197 case Cmts_User: RETURN_AUX( m_Comments );
198 case Dwgs_User: RETURN_AUX( m_Drawings );
199
200 case User_1: RETURN_AUX( m_User1 );
201 case User_2: RETURN_AUX( m_User2 );
202 case User_3: RETURN_AUX( m_User3 );
203 case User_4: RETURN_AUX( m_User4 );
204 case User_5: RETURN_AUX( m_User5 );
205 case User_6: RETURN_AUX( m_User6 );
206 case User_7: RETURN_AUX( m_User7 );
207 case User_8: RETURN_AUX( m_User8 );
208 case User_9: RETURN_AUX( m_User9 );
209
210 default:
211 wxASSERT_MSG( 0, wxT( "bad layer id" ) );
212 return PANEL_SETUP_LAYERS_CTLs( nullptr, nullptr, nullptr );
213 }
214}
@ In22_Cu
Definition: layer_ids.h:86
@ In11_Cu
Definition: layer_ids.h:75
@ In29_Cu
Definition: layer_ids.h:93
@ In30_Cu
Definition: layer_ids.h:94
@ User_8
Definition: layer_ids.h:130
@ F_CrtYd
Definition: layer_ids.h:117
@ In17_Cu
Definition: layer_ids.h:81
@ B_Adhes
Definition: layer_ids.h:97
@ Edge_Cuts
Definition: layer_ids.h:113
@ Dwgs_User
Definition: layer_ids.h:109
@ F_Paste
Definition: layer_ids.h:101
@ In9_Cu
Definition: layer_ids.h:73
@ Cmts_User
Definition: layer_ids.h:110
@ User_6
Definition: layer_ids.h:128
@ User_7
Definition: layer_ids.h:129
@ In19_Cu
Definition: layer_ids.h:83
@ In7_Cu
Definition: layer_ids.h:71
@ In28_Cu
Definition: layer_ids.h:92
@ In26_Cu
Definition: layer_ids.h:90
@ F_Adhes
Definition: layer_ids.h:98
@ B_Mask
Definition: layer_ids.h:106
@ B_Cu
Definition: layer_ids.h:95
@ User_5
Definition: layer_ids.h:127
@ Eco1_User
Definition: layer_ids.h:111
@ F_Mask
Definition: layer_ids.h:107
@ In21_Cu
Definition: layer_ids.h:85
@ In23_Cu
Definition: layer_ids.h:87
@ B_Paste
Definition: layer_ids.h:100
@ In15_Cu
Definition: layer_ids.h:79
@ In2_Cu
Definition: layer_ids.h:66
@ F_Fab
Definition: layer_ids.h:120
@ In10_Cu
Definition: layer_ids.h:74
@ Margin
Definition: layer_ids.h:114
@ F_SilkS
Definition: layer_ids.h:104
@ In4_Cu
Definition: layer_ids.h:68
@ B_CrtYd
Definition: layer_ids.h:116
@ Eco2_User
Definition: layer_ids.h:112
@ In16_Cu
Definition: layer_ids.h:80
@ In24_Cu
Definition: layer_ids.h:88
@ In1_Cu
Definition: layer_ids.h:65
@ User_3
Definition: layer_ids.h:125
@ B_SilkS
Definition: layer_ids.h:103
@ In13_Cu
Definition: layer_ids.h:77
@ User_4
Definition: layer_ids.h:126
@ In8_Cu
Definition: layer_ids.h:72
@ In14_Cu
Definition: layer_ids.h:78
@ User_2
Definition: layer_ids.h:124
@ In12_Cu
Definition: layer_ids.h:76
@ In27_Cu
Definition: layer_ids.h:91
@ In6_Cu
Definition: layer_ids.h:70
@ In5_Cu
Definition: layer_ids.h:69
@ In3_Cu
Definition: layer_ids.h:67
@ In20_Cu
Definition: layer_ids.h:84
@ F_Cu
Definition: layer_ids.h:64
@ In18_Cu
Definition: layer_ids.h:82
@ In25_Cu
Definition: layer_ids.h:89
@ B_Fab
Definition: layer_ids.h:119
#define RETURN_AUX(x)
#define RETURN_MANDATORY(x)
#define RETURN_COPPER(x)

References B_Adhes, B_CrtYd, B_Cu, B_Fab, B_Mask, B_Paste, B_SilkS, Cmts_User, Dwgs_User, Eco1_User, Eco2_User, Edge_Cuts, F_Adhes, F_CrtYd, F_Cu, F_Fab, F_Mask, F_Paste, F_SilkS, In10_Cu, In11_Cu, In12_Cu, In13_Cu, In14_Cu, In15_Cu, In16_Cu, In17_Cu, In18_Cu, In19_Cu, In1_Cu, In20_Cu, In21_Cu, In22_Cu, In23_Cu, In24_Cu, In25_Cu, In26_Cu, In27_Cu, In28_Cu, In29_Cu, In2_Cu, In30_Cu, In3_Cu, In4_Cu, In5_Cu, In6_Cu, In7_Cu, In8_Cu, In9_Cu, Margin, RETURN_AUX, RETURN_COPPER, RETURN_MANDATORY, User_1, User_2, User_3, User_4, User_5, User_6, User_7, User_8, and User_9.

Referenced by addUserDefinedLayer(), getCheckBox(), getChoice(), getName(), setCopperLayerCheckBoxes(), setLayerCheckBox(), and setUserDefinedLayerCheckBoxes().

◆ GetLayerName()

wxString PANEL_SETUP_LAYERS::GetLayerName ( int  layer)

Definition at line 617 of file panel_setup_layers.cpp.

618{
619 wxControl* control = getName( aLayer );
620
621 if( auto textCtl = dynamic_cast<wxTextCtrl*>( control ) )
622 return textCtl->GetValue().Trim();
623 else
624 return control->GetLabel();
625}
wxControl * getName(int aLayer)
must_if< error >::control< Rule > control
Definition: sim_serde.h:107

References getName().

Referenced by testLayerNames(), and TransferDataFromWindow().

◆ getLayerTypeIndex()

int PANEL_SETUP_LAYERS::getLayerTypeIndex ( int  layer)
private

Definition at line 609 of file panel_setup_layers.cpp.

610{
611 wxChoice* ctl = getChoice( aLayer );
612 int ret = ctl->GetCurrentSelection(); // Indices must have same sequence as LAYER_T
613 return ret;
614}
wxChoice * getChoice(int aLayer)

References getChoice().

Referenced by TransferDataFromWindow().

◆ getName()

wxControl * PANEL_SETUP_LAYERS::getName ( int  aLayer)
private

Definition at line 217 of file panel_setup_layers.cpp.

218{
219 return getCTLs( aLayer ).name;
220}

References getCTLs(), and PANEL_SETUP_LAYERS_CTLs::name.

Referenced by GetLayerName(), showBoardLayerNames(), and testLayerNames().

◆ getNonRemovableLayers()

LSEQ PANEL_SETUP_LAYERS::getNonRemovableLayers ( )
private

Return a list of layers in use in footprints, and therefore not removable.

Definition at line 733 of file panel_setup_layers.cpp.

734{
735 // Build the list of non-copper layers in use in footprints.
736 LSEQ inUseLayers;
737 LSET newLayers = GetUILayerMask();
738 LSET curLayers = m_pcb->GetEnabledLayers();
739
740 if( newLayers == curLayers ) // Return an empty list if no change
741 return inUseLayers;
742
743 PCB_LAYER_COLLECTOR collector;
744 LSEQ newLayerSeq = newLayers.Seq();
745
746 for( PCB_LAYER_ID layer_id : curLayers.Seq() )
747 {
748 if( IsCopperLayer( layer_id ) ) // Copper layers are not taken into account here
749 continue;
750
751 if( !alg::contains( newLayerSeq, layer_id ) )
752 {
753 collector.SetLayerId( layer_id );
755
756 if( collector.GetCount() != 0 )
757 inUseLayers.push_back( layer_id );
758 }
759 }
760
761 return inUseLayers;
762}
LSET GetEnabledLayers() const
A proxy function that calls the corresponding function in m_BoardSettings.
Definition: board.cpp:526
int GetCount() const
Return the number of objects in the list.
Definition: collector.h:81
static const std::vector< KICAD_T > FootprintItems
A scan list for primary footprint items.
Definition: collectors.h:250
LSEQ Seq(const PCB_LAYER_ID *aWishListSequence, unsigned aCount) const
Return an LSEQ from the union of this LSET and a desired sequence.
Definition: lset.cpp:411
Collect all BOARD_ITEM objects on a given layer.
Definition: collectors.h:550
void Collect(BOARD_ITEM *aBoard, const std::vector< KICAD_T > &aTypes)
Test a BOARD_ITEM using this class's Inspector method, which does the collection.
Definition: collectors.cpp:649
void SetLayerId(PCB_LAYER_ID aLayerId)
Definition: collectors.h:556
bool IsCopperLayer(int aLayerId)
Tests whether a layer is a copper layer.
Definition: layer_ids.h:825
PCB_LAYER_ID
A quick note on layer IDs:
Definition: layer_ids.h:59
bool contains(const _Container &__container, _Value __value)
Returns true if the container contains the given value.
Definition: kicad_algo.h:99

References PCB_LAYER_COLLECTOR::Collect(), alg::contains(), GENERAL_COLLECTOR::FootprintItems, COLLECTOR::GetCount(), BOARD::GetEnabledLayers(), GetUILayerMask(), IsCopperLayer(), m_pcb, LSET::Seq(), and PCB_LAYER_COLLECTOR::SetLayerId().

Referenced by TransferDataFromWindow().

◆ getRemovedLayersWithItems()

LSEQ PANEL_SETUP_LAYERS::getRemovedLayersWithItems ( )
private

Return a list of layers removed from the board that contain items.

Definition at line 705 of file panel_setup_layers.cpp.

706{
707 LSEQ removedLayers;
708 LSET newLayers = GetUILayerMask();
709 LSET curLayers = m_pcb->GetEnabledLayers();
710
711 if( newLayers == curLayers ) // Return an empty list if no change
712 return removedLayers;
713
714 PCB_LAYER_COLLECTOR collector;
715 LSEQ newLayerSeq = newLayers.Seq();
716
717 for( PCB_LAYER_ID layer_id : curLayers.Seq() )
718 {
719 if( !alg::contains( newLayerSeq, layer_id ) )
720 {
721 collector.SetLayerId( layer_id );
723
724 if( collector.GetCount() != 0 )
725 removedLayers.push_back( layer_id );
726 }
727 }
728
729 return removedLayers;
730}
static const std::vector< KICAD_T > BoardLevelItems
A scan list for all primary board items, omitting items which are subordinate to a FOOTPRINT,...
Definition: collectors.h:235

References GENERAL_COLLECTOR::BoardLevelItems, PCB_LAYER_COLLECTOR::Collect(), alg::contains(), COLLECTOR::GetCount(), BOARD::GetEnabledLayers(), GetUILayerMask(), m_pcb, LSET::Seq(), and PCB_LAYER_COLLECTOR::SetLayerId().

Referenced by TransferDataFromWindow().

◆ GetUILayerMask()

LSET PANEL_SETUP_LAYERS::GetUILayerMask ( )
Returns
the layer name within the UI wxTextCtrl

Definition at line 345 of file panel_setup_layers.cpp.

346{
347 LSET layerMaskResult;
348
349 for( LSEQ seq = dlg_layers(); seq; ++seq )
350 {
351 PCB_LAYER_ID layer = *seq;
352 wxCheckBox* ctl = getCheckBox( layer );
353
354 if( !ctl || ctl->GetValue() )
355 layerMaskResult.set( layer );
356 }
357
358 return layerMaskResult;
359}
static LSEQ dlg_layers()

References dlg_layers(), and getCheckBox().

Referenced by getNonRemovableLayers(), getRemovedLayersWithItems(), OnCheckBox(), PANEL_SETUP_BOARD_STACKUP::OnLayersOptionsChanged(), DIALOG_BOARD_SETUP::onPageChanged(), and TransferDataFromWindow().

◆ ImportSettingsFrom()

void PANEL_SETUP_LAYERS::ImportSettingsFrom ( BOARD aBoard)

Definition at line 765 of file panel_setup_layers.cpp.

766{
767 BOARD* savedBoard = m_pcb;
768
769 m_pcb = aBoard;
771
772 m_pcb = savedBoard;
773}
Information pertinent to a Pcbnew printed circuit board.
Definition: board.h:265
bool TransferDataToWindow() override

References m_pcb, and TransferDataToWindow().

Referenced by DIALOG_BOARD_SETUP::onAuxiliaryAction().

◆ OnCheckBox()

void PANEL_SETUP_LAYERS::OnCheckBox ( wxCommandEvent &  event)
overrideprivatevirtual

Reimplemented from PANEL_SETUP_LAYERS_BASE.

Definition at line 416 of file panel_setup_layers.cpp.

417{
419}

References GetUILayerMask(), and m_enabledLayers.

◆ setCopperLayerCheckBoxes()

void PANEL_SETUP_LAYERS::setCopperLayerCheckBoxes ( int  copperCount)
private

Definition at line 373 of file panel_setup_layers.cpp.

374{
375 if( copperCount > 0 )
376 {
377 setLayerCheckBox( F_Cu, true );
378 --copperCount;
379 }
380
381 if( copperCount > 0 )
382 {
383 setLayerCheckBox( B_Cu, true );
384 --copperCount;
385 }
386
387 for( LSEQ seq = LSET::InternalCuMask().Seq(); seq; ++seq, --copperCount )
388 {
389 PCB_LAYER_ID layer = *seq;
390 bool state = copperCount > 0;
391
392#ifdef HIDE_INACTIVE_LAYERS
393 // This code hides inactive copper layers, or redisplays hidden layers which are now needed.
394 PANEL_SETUP_LAYERS_CTLs ctl = getCTLs( layer );
395
396 // Inner layers should have a checkbox
397 wxASSERT( ctl.checkbox );
398
399 ctl.name->Show( state );
400 ctl.checkbox->Show( state );
401 ctl.choice->Show( state );
402#endif
403
404 setLayerCheckBox( layer, state );
405 }
406
407#ifdef HIDE_INACTIVE_LAYERS
408 // Send an size event to force sizers to be updated,
409 // because the number of copper layers can have changed.
410 wxSizeEvent evt_size( m_LayersListPanel->GetSize() );
411 m_LayersListPanel->GetEventHandler()->ProcessEvent( evt_size );
412#endif
413}
static LSET InternalCuMask()
Return a complete set of internal copper layers which is all Cu layers except F_Cu and B_Cu.
Definition: lset.cpp:733

References B_Cu, PANEL_SETUP_LAYERS_CTLs::checkbox, PANEL_SETUP_LAYERS_CTLs::choice, F_Cu, getCTLs(), LSET::InternalCuMask(), PANEL_SETUP_LAYERS_BASE::m_LayersListPanel, PANEL_SETUP_LAYERS_CTLs::name, and setLayerCheckBox().

Referenced by SyncCopperLayers(), and TransferDataToWindow().

◆ setLayerCheckBox()

void PANEL_SETUP_LAYERS::setLayerCheckBox ( int  layer,
bool  isChecked 
)
private

Definition at line 362 of file panel_setup_layers.cpp.

363{
364 PANEL_SETUP_LAYERS_CTLs ctl = getCTLs( aLayer );
365
366 if( !ctl.checkbox )
367 return;
368
369 ctl.checkbox->SetValue( isChecked );
370}

References PANEL_SETUP_LAYERS_CTLs::checkbox, and getCTLs().

Referenced by addUserDefinedLayer(), setCopperLayerCheckBoxes(), setMandatoryLayerCheckBoxes(), setUserDefinedLayerCheckBoxes(), and showSelectedLayerCheckBoxes().

◆ setMandatoryLayerCheckBoxes()

void PANEL_SETUP_LAYERS::setMandatoryLayerCheckBoxes ( )
private

Definition at line 261 of file panel_setup_layers.cpp.

262{
263 for( int layer : { F_CrtYd, B_CrtYd, Edge_Cuts, Margin } )
264 setLayerCheckBox( layer, true );
265}

References B_CrtYd, Edge_Cuts, F_CrtYd, Margin, and setLayerCheckBox().

Referenced by TransferDataToWindow().

◆ SetPhysicalStackupPanel()

void PANEL_SETUP_LAYERS::SetPhysicalStackupPanel ( PANEL_SETUP_BOARD_STACKUP aPanel)
inline

Definition at line 89 of file panel_setup_layers.h.

90 {
91 m_physicalStackup = aPanel;
92 }

References m_physicalStackup.

Referenced by PANEL_SETUP_BOARD_STACKUP::PANEL_SETUP_BOARD_STACKUP().

◆ setUserDefinedLayerCheckBoxes()

void PANEL_SETUP_LAYERS::setUserDefinedLayerCheckBoxes ( )
private

Definition at line 268 of file panel_setup_layers.cpp.

269{
270 for( LSEQ seq = LSET::UserDefinedLayers().Seq(); seq; ++seq )
271 {
272 PCB_LAYER_ID layer = *seq;
273 bool state = m_pcb->IsLayerEnabled( layer );
274
275#ifdef HIDE_INACTIVE_LAYERS
276 // This code hides inactive copper layers, or redisplays hidden layers which are now needed.
277 PANEL_SETUP_LAYERS_CTLs ctl = getCTLs( layer );
278
279 // All user-defined layers should have a checkbox
280 wxASSERT( ctl.checkbox );
281
282 ctl.name->Show( state );
283 ctl.checkbox->Show( state );
284 ctl.choice->Show( state );
285#endif
286
287 setLayerCheckBox( layer, state );
288 }
289
290#ifdef HIDE_INACTIVE_LAYERS
291 // Send an size event to force sizers to be updated,
292 // because the number of copper layers can have changed.
293 wxSizeEvent evt_size( m_LayersListPanel->GetSize() );
294 m_LayersListPanel->GetEventHandler()->ProcessEvent( evt_size );
295#endif
296}
bool IsLayerEnabled(PCB_LAYER_ID aLayer) const
A proxy function that calls the correspondent function in m_BoardSettings tests whether a given layer...
Definition: board.cpp:552

References PANEL_SETUP_LAYERS_CTLs::checkbox, PANEL_SETUP_LAYERS_CTLs::choice, getCTLs(), BOARD::IsLayerEnabled(), PANEL_SETUP_LAYERS_BASE::m_LayersListPanel, m_pcb, PANEL_SETUP_LAYERS_CTLs::name, setLayerCheckBox(), and LSET::UserDefinedLayers().

Referenced by TransferDataToWindow().

◆ showBoardLayerNames()

void PANEL_SETUP_LAYERS::showBoardLayerNames ( )
private

Definition at line 299 of file panel_setup_layers.cpp.

300{
301 // Set all the board's layer names into the dialog by calling BOARD::GetLayerName(),
302 // which will call BOARD::GetStandardLayerName() for non-coppers.
303
304 for( LSEQ seq = dlg_layers(); seq; ++seq )
305 {
306 PCB_LAYER_ID layer = *seq;
307 wxControl* ctl = getName( layer );
308
309 if( ctl )
310 {
311 wxString lname = m_pcb->GetLayerName( layer );
312
313 if( auto textCtl = dynamic_cast<wxTextCtrl*>( ctl ) )
314 textCtl->ChangeValue( lname ); // wxTextCtrl
315 else
316 ctl->SetLabel( lname ); // wxStaticText
317 }
318 }
319}
const wxString GetLayerName(PCB_LAYER_ID aLayer) const
Return the name of a aLayer.
Definition: board.cpp:413

References dlg_layers(), BOARD::GetLayerName(), getName(), and m_pcb.

Referenced by TransferDataToWindow().

◆ showLayerTypes()

void PANEL_SETUP_LAYERS::showLayerTypes ( )
private

Definition at line 333 of file panel_setup_layers.cpp.

334{
335 for( LSEQ seq = LSET::AllCuMask().Seq(); seq; ++seq )
336 {
337 PCB_LAYER_ID cu_layer = *seq;
338
339 wxChoice* ctl = getChoice( cu_layer );
340 ctl->SetSelection( m_pcb->GetLayerType( cu_layer ) );
341 }
342}
LAYER_T GetLayerType(PCB_LAYER_ID aLayer) const
Return the type of the copper layer given by aLayer.
Definition: board.cpp:447

References LSET::AllCuMask(), getChoice(), BOARD::GetLayerType(), and m_pcb.

Referenced by TransferDataToWindow().

◆ showSelectedLayerCheckBoxes()

void PANEL_SETUP_LAYERS::showSelectedLayerCheckBoxes ( LSET  enableLayerMask)
private

Definition at line 322 of file panel_setup_layers.cpp.

323{
324 // The check boxes
325 for( LSEQ seq = dlg_layers(); seq; ++seq )
326 {
327 PCB_LAYER_ID layer = *seq;
328 setLayerCheckBox( layer, enabledLayers[layer] );
329 }
330}

References dlg_layers(), and setLayerCheckBox().

Referenced by TransferDataToWindow().

◆ SyncCopperLayers()

void PANEL_SETUP_LAYERS::SyncCopperLayers ( int  aNumCopperLayers)

Called when switching to this tab to make sure that any changes to the copper layer count made on the physical stackup page are reflected here.

Parameters
aNumCopperLayersis the number of copper layers in the board

Definition at line 255 of file panel_setup_layers.cpp.

256{
257 setCopperLayerCheckBoxes( aNumCopperLayers );
258}
void setCopperLayerCheckBoxes(int copperCount)

References setCopperLayerCheckBoxes().

Referenced by DIALOG_BOARD_SETUP::onPageChanged(), and TransferDataFromWindow().

◆ testLayerNames()

bool PANEL_SETUP_LAYERS::testLayerNames ( )
private

Definition at line 640 of file panel_setup_layers.cpp.

641{
642 std::vector<wxString> names;
643 wxTextCtrl* ctl;
644
645 for( LSEQ seq = LSET::AllLayersMask().Seq(); seq; ++seq )
646 {
647 PCB_LAYER_ID layer = *seq;
648
649 // we _can_ rely on m_enabledLayers being current here:
650
651 if( !m_enabledLayers[layer] )
652 continue;
653
654 wxString name = GetLayerName( layer );
655
656 ctl = (wxTextCtrl*) getName( layer );
657
658 // Check name for legality:
659 // 1) Cannot be blank.
660 // 2) Cannot have blanks.
661 // 3) Cannot have " chars
662 // 4) Cannot be 'signal'
663 // 5) Must be unique.
664 // 6) Cannot have illegal chars in filenames ( some filenames are built from layer names )
665 // like : % $ \ " / :
666 wxString badchars = wxFileName::GetForbiddenChars( wxPATH_DOS );
667 badchars.Append( '%' );
668
669 if( !name )
670 {
671 m_parentDialog->SetError( _( "Layer must have a name." ), this, ctl );
672 return false;
673 }
674
675 if( hasOneOf( name, badchars ) )
676 {
677 wxString msg = wxString::Format(_( "%s are forbidden in layer names." ), badchars );
678 m_parentDialog->SetError( msg, this, ctl );
679 return false;
680 }
681
682 if( name == wxT( "signal" ) )
683 {
684 m_parentDialog->SetError( _( "Layer name \"signal\" is reserved." ), this, ctl );
685 return false;
686 }
687
688 for( const wxString& existingName : names )
689 {
690 if( name == existingName )
691 {
692 wxString msg = wxString::Format(_( "Layer name '%s' already in use." ), name );
693 m_parentDialog->SetError( msg, this, ctl );
694 return false;
695 }
696 }
697
698 names.push_back( name );
699 }
700
701 return true;
702}
const char * name
Definition: DXF_plotter.cpp:56
static LSET AllLayersMask()
Definition: lset.cpp:808
void SetError(const wxString &aMessage, const wxString &aPageName, int aCtrlId, int aRow=-1, int aCol=-1)
wxString GetLayerName(int layer)
static bool hasOneOf(const wxString &str, const wxString &chars)

References _, LSET::AllLayersMask(), Format(), GetLayerName(), getName(), hasOneOf(), m_enabledLayers, m_parentDialog, name, and PAGED_DIALOG::SetError().

Referenced by TransferDataFromWindow().

◆ TransferDataFromWindow()

bool PANEL_SETUP_LAYERS::TransferDataFromWindow ( )
overrideprivate

Definition at line 442 of file panel_setup_layers.cpp.

443{
444 if( !testLayerNames() )
445 return false;
446
447 wxASSERT( m_physicalStackup );
448
449 // Make sure we have the latest copper layer count
451
452 wxString msg;
453 bool modified = false;
454
455 // Check for removed layers with items which will get deleted from the board.
456 LSEQ removedLayers = getRemovedLayersWithItems();
457
458 // Check for non-copper layers in use in footprints, and therefore not removable.
459 LSEQ notremovableLayers = getNonRemovableLayers();
460
461 if( !notremovableLayers.empty() )
462 {
463 for( unsigned int ii = 0; ii < notremovableLayers.size(); ii++ )
464 msg << m_pcb->GetLayerName( notremovableLayers[ii] ) << wxT( "\n" );
465
466 if( !IsOK( this, wxString::Format( _( "Footprints have some items on removed layers:\n"
467 "%s\n"
468 "These items will be no longer accessible\n"
469 "Do you wish to continue?" ), msg ) ) )
470 {
471 return false;
472 }
473 }
474
475 if( !removedLayers.empty()
476 && !IsOK( this, _( "Items have been found on removed layers. This operation will "
477 "delete all items from removed layers and cannot be undone.\n"
478 "Do you wish to continue?" ) ) )
479 {
480 return false;
481 }
482
483 // Delete all objects on layers that have been removed. Leaving them in copper layers
484 // can (will?) result in DRC errors and it pollutes the board file with cruft.
485 bool hasRemovedBoardItems = false;
486
487 if( !removedLayers.empty() )
488 {
489 PCB_LAYER_COLLECTOR collector;
490
491 for( PCB_LAYER_ID layer_id : removedLayers )
492 {
493 collector.SetLayerId( layer_id );
495
496 // Bye-bye items on removed layer.
497 for( int i = 0; i < collector.GetCount(); i++ )
498 {
499 BOARD_ITEM* item = collector[i];
500 LSET layers = item->GetLayerSet();
501
502 layers.reset( layer_id );
503 hasRemovedBoardItems = true;
504 modified = true;
505
506 if( layers.any() )
507 {
508 item->SetLayerSet( layers );
509 }
510 else
511 {
512 m_pcb->Remove( item );
513 delete item;
514 }
515 }
516 }
517 }
518
520
521 LSET previousEnabled = m_pcb->GetEnabledLayers();
522
523 if( m_enabledLayers != previousEnabled )
524 {
526
527 LSET changedLayers = m_enabledLayers ^ previousEnabled;
528
529 /*
530 * Ensure enabled layers are also visible. This is mainly to avoid mistakes if some
531 * enabled layers are not visible when exiting this dialog.
532 */
533 m_pcb->SetVisibleLayers( m_pcb->GetVisibleLayers() | changedLayers );
534
535 /*
536 * Ensure items with through holes have all inner copper layers. (For historical reasons
537 * this is NOT trimmed to the currently-enabled inner layers.)
538 */
539 for( FOOTPRINT* fp : m_pcb->Footprints() )
540 {
541 for( PAD* pad : fp->Pads() )
542 {
543 if( pad->HasHole() && pad->IsOnCopperLayer() )
544 pad->SetLayerSet( pad->GetLayerSet() | LSET::InternalCuMask() );
545 }
546 }
547
548 for( PCB_TRACK* via : m_pcb->Tracks() )
549 {
550 if( via->HasHole() )
551 via->SetLayerSet( via->GetLayerSet() | LSET::InternalCuMask() );
552 }
553
554 modified = true;
555 }
556
557 for( LSEQ seq = LSET::AllLayersMask().Seq(); seq; ++seq )
558 {
559 PCB_LAYER_ID layer = *seq;
560
561 if( m_enabledLayers[layer] )
562 {
563 const wxString& newLayerName = GetLayerName( layer );
564
565 if( m_pcb->GetLayerName( layer ) != newLayerName )
566 {
567 m_pcb->SetLayerName( layer, newLayerName );
568 modified = true;
569 }
570
571 // Only copper layers have a definable type.
572 if( LSET::AllCuMask().Contains( layer ) )
573 {
574 LAYER_T t = (LAYER_T) getLayerTypeIndex( layer );
575
576 if( m_pcb->GetLayerType( layer ) != t )
577 {
578 m_pcb->SetLayerType( layer, t );
579 modified = true;
580 }
581 }
582 }
583 }
584
585 for( LSEQ seq = LSET::UserDefinedLayers().Seq(); seq; ++seq )
586 {
587 PCB_LAYER_ID layer = *seq;
588 const wxString& newLayerName = GetLayerName( layer );
589
590 if( m_enabledLayers[ layer ] && m_pcb->GetLayerName( layer ) != newLayerName )
591 {
592 m_pcb->SetLayerName( layer, newLayerName );
593 modified = true;
594 }
595 }
596
597 // If some board items are deleted: Rebuild the connectivity, because it is likely some
598 // tracks and vias were removed
599 if( hasRemovedBoardItems )
601
602 if( modified )
603 m_frame->OnModify();
604
605 return true;
606}
LAYER_T
The allowed types of layers, same as Specctra DSN spec.
Definition: board.h:143
A base class for any item which can be embedded within the BOARD container class, and therefore insta...
Definition: board_item.h:58
virtual LSET GetLayerSet() const
Return a std::bitset of all layers on which the item physically resides.
Definition: board_item.h:185
virtual void SetLayerSet(LSET aLayers)
Definition: board_item.h:193
LSET GetVisibleLayers() const
A proxy function that calls the correspondent function in m_BoardSettings.
Definition: board.cpp:540
void SetEnabledLayers(LSET aLayerMask)
A proxy function that calls the correspondent function in m_BoardSettings.
Definition: board.cpp:546
bool SetLayerName(PCB_LAYER_ID aLayer, const wxString &aLayerName)
Changes the name of the layer given by aLayer.
Definition: board.cpp:429
FOOTPRINTS & Footprints()
Definition: board.h:307
TRACKS & Tracks()
Definition: board.h:304
void SetVisibleLayers(LSET aLayerMask)
A proxy function that calls the correspondent function in m_BoardSettings changes the bit-mask of vis...
Definition: board.cpp:558
bool SetLayerType(PCB_LAYER_ID aLayer, LAYER_T aLayerType)
Change the type of the layer given by aLayer.
Definition: board.cpp:459
void Remove(BOARD_ITEM *aBoardItem, REMOVE_MODE aMode=REMOVE_MODE::NORMAL) override
Removes an item from the container.
Definition: board.cpp:820
void BuildConnectivity(PROGRESS_REPORTER *aReporter=nullptr)
Build or rebuild the board connectivity database for the board, especially the list of connected item...
Definition: board.cpp:162
Definition: pad.h:59
int getLayerTypeIndex(int layer)
void SyncCopperLayers(int aNumCopperLayers)
Called when switching to this tab to make sure that any changes to the copper layer count made on the...
LSEQ getNonRemovableLayers()
Return a list of layers in use in footprints, and therefore not removable.
LSEQ getRemovedLayersWithItems()
Return a list of layers removed from the board that contain items.
void OnModify() override
Must be called after a board change to set the modified flag.
bool IsOK(wxWindow *aParent, const wxString &aMessage)
Display a yes/no dialog with aMessage and returns the user response.
Definition: confirm.cpp:342

References _, LSET::AllCuMask(), LSET::AllLayersMask(), GENERAL_COLLECTOR::BoardLevelItems, BOARD::BuildConnectivity(), PCB_LAYER_COLLECTOR::Collect(), BOARD::Footprints(), Format(), PANEL_SETUP_BOARD_STACKUP::GetCopperLayerCount(), COLLECTOR::GetCount(), BOARD::GetEnabledLayers(), GetLayerName(), BOARD::GetLayerName(), BOARD_ITEM::GetLayerSet(), BOARD::GetLayerType(), getLayerTypeIndex(), getNonRemovableLayers(), getRemovedLayersWithItems(), GetUILayerMask(), BOARD::GetVisibleLayers(), LSET::InternalCuMask(), IsOK(), m_enabledLayers, m_frame, m_pcb, m_physicalStackup, PCB_EDIT_FRAME::OnModify(), pad, BOARD::Remove(), LSET::Seq(), BOARD::SetEnabledLayers(), PCB_LAYER_COLLECTOR::SetLayerId(), BOARD::SetLayerName(), BOARD_ITEM::SetLayerSet(), BOARD::SetLayerType(), BOARD::SetVisibleLayers(), SyncCopperLayers(), testLayerNames(), BOARD::Tracks(), LSET::UserDefinedLayers(), and via.

◆ TransferDataToWindow()

bool PANEL_SETUP_LAYERS::TransferDataToWindow ( )
overrideprivate

Member Data Documentation

◆ m_addUserDefinedLayerButton

wxButton* PANEL_SETUP_LAYERS_BASE::m_addUserDefinedLayerButton
protectedinherited

◆ m_AdhesBackCheckBox

wxCheckBox* PANEL_SETUP_LAYERS_BASE::m_AdhesBackCheckBox
protectedinherited

◆ m_AdhesBackName

wxTextCtrl* PANEL_SETUP_LAYERS_BASE::m_AdhesBackName
protectedinherited

◆ m_AdhesBackStaticText

wxStaticText* PANEL_SETUP_LAYERS_BASE::m_AdhesBackStaticText
protectedinherited

◆ m_AdhesFrontCheckBox

wxCheckBox* PANEL_SETUP_LAYERS_BASE::m_AdhesFrontCheckBox
protectedinherited

◆ m_AdhesFrontName

wxTextCtrl* PANEL_SETUP_LAYERS_BASE::m_AdhesFrontName
protectedinherited

◆ m_AdhesFrontStaticText

wxStaticText* PANEL_SETUP_LAYERS_BASE::m_AdhesFrontStaticText
protectedinherited

◆ m_BackCheckBox

wxCheckBox* PANEL_SETUP_LAYERS_BASE::m_BackCheckBox
protectedinherited

◆ m_BackChoice

wxChoice* PANEL_SETUP_LAYERS_BASE::m_BackChoice
protectedinherited

◆ m_BackName

wxTextCtrl* PANEL_SETUP_LAYERS_BASE::m_BackName
protectedinherited

◆ m_CommentsCheckBox

wxCheckBox* PANEL_SETUP_LAYERS_BASE::m_CommentsCheckBox
protectedinherited

◆ m_CommentsName

wxTextCtrl* PANEL_SETUP_LAYERS_BASE::m_CommentsName
protectedinherited

◆ m_CommentsStaticText

wxStaticText* PANEL_SETUP_LAYERS_BASE::m_CommentsStaticText
protectedinherited

◆ m_CrtYdBackName

wxTextCtrl* PANEL_SETUP_LAYERS_BASE::m_CrtYdBackName
protectedinherited

◆ m_CrtYdBackStaticText

wxStaticText* PANEL_SETUP_LAYERS_BASE::m_CrtYdBackStaticText
protectedinherited

◆ m_CrtYdFrontName

wxTextCtrl* PANEL_SETUP_LAYERS_BASE::m_CrtYdFrontName
protectedinherited

◆ m_CrtYdFrontStaticText

wxStaticText* PANEL_SETUP_LAYERS_BASE::m_CrtYdFrontStaticText
protectedinherited

◆ m_DrawingsCheckBox

wxCheckBox* PANEL_SETUP_LAYERS_BASE::m_DrawingsCheckBox
protectedinherited

◆ m_DrawingsName

wxTextCtrl* PANEL_SETUP_LAYERS_BASE::m_DrawingsName
protectedinherited

◆ m_DrawingsStaticText

wxStaticText* PANEL_SETUP_LAYERS_BASE::m_DrawingsStaticText
protectedinherited

◆ m_Eco1CheckBox

wxCheckBox* PANEL_SETUP_LAYERS_BASE::m_Eco1CheckBox
protectedinherited

◆ m_Eco1Name

wxTextCtrl* PANEL_SETUP_LAYERS_BASE::m_Eco1Name
protectedinherited

◆ m_Eco1StaticText

wxStaticText* PANEL_SETUP_LAYERS_BASE::m_Eco1StaticText
protectedinherited

◆ m_Eco2CheckBox

wxCheckBox* PANEL_SETUP_LAYERS_BASE::m_Eco2CheckBox
protectedinherited

◆ m_Eco2Name

wxTextCtrl* PANEL_SETUP_LAYERS_BASE::m_Eco2Name
protectedinherited

◆ m_Eco2StaticText

wxStaticText* PANEL_SETUP_LAYERS_BASE::m_Eco2StaticText
protectedinherited

◆ m_enabledLayers

LSET PANEL_SETUP_LAYERS::m_enabledLayers
private

◆ m_FabBackCheckBox

wxCheckBox* PANEL_SETUP_LAYERS_BASE::m_FabBackCheckBox
protectedinherited

◆ m_FabBackName

wxTextCtrl* PANEL_SETUP_LAYERS_BASE::m_FabBackName
protectedinherited

◆ m_FabBackStaticText

wxStaticText* PANEL_SETUP_LAYERS_BASE::m_FabBackStaticText
protectedinherited

◆ m_FabFrontCheckBox

wxCheckBox* PANEL_SETUP_LAYERS_BASE::m_FabFrontCheckBox
protectedinherited

◆ m_FabFrontName

wxTextCtrl* PANEL_SETUP_LAYERS_BASE::m_FabFrontName
protectedinherited

◆ m_FabFrontStaticText

wxStaticText* PANEL_SETUP_LAYERS_BASE::m_FabFrontStaticText
protectedinherited

◆ m_frame

PCB_EDIT_FRAME* PANEL_SETUP_LAYERS::m_frame
private

Definition at line 131 of file panel_setup_layers.h.

Referenced by TransferDataFromWindow().

◆ m_FrontCheckBox

wxCheckBox* PANEL_SETUP_LAYERS_BASE::m_FrontCheckBox
protectedinherited

◆ m_FrontChoice

wxChoice* PANEL_SETUP_LAYERS_BASE::m_FrontChoice
protectedinherited

◆ m_FrontName

wxTextCtrl* PANEL_SETUP_LAYERS_BASE::m_FrontName
protectedinherited

◆ m_In10CheckBox

wxCheckBox* PANEL_SETUP_LAYERS_BASE::m_In10CheckBox
protectedinherited

◆ m_In10Choice

wxChoice* PANEL_SETUP_LAYERS_BASE::m_In10Choice
protectedinherited

◆ m_In10Name

wxTextCtrl* PANEL_SETUP_LAYERS_BASE::m_In10Name
protectedinherited

◆ m_In11CheckBox

wxCheckBox* PANEL_SETUP_LAYERS_BASE::m_In11CheckBox
protectedinherited

◆ m_In11Choice

wxChoice* PANEL_SETUP_LAYERS_BASE::m_In11Choice
protectedinherited

◆ m_In11Name

wxTextCtrl* PANEL_SETUP_LAYERS_BASE::m_In11Name
protectedinherited

◆ m_In12CheckBox

wxCheckBox* PANEL_SETUP_LAYERS_BASE::m_In12CheckBox
protectedinherited

◆ m_In12Choice

wxChoice* PANEL_SETUP_LAYERS_BASE::m_In12Choice
protectedinherited

◆ m_In12Name

wxTextCtrl* PANEL_SETUP_LAYERS_BASE::m_In12Name
protectedinherited

◆ m_In13CheckBox

wxCheckBox* PANEL_SETUP_LAYERS_BASE::m_In13CheckBox
protectedinherited

◆ m_In13Choice

wxChoice* PANEL_SETUP_LAYERS_BASE::m_In13Choice
protectedinherited

◆ m_In13Name

wxTextCtrl* PANEL_SETUP_LAYERS_BASE::m_In13Name
protectedinherited

◆ m_In14CheckBox

wxCheckBox* PANEL_SETUP_LAYERS_BASE::m_In14CheckBox
protectedinherited

◆ m_In14Choice

wxChoice* PANEL_SETUP_LAYERS_BASE::m_In14Choice
protectedinherited

◆ m_In14Name

wxTextCtrl* PANEL_SETUP_LAYERS_BASE::m_In14Name
protectedinherited

◆ m_In15CheckBox

wxCheckBox* PANEL_SETUP_LAYERS_BASE::m_In15CheckBox
protectedinherited

◆ m_In15Choice

wxChoice* PANEL_SETUP_LAYERS_BASE::m_In15Choice
protectedinherited

◆ m_In15Name

wxTextCtrl* PANEL_SETUP_LAYERS_BASE::m_In15Name
protectedinherited

◆ m_In16CheckBox

wxCheckBox* PANEL_SETUP_LAYERS_BASE::m_In16CheckBox
protectedinherited

◆ m_In16Choice

wxChoice* PANEL_SETUP_LAYERS_BASE::m_In16Choice
protectedinherited

◆ m_In16Name

wxTextCtrl* PANEL_SETUP_LAYERS_BASE::m_In16Name
protectedinherited

◆ m_In17CheckBox

wxCheckBox* PANEL_SETUP_LAYERS_BASE::m_In17CheckBox
protectedinherited

◆ m_In17Choice

wxChoice* PANEL_SETUP_LAYERS_BASE::m_In17Choice
protectedinherited

◆ m_In17Name

wxTextCtrl* PANEL_SETUP_LAYERS_BASE::m_In17Name
protectedinherited

◆ m_In18CheckBox

wxCheckBox* PANEL_SETUP_LAYERS_BASE::m_In18CheckBox
protectedinherited

◆ m_In18Choice

wxChoice* PANEL_SETUP_LAYERS_BASE::m_In18Choice
protectedinherited

◆ m_In18Name

wxTextCtrl* PANEL_SETUP_LAYERS_BASE::m_In18Name
protectedinherited

◆ m_In19CheckBox

wxCheckBox* PANEL_SETUP_LAYERS_BASE::m_In19CheckBox
protectedinherited

◆ m_In19Choice

wxChoice* PANEL_SETUP_LAYERS_BASE::m_In19Choice
protectedinherited

◆ m_In19Name

wxTextCtrl* PANEL_SETUP_LAYERS_BASE::m_In19Name
protectedinherited

◆ m_In1CheckBox

wxCheckBox* PANEL_SETUP_LAYERS_BASE::m_In1CheckBox
protectedinherited

◆ m_In1Choice

wxChoice* PANEL_SETUP_LAYERS_BASE::m_In1Choice
protectedinherited

◆ m_In1Name

wxTextCtrl* PANEL_SETUP_LAYERS_BASE::m_In1Name
protectedinherited

◆ m_In20CheckBox

wxCheckBox* PANEL_SETUP_LAYERS_BASE::m_In20CheckBox
protectedinherited

◆ m_In20Choice

wxChoice* PANEL_SETUP_LAYERS_BASE::m_In20Choice
protectedinherited

◆ m_In20Name

wxTextCtrl* PANEL_SETUP_LAYERS_BASE::m_In20Name
protectedinherited

◆ m_In21CheckBox

wxCheckBox* PANEL_SETUP_LAYERS_BASE::m_In21CheckBox
protectedinherited

◆ m_In21Choice

wxChoice* PANEL_SETUP_LAYERS_BASE::m_In21Choice
protectedinherited

◆ m_In21Name

wxTextCtrl* PANEL_SETUP_LAYERS_BASE::m_In21Name
protectedinherited

◆ m_In22CheckBox

wxCheckBox* PANEL_SETUP_LAYERS_BASE::m_In22CheckBox
protectedinherited

◆ m_In22Choice

wxChoice* PANEL_SETUP_LAYERS_BASE::m_In22Choice
protectedinherited

◆ m_In22Name

wxTextCtrl* PANEL_SETUP_LAYERS_BASE::m_In22Name
protectedinherited

◆ m_In23CheckBox

wxCheckBox* PANEL_SETUP_LAYERS_BASE::m_In23CheckBox
protectedinherited

◆ m_In23Choice

wxChoice* PANEL_SETUP_LAYERS_BASE::m_In23Choice
protectedinherited

◆ m_In23Name

wxTextCtrl* PANEL_SETUP_LAYERS_BASE::m_In23Name
protectedinherited

◆ m_In24CheckBox

wxCheckBox* PANEL_SETUP_LAYERS_BASE::m_In24CheckBox
protectedinherited

◆ m_In24Choice

wxChoice* PANEL_SETUP_LAYERS_BASE::m_In24Choice
protectedinherited

◆ m_In24Name

wxTextCtrl* PANEL_SETUP_LAYERS_BASE::m_In24Name
protectedinherited

◆ m_In25CheckBox

wxCheckBox* PANEL_SETUP_LAYERS_BASE::m_In25CheckBox
protectedinherited

◆ m_In25Choice

wxChoice* PANEL_SETUP_LAYERS_BASE::m_In25Choice
protectedinherited

◆ m_In25Name

wxTextCtrl* PANEL_SETUP_LAYERS_BASE::m_In25Name
protectedinherited

◆ m_In26CheckBox

wxCheckBox* PANEL_SETUP_LAYERS_BASE::m_In26CheckBox
protectedinherited

◆ m_In26Choice

wxChoice* PANEL_SETUP_LAYERS_BASE::m_In26Choice
protectedinherited

◆ m_In26Name

wxTextCtrl* PANEL_SETUP_LAYERS_BASE::m_In26Name
protectedinherited

◆ m_In27CheckBox

wxCheckBox* PANEL_SETUP_LAYERS_BASE::m_In27CheckBox
protectedinherited

◆ m_In27Choice

wxChoice* PANEL_SETUP_LAYERS_BASE::m_In27Choice
protectedinherited

◆ m_In27Name

wxTextCtrl* PANEL_SETUP_LAYERS_BASE::m_In27Name
protectedinherited

◆ m_In28CheckBox

wxCheckBox* PANEL_SETUP_LAYERS_BASE::m_In28CheckBox
protectedinherited

◆ m_In28Choice

wxChoice* PANEL_SETUP_LAYERS_BASE::m_In28Choice
protectedinherited

◆ m_In28Name

wxTextCtrl* PANEL_SETUP_LAYERS_BASE::m_In28Name
protectedinherited

◆ m_In29CheckBox

wxCheckBox* PANEL_SETUP_LAYERS_BASE::m_In29CheckBox
protectedinherited

◆ m_In29Choice

wxChoice* PANEL_SETUP_LAYERS_BASE::m_In29Choice
protectedinherited

◆ m_In29Name

wxTextCtrl* PANEL_SETUP_LAYERS_BASE::m_In29Name
protectedinherited

◆ m_In2CheckBox

wxCheckBox* PANEL_SETUP_LAYERS_BASE::m_In2CheckBox
protectedinherited

◆ m_In2Choice

wxChoice* PANEL_SETUP_LAYERS_BASE::m_In2Choice
protectedinherited

◆ m_In2Name

wxTextCtrl* PANEL_SETUP_LAYERS_BASE::m_In2Name
protectedinherited

◆ m_In30CheckBox

wxCheckBox* PANEL_SETUP_LAYERS_BASE::m_In30CheckBox
protectedinherited

◆ m_In30Choice

wxChoice* PANEL_SETUP_LAYERS_BASE::m_In30Choice
protectedinherited

◆ m_In30Name

wxTextCtrl* PANEL_SETUP_LAYERS_BASE::m_In30Name
protectedinherited

◆ m_In3CheckBox

wxCheckBox* PANEL_SETUP_LAYERS_BASE::m_In3CheckBox
protectedinherited

◆ m_In3Choice

wxChoice* PANEL_SETUP_LAYERS_BASE::m_In3Choice
protectedinherited

◆ m_In3Name

wxTextCtrl* PANEL_SETUP_LAYERS_BASE::m_In3Name
protectedinherited

◆ m_In4CheckBox

wxCheckBox* PANEL_SETUP_LAYERS_BASE::m_In4CheckBox
protectedinherited

◆ m_In4Choice

wxChoice* PANEL_SETUP_LAYERS_BASE::m_In4Choice
protectedinherited

◆ m_In4Name

wxTextCtrl* PANEL_SETUP_LAYERS_BASE::m_In4Name
protectedinherited

◆ m_In5CheckBox

wxCheckBox* PANEL_SETUP_LAYERS_BASE::m_In5CheckBox
protectedinherited

◆ m_In5Choice

wxChoice* PANEL_SETUP_LAYERS_BASE::m_In5Choice
protectedinherited

◆ m_In5Name

wxTextCtrl* PANEL_SETUP_LAYERS_BASE::m_In5Name
protectedinherited

◆ m_In6CheckBox

wxCheckBox* PANEL_SETUP_LAYERS_BASE::m_In6CheckBox
protectedinherited

◆ m_In6Choice

wxChoice* PANEL_SETUP_LAYERS_BASE::m_In6Choice
protectedinherited

◆ m_In6Name

wxTextCtrl* PANEL_SETUP_LAYERS_BASE::m_In6Name
protectedinherited

◆ m_In7CheckBox

wxCheckBox* PANEL_SETUP_LAYERS_BASE::m_In7CheckBox
protectedinherited

◆ m_In7Choice

wxChoice* PANEL_SETUP_LAYERS_BASE::m_In7Choice
protectedinherited

◆ m_In7Name

wxTextCtrl* PANEL_SETUP_LAYERS_BASE::m_In7Name
protectedinherited

◆ m_In8CheckBox

wxCheckBox* PANEL_SETUP_LAYERS_BASE::m_In8CheckBox
protectedinherited

◆ m_In8Choice

wxChoice* PANEL_SETUP_LAYERS_BASE::m_In8Choice
protectedinherited

◆ m_In8Name

wxTextCtrl* PANEL_SETUP_LAYERS_BASE::m_In8Name
protectedinherited

◆ m_In9CheckBox

wxCheckBox* PANEL_SETUP_LAYERS_BASE::m_In9CheckBox
protectedinherited

◆ m_In9Choice

wxChoice* PANEL_SETUP_LAYERS_BASE::m_In9Choice
protectedinherited

◆ m_In9Name

wxTextCtrl* PANEL_SETUP_LAYERS_BASE::m_In9Name
protectedinherited

◆ m_LayerListFlexGridSizer

wxFlexGridSizer* PANEL_SETUP_LAYERS_BASE::m_LayerListFlexGridSizer
protectedinherited

◆ m_LayersListPanel

wxScrolledWindow* PANEL_SETUP_LAYERS_BASE::m_LayersListPanel
protectedinherited

◆ m_MarginName

wxTextCtrl* PANEL_SETUP_LAYERS_BASE::m_MarginName
protectedinherited

◆ m_MarginStaticText

wxStaticText* PANEL_SETUP_LAYERS_BASE::m_MarginStaticText
protectedinherited

◆ m_MaskBackCheckBox

wxCheckBox* PANEL_SETUP_LAYERS_BASE::m_MaskBackCheckBox
protectedinherited

◆ m_MaskBackName

wxTextCtrl* PANEL_SETUP_LAYERS_BASE::m_MaskBackName
protectedinherited

◆ m_MaskBackStaticText

wxStaticText* PANEL_SETUP_LAYERS_BASE::m_MaskBackStaticText
protectedinherited

◆ m_MaskFrontCheckBox

wxCheckBox* PANEL_SETUP_LAYERS_BASE::m_MaskFrontCheckBox
protectedinherited

◆ m_MaskFrontName

wxTextCtrl* PANEL_SETUP_LAYERS_BASE::m_MaskFrontName
protectedinherited

◆ m_MaskFrontStaticText

wxStaticText* PANEL_SETUP_LAYERS_BASE::m_MaskFrontStaticText
protectedinherited

◆ m_parentDialog

PAGED_DIALOG* PANEL_SETUP_LAYERS::m_parentDialog
private

Definition at line 130 of file panel_setup_layers.h.

Referenced by addUserDefinedLayer(), and testLayerNames().

◆ m_pcb

◆ m_PCBEdgesName

wxTextCtrl* PANEL_SETUP_LAYERS_BASE::m_PCBEdgesName
protectedinherited

◆ m_PCBEdgesStaticText

wxStaticText* PANEL_SETUP_LAYERS_BASE::m_PCBEdgesStaticText
protectedinherited

◆ m_physicalStackup

PANEL_SETUP_BOARD_STACKUP* PANEL_SETUP_LAYERS::m_physicalStackup
private

Definition at line 132 of file panel_setup_layers.h.

Referenced by SetPhysicalStackupPanel(), and TransferDataFromWindow().

◆ m_SilkSBackCheckBox

wxCheckBox* PANEL_SETUP_LAYERS_BASE::m_SilkSBackCheckBox
protectedinherited

◆ m_SilkSBackName

wxTextCtrl* PANEL_SETUP_LAYERS_BASE::m_SilkSBackName
protectedinherited

◆ m_SilkSBackStaticText

wxStaticText* PANEL_SETUP_LAYERS_BASE::m_SilkSBackStaticText
protectedinherited

◆ m_SilkSFrontCheckBox

wxCheckBox* PANEL_SETUP_LAYERS_BASE::m_SilkSFrontCheckBox
protectedinherited

◆ m_SilkSFrontName

wxTextCtrl* PANEL_SETUP_LAYERS_BASE::m_SilkSFrontName
protectedinherited

◆ m_SilkSFrontStaticText

wxStaticText* PANEL_SETUP_LAYERS_BASE::m_SilkSFrontStaticText
protectedinherited

◆ m_SoldPBackCheckBox

wxCheckBox* PANEL_SETUP_LAYERS_BASE::m_SoldPBackCheckBox
protectedinherited

◆ m_SoldPBackName

wxTextCtrl* PANEL_SETUP_LAYERS_BASE::m_SoldPBackName
protectedinherited

◆ m_SoldPBackStaticText

wxStaticText* PANEL_SETUP_LAYERS_BASE::m_SoldPBackStaticText
protectedinherited

◆ m_SoldPFrontCheckBox

wxCheckBox* PANEL_SETUP_LAYERS_BASE::m_SoldPFrontCheckBox
protectedinherited

◆ m_SoldPFrontName

wxTextCtrl* PANEL_SETUP_LAYERS_BASE::m_SoldPFrontName
protectedinherited

◆ m_SoldPFrontStaticText

wxStaticText* PANEL_SETUP_LAYERS_BASE::m_SoldPFrontStaticText
protectedinherited

◆ m_staticline2

wxStaticLine* PANEL_SETUP_LAYERS_BASE::m_staticline2
protectedinherited

◆ m_User1CheckBox

wxCheckBox* PANEL_SETUP_LAYERS_BASE::m_User1CheckBox
protectedinherited

◆ m_User1Name

wxTextCtrl* PANEL_SETUP_LAYERS_BASE::m_User1Name
protectedinherited

◆ m_User1StaticText

wxStaticText* PANEL_SETUP_LAYERS_BASE::m_User1StaticText
protectedinherited

◆ m_User2CheckBox

wxCheckBox* PANEL_SETUP_LAYERS_BASE::m_User2CheckBox
protectedinherited

◆ m_User2Name

wxTextCtrl* PANEL_SETUP_LAYERS_BASE::m_User2Name
protectedinherited

◆ m_User2StaticText

wxStaticText* PANEL_SETUP_LAYERS_BASE::m_User2StaticText
protectedinherited

◆ m_User3CheckBox

wxCheckBox* PANEL_SETUP_LAYERS_BASE::m_User3CheckBox
protectedinherited

◆ m_User3Name

wxTextCtrl* PANEL_SETUP_LAYERS_BASE::m_User3Name
protectedinherited

◆ m_User3StaticText

wxStaticText* PANEL_SETUP_LAYERS_BASE::m_User3StaticText
protectedinherited

◆ m_User4CheckBox

wxCheckBox* PANEL_SETUP_LAYERS_BASE::m_User4CheckBox
protectedinherited

◆ m_User4Name

wxTextCtrl* PANEL_SETUP_LAYERS_BASE::m_User4Name
protectedinherited

◆ m_User4StaticText

wxStaticText* PANEL_SETUP_LAYERS_BASE::m_User4StaticText
protectedinherited

◆ m_User5CheckBox

wxCheckBox* PANEL_SETUP_LAYERS_BASE::m_User5CheckBox
protectedinherited

◆ m_User5Name

wxTextCtrl* PANEL_SETUP_LAYERS_BASE::m_User5Name
protectedinherited

◆ m_User5StaticText

wxStaticText* PANEL_SETUP_LAYERS_BASE::m_User5StaticText
protectedinherited

◆ m_User6CheckBox

wxCheckBox* PANEL_SETUP_LAYERS_BASE::m_User6CheckBox
protectedinherited

◆ m_User6Name

wxTextCtrl* PANEL_SETUP_LAYERS_BASE::m_User6Name
protectedinherited

◆ m_User6StaticText

wxStaticText* PANEL_SETUP_LAYERS_BASE::m_User6StaticText
protectedinherited

◆ m_User7CheckBox

wxCheckBox* PANEL_SETUP_LAYERS_BASE::m_User7CheckBox
protectedinherited

◆ m_User7Name

wxTextCtrl* PANEL_SETUP_LAYERS_BASE::m_User7Name
protectedinherited

◆ m_User7StaticText

wxStaticText* PANEL_SETUP_LAYERS_BASE::m_User7StaticText
protectedinherited

◆ m_User8CheckBox

wxCheckBox* PANEL_SETUP_LAYERS_BASE::m_User8CheckBox
protectedinherited

◆ m_User8Name

wxTextCtrl* PANEL_SETUP_LAYERS_BASE::m_User8Name
protectedinherited

◆ m_User8StaticText

wxStaticText* PANEL_SETUP_LAYERS_BASE::m_User8StaticText
protectedinherited

◆ m_User9CheckBox

wxCheckBox* PANEL_SETUP_LAYERS_BASE::m_User9CheckBox
protectedinherited

◆ m_User9Name

wxTextCtrl* PANEL_SETUP_LAYERS_BASE::m_User9Name
protectedinherited

◆ m_User9StaticText

wxStaticText* PANEL_SETUP_LAYERS_BASE::m_User9StaticText
protectedinherited

The documentation for this class was generated from the following files: