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 );