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, wxEXPAND|wxBOTTOM|wxRIGHT|wxLEFT, 5 );
99 wxBoxSizer* bSizer141;
100 bSizer141 =
new wxBoxSizer( wxHORIZONTAL );
102 wxFlexGridSizer* fgSizerFPID;
103 fgSizerFPID =
new wxFlexGridSizer( 4, 2, 3, 0 );
104 fgSizerFPID->AddGrowableCol( 1 );
105 fgSizerFPID->SetFlexibleDirection( wxBOTH );
106 fgSizerFPID->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
108 wxStaticText* staticFPNameLabel;
109 staticFPNameLabel =
new wxStaticText(
m_PanelGeneral, wxID_ANY,
_(
"Footprint name:"), wxDefaultPosition, wxDefaultSize, 0 );
110 staticFPNameLabel->Wrap( -1 );
111 fgSizerFPID->Add( staticFPNameLabel, 0, wxALIGN_CENTER_VERTICAL|wxTOP|wxRIGHT|wxLEFT, 5 );
116 wxStaticText* staticDescriptionLabel;
117 staticDescriptionLabel =
new wxStaticText(
m_PanelGeneral, wxID_ANY,
_(
"Description:"), wxDefaultPosition, wxDefaultSize, 0 );
118 staticDescriptionLabel->Wrap( -1 );
119 fgSizerFPID->Add( staticDescriptionLabel, 0, wxALIGN_CENTER_VERTICAL|wxALIGN_TOP|wxLEFT|wxRIGHT, 5 );
122 fgSizerFPID->Add(
m_DocCtrl, 0, wxEXPAND|wxRIGHT|wxLEFT, 5 );
129 fgSizerFPID->Add(
m_KeywordCtrl, 0, wxEXPAND|wxRIGHT|wxLEFT, 5 );
132 bSizer141->Add( fgSizerFPID, 1, wxEXPAND|wxBOTTOM, 10 );
134 wxStaticBoxSizer* sbAttributesSizer;
135 sbAttributesSizer =
new wxStaticBoxSizer(
new wxStaticBox(
m_PanelGeneral, wxID_ANY,
_(
"Fabrication Attributes") ), wxVERTICAL );
137 wxBoxSizer* bPartTypeSizer;
138 bPartTypeSizer =
new wxBoxSizer( wxHORIZONTAL );
140 m_componentTypeLabel =
new wxStaticText( sbAttributesSizer->GetStaticBox(), wxID_ANY,
_(
"Component type:"), wxDefaultPosition, wxDefaultSize, 0 );
142 bPartTypeSizer->Add(
m_componentTypeLabel, 0, wxBOTTOM|wxRIGHT|wxLEFT|wxALIGN_CENTER_VERTICAL, 5 );
144 wxString m_componentTypeChoices[] = {
_(
"Through hole"),
_(
"SMD"),
_(
"Unspecified") };
145 int m_componentTypeNChoices =
sizeof( m_componentTypeChoices ) /
sizeof( wxString );
146 m_componentType =
new wxChoice( sbAttributesSizer->GetStaticBox(), wxID_ANY, wxDefaultPosition, wxDefaultSize, m_componentTypeNChoices, m_componentTypeChoices, 0 );
148 bPartTypeSizer->Add(
m_componentType, 1, wxALIGN_CENTER_VERTICAL|wxBOTTOM|wxLEFT|wxRIGHT, 5 );
151 sbAttributesSizer->Add( bPartTypeSizer, 0, wxEXPAND|wxBOTTOM|wxRIGHT, 5 );
153 m_boardOnly =
new wxCheckBox( sbAttributesSizer->GetStaticBox(), wxID_ANY,
_(
"Not in schematic"), wxDefaultPosition, wxDefaultSize, 0 );
154 sbAttributesSizer->Add(
m_boardOnly, 0, wxALL, 5 );
156 m_excludeFromPosFiles =
new wxCheckBox( sbAttributesSizer->GetStaticBox(), wxID_ANY,
_(
"Exclude from position files"), wxDefaultPosition, wxDefaultSize, 0 );
159 m_excludeFromBOM =
new wxCheckBox( sbAttributesSizer->GetStaticBox(), wxID_ANY,
_(
"Exclude from bill of materials"), wxDefaultPosition, wxDefaultSize, 0 );
162 m_cbDNP =
new wxCheckBox( sbAttributesSizer->GetStaticBox(), wxID_ANY,
_(
"Do not populate"), wxDefaultPosition, wxDefaultSize, 0 );
163 sbAttributesSizer->Add(
m_cbDNP, 0, wxBOTTOM|wxLEFT|wxRIGHT, 5 );
166 bSizer141->Add( sbAttributesSizer, 0, wxEXPAND|wxLEFT, 5 );
169 m_PanelPropertiesBoxSizer->Add( bSizer141, 0, wxEXPAND, 5 );
177 wxBoxSizer* bSizer14;
178 bSizer14 =
new wxBoxSizer( wxHORIZONTAL );
180 wxStaticBoxSizer* sbSizer11;
181 sbSizer11 =
new wxStaticBoxSizer(
new wxStaticBox(
m_LayersPanel, wxID_ANY,
_(
"Custom Layers") ), wxVERTICAL );
183 wxGridBagSizer* gbSizer3;
184 gbSizer3 =
new wxGridBagSizer( 0, 0 );
185 gbSizer3->SetFlexibleDirection( wxBOTH );
186 gbSizer3->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
188 m_cbCustomLayers =
new wxCheckBox( sbSizer11->GetStaticBox(), wxID_ANY,
_(
"Use custom stackup"), wxDefaultPosition, wxDefaultSize, 0 );
189 gbSizer3->Add(
m_cbCustomLayers, wxGBPosition( 0, 0 ), wxGBSpan( 1, 2 ), wxALL|wxEXPAND, 5 );
191 m_copperLayerCountLabel =
new wxStaticText( sbSizer11->GetStaticBox(), wxID_ANY,
_(
"Copper layers"), wxDefaultPosition, wxDefaultSize, 0 );
193 gbSizer3->Add(
m_copperLayerCountLabel, wxGBPosition( 1, 0 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxALL, 5 );
195 wxString m_copperLayerCountChoices[] = {
_(
"2"),
_(
"4"),
_(
"6"),
_(
"8"),
_(
"10"),
_(
"12"),
_(
"14"),
_(
"16"),
_(
"18"),
_(
"20"),
_(
"22"),
_(
"24"),
_(
"26"),
_(
"28"),
_(
"30"),
_(
"32"), wxEmptyString };
196 int m_copperLayerCountNChoices =
sizeof( m_copperLayerCountChoices ) /
sizeof( wxString );
197 m_copperLayerCount =
new wxChoice( sbSizer11->GetStaticBox(), wxID_ANY, wxDefaultPosition, wxDefaultSize, m_copperLayerCountNChoices, m_copperLayerCountChoices, 0 );
201 gbSizer3->Add(
m_copperLayerCount, wxGBPosition( 1, 1 ), wxGBSpan( 1, 1 ), wxALL, 5 );
203 wxStaticBoxSizer* sbUserCustomerLayers;
204 sbUserCustomerLayers =
new wxStaticBoxSizer(
new wxStaticBox( sbSizer11->GetStaticBox(), wxID_ANY,
_(
"User Layers") ), wxVERTICAL );
233 wxBoxSizer* bButtonSize11;
234 bButtonSize11 =
new wxBoxSizer( wxHORIZONTAL );
240 bButtonSize11->Add( 20, 0, 0, wxEXPAND, 5 );
246 sbUserCustomerLayers->Add( bButtonSize11, 0, wxEXPAND, 5 );
249 gbSizer3->Add( sbUserCustomerLayers, wxGBPosition( 2, 0 ), wxGBSpan( 1, 2 ), wxALL|wxEXPAND, 5 );
252 gbSizer3->AddGrowableCol( 1 );
253 gbSizer3->AddGrowableRow( 2 );
255 sbSizer11->Add( gbSizer3, 1, wxEXPAND, 5 );
258 bSizer14->Add( sbSizer11, 1, wxEXPAND|wxRIGHT|wxTOP, 5 );
260 wxStaticBoxSizer* bSizerPrivateLayers;
261 bSizerPrivateLayers =
new wxStaticBoxSizer(
new wxStaticBox(
m_LayersPanel, wxID_ANY,
_(
"Private Layers") ), wxVERTICAL );
290 wxBoxSizer* bPrivateLayerButtonsSizer;
291 bPrivateLayerButtonsSizer =
new wxBoxSizer( wxHORIZONTAL );
297 bPrivateLayerButtonsSizer->Add( 20, 0, 0, wxEXPAND, 5 );
303 bSizerPrivateLayers->Add( bPrivateLayerButtonsSizer, 0, wxEXPAND, 5 );
306 bSizer14->Add( bSizerPrivateLayers, 1, wxEXPAND|wxLEFT|wxTOP, 5 );
314 wxBoxSizer* bSizerPanelClearances;
315 bSizerPanelClearances =
new wxBoxSizer( wxVERTICAL );
317 wxStaticBoxSizer* sbSizerLocalProperties;
318 sbSizerLocalProperties =
new wxStaticBoxSizer(
new wxStaticBox(
m_PanelClearances, wxID_ANY,
_(
"Clearances") ), wxVERTICAL );
320 m_staticTextInfo =
new wxStaticText( sbSizerLocalProperties->GetStaticBox(), wxID_ANY,
_(
"Leave values blank to use netclass values."), wxDefaultPosition, wxDefaultSize, 0 );
322 sbSizerLocalProperties->Add(
m_staticTextInfo, 0, wxBOTTOM|wxRIGHT|wxLEFT, 5 );
324 wxGridBagSizer* gbSizer1;
325 gbSizer1 =
new wxGridBagSizer( 4, 0 );
326 gbSizer1->SetFlexibleDirection( wxBOTH );
327 gbSizer1->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
328 gbSizer1->SetEmptyCellSize( wxSize( -1,15 ) );
330 m_NetClearanceLabel =
new wxStaticText( sbSizerLocalProperties->GetStaticBox(), wxID_ANY,
_(
"Pad clearance:"), wxDefaultPosition, wxDefaultSize, 0 );
332 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.") );
334 gbSizer1->Add(
m_NetClearanceLabel, wxGBPosition( 0, 0 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxRIGHT|wxLEFT, 5 );
336 m_NetClearanceCtrl =
new wxTextCtrl( sbSizerLocalProperties->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
337 gbSizer1->Add(
m_NetClearanceCtrl, wxGBPosition( 0, 1 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL, 5 );
339 m_NetClearanceUnits =
new wxStaticText( sbSizerLocalProperties->GetStaticBox(), wxID_ANY,
_(
"unit"), wxDefaultPosition, wxDefaultSize, 0 );
341 gbSizer1->Add(
m_NetClearanceUnits, wxGBPosition( 0, 2 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxRIGHT|wxLEFT, 5 );
343 m_SolderMaskMarginLabel =
new wxStaticText( sbSizerLocalProperties->GetStaticBox(), wxID_ANY,
_(
"Solder mask expansion:"), wxDefaultPosition, wxDefaultSize, 0 );
345 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.") );
347 gbSizer1->Add(
m_SolderMaskMarginLabel, wxGBPosition( 2, 0 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxRIGHT|wxLEFT, 5 );
349 m_SolderMaskMarginCtrl =
new wxTextCtrl( sbSizerLocalProperties->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
350 gbSizer1->Add(
m_SolderMaskMarginCtrl, wxGBPosition( 2, 1 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL, 5 );
352 m_SolderMaskMarginUnits =
new wxStaticText( sbSizerLocalProperties->GetStaticBox(), wxID_ANY,
_(
"unit"), wxDefaultPosition, wxDefaultSize, 0 );
354 gbSizer1->Add(
m_SolderMaskMarginUnits, wxGBPosition( 2, 2 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxRIGHT|wxLEFT, 5 );
356 m_allowBridges =
new wxCheckBox( sbSizerLocalProperties->GetStaticBox(), wxID_ANY,
_(
"Allow bridged solder mask apertures between pads"), wxDefaultPosition, wxDefaultSize, 0 );
357 gbSizer1->Add(
m_allowBridges, wxGBPosition( 3, 0 ), wxGBSpan( 1, 3 ), wxALIGN_CENTER_VERTICAL|wxRIGHT|wxLEFT, 5 );
359 m_SolderPasteMarginLabel =
new wxStaticText( sbSizerLocalProperties->GetStaticBox(), wxID_ANY,
_(
"Solder paste absolute clearance:"), wxDefaultPosition, wxDefaultSize, 0 );
361 m_SolderPasteMarginLabel->SetToolTip(
_(
"This is the local clearance between pads and the solder paste for\nthis footprint.\nThe final clearance value is the sum of this value and the clearance value ratio.\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\nClearance and Settings tab of Pad Properties.") );
363 gbSizer1->Add(
m_SolderPasteMarginLabel, wxGBPosition( 5, 0 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxRIGHT|wxLEFT, 5 );
365 m_SolderPasteMarginCtrl =
new wxTextCtrl( sbSizerLocalProperties->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
368 m_SolderPasteMarginUnits =
new wxStaticText( sbSizerLocalProperties->GetStaticBox(), wxID_ANY,
_(
"unit"), wxDefaultPosition, wxDefaultSize, 0 );
370 gbSizer1->Add(
m_SolderPasteMarginUnits, wxGBPosition( 5, 2 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxRIGHT|wxLEFT, 5 );
372 m_PasteMarginRatioLabel =
new wxStaticText( sbSizerLocalProperties->GetStaticBox(), wxID_ANY,
_(
"Solder paste relative clearance:"), wxDefaultPosition, wxDefaultSize, 0 );
374 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% of the pad’s width, and the vertical clearance value is 10% 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.") );
376 gbSizer1->Add(
m_PasteMarginRatioLabel, wxGBPosition( 6, 0 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxBOTTOM|wxRIGHT|wxLEFT, 5 );
378 m_PasteMarginRatioCtrl =
new wxTextCtrl( sbSizerLocalProperties->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
379 gbSizer1->Add(
m_PasteMarginRatioCtrl, wxGBPosition( 6, 1 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxBOTTOM, 5 );
381 m_PasteMarginRatioUnits =
new wxStaticText( sbSizerLocalProperties->GetStaticBox(), wxID_ANY,
_(
"%"), wxDefaultPosition, wxDefaultSize, 0 );
383 gbSizer1->Add(
m_PasteMarginRatioUnits, wxGBPosition( 6, 2 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxBOTTOM|wxRIGHT|wxLEFT, 5 );
386 sbSizerLocalProperties->Add( gbSizer1, 0, wxEXPAND|wxTOP|wxBOTTOM, 10 );
388 wxFlexGridSizer* fgSizerClearances;
389 fgSizerClearances =
new wxFlexGridSizer( 5, 3, 0, 0 );
390 fgSizerClearances->AddGrowableCol( 1 );
391 fgSizerClearances->SetFlexibleDirection( wxBOTH );
392 fgSizerClearances->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
395 sbSizerLocalProperties->Add( fgSizerClearances, 1, wxEXPAND, 5 );
397 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 );
401 m_staticTextInfoPaste =
new wxStaticText( sbSizerLocalProperties->GetStaticBox(), wxID_ANY,
_(
"Note: solder paste clearances (absolute and relative) are added to determine the final clearance."), wxDefaultPosition, wxDefaultSize, 0 );
406 bSizerPanelClearances->Add( sbSizerLocalProperties, 0, wxEXPAND|wxALL, 5 );
409 bSizerPanelClearances->Add( 0, 5, 0, wxEXPAND, 5 );
411 wxStaticBoxSizer* sbSizerCourtyards;
412 sbSizerCourtyards =
new wxStaticBoxSizer(
new wxStaticBox(
m_PanelClearances, wxID_ANY,
_(
"Courtyards") ), wxVERTICAL );
414 m_noCourtyards =
new wxCheckBox( sbSizerCourtyards->GetStaticBox(), wxID_ANY,
_(
"Exempt from courtyard requirement"), wxDefaultPosition, wxDefaultSize, 0 );
415 m_noCourtyards->SetToolTip(
_(
"Will not generate \"missing courtyard\" DRC violations") );
417 sbSizerCourtyards->Add(
m_noCourtyards, 0, wxBOTTOM|wxRIGHT|wxLEFT, 5 );
420 bSizerPanelClearances->Add( sbSizerCourtyards, 0, wxEXPAND|wxTOP|wxRIGHT|wxLEFT, 5 );
428 wxBoxSizer* bSizer19;
429 bSizer19 =
new wxBoxSizer( wxVERTICAL );
431 wxStaticBoxSizer* sbSizerCopperZones;
432 sbSizerCopperZones =
new wxStaticBoxSizer(
new wxStaticBox(
m_PanelPadConnections, wxID_ANY,
_(
"Connection to Copper Zones") ), wxHORIZONTAL );
434 m_staticText16 =
new wxStaticText( sbSizerCopperZones->GetStaticBox(), wxID_ANY,
_(
"Pad connection to zones:"), wxDefaultPosition, wxDefaultSize, 0 );
436 sbSizerCopperZones->Add(
m_staticText16, 0, wxALIGN_CENTER_VERTICAL|wxBOTTOM|wxLEFT|wxRIGHT, 5 );
438 wxString m_ZoneConnectionChoiceChoices[] = {
_(
"Use zone setting"),
_(
"Solid"),
_(
"Thermal relief"),
_(
"None") };
439 int m_ZoneConnectionChoiceNChoices =
sizeof( m_ZoneConnectionChoiceChoices ) /
sizeof( wxString );
440 m_ZoneConnectionChoice =
new wxChoice( sbSizerCopperZones->GetStaticBox(), wxID_ANY, wxDefaultPosition, wxDefaultSize, m_ZoneConnectionChoiceNChoices, m_ZoneConnectionChoiceChoices, 0 );
445 bSizer19->Add( sbSizerCopperZones, 0, wxALL|wxEXPAND, 5 );
448 bSizer19->Add( 0, 5, 0, wxEXPAND, 5 );
450 wxStaticBoxSizer* sbSizerNetTies;
451 sbSizerNetTies =
new wxStaticBoxSizer(
new wxStaticBox(
m_PanelPadConnections, wxID_ANY,
_(
"Net Ties") ), wxVERTICAL );
453 m_nettieGroupsLabel =
new wxStaticText( sbSizerNetTies->GetStaticBox(), wxID_ANY,
_(
"Pad groups allowed to short different nets:"), wxDefaultPosition, wxDefaultSize, 0 );
486 wxBoxSizer* bButtonSize2;
487 bButtonSize2 =
new wxBoxSizer( wxHORIZONTAL );
493 bButtonSize2->Add( 20, 0, 0, wxEXPAND, 5 );
499 sbSizerNetTies->Add( bButtonSize2, 0, wxEXPAND, 2 );
502 bSizer19->Add( sbSizerNetTies, 1, wxALL|wxEXPAND, 5 );
505 bSizer19->Add( 0, 5, 0, wxEXPAND, 5 );
507 wxStaticBoxSizer* sbJumpers;
508 sbJumpers =
new wxStaticBoxSizer(
new wxStaticBox(
m_PanelPadConnections, wxID_ANY,
_(
"Jumpers") ), wxVERTICAL );
510 m_cbDuplicatePadsAreJumpers =
new wxCheckBox( sbJumpers->GetStaticBox(), wxID_ANY,
_(
"All pads with duplicate numbers are jumpers"), wxDefaultPosition, wxDefaultSize, 0 );
511 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.") );
516 sbJumpers->Add( 0, 5, 0, wxEXPAND, 5 );
518 m_jumperGroupsLabel =
new wxStaticText( sbJumpers->GetStaticBox(), wxID_ANY,
_(
"Explicit jumper pad groups:"), wxDefaultPosition, wxDefaultSize, 0 );
551 wxBoxSizer* bButtonSize21;
552 bButtonSize21 =
new wxBoxSizer( wxHORIZONTAL );
558 bButtonSize21->Add( 20, 0, 0, wxEXPAND, 5 );
564 sbJumpers->Add( bButtonSize21, 0, wxEXPAND, 5 );
567 bSizer19->Add( sbJumpers, 1, wxALL|wxTOP|wxEXPAND, 5 );
577 wxBoxSizer* bSizer16;
578 bSizer16 =
new wxBoxSizer( wxHORIZONTAL );