15DIALOG_FOOTPRINT_PROPERTIES_FP_EDITOR_BASE::DIALOG_FOOTPRINT_PROPERTIES_FP_EDITOR_BASE( wxWindow* parent, wxWindowID
id,
const wxString& title,
const wxPoint& pos,
const wxSize& size,
long style ) :
DIALOG_SHIM( parent, id, title, pos, size, style )
17 this->SetSizeHints( wxDefaultSize, wxDefaultSize );
23 wxBoxSizer* m_PanelPropertiesBoxSizer;
24 m_PanelPropertiesBoxSizer =
new wxBoxSizer( wxVERTICAL );
26 wxStaticBoxSizer* sbSizerTexts;
27 sbSizerTexts =
new wxStaticBoxSizer(
new wxStaticBox(
m_PanelGeneral, wxID_ANY,
_(
"Fields") ), wxVERTICAL );
29 m_itemsGrid =
new WX_GRID( sbSizerTexts->GetStaticBox(), wxID_ANY, wxDefaultPosition, wxSize( -1,-1 ), 0 );
64 m_itemsGrid->SetColLabelAlignment( wxALIGN_CENTER, wxALIGN_CENTER );
68 m_itemsGrid->SetRowLabelValue( 0,
_(
"Reference designator") );
71 m_itemsGrid->SetRowLabelAlignment( wxALIGN_LEFT, wxALIGN_CENTER );
76 m_itemsGrid->SetDefaultCellAlignment( wxALIGN_LEFT, wxALIGN_CENTER );
79 sbSizerTexts->Add(
m_itemsGrid, 1, wxBOTTOM|wxEXPAND|wxLEFT|wxRIGHT, 5 );
81 wxBoxSizer* bButtonSize;
82 bButtonSize =
new wxBoxSizer( wxHORIZONTAL );
84 m_bpAdd =
new STD_BITMAP_BUTTON( sbSizerTexts->GetStaticBox(), wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, wxBU_AUTODRAW|0 );
85 bButtonSize->Add(
m_bpAdd, 0, wxBOTTOM|wxLEFT|wxRIGHT, 5 );
88 bButtonSize->Add( 20, 0, 0, wxEXPAND, 5 );
90 m_bpDelete =
new STD_BITMAP_BUTTON( sbSizerTexts->GetStaticBox(), wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, wxBU_AUTODRAW|0 );
94 sbSizerTexts->Add( bButtonSize, 0, wxEXPAND, 5 );
97 m_PanelPropertiesBoxSizer->Add( sbSizerTexts, 1, wxBOTTOM|wxEXPAND|wxLEFT|wxRIGHT|wxTOP, 5 );
100 bColumns =
new wxBoxSizer( wxHORIZONTAL );
102 wxStaticBoxSizer* sbMetadataSizer;
103 sbMetadataSizer =
new wxStaticBoxSizer(
new wxStaticBox(
m_PanelGeneral, wxID_ANY,
_(
"Metadata") ), wxVERTICAL );
105 wxFlexGridSizer* fgSizerFPID;
106 fgSizerFPID =
new wxFlexGridSizer( 4, 2, 3, 0 );
107 fgSizerFPID->AddGrowableCol( 1 );
108 fgSizerFPID->SetFlexibleDirection( wxBOTH );
109 fgSizerFPID->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
111 wxStaticText* staticFPNameLabel;
112 staticFPNameLabel =
new wxStaticText( sbMetadataSizer->GetStaticBox(), wxID_ANY,
_(
"Footprint name:"), wxDefaultPosition, wxDefaultSize, 0 );
113 staticFPNameLabel->Wrap( -1 );
114 fgSizerFPID->Add( staticFPNameLabel, 0, wxALIGN_CENTER_VERTICAL|wxLEFT, 5 );
116 m_FootprintNameCtrl =
new wxTextCtrl( sbMetadataSizer->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
119 wxStaticText* staticDescriptionLabel;
120 staticDescriptionLabel =
new wxStaticText( sbMetadataSizer->GetStaticBox(), wxID_ANY,
_(
"Description:"), wxDefaultPosition, wxDefaultSize, 0 );
121 staticDescriptionLabel->Wrap( -1 );
122 fgSizerFPID->Add( staticDescriptionLabel, 0, wxALIGN_CENTER_VERTICAL|wxALIGN_TOP|wxLEFT, 5 );
124 m_DocCtrl =
new wxTextCtrl( sbMetadataSizer->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
125 fgSizerFPID->Add(
m_DocCtrl, 0, wxEXPAND|wxLEFT|wxRIGHT, 5 );
127 staticKeywordsLabel =
new wxStaticText( sbMetadataSizer->GetStaticBox(), wxID_ANY,
_(
"Keywords:"), wxDefaultPosition, wxDefaultSize, 0 );
131 m_KeywordCtrl =
new wxTextCtrl( sbMetadataSizer->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
132 fgSizerFPID->Add(
m_KeywordCtrl, 0, wxEXPAND|wxLEFT|wxRIGHT, 5 );
135 sbMetadataSizer->Add( fgSizerFPID, 1, wxEXPAND, 10 );
138 bColumns->Add( sbMetadataSizer, 1, wxEXPAND|wxALL, 5 );
141 bColumns->Add( 5, 0, 0, wxEXPAND, 5 );
143 wxStaticBoxSizer* sbAttributesSizer;
144 sbAttributesSizer =
new wxStaticBoxSizer(
new wxStaticBox(
m_PanelGeneral, wxID_ANY,
_(
"Fabrication Attributes") ), wxVERTICAL );
146 wxBoxSizer* bPartTypeSizer;
147 bPartTypeSizer =
new wxBoxSizer( wxHORIZONTAL );
149 m_componentTypeLabel =
new wxStaticText( sbAttributesSizer->GetStaticBox(), wxID_ANY,
_(
"Component type:"), wxDefaultPosition, wxDefaultSize, 0 );
151 bPartTypeSizer->Add(
m_componentTypeLabel, 0, wxBOTTOM|wxRIGHT|wxLEFT|wxALIGN_CENTER_VERTICAL, 5 );
153 wxString m_componentTypeChoices[] = {
_(
"Through hole"),
_(
"SMD"),
_(
"Unspecified") };
154 int m_componentTypeNChoices =
sizeof( m_componentTypeChoices ) /
sizeof( wxString );
155 m_componentType =
new wxChoice( sbAttributesSizer->GetStaticBox(), wxID_ANY, wxDefaultPosition, wxDefaultSize, m_componentTypeNChoices, m_componentTypeChoices, 0 );
157 bPartTypeSizer->Add(
m_componentType, 1, wxALIGN_CENTER_VERTICAL|wxBOTTOM|wxLEFT, 5 );
160 sbAttributesSizer->Add( bPartTypeSizer, 0, wxEXPAND|wxBOTTOM|wxRIGHT, 5 );
162 m_cbExcludeFromSim =
new wxCheckBox( sbAttributesSizer->GetStaticBox(), wxID_ANY,
_(
"Exclude from simulation"), wxDefaultPosition, wxDefaultSize, 0 );
165 m_boardOnly =
new wxCheckBox( sbAttributesSizer->GetStaticBox(), wxID_ANY,
_(
"Not in schematic"), wxDefaultPosition, wxDefaultSize, 0 );
166 sbAttributesSizer->Add(
m_boardOnly, 0, wxBOTTOM|wxLEFT|wxRIGHT, 5 );
168 m_cbDNP =
new wxCheckBox( sbAttributesSizer->GetStaticBox(), wxID_ANY,
_(
"Do not populate"), wxDefaultPosition, wxDefaultSize, 0 );
169 sbAttributesSizer->Add(
m_cbDNP, 0, wxBOTTOM|wxRIGHT|wxLEFT, 5 );
171 m_excludeFromBOM =
new wxCheckBox( sbAttributesSizer->GetStaticBox(), wxID_ANY,
_(
"Exclude from bill of materials"), wxDefaultPosition, wxDefaultSize, 0 );
174 m_excludeFromPosFiles =
new wxCheckBox( sbAttributesSizer->GetStaticBox(), wxID_ANY,
_(
"Exclude from position files"), wxDefaultPosition, wxDefaultSize, 0 );
178 bColumns->Add( sbAttributesSizer, 0, wxEXPAND|wxALL, 5 );
181 m_PanelPropertiesBoxSizer->Add( bColumns, 0, wxEXPAND, 5 );
189 wxBoxSizer* bSizer14;
190 bSizer14 =
new wxBoxSizer( wxHORIZONTAL );
192 wxStaticBoxSizer* sbSizer11;
193 sbSizer11 =
new wxStaticBoxSizer(
new wxStaticBox(
m_LayersPanel, wxID_ANY,
_(
"Custom Layers") ), wxVERTICAL );
195 wxGridBagSizer* gbSizer3;
196 gbSizer3 =
new wxGridBagSizer( 0, 0 );
197 gbSizer3->SetFlexibleDirection( wxBOTH );
198 gbSizer3->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
200 m_cbCustomLayers =
new wxCheckBox( sbSizer11->GetStaticBox(), wxID_ANY,
_(
"Use custom stackup"), wxDefaultPosition, wxDefaultSize, 0 );
201 gbSizer3->Add(
m_cbCustomLayers, wxGBPosition( 0, 0 ), wxGBSpan( 1, 2 ), wxALL|wxEXPAND, 5 );
203 m_copperLayerCountLabel =
new wxStaticText( sbSizer11->GetStaticBox(), wxID_ANY,
_(
"Copper layers"), wxDefaultPosition, wxDefaultSize, 0 );
205 gbSizer3->Add(
m_copperLayerCountLabel, wxGBPosition( 1, 0 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxALL, 5 );
207 wxString m_copperLayerCountChoices[] = {
_(
"2"),
_(
"4"),
_(
"6"),
_(
"8"),
_(
"10"),
_(
"12"),
_(
"14"),
_(
"16"),
_(
"18"),
_(
"20"),
_(
"22"),
_(
"24"),
_(
"26"),
_(
"28"),
_(
"30"),
_(
"32"), wxEmptyString };
208 int m_copperLayerCountNChoices =
sizeof( m_copperLayerCountChoices ) /
sizeof( wxString );
209 m_copperLayerCount =
new wxChoice( sbSizer11->GetStaticBox(), wxID_ANY, wxDefaultPosition, wxDefaultSize, m_copperLayerCountNChoices, m_copperLayerCountChoices, 0 );
213 gbSizer3->Add(
m_copperLayerCount, wxGBPosition( 1, 1 ), wxGBSpan( 1, 1 ), wxALL, 5 );
215 wxStaticBoxSizer* sbUserCustomerLayers;
216 sbUserCustomerLayers =
new wxStaticBoxSizer(
new wxStaticBox( sbSizer11->GetStaticBox(), wxID_ANY,
_(
"User Layers") ), wxVERTICAL );
245 wxBoxSizer* bButtonSize11;
246 bButtonSize11 =
new wxBoxSizer( wxHORIZONTAL );
252 bButtonSize11->Add( 20, 0, 0, wxEXPAND, 5 );
258 sbUserCustomerLayers->Add( bButtonSize11, 0, wxEXPAND, 5 );
261 gbSizer3->Add( sbUserCustomerLayers, wxGBPosition( 2, 0 ), wxGBSpan( 1, 2 ), wxALL|wxEXPAND, 5 );
264 gbSizer3->AddGrowableCol( 1 );
265 gbSizer3->AddGrowableRow( 2 );
267 sbSizer11->Add( gbSizer3, 1, wxEXPAND, 5 );
270 bSizer14->Add( sbSizer11, 1, wxEXPAND|wxRIGHT|wxTOP, 5 );
272 wxStaticBoxSizer* bSizerPrivateLayers;
273 bSizerPrivateLayers =
new wxStaticBoxSizer(
new wxStaticBox(
m_LayersPanel, wxID_ANY,
_(
"Private Layers") ), wxVERTICAL );
302 wxBoxSizer* bPrivateLayerButtonsSizer;
303 bPrivateLayerButtonsSizer =
new wxBoxSizer( wxHORIZONTAL );
309 bPrivateLayerButtonsSizer->Add( 20, 0, 0, wxEXPAND, 5 );
315 bSizerPrivateLayers->Add( bPrivateLayerButtonsSizer, 0, wxEXPAND, 5 );
318 bSizer14->Add( bSizerPrivateLayers, 1, wxEXPAND|wxLEFT|wxTOP, 5 );
326 wxBoxSizer* bSizerPanelClearances;
327 bSizerPanelClearances =
new wxBoxSizer( wxVERTICAL );
329 wxStaticBoxSizer* sbSizerLocalProperties;
330 sbSizerLocalProperties =
new wxStaticBoxSizer(
new wxStaticBox(
m_PanelClearances, wxID_ANY,
_(
"Clearances") ), wxVERTICAL );
332 m_staticTextInfo =
new wxStaticText( sbSizerLocalProperties->GetStaticBox(), wxID_ANY,
_(
"Leave values blank to use netclass values."), wxDefaultPosition, wxDefaultSize, 0 );
334 sbSizerLocalProperties->Add(
m_staticTextInfo, 0, wxBOTTOM|wxRIGHT|wxLEFT, 5 );
336 wxGridBagSizer* gbSizer1;
337 gbSizer1 =
new wxGridBagSizer( 4, 0 );
338 gbSizer1->SetFlexibleDirection( wxBOTH );
339 gbSizer1->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
340 gbSizer1->SetEmptyCellSize( wxSize( -1,15 ) );
342 m_NetClearanceLabel =
new wxStaticText( sbSizerLocalProperties->GetStaticBox(), wxID_ANY,
_(
"Pad clearance:"), wxDefaultPosition, wxDefaultSize, 0 );
344 m_NetClearanceLabel->SetToolTip(
_(
"This is the local net clearance for all pads of this footprint.\nIf 0, the Netclass values are used.\nThis value can be overridden on a pad-by-pad basis in the Local\nClearance and Settings tab of Pad Properties.") );
346 gbSizer1->Add(
m_NetClearanceLabel, wxGBPosition( 0, 0 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxRIGHT|wxLEFT, 5 );
348 m_NetClearanceCtrl =
new wxTextCtrl( sbSizerLocalProperties->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
349 gbSizer1->Add(
m_NetClearanceCtrl, wxGBPosition( 0, 1 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL, 5 );
351 m_NetClearanceUnits =
new wxStaticText( sbSizerLocalProperties->GetStaticBox(), wxID_ANY,
_(
"unit"), wxDefaultPosition, wxDefaultSize, 0 );
353 gbSizer1->Add(
m_NetClearanceUnits, wxGBPosition( 0, 2 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxRIGHT|wxLEFT, 5 );
355 m_SolderMaskMarginLabel =
new wxStaticText( sbSizerLocalProperties->GetStaticBox(), wxID_ANY,
_(
"Solder mask expansion:"), wxDefaultPosition, wxDefaultSize, 0 );
357 m_SolderMaskMarginLabel->SetToolTip(
_(
"This is the local clearance between pads and the solder mask for \nthis footprint.\nIf 0, the global value is used.\nThis value can be overridden on a pad-by-pad basis in the Local\nClearance and Settings tab of Pad Properties.") );
359 gbSizer1->Add(
m_SolderMaskMarginLabel, wxGBPosition( 2, 0 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxRIGHT|wxLEFT, 5 );
361 m_SolderMaskMarginCtrl =
new wxTextCtrl( sbSizerLocalProperties->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
362 gbSizer1->Add(
m_SolderMaskMarginCtrl, wxGBPosition( 2, 1 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL, 5 );
364 m_SolderMaskMarginUnits =
new wxStaticText( sbSizerLocalProperties->GetStaticBox(), wxID_ANY,
_(
"unit"), wxDefaultPosition, wxDefaultSize, 0 );
366 gbSizer1->Add(
m_SolderMaskMarginUnits, wxGBPosition( 2, 2 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxRIGHT|wxLEFT, 5 );
368 m_allowBridges =
new wxCheckBox( sbSizerLocalProperties->GetStaticBox(), wxID_ANY,
_(
"Allow bridged solder mask apertures between pads"), wxDefaultPosition, wxDefaultSize, 0 );
369 gbSizer1->Add(
m_allowBridges, wxGBPosition( 3, 0 ), wxGBSpan( 1, 3 ), wxALIGN_CENTER_VERTICAL|wxRIGHT|wxLEFT, 5 );
371 m_SolderPasteMarginLabel =
new wxStaticText( sbSizerLocalProperties->GetStaticBox(), wxID_ANY,
_(
"Solder paste clearance:"), wxDefaultPosition, wxDefaultSize, 0 );
373 m_SolderPasteMarginLabel->SetToolTip(
_(
"Solder paste clearance relative to pad size.\nEnter an absolute value (e.g., -0.1mm), a percentage (e.g., -5%), or both (e.g., -0.1mm - 5%).\nThis value can be superseded by local values for a footprint or a pad.") );
375 gbSizer1->Add(
m_SolderPasteMarginLabel, wxGBPosition( 5, 0 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxRIGHT|wxLEFT, 5 );
377 m_SolderPasteMarginCtrl =
new wxTextCtrl( sbSizerLocalProperties->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
378 m_SolderPasteMarginCtrl->SetToolTip(
_(
"Local solder paste clearance for this footprint.\nEnter an absolute value (e.g., -0.1mm), a percentage (e.g., -5%), or both (e.g., -0.1mm - 5%).\nIf blank, the global value is used.") );
382 m_SolderPasteMarginUnits =
new wxStaticText( sbSizerLocalProperties->GetStaticBox(), wxID_ANY,
_(
"unit"), wxDefaultPosition, wxDefaultSize, 0 );
384 gbSizer1->Add(
m_SolderPasteMarginUnits, wxGBPosition( 5, 2 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxRIGHT|wxLEFT, 5 );
386 m_PasteMarginRatioLabel =
new wxStaticText( sbSizerLocalProperties->GetStaticBox(), wxID_ANY,
_(
"Solder paste relative clearance:"), wxDefaultPosition, wxDefaultSize, 0 );
388 m_PasteMarginRatioLabel->SetToolTip(
_(
"This is the local clearance ratio applied as a percentage of the pad width and height for this footprint.\nA value of 10 means the horizontal clearance value is 10 percent of the pad’s width, and the vertical clearance value is 10 percent of the pad’s height.\nThe final clearance value is the sum of this value and the absolute clearance value.\nA negative value means a smaller stencil aperture size than pad size.\nThis value can be overridden on a pad-by-pad basis in the Local Clearance and Settings tab of Pad Properties.") );
390 gbSizer1->Add(
m_PasteMarginRatioLabel, wxGBPosition( 6, 0 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxBOTTOM|wxRIGHT|wxLEFT, 5 );
392 m_PasteMarginRatioCtrl =
new wxTextCtrl( sbSizerLocalProperties->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
393 gbSizer1->Add(
m_PasteMarginRatioCtrl, wxGBPosition( 6, 1 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxBOTTOM, 5 );
395 m_PasteMarginRatioUnits =
new wxStaticText( sbSizerLocalProperties->GetStaticBox(), wxID_ANY,
_(
"%"), wxDefaultPosition, wxDefaultSize, 0 );
397 gbSizer1->Add(
m_PasteMarginRatioUnits, wxGBPosition( 6, 2 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxBOTTOM|wxRIGHT|wxLEFT, 5 );
400 sbSizerLocalProperties->Add( gbSizer1, 0, wxEXPAND|wxTOP|wxBOTTOM, 10 );
402 wxFlexGridSizer* fgSizerClearances;
403 fgSizerClearances =
new wxFlexGridSizer( 5, 3, 0, 0 );
404 fgSizerClearances->AddGrowableCol( 1 );
405 fgSizerClearances->SetFlexibleDirection( wxBOTH );
406 fgSizerClearances->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
409 sbSizerLocalProperties->Add( fgSizerClearances, 1, wxEXPAND, 5 );
411 m_staticTextInfoCopper =
new wxStaticText( sbSizerLocalProperties->GetStaticBox(), wxID_ANY,
_(
"Note: solder mask and paste values are used only for pads on copper layers."), wxDefaultPosition, wxDefaultSize, 0 );
415 m_staticTextInfoPaste =
new wxStaticText( sbSizerLocalProperties->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
420 bSizerPanelClearances->Add( sbSizerLocalProperties, 0, wxEXPAND|wxALL, 5 );
423 bSizerPanelClearances->Add( 0, 5, 0, wxEXPAND, 5 );
425 wxStaticBoxSizer* sbSizerCourtyards;
426 sbSizerCourtyards =
new wxStaticBoxSizer(
new wxStaticBox(
m_PanelClearances, wxID_ANY,
_(
"Courtyards") ), wxVERTICAL );
428 m_noCourtyards =
new wxCheckBox( sbSizerCourtyards->GetStaticBox(), wxID_ANY,
_(
"Exempt from courtyard requirement"), wxDefaultPosition, wxDefaultSize, 0 );
429 m_noCourtyards->SetToolTip(
_(
"Will not generate \"missing courtyard\" DRC violations") );
431 sbSizerCourtyards->Add(
m_noCourtyards, 0, wxBOTTOM|wxRIGHT|wxLEFT, 5 );
434 bSizerPanelClearances->Add( sbSizerCourtyards, 0, wxEXPAND|wxTOP|wxRIGHT|wxLEFT, 5 );
442 wxBoxSizer* bSizer19;
443 bSizer19 =
new wxBoxSizer( wxVERTICAL );
445 wxStaticBoxSizer* sbSizerCopperZones;
446 sbSizerCopperZones =
new wxStaticBoxSizer(
new wxStaticBox(
m_PanelPadConnections, wxID_ANY,
_(
"Connection to Copper Zones") ), wxHORIZONTAL );
448 m_staticText16 =
new wxStaticText( sbSizerCopperZones->GetStaticBox(), wxID_ANY,
_(
"Pad connection to zones:"), wxDefaultPosition, wxDefaultSize, 0 );
450 sbSizerCopperZones->Add(
m_staticText16, 0, wxALIGN_CENTER_VERTICAL|wxBOTTOM|wxLEFT|wxRIGHT, 5 );
452 wxString m_ZoneConnectionChoiceChoices[] = {
_(
"Use zone setting"),
_(
"Solid"),
_(
"Thermal relief"),
_(
"None") };
453 int m_ZoneConnectionChoiceNChoices =
sizeof( m_ZoneConnectionChoiceChoices ) /
sizeof( wxString );
454 m_ZoneConnectionChoice =
new wxChoice( sbSizerCopperZones->GetStaticBox(), wxID_ANY, wxDefaultPosition, wxDefaultSize, m_ZoneConnectionChoiceNChoices, m_ZoneConnectionChoiceChoices, 0 );
459 bSizer19->Add( sbSizerCopperZones, 0, wxALL|wxEXPAND, 5 );
462 bSizer19->Add( 0, 5, 0, wxEXPAND, 5 );
464 wxStaticBoxSizer* sbSizerNetTies;
465 sbSizerNetTies =
new wxStaticBoxSizer(
new wxStaticBox(
m_PanelPadConnections, wxID_ANY,
_(
"Net Ties") ), wxVERTICAL );
467 m_nettieGroupsLabel =
new wxStaticText( sbSizerNetTies->GetStaticBox(), wxID_ANY,
_(
"Pad groups allowed to short different nets:"), wxDefaultPosition, wxDefaultSize, 0 );
500 wxBoxSizer* bButtonSize2;
501 bButtonSize2 =
new wxBoxSizer( wxHORIZONTAL );
507 bButtonSize2->Add( 20, 0, 0, wxEXPAND, 5 );
513 sbSizerNetTies->Add( bButtonSize2, 0, wxEXPAND, 2 );
516 bSizer19->Add( sbSizerNetTies, 1, wxALL|wxEXPAND, 5 );
519 bSizer19->Add( 0, 5, 0, wxEXPAND, 5 );
521 wxStaticBoxSizer* sbJumpers;
522 sbJumpers =
new wxStaticBoxSizer(
new wxStaticBox(
m_PanelPadConnections, wxID_ANY,
_(
"Jumpers") ), wxVERTICAL );
524 m_cbDuplicatePadsAreJumpers =
new wxCheckBox( sbJumpers->GetStaticBox(), wxID_ANY,
_(
"All pads with duplicate numbers are jumpers"), wxDefaultPosition, wxDefaultSize, 0 );
525 m_cbDuplicatePadsAreJumpers->SetToolTip(
_(
"When enabled, this footprint can have more than one pad with the same number, and pads with the same number will be considered to be jumpered together internally.") );
530 sbJumpers->Add( 0, 5, 0, wxEXPAND, 5 );
532 m_jumperGroupsLabel =
new wxStaticText( sbJumpers->GetStaticBox(), wxID_ANY,
_(
"Explicit jumper pad groups:"), wxDefaultPosition, wxDefaultSize, 0 );
565 wxBoxSizer* bButtonSize21;
566 bButtonSize21 =
new wxBoxSizer( wxHORIZONTAL );
572 bButtonSize21->Add( 20, 0, 0, wxEXPAND, 5 );
578 sbJumpers->Add( bButtonSize21, 0, wxEXPAND, 5 );
581 bSizer19->Add( sbJumpers, 1, wxALL|wxTOP|wxEXPAND, 5 );
591 wxBoxSizer* bSizer16;
592 bSizer16 =
new wxBoxSizer( wxHORIZONTAL );