14DIALOG_PAD_PROPERTIES_BASE::DIALOG_PAD_PROPERTIES_BASE( wxWindow* parent, wxWindowID
id,
const wxString& title,
const wxPoint& pos,
const wxSize& size,
long style ) :
DIALOG_SHIM( parent, id, title, pos, size, style )
16 this->SetSizeHints( wxSize( -1,-1 ), wxDefaultSize );
20 wxBoxSizer* bSizerUpper;
21 bSizerUpper =
new wxBoxSizer( wxHORIZONTAL );
23 m_notebook =
new wxNotebook(
this, wxID_ANY, wxDefaultPosition, wxDefaultSize, 0 );
25 wxBoxSizer* bGeneralSizer;
26 bGeneralSizer =
new wxBoxSizer( wxHORIZONTAL );
30 wxGridBagSizer* gbSizerCommon;
31 gbSizerCommon =
new wxGridBagSizer( 4, 0 );
32 gbSizerCommon->SetFlexibleDirection( wxBOTH );
33 gbSizerCommon->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
37 gbSizerCommon->Add(
m_padTypeLabel, wxGBPosition( 0, 0 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxTOP|wxRIGHT|wxLEFT, 5 );
39 wxString m_padTypeChoices[] = {
_(
"Through-hole"),
_(
"SMD"),
_(
"Edge Connector"),
_(
"NPTH, Mechanical"),
_(
"SMD Aperture") };
40 int m_padTypeNChoices =
sizeof( m_padTypeChoices ) /
sizeof( wxString );
41 m_padType =
new wxChoice(
m_panelGeneral, wxID_ANY, wxDefaultPosition, wxDefaultSize, m_padTypeNChoices, m_padTypeChoices, 0 );
43 gbSizerCommon->Add(
m_padType, wxGBPosition( 0, 1 ), wxGBSpan( 1, 5 ), wxEXPAND|wxALIGN_CENTER_VERTICAL|wxTOP|wxRIGHT, 5 );
47 gbSizerCommon->Add(
m_padNumLabel, wxGBPosition( 1, 0 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxRIGHT|wxLEFT, 5 );
50 gbSizerCommon->Add(
m_padNumCtrl, wxGBPosition( 1, 1 ), wxGBSpan( 1, 5 ), wxEXPAND|wxALIGN_CENTER_VERTICAL|wxRIGHT, 5 );
54 gbSizerCommon->Add(
m_padNetLabel, wxGBPosition( 2, 0 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxRIGHT|wxLEFT, 5 );
57 gbSizerCommon->Add(
m_padNetSelector, wxGBPosition( 2, 1 ), wxGBSpan( 1, 5 ), wxALIGN_CENTER_VERTICAL|wxEXPAND|wxRIGHT, 5 );
61 gbSizerCommon->Add(
m_posXLabel, wxGBPosition( 3, 0 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxRIGHT|wxLEFT, 5 );
64 gbSizerCommon->Add(
m_posXCtrl, wxGBPosition( 3, 1 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxEXPAND, 5 );
68 gbSizerCommon->Add(
m_posXUnits, wxGBPosition( 3, 2 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxRIGHT|wxLEFT, 5 );
72 gbSizerCommon->Add(
m_posYLabel, wxGBPosition( 3, 3 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxRIGHT|wxLEFT, 5 );
75 gbSizerCommon->Add(
m_posYCtrl, wxGBPosition( 3, 4 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxEXPAND, 5 );
79 gbSizerCommon->Add(
m_posYUnits, wxGBPosition( 3, 5 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxRIGHT|wxLEFT, 5 );
82 gbSizerCommon->AddGrowableCol( 1 );
83 gbSizerCommon->AddGrowableCol( 4 );
90 wxGridBagSizer* gbSizerPadOrientation;
91 gbSizerPadOrientation =
new wxGridBagSizer( 4, 0 );
92 gbSizerPadOrientation->SetFlexibleDirection( wxBOTH );
93 gbSizerPadOrientation->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
97 gbSizerPadOrientation->Add(
m_shapeLabel, wxGBPosition( 0, 0 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxRIGHT|wxLEFT, 5 );
99 wxString m_PadShapeSelectorChoices[] = {
_(
"Circular"),
_(
"Oval"),
_(
"Rectangular"),
_(
"Trapezoidal"),
_(
"Rounded rectangle"),
_(
"Chamfered rectangle"),
_(
"Chamfered with other corners rounded"),
_(
"Custom (circular base)"),
_(
"Custom (rectangular base)") };
100 int m_PadShapeSelectorNChoices =
sizeof( m_PadShapeSelectorChoices ) /
sizeof( wxString );
103 gbSizerPadOrientation->Add(
m_PadShapeSelector, wxGBPosition( 0, 1 ), wxGBSpan( 1, 5 ), wxEXPAND|wxALIGN_CENTER_VERTICAL|wxRIGHT|wxLEFT, 5 );
129 wxString m_trapAxisCtrlChoices[] = {
_(
"Horizontal"),
_(
"Vertical") };
130 int m_trapAxisCtrlNChoices =
sizeof( m_trapAxisCtrlChoices ) /
sizeof( wxString );
131 m_trapAxisCtrl =
new wxChoice(
m_trapProps, wxID_ANY, wxDefaultPosition, wxDefaultSize, m_trapAxisCtrlNChoices, m_trapAxisCtrlChoices, 0 );
148 m_cornerRatioLabel->SetToolTip(
_(
"Corner radius in percent of the pad width.\nThe width is the smaller value between size X and size Y.\nThe max value is 50 percent.") );
161 m_cornerRadiusLabel->SetToolTip(
_(
"Corner radius.\nCan be no more than half pad width.\nThe width is the smaller value between size X and size Y.\nNote: IPC norm gives a max value = 0.25mm.") );
178 wxFlexGridSizer* fgSizerChamferProps;
179 fgSizerChamferProps =
new wxFlexGridSizer( 0, 2, 4, 0 );
180 fgSizerChamferProps->AddGrowableCol( 1 );
181 fgSizerChamferProps->SetFlexibleDirection( wxBOTH );
182 fgSizerChamferProps->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
186 m_chamferRatioLabel->SetToolTip(
_(
"Chamfer size in percent of the pad width.\nThe width is the smaller value between size X and size Y.\nThe max value is 50 percent.") );
190 wxBoxSizer* bSizer29;
191 bSizer29 =
new wxBoxSizer( wxHORIZONTAL );
201 fgSizerChamferProps->Add( bSizer29, 1, wxEXPAND, 5 );
209 wxGridSizer* gCornersSizer;
210 gCornersSizer =
new wxGridSizer( 0, 2, 3, 6 );
226 fgSizerChamferProps->Add( gCornersSizer, 1, wxEXPAND|wxRIGHT|wxLEFT, 5 );
234 wxFlexGridSizer* fgMixedProps;
235 fgMixedProps =
new wxFlexGridSizer( 0, 2, 4, 0 );
236 fgMixedProps->AddGrowableCol( 1 );
237 fgMixedProps->SetFlexibleDirection( wxBOTH );
238 fgMixedProps->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
242 m_mixedChamferRatioLabel->SetToolTip(
_(
"Chamfer size in percent of the pad width.\nThe width is the smaller value between size X and size Y.\nThe max value is 50 percent.") );
246 wxBoxSizer* bSizer30;
247 bSizer30 =
new wxBoxSizer( wxHORIZONTAL );
257 fgMixedProps->Add( bSizer30, 1, wxEXPAND, 5 );
265 wxGridSizer* gMixedCornersSizer;
266 gMixedCornersSizer =
new wxGridSizer( 0, 2, 2, 6 );
282 fgMixedProps->Add( gMixedCornersSizer, 1, wxEXPAND|wxRIGHT|wxLEFT, 5 );
286 m_mixedCornerRatioLabel->SetToolTip(
_(
"Corner radius in percent of the pad width.\nThe width is the smaller value between size X and size Y.\nThe max value is 50 percent.") );
290 wxBoxSizer* bSizer31;
291 bSizer31 =
new wxBoxSizer( wxHORIZONTAL );
301 fgMixedProps->Add( bSizer31, 1, wxEXPAND, 5 );
309 gbSizerPadOrientation->Add(
m_shapePropsBook, wxGBPosition( 1, 0 ), wxGBSpan( 1, 6 ), wxEXPAND|wxLEFT, 25 );
313 gbSizerPadOrientation->Add(
m_sizeXLabel, wxGBPosition( 2, 0 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxRIGHT|wxLEFT, 5 );
316 gbSizerPadOrientation->Add(
m_sizeXCtrl, wxGBPosition( 2, 1 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxEXPAND, 5 );
320 gbSizerPadOrientation->Add(
m_sizeXUnits, wxGBPosition( 2, 2 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxRIGHT|wxLEFT, 5 );
324 gbSizerPadOrientation->Add(
m_sizeYLabel, wxGBPosition( 2, 3 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxRIGHT|wxLEFT, 5 );
327 gbSizerPadOrientation->Add(
m_sizeYCtrl, wxGBPosition( 2, 4 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxEXPAND, 5 );
331 gbSizerPadOrientation->Add(
m_sizeYUnits, wxGBPosition( 2, 5 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxRIGHT|wxLEFT, 5 );
335 gbSizerPadOrientation->Add(
m_PadOrientText, wxGBPosition( 3, 0 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxRIGHT|wxLEFT, 5 );
343 gbSizerPadOrientation->Add(
m_cb_padrotation, wxGBPosition( 3, 1 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxEXPAND, 5 );
347 gbSizerPadOrientation->Add(
m_orientationUnits, wxGBPosition( 3, 2 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxRIGHT|wxLEFT, 5 );
350 gbSizerPadOrientation->AddGrowableCol( 0 );
359 m_gbSizerHole->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
365 wxString m_holeShapeCtrlChoices[] = {
_(
"Circular"),
_(
"Oval") };
366 int m_holeShapeCtrlNChoices =
sizeof( m_holeShapeCtrlChoices ) /
sizeof( wxString );
367 m_holeShapeCtrl =
new wxChoice(
m_panelGeneral, wxID_ANY, wxDefaultPosition, wxDefaultSize, m_holeShapeCtrlNChoices, m_holeShapeCtrlChoices, 0 );
399 wxBoxSizer* bSizer35;
400 bSizer35 =
new wxBoxSizer( wxHORIZONTAL );
419 m_offsetCtrls->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
449 wxFlexGridSizer* fgSizerPadToDie;
450 fgSizerPadToDie =
new wxFlexGridSizer( 14, 3, 0, 0 );
451 fgSizerPadToDie->AddGrowableCol( 1 );
452 fgSizerPadToDie->SetFlexibleDirection( wxBOTH );
453 fgSizerPadToDie->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
455 wxBoxSizer* bSizer34;
456 bSizer34 =
new wxBoxSizer( wxHORIZONTAL );
459 bSizer34->Add(
m_padToDieOpt, 0, wxALIGN_CENTER_VERTICAL|wxLEFT, 5 );
463 bSizer34->Add(
m_padToDieLabel, 0, wxALIGN_CENTER_VERTICAL|wxRESERVE_SPACE_EVEN_IF_HIDDEN|wxRIGHT, 5 );
466 fgSizerPadToDie->Add( bSizer34, 0, wxEXPAND|wxRIGHT, 5 );
469 fgSizerPadToDie->Add(
m_padToDieCtrl, 0, wxEXPAND|wxLEFT|wxRESERVE_SPACE_EVEN_IF_HIDDEN, 5 );
473 fgSizerPadToDie->Add(
m_padToDieUnits, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRESERVE_SPACE_EVEN_IF_HIDDEN|wxRIGHT, 5 );
483 wxStaticBoxSizer* m_LayersSizer;
484 m_LayersSizer =
new wxStaticBoxSizer(
new wxStaticBox(
m_panelGeneral, wxID_ANY, wxEmptyString ), wxVERTICAL );
488 m_FlippedWarningIcon =
new wxStaticBitmap( m_LayersSizer->GetStaticBox(), wxID_ANY, wxNullBitmap, wxDefaultPosition, wxSize( 48,48 ), 0 );
493 m_staticText86 =
new wxStaticText( m_LayersSizer->GetStaticBox(), wxID_ANY,
_(
"Parent footprint on board is flipped.\nLayers will be reversed."), wxDefaultPosition, wxDefaultSize, 0 );
500 m_copperLayersLabel =
new wxStaticText( m_LayersSizer->GetStaticBox(), wxID_ANY,
_(
"Copper layers:"), wxDefaultPosition, wxDefaultSize, 0 );
504 wxArrayString m_rbCopperLayersSelChoices;
505 m_rbCopperLayersSel =
new wxChoice( m_LayersSizer->GetStaticBox(), wxID_ANY, wxDefaultPosition, wxDefaultSize, m_rbCopperLayersSelChoices, 0 );
509 m_techLayersLabel =
new wxStaticText( m_LayersSizer->GetStaticBox(), wxID_ANY,
_(
"Technical layers:"), wxDefaultPosition, wxDefaultSize, 0 );
513 m_layerFrontAdhesive =
new wxCheckBox( m_LayersSizer->GetStaticBox(), wxID_ANY,
_(
"Front adhesive"), wxDefaultPosition, wxDefaultSize, 0 );
516 m_layerBackAdhesive =
new wxCheckBox( m_LayersSizer->GetStaticBox(), wxID_ANY,
_(
"Back adhesive"), wxDefaultPosition, wxDefaultSize, 0 );
519 m_layerFrontPaste =
new wxCheckBox( m_LayersSizer->GetStaticBox(), wxID_ANY,
_(
"Front solder paste"), wxDefaultPosition, wxDefaultSize, 0 );
522 m_layerBackPaste =
new wxCheckBox( m_LayersSizer->GetStaticBox(), wxID_ANY,
_(
"Back solder paste"), wxDefaultPosition, wxDefaultSize, 0 );
525 m_layerFrontSilk =
new wxCheckBox( m_LayersSizer->GetStaticBox(), wxID_ANY,
_(
"Front silk screen"), wxDefaultPosition, wxDefaultSize, 0 );
528 m_layerBackSilk =
new wxCheckBox( m_LayersSizer->GetStaticBox(), wxID_ANY,
_(
"Back silk screen"), wxDefaultPosition, wxDefaultSize, 0 );
531 m_layerFrontMask =
new wxCheckBox( m_LayersSizer->GetStaticBox(), wxID_ANY,
_(
"Front solder mask"), wxDefaultPosition, wxDefaultSize, 0 );
534 m_layerBackMask =
new wxCheckBox( m_LayersSizer->GetStaticBox(), wxID_ANY,
_(
"Back solder mask"), wxDefaultPosition, wxDefaultSize, 0 );
537 m_layerUserDwgs =
new wxCheckBox( m_LayersSizer->GetStaticBox(), wxID_ANY,
_(
"Drafting notes"), wxDefaultPosition, wxDefaultSize, 0 );
540 m_layerECO1 =
new wxCheckBox( m_LayersSizer->GetStaticBox(), wxID_ANY,
_(
"E.C.O.1"), wxDefaultPosition, wxDefaultSize, 0 );
541 m_LayersSizer->Add(
m_layerECO1, 0, wxTOP|wxRIGHT|wxLEFT, 4 );
543 m_layerECO2 =
new wxCheckBox( m_LayersSizer->GetStaticBox(), wxID_ANY,
_(
"E.C.O.2"), wxDefaultPosition, wxDefaultSize, 0 );
551 m_staticTextFabProperty->SetToolTip(
_(
"Optional property to specify a special purpose or constraint in fabrication files:\nBGA attribute is for pads in BGA footprints\nFiducial local is a fiducial for the parent footprint\nFiducial global is a fiducial for the whole board\nTest Point pad is useful to specify test points in Gerber files\nHeatsink pad specify a thermal pad\nCastellated specify castellated through hole pads on a board edge\nThese properties are specified in Gerber X2 files.") );
558 wxString m_choiceFabPropertyChoices[] = {
_(
"None"),
_(
"BGA pad"),
_(
"Fiducial, local to footprint"),
_(
"Fiducial, global to board"),
_(
"Test point pad"),
_(
"Heatsink pad"),
_(
"Castellated pad (through hole only)") };
559 int m_choiceFabPropertyNChoices =
sizeof( m_choiceFabPropertyChoices ) /
sizeof( wxString );
573 wxBoxSizer* bSizerPanelConnections;
574 bSizerPanelConnections =
new wxBoxSizer( wxVERTICAL );
576 wxBoxSizer* bSizerConnectionsMargins;
577 bSizerConnectionsMargins =
new wxBoxSizer( wxVERTICAL );
579 wxStaticBoxSizer* bSizerTeardrops;
580 bSizerTeardrops =
new wxStaticBoxSizer(
new wxStaticBox(
m_connectionsPanel, wxID_ANY,
_(
"Teardrops") ), wxVERTICAL );
584 m_legacyTeardropsIcon =
new wxStaticBitmap( bSizerTeardrops->GetStaticBox(), wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, 0 );
587 wxBoxSizer* bSizer42;
588 bSizer42 =
new wxBoxSizer( wxVERTICAL );
590 m_staticText85 =
new wxStaticText( bSizerTeardrops->GetStaticBox(), wxID_ANY,
_(
"Board contains legacy teardrops."), wxDefaultPosition, wxDefaultSize, 0 );
594 m_staticText851 =
new wxStaticText( bSizerTeardrops->GetStaticBox(), wxID_ANY,
_(
"Use Edit > Edit Teardrops to apply automatic teardrops."), wxDefaultPosition, wxDefaultSize, 0 );
604 wxBoxSizer* bSizerCols11;
605 bSizerCols11 =
new wxBoxSizer( wxHORIZONTAL );
607 wxBoxSizer* bSizerLeftCol11;
608 bSizerLeftCol11 =
new wxBoxSizer( wxVERTICAL );
610 m_cbTeardrops =
new wxCheckBox( bSizerTeardrops->GetStaticBox(), wxID_ANY,
_(
"Add teardrops on pad's track connections"), wxDefaultPosition, wxDefaultSize, 0 );
611 bSizerLeftCol11->Add(
m_cbTeardrops, 0, wxBOTTOM|wxRIGHT|wxLEFT, 5 );
613 m_cbPreferZoneConnection =
new wxCheckBox( bSizerTeardrops->GetStaticBox(), wxID_ANY,
_(
"Prefer zone connection"), wxDefaultPosition, wxDefaultSize, 0 );
615 m_cbPreferZoneConnection->SetToolTip(
_(
"Do not create teardrops on tracks connected to pads that are also connected to a copper zone.") );
619 m_cbTeardropsUseNextTrack =
new wxCheckBox( bSizerTeardrops->GetStaticBox(), wxID_ANY,
_(
"Allow teardrops to span 2 track segments"), wxDefaultPosition, wxDefaultSize, 0 );
621 m_cbTeardropsUseNextTrack->SetToolTip(
_(
"Allows a teardrop to spread over 2 tracks if the first track segment is too short") );
626 bSizerCols11->Add( bSizerLeftCol11, 1, wxEXPAND|wxTOP, 3 );
629 bSizerCols11->Add( 15, 0, 0, wxEXPAND, 5 );
631 wxBoxSizer* bSizerRightCol11;
632 bSizerRightCol11 =
new wxBoxSizer( wxVERTICAL );
634 wxBoxSizer* bSizer39;
635 bSizer39 =
new wxBoxSizer( wxHORIZONTAL );
637 m_stHDRatio =
new wxStaticText( bSizerTeardrops->GetStaticBox(), wxID_ANY,
_(
"Maximum track width:"), wxDefaultPosition, wxDefaultSize, 0 );
639 m_stHDRatio->SetToolTip(
_(
"Max pad/via size to track width ratio to create a teardrop.\n100 always creates a teardrop.") );
641 bSizer39->Add(
m_stHDRatio, 0, wxALIGN_CENTER_VERTICAL, 5 );
643 m_spTeardropHDPercent =
new wxSpinCtrlDouble( bSizerTeardrops->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxSP_ARROW_KEYS, 0, 100, 90, 10 );
645 m_spTeardropHDPercent->SetToolTip(
_(
"Tracks which are similar in size to the pad do not need teardrops.") );
649 m_minTrackWidthUnits =
new wxStaticText( bSizerTeardrops->GetStaticBox(), wxID_ANY,
_(
"%("), wxDefaultPosition, wxDefaultSize, 0 );
653 m_minTrackWidthHint =
new wxStaticText( bSizerTeardrops->GetStaticBox(), wxID_ANY,
_(
"d"), wxDefaultPosition, wxDefaultSize, 0 );
655 m_minTrackWidthHint->SetFont( wxFont( wxNORMAL_FONT->GetPointSize(), wxFONTFAMILY_DEFAULT, wxFONTSTYLE_ITALIC, wxFONTWEIGHT_NORMAL,
false, wxEmptyString ) );
659 m_staticText87 =
new wxStaticText( bSizerTeardrops->GetStaticBox(), wxID_ANY,
_(
" )"), wxDefaultPosition, wxDefaultSize, 0 );
664 bSizerRightCol11->Add( bSizer39, 0, 0, 3 );
667 bSizerCols11->Add( bSizerRightCol11, 1, wxEXPAND|wxLEFT, 10 );
670 bSizerTeardrops->Add( bSizerCols11, 0, wxEXPAND, 5 );
673 bSizerTeardrops->Add( 0, 5, 0, wxEXPAND, 5 );
675 m_teardropShapeLabel =
new wxStaticText( bSizerTeardrops->GetStaticBox(), wxID_ANY,
_(
"Teardrop Shape"), wxDefaultPosition, wxDefaultSize, 0 );
679 m_staticline51 =
new wxStaticLine( bSizerTeardrops->GetStaticBox(), wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_HORIZONTAL );
682 wxBoxSizer* bSizerShapeColumns;
683 bSizerShapeColumns =
new wxBoxSizer( wxHORIZONTAL );
685 wxBoxSizer* bSizerLeftCol;
686 bSizerLeftCol =
new wxBoxSizer( wxVERTICAL );
688 m_bitmapTeardrop =
new wxStaticBitmap( bSizerTeardrops->GetStaticBox(), wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, 0 );
689 bSizerLeftCol->Add(
m_bitmapTeardrop, 1, wxALIGN_CENTER_HORIZONTAL|wxRIGHT|wxLEFT, 5 );
692 bSizerShapeColumns->Add( bSizerLeftCol, 1, wxEXPAND|wxRIGHT, 10 );
695 bSizerShapeColumns->Add( 10, 0, 0, wxEXPAND, 5 );
697 wxBoxSizer* bSizer43;
698 bSizer43 =
new wxBoxSizer( wxVERTICAL );
700 wxFlexGridSizer* fgSizerRightCol;
701 fgSizerRightCol =
new wxFlexGridSizer( 0, 3, 2, 0 );
702 fgSizerRightCol->AddGrowableCol( 1 );
703 fgSizerRightCol->SetFlexibleDirection( wxBOTH );
704 fgSizerRightCol->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
706 m_stHsetting =
new wxStaticText( bSizerTeardrops->GetStaticBox(), wxID_ANY,
_(
"Best length (L):"), wxDefaultPosition, wxDefaultSize, 0 );
708 fgSizerRightCol->Add(
m_stHsetting, 0, wxALIGN_CENTER_VERTICAL, 5 );
710 m_spTeardropLenPercent =
new wxSpinCtrlDouble( bSizerTeardrops->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxSP_ARROW_KEYS, 20, 200, 40.000000, 10 );
714 wxBoxSizer* bSizer131;
715 bSizer131 =
new wxBoxSizer( wxHORIZONTAL );
717 m_stLenPercentUnits =
new wxStaticText( bSizerTeardrops->GetStaticBox(), wxID_ANY,
_(
"%("), wxDefaultPosition, wxDefaultSize, 0 );
721 m_stLenPercentHint =
new wxStaticText( bSizerTeardrops->GetStaticBox(), wxID_ANY,
_(
"d"), wxDefaultPosition, wxDefaultSize, 0 );
723 m_stLenPercentHint->SetFont( wxFont( wxNORMAL_FONT->GetPointSize(), wxFONTFAMILY_DEFAULT, wxFONTSTYLE_ITALIC, wxFONTWEIGHT_NORMAL,
false, wxEmptyString ) );
727 m_staticText88 =
new wxStaticText( bSizerTeardrops->GetStaticBox(), wxID_ANY,
_(
" )"), wxDefaultPosition, wxDefaultSize, 0 );
732 fgSizerRightCol->Add( bSizer131, 1, wxEXPAND|wxALIGN_CENTER_VERTICAL, 5 );
734 m_stMaxLen =
new wxStaticText( bSizerTeardrops->GetStaticBox(), wxID_ANY,
_(
"Maximum length (L):"), wxDefaultPosition, wxDefaultSize, 0 );
736 fgSizerRightCol->Add(
m_stMaxLen, 0, wxALIGN_CENTER_VERTICAL, 5 );
738 m_tcTdMaxLen =
new wxTextCtrl( bSizerTeardrops->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
739 fgSizerRightCol->Add(
m_tcTdMaxLen, 0, wxEXPAND|wxALIGN_CENTER_VERTICAL|wxRIGHT|wxLEFT, 3 );
741 m_stMaxLenUnits =
new wxStaticText( bSizerTeardrops->GetStaticBox(), wxID_ANY,
_(
"mm"), wxDefaultPosition, wxDefaultSize, 0 );
743 fgSizerRightCol->Add(
m_stMaxLenUnits, 0, wxALIGN_CENTER_VERTICAL|wxRIGHT, 5 );
746 fgSizerRightCol->Add( 0, 5, 1, wxEXPAND, 5 );
749 fgSizerRightCol->Add( 0, 0, 1, wxEXPAND, 5 );
752 fgSizerRightCol->Add( 0, 0, 1, wxEXPAND, 5 );
754 m_stVsetting =
new wxStaticText( bSizerTeardrops->GetStaticBox(), wxID_ANY,
_(
"Best width (W):"), wxDefaultPosition, wxDefaultSize, 0 );
756 fgSizerRightCol->Add(
m_stVsetting, 0, wxALIGN_CENTER_VERTICAL, 10 );
758 m_spTeardropSizePercent =
new wxSpinCtrlDouble( bSizerTeardrops->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxSP_ARROW_KEYS, 60, 100, 100.000000, 10 );
762 wxBoxSizer* bSizer13;
763 bSizer13 =
new wxBoxSizer( wxHORIZONTAL );
765 m_stWidthPercentUnits =
new wxStaticText( bSizerTeardrops->GetStaticBox(), wxID_ANY,
_(
"%("), wxDefaultPosition, wxDefaultSize, 0 );
769 m_stWidthPercentHint =
new wxStaticText( bSizerTeardrops->GetStaticBox(), wxID_ANY,
_(
"d"), wxDefaultPosition, wxDefaultSize, 0 );
771 m_stWidthPercentHint->SetFont( wxFont( wxNORMAL_FONT->GetPointSize(), wxFONTFAMILY_DEFAULT, wxFONTSTYLE_ITALIC, wxFONTWEIGHT_NORMAL,
false, wxEmptyString ) );
775 m_staticText89 =
new wxStaticText( bSizerTeardrops->GetStaticBox(), wxID_ANY,
_(
" )"), wxDefaultPosition, wxDefaultSize, 0 );
780 fgSizerRightCol->Add( bSizer13, 1, wxEXPAND|wxALIGN_CENTER_VERTICAL, 5 );
782 m_stTdMaxSize =
new wxStaticText( bSizerTeardrops->GetStaticBox(), wxID_ANY,
_(
"Maximum width (W):"), wxDefaultPosition, wxDefaultSize, 0 );
784 fgSizerRightCol->Add(
m_stTdMaxSize, 0, wxALIGN_CENTER_VERTICAL, 10 );
786 m_tcMaxHeight =
new wxTextCtrl( bSizerTeardrops->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
787 fgSizerRightCol->Add(
m_tcMaxHeight, 0, wxEXPAND|wxALIGN_CENTER_VERTICAL|wxRIGHT|wxLEFT, 3 );
789 m_stMaxHeightUnits =
new wxStaticText( bSizerTeardrops->GetStaticBox(), wxID_ANY,
_(
"mm"), wxDefaultPosition, wxDefaultSize, 0 );
794 bSizer43->Add( fgSizerRightCol, 1, wxEXPAND|wxTOP|wxLEFT, 10 );
796 wxBoxSizer* bSizer44;
797 bSizer44 =
new wxBoxSizer( wxHORIZONTAL );
799 m_curvedEdges =
new wxCheckBox( bSizerTeardrops->GetStaticBox(), wxID_ANY,
_(
"Curved edges"), wxDefaultPosition, wxDefaultSize, 0 );
800 bSizer44->Add(
m_curvedEdges, 0, wxALIGN_CENTER_VERTICAL, 5 );
803 bSizer44->Add( 45, 0, 0, 0, 5 );
805 m_curvePointsLabel =
new wxStaticText( bSizerTeardrops->GetStaticBox(), wxID_ANY,
_(
"Points:"), wxDefaultPosition, wxDefaultSize, 0 );
809 m_curvePointsCtrl =
new wxSpinCtrl( bSizerTeardrops->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxSP_ARROW_KEYS, 3, 10, 5 );
810 bSizer44->Add(
m_curvePointsCtrl, 0, wxALIGN_CENTER_VERTICAL|wxRIGHT|wxLEFT, 5 );
813 bSizer43->Add( bSizer44, 0, wxEXPAND|wxTOP|wxRIGHT|wxLEFT, 8 );
816 bSizerShapeColumns->Add( bSizer43, 1, wxEXPAND, 5 );
819 bSizerTeardrops->Add( bSizerShapeColumns, 1, wxBOTTOM|wxEXPAND|wxRIGHT, 5 );
822 bSizerConnectionsMargins->Add( bSizerTeardrops, 1, wxEXPAND|wxBOTTOM|wxRIGHT|wxLEFT, 5 );
824 wxBoxSizer* bSizerConnectionsLower;
825 bSizerConnectionsLower =
new wxBoxSizer( wxHORIZONTAL );
829 wxFlexGridSizer* fgSizerCopperZonesOpts;
830 fgSizerCopperZonesOpts =
new wxFlexGridSizer( 0, 2, 5, 0 );
831 fgSizerCopperZonesOpts->AddGrowableCol( 1 );
832 fgSizerCopperZonesOpts->SetFlexibleDirection( wxBOTH );
833 fgSizerCopperZonesOpts->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
839 wxString m_ZoneConnectionChoiceChoices[] = {
_(
"From parent footprint"),
_(
"Solid"),
_(
"Thermal relief"),
_(
"None") };
840 int m_ZoneConnectionChoiceNChoices =
sizeof( m_ZoneConnectionChoiceChoices ) /
sizeof( wxString );
849 wxString m_ZoneCustomPadShapeChoices[] = {
_(
"Pad shape"),
_(
"Pad convex hull") };
850 int m_ZoneCustomPadShapeNChoices =
sizeof( m_ZoneCustomPadShapeChoices ) /
sizeof( wxString );
853 fgSizerCopperZonesOpts->Add(
m_ZoneCustomPadShape, 1, wxALIGN_CENTER_VERTICAL|wxEXPAND|wxLEFT, 5 );
861 wxStaticBoxSizer* sbSizerThermalReliefs;
862 sbSizerThermalReliefs =
new wxStaticBoxSizer(
new wxStaticBox(
m_connectionsPanel, wxID_ANY,
_(
"Thermal Relief Overrides") ), wxVERTICAL );
864 wxFlexGridSizer* fgSizerThermalReliefs;
865 fgSizerThermalReliefs =
new wxFlexGridSizer( 0, 3, 3, 0 );
866 fgSizerThermalReliefs->AddGrowableCol( 1 );
867 fgSizerThermalReliefs->SetFlexibleDirection( wxBOTH );
868 fgSizerThermalReliefs->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
870 m_thermalGapLabel =
new wxStaticText( sbSizerThermalReliefs->GetStaticBox(), wxID_ANY,
_(
"Relief gap:"), wxDefaultPosition, wxDefaultSize, 0 );
872 fgSizerThermalReliefs->Add(
m_thermalGapLabel, 0, wxALIGN_CENTER_VERTICAL|wxLEFT, 5 );
874 m_thermalGapCtrl =
new wxTextCtrl( sbSizerThermalReliefs->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
875 fgSizerThermalReliefs->Add(
m_thermalGapCtrl, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxEXPAND, 3 );
877 m_thermalGapUnits =
new wxStaticText( sbSizerThermalReliefs->GetStaticBox(), wxID_ANY,
_(
"mm"), wxDefaultPosition, wxDefaultSize, 0 );
879 fgSizerThermalReliefs->Add(
m_thermalGapUnits, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5 );
881 m_spokeWidthLabel =
new wxStaticText( sbSizerThermalReliefs->GetStaticBox(), wxID_ANY,
_(
"Spoke width:"), wxDefaultPosition, wxDefaultSize, 0 );
883 fgSizerThermalReliefs->Add(
m_spokeWidthLabel, 0, wxALIGN_CENTER_VERTICAL|wxLEFT, 5 );
885 m_spokeWidthCtrl =
new wxTextCtrl( sbSizerThermalReliefs->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
886 fgSizerThermalReliefs->Add(
m_spokeWidthCtrl, 0, wxEXPAND|wxALIGN_CENTER_VERTICAL|wxLEFT, 3 );
888 m_spokeWidthUnits =
new wxStaticText( sbSizerThermalReliefs->GetStaticBox(), wxID_ANY,
_(
"mm"), wxDefaultPosition, wxDefaultSize, 0 );
890 fgSizerThermalReliefs->Add(
m_spokeWidthUnits, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5 );
892 m_spokeAngleLabel =
new wxStaticText( sbSizerThermalReliefs->GetStaticBox(), wxID_ANY,
_(
"Spoke angle:"), wxDefaultPosition, wxDefaultSize, 0 );
894 fgSizerThermalReliefs->Add(
m_spokeAngleLabel, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5 );
896 m_spokeAngleCtrl =
new wxTextCtrl( sbSizerThermalReliefs->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
899 m_spokeAngleUnits =
new wxStaticText( sbSizerThermalReliefs->GetStaticBox(), wxID_ANY,
_(
"deg"), wxDefaultPosition, wxDefaultSize, 0 );
901 fgSizerThermalReliefs->Add(
m_spokeAngleUnits, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5 );
904 sbSizerThermalReliefs->Add( fgSizerThermalReliefs, 1, wxBOTTOM|wxEXPAND, 5 );
907 bSizerConnectionsLower->Add( sbSizerThermalReliefs, 1, wxEXPAND|wxALL, 5 );
910 bSizerConnectionsMargins->Add( bSizerConnectionsLower, 0, wxEXPAND|wxTOP, 10 );
913 bSizerPanelConnections->Add( bSizerConnectionsMargins, 0, wxEXPAND|wxBOTTOM|wxRIGHT|wxLEFT, 5 );
921 wxBoxSizer* bSizerPanelClearance;
922 bSizerPanelClearance =
new wxBoxSizer( wxVERTICAL );
924 wxBoxSizer* bSizerClearance;
925 bSizerClearance =
new wxBoxSizer( wxVERTICAL );
927 wxStaticBoxSizer* sbClearancesSizer;
928 sbClearancesSizer =
new wxStaticBoxSizer(
new wxStaticBox(
m_localSettingsPanel, wxID_ANY,
_(
"Clearance Overrides") ), wxVERTICAL );
930 wxStaticText* m_staticTextHint;
931 m_staticTextHint =
new wxStaticText( sbClearancesSizer->GetStaticBox(), wxID_ANY,
_(
"Leave values blank to use parent footprint or netclass values."), wxDefaultPosition, wxDefaultSize, 0 );
932 m_staticTextHint->Wrap( -1 );
933 sbClearancesSizer->Add( m_staticTextHint, 0, wxBOTTOM|wxLEFT|wxRIGHT, 5 );
935 m_staticTextInfoPosValue =
new wxStaticText( sbClearancesSizer->GetStaticBox(), wxID_ANY,
_(
"Positive clearance means area bigger than the pad (usual for mask clearance)."), wxDefaultPosition, wxDefaultSize, 0 );
939 m_staticTextInfoNegVal =
new wxStaticText( sbClearancesSizer->GetStaticBox(), wxID_ANY,
_(
"Negative clearance means area smaller than the pad (usual for paste clearance)."), wxDefaultPosition, wxDefaultSize, 0 );
943 wxFlexGridSizer* fgClearancesGridSizer;
944 fgClearancesGridSizer =
new wxFlexGridSizer( 4, 3, 4, 0 );
945 fgClearancesGridSizer->AddGrowableCol( 1 );
946 fgClearancesGridSizer->SetFlexibleDirection( wxBOTH );
947 fgClearancesGridSizer->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
949 m_clearanceLabel =
new wxStaticText( sbClearancesSizer->GetStaticBox(), wxID_ANY,
_(
"Pad clearance:"), wxDefaultPosition, wxDefaultSize, 0 );
951 m_clearanceLabel->SetToolTip(
_(
"This is the local net clearance for this pad.\nIf 0, the footprint local value or the Netclass value is used.") );
953 fgClearancesGridSizer->Add(
m_clearanceLabel, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5 );
955 m_clearanceCtrl =
new wxTextCtrl( sbClearancesSizer->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
956 fgClearancesGridSizer->Add(
m_clearanceCtrl, 0, wxEXPAND|wxALIGN_CENTER_VERTICAL, 5 );
958 m_clearanceUnits =
new wxStaticText( sbClearancesSizer->GetStaticBox(), wxID_ANY,
_(
"mm"), wxDefaultPosition, wxDefaultSize, 0 );
960 fgClearancesGridSizer->Add(
m_clearanceUnits, 0, wxALIGN_CENTER_VERTICAL|wxRIGHT|wxLEFT, 5 );
962 m_maskMarginLabel =
new wxStaticText( sbClearancesSizer->GetStaticBox(), wxID_ANY,
_(
"Solder mask expansion:"), wxDefaultPosition, wxDefaultSize, 0 );
964 m_maskMarginLabel->SetToolTip(
_(
"This is the local clearance between this pad and the solder mask.\nIf 0, the footprint local value or the global value is used.") );
966 fgClearancesGridSizer->Add(
m_maskMarginLabel, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5 );
968 m_maskMarginCtrl =
new wxTextCtrl( sbClearancesSizer->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
969 fgClearancesGridSizer->Add(
m_maskMarginCtrl, 0, wxEXPAND|wxTOP|wxBOTTOM|wxALIGN_CENTER_VERTICAL, 15 );
971 m_maskMarginUnits =
new wxStaticText( sbClearancesSizer->GetStaticBox(), wxID_ANY,
_(
"mm"), wxDefaultPosition, wxDefaultSize, 0 );
973 fgClearancesGridSizer->Add(
m_maskMarginUnits, 0, wxALIGN_CENTER_VERTICAL|wxRIGHT|wxLEFT, 5 );
975 m_pasteMarginLabel =
new wxStaticText( sbClearancesSizer->GetStaticBox(), wxID_ANY,
_(
"Solder paste absolute clearance:"), wxDefaultPosition, wxDefaultSize, 0 );
977 m_pasteMarginLabel->SetToolTip(
_(
"This is the local clearance between this pad and the solder paste.\nIf 0, the footprint value or the global value is used.\nThe final clearance value is the sum of this value and the clearance value ratio.\nA negative value means a smaller mask size than pad size.") );
979 fgClearancesGridSizer->Add(
m_pasteMarginLabel, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5 );
981 m_pasteMarginCtrl =
new wxTextCtrl( sbClearancesSizer->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
982 fgClearancesGridSizer->Add(
m_pasteMarginCtrl, 0, wxEXPAND|wxALIGN_CENTER_VERTICAL, 5 );
984 m_pasteMarginUnits =
new wxStaticText( sbClearancesSizer->GetStaticBox(), wxID_ANY,
_(
"mm"), wxDefaultPosition, wxDefaultSize, 0 );
986 fgClearancesGridSizer->Add(
m_pasteMarginUnits, 0, wxALIGN_CENTER_VERTICAL|wxRIGHT|wxLEFT, 5 );
988 m_pasteMarginRatioLabel =
new wxStaticText( sbClearancesSizer->GetStaticBox(), wxID_ANY,
_(
"Solder paste relative clearance:"), wxDefaultPosition, wxDefaultSize, 0 );
990 m_pasteMarginRatioLabel->SetToolTip(
_(
"This is the local clearance ratio in percent between this pad and the solder paste.\nA value of 10 means the clearance value is 10 percent of the pad size.\nIf 0, the footprint value or the global value is used.\nThe final clearance value is the sum of this value and the clearance value.\nA negative value means a smaller mask size than pad size.") );
997 m_pasteMarginRatioUnits =
new wxStaticText( sbClearancesSizer->GetStaticBox(), wxID_ANY,
_(
"%"), wxDefaultPosition, wxDefaultSize, 0 );
1002 sbClearancesSizer->Add( fgClearancesGridSizer, 0, wxTOP|wxBOTTOM, 10 );
1004 m_nonCopperWarningBook =
new wxSimplebook( sbClearancesSizer->GetStaticBox(), wxID_ANY, wxDefaultPosition, wxDefaultSize, 0 );
1006 notePanel =
new wxPanel(
m_nonCopperWarningBook, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL );
1007 wxBoxSizer* bNoteSizer;
1008 bNoteSizer =
new wxBoxSizer( wxVERTICAL );
1010 m_nonCopperNote =
new wxStaticText( notePanel, wxID_ANY,
_(
"Note: solder mask and paste values are used only for pads on copper layers."), wxDefaultPosition, wxDefaultSize, 0 );
1014 m_staticTextInfoPaste =
new wxStaticText( notePanel, wxID_ANY,
_(
"Note: solder paste clearances (absolute and relative) are added to determine the final clearance."), wxDefaultPosition, wxDefaultSize, 0 );
1019 notePanel->SetSizer( bNoteSizer );
1020 notePanel->Layout();
1021 bNoteSizer->Fit( notePanel );
1023 wxPanel* warningPanel;
1024 warningPanel =
new wxPanel(
m_nonCopperWarningBook, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL );
1025 wxBoxSizer* bWarningSizer;
1026 bWarningSizer =
new wxBoxSizer( wxHORIZONTAL );
1028 bWarningSizer->SetMinSize( wxSize( -1,50 ) );
1029 m_nonCopperWarningIcon =
new wxStaticBitmap( warningPanel, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxSize( 48,48 ), 0 );
1034 m_nonCopperWarningText =
new wxStaticText( warningPanel, wxID_ANY,
_(
"Note: solder mask and paste values are used only for pads on copper layers."), wxDefaultPosition, wxDefaultSize, 0 );
1039 warningPanel->SetSizer( bWarningSizer );
1040 warningPanel->Layout();
1041 bWarningSizer->Fit( warningPanel );
1047 bSizerClearance->Add( sbClearancesSizer, 0, wxALL|wxEXPAND, 5 );
1050 bSizerPanelClearance->Add( bSizerClearance, 0, wxEXPAND|wxBOTTOM|wxRIGHT|wxLEFT, 5 );
1058 bSizerUpper->Add(
m_notebook, 0, wxEXPAND|wxTOP|wxBOTTOM, 12 );
1060 wxBoxSizer* bSizerDisplayPad;
1061 bSizerDisplayPad =
new wxBoxSizer( wxVERTICAL );
1063 bSizerDisplayPad->SetMinSize( wxSize( 290,-1 ) );
1065 bSizerDisplayPad->Add( 0, 25, 0, wxEXPAND, 5 );
1067 m_stackupImagesBook =
new wxSimplebook(
this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxBORDER_SIMPLE );
1069 wxBoxSizer* page0Sizer;
1070 page0Sizer =
new wxBoxSizer( wxVERTICAL );
1072 m_stackupImage0 =
new wxStaticBitmap(
page0, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, 0 );
1073 page0Sizer->Add(
m_stackupImage0, 0, wxALL|wxALIGN_CENTER_HORIZONTAL, 5 );
1076 page0->SetSizer( page0Sizer );
1078 page0Sizer->Fit(
page0 );
1081 wxBoxSizer* page1Sizer;
1082 page1Sizer =
new wxBoxSizer( wxVERTICAL );
1084 m_stackupImage1 =
new wxStaticBitmap(
page1, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, 0 );
1085 page1Sizer->Add(
m_stackupImage1, 0, wxALL|wxALIGN_CENTER_HORIZONTAL, 5 );
1088 page1->SetSizer( page1Sizer );
1090 page1Sizer->Fit(
page1 );
1093 wxBoxSizer* page2Sizer;
1094 page2Sizer =
new wxBoxSizer( wxVERTICAL );
1096 m_stackupImage2 =
new wxStaticBitmap(
page2, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, 0 );
1097 page2Sizer->Add(
m_stackupImage2, 0, wxALL|wxALIGN_CENTER_HORIZONTAL, 5 );
1100 page2->SetSizer( page2Sizer );
1102 page2Sizer->Fit(
page2 );
1105 wxBoxSizer* page3Sizer;
1106 page3Sizer =
new wxBoxSizer( wxVERTICAL );
1109 page3->SetSizer( page3Sizer );
1111 page3Sizer->Fit(
page3 );
1114 wxBoxSizer* page4Sizer;
1115 page4Sizer =
new wxBoxSizer( wxVERTICAL );
1117 m_stackupImage4 =
new wxStaticBitmap(
page4, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, 0 );
1118 page4Sizer->Add(
m_stackupImage4, 0, wxALL|wxALIGN_CENTER_HORIZONTAL, 5 );
1121 page4->SetSizer( page4Sizer );
1123 page4Sizer->Fit(
page4 );
1126 wxBoxSizer* page5Sizer;
1127 page5Sizer =
new wxBoxSizer( wxVERTICAL );
1129 m_stackupImage5 =
new wxStaticBitmap(
page5, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, 0 );
1130 page5Sizer->Add(
m_stackupImage5, 0, wxALL|wxALIGN_CENTER_HORIZONTAL, 5 );
1133 page5->SetSizer( page5Sizer );
1135 page5Sizer->Fit(
page5 );
1138 wxBoxSizer* page6Sizer;
1139 page6Sizer =
new wxBoxSizer( wxVERTICAL );
1141 m_stackupImage6 =
new wxStaticBitmap(
page6, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, 0 );
1142 page6Sizer->Add(
m_stackupImage6, 0, wxALL|wxALIGN_CENTER_HORIZONTAL, 5 );
1145 page6->SetSizer( page6Sizer );
1147 page6Sizer->Fit(
page6 );
1150 wxBoxSizer* page7Sizer;
1151 page7Sizer =
new wxBoxSizer( wxVERTICAL );
1153 m_stackupImage7 =
new wxStaticBitmap(
page7, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, 0 );
1154 page7Sizer->Add(
m_stackupImage7, 0, wxALL|wxALIGN_CENTER_HORIZONTAL, 5 );
1157 page7->SetSizer( page7Sizer );
1159 page7Sizer->Fit(
page7 );
1165 bSizerDisplayPad->Add( 0, 4, 0, wxEXPAND, 5 );
1167 m_boardViewPanel =
new wxPanel(
this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL );
1178 bSizerUpper->Add( bSizerDisplayPad, 1, wxEXPAND|wxTOP, 5 );
1181 m_MainSizer->Add( bSizerUpper, 1, wxEXPAND|wxLEFT, 8 );
1183 wxBoxSizer* bottomSizer;
1184 bottomSizer =
new wxBoxSizer( wxHORIZONTAL );
1186 m_parentInfo =
new wxStaticText(
this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
1188 bottomSizer->Add(
m_parentInfo, 0, wxALIGN_CENTER_VERTICAL|wxBOTTOM|wxLEFT, 8 );
1191 bottomSizer->Add( 20, 0, 1, wxEXPAND, 5 );
1193 m_cbShowPadOutline =
new wxCheckBox(
this, wxID_ANY,
_(
"Preview pad in sketch mode"), wxDefaultPosition, wxDefaultSize, 0 );
1194 bottomSizer->Add(
m_cbShowPadOutline, 0, wxALIGN_CENTER_VERTICAL|wxBOTTOM|wxRIGHT|wxLEFT, 5 );
1197 bottomSizer->Add( 40, 0, 0, wxEXPAND, 5 );
1206 bottomSizer->Add(
m_sdbSizer, 0, wxBOTTOM|wxEXPAND|wxTOP, 5 );
1209 m_MainSizer->Add( bottomSizer, 0, wxEXPAND|wxLEFT, 5 );
1216 this->Centre( wxBOTH );
wxStaticText * m_staticTextInfoNegVal
wxStaticText * m_techLayersLabel
wxStaticText * m_staticTextInfoPaste
wxCheckBox * m_cbBottomLeft
virtual void PadOrientEvent(wxCommandEvent &event)
wxStaticText * m_stTdMaxSize
virtual void onChangePadMode(wxCommandEvent &event)
wxCheckBox * m_cbBottomRight1
wxStaticBitmap * m_legacyTeardropsIcon
wxStaticText * m_staticTextChamferCorner1
wxStaticText * m_padToDieUnits
wxStaticText * m_stLenPercentHint
wxSpinCtrlDouble * m_spTeardropHDPercent
wxStaticText * m_sizeYUnits
wxStaticText * m_offsetXUnits
wxStaticText * m_staticText851
wxCheckBox * m_cbTeardrops
wxStaticBoxSizer * m_sbSizerZonesSettings
wxStaticText * m_posYLabel
wxCheckBox * m_cbTopRight1
wxCheckBox * m_cbPreferZoneConnection
wxPanel * m_boardViewPanel
wxStaticBitmap * m_stackupImage1
wxStaticText * m_stMaxHeightUnits
wxStaticText * m_offsetShapeOptLabel
wxChoice * m_ZoneConnectionChoice
wxStaticText * m_spokeAngleUnits
wxStaticText * m_stMaxLen
wxStaticText * m_teardropShapeLabel
wxStaticBitmap * m_stackupImage2
wxStaticText * m_trapDeltaLabel
wxFlexGridSizer * m_offsetCtrls
wxCheckBox * m_cbBottomLeft1
wxStaticText * m_curvePointsLabel
wxStaticText * m_stWidthPercentHint
wxTextCtrl * m_offsetYCtrl
wxSpinCtrlDouble * m_spTeardropSizePercent
virtual void OnInitDialog(wxInitDialogEvent &event)
wxStaticText * m_stHsetting
wxStaticText * m_thermalGapLabel
wxStaticText * m_cornerRadiusUnits
wxCheckBox * m_layerBackSilk
wxStaticText * m_mixedCornerRatioUnits
wxSimplebook * m_shapePropsBook
wxStaticText * m_chamferRatioUnits
wxStaticLine * m_staticline5
wxStaticText * m_trapDeltaUnits
wxBoxSizer * m_LeftBoxSizer
wxStdDialogButtonSizer * m_sdbSizer
wxStaticText * m_parentInfo
wxStaticText * m_stLenPercentUnits
wxCheckBox * m_layerFrontMask
wxStaticBitmap * m_stackupImage4
wxTextCtrl * m_clearanceCtrl
wxStaticText * m_sizeXUnits
wxStaticText * m_holeXUnits
wxStaticText * m_pasteMarginUnits
wxStaticText * m_spokeWidthLabel
wxStaticText * m_copperLayersLabel
wxGridBagSizer * m_gbSizerHole
wxStaticText * m_offsetYLabel
wxStaticLine * m_staticline6
virtual void onTeardropCurvePointsUpdateUi(wxUpdateUIEvent &event)
wxChoice * m_PadShapeSelector
wxStaticText * m_holeYUnits
wxStaticText * m_maskMarginLabel
wxChoice * m_holeShapeCtrl
wxStaticText * m_padNumLabel
wxStaticText * m_staticTextFabProperty
wxTextCtrl * m_offsetXCtrl
wxStaticText * m_staticText87
wxStaticText * m_holeYLabel
wxStaticText * m_staticTextChamferCorner
TEXT_CTRL_EVAL * m_mixedCornerRatioCtrl
wxStaticText * m_stVsetting
wxCheckBox * m_layerFrontAdhesive
wxCheckBox * m_layerBackMask
wxCheckBox * m_layerFrontPaste
wxCheckBox * m_layerBackAdhesive
wxChoice * m_ZoneCustomPadShape
wxSimplebook * m_stackupImagesBook
wxCheckBox * m_cbTeardropsUseNextTrack
wxStaticText * m_spokeWidthUnits
wxStaticText * m_offsetXLabel
wxCheckBox * m_cbTopRight
wxStaticText * m_clearanceLabel
virtual void OnPadToDieCheckbox(wxCommandEvent &event)
virtual void OnUpdateUINonCopperWarning(wxUpdateUIEvent &event)
wxCheckBox * m_layerFrontSilk
wxTextCtrl * m_thermalGapCtrl
wxStaticText * m_holeShapeLabel
virtual void onTeardropsUpdateUi(wxUpdateUIEvent &event)
wxStaticText * m_padConnectionLabel
virtual void OnCancel(wxCommandEvent &event)
wxCheckBox * m_padToDieOpt
wxStaticBitmap * m_stackupImage0
wxStaticText * m_nonCopperNote
NET_SELECTOR * m_padNetSelector
virtual void PadTypeSelected(wxCommandEvent &event)
wxTextCtrl * m_spokeAngleCtrl
wxBoxSizer * m_FlippedWarningSizer
wxStaticText * m_spokeAngleLabel
wxTextCtrl * m_padNumCtrl
wxStaticBitmap * m_stackupImage7
wxTextCtrl * m_spokeWidthCtrl
wxTextCtrl * m_cornerRadiusCtrl
wxCheckBox * m_curvedEdges
virtual void OnPadShapeSelection(wxCommandEvent &event)
wxCheckBox * m_cbBottomRight
wxChoice * m_trapAxisCtrl
wxStaticText * m_offsetYUnits
wxStaticText * m_minTrackWidthHint
wxStaticText * m_chamferRatioLabel
wxStaticBitmap * m_stackupImage6
wxStaticText * m_padToDieLabel
wxCheckBox * m_cbTopLeft1
wxStaticText * m_mixedCornerRatioLabel
TEXT_CTRL_EVAL * m_chamferRatioCtrl
wxStaticText * m_posXUnits
wxTextCtrl * m_pasteMarginCtrl
wxStaticText * m_mixedChamferRatioUnits
wxStaticText * m_pasteMarginRatioLabel
wxStaticBitmap * m_FlippedWarningIcon
virtual void OnUpdateUI(wxUpdateUIEvent &event)
wxTextCtrl * m_trapDeltaCtrl
~DIALOG_PAD_PROPERTIES_BASE()
wxCheckBox * m_layerUserDwgs
TEXT_CTRL_EVAL * m_mixedChamferRatioCtrl
virtual void onCornerRadiusChange(wxCommandEvent &event)
wxStaticText * m_sizeYLabel
virtual void OnValuesChanged(wxCommandEvent &event)
wxSpinCtrlDouble * m_spTeardropLenPercent
DIALOG_PAD_PROPERTIES_BASE(wxWindow *parent, wxWindowID id=wxID_DIALOG_EDIT_PAD, const wxString &title=_("Pad Properties"), const wxPoint &pos=wxDefaultPosition, const wxSize &size=wxSize(-1,-1), long style=wxDEFAULT_DIALOG_STYLE|wxRESIZE_BORDER)
virtual void OnOffsetCheckbox(wxCommandEvent &event)
wxStaticText * m_shapeLabel
wxStaticText * m_stMaxLenUnits
wxStaticText * m_mixedChamferRatioLabel
wxStaticText * m_nonCopperWarningText
wxStaticText * m_orientationUnits
wxStaticText * m_holeXLabel
wxStaticBitmap * m_stackupImage5
wxStaticText * m_posYUnits
wxComboBox * m_cb_padrotation
wxStaticText * m_cornerRatioLabel
wxTextCtrl * m_tcMaxHeight
wxStaticText * m_padTypeLabel
wxStaticText * m_stHDRatio
virtual void onCornerSizePercentChange(wxCommandEvent &event)
wxStaticLine * m_staticline51
wxStaticText * m_sizeXLabel
wxSpinCtrl * m_curvePointsCtrl
wxStaticText * m_cornerRadiusLabel
wxBoxSizer * m_legacyTeardropsWarning
wxButton * m_sdbSizerCancel
wxStaticText * m_staticText88
TEXT_CTRL_EVAL * m_cornerRatioCtrl
virtual void OnDrillShapeSelected(wxCommandEvent &event)
virtual void OnSetLayers(wxCommandEvent &event)
wxChoice * m_choiceFabProperty
wxFlexGridSizer * fgSizerTrapProps
wxStaticText * m_minTrackWidthUnits
wxStaticText * m_staticText89
wxCheckBox * m_offsetShapeOpt
wxStaticText * m_maskMarginUnits
wxStaticText * m_zoneKnockoutLabel
wxStaticText * m_PadOrientText
wxStaticBitmap * m_nonCopperWarningIcon
wxBoxSizer * m_padPreviewSizer
wxStaticText * m_pasteMarginRatioUnits
wxStaticText * m_staticText86
wxBoxSizer * m_middleBoxSizer
wxStaticText * m_cornerRatioUnits
wxStaticText * m_staticText85
wxStaticText * m_clearanceUnits
wxPanel * m_connectionsPanel
wxStaticText * m_posXLabel
wxStaticLine * m_staticline71
wxCheckBox * m_cbShowPadOutline
wxStaticText * m_staticTextInfoPosValue
wxStaticText * m_padNetLabel
wxStaticBitmap * m_bitmapTeardrop
wxCheckBox * m_layerBackPaste
wxStaticLine * m_staticline7
virtual void OnSetCopperLayers(wxCommandEvent &event)
wxTextCtrl * m_padToDieCtrl
wxSimplebook * m_nonCopperWarningBook
TEXT_CTRL_EVAL * m_pasteMarginRatioCtrl
wxFlexGridSizer * fgSizerRoundingProps
wxChoice * m_rbCopperLayersSel
wxPanel * m_localSettingsPanel
wxStaticText * m_pasteMarginLabel
wxTextCtrl * m_maskMarginCtrl
wxStaticText * m_thermalGapUnits
wxTextCtrl * m_tcTdMaxLen
wxStaticText * m_trapAxisLabel
wxStaticText * m_stWidthPercentUnits
Dialog helper object to sit in the inheritance tree between wxDialog and any class written by wxFormB...
wxTextCtrl wrapper to handle math expression evaluation.