42#include <wx/choicdlg.h>
57 aCheckBox.SetValue(
true );
58 aCheckBox.SetToolTip(
_(
"This layer is required and cannot be disabled" ) );
65 m_physicalStackup( nullptr ),
66 m_initialized( false ),
67 m_CrtYdFrontCheckBox( nullptr ),
68 m_CrtYdFrontName( nullptr ),
69 m_CrtYdFrontStaticText( nullptr ),
70 m_FabFrontCheckBox( nullptr ),
71 m_FabFrontName( nullptr ),
72 m_FabFrontStaticText( nullptr ),
73 m_AdhesFrontCheckBox( nullptr ),
74 m_AdhesFrontName( nullptr ),
75 m_AdhesFrontStaticText( nullptr ),
76 m_SoldPFrontCheckBox( nullptr ),
77 m_SoldPFrontName( nullptr ),
78 m_SoldPFrontStaticText( nullptr ),
79 m_SilkSFrontCheckBox( nullptr ),
80 m_SilkSFrontName( nullptr ),
81 m_SilkSFrontStaticText( nullptr ),
82 m_MaskFrontCheckBox( nullptr ),
83 m_MaskFrontName( nullptr ),
84 m_MaskFrontStaticText( nullptr ),
85 m_MaskBackCheckBox( nullptr ),
86 m_MaskBackName( nullptr ),
87 m_MaskBackStaticText( nullptr ),
88 m_SilkSBackCheckBox( nullptr ),
89 m_SilkSBackName( nullptr ),
90 m_SilkSBackStaticText( nullptr ),
91 m_SoldPBackCheckBox( nullptr ),
92 m_SoldPBackName( nullptr ),
93 m_SoldPBackStaticText( nullptr ),
94 m_AdhesBackCheckBox( nullptr ),
95 m_AdhesBackName( nullptr ),
96 m_AdhesBackStaticText( nullptr ),
97 m_FabBackCheckBox( nullptr ),
98 m_FabBackName( nullptr ),
99 m_FabBackStaticText( nullptr ),
100 m_CrtYdBackCheckBox( nullptr ),
101 m_CrtYdBackName( nullptr ),
102 m_CrtYdBackStaticText( nullptr ),
103 m_PCBEdgesCheckBox( nullptr ),
104 m_PCBEdgesName( nullptr ),
105 m_PCBEdgesStaticText( nullptr ),
106 m_MarginCheckBox( nullptr ),
107 m_MarginName( nullptr ),
108 m_MarginStaticText( nullptr ),
109 m_Eco1CheckBox( nullptr ),
110 m_Eco1Name( nullptr ),
111 m_Eco1StaticText( nullptr ),
112 m_Eco2CheckBox( nullptr ),
113 m_Eco2Name( nullptr ),
114 m_Eco2StaticText( nullptr ),
115 m_CommentsCheckBox( nullptr ),
116 m_CommentsName( nullptr ),
117 m_CommentsStaticText( nullptr ),
118 m_DrawingsCheckBox( nullptr ),
119 m_DrawingsName( nullptr ),
120 m_DrawingsStaticText( nullptr )
129 wxDefaultPosition, wxDefaultSize, 0 );
131 wxALIGN_CENTER_HORIZONTAL | wxALIGN_CENTER_VERTICAL | wxLEFT
132 | wxRESERVE_SPACE_EVEN_IF_HIDDEN,
136 wxDefaultPosition, wxDefaultSize, 0 );
143 wxDefaultPosition, wxDefaultSize, 0 );
150 wxDefaultPosition, wxDefaultSize, 0 );
152 _(
"If you want a fabrication layer for the front side of the board" ) );
155 wxALIGN_CENTER_HORIZONTAL | wxALIGN_CENTER_VERTICAL | wxLEFT, 5 );
158 wxDefaultPosition, wxDefaultSize, 0 );
163 wxDefaultPosition, wxDefaultSize, 0 );
168 wxDefaultPosition, wxDefaultSize, 0 );
170 _(
"If you want an adhesive template for the front side of the board" ) );
173 wxALIGN_CENTER_HORIZONTAL | wxALIGN_CENTER_VERTICAL | wxLEFT, 5 );
176 wxDefaultPosition, wxDefaultSize, 0 );
181 wxDefaultPosition, wxDefaultSize, 0 );
186 wxDefaultPosition, wxDefaultSize, 0 );
188 _(
"If you want a solder paste layer for front side of the board" ) );
191 wxALIGN_CENTER_HORIZONTAL | wxALIGN_CENTER_VERTICAL | wxLEFT, 5 );
194 wxDefaultPosition, wxDefaultSize, 0 );
199 wxDefaultPosition, wxDefaultSize, 0 );
204 wxDefaultPosition, wxDefaultSize, 0 );
206 _(
"If you want a silk screen layer for the front side of the board" ) );
209 wxALIGN_CENTER_HORIZONTAL | wxALIGN_CENTER_VERTICAL | wxLEFT, 5 );
212 wxDefaultPosition, wxDefaultSize, 0 );
217 wxDefaultPosition, wxDefaultSize, 0 );
222 wxDefaultPosition, wxDefaultSize, 0 );
224 _(
"If you want a solder mask layer for the front of the board" ) );
227 wxALIGN_CENTER_HORIZONTAL | wxALIGN_CENTER_VERTICAL | wxLEFT, 5 );
230 wxDefaultPosition, wxDefaultSize, 0 );
235 wxDefaultPosition, wxDefaultSize, 0 );
246 wxDefaultPosition, wxDefaultSize, 0 );
248 _(
"If you want a solder mask layer for the back side of the board" ) );
251 wxALIGN_CENTER_HORIZONTAL | wxALIGN_CENTER_VERTICAL | wxLEFT, 5 );
254 wxDefaultPosition, wxDefaultSize, 0 );
259 wxDefaultPosition, wxDefaultSize, 0 );
264 wxDefaultPosition, wxDefaultSize, 0 );
266 _(
"If you want a silk screen layer for the back side of the board" ) );
269 wxALIGN_CENTER_HORIZONTAL | wxALIGN_CENTER_VERTICAL | wxLEFT, 5 );
272 wxDefaultPosition, wxDefaultSize, 0 );
277 wxDefaultPosition, wxDefaultSize, 0 );
282 wxDefaultPosition, wxDefaultSize, 0 );
284 _(
"If you want a solder paste layer for the back side of the board" ) );
287 wxALIGN_CENTER_HORIZONTAL | wxALIGN_CENTER_VERTICAL | wxLEFT, 5 );
290 wxDefaultPosition, wxDefaultSize, 0 );
295 wxDefaultPosition, wxDefaultSize, 0 );
300 wxDefaultPosition, wxDefaultSize, 0 );
302 _(
"If you want an adhesive layer for the back side of the board" ) );
305 wxALIGN_CENTER_HORIZONTAL | wxALIGN_CENTER_VERTICAL | wxLEFT, 5 );
308 wxDefaultPosition, wxDefaultSize, 0 );
313 wxDefaultPosition, wxDefaultSize, 0 );
318 wxDefaultPosition, wxDefaultSize, 0 );
320 _(
"If you want a fabrication layer for the back side of the board" ) );
323 wxALIGN_CENTER_HORIZONTAL | wxALIGN_CENTER_VERTICAL | wxLEFT, 5 );
326 wxDefaultPosition, wxDefaultSize, 0 );
331 wxDefaultPosition, wxDefaultSize, 0 );
337 wxDefaultPosition, wxDefaultSize, 0 );
339 wxALIGN_CENTER_HORIZONTAL | wxALIGN_CENTER_VERTICAL | wxLEFT
340 | wxRESERVE_SPACE_EVEN_IF_HIDDEN,
344 wxDefaultPosition, wxDefaultSize, 0 );
349 wxDefaultPosition, wxDefaultSize, 0 );
355 wxDefaultPosition, wxDefaultSize, 0 );
357 wxALIGN_CENTER_HORIZONTAL | wxALIGN_CENTER_VERTICAL | wxLEFT
358 | wxRESERVE_SPACE_EVEN_IF_HIDDEN,
362 wxDefaultPosition, wxDefaultSize, 0 );
367 wxDefaultPosition, wxDefaultSize, 0 );
372 wxDefaultPosition, wxDefaultSize, 0 );
374 wxLEFT | wxALIGN_CENTER_VERTICAL | wxALIGN_CENTER_HORIZONTAL
375 | wxRESERVE_SPACE_EVEN_IF_HIDDEN,
379 wxDefaultPosition, wxDefaultSize, 0 );
384 wxDefaultPosition, wxDefaultSize, 0 );
389 wxDefaultPosition, wxDefaultSize, 0 );
391 wxALIGN_CENTER_HORIZONTAL | wxALIGN_CENTER_VERTICAL | wxLEFT, 5 );
394 wxDefaultPosition, wxDefaultSize, 0 );
398 wxDefaultPosition, wxDefaultSize, 0 );
403 wxDefaultPosition, wxDefaultSize, 0 );
405 wxALIGN_CENTER_HORIZONTAL | wxALIGN_CENTER_VERTICAL | wxLEFT, 5 );
408 wxDefaultPosition, wxDefaultSize, 0 );
412 wxDefaultPosition, wxDefaultSize, 0 );
417 wxDefaultPosition, wxDefaultSize, 0 );
418 m_CommentsCheckBox->SetToolTip(
_(
"If you want a separate layer for comments or notes" ) );
421 wxALIGN_CENTER_HORIZONTAL | wxALIGN_CENTER_VERTICAL | wxLEFT, 5 );
424 wxDefaultPosition, wxDefaultSize, 0 );
428 wxDefaultPosition, wxDefaultSize, 0 );
433 wxDefaultPosition, wxDefaultSize, 0 );
437 wxALIGN_CENTER_HORIZONTAL | wxALIGN_CENTER_VERTICAL | wxLEFT, 5 );
440 wxDefaultPosition, wxDefaultSize, 0 );
444 wxDefaultPosition, wxDefaultSize, 0 );
447 wxALIGN_CENTER_VERTICAL | wxBOTTOM | wxLEFT | wxRIGHT, 5 );
473 wxCheckBox* cb =
new wxCheckBox(
m_LayersListPanel, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
474 cb->SetToolTip(
_(
"Use the Physical Stackup page to change the number of copper layers." ) );
477 m_LayersSizer->Add( cb, 0, wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL|wxLEFT, 5 );
480 txt->SetToolTip(
_(
"Layer Name") );
484 wxArrayString choices;
485 choices.Add(
_(
"signal" ) );
486 choices.Add(
_(
"power plane" ) );
487 choices.Add(
_(
"mixed" ) );
488 choices.Add(
_(
"jumper" ) );
489 wxChoice* choice =
new wxChoice(
m_LayersListPanel, wxID_ANY, wxDefaultPosition, wxDefaultSize, choices, 0 );
490 choice->SetSelection( 0 );
491 choice->SetToolTip(
_(
"Copper layer type for Freerouter and other external routers.\n"
492 "Power plane layers are removed from Freerouter's layer menus.") );
526 wxCheckBox* cb =
new wxCheckBox(
m_LayersListPanel, wxID_ANY, wxEmptyString, wxDefaultPosition,
528 m_LayersSizer->Add( cb, 0, wxALIGN_CENTER_HORIZONTAL | wxALIGN_CENTER_VERTICAL | wxLEFT, 5 );
531 wxDefaultPosition, wxDefaultSize, 0 );
532 txt->SetToolTip(
_(
"Layer Name" ) );
535 wxArrayString choices;
536 choices.Add(
_(
"Auxiliary" ) );
537 choices.Add(
_(
"Off-board, front" ) );
538 choices.Add(
_(
"Off-board, back" ) );
541 wxDefaultSize, choices, 0 );
542 choice->SetSelection( 0 );
544 _(
"Auxiliary layers do not flip with board side, while back and front layers do." ) );
637 wxControl* ctl =
getName( layer );
643 if(
auto textCtl =
dynamic_cast<wxTextCtrl*
>( ctl ) )
644 textCtl->ChangeValue( lname );
646 ctl->SetLabel( lname );
669 case LT_SIGNAL: ctl->SetSelection( 0 );
break;
670 case LT_POWER: ctl->SetSelection( 1 );
break;
671 case LT_MIXED: ctl->SetSelection( 2 );
break;
672 case LT_JUMPER: ctl->SetSelection( 3 );
break;
673 default: ctl->SetSelection( 0 );
686 case LT_AUX: ctl->SetSelection( 0 );
break;
687 case LT_FRONT: ctl->SetSelection( 1 );
break;
688 case LT_BACK: ctl->SetSelection( 2 );
break;
689 default: ctl->SetSelection( 0 );
break;
697 LSET layerMaskResult;
703 if( ctl && ctl->IsChecked() )
704 layerMaskResult.
set( layer );
707 return layerMaskResult;
718 ctl.
checkbox->SetValue( isChecked );
724 if( copperCount > 0 )
730 if( copperCount > 0 )
751 bool modified =
false;
756 if( enabledLayers != previousEnabled )
760 LSET changedLayers = enabledLayers ^ previousEnabled;
774 for(
PAD*
pad : fp->Pads() )
776 if(
pad->HasHole() &&
pad->IsOnCopperLayer() )
791 wxString newLayerName =
getName( layer )->GetValue();
824 case 0: t =
LT_AUX;
break;
842 wxString newLayerName =
getName( layer )->GetValue();
865 bool modified =
false;
866 wxWindow* parent = wxGetTopLevelParent(
this );
874 if( !notremovableLayers.empty() )
879 if( !
IsOK( parent, wxString::Format(
_(
"Footprints have some items on removed layers:\n"
881 "These items will be no longer accessible\n"
882 "Do you wish to continue?" ),
889 if( !removedLayers.empty() )
891 if( !
IsOK( parent,
_(
"Items have been found on removed layers. This operation will "
892 "delete all items from removed layers and cannot be undone.\n"
893 "Do you wish to continue?" ) ) )
901 bool hasRemovedBoardItemLayers =
false;
903 if( !removedLayers.empty() )
915 for(
int i = 0; i < collector.
GetCount(); i++ )
934 if(
via->GetViaType() == VIATYPE::THROUGH )
936 hasRemovedBoardItemLayers =
true;
939 else if(
via->IsOnLayer( layer_id ) )
943 via->LayerPair( &top_layer, &bottom_layer );
945 if( top_layer == layer_id || bottom_layer == layer_id )
955 hasRemovedBoardItemLayers =
true;
962 layers.
reset( layer_id );
975 hasRemovedBoardItemLayers =
true;
988 if( hasRemovedBoardItemLayers )
1000 std::vector<wxString> names;
1010 ctl = (wxTextCtrl*)
getName( layer );
1011 wxString
name = ctl->GetValue();
1021 wxString badchars = wxFileName::GetForbiddenChars( wxPATH_DOS );
1022 badchars.Append(
'%' );
1030 if(
name.find_first_of( badchars ) != wxString::npos )
1032 wxString msg = wxString::Format(
_(
"%s are forbidden in layer names." ), badchars );
1037 if(
name == wxT(
"signal" ) )
1043 for(
const wxString& existingName : names )
1045 if(
name == existingName )
1047 wxString msg = wxString::Format(
_(
"Layer name '%s' already in use." ),
name );
1053 names.push_back(
name );
1066 if( newLayers == curLayers )
1067 return removedLayers;
1073 if( !newLayers[layer_id] )
1082 for(
int i = 0; i < collector.
GetCount(); i++ )
1096 if(
via->GetViaType() == VIATYPE::THROUGH )
1102 via->LayerPair( &top_layer, &bottom_layer );
1104 if( top_layer != layer_id && bottom_layer != layer_id )
1109 removedLayers.push_back( layer_id );
1116 return removedLayers;
1127 if( newLayers == curLayers )
1137 if( !newLayers.
Contains( layer_id ) )
1143 inUseLayers.push_back( layer_id );
1170 bool okToDeleteCopperLayers =
true;
1176 if( newNumLayers < currNumLayers )
1178 wxString msg = wxString::Format(
_(
"Imported settings have fewer copper layers than "
1179 "the current board (%i instead of %i).\n\n"
1180 "Continue and delete the extra inner copper layers "
1181 "from the current board?" ),
1185 wxWindow* topLevelParent = wxGetTopLevelParent(
this );
1187 wxMessageDialog dlg( topLevelParent, msg,
_(
"Inner Layers to Be Deleted" ),
1188 wxICON_WARNING | wxSTAY_ON_TOP | wxYES | wxNO | wxNO_DEFAULT );
1190 if( wxID_ANY == dlg.ShowModal() )
1191 okToDeleteCopperLayers =
false;
1194 return okToDeleteCopperLayers;
1200 wxArrayString headers;
1201 headers.Add(
_(
"Layers" ) );
1204 std::vector<wxArrayString> list;
1210 if( checkBox && checkBox->IsShown() )
1213 wxArrayString available_user_layer;
1214 available_user_layer.Add(
LayerName( layer ) );
1216 list.emplace_back( available_user_layer );
1222 _(
"All user-defined layers have already been added." ) );
1245 wxCHECK( layer >=
User_1, );
1256 wxTextCtrl* textCtrl =
dynamic_cast<wxTextCtrl*
>( ctl.
name );
1258 wxCHECK( textCtrl, );
1259 textCtrl->ChangeValue(
LSET::Name( layer ) );
1261 wxChoice* userLayerType =
dynamic_cast<wxChoice*
>( ctl.
choice );
1263 wxCHECK( userLayerType, );
1264 userLayerType->SetSelection( 0 );
1266 ctl.
name->Show(
true );
1268 ctl.
choice->Show(
true );
LAYER_T
The allowed types of layers, same as Specctra DSN spec.
static TOOL_ACTION selectionClear
Clear the current selection.
BASE_SET & reset(size_t pos)
BASE_SET & set(size_t pos)
A base class for any item which can be embedded within the BOARD container class, and therefore insta...
virtual void SetLayerSet(const LSET &aLayers)
virtual bool IsOnLayer(PCB_LAYER_ID aLayer) const
Test to see if this object is on the given layer.
FOOTPRINT * GetParentFootprint() const
virtual LSET GetLayerSet() const
Return a std::bitset of all layers on which the item physically resides.
Information pertinent to a Pcbnew printed circuit board.
void SetVisibleLayers(const LSET &aLayerMask)
A proxy function that calls the correspondent function in m_BoardSettings changes the bit-mask of vis...
const LSET & GetVisibleLayers() const
A proxy function that calls the correspondent function in m_BoardSettings.
bool BuildConnectivity(PROGRESS_REPORTER *aReporter=nullptr)
Build or rebuild the board connectivity database for the board, especially the list of connected item...
bool IsLayerEnabled(PCB_LAYER_ID aLayer) const
A proxy function that calls the correspondent function in m_BoardSettings tests whether a given layer...
LAYER_T GetLayerType(PCB_LAYER_ID aLayer) const
Return the type of the copper layer given by aLayer.
bool SetLayerName(PCB_LAYER_ID aLayer, const wxString &aLayerName)
Changes the name of the layer given by aLayer.
int GetCopperLayerCount() const
const FOOTPRINTS & Footprints() const
bool SetLayerType(PCB_LAYER_ID aLayer, LAYER_T aLayerType)
Change the type of the layer given by aLayer.
const wxString GetLayerName(PCB_LAYER_ID aLayer) const
Return the name of a aLayer.
const LSET & GetEnabledLayers() const
A proxy function that calls the corresponding function in m_BoardSettings.
void Remove(BOARD_ITEM *aBoardItem, REMOVE_MODE aMode=REMOVE_MODE::NORMAL) override
Removes an item from the container.
void SetEnabledLayers(const LSET &aLayerMask)
A proxy function that calls the correspondent function in m_BoardSettings.
int GetCount() const
Return the number of objects in the list.
virtual void ClearUndoRedoList()
Clear the undo and redo list using ClearUndoORRedoList()
KICAD_T Type() const
Returns the type of object.
wxString GetTextSelection(int aColumn=0)
Return the selected text from aColumn in the wxListCtrl in the dialog.
void SetListLabel(const wxString &aLabel)
static const std::vector< KICAD_T > BoardLevelItems
A scan list for all primary board items, omitting items which are subordinate to a FOOTPRINT,...
static const std::vector< KICAD_T > FootprintItems
A scan list for primary footprint items.
LSEQ is a sequence (and therefore also a set) of PCB_LAYER_IDs.
LSET is a set of PCB_LAYER_IDs.
copper_layers_iterator copper_layers_end() const
LSEQ CuStack() const
Return a sequence of copper layers in starting from the front/top and extending to the back/bottom.
copper_layers_iterator copper_layers_begin() const
non_copper_layers_iterator non_copper_layers_begin() const
non_copper_layers_iterator non_copper_layers_end() const
static const LSET & AllLayersMask()
static LSET UserDefinedLayersMask(int aUserDefinedLayerCount=MAX_USER_DEFINED_LAYERS)
Return a mask with the requested number of user defined layers.
static LSET AllCuMask()
return AllCuMask( MAX_CU_LAYERS );
static const LSET & InternalCuMask()
Return a complete set of internal copper layers which is all Cu layers except F_Cu and B_Cu.
static wxString Name(PCB_LAYER_ID aLayerId)
Return the fixed name association with aLayerId.
bool Contains(PCB_LAYER_ID aLayer) const
See if the layer set contains a PCB layer.
static PAGED_DIALOG * GetDialog(wxWindow *aWindow)
void SetError(const wxString &aMessage, const wxString &aPageName, int aCtrlId, int aRow=-1, int aCol=-1)
int GetCopperLayerCount() const
Class PANEL_SETUP_LAYERS_BASE.
wxScrolledWindow * m_LayersListPanel
wxFlexGridSizer * m_LayersSizer
wxStaticText * m_CrtYdBackStaticText
wxStaticText * m_CrtYdFrontStaticText
wxCheckBox * m_SoldPBackCheckBox
wxStaticText * m_PCBEdgesStaticText
wxTextCtrl * m_FabBackName
wxStaticText * m_FabBackStaticText
wxTextCtrl * m_PCBEdgesName
wxTextCtrl * m_DrawingsName
wxStaticText * m_MarginStaticText
void append_user_layer(PCB_LAYER_ID aLayer)
wxCheckBox * m_AdhesBackCheckBox
wxTextCtrl * getName(PCB_LAYER_ID aLayer)
bool transferDataFromWindow()
wxStaticText * m_Eco2StaticText
void showSelectedLayerCheckBoxes(const LSET &enableLayerMask)
bool CheckCopperLayerCount(BOARD *aWorkingBoard, BOARD *aImportedBoard)
Check and warn if inner copper layers will be deleted.
wxTextCtrl * m_CrtYdBackName
wxStaticText * m_AdhesFrontStaticText
wxTextCtrl * m_MaskFrontName
wxCheckBox * m_Eco1CheckBox
wxCheckBox * m_CrtYdFrontCheckBox
wxCheckBox * m_FabFrontCheckBox
bool TransferDataToWindow() override
wxTextCtrl * m_AdhesFrontName
wxCheckBox * getCheckBox(PCB_LAYER_ID aLayer)
wxCheckBox * m_MaskFrontCheckBox
void setLayerCheckBox(PCB_LAYER_ID layer, bool isChecked)
virtual void addUserDefinedLayer(wxCommandEvent &aEvent) override
wxCheckBox * m_SilkSBackCheckBox
void SyncCopperLayers(int aNumCopperLayers)
Called when switching to this tab to make sure that any changes to the copper layer count made on the...
wxStaticText * m_AdhesBackStaticText
void initialize_back_tech_layers()
void initialize_front_tech_layers()
wxTextCtrl * m_CrtYdFrontName
std::map< PCB_LAYER_ID, PANEL_SETUP_LAYERS_CTLs > m_layersControls
wxTextCtrl * m_MaskBackName
wxStaticText * m_Eco1StaticText
PANEL_SETUP_BOARD_STACKUP * m_physicalStackup
wxTextCtrl * m_AdhesBackName
wxTextCtrl * m_MarginName
wxCheckBox * m_MaskBackCheckBox
wxCheckBox * m_SoldPFrontCheckBox
wxStaticText * m_CommentsStaticText
wxCheckBox * m_PCBEdgesCheckBox
wxStaticText * m_FabFrontStaticText
wxStaticText * m_MaskFrontStaticText
LSEQ getNonRemovableLayers()
Return a list of layers in use in footprints, and therefore not removable.
wxStaticText * m_SilkSFrontStaticText
void showBoardLayerNames()
wxCheckBox * m_MarginCheckBox
wxStaticText * m_SoldPBackStaticText
wxCheckBox * m_SilkSFrontCheckBox
wxStaticText * m_MaskBackStaticText
void setCopperLayerCheckBoxes(int copperCount)
wxCheckBox * m_CrtYdBackCheckBox
wxCheckBox * m_CommentsCheckBox
wxCheckBox * m_FabBackCheckBox
wxTextCtrl * m_SoldPFrontName
wxTextCtrl * m_SilkSBackName
wxTextCtrl * m_SoldPBackName
wxStaticText * m_SilkSBackStaticText
wxTextCtrl * m_SilkSFrontName
wxCheckBox * m_Eco2CheckBox
wxCheckBox * m_AdhesFrontCheckBox
wxChoice * getChoice(PCB_LAYER_ID aLayer)
void initialize_layers_controls()
wxStaticText * m_SoldPFrontStaticText
LSEQ getRemovedLayersWithItems()
Return a list of layers removed from the board that contain items.
wxCheckBox * m_DrawingsCheckBox
wxStaticText * m_DrawingsStaticText
bool TransferDataFromWindow() override
PANEL_SETUP_LAYERS(wxWindow *aParentWindow, PCB_EDIT_FRAME *aFrame)
void ImportSettingsFrom(BOARD *aBoard)
wxTextCtrl * m_CommentsName
wxTextCtrl * m_FabFrontName
void setUserDefinedLayerCheckBoxes()
The main frame for Pcbnew.
void OnModify() override
Must be called after a board change to set the modified flag.
Collect all BOARD_ITEM objects on a given layer.
void Collect(BOARD_ITEM *aBoard, const std::vector< KICAD_T > &aTypes)
Test a BOARD_ITEM using this class's Inspector method, which does the collection.
void SetLayerId(PCB_LAYER_ID aLayerId)
bool IsOK(wxWindow *aParent, const wxString &aMessage)
Display a yes/no dialog with aMessage and returns the user response.
void DisplayErrorMessage(wxWindow *aParent, const wxString &aText, const wxString &aExtraInfo)
Display an error message with aMessage.
This file is part of the common library.
wxString LayerName(int aLayer)
Returns the default display name for a given layer.
bool IsCopperLayer(int aLayerId)
Test whether a layer is a copper layer.
PCB_LAYER_ID
A quick note on layer IDs:
static void mandatoryLayerCbSetup(wxCheckBox &aCheckBox)
Configure a layer checkbox to be mandatory and disabled.
std::deque< BOARD_ITEM * > GetCurrentSelection()
Get the list of selected objects.
The 3 UI control pointers for a single board layer.
@ PCB_VIA_T
class PCB_VIA, a via (like a track segment on a copper layer)
@ PCB_FOOTPRINT_T
class FOOTPRINT, a footprint