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 (LAYER_NUM 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 (LAYER_NUM layer, bool isChecked)
 
void setCopperLayerCheckBoxes (int copperCount)
 
void setMandatoryLayerCheckBoxes ()
 
void setUserDefinedLayerCheckBoxes ()
 
void showBoardLayerNames ()
 
void showSelectedLayerCheckBoxes (LSET enableLayerMask)
 
void showLayerTypes ()
 
int getLayerTypeIndex (LAYER_NUM 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 (LAYER_NUM aLayerNumber)
 
wxControl * getName (LAYER_NUM aLayer)
 
wxCheckBox * getCheckBox (LAYER_NUM aLayer)
 
wxChoice * getChoice (LAYER_NUM 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 124 of file panel_setup_layers.cpp.

124  :
125  PANEL_SETUP_LAYERS_BASE( aParent->GetTreebook() ),
126  m_parentDialog( aParent ),
127  m_frame( aFrame ),
128  m_physicalStackup( nullptr )
129 {
130  m_pcb = aFrame->GetBoard();
131 }
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)
PAGED_DIALOG * m_parentDialog
wxTreebook * GetTreebook()
Definition: paged_dialog.h:37
PCB_EDIT_FRAME * m_frame
BOARD * GetBoard() const
PANEL_SETUP_BOARD_STACKUP * m_physicalStackup

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 789 of file panel_setup_layers.cpp.

790 {
791  wxArrayString headers;
792  headers.Add( _( "Layers" ) );
793 
794  // Build the available user-defined layers list:
795  std::vector<wxArrayString> list;
796 
797  for( LSEQ seq = LSET::UserDefinedLayers().Seq(); seq; ++seq )
798  {
799  wxCheckBox* checkBox = getCheckBox( *seq );
800 
801  if( checkBox && checkBox->IsShown() )
802  continue;
803 
804  wxArrayString available_user_layer;
805  available_user_layer.Add( LayerName( *seq ) );
806 
807  list.emplace_back( available_user_layer );
808  }
809 
810  if( list.empty() )
811  {
813  _( "All user-defined layers have already been added." ) );
814  return;
815  }
816 
817  EDA_LIST_DIALOG dlg( m_parentDialog, _( "Add User-defined Layer" ), headers, list );
818  dlg.SetListLabel( _( "Select layer to add:" ) );
819  dlg.HideFilter();
820 
821  if( dlg.ShowModal() == wxID_CANCEL || dlg.GetTextSelection().IsEmpty() )
822  return;
823 
824  LSEQ seq;
825 
826  for( seq = LSET::UserDefinedLayers().Seq(); seq; ++seq )
827  {
828  if( LayerName( *seq ) == dlg.GetTextSelection() )
829  break;
830  }
831 
832  wxCHECK( *seq >= User_1 && *seq <= User_9, /* void */ );
833 
834  LSET newLayer( *seq );
835 
836  m_enabledLayers |= newLayer;
837 
838  PANEL_SETUP_LAYERS_CTLs ctl = getCTLs( *seq );
839 
840  // All user-defined layers should have a checkbox
841  wxASSERT( ctl.checkbox );
842 
843  wxTextCtrl* textCtrl = dynamic_cast<wxTextCtrl*>( ctl.name );
844 
845  wxCHECK( textCtrl, /* void */ );
846  textCtrl->ChangeValue( LSET::Name( *seq ) );
847  ctl.name->Show( true );
848  ctl.checkbox->Show( true );
849  ctl.choice->Show( true );
850 
851  wxSizeEvent evt_size( m_LayersListPanel->GetSize() );
852  m_LayersListPanel->GetEventHandler()->ProcessEvent( evt_size );
853 
854  setLayerCheckBox( *seq, true );
855 }
static LSET UserDefinedLayers()
Return a mask with all of the allowable user defined layers.
Definition: lset.cpp:856
void DisplayErrorMessage(wxWindow *aParent, const wxString &aText, const wxString &aExtraInfo)
Display an error message with aMessage.
Definition: confirm.cpp:292
wxScrolledWindow * m_LayersListPanel
A dialog which shows:
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
PAGED_DIALOG * m_parentDialog
wxCheckBox * getCheckBox(LAYER_NUM aLayer)
LSET is a set of PCB_LAYER_IDs.
Definition: layer_ids.h:504
static const wxChar * Name(PCB_LAYER_ID aLayerId)
Return the fixed name association with aLayerId.
Definition: lset.cpp:82
#define _(s)
wxString LayerName(int aLayer)
Returns the default display name for a given layer.
Definition: layer_id.cpp:27
LSEQ is a sequence (and therefore also a set) of PCB_LAYER_IDs.
Definition: layer_ids.h:465
PANEL_SETUP_LAYERS_CTLs getCTLs(LAYER_NUM aLayerNumber)
void setLayerCheckBox(LAYER_NUM layer, bool isChecked)
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, PANEL_SETUP_LAYERS_CTLs::name, LSET::Name(), LSET::Seq(), 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 755 of file panel_setup_layers.cpp.

756 {
757  /*
758  * This function warns users if they are going to delete inner copper layers because
759  * they're importing settings from a board with less copper layers than the board
760  * already loaded. We want to return "true" as default on the assumption no layer will
761  * actually be deleted.
762  */
763  bool okToDeleteCopperLayers = true;
764 
765  // Get the number of copper layers in the loaded board and the "import settings" board
766  int currNumLayers = aWorkingBoard->GetCopperLayerCount();
767  int newNumLayers = aImportedBoard->GetCopperLayerCount();
768 
769  if( newNumLayers < currNumLayers )
770  {
771  wxString msg = wxString::Format( _( "Imported settings have fewer copper layers than "
772  "the current board (%i instead of %i).\n\n"
773  "Continue and delete the extra inner copper layers "
774  "from the current board?" ),
775  newNumLayers,
776  currNumLayers );
777 
778  wxMessageDialog dlg( this, msg, _( "Inner Layers To Be Deleted" ),
779  wxICON_WARNING | wxSTAY_ON_TOP | wxYES | wxNO | wxNO_DEFAULT );
780 
781  if( wxID_NO == dlg.ShowModal() )
782  okToDeleteCopperLayers = false;
783  }
784 
785  return okToDeleteCopperLayers;
786 }
#define _(s)
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
int GetCopperLayerCount() const
Definition: board.cpp:455

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 419 of file panel_setup_layers.cpp.

420 {
421  wxObject* source = event.GetEventObject();
422  wxString msg;
423 
424  for( LSEQ seq = LSET::AllCuMask().Seq(); seq; ++seq )
425  {
426  wxCheckBox* copper = getCheckBox( *seq );
427 
428  if( source == copper )
429  {
430  DisplayError( this,
431  _( "Use the Physical Stackup page to change the number of copper layers." ) );
432 
433  copper->SetValue( true );
434  return;
435  }
436  }
437 }
static LSET AllCuMask(int aCuLayerCount=MAX_CU_LAYERS)
Return a mask holding the requested number of Cu PCB_LAYER_IDs.
Definition: lset.cpp:750
void DisplayError(wxWindow *aParent, const wxString &aText, int aDisplayTime)
Display an error or warning message box with aMessage.
Definition: confirm.cpp:279
wxCheckBox * getCheckBox(LAYER_NUM aLayer)
#define _(s)
LSEQ is a sequence (and therefore also a set) of PCB_LAYER_IDs.
Definition: layer_ids.h:465

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

◆ getCheckBox()

wxCheckBox * PANEL_SETUP_LAYERS::getCheckBox ( LAYER_NUM  aLayer)
private

Definition at line 220 of file panel_setup_layers.cpp.

221 {
222  return getCTLs( aLayer ).checkbox;
223 }
PANEL_SETUP_LAYERS_CTLs getCTLs(LAYER_NUM aLayerNumber)

References PANEL_SETUP_LAYERS_CTLs::checkbox, and getCTLs().

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

◆ getChoice()

wxChoice * PANEL_SETUP_LAYERS::getChoice ( LAYER_NUM  aLayer)
private

Definition at line 226 of file panel_setup_layers.cpp.

227 {
228  return (wxChoice*) getCTLs( aLayer ).choice;
229 }
PANEL_SETUP_LAYERS_CTLs getCTLs(LAYER_NUM aLayerNumber)

References PANEL_SETUP_LAYERS_CTLs::choice, and getCTLs().

Referenced by getLayerTypeIndex(), and showLayerTypes().

◆ getCTLs()

PANEL_SETUP_LAYERS_CTLs PANEL_SETUP_LAYERS::getCTLs ( LAYER_NUM  aLayerNumber)
private

Definition at line 134 of file panel_setup_layers.cpp.

135 {
136 #define RETURN_COPPER( x ) return PANEL_SETUP_LAYERS_CTLs( x##Name, x##CheckBox, x##Choice )
137 #define RETURN_AUX( x ) return PANEL_SETUP_LAYERS_CTLs( x##Name, x##CheckBox, x##StaticText )
138 #define RETURN_MANDATORY( x ) return PANEL_SETUP_LAYERS_CTLs( x##Name, nullptr, x##StaticText )
139 
140  switch( aLayerNumber )
141  {
142  case F_CrtYd: RETURN_MANDATORY( m_CrtYdFront );
143  case F_Fab: RETURN_AUX( m_FabFront );
144  case F_Adhes: RETURN_AUX( m_AdhesFront );
145  case F_Paste: RETURN_AUX( m_SoldPFront );
146  case F_SilkS: RETURN_AUX( m_SilkSFront );
147  case F_Mask: RETURN_AUX( m_MaskFront );
148  case F_Cu: RETURN_COPPER( m_Front );
149 
150  case In1_Cu: RETURN_COPPER( m_In1 );
151  case In2_Cu: RETURN_COPPER( m_In2 );
152  case In3_Cu: RETURN_COPPER( m_In3 );
153  case In4_Cu: RETURN_COPPER( m_In4 );
154  case In5_Cu: RETURN_COPPER( m_In5 );
155  case In6_Cu: RETURN_COPPER( m_In6 );
156  case In7_Cu: RETURN_COPPER( m_In7 );
157  case In8_Cu: RETURN_COPPER( m_In8 );
158  case In9_Cu: RETURN_COPPER( m_In9 );
159  case In10_Cu: RETURN_COPPER( m_In10 );
160  case In11_Cu: RETURN_COPPER( m_In11 );
161  case In12_Cu: RETURN_COPPER( m_In12 );
162  case In13_Cu: RETURN_COPPER( m_In13 );
163  case In14_Cu: RETURN_COPPER( m_In14 );
164  case In15_Cu: RETURN_COPPER( m_In15 );
165 
166  case In16_Cu: RETURN_COPPER( m_In16 );
167  case In17_Cu: RETURN_COPPER( m_In17 );
168  case In18_Cu: RETURN_COPPER( m_In18 );
169  case In19_Cu: RETURN_COPPER( m_In19 );
170  case In20_Cu: RETURN_COPPER( m_In20 );
171  case In21_Cu: RETURN_COPPER( m_In21 );
172  case In22_Cu: RETURN_COPPER( m_In22 );
173  case In23_Cu: RETURN_COPPER( m_In23 );
174  case In24_Cu: RETURN_COPPER( m_In24 );
175  case In25_Cu: RETURN_COPPER( m_In25 );
176  case In26_Cu: RETURN_COPPER( m_In26 );
177  case In27_Cu: RETURN_COPPER( m_In27 );
178  case In28_Cu: RETURN_COPPER( m_In28 );
179  case In29_Cu: RETURN_COPPER( m_In29 );
180  case In30_Cu: RETURN_COPPER( m_In30 );
181 
182  case B_Cu: RETURN_COPPER( m_Back );
183  case B_Mask: RETURN_AUX( m_MaskBack );
184  case B_SilkS: RETURN_AUX( m_SilkSBack );
185  case B_Paste: RETURN_AUX( m_SoldPBack );
186  case B_Adhes: RETURN_AUX( m_AdhesBack );
187  case B_Fab: RETURN_AUX( m_FabBack );
188  case B_CrtYd: RETURN_MANDATORY( m_CrtYdBack );
189 
190  case Edge_Cuts: RETURN_MANDATORY( m_PCBEdges );
191  case Margin: RETURN_MANDATORY( m_Margin );
192  case Eco2_User: RETURN_AUX( m_Eco2 );
193  case Eco1_User: RETURN_AUX( m_Eco1 );
194  case Cmts_User: RETURN_AUX( m_Comments );
195  case Dwgs_User: RETURN_AUX( m_Drawings );
196 
197  case User_1: RETURN_AUX( m_User1 );
198  case User_2: RETURN_AUX( m_User2 );
199  case User_3: RETURN_AUX( m_User3 );
200  case User_4: RETURN_AUX( m_User4 );
201  case User_5: RETURN_AUX( m_User5 );
202  case User_6: RETURN_AUX( m_User6 );
203  case User_7: RETURN_AUX( m_User7 );
204  case User_8: RETURN_AUX( m_User8 );
205  case User_9: RETURN_AUX( m_User9 );
206 
207  default:
208  wxASSERT_MSG( 0, wxT( "bad layer id" ) );
209  return PANEL_SETUP_LAYERS_CTLs( nullptr, nullptr, nullptr );
210  }
211 }
#define RETURN_COPPER(x)
#define RETURN_MANDATORY(x)
Definition: layer_ids.h:71
The 3 UI control pointers for a single board layer.
#define RETURN_AUX(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 ( LAYER_NUM  layer)

Definition at line 596 of file panel_setup_layers.cpp.

597 {
598  wxControl* control = getName( aLayer );
599 
600  if( auto textCtl = dynamic_cast<wxTextCtrl*>( control ) )
601  return textCtl->GetValue().Trim();
602  else
603  return control->GetLabel();
604 }
wxControl * getName(LAYER_NUM aLayer)

References getName().

Referenced by testLayerNames(), and TransferDataFromWindow().

◆ getLayerTypeIndex()

int PANEL_SETUP_LAYERS::getLayerTypeIndex ( LAYER_NUM  layer)
private

Definition at line 588 of file panel_setup_layers.cpp.

589 {
590  wxChoice* ctl = getChoice( aLayer );
591  int ret = ctl->GetCurrentSelection(); // Indices must have same sequence as LAYER_T
592  return ret;
593 }
wxChoice * getChoice(LAYER_NUM aLayer)

References getChoice().

Referenced by TransferDataFromWindow().

◆ getName()

wxControl * PANEL_SETUP_LAYERS::getName ( LAYER_NUM  aLayer)
private

Definition at line 214 of file panel_setup_layers.cpp.

215 {
216  return getCTLs( aLayer ).name;
217 }
PANEL_SETUP_LAYERS_CTLs getCTLs(LAYER_NUM aLayerNumber)

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 712 of file panel_setup_layers.cpp.

713 {
714  // Build the list of non-copper layers in use in footprints.
715  LSEQ inUseLayers;
716  LSET newLayers = GetUILayerMask();
717  LSET curLayers = m_pcb->GetEnabledLayers();
718 
719  if( newLayers == curLayers ) // Return an empty list if no change
720  return inUseLayers;
721 
722  PCB_LAYER_COLLECTOR collector;
723  LSEQ newLayerSeq = newLayers.Seq();
724 
725  for( auto layer_id : curLayers.Seq() )
726  {
727  if( IsCopperLayer( layer_id ) ) // Copper layers are not taken into account here
728  continue;
729 
730  if( !alg::contains( newLayerSeq, layer_id ) )
731  {
732  collector.SetLayerId( layer_id );
734 
735  if( collector.GetCount() != 0 )
736  inUseLayers.push_back( layer_id );
737  }
738  }
739 
740  return inUseLayers;
741 }
static const KICAD_T FootprintItems[]
A scan list for primary footprint items.
Definition: collectors.h:293
void Collect(BOARD_ITEM *aBoard, const KICAD_T aScanList[])
Test a BOARD_ITEM using this class's Inspector method, which does the collection.
Definition: collectors.cpp:628
LSET GetEnabledLayers() const
A proxy function that calls the corresponding function in m_BoardSettings.
Definition: board.cpp:467
Collect all BOARD_ITEM objects on a given layer.
Definition: collectors.h:642
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
void SetLayerId(PCB_LAYER_ID aLayerId)
Definition: collectors.h:650
int GetCount() const
Return the number of objects in the list.
Definition: collector.h:82
LSET is a set of PCB_LAYER_IDs.
Definition: layer_ids.h:504
bool contains(const _Container &__container, _Value __value)
Returns true if the container contains the given value.
Definition: kicad_algo.h:99
LSEQ is a sequence (and therefore also a set) of PCB_LAYER_IDs.
Definition: layer_ids.h:465
bool IsCopperLayer(LAYER_NUM aLayerId)
Tests whether a layer is a copper layer.
Definition: layer_ids.h:796

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 684 of file panel_setup_layers.cpp.

685 {
686  LSEQ removedLayers;
687  LSET newLayers = GetUILayerMask();
688  LSET curLayers = m_pcb->GetEnabledLayers();
689 
690  if( newLayers == curLayers ) // Return an empty list if no change
691  return removedLayers;
692 
693  PCB_LAYER_COLLECTOR collector;
694  LSEQ newLayerSeq = newLayers.Seq();
695 
696  for( PCB_LAYER_ID layer_id : curLayers.Seq() )
697  {
698  if( !alg::contains( newLayerSeq, layer_id ) )
699  {
700  collector.SetLayerId( layer_id );
702 
703  if( collector.GetCount() != 0 )
704  removedLayers.push_back( layer_id );
705  }
706  }
707 
708  return removedLayers;
709 }
static const KICAD_T BoardLevelItems[]
A scan list for all primary board items, omitting items which are subordinate to a FOOTPRINT,...
Definition: collectors.h:278
void Collect(BOARD_ITEM *aBoard, const KICAD_T aScanList[])
Test a BOARD_ITEM using this class's Inspector method, which does the collection.
Definition: collectors.cpp:628
LSET GetEnabledLayers() const
A proxy function that calls the corresponding function in m_BoardSettings.
Definition: board.cpp:467
Collect all BOARD_ITEM objects on a given layer.
Definition: collectors.h:642
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
void SetLayerId(PCB_LAYER_ID aLayerId)
Definition: collectors.h:650
int GetCount() const
Return the number of objects in the list.
Definition: collector.h:82
LSET is a set of PCB_LAYER_IDs.
Definition: layer_ids.h:504
bool contains(const _Container &__container, _Value __value)
Returns true if the container contains the given value.
Definition: kicad_algo.h:99
LSEQ is a sequence (and therefore also a set) of PCB_LAYER_IDs.
Definition: layer_ids.h:465
PCB_LAYER_ID
A quick note on layer IDs:
Definition: layer_ids.h:65

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 342 of file panel_setup_layers.cpp.

343 {
344  LSET layerMaskResult;
345 
346  for( LSEQ seq = dlg_layers(); seq; ++seq )
347  {
348  PCB_LAYER_ID layer = *seq;
349  wxCheckBox* ctl = getCheckBox( layer );
350 
351  if( !ctl || ctl->GetValue() )
352  layerMaskResult.set( layer );
353  }
354 
355  return layerMaskResult;
356 }
wxCheckBox * getCheckBox(LAYER_NUM aLayer)
LSET is a set of PCB_LAYER_IDs.
Definition: layer_ids.h:504
LSEQ is a sequence (and therefore also a set) of PCB_LAYER_IDs.
Definition: layer_ids.h:465
PCB_LAYER_ID
A quick note on layer IDs:
Definition: layer_ids.h:65
static LSEQ dlg_layers()

References dlg_layers(), and getCheckBox().

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

◆ ImportSettingsFrom()

void PANEL_SETUP_LAYERS::ImportSettingsFrom ( BOARD aBoard)

Definition at line 744 of file panel_setup_layers.cpp.

745 {
746  BOARD* savedBoard = m_pcb;
747 
748  m_pcb = aBoard;
750 
751  m_pcb = savedBoard;
752 }
bool TransferDataToWindow() override
Information pertinent to a Pcbnew printed circuit board.
Definition: board.h:190

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 413 of file panel_setup_layers.cpp.

References GetUILayerMask(), and m_enabledLayers.

◆ setCopperLayerCheckBoxes()

void PANEL_SETUP_LAYERS::setCopperLayerCheckBoxes ( int  copperCount)
private

Definition at line 370 of file panel_setup_layers.cpp.

371 {
372  if( copperCount > 0 )
373  {
374  setLayerCheckBox( F_Cu, true );
375  --copperCount;
376  }
377 
378  if( copperCount > 0 )
379  {
380  setLayerCheckBox( B_Cu, true );
381  --copperCount;
382  }
383 
384  for( LSEQ seq = LSET::InternalCuMask().Seq(); seq; ++seq, --copperCount )
385  {
386  PCB_LAYER_ID layer = *seq;
387  bool state = copperCount > 0;
388 
389 #ifdef HIDE_INACTIVE_LAYERS
390  // This code hides inactive copper layers, or redisplays hidden layers which are now needed.
391  PANEL_SETUP_LAYERS_CTLs ctl = getCTLs( layer );
392 
393  // Inner layers should have a checkbox
394  wxASSERT( ctl.checkbox );
395 
396  ctl.name->Show( state );
397  ctl.checkbox->Show( state );
398  ctl.choice->Show( state );
399 #endif
400 
401  setLayerCheckBox( layer, state );
402  }
403 
404 #ifdef HIDE_INACTIVE_LAYERS
405  // Send an size event to force sizers to be updated,
406  // because the number of copper layers can have changed.
407  wxSizeEvent evt_size( m_LayersListPanel->GetSize() );
408  m_LayersListPanel->GetEventHandler()->ProcessEvent( evt_size );
409 #endif
410 }
wxScrolledWindow * m_LayersListPanel
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:710
LSEQ is a sequence (and therefore also a set) of PCB_LAYER_IDs.
Definition: layer_ids.h:465
PANEL_SETUP_LAYERS_CTLs getCTLs(LAYER_NUM aLayerNumber)
PCB_LAYER_ID
A quick note on layer IDs:
Definition: layer_ids.h:65
Definition: layer_ids.h:71
void setLayerCheckBox(LAYER_NUM layer, bool isChecked)
The 3 UI control pointers for a single board layer.

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 ( LAYER_NUM  layer,
bool  isChecked 
)
private

Definition at line 359 of file panel_setup_layers.cpp.

360 {
361  PANEL_SETUP_LAYERS_CTLs ctl = getCTLs( aLayer );
362 
363  if( !ctl.checkbox )
364  return;
365 
366  ctl.checkbox->SetValue( isChecked );
367 }
PANEL_SETUP_LAYERS_CTLs getCTLs(LAYER_NUM aLayerNumber)
The 3 UI control pointers for a single board layer.

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 258 of file panel_setup_layers.cpp.

259 {
260  for( int layer : { F_CrtYd, B_CrtYd, Edge_Cuts, Margin } )
261  setLayerCheckBox( layer, true );
262 }
void setLayerCheckBox(LAYER_NUM layer, bool isChecked)

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  }
PANEL_SETUP_BOARD_STACKUP * m_physicalStackup

References m_physicalStackup.

Referenced by PANEL_SETUP_BOARD_STACKUP::PANEL_SETUP_BOARD_STACKUP().

◆ setUserDefinedLayerCheckBoxes()

void PANEL_SETUP_LAYERS::setUserDefinedLayerCheckBoxes ( )
private

Definition at line 265 of file panel_setup_layers.cpp.

266 {
267  for( LSEQ seq = LSET::UserDefinedLayers().Seq(); seq; ++seq )
268  {
269  PCB_LAYER_ID layer = *seq;
270  bool state = m_pcb->IsLayerEnabled( layer );
271 
272 #ifdef HIDE_INACTIVE_LAYERS
273  // This code hides inactive copper layers, or redisplays hidden layers which are now needed.
274  PANEL_SETUP_LAYERS_CTLs ctl = getCTLs( layer );
275 
276  // All user-defined layers should have a checkbox
277  wxASSERT( ctl.checkbox );
278 
279  ctl.name->Show( state );
280  ctl.checkbox->Show( state );
281  ctl.choice->Show( state );
282 #endif
283 
284  setLayerCheckBox( layer, state );
285  }
286 
287 #ifdef HIDE_INACTIVE_LAYERS
288  // Send an size event to force sizers to be updated,
289  // because the number of copper layers can have changed.
290  wxSizeEvent evt_size( m_LayersListPanel->GetSize() );
291  m_LayersListPanel->GetEventHandler()->ProcessEvent( evt_size );
292 #endif
293 }
static LSET UserDefinedLayers()
Return a mask with all of the allowable user defined layers.
Definition: lset.cpp:856
wxScrolledWindow * m_LayersListPanel
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:493
LSEQ is a sequence (and therefore also a set) of PCB_LAYER_IDs.
Definition: layer_ids.h:465
PANEL_SETUP_LAYERS_CTLs getCTLs(LAYER_NUM aLayerNumber)
PCB_LAYER_ID
A quick note on layer IDs:
Definition: layer_ids.h:65
void setLayerCheckBox(LAYER_NUM layer, bool isChecked)
The 3 UI control pointers for a single board layer.

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 296 of file panel_setup_layers.cpp.

297 {
298  // Set all the board's layer names into the dialog by calling BOARD::GetLayerName(),
299  // which will call BOARD::GetStandardLayerName() for non-coppers.
300 
301  for( LSEQ seq = dlg_layers(); seq; ++seq )
302  {
303  PCB_LAYER_ID layer = *seq;
304  wxControl* ctl = getName( layer );
305 
306  if( ctl )
307  {
308  wxString lname = m_pcb->GetLayerName( layer );
309 
310  if( auto textCtl = dynamic_cast<wxTextCtrl*>( ctl ) )
311  textCtl->SetValue( lname ); // wxTextCtrl
312  else
313  ctl->SetLabel( lname ); // wxStaticText
314  }
315  }
316 }
const wxString GetLayerName(PCB_LAYER_ID aLayer) const
Return the name of a aLayer.
Definition: board.cpp:362
LSEQ is a sequence (and therefore also a set) of PCB_LAYER_IDs.
Definition: layer_ids.h:465
PCB_LAYER_ID
A quick note on layer IDs:
Definition: layer_ids.h:65
wxControl * getName(LAYER_NUM aLayer)
static LSEQ dlg_layers()

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

Referenced by TransferDataToWindow().

◆ showLayerTypes()

void PANEL_SETUP_LAYERS::showLayerTypes ( )
private

Definition at line 330 of file panel_setup_layers.cpp.

331 {
332  for( LSEQ seq = LSET::AllCuMask().Seq(); seq; ++seq )
333  {
334  PCB_LAYER_ID cu_layer = *seq;
335 
336  wxChoice* ctl = getChoice( cu_layer );
337  ctl->SetSelection( m_pcb->GetLayerType( cu_layer ) );
338  }
339 }
static LSET AllCuMask(int aCuLayerCount=MAX_CU_LAYERS)
Return a mask holding the requested number of Cu PCB_LAYER_IDs.
Definition: lset.cpp:750
wxChoice * getChoice(LAYER_NUM aLayer)
LSEQ is a sequence (and therefore also a set) of PCB_LAYER_IDs.
Definition: layer_ids.h:465
LAYER_T GetLayerType(PCB_LAYER_ID aLayer) const
Return the type of the copper layer given by aLayer.
Definition: board.cpp:396
PCB_LAYER_ID
A quick note on layer IDs:
Definition: layer_ids.h:65

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

Referenced by TransferDataToWindow().

◆ showSelectedLayerCheckBoxes()

void PANEL_SETUP_LAYERS::showSelectedLayerCheckBoxes ( LSET  enableLayerMask)
private

Definition at line 319 of file panel_setup_layers.cpp.

320 {
321  // The check boxes
322  for( LSEQ seq = dlg_layers(); seq; ++seq )
323  {
324  PCB_LAYER_ID layer = *seq;
325  setLayerCheckBox( layer, enabledLayers[layer] );
326  }
327 }
LSEQ is a sequence (and therefore also a set) of PCB_LAYER_IDs.
Definition: layer_ids.h:465
PCB_LAYER_ID
A quick note on layer IDs:
Definition: layer_ids.h:65
void setLayerCheckBox(LAYER_NUM layer, bool isChecked)
static LSEQ dlg_layers()

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 252 of file panel_setup_layers.cpp.

253 {
254  setCopperLayerCheckBoxes( aNumCopperLayers );
255 }
void setCopperLayerCheckBoxes(int copperCount)

References setCopperLayerCheckBoxes().

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

◆ testLayerNames()

bool PANEL_SETUP_LAYERS::testLayerNames ( )
private

Definition at line 619 of file panel_setup_layers.cpp.

620 {
621  std::vector<wxString> names;
622  wxTextCtrl* ctl;
623 
624  for( LSEQ seq = LSET::AllLayersMask().Seq(); seq; ++seq )
625  {
626  PCB_LAYER_ID layer = *seq;
627 
628  // we _can_ rely on m_enabledLayers being current here:
629 
630  if( !m_enabledLayers[layer] )
631  continue;
632 
633  wxString name = GetLayerName( layer );
634 
635  ctl = (wxTextCtrl*) getName( layer );
636 
637  // Check name for legality:
638  // 1) Cannot be blank.
639  // 2) Cannot have blanks.
640  // 3) Cannot have " chars
641  // 4) Cannot be 'signal'
642  // 5) Must be unique.
643  // 6) Cannot have illegal chars in filenames ( some filenames are built from layer names )
644  // like : % $ \ " / :
645  wxString badchars = wxFileName::GetForbiddenChars( wxPATH_DOS );
646  badchars.Append( '%' );
647 
648  if( !name )
649  {
650  m_parentDialog->SetError( _( "Layer must have a name." ), this, ctl );
651  return false;
652  }
653 
654  if( hasOneOf( name, badchars ) )
655  {
656  wxString msg = wxString::Format(_( "%s are forbidden in layer names." ), badchars );
657  m_parentDialog->SetError( msg, this, ctl );
658  return false;
659  }
660 
661  if( name == wxT( "signal" ) )
662  {
663  m_parentDialog->SetError( _( "Layer name \"signal\" is reserved." ), this, ctl );
664  return false;
665  }
666 
667  for( const wxString& existingName : names )
668  {
669  if( name == existingName )
670  {
671  wxString msg = wxString::Format(_( "Layer name '%s' already in use." ), name );
672  m_parentDialog->SetError( msg, this, ctl );
673  return false;
674  }
675  }
676 
677  names.push_back( name );
678  }
679 
680  return true;
681 }
static bool hasOneOf(const wxString &str, const wxString &chars)
void SetError(const wxString &aMessage, const wxString &aPageName, int aCtrlId, int aRow=-1, int aCol=-1)
PAGED_DIALOG * m_parentDialog
#define _(s)
static LSET AllLayersMask()
Definition: lset.cpp:787
LSEQ is a sequence (and therefore also a set) of PCB_LAYER_IDs.
Definition: layer_ids.h:465
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
const char * name
Definition: DXF_plotter.cpp:56
PCB_LAYER_ID
A quick note on layer IDs:
Definition: layer_ids.h:65
wxControl * getName(LAYER_NUM aLayer)
wxString GetLayerName(LAYER_NUM layer)

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 440 of file panel_setup_layers.cpp.

441 {
442  if( !testLayerNames() )
443  return false;
444 
445  wxASSERT( m_physicalStackup );
446 
447  // Make sure we have the latest copper layer count
449 
450  wxString msg;
451  bool modified = false;
452 
453  // Check for removed layers with items which will get deleted from the board.
454  LSEQ removedLayers = getRemovedLayersWithItems();
455 
456  // Check for non-copper layers in use in footprints, and therefore not removable.
457  LSEQ notremovableLayers = getNonRemovableLayers();
458 
459  if( !notremovableLayers.empty() )
460  {
461  for( unsigned int ii = 0; ii < notremovableLayers.size(); ii++ )
462  msg << m_pcb->GetLayerName( notremovableLayers[ii] ) << "\n";
463 
464  if( !IsOK( this, wxString::Format( _( "Footprints have some items on removed layers:\n"
465  "%s\n"
466  "These items will be no longer accessible\n"
467  "Do you wish to continue?" ), msg ) ) )
468  {
469  return false;
470  }
471  }
472 
473  if( !removedLayers.empty()
474  && !IsOK( this, _( "Items have been found on removed layers. This operation will "
475  "delete all items from removed layers and cannot be undone.\n"
476  "Do you wish to continue?" ) ) )
477  {
478  return false;
479  }
480 
481  // Delete all objects on layers that have been removed. Leaving them in copper layers
482  // can (will?) result in DRC errors and it pollutes the board file with cruft.
483  bool hasRemovedBoardItems = false;
484 
485  if( !removedLayers.empty() )
486  {
487  PCB_LAYER_COLLECTOR collector;
488 
489  for( PCB_LAYER_ID layer_id : removedLayers )
490  {
491  collector.SetLayerId( layer_id );
493 
494  // Bye-bye items on removed layer.
495  for( int i = 0; i < collector.GetCount(); i++ )
496  {
497  BOARD_ITEM* item = collector[i];
498  LSET layers = item->GetLayerSet();
499 
500  layers.reset( layer_id );
501  hasRemovedBoardItems = true;
502  modified = true;
503 
504  if( layers.any() )
505  {
506  item->SetLayerSet( layers );
507  }
508  else
509  {
510  m_pcb->Remove( item );
511  delete item;
512  }
513  }
514  }
515  }
516 
518 
520  {
522 
523  /* Ensure enabled layers are also visible
524  * This is mainly to avoid mistakes if some enabled
525  * layers are not visible when exiting this dialog
526  */
528 
529  modified = true;
530  }
531 
532  for( LSEQ seq = LSET::AllLayersMask().Seq(); seq; ++seq )
533  {
534  PCB_LAYER_ID layer = *seq;
535 
536  if( m_enabledLayers[layer] )
537  {
538  const wxString& newLayerName = GetLayerName( layer );
539 
540  if( m_pcb->GetLayerName( layer ) != newLayerName )
541  {
542  m_pcb->SetLayerName( layer, newLayerName );
543  modified = true;
544  }
545 
546  // Only copper layers have a definable type.
547  if( LSET::AllCuMask().Contains( layer ) )
548  {
549  LAYER_T t = (LAYER_T) getLayerTypeIndex( layer );
550 
551  if( m_pcb->GetLayerType( layer ) != t )
552  {
553  m_pcb->SetLayerType( layer, t );
554  modified = true;
555  }
556  }
557  }
558  }
559 
560  for( LSEQ seq = LSET::UserDefinedLayers().Seq(); seq; ++seq )
561  {
562  PCB_LAYER_ID layer = *seq;
563  const wxString& newLayerName = GetLayerName( layer );
564 
565  if( m_enabledLayers[ layer ] && m_pcb->GetLayerName( layer ) != newLayerName )
566  {
567  m_pcb->SetLayerName( layer, newLayerName );
568  modified = true;
569  }
570  }
571 
572  // If some board items are deleted: Rebuild the connectivity,
573  // because it is likely some tracks and vias were removed
574  if( hasRemovedBoardItems )
575  {
576  // Rebuild list of nets (full ratsnest rebuild)
578  m_frame->Compile_Ratsnest( true );
579  }
580 
581  if( modified )
582  m_frame->OnModify();
583 
584  return true;
585 }
static LSET UserDefinedLayers()
Return a mask with all of the allowable user defined layers.
Definition: lset.cpp:856
static LSET AllCuMask(int aCuLayerCount=MAX_CU_LAYERS)
Return a mask holding the requested number of Cu PCB_LAYER_IDs.
Definition: lset.cpp:750
LSEQ getNonRemovableLayers()
Return a list of layers in use in footprints, and therefore not removable.
void OnModify() override
Must be called after a board change to set the modified flag.
static const KICAD_T BoardLevelItems[]
A scan list for all primary board items, omitting items which are subordinate to a FOOTPRINT,...
Definition: collectors.h:278
const wxString GetLayerName(PCB_LAYER_ID aLayer) const
Return the name of a aLayer.
Definition: board.cpp:362
void Compile_Ratsnest(bool aDisplayStatus)
Create the entire board ratsnest.
Definition: ratsnest.cpp:40
A base class for any item which can be embedded within the BOARD container class, and therefore insta...
Definition: board_item.h:49
void SyncCopperLayers(int aNumCopperLayers)
Called when switching to this tab to make sure that any changes to the copper layer count made on the...
void Collect(BOARD_ITEM *aBoard, const KICAD_T aScanList[])
Test a BOARD_ITEM using this class's Inspector method, which does the collection.
Definition: collectors.cpp:628
LSET GetEnabledLayers() const
A proxy function that calls the corresponding function in m_BoardSettings.
Definition: board.cpp:467
Collect all BOARD_ITEM objects on a given layer.
Definition: collectors.h:642
bool SetLayerType(PCB_LAYER_ID aLayer, LAYER_T aLayerType)
Change the type of the layer given by aLayer.
Definition: board.cpp:410
virtual void SetLayerSet(LSET aLayers)
Definition: board_item.h:146
void SetLayerId(PCB_LAYER_ID aLayerId)
Definition: collectors.h:650
int GetCount() const
Return the number of objects in the list.
Definition: collector.h:82
LSET is a set of PCB_LAYER_IDs.
Definition: layer_ids.h:504
void SetVisibleLayers(LSET aLayerMask)
A proxy function that calls the correspondent function in m_BoardSettings changes the bit-mask of vis...
Definition: board.cpp:499
bool SetLayerName(PCB_LAYER_ID aLayer, const wxString &aLayerName)
Changes the name of the layer given by aLayer.
Definition: board.cpp:378
#define _(s)
static LSET AllLayersMask()
Definition: lset.cpp:787
void BuildConnectivity()
Build or rebuild the board connectivity database for the board, especially the list of connected item...
Definition: board.cpp:137
LSEQ is a sequence (and therefore also a set) of PCB_LAYER_IDs.
Definition: layer_ids.h:465
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
LAYER_T GetLayerType(PCB_LAYER_ID aLayer) const
Return the type of the copper layer given by aLayer.
Definition: board.cpp:396
PCB_EDIT_FRAME * m_frame
PCB_LAYER_ID
A quick note on layer IDs:
Definition: layer_ids.h:65
wxString GetLayerName(LAYER_NUM layer)
void Remove(BOARD_ITEM *aBoardItem, REMOVE_MODE aMode=REMOVE_MODE::NORMAL) override
Removes an item from the container.
Definition: board.cpp:710
int getLayerTypeIndex(LAYER_NUM layer)
LAYER_T
The allowed types of layers, same as Specctra DSN spec.
Definition: board.h:68
bool IsOK(wxWindow *aParent, const wxString &aMessage)
Display a yes/no dialog with aMessage and returns the user response.
Definition: confirm.cpp:323
void SetEnabledLayers(LSET aLayerMask)
A proxy function that calls the correspondent function in m_BoardSettings.
Definition: board.cpp:487
virtual LSET GetLayerSet() const
Return a std::bitset of all layers on which the item physically resides.
Definition: board_item.h:145
LSEQ getRemovedLayersWithItems()
Return a list of layers removed from the board that contain items.
PANEL_SETUP_BOARD_STACKUP * m_physicalStackup

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

◆ TransferDataToWindow()

bool PANEL_SETUP_LAYERS::TransferDataToWindow ( )
overrideprivate

Definition at line 232 of file panel_setup_layers.cpp.

233 {
235 
236  // Rescue may be enabled, but should not be shown in this dialog
237  m_enabledLayers.reset( Rescue );
238 
240 
243 
244  showLayerTypes();
247 
248  return true;
249 }
LSET GetEnabledLayers() const
A proxy function that calls the corresponding function in m_BoardSettings.
Definition: board.cpp:467
void setCopperLayerCheckBoxes(int copperCount)
int GetCopperLayerCount() const
Definition: board.cpp:455
void showSelectedLayerCheckBoxes(LSET enableLayerMask)

References BOARD::GetCopperLayerCount(), BOARD::GetEnabledLayers(), m_enabledLayers, m_pcb, Rescue, setCopperLayerCheckBoxes(), setMandatoryLayerCheckBoxes(), setUserDefinedLayerCheckBoxes(), showBoardLayerNames(), showLayerTypes(), and showSelectedLayerCheckBoxes().

Referenced by ImportSettingsFrom().

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: