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 ()
 

More...
 
wxString GetLayerName (LAYER_NUM layer)
 

More...
 

Protected Attributes

wxChoice * m_PresetsChoice
 
wxStaticText * m_staticTextCopperLayers
 
wxChoice * m_CopperLayersChoice
 
wxButton * m_addUserDefinedLayerButton
 
wxStaticLine * m_staticline2
 
wxScrolledWindow * m_LayersListPanel
 
wxFlexGridSizer * m_LayerListFlexGridSizer
 
wxCheckBox * m_CrtYdFrontCheckBox
 
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
 
wxCheckBox * m_CrtYdBackCheckBox
 
wxTextCtrl * m_CrtYdBackName
 
wxStaticText * m_CrtYdBackStaticText
 
wxCheckBox * m_PCBEdgesCheckBox
 
wxTextCtrl * m_PCBEdgesName
 
wxStaticText * m_PCBEdgesStaticText
 
wxCheckBox * m_MarginCheckBox
 
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 showCopperChoice (int copperCount)
 
void showBoardLayerNames ()
 
void showSelectedLayerCheckBoxes (LSET enableLayerMask)
 
void showLayerTypes ()
 
void showPresets (LSET enabledLayerMask)
 
int getLayerTypeIndex (LAYER_NUM layer)
 
void OnCheckBox (wxCommandEvent &event) override
 
void DenyChangeCheckBox (wxCommandEvent &event) override
 
void OnPresetsChoice (wxCommandEvent &event) override
 
void OnCopperLayersChoice (wxCommandEvent &event) override
 
bool TransferDataToWindow () override
 
bool TransferDataFromWindow () override
 
virtual void addUserDefinedLayer (wxCommandEvent &aEvent) override
 
virtual void onUpdateAddUserDefinedLayer (wxUpdateUIEvent &event) 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...
 
wxArrayString getAvailableUserDefinedLayers ()
 
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_Parent
 
PCB_EDIT_FRAMEm_frame
 
BOARDm_pcb
 
LSET m_enabledLayers
 

Detailed Description

Definition at line 55 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 144 of file panel_setup_layers.cpp.

144  :
145  PANEL_SETUP_LAYERS_BASE( aParent->GetTreebook() ),
146  m_Parent( aParent ), m_frame( aFrame )
147 {
148  m_pcb = aFrame->GetBoard();
149 }
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_Parent
wxTreebook * GetTreebook()
Definition: paged_dialog.h:50
PCB_EDIT_FRAME * m_frame
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 878 of file panel_setup_layers.cpp.

879 {
880  LSEQ seq;
881  wxArrayString availableUserDefinedLayers = getAvailableUserDefinedLayers();
882 
883  wxCHECK( !availableUserDefinedLayers.IsEmpty(), /* void */ );
884 
885  wxSingleChoiceDialog dlg( this, _( "Select user defined layer to add to board layer set" ),
886  _( "Select Layer" ), availableUserDefinedLayers );
887 
888  if( dlg.ShowModal() == wxID_CANCEL || dlg.GetStringSelection().IsEmpty() )
889  return;
890 
891  for( seq = LSET::UserDefinedLayers().Seq(); seq; ++seq )
892  {
893  if( LayerName( *seq ) == dlg.GetStringSelection() )
894  break;
895  }
896 
897  wxCHECK( *seq >= User_1 && *seq <= User_9, /* void */ );
898 
899  LSET newLayer( *seq );
900 
901  m_enabledLayers |= newLayer;
902 
903  PANEL_SETUP_LAYERS_CTLs ctl = getCTLs( *seq );
904 
905  wxTextCtrl* textCtrl = dynamic_cast<wxTextCtrl*>( ctl.name );
906 
907  wxCHECK( textCtrl, /* void */ );
908  textCtrl->ChangeValue( LSET::Name( *seq ) );
909  ctl.name->Show( true );
910  ctl.checkbox->Show( true );
911  ctl.choice->Show( true );
912 
913  wxSizeEvent evt_size( m_LayersListPanel->GetSize() );
914  m_LayersListPanel->GetEventHandler()->ProcessEvent( evt_size );
915 
916  setLayerCheckBox( *seq, true );
917 }
static LSET UserDefinedLayers()
Return a mask with all of the allowable user defined layers.
Definition: lset.cpp:848
wxScrolledWindow * m_LayersListPanel
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:410
LSET is a set of PCB_LAYER_IDs.
static const wxChar * Name(PCB_LAYER_ID aLayerId)
Return the fixed name association with aLayerId.
Definition: lset.cpp:81
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.
wxArrayString getAvailableUserDefinedLayers()
PANEL_SETUP_LAYERS_CTLs getCTLs(LAYER_NUM aLayerNumber)
#define _(s)
Definition: 3d_actions.cpp:33
void setLayerCheckBox(LAYER_NUM layer, bool isChecked)
Holds the 3 UI control pointers for a single board layer.

References _, PANEL_SETUP_LAYERS_CTLs::checkbox, PANEL_SETUP_LAYERS_CTLs::choice, getAvailableUserDefinedLayers(), getCTLs(), LayerName(), m_enabledLayers, PANEL_SETUP_LAYERS_BASE::m_LayersListPanel, PANEL_SETUP_LAYERS_CTLs::name, LSET::Name(), LSET::Seq(), setLayerCheckBox(), 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
aWorkingBoard= Currently loaded PCB
aImportedBoard= PCB imported to get settings from
Returns
bool - Approval to delete inner copper if needed

Definition at line 844 of file panel_setup_layers.cpp.

845 {
846  /*
847  * This function warns users if they are going to delete inner copper layers because
848  * they're importing settings from a board with less copper layers than the board
849  * already loaded. We want to return "true" as default on the assumption no layer will
850  * actually be deleted.
851  */
852  bool okToDeleteCopperLayers = true;
853 
854  // Get the number of copper layers in the loaded board and the "import settings" board
855  int currNumLayers = aWorkingBoard->GetCopperLayerCount();
856  int newNumLayers = aImportedBoard->GetCopperLayerCount();
857 
858  if( newNumLayers < currNumLayers )
859  {
860  wxString msg = wxString::Format( _( "Imported settings have fewer copper layers than "
861  "the current board (%i instead of %i).\n\n"
862  "Continue and delete the extra inner copper layers "
863  "from the current board?" ),
864  newNumLayers,
865  currNumLayers );
866 
867  wxMessageDialog dlg( this, msg, _( "Inner Layers To Be Deleted" ),
868  wxICON_WARNING | wxSTAY_ON_TOP | wxYES | wxNO | wxNO_DEFAULT );
869 
870  if( wxID_NO == dlg.ShowModal() )
871  okToDeleteCopperLayers = false;
872  }
873 
874  return okToDeleteCopperLayers;
875 }
void Format(OUTPUTFORMATTER *out, int aNestLevel, int aCtl, CPTREE &aTree)
Function Format outputs a PTREE into s-expression format via an OUTPUTFORMATTER derivative.
Definition: ptree.cpp:201
#define _(s)
Definition: 3d_actions.cpp:33
int GetCopperLayerCount() const

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

465 {
466  wxObject* source = event.GetEventObject();
467  wxString msg;
468 
469  for( LSEQ seq = LSET::AllCuMask().Seq(); seq; ++seq )
470  {
471  wxCheckBox* copper = getCheckBox( *seq );
472 
473  if( source == copper )
474  {
475  wxString controlLabel = m_staticTextCopperLayers->GetLabel();
476  // Knock the ':' off the end
477  controlLabel = controlLabel.substr( 0, controlLabel.size() - 1 );
478 
479  msg.Printf( _( "Use the \"%s\" control to change the number of copper layers." ),
480  controlLabel );
481  DisplayError( this, msg );
482 
483  copper->SetValue( true );
484  return;
485  }
486  }
487 
488  for( int layer : { F_CrtYd, B_CrtYd, Edge_Cuts, Margin } )
489  {
490  wxCheckBox* mandatory = getCheckBox( layer );
491 
492  if( source == mandatory )
493  {
494  msg.Printf( _( "The %s layer is mandatory." ), GetLayerName( layer ) );
495  DisplayError( this, msg );
496  mandatory->SetValue( true );
497  return;
498  }
499  }
500 }
static LSET AllCuMask(int aCuLayerCount=MAX_CU_LAYERS)
Return a mask holding the requested number of Cu PCB_LAYER_IDs.
Definition: lset.cpp:749
void DisplayError(wxWindow *aParent, const wxString &aText, int aDisplayTime)
Display an error or warning message box with aMessage.
Definition: confirm.cpp:240
wxCheckBox * getCheckBox(LAYER_NUM aLayer)
LSEQ is a sequence (and therefore also a set) of PCB_LAYER_IDs.
#define _(s)
Definition: 3d_actions.cpp:33
wxString GetLayerName(LAYER_NUM layer)

References _, LSET::AllCuMask(), B_CrtYd, DisplayError(), Edge_Cuts, F_CrtYd, getCheckBox(), GetLayerName(), PANEL_SETUP_LAYERS_BASE::m_staticTextCopperLayers, and Margin.

◆ getAvailableUserDefinedLayers()

wxArrayString PANEL_SETUP_LAYERS::getAvailableUserDefinedLayers ( )
private

Definition at line 928 of file panel_setup_layers.cpp.

929 {
930  wxArrayString availableUserDefinedLayers;
931 
932  for( LSEQ seq = LSET::UserDefinedLayers().Seq(); seq; ++seq )
933  {
934  wxCheckBox* checkBox = getCheckBox( *seq );
935 
936  if( checkBox && checkBox->IsShown() )
937  continue;
938 
939  availableUserDefinedLayers.Add( LayerName( *seq ) );
940  }
941 
942  return availableUserDefinedLayers;
943 }
static LSET UserDefinedLayers()
Return a mask with all of the allowable user defined layers.
Definition: lset.cpp:848
wxCheckBox * getCheckBox(LAYER_NUM aLayer)
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.

References getCheckBox(), LayerName(), and LSET::UserDefinedLayers().

Referenced by addUserDefinedLayer(), and onUpdateAddUserDefinedLayer().

◆ getCheckBox()

wxCheckBox * PANEL_SETUP_LAYERS::getCheckBox ( LAYER_NUM  aLayer)
private

Definition at line 237 of file panel_setup_layers.cpp.

238 {
239  return getCTLs( aLayer ).checkbox;
240 }
PANEL_SETUP_LAYERS_CTLs getCTLs(LAYER_NUM aLayerNumber)

References PANEL_SETUP_LAYERS_CTLs::checkbox, and getCTLs().

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

◆ getChoice()

wxChoice * PANEL_SETUP_LAYERS::getChoice ( LAYER_NUM  aLayer)
private

Definition at line 243 of file panel_setup_layers.cpp.

244 {
245  return (wxChoice*) getCTLs( aLayer ).choice;
246 }
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 152 of file panel_setup_layers.cpp.

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

Returns
the layer name within the UI wxTextCtrl

Definition at line 685 of file panel_setup_layers.cpp.

686 {
687  wxControl* control = getName( aLayer );
688 
689  if( auto textCtl = dynamic_cast<wxTextCtrl*>( control ) )
690  return textCtl->GetValue().Trim();
691  else
692  return control->GetLabel();
693 }
wxControl * getName(LAYER_NUM aLayer)

References getName().

Referenced by DenyChangeCheckBox(), testLayerNames(), and TransferDataFromWindow().

◆ getLayerTypeIndex()

int PANEL_SETUP_LAYERS::getLayerTypeIndex ( LAYER_NUM  layer)
private

Definition at line 677 of file panel_setup_layers.cpp.

678 {
679  wxChoice* ctl = getChoice( aLayer );
680  int ret = ctl->GetCurrentSelection(); // Indices must have same sequence as LAYER_T
681  return ret;
682 }
wxChoice * getChoice(LAYER_NUM aLayer)

References getChoice().

Referenced by TransferDataFromWindow().

◆ getName()

wxControl * PANEL_SETUP_LAYERS::getName ( LAYER_NUM  aLayer)
private

Definition at line 231 of file panel_setup_layers.cpp.

232 {
233  return getCTLs( aLayer ).name;
234 }
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 801 of file panel_setup_layers.cpp.

802 {
803  // Build the list of non-copper layers in use in footprints.
804  LSEQ inUseLayers;
805  LSET newLayers = GetUILayerMask();
806  LSET curLayers = m_pcb->GetEnabledLayers();
807 
808  if( newLayers == curLayers ) // Return an empty list if no change
809  return inUseLayers;
810 
811  PCB_LAYER_COLLECTOR collector;
812  LSEQ newLayerSeq = newLayers.Seq();
813 
814  for( auto layer_id : curLayers.Seq() )
815  {
816  if( IsCopperLayer( layer_id ) ) // Copper layers are not taken into account here
817  continue;
818 
819  if( !alg::contains( newLayerSeq, layer_id ) )
820  {
821  collector.SetLayerId( layer_id );
823 
824  if( collector.GetCount() != 0 )
825  inUseLayers.push_back( layer_id );
826  }
827  }
828 
829  return inUseLayers;
830 }
void Collect(BOARD_ITEM *aBoard, const KICAD_T aScanList[])
Tests a BOARD_ITEM using this class's Inspector method, which does the collection.
Definition: collectors.cpp:639
LSET GetEnabledLayers() const
A proxy function that calls the corresponding function in m_BoardSettings Returns a bit-mask of all t...
Collect all BOARD_ITEM objects on a given layer.
Definition: collectors.h:655
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:410
void SetLayerId(PCB_LAYER_ID aLayerId)
Definition: collectors.h:665
int GetCount() const
Function GetCount returns the number of objects in the list.
Definition: collector.h:104
LSET is a set of PCB_LAYER_IDs.
bool contains(const _Container &__container, _Value __value)
Returns true if the container contains the given value.
Definition: kicad_algo.h:81
LSEQ is a sequence (and therefore also a set) of PCB_LAYER_IDs.
static const KICAD_T ModuleItems[]
A scan list for primary module items.
Definition: collectors.h:308
bool IsCopperLayer(LAYER_NUM aLayerId)
Tests whether a layer is a copper layer.

References PCB_LAYER_COLLECTOR::Collect(), alg::contains(), COLLECTOR::GetCount(), BOARD::GetEnabledLayers(), GetUILayerMask(), IsCopperLayer(), m_pcb, GENERAL_COLLECTOR::ModuleItems, 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 773 of file panel_setup_layers.cpp.

774 {
775  LSEQ removedLayers;
776  LSET newLayers = GetUILayerMask();
777  LSET curLayers = m_pcb->GetEnabledLayers();
778 
779  if( newLayers == curLayers ) // Return an empty list if no change
780  return removedLayers;
781 
782  PCB_LAYER_COLLECTOR collector;
783  LSEQ newLayerSeq = newLayers.Seq();
784 
785  for( PCB_LAYER_ID layer_id : curLayers.Seq() )
786  {
787  if( !alg::contains( newLayerSeq, layer_id ) )
788  {
789  collector.SetLayerId( layer_id );
791 
792  if( collector.GetCount() != 0 )
793  removedLayers.push_back( layer_id );
794  }
795  }
796 
797  return removedLayers;
798 }
static const KICAD_T BoardLevelItems[]
A scan list for all primary board items, omitting items which are subordinate to a MODULE,...
Definition: collectors.h:283
void Collect(BOARD_ITEM *aBoard, const KICAD_T aScanList[])
Tests a BOARD_ITEM using this class's Inspector method, which does the collection.
Definition: collectors.cpp:639
LSET GetEnabledLayers() const
A proxy function that calls the corresponding function in m_BoardSettings Returns a bit-mask of all t...
Collect all BOARD_ITEM objects on a given layer.
Definition: collectors.h:655
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:410
void SetLayerId(PCB_LAYER_ID aLayerId)
Definition: collectors.h:665
int GetCount() const
Function GetCount returns the number of objects in the list.
Definition: collector.h:104
PCB_LAYER_ID
A quick note on layer IDs:
LSET is a set of PCB_LAYER_IDs.
bool contains(const _Container &__container, _Value __value)
Returns true if the container contains the given value.
Definition: kicad_algo.h:81
LSEQ is a sequence (and therefore also a set) of PCB_LAYER_IDs.

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 selected layer mask within the UI checkboxes

Definition at line 390 of file panel_setup_layers.cpp.

391 {
392  LSET layerMaskResult;
393 
394  for( LSEQ seq = dlg_layers(); seq; ++seq )
395  {
396  PCB_LAYER_ID layer = *seq;
397  wxCheckBox* ctl = getCheckBox( layer );
398 
399  if( ctl->GetValue() )
400  layerMaskResult.set( layer );
401  }
402 
403  return layerMaskResult;
404 }
wxCheckBox * getCheckBox(LAYER_NUM aLayer)
PCB_LAYER_ID
A quick note on layer IDs:
LSET is a set of PCB_LAYER_IDs.
LSEQ is a sequence (and therefore also a set) of PCB_LAYER_IDs.
static LSEQ dlg_layers()

References dlg_layers(), and getCheckBox().

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

◆ ImportSettingsFrom()

void PANEL_SETUP_LAYERS::ImportSettingsFrom ( BOARD aBoard)

Definition at line 833 of file panel_setup_layers.cpp.

834 {
835  BOARD* savedBoard = m_pcb;
836 
837  m_pcb = aBoard;
839 
840  m_pcb = savedBoard;
841 }
bool TransferDataToWindow() override
Information pertinent to a Pcbnew printed circuit board.
Definition: class_board.h:186

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

457 {
459 
461 }
void showPresets(LSET enabledLayerMask)

References GetUILayerMask(), m_enabledLayers, and showPresets().

◆ OnCopperLayersChoice()

void PANEL_SETUP_LAYERS::OnCopperLayersChoice ( wxCommandEvent &  event)
overrideprivatevirtual

◆ OnPresetsChoice()

void PANEL_SETUP_LAYERS::OnPresetsChoice ( wxCommandEvent &  event)
overrideprivatevirtual

Reimplemented from PANEL_SETUP_LAYERS_BASE.

Definition at line 503 of file panel_setup_layers.cpp.

504 {
505  int presetNdx = m_PresetsChoice->GetCurrentSelection();
506 
507  if( presetNdx <= 0 ) // the Custom setting controls nothing.
508  return;
509 
510  if( presetNdx < (int) arrayDim(presets) )
511  {
512  m_enabledLayers = presets[ presetNdx ];
513  LSET copperSet = m_enabledLayers & LSET::AllCuMask();
514  int copperCount = copperSet.count();
515 
516  showCopperChoice( copperCount );
518  setCopperLayerCheckBoxes( copperCount );
519  }
520 
521  // Ensure mandatory layers are activated
523 }
static LSET AllCuMask(int aCuLayerCount=MAX_CU_LAYERS)
Return a mask holding the requested number of Cu PCB_LAYER_IDs.
Definition: lset.cpp:749
void showCopperChoice(int copperCount)
void setCopperLayerCheckBoxes(int copperCount)
LSET is a set of PCB_LAYER_IDs.
static const LSET presets[]
constexpr std::size_t arrayDim(T const (&)[N]) noexcept
Definition: macros.h:121
void showSelectedLayerCheckBoxes(LSET enableLayerMask)

References LSET::AllCuMask(), arrayDim(), m_enabledLayers, PANEL_SETUP_LAYERS_BASE::m_PresetsChoice, presets, setCopperLayerCheckBoxes(), setMandatoryLayerCheckBoxes(), showCopperChoice(), and showSelectedLayerCheckBoxes().

◆ onUpdateAddUserDefinedLayer()

void PANEL_SETUP_LAYERS::onUpdateAddUserDefinedLayer ( wxUpdateUIEvent &  event)
overrideprivatevirtual

Reimplemented from PANEL_SETUP_LAYERS_BASE.

Definition at line 920 of file panel_setup_layers.cpp.

921 {
922  wxArrayString availableUserDefinedLayers = getAvailableUserDefinedLayers();
923 
924  event.Enable( m_PresetsChoice->GetSelection() == 0 && !availableUserDefinedLayers.IsEmpty() );
925 }
wxArrayString getAvailableUserDefinedLayers()

References getAvailableUserDefinedLayers(), and PANEL_SETUP_LAYERS_BASE::m_PresetsChoice.

◆ setCopperLayerCheckBoxes()

void PANEL_SETUP_LAYERS::setCopperLayerCheckBoxes ( int  copperCount)
private

Definition at line 415 of file panel_setup_layers.cpp.

416 {
417  if( copperCount > 0 )
418  {
419  setLayerCheckBox( F_Cu, true );
420  --copperCount;
421  }
422 
423  if( copperCount > 0 )
424  {
425  setLayerCheckBox( B_Cu, true );
426  --copperCount;
427  }
428 
429  for( LSEQ seq = LSET::InternalCuMask().Seq(); seq; ++seq, --copperCount )
430  {
431  PCB_LAYER_ID layer = *seq;
432  bool state = copperCount > 0;
433 
434 #ifdef HIDE_INACTIVE_LAYERS
435  // This code hides non-active copper layers, or redisplays hidden
436  // layers which are now needed.
437  PANEL_SETUP_LAYERS_CTLs ctl = getCTLs( layer );
438 
439  ctl.name->Show( state );
440  ctl.checkbox->Show( state );
441  ctl.choice->Show( state );
442 #endif
443 
444  setLayerCheckBox( layer, state );
445  }
446 
447 #ifdef HIDE_INACTIVE_LAYERS
448  // Send an size event to force sizers to be updated,
449  // because the number of copper layers can have changed.
450  wxSizeEvent evt_size( m_LayersListPanel->GetSize() );
451  m_LayersListPanel->GetEventHandler()->ProcessEvent( evt_size );
452 #endif
453 }
wxScrolledWindow * m_LayersListPanel
PCB_LAYER_ID
A quick note on layer IDs:
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:709
LSEQ is a sequence (and therefore also a set) of PCB_LAYER_IDs.
PANEL_SETUP_LAYERS_CTLs getCTLs(LAYER_NUM aLayerNumber)
void setLayerCheckBox(LAYER_NUM layer, bool isChecked)
Holds 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 OnCopperLayersChoice(), OnPresetsChoice(), and TransferDataToWindow().

◆ setLayerCheckBox()

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

Definition at line 407 of file panel_setup_layers.cpp.

408 {
409  PANEL_SETUP_LAYERS_CTLs ctl = getCTLs( aLayer );
410 
411  ctl.checkbox->SetValue( isChecked );
412 }
PANEL_SETUP_LAYERS_CTLs getCTLs(LAYER_NUM aLayerNumber)
Holds 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 270 of file panel_setup_layers.cpp.

271 {
272  for( int layer : { F_CrtYd, B_CrtYd, Edge_Cuts, Margin } )
273  setLayerCheckBox( layer, true );
274 }
void setLayerCheckBox(LAYER_NUM layer, bool isChecked)

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

Referenced by OnPresetsChoice(), and TransferDataToWindow().

◆ setUserDefinedLayerCheckBoxes()

void PANEL_SETUP_LAYERS::setUserDefinedLayerCheckBoxes ( )
private

Definition at line 277 of file panel_setup_layers.cpp.

278 {
279  for( LSEQ seq = LSET::UserDefinedLayers().Seq(); seq; ++seq )
280  {
281  PCB_LAYER_ID layer = *seq;
282  bool state = m_pcb->IsLayerEnabled( layer );
283 
284 #ifdef HIDE_INACTIVE_LAYERS
285  // This code hides non-active copper layers, or redisplays hidden
286  // layers which are now needed.
287  PANEL_SETUP_LAYERS_CTLs ctl = getCTLs( layer );
288 
289  ctl.name->Show( state );
290  ctl.checkbox->Show( state );
291  ctl.choice->Show( state );
292 #endif
293 
294  setLayerCheckBox( layer, state );
295  }
296 
297 #ifdef HIDE_INACTIVE_LAYERS
298  // Send an size event to force sizers to be updated,
299  // because the number of copper layers can have changed.
300  wxSizeEvent evt_size( m_LayersListPanel->GetSize() );
301  m_LayersListPanel->GetEventHandler()->ProcessEvent( evt_size );
302 #endif
303 }
static LSET UserDefinedLayers()
Return a mask with all of the allowable user defined layers.
Definition: lset.cpp:848
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: class_board.h:480
PCB_LAYER_ID
A quick note on layer IDs:
LSEQ is a sequence (and therefore also a set) of PCB_LAYER_IDs.
PANEL_SETUP_LAYERS_CTLs getCTLs(LAYER_NUM aLayerNumber)
void setLayerCheckBox(LAYER_NUM layer, bool isChecked)
Holds 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 327 of file panel_setup_layers.cpp.

328 {
329  // Set all the board's layer names into the dialog by calling BOARD::GetLayerName(),
330  // which will call BOARD::GetStandardLayerName() for non-coppers.
331 
332  for( LSEQ seq = dlg_layers(); seq; ++seq )
333  {
334  PCB_LAYER_ID layer = *seq;
335  wxControl* ctl = getName( layer );
336 
337  if( ctl )
338  {
339  wxString lname = m_pcb->GetLayerName( layer );
340 
341  if( auto textCtl = dynamic_cast<wxTextCtrl*>( ctl ) )
342  textCtl->SetValue( lname ); // wxTextCtrl
343  else
344  ctl->SetLabel( lname ); // wxStaticText
345  }
346  }
347 }
const wxString GetLayerName(PCB_LAYER_ID aLayer) const
Return the name of a aLayer.
PCB_LAYER_ID
A quick note on layer IDs:
LSEQ is a sequence (and therefore also a set) of PCB_LAYER_IDs.
wxControl * getName(LAYER_NUM aLayer)
static LSEQ dlg_layers()

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

Referenced by TransferDataToWindow().

◆ showCopperChoice()

void PANEL_SETUP_LAYERS::showCopperChoice ( int  copperCount)
private

Definition at line 306 of file panel_setup_layers.cpp.

307 {
308  if( copperCount > MAX_CU_LAYERS )
309  copperCount = MAX_CU_LAYERS;
310 
311  if( copperCount < 2 )
312  copperCount = 2;
313 
314  for( int lyrCnt = 2; lyrCnt <= MAX_CU_LAYERS; lyrCnt += 2 )
315  {
316  // Note: This will change a 1 layer board to 2
317  if( copperCount <= lyrCnt )
318  {
319  int idx = lyrCnt/2 - 1;
320  m_CopperLayersChoice->SetSelection(idx);
321  break;
322  }
323  }
324 }

References PANEL_SETUP_LAYERS_BASE::m_CopperLayersChoice, and MAX_CU_LAYERS.

Referenced by OnPresetsChoice(), and TransferDataToWindow().

◆ showLayerTypes()

void PANEL_SETUP_LAYERS::showLayerTypes ( )
private

Definition at line 378 of file panel_setup_layers.cpp.

379 {
380  for( LSEQ seq = LSET::AllCuMask().Seq(); seq; ++seq )
381  {
382  PCB_LAYER_ID cu_layer = *seq;
383 
384  wxChoice* ctl = getChoice( cu_layer );
385  ctl->SetSelection( m_pcb->GetLayerType( cu_layer ) );
386  }
387 }
static LSET AllCuMask(int aCuLayerCount=MAX_CU_LAYERS)
Return a mask holding the requested number of Cu PCB_LAYER_IDs.
Definition: lset.cpp:749
wxChoice * getChoice(LAYER_NUM aLayer)
PCB_LAYER_ID
A quick note on layer IDs:
LSEQ is a sequence (and therefore also a set) of PCB_LAYER_IDs.
LAYER_T GetLayerType(PCB_LAYER_ID aLayer) const
Return the type of the copper layer given by aLayer.

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

Referenced by TransferDataToWindow().

◆ showPresets()

void PANEL_SETUP_LAYERS::showPresets ( LSET  enabledLayerMask)
private

Definition at line 361 of file panel_setup_layers.cpp.

362 {
363  int presetsNdx = 0; // The "Custom" setting, matches nothing
364 
365  for( unsigned i=1; i<arrayDim( presets ); ++i )
366  {
367  if( enabledLayers == presets[i] )
368  {
369  presetsNdx = i;
370  break;
371  }
372  }
373 
374  m_PresetsChoice->SetSelection( presetsNdx );
375 }
static const LSET presets[]
constexpr std::size_t arrayDim(T const (&)[N]) noexcept
Definition: macros.h:121

References arrayDim(), PANEL_SETUP_LAYERS_BASE::m_PresetsChoice, and presets.

Referenced by OnCheckBox(), OnCopperLayersChoice(), and TransferDataToWindow().

◆ showSelectedLayerCheckBoxes()

void PANEL_SETUP_LAYERS::showSelectedLayerCheckBoxes ( LSET  enableLayerMask)
private

Definition at line 350 of file panel_setup_layers.cpp.

351 {
352  // The check boxes
353  for( LSEQ seq = dlg_layers(); seq; ++seq )
354  {
355  PCB_LAYER_ID layer = *seq;
356  setLayerCheckBox( layer, enabledLayers[layer] );
357  }
358 }
PCB_LAYER_ID
A quick note on layer IDs:
LSEQ is a sequence (and therefore also a set) of PCB_LAYER_IDs.
void setLayerCheckBox(LAYER_NUM layer, bool isChecked)
static LSEQ dlg_layers()

References dlg_layers(), and setLayerCheckBox().

Referenced by OnPresetsChoice(), and TransferDataToWindow().

◆ testLayerNames()

bool PANEL_SETUP_LAYERS::testLayerNames ( )
private

Definition at line 708 of file panel_setup_layers.cpp.

709 {
710  std::vector<wxString> names;
711  wxTextCtrl* ctl;
712 
713  for( LSEQ seq = LSET::AllLayersMask().Seq(); seq; ++seq )
714  {
715  PCB_LAYER_ID layer = *seq;
716 
717  // we _can_ rely on m_enabledLayers being current here:
718 
719  if( !m_enabledLayers[layer] )
720  continue;
721 
722  wxString name = GetLayerName( layer );
723 
724  ctl = (wxTextCtrl*) getName( layer );
725 
726  // Check name for legality:
727  // 1) Cannot be blank.
728  // 2) Cannot have blanks.
729  // 3) Cannot have " chars
730  // 4) Cannot be 'signal'
731  // 5) Must be unique.
732  // 6) Cannot have illegal chars in filenames ( some filenames are built from layer names )
733  // like : % $ \ " / :
734  wxString badchars = wxFileName::GetForbiddenChars( wxPATH_DOS );
735  badchars.Append( '%' );
736 
737  if( !name )
738  {
739  m_Parent->SetError( _( "Layer must have a name." ), this, ctl );
740  return false;
741  }
742 
743  if( hasOneOf( name, badchars ) )
744  {
745  auto msg = wxString::Format(_( "\"%s\" are forbidden in layer names." ), badchars );
746  m_Parent->SetError( msg, this, ctl );
747  return false;
748  }
749 
750  if( name == wxT( "signal" ) )
751  {
752  m_Parent->SetError( _( "Layer name \"signal\" is reserved." ), this, ctl );
753  return false;
754  }
755 
756  for( const wxString& existingName : names )
757  {
758  if( name == existingName )
759  {
760  auto msg = wxString::Format(_( "Layer name \"%s\" is already in use." ), name );
761  m_Parent->SetError( msg, this, ctl );
762  return false;
763  }
764  }
765 
766  names.push_back( name );
767  }
768 
769  return true;
770 }
static bool hasOneOf(const wxString &str, const wxString &chars)
PAGED_DIALOG * m_Parent
void SetError(const wxString &aMessage, const wxString &aPageName, int aCtrlId, int aRow=-1, int aCol=-1)
PCB_LAYER_ID
A quick note on layer IDs:
static LSET AllLayersMask()
Definition: lset.cpp:786
LSEQ is a sequence (and therefore also a set) of PCB_LAYER_IDs.
const char * name
Definition: DXF_plotter.cpp:59
void Format(OUTPUTFORMATTER *out, int aNestLevel, int aCtl, CPTREE &aTree)
Function Format outputs a PTREE into s-expression format via an OUTPUTFORMATTER derivative.
Definition: ptree.cpp:201
#define _(s)
Definition: 3d_actions.cpp:33
wxControl * getName(LAYER_NUM aLayer)
wxString GetLayerName(LAYER_NUM layer)

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

Referenced by TransferDataFromWindow().

◆ TransferDataFromWindow()

bool PANEL_SETUP_LAYERS::TransferDataFromWindow ( )
overrideprivate

Definition at line 534 of file panel_setup_layers.cpp.

535 {
536  if( !testLayerNames() )
537  return false;
538 
539  wxString msg;
540  bool modified = false;
541 
542  // Check for removed layers with items which will get deleted from the board.
543  LSEQ removedLayers = getRemovedLayersWithItems();
544 
545  // Check for non-copper layers in use in footprints, and therefore not removable.
546  LSEQ notremovableLayers = getNonRemovableLayers();
547 
548  if( !notremovableLayers.empty() )
549  {
550  for( unsigned int ii = 0; ii < notremovableLayers.size(); ii++ )
551  msg << m_pcb->GetLayerName( notremovableLayers[ii] ) << "\n";
552 
553  if( !IsOK( this, wxString::Format( _( "Footprints have some items on removed layers:\n"
554  "%s\n"
555  "These items will be no longer accessible\n"
556  "Do you wish to continue?" ), msg ) ) )
557  {
558  return false;
559  }
560  }
561 
562  if( !removedLayers.empty()
563  && !IsOK( this, _( "Items have been found on removed layers. This operation will "
564  "delete all items from removed layers and cannot be undone.\n"
565  "Do you wish to continue?" ) ) )
566  {
567  return false;
568  }
569 
570  // Delete all objects on layers that have been removed. Leaving them in copper layers
571  // can (will?) result in DRC errors and it pollutes the board file with cruft.
572  bool hasRemovedBoardItems = false;
573 
574  if( !removedLayers.empty() )
575  {
576  PCB_LAYER_COLLECTOR collector;
577 
578  for( PCB_LAYER_ID layer_id : removedLayers )
579  {
580  collector.SetLayerId( layer_id );
582 
583  // Bye-bye items on removed layer.
584  for( int i = 0; i < collector.GetCount(); i++ )
585  {
586  BOARD_ITEM* item = collector[i];
587  LSET layers = item->GetLayerSet();
588 
589  layers.reset( layer_id );
590  hasRemovedBoardItems = true;
591  modified = true;
592 
593  if( layers.any() )
594  {
595  item->SetLayerSet( layers );
596  }
597  else
598  {
599  m_pcb->Remove( item );
600  delete item;
601  }
602  }
603  }
604  }
605 
607 
609  {
611 
612  /* Ensure enabled layers are also visible
613  * This is mainly to avoid mistakes if some enabled
614  * layers are not visible when exiting this dialog
615  */
617 
618  modified = true;
619  }
620 
621  for( LSEQ seq = LSET::AllLayersMask().Seq(); seq; ++seq )
622  {
623  PCB_LAYER_ID layer = *seq;
624 
625  if( m_enabledLayers[layer] )
626  {
627  const wxString& newLayerName = GetLayerName( layer );
628 
629  if( m_pcb->GetLayerName( layer ) != newLayerName )
630  {
631  m_pcb->SetLayerName( layer, newLayerName );
632  modified = true;
633  }
634 
635  // Only copper layers have a definable type.
636  if( LSET::AllCuMask().Contains( layer ) )
637  {
638  LAYER_T t = (LAYER_T) getLayerTypeIndex( layer );
639 
640  if( m_pcb->GetLayerType( layer ) != t )
641  {
642  m_pcb->SetLayerType( layer, t );
643  modified = true;
644  }
645  }
646  }
647  }
648 
649  for( LSEQ seq = LSET::UserDefinedLayers().Seq(); seq; ++seq )
650  {
651  PCB_LAYER_ID layer = *seq;
652  const wxString& newLayerName = GetLayerName( layer );
653 
654  if( m_enabledLayers[ layer ] && m_pcb->GetLayerName( layer ) != newLayerName )
655  {
656  m_pcb->SetLayerName( layer, newLayerName );
657  modified = true;
658  }
659  }
660 
661  // If some board items are deleted: Rebuild the connectivity,
662  // because it is likely some tracks and vias were removed
663  if( hasRemovedBoardItems )
664  {
665  // Rebuild list of nets (full ratsnest rebuild)
667  m_frame->Compile_Ratsnest( true );
668  }
669 
670  if( modified )
671  m_frame->OnModify();
672 
673  return true;
674 }
static LSET UserDefinedLayers()
Return a mask with all of the allowable user defined layers.
Definition: lset.cpp:848
static LSET AllCuMask(int aCuLayerCount=MAX_CU_LAYERS)
Return a mask holding the requested number of Cu PCB_LAYER_IDs.
Definition: lset.cpp:749
LSEQ getNonRemovableLayers()
Return a list of layers in use in footprints, and therefore not removable.
void OnModify() override
Function OnModify 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 MODULE,...
Definition: collectors.h:283
const wxString GetLayerName(PCB_LAYER_ID aLayer) const
Return the name of a aLayer.
void Compile_Ratsnest(bool aDisplayStatus)
Function Compile_Ratsnest Create the entire board ratsnest.
BOARD_ITEM is a base class for any item which can be embedded within the BOARD container class,...
void Collect(BOARD_ITEM *aBoard, const KICAD_T aScanList[])
Tests a BOARD_ITEM using this class's Inspector method, which does the collection.
Definition: collectors.cpp:639
LSET GetEnabledLayers() const
A proxy function that calls the corresponding function in m_BoardSettings Returns a bit-mask of all t...
Collect all BOARD_ITEM objects on a given layer.
Definition: collectors.h:655
bool SetLayerType(PCB_LAYER_ID aLayer, LAYER_T aLayerType)
Change the type of the layer given by aLayer.
virtual void SetLayerSet(LSET aLayers)
void SetLayerId(PCB_LAYER_ID aLayerId)
Definition: collectors.h:665
int GetCount() const
Function GetCount returns the number of objects in the list.
Definition: collector.h:104
PCB_LAYER_ID
A quick note on layer IDs:
LSET is a set of PCB_LAYER_IDs.
void SetVisibleLayers(LSET aLayerMask)
A proxy function that calls the correspondent function in m_BoardSettings changes the bit-mask of vis...
LAYER_T
The allowed types of layers, same as Specctra DSN spec.
Definition: class_board.h:62
bool SetLayerName(PCB_LAYER_ID aLayer, const wxString &aLayerName)
Changes the name of the layer given by aLayer.
static LSET AllLayersMask()
Definition: lset.cpp:786
void BuildConnectivity()
Builds or rebuilds the board connectivity database for the board, especially the list of connected it...
LSEQ is a sequence (and therefore also a set) of PCB_LAYER_IDs.
LAYER_T GetLayerType(PCB_LAYER_ID aLayer) const
Return the type of the copper layer given by aLayer.
PCB_EDIT_FRAME * m_frame
void Format(OUTPUTFORMATTER *out, int aNestLevel, int aCtl, CPTREE &aTree)
Function Format outputs a PTREE into s-expression format via an OUTPUTFORMATTER derivative.
Definition: ptree.cpp:201
#define _(s)
Definition: 3d_actions.cpp:33
wxString GetLayerName(LAYER_NUM layer)
int getLayerTypeIndex(LAYER_NUM layer)
bool IsOK(wxWindow *aParent, const wxString &aMessage)
Display a yes/no dialog with aMessage and returns the user response.
Definition: confirm.cpp:284
void SetEnabledLayers(LSET aLayerMask)
A proxy function that calls the correspondent function in m_BoardSettings Changes the bit-mask of ena...
void Remove(BOARD_ITEM *aBoardItem) override
Removes an item from the container.
virtual LSET GetLayerSet() const
Function GetLayerSet returns a std::bitset of all layers on which the item physically resides.
LSEQ getRemovedLayersWithItems()
Return a list of layers removed from the board that contain items.

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

◆ TransferDataToWindow()

bool PANEL_SETUP_LAYERS::TransferDataToWindow ( )
overrideprivate

Definition at line 249 of file panel_setup_layers.cpp.

250 {
252 
253  // Rescue may be enabled, but should not be shown in this dialog
254  m_enabledLayers.reset( Rescue );
255 
258 
262  showLayerTypes();
265 
266  return true;
267 }
void showCopperChoice(int copperCount)
LSET GetEnabledLayers() const
A proxy function that calls the corresponding function in m_BoardSettings Returns a bit-mask of all t...
void setCopperLayerCheckBoxes(int copperCount)
int GetCopperLayerCount() const
void showPresets(LSET enabledLayerMask)
void showSelectedLayerCheckBoxes(LSET enableLayerMask)

References BOARD::GetCopperLayerCount(), BOARD::GetEnabledLayers(), m_enabledLayers, m_pcb, Rescue, setCopperLayerCheckBoxes(), setMandatoryLayerCheckBoxes(), setUserDefinedLayerCheckBoxes(), showBoardLayerNames(), showCopperChoice(), showLayerTypes(), showPresets(), 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_CopperLayersChoice

wxChoice* PANEL_SETUP_LAYERS_BASE::m_CopperLayersChoice
protectedinherited

◆ m_CrtYdBackCheckBox

wxCheckBox* PANEL_SETUP_LAYERS_BASE::m_CrtYdBackCheckBox
protectedinherited

◆ m_CrtYdBackName

wxTextCtrl* PANEL_SETUP_LAYERS_BASE::m_CrtYdBackName
protectedinherited

◆ m_CrtYdBackStaticText

wxStaticText* PANEL_SETUP_LAYERS_BASE::m_CrtYdBackStaticText
protectedinherited

◆ m_CrtYdFrontCheckBox

wxCheckBox* PANEL_SETUP_LAYERS_BASE::m_CrtYdFrontCheckBox
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 83 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_MarginCheckBox

wxCheckBox* PANEL_SETUP_LAYERS_BASE::m_MarginCheckBox
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_Parent

PAGED_DIALOG* PANEL_SETUP_LAYERS::m_Parent
private

Definition at line 82 of file panel_setup_layers.h.

Referenced by testLayerNames().

◆ m_pcb

◆ m_PCBEdgesCheckBox

wxCheckBox* PANEL_SETUP_LAYERS_BASE::m_PCBEdgesCheckBox
protectedinherited

◆ m_PCBEdgesName

wxTextCtrl* PANEL_SETUP_LAYERS_BASE::m_PCBEdgesName
protectedinherited

◆ m_PCBEdgesStaticText

wxStaticText* PANEL_SETUP_LAYERS_BASE::m_PCBEdgesStaticText
protectedinherited

◆ m_PresetsChoice

wxChoice* PANEL_SETUP_LAYERS_BASE::m_PresetsChoice
protectedinherited

◆ 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_staticTextCopperLayers

wxStaticText* PANEL_SETUP_LAYERS_BASE::m_staticTextCopperLayers
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: