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 );
137 wxBoxSizer* bHeightSizer;
138 bHeightSizer =
new wxBoxSizer( wxHORIZONTAL );
140 m_heightLabel =
new wxStaticText( sbMetadataSizer->GetStaticBox(), wxID_ANY,
_(
"Height:"), wxDefaultPosition, wxDefaultSize, 0 );
142 m_heightLabel->SetToolTip(
_(
"Optional overall height specification for the footprint, independent from any 3D models.") );
144 bHeightSizer->Add(
m_heightLabel, 0, wxALIGN_CENTER_VERTICAL|wxRIGHT|wxLEFT, 5 );
146 m_heightCtrl =
new wxTextCtrl( sbMetadataSizer->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
147 m_heightCtrl->SetToolTip(
_(
"Optional overall height specification for the footprint, independent from any 3D models.") );
151 m_heightUnits =
new wxStaticText( sbMetadataSizer->GetStaticBox(), wxID_ANY,
_(
"unit"), wxDefaultPosition, wxDefaultSize, 0 );
153 bHeightSizer->Add(
m_heightUnits, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 3 );
156 sbMetadataSizer->Add( bHeightSizer, 0, wxEXPAND, 5 );
159 bColumns->Add( sbMetadataSizer, 1, wxEXPAND|wxALL, 5 );
162 bColumns->Add( 5, 0, 0, wxEXPAND, 5 );
164 wxStaticBoxSizer* sbAttributesSizer;
165 sbAttributesSizer =
new wxStaticBoxSizer(
new wxStaticBox(
m_PanelGeneral, wxID_ANY,
_(
"Fabrication Attributes") ), wxVERTICAL );
167 wxBoxSizer* bPartTypeSizer;
168 bPartTypeSizer =
new wxBoxSizer( wxHORIZONTAL );
170 m_componentTypeLabel =
new wxStaticText( sbAttributesSizer->GetStaticBox(), wxID_ANY,
_(
"Component type:"), wxDefaultPosition, wxDefaultSize, 0 );
172 bPartTypeSizer->Add(
m_componentTypeLabel, 0, wxBOTTOM|wxRIGHT|wxLEFT|wxALIGN_CENTER_VERTICAL, 5 );
174 wxString m_componentTypeChoices[] = {
_(
"Through hole"),
_(
"SMD"),
_(
"Unspecified") };
175 int m_componentTypeNChoices =
sizeof( m_componentTypeChoices ) /
sizeof( wxString );
176 m_componentType =
new wxChoice( sbAttributesSizer->GetStaticBox(), wxID_ANY, wxDefaultPosition, wxDefaultSize, m_componentTypeNChoices, m_componentTypeChoices, 0 );
178 bPartTypeSizer->Add(
m_componentType, 1, wxALIGN_CENTER_VERTICAL|wxBOTTOM|wxLEFT, 5 );
181 sbAttributesSizer->Add( bPartTypeSizer, 0, wxEXPAND|wxBOTTOM|wxRIGHT, 5 );
183 m_cbExcludeFromSim =
new wxCheckBox( sbAttributesSizer->GetStaticBox(), wxID_ANY,
_(
"Exclude from simulation"), wxDefaultPosition, wxDefaultSize, 0 );
186 m_boardOnly =
new wxCheckBox( sbAttributesSizer->GetStaticBox(), wxID_ANY,
_(
"Not in schematic"), wxDefaultPosition, wxDefaultSize, 0 );
187 sbAttributesSizer->Add(
m_boardOnly, 0, wxBOTTOM|wxLEFT|wxRIGHT, 5 );
189 m_cbDNP =
new wxCheckBox( sbAttributesSizer->GetStaticBox(), wxID_ANY,
_(
"Do not populate"), wxDefaultPosition, wxDefaultSize, 0 );
190 sbAttributesSizer->Add(
m_cbDNP, 0, wxBOTTOM|wxRIGHT|wxLEFT, 5 );
192 m_excludeFromBOM =
new wxCheckBox( sbAttributesSizer->GetStaticBox(), wxID_ANY,
_(
"Exclude from bill of materials"), wxDefaultPosition, wxDefaultSize, 0 );
195 m_excludeFromPosFiles =
new wxCheckBox( sbAttributesSizer->GetStaticBox(), wxID_ANY,
_(
"Exclude from position files"), wxDefaultPosition, wxDefaultSize, 0 );
199 bColumns->Add( sbAttributesSizer, 0, wxEXPAND|wxALL, 5 );
202 m_PanelPropertiesBoxSizer->Add( bColumns, 0, wxEXPAND, 5 );
210 wxBoxSizer* bSizer14;
211 bSizer14 =
new wxBoxSizer( wxHORIZONTAL );
213 wxStaticBoxSizer* sbSizer11;
214 sbSizer11 =
new wxStaticBoxSizer(
new wxStaticBox(
m_LayersPanel, wxID_ANY,
_(
"Custom Layers") ), wxVERTICAL );
216 wxGridBagSizer* gbSizer3;
217 gbSizer3 =
new wxGridBagSizer( 0, 0 );
218 gbSizer3->SetFlexibleDirection( wxBOTH );
219 gbSizer3->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
221 m_cbCustomLayers =
new wxCheckBox( sbSizer11->GetStaticBox(), wxID_ANY,
_(
"Use custom stackup"), wxDefaultPosition, wxDefaultSize, 0 );
222 gbSizer3->Add(
m_cbCustomLayers, wxGBPosition( 0, 0 ), wxGBSpan( 1, 2 ), wxALL|wxEXPAND, 5 );
224 m_copperLayerCountLabel =
new wxStaticText( sbSizer11->GetStaticBox(), wxID_ANY,
_(
"Copper layers"), wxDefaultPosition, wxDefaultSize, 0 );
226 gbSizer3->Add(
m_copperLayerCountLabel, wxGBPosition( 1, 0 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxALL, 5 );
228 wxString m_copperLayerCountChoices[] = {
_(
"2"),
_(
"4"),
_(
"6"),
_(
"8"),
_(
"10"),
_(
"12"),
_(
"14"),
_(
"16"),
_(
"18"),
_(
"20"),
_(
"22"),
_(
"24"),
_(
"26"),
_(
"28"),
_(
"30"),
_(
"32"), wxEmptyString };
229 int m_copperLayerCountNChoices =
sizeof( m_copperLayerCountChoices ) /
sizeof( wxString );
230 m_copperLayerCount =
new wxChoice( sbSizer11->GetStaticBox(), wxID_ANY, wxDefaultPosition, wxDefaultSize, m_copperLayerCountNChoices, m_copperLayerCountChoices, 0 );
234 gbSizer3->Add(
m_copperLayerCount, wxGBPosition( 1, 1 ), wxGBSpan( 1, 1 ), wxALL, 5 );
236 wxStaticBoxSizer* sbUserCustomerLayers;
237 sbUserCustomerLayers =
new wxStaticBoxSizer(
new wxStaticBox( sbSizer11->GetStaticBox(), wxID_ANY,
_(
"User Layers") ), wxVERTICAL );
266 wxBoxSizer* bButtonSize11;
267 bButtonSize11 =
new wxBoxSizer( wxHORIZONTAL );
273 bButtonSize11->Add( 20, 0, 0, wxEXPAND, 5 );
279 sbUserCustomerLayers->Add( bButtonSize11, 0, wxEXPAND, 5 );
282 gbSizer3->Add( sbUserCustomerLayers, wxGBPosition( 2, 0 ), wxGBSpan( 1, 2 ), wxALL|wxEXPAND, 5 );
285 gbSizer3->AddGrowableCol( 1 );
286 gbSizer3->AddGrowableRow( 2 );
288 sbSizer11->Add( gbSizer3, 1, wxEXPAND, 5 );
291 bSizer14->Add( sbSizer11, 1, wxEXPAND|wxRIGHT|wxTOP, 5 );
293 wxStaticBoxSizer* bSizerPrivateLayers;
294 bSizerPrivateLayers =
new wxStaticBoxSizer(
new wxStaticBox(
m_LayersPanel, wxID_ANY,
_(
"Private Layers") ), wxVERTICAL );
323 wxBoxSizer* bPrivateLayerButtonsSizer;
324 bPrivateLayerButtonsSizer =
new wxBoxSizer( wxHORIZONTAL );
330 bPrivateLayerButtonsSizer->Add( 20, 0, 0, wxEXPAND, 5 );
336 bSizerPrivateLayers->Add( bPrivateLayerButtonsSizer, 0, wxEXPAND, 5 );
339 bSizer14->Add( bSizerPrivateLayers, 1, wxEXPAND|wxLEFT|wxTOP, 5 );
347 wxBoxSizer* bSizerPanelClearances;
348 bSizerPanelClearances =
new wxBoxSizer( wxVERTICAL );
350 wxStaticBoxSizer* sbSizerLocalProperties;
351 sbSizerLocalProperties =
new wxStaticBoxSizer(
new wxStaticBox(
m_PanelClearances, wxID_ANY,
_(
"Clearances") ), wxVERTICAL );
353 m_staticTextInfo =
new wxStaticText( sbSizerLocalProperties->GetStaticBox(), wxID_ANY,
_(
"Leave values blank to use netclass values."), wxDefaultPosition, wxDefaultSize, 0 );
355 sbSizerLocalProperties->Add(
m_staticTextInfo, 0, wxBOTTOM|wxRIGHT|wxLEFT, 5 );
357 wxGridBagSizer* gbSizer1;
358 gbSizer1 =
new wxGridBagSizer( 4, 0 );
359 gbSizer1->SetFlexibleDirection( wxBOTH );
360 gbSizer1->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
361 gbSizer1->SetEmptyCellSize( wxSize( -1,15 ) );
363 m_NetClearanceLabel =
new wxStaticText( sbSizerLocalProperties->GetStaticBox(), wxID_ANY,
_(
"Pad clearance:"), wxDefaultPosition, wxDefaultSize, 0 );
365 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.") );
367 gbSizer1->Add(
m_NetClearanceLabel, wxGBPosition( 0, 0 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxRIGHT|wxLEFT, 5 );
369 m_NetClearanceCtrl =
new wxTextCtrl( sbSizerLocalProperties->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
370 gbSizer1->Add(
m_NetClearanceCtrl, wxGBPosition( 0, 1 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL, 5 );
372 m_NetClearanceUnits =
new wxStaticText( sbSizerLocalProperties->GetStaticBox(), wxID_ANY,
_(
"unit"), wxDefaultPosition, wxDefaultSize, 0 );
374 gbSizer1->Add(
m_NetClearanceUnits, wxGBPosition( 0, 2 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxRIGHT|wxLEFT, 5 );
376 m_SolderMaskMarginLabel =
new wxStaticText( sbSizerLocalProperties->GetStaticBox(), wxID_ANY,
_(
"Solder mask expansion:"), wxDefaultPosition, wxDefaultSize, 0 );
378 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.") );
380 gbSizer1->Add(
m_SolderMaskMarginLabel, wxGBPosition( 2, 0 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxRIGHT|wxLEFT, 5 );
382 m_SolderMaskMarginCtrl =
new wxTextCtrl( sbSizerLocalProperties->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
383 gbSizer1->Add(
m_SolderMaskMarginCtrl, wxGBPosition( 2, 1 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL, 5 );
385 m_SolderMaskMarginUnits =
new wxStaticText( sbSizerLocalProperties->GetStaticBox(), wxID_ANY,
_(
"unit"), wxDefaultPosition, wxDefaultSize, 0 );
387 gbSizer1->Add(
m_SolderMaskMarginUnits, wxGBPosition( 2, 2 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxRIGHT|wxLEFT, 5 );
389 m_allowBridges =
new wxCheckBox( sbSizerLocalProperties->GetStaticBox(), wxID_ANY,
_(
"Allow bridged solder mask apertures between pads"), wxDefaultPosition, wxDefaultSize, 0 );
390 gbSizer1->Add(
m_allowBridges, wxGBPosition( 3, 0 ), wxGBSpan( 1, 3 ), wxALIGN_CENTER_VERTICAL|wxRIGHT|wxLEFT, 5 );
392 m_SolderPasteMarginLabel =
new wxStaticText( sbSizerLocalProperties->GetStaticBox(), wxID_ANY,
_(
"Solder paste clearance:"), wxDefaultPosition, wxDefaultSize, 0 );
394 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.") );
396 gbSizer1->Add(
m_SolderPasteMarginLabel, wxGBPosition( 5, 0 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxRIGHT|wxLEFT, 5 );
398 m_SolderPasteMarginCtrl =
new wxTextCtrl( sbSizerLocalProperties->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
399 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.") );
403 m_SolderPasteMarginUnits =
new wxStaticText( sbSizerLocalProperties->GetStaticBox(), wxID_ANY,
_(
"unit"), wxDefaultPosition, wxDefaultSize, 0 );
405 gbSizer1->Add(
m_SolderPasteMarginUnits, wxGBPosition( 5, 2 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxRIGHT|wxLEFT, 5 );
407 m_PasteMarginRatioLabel =
new wxStaticText( sbSizerLocalProperties->GetStaticBox(), wxID_ANY,
_(
"Solder paste relative clearance:"), wxDefaultPosition, wxDefaultSize, 0 );
409 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.") );
411 gbSizer1->Add(
m_PasteMarginRatioLabel, wxGBPosition( 6, 0 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxBOTTOM|wxRIGHT|wxLEFT, 5 );
413 m_PasteMarginRatioCtrl =
new wxTextCtrl( sbSizerLocalProperties->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
414 gbSizer1->Add(
m_PasteMarginRatioCtrl, wxGBPosition( 6, 1 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxBOTTOM, 5 );
416 m_PasteMarginRatioUnits =
new wxStaticText( sbSizerLocalProperties->GetStaticBox(), wxID_ANY,
_(
"%"), wxDefaultPosition, wxDefaultSize, 0 );
418 gbSizer1->Add(
m_PasteMarginRatioUnits, wxGBPosition( 6, 2 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxBOTTOM|wxRIGHT|wxLEFT, 5 );
421 sbSizerLocalProperties->Add( gbSizer1, 0, wxEXPAND|wxTOP|wxBOTTOM, 10 );
423 wxFlexGridSizer* fgSizerClearances;
424 fgSizerClearances =
new wxFlexGridSizer( 5, 3, 0, 0 );
425 fgSizerClearances->AddGrowableCol( 1 );
426 fgSizerClearances->SetFlexibleDirection( wxBOTH );
427 fgSizerClearances->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
430 sbSizerLocalProperties->Add( fgSizerClearances, 1, wxEXPAND, 5 );
432 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 );
436 m_staticTextInfoPaste =
new wxStaticText( sbSizerLocalProperties->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
441 bSizerPanelClearances->Add( sbSizerLocalProperties, 0, wxEXPAND|wxALL, 5 );
444 bSizerPanelClearances->Add( 0, 5, 0, wxEXPAND, 5 );
446 wxStaticBoxSizer* sbSizerCourtyards;
447 sbSizerCourtyards =
new wxStaticBoxSizer(
new wxStaticBox(
m_PanelClearances, wxID_ANY,
_(
"Courtyards") ), wxVERTICAL );
449 m_noCourtyards =
new wxCheckBox( sbSizerCourtyards->GetStaticBox(), wxID_ANY,
_(
"Exempt from courtyard requirement"), wxDefaultPosition, wxDefaultSize, 0 );
450 m_noCourtyards->SetToolTip(
_(
"Will not generate \"missing courtyard\" DRC violations") );
452 sbSizerCourtyards->Add(
m_noCourtyards, 0, wxBOTTOM|wxRIGHT|wxLEFT, 5 );
455 bSizerPanelClearances->Add( sbSizerCourtyards, 0, wxEXPAND|wxTOP|wxRIGHT|wxLEFT, 5 );
463 wxBoxSizer* bSizer19;
464 bSizer19 =
new wxBoxSizer( wxVERTICAL );
466 wxStaticBoxSizer* sbSizerCopperZones;
467 sbSizerCopperZones =
new wxStaticBoxSizer(
new wxStaticBox(
m_PanelPadConnections, wxID_ANY,
_(
"Connection to Copper Zones") ), wxHORIZONTAL );
469 m_staticText16 =
new wxStaticText( sbSizerCopperZones->GetStaticBox(), wxID_ANY,
_(
"Pad connection to zones:"), wxDefaultPosition, wxDefaultSize, 0 );
471 sbSizerCopperZones->Add(
m_staticText16, 0, wxALIGN_CENTER_VERTICAL|wxBOTTOM|wxLEFT|wxRIGHT, 5 );
473 wxString m_ZoneConnectionChoiceChoices[] = {
_(
"Use zone setting"),
_(
"Solid"),
_(
"Thermal relief"),
_(
"None") };
474 int m_ZoneConnectionChoiceNChoices =
sizeof( m_ZoneConnectionChoiceChoices ) /
sizeof( wxString );
475 m_ZoneConnectionChoice =
new wxChoice( sbSizerCopperZones->GetStaticBox(), wxID_ANY, wxDefaultPosition, wxDefaultSize, m_ZoneConnectionChoiceNChoices, m_ZoneConnectionChoiceChoices, 0 );
480 bSizer19->Add( sbSizerCopperZones, 0, wxALL|wxEXPAND, 5 );
483 bSizer19->Add( 0, 5, 0, wxEXPAND, 5 );
485 wxStaticBoxSizer* sbSizerNetTies;
486 sbSizerNetTies =
new wxStaticBoxSizer(
new wxStaticBox(
m_PanelPadConnections, wxID_ANY,
_(
"Net Ties") ), wxVERTICAL );
488 m_nettieGroupsLabel =
new wxStaticText( sbSizerNetTies->GetStaticBox(), wxID_ANY,
_(
"Pad groups allowed to short different nets:"), wxDefaultPosition, wxDefaultSize, 0 );
521 wxBoxSizer* bButtonSize2;
522 bButtonSize2 =
new wxBoxSizer( wxHORIZONTAL );
528 bButtonSize2->Add( 20, 0, 0, wxEXPAND, 5 );
534 sbSizerNetTies->Add( bButtonSize2, 0, wxEXPAND, 2 );
537 bSizer19->Add( sbSizerNetTies, 1, wxALL|wxEXPAND, 5 );
540 bSizer19->Add( 0, 5, 0, wxEXPAND, 5 );
542 wxStaticBoxSizer* sbJumpers;
543 sbJumpers =
new wxStaticBoxSizer(
new wxStaticBox(
m_PanelPadConnections, wxID_ANY,
_(
"Jumpers") ), wxVERTICAL );
545 m_cbDuplicatePadsAreJumpers =
new wxCheckBox( sbJumpers->GetStaticBox(), wxID_ANY,
_(
"All pads with duplicate numbers are jumpers"), wxDefaultPosition, wxDefaultSize, 0 );
546 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.") );
551 sbJumpers->Add( 0, 5, 0, wxEXPAND, 5 );
553 m_jumperGroupsLabel =
new wxStaticText( sbJumpers->GetStaticBox(), wxID_ANY,
_(
"Explicit jumper pad groups:"), wxDefaultPosition, wxDefaultSize, 0 );
586 wxBoxSizer* bButtonSize21;
587 bButtonSize21 =
new wxBoxSizer( wxHORIZONTAL );
593 bButtonSize21->Add( 20, 0, 0, wxEXPAND, 5 );
599 sbJumpers->Add( bButtonSize21, 0, wxEXPAND, 5 );
602 bSizer19->Add( sbJumpers, 1, wxALL|wxTOP|wxEXPAND, 5 );
612 wxBoxSizer* bSizer16;
613 bSizer16 =
new wxBoxSizer( wxHORIZONTAL );