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 );
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, 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, 5 );
124 m_DocCtrl =
new wxTextCtrl( sbMetadataSizer->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
125 fgSizerFPID->Add(
m_DocCtrl, 0, wxEXPAND|wxLEFT, 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 );
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|wxRIGHT, 5 );
160 sbAttributesSizer->Add( bPartTypeSizer, 0, wxEXPAND|wxBOTTOM|wxRIGHT, 5 );
162 m_boardOnly =
new wxCheckBox( sbAttributesSizer->GetStaticBox(), wxID_ANY,
_(
"Not in schematic"), wxDefaultPosition, wxDefaultSize, 0 );
163 sbAttributesSizer->Add(
m_boardOnly, 0, wxALL, 5 );
165 m_excludeFromPosFiles =
new wxCheckBox( sbAttributesSizer->GetStaticBox(), wxID_ANY,
_(
"Exclude from position files"), wxDefaultPosition, wxDefaultSize, 0 );
168 m_excludeFromBOM =
new wxCheckBox( sbAttributesSizer->GetStaticBox(), wxID_ANY,
_(
"Exclude from bill of materials"), wxDefaultPosition, wxDefaultSize, 0 );
171 m_cbDNP =
new wxCheckBox( sbAttributesSizer->GetStaticBox(), wxID_ANY,
_(
"Do not populate"), wxDefaultPosition, wxDefaultSize, 0 );
172 sbAttributesSizer->Add(
m_cbDNP, 0, wxBOTTOM|wxLEFT|wxRIGHT, 5 );
175 bColumns->Add( sbAttributesSizer, 0, wxEXPAND|wxALL, 5 );
178 m_PanelPropertiesBoxSizer->Add( bColumns, 0, wxEXPAND, 5 );
186 wxBoxSizer* bSizer14;
187 bSizer14 =
new wxBoxSizer( wxHORIZONTAL );
189 wxStaticBoxSizer* sbSizer11;
190 sbSizer11 =
new wxStaticBoxSizer(
new wxStaticBox(
m_LayersPanel, wxID_ANY,
_(
"Custom Layers") ), wxVERTICAL );
192 wxGridBagSizer* gbSizer3;
193 gbSizer3 =
new wxGridBagSizer( 0, 0 );
194 gbSizer3->SetFlexibleDirection( wxBOTH );
195 gbSizer3->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
197 m_cbCustomLayers =
new wxCheckBox( sbSizer11->GetStaticBox(), wxID_ANY,
_(
"Use custom stackup"), wxDefaultPosition, wxDefaultSize, 0 );
198 gbSizer3->Add(
m_cbCustomLayers, wxGBPosition( 0, 0 ), wxGBSpan( 1, 2 ), wxALL|wxEXPAND, 5 );
200 m_copperLayerCountLabel =
new wxStaticText( sbSizer11->GetStaticBox(), wxID_ANY,
_(
"Copper layers"), wxDefaultPosition, wxDefaultSize, 0 );
202 gbSizer3->Add(
m_copperLayerCountLabel, wxGBPosition( 1, 0 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxALL, 5 );
204 wxString m_copperLayerCountChoices[] = {
_(
"2"),
_(
"4"),
_(
"6"),
_(
"8"),
_(
"10"),
_(
"12"),
_(
"14"),
_(
"16"),
_(
"18"),
_(
"20"),
_(
"22"),
_(
"24"),
_(
"26"),
_(
"28"),
_(
"30"),
_(
"32"), wxEmptyString };
205 int m_copperLayerCountNChoices =
sizeof( m_copperLayerCountChoices ) /
sizeof( wxString );
206 m_copperLayerCount =
new wxChoice( sbSizer11->GetStaticBox(), wxID_ANY, wxDefaultPosition, wxDefaultSize, m_copperLayerCountNChoices, m_copperLayerCountChoices, 0 );
210 gbSizer3->Add(
m_copperLayerCount, wxGBPosition( 1, 1 ), wxGBSpan( 1, 1 ), wxALL, 5 );
212 wxStaticBoxSizer* sbUserCustomerLayers;
213 sbUserCustomerLayers =
new wxStaticBoxSizer(
new wxStaticBox( sbSizer11->GetStaticBox(), wxID_ANY,
_(
"User Layers") ), wxVERTICAL );
242 wxBoxSizer* bButtonSize11;
243 bButtonSize11 =
new wxBoxSizer( wxHORIZONTAL );
249 bButtonSize11->Add( 20, 0, 0, wxEXPAND, 5 );
255 sbUserCustomerLayers->Add( bButtonSize11, 0, wxEXPAND, 5 );
258 gbSizer3->Add( sbUserCustomerLayers, wxGBPosition( 2, 0 ), wxGBSpan( 1, 2 ), wxALL|wxEXPAND, 5 );
261 gbSizer3->AddGrowableCol( 1 );
262 gbSizer3->AddGrowableRow( 2 );
264 sbSizer11->Add( gbSizer3, 1, wxEXPAND, 5 );
267 bSizer14->Add( sbSizer11, 1, wxEXPAND|wxRIGHT|wxTOP, 5 );
269 wxStaticBoxSizer* bSizerPrivateLayers;
270 bSizerPrivateLayers =
new wxStaticBoxSizer(
new wxStaticBox(
m_LayersPanel, wxID_ANY,
_(
"Private Layers") ), wxVERTICAL );
299 wxBoxSizer* bPrivateLayerButtonsSizer;
300 bPrivateLayerButtonsSizer =
new wxBoxSizer( wxHORIZONTAL );
306 bPrivateLayerButtonsSizer->Add( 20, 0, 0, wxEXPAND, 5 );
312 bSizerPrivateLayers->Add( bPrivateLayerButtonsSizer, 0, wxEXPAND, 5 );
315 bSizer14->Add( bSizerPrivateLayers, 1, wxEXPAND|wxLEFT|wxTOP, 5 );
323 wxBoxSizer* bSizerPanelClearances;
324 bSizerPanelClearances =
new wxBoxSizer( wxVERTICAL );
326 wxStaticBoxSizer* sbSizerLocalProperties;
327 sbSizerLocalProperties =
new wxStaticBoxSizer(
new wxStaticBox(
m_PanelClearances, wxID_ANY,
_(
"Clearances") ), wxVERTICAL );
329 m_staticTextInfo =
new wxStaticText( sbSizerLocalProperties->GetStaticBox(), wxID_ANY,
_(
"Leave values blank to use netclass values."), wxDefaultPosition, wxDefaultSize, 0 );
331 sbSizerLocalProperties->Add(
m_staticTextInfo, 0, wxBOTTOM|wxRIGHT|wxLEFT, 5 );
333 wxGridBagSizer* gbSizer1;
334 gbSizer1 =
new wxGridBagSizer( 4, 0 );
335 gbSizer1->SetFlexibleDirection( wxBOTH );
336 gbSizer1->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
337 gbSizer1->SetEmptyCellSize( wxSize( -1,15 ) );
339 m_NetClearanceLabel =
new wxStaticText( sbSizerLocalProperties->GetStaticBox(), wxID_ANY,
_(
"Pad clearance:"), wxDefaultPosition, wxDefaultSize, 0 );
341 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.") );
343 gbSizer1->Add(
m_NetClearanceLabel, wxGBPosition( 0, 0 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxRIGHT|wxLEFT, 5 );
345 m_NetClearanceCtrl =
new wxTextCtrl( sbSizerLocalProperties->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
346 gbSizer1->Add(
m_NetClearanceCtrl, wxGBPosition( 0, 1 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL, 5 );
348 m_NetClearanceUnits =
new wxStaticText( sbSizerLocalProperties->GetStaticBox(), wxID_ANY,
_(
"unit"), wxDefaultPosition, wxDefaultSize, 0 );
350 gbSizer1->Add(
m_NetClearanceUnits, wxGBPosition( 0, 2 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxRIGHT|wxLEFT, 5 );
352 m_SolderMaskMarginLabel =
new wxStaticText( sbSizerLocalProperties->GetStaticBox(), wxID_ANY,
_(
"Solder mask expansion:"), wxDefaultPosition, wxDefaultSize, 0 );
354 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.") );
356 gbSizer1->Add(
m_SolderMaskMarginLabel, wxGBPosition( 2, 0 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxRIGHT|wxLEFT, 5 );
358 m_SolderMaskMarginCtrl =
new wxTextCtrl( sbSizerLocalProperties->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
359 gbSizer1->Add(
m_SolderMaskMarginCtrl, wxGBPosition( 2, 1 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL, 5 );
361 m_SolderMaskMarginUnits =
new wxStaticText( sbSizerLocalProperties->GetStaticBox(), wxID_ANY,
_(
"unit"), wxDefaultPosition, wxDefaultSize, 0 );
363 gbSizer1->Add(
m_SolderMaskMarginUnits, wxGBPosition( 2, 2 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxRIGHT|wxLEFT, 5 );
365 m_allowBridges =
new wxCheckBox( sbSizerLocalProperties->GetStaticBox(), wxID_ANY,
_(
"Allow bridged solder mask apertures between pads"), wxDefaultPosition, wxDefaultSize, 0 );
366 gbSizer1->Add(
m_allowBridges, wxGBPosition( 3, 0 ), wxGBSpan( 1, 3 ), wxALIGN_CENTER_VERTICAL|wxRIGHT|wxLEFT, 5 );
368 m_SolderPasteMarginLabel =
new wxStaticText( sbSizerLocalProperties->GetStaticBox(), wxID_ANY,
_(
"Solder paste clearance:"), wxDefaultPosition, wxDefaultSize, 0 );
370 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.") );
372 gbSizer1->Add(
m_SolderPasteMarginLabel, wxGBPosition( 5, 0 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxRIGHT|wxLEFT, 5 );
374 m_SolderPasteMarginCtrl =
new wxTextCtrl( sbSizerLocalProperties->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
375 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.") );
379 m_SolderPasteMarginUnits =
new wxStaticText( sbSizerLocalProperties->GetStaticBox(), wxID_ANY,
_(
"unit"), wxDefaultPosition, wxDefaultSize, 0 );
381 gbSizer1->Add(
m_SolderPasteMarginUnits, wxGBPosition( 5, 2 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxRIGHT|wxLEFT, 5 );
383 m_PasteMarginRatioLabel =
new wxStaticText( sbSizerLocalProperties->GetStaticBox(), wxID_ANY,
_(
"Solder paste relative clearance:"), wxDefaultPosition, wxDefaultSize, 0 );
385 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.") );
387 gbSizer1->Add(
m_PasteMarginRatioLabel, wxGBPosition( 6, 0 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxBOTTOM|wxRIGHT|wxLEFT, 5 );
389 m_PasteMarginRatioCtrl =
new wxTextCtrl( sbSizerLocalProperties->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
390 gbSizer1->Add(
m_PasteMarginRatioCtrl, wxGBPosition( 6, 1 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxBOTTOM, 5 );
392 m_PasteMarginRatioUnits =
new wxStaticText( sbSizerLocalProperties->GetStaticBox(), wxID_ANY,
_(
"%"), wxDefaultPosition, wxDefaultSize, 0 );
394 gbSizer1->Add(
m_PasteMarginRatioUnits, wxGBPosition( 6, 2 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxBOTTOM|wxRIGHT|wxLEFT, 5 );
397 sbSizerLocalProperties->Add( gbSizer1, 0, wxEXPAND|wxTOP|wxBOTTOM, 10 );
399 wxFlexGridSizer* fgSizerClearances;
400 fgSizerClearances =
new wxFlexGridSizer( 5, 3, 0, 0 );
401 fgSizerClearances->AddGrowableCol( 1 );
402 fgSizerClearances->SetFlexibleDirection( wxBOTH );
403 fgSizerClearances->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
406 sbSizerLocalProperties->Add( fgSizerClearances, 1, wxEXPAND, 5 );
408 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 );
412 m_staticTextInfoPaste =
new wxStaticText( sbSizerLocalProperties->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
417 bSizerPanelClearances->Add( sbSizerLocalProperties, 0, wxEXPAND|wxALL, 5 );
420 bSizerPanelClearances->Add( 0, 5, 0, wxEXPAND, 5 );
422 wxStaticBoxSizer* sbSizerCourtyards;
423 sbSizerCourtyards =
new wxStaticBoxSizer(
new wxStaticBox(
m_PanelClearances, wxID_ANY,
_(
"Courtyards") ), wxVERTICAL );
425 m_noCourtyards =
new wxCheckBox( sbSizerCourtyards->GetStaticBox(), wxID_ANY,
_(
"Exempt from courtyard requirement"), wxDefaultPosition, wxDefaultSize, 0 );
426 m_noCourtyards->SetToolTip(
_(
"Will not generate \"missing courtyard\" DRC violations") );
428 sbSizerCourtyards->Add(
m_noCourtyards, 0, wxBOTTOM|wxRIGHT|wxLEFT, 5 );
431 bSizerPanelClearances->Add( sbSizerCourtyards, 0, wxEXPAND|wxTOP|wxRIGHT|wxLEFT, 5 );
439 wxBoxSizer* bSizer19;
440 bSizer19 =
new wxBoxSizer( wxVERTICAL );
442 wxStaticBoxSizer* sbSizerCopperZones;
443 sbSizerCopperZones =
new wxStaticBoxSizer(
new wxStaticBox(
m_PanelPadConnections, wxID_ANY,
_(
"Connection to Copper Zones") ), wxHORIZONTAL );
445 m_staticText16 =
new wxStaticText( sbSizerCopperZones->GetStaticBox(), wxID_ANY,
_(
"Pad connection to zones:"), wxDefaultPosition, wxDefaultSize, 0 );
447 sbSizerCopperZones->Add(
m_staticText16, 0, wxALIGN_CENTER_VERTICAL|wxBOTTOM|wxLEFT|wxRIGHT, 5 );
449 wxString m_ZoneConnectionChoiceChoices[] = {
_(
"Use zone setting"),
_(
"Solid"),
_(
"Thermal relief"),
_(
"None") };
450 int m_ZoneConnectionChoiceNChoices =
sizeof( m_ZoneConnectionChoiceChoices ) /
sizeof( wxString );
451 m_ZoneConnectionChoice =
new wxChoice( sbSizerCopperZones->GetStaticBox(), wxID_ANY, wxDefaultPosition, wxDefaultSize, m_ZoneConnectionChoiceNChoices, m_ZoneConnectionChoiceChoices, 0 );
456 bSizer19->Add( sbSizerCopperZones, 0, wxALL|wxEXPAND, 5 );
459 bSizer19->Add( 0, 5, 0, wxEXPAND, 5 );
461 wxStaticBoxSizer* sbSizerNetTies;
462 sbSizerNetTies =
new wxStaticBoxSizer(
new wxStaticBox(
m_PanelPadConnections, wxID_ANY,
_(
"Net Ties") ), wxVERTICAL );
464 m_nettieGroupsLabel =
new wxStaticText( sbSizerNetTies->GetStaticBox(), wxID_ANY,
_(
"Pad groups allowed to short different nets:"), wxDefaultPosition, wxDefaultSize, 0 );
497 wxBoxSizer* bButtonSize2;
498 bButtonSize2 =
new wxBoxSizer( wxHORIZONTAL );
504 bButtonSize2->Add( 20, 0, 0, wxEXPAND, 5 );
510 sbSizerNetTies->Add( bButtonSize2, 0, wxEXPAND, 2 );
513 bSizer19->Add( sbSizerNetTies, 1, wxALL|wxEXPAND, 5 );
516 bSizer19->Add( 0, 5, 0, wxEXPAND, 5 );
518 wxStaticBoxSizer* sbJumpers;
519 sbJumpers =
new wxStaticBoxSizer(
new wxStaticBox(
m_PanelPadConnections, wxID_ANY,
_(
"Jumpers") ), wxVERTICAL );
521 m_cbDuplicatePadsAreJumpers =
new wxCheckBox( sbJumpers->GetStaticBox(), wxID_ANY,
_(
"All pads with duplicate numbers are jumpers"), wxDefaultPosition, wxDefaultSize, 0 );
522 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.") );
527 sbJumpers->Add( 0, 5, 0, wxEXPAND, 5 );
529 m_jumperGroupsLabel =
new wxStaticText( sbJumpers->GetStaticBox(), wxID_ANY,
_(
"Explicit jumper pad groups:"), wxDefaultPosition, wxDefaultSize, 0 );
562 wxBoxSizer* bButtonSize21;
563 bButtonSize21 =
new wxBoxSizer( wxHORIZONTAL );
569 bButtonSize21->Add( 20, 0, 0, wxEXPAND, 5 );
575 sbJumpers->Add( bButtonSize21, 0, wxEXPAND, 5 );
578 bSizer19->Add( sbJumpers, 1, wxALL|wxTOP|wxEXPAND, 5 );
588 wxBoxSizer* bSizer16;
589 bSizer16 =
new wxBoxSizer( wxHORIZONTAL );