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 );
96 wxString m_cbPadstackModeChoices[] = {
_(
"Normal"),
_(
"Front/Inner/Bottom"),
_(
"Custom") };
97 int m_cbPadstackModeNChoices =
sizeof( m_cbPadstackModeChoices ) /
sizeof( wxString );
98 m_cbPadstackMode =
new wxChoice(
m_panelGeneral, wxID_ANY, wxDefaultPosition, wxDefaultSize, m_cbPadstackModeNChoices, m_cbPadstackModeChoices, 0 );
106 wxString m_cbEditLayerChoices[] = {
_(
"Inner Layers") };
107 int m_cbEditLayerNChoices =
sizeof( m_cbEditLayerChoices ) /
sizeof( wxString );
108 m_cbEditLayer =
new wxChoice(
m_panelGeneral, wxID_ANY, wxDefaultPosition, wxDefaultSize, m_cbEditLayerNChoices, m_cbEditLayerChoices, 0 );
115 wxGridBagSizer* gbSizerPadOrientation;
116 gbSizerPadOrientation =
new wxGridBagSizer( 4, 0 );
117 gbSizerPadOrientation->SetFlexibleDirection( wxBOTH );
118 gbSizerPadOrientation->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
122 gbSizerPadOrientation->Add(
m_shapeLabel, wxGBPosition( 0, 0 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxRIGHT|wxLEFT, 5 );
124 wxString m_PadShapeSelectorChoices[] = {
_(
"Circular"),
_(
"Oval"),
_(
"Rectangular"),
_(
"Trapezoidal"),
_(
"Rounded rectangle"),
_(
"Chamfered rectangle"),
_(
"Chamfered with other corners rounded"),
_(
"Custom (circular base)"),
_(
"Custom (rectangular base)") };
125 int m_PadShapeSelectorNChoices =
sizeof( m_PadShapeSelectorChoices ) /
sizeof( wxString );
128 gbSizerPadOrientation->Add(
m_PadShapeSelector, wxGBPosition( 0, 1 ), wxGBSpan( 1, 5 ), wxEXPAND|wxALIGN_CENTER_VERTICAL|wxRIGHT|wxLEFT, 5 );
154 wxString m_trapAxisCtrlChoices[] = {
_(
"Horizontal"),
_(
"Vertical") };
155 int m_trapAxisCtrlNChoices =
sizeof( m_trapAxisCtrlChoices ) /
sizeof( wxString );
156 m_trapAxisCtrl =
new wxChoice(
m_trapProps, wxID_ANY, wxDefaultPosition, wxDefaultSize, m_trapAxisCtrlNChoices, m_trapAxisCtrlChoices, 0 );
173 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.") );
186 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.") );
203 wxFlexGridSizer* fgSizerChamferProps;
204 fgSizerChamferProps =
new wxFlexGridSizer( 0, 2, 4, 0 );
205 fgSizerChamferProps->AddGrowableCol( 1 );
206 fgSizerChamferProps->SetFlexibleDirection( wxBOTH );
207 fgSizerChamferProps->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
211 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.") );
215 wxBoxSizer* bSizer29;
216 bSizer29 =
new wxBoxSizer( wxHORIZONTAL );
226 fgSizerChamferProps->Add( bSizer29, 1, wxEXPAND, 5 );
234 wxGridSizer* gCornersSizer;
235 gCornersSizer =
new wxGridSizer( 0, 2, 3, 6 );
251 fgSizerChamferProps->Add( gCornersSizer, 1, wxEXPAND|wxRIGHT|wxLEFT, 5 );
259 wxFlexGridSizer* fgMixedProps;
260 fgMixedProps =
new wxFlexGridSizer( 0, 2, 4, 0 );
261 fgMixedProps->AddGrowableCol( 1 );
262 fgMixedProps->SetFlexibleDirection( wxBOTH );
263 fgMixedProps->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
267 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.") );
271 wxBoxSizer* bSizer30;
272 bSizer30 =
new wxBoxSizer( wxHORIZONTAL );
282 fgMixedProps->Add( bSizer30, 1, wxEXPAND, 5 );
290 wxGridSizer* gMixedCornersSizer;
291 gMixedCornersSizer =
new wxGridSizer( 0, 2, 2, 6 );
307 fgMixedProps->Add( gMixedCornersSizer, 1, wxEXPAND|wxRIGHT|wxLEFT, 5 );
311 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.") );
315 wxBoxSizer* bSizer31;
316 bSizer31 =
new wxBoxSizer( wxHORIZONTAL );
326 fgMixedProps->Add( bSizer31, 1, wxEXPAND, 5 );
334 gbSizerPadOrientation->Add(
m_shapePropsBook, wxGBPosition( 1, 0 ), wxGBSpan( 1, 6 ), wxEXPAND|wxLEFT, 25 );
338 gbSizerPadOrientation->Add(
m_sizeXLabel, wxGBPosition( 2, 0 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxRIGHT|wxLEFT, 5 );
341 gbSizerPadOrientation->Add(
m_sizeXCtrl, wxGBPosition( 2, 1 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxEXPAND, 5 );
345 gbSizerPadOrientation->Add(
m_sizeXUnits, wxGBPosition( 2, 2 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxRIGHT|wxLEFT, 5 );
349 gbSizerPadOrientation->Add(
m_sizeYLabel, wxGBPosition( 2, 3 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxRIGHT|wxLEFT, 5 );
352 gbSizerPadOrientation->Add(
m_sizeYCtrl, wxGBPosition( 2, 4 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxEXPAND, 5 );
356 gbSizerPadOrientation->Add(
m_sizeYUnits, wxGBPosition( 2, 5 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxRIGHT|wxLEFT, 5 );
360 gbSizerPadOrientation->Add(
m_PadOrientText, wxGBPosition( 3, 0 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxRIGHT|wxLEFT, 5 );
368 gbSizerPadOrientation->Add(
m_cb_padrotation, wxGBPosition( 3, 1 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxEXPAND, 5 );
372 gbSizerPadOrientation->Add(
m_orientationUnits, wxGBPosition( 3, 2 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxRIGHT|wxLEFT, 5 );
375 gbSizerPadOrientation->AddGrowableCol( 0 );
382 wxBoxSizer* bSizer35;
383 bSizer35 =
new wxBoxSizer( wxHORIZONTAL );
402 m_offsetCtrls->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
434 m_gbSizerHole->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
440 wxString m_holeShapeCtrlChoices[] = {
_(
"Circular"),
_(
"Oval") };
441 int m_holeShapeCtrlNChoices =
sizeof( m_holeShapeCtrlChoices ) /
sizeof( wxString );
442 m_holeShapeCtrl =
new wxChoice(
m_panelGeneral, wxID_ANY, wxDefaultPosition, wxDefaultSize, m_holeShapeCtrlNChoices, m_holeShapeCtrlChoices, 0 );
474 wxFlexGridSizer* fgSizerPadToDie;
475 fgSizerPadToDie =
new wxFlexGridSizer( 14, 3, 0, 0 );
476 fgSizerPadToDie->AddGrowableCol( 1 );
477 fgSizerPadToDie->SetFlexibleDirection( wxBOTH );
478 fgSizerPadToDie->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
480 wxBoxSizer* bSizer34;
481 bSizer34 =
new wxBoxSizer( wxHORIZONTAL );
484 bSizer34->Add(
m_padToDieOpt, 0, wxALIGN_CENTER_VERTICAL|wxLEFT, 5 );
488 bSizer34->Add(
m_padToDieLabel, 0, wxALIGN_CENTER_VERTICAL|wxRESERVE_SPACE_EVEN_IF_HIDDEN|wxRIGHT, 5 );
491 fgSizerPadToDie->Add( bSizer34, 0, wxEXPAND|wxRIGHT, 5 );
494 fgSizerPadToDie->Add(
m_padToDieCtrl, 0, wxEXPAND|wxLEFT|wxRESERVE_SPACE_EVEN_IF_HIDDEN, 5 );
498 fgSizerPadToDie->Add(
m_padToDieUnits, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRESERVE_SPACE_EVEN_IF_HIDDEN|wxRIGHT, 5 );
508 wxStaticBoxSizer* m_LayersSizer;
509 m_LayersSizer =
new wxStaticBoxSizer(
new wxStaticBox(
m_panelGeneral, wxID_ANY, wxEmptyString ), wxVERTICAL );
513 m_FlippedWarningIcon =
new wxStaticBitmap( m_LayersSizer->GetStaticBox(), wxID_ANY, wxNullBitmap, wxDefaultPosition, wxSize( 48,48 ), 0 );
518 m_staticText86 =
new wxStaticText( m_LayersSizer->GetStaticBox(), wxID_ANY,
_(
"Parent footprint on board is flipped.\nLayers will be reversed."), wxDefaultPosition, wxDefaultSize, 0 );
525 m_copperLayersLabel =
new wxStaticText( m_LayersSizer->GetStaticBox(), wxID_ANY,
_(
"Copper layers:"), wxDefaultPosition, wxDefaultSize, 0 );
529 wxArrayString m_rbCopperLayersSelChoices;
530 m_rbCopperLayersSel =
new wxChoice( m_LayersSizer->GetStaticBox(), wxID_ANY, wxDefaultPosition, wxDefaultSize, m_rbCopperLayersSelChoices, 0 );
534 m_techLayersLabel =
new wxStaticText( m_LayersSizer->GetStaticBox(), wxID_ANY,
_(
"Technical layers:"), wxDefaultPosition, wxDefaultSize, 0 );
538 m_layerFrontAdhesive =
new wxCheckBox( m_LayersSizer->GetStaticBox(), wxID_ANY,
_(
"Front adhesive"), wxDefaultPosition, wxDefaultSize, 0 );
541 m_layerBackAdhesive =
new wxCheckBox( m_LayersSizer->GetStaticBox(), wxID_ANY,
_(
"Back adhesive"), wxDefaultPosition, wxDefaultSize, 0 );
544 m_layerFrontPaste =
new wxCheckBox( m_LayersSizer->GetStaticBox(), wxID_ANY,
_(
"Front solder paste"), wxDefaultPosition, wxDefaultSize, 0 );
547 m_layerBackPaste =
new wxCheckBox( m_LayersSizer->GetStaticBox(), wxID_ANY,
_(
"Back solder paste"), wxDefaultPosition, wxDefaultSize, 0 );
550 m_layerFrontSilk =
new wxCheckBox( m_LayersSizer->GetStaticBox(), wxID_ANY,
_(
"Front silk screen"), wxDefaultPosition, wxDefaultSize, 0 );
553 m_layerBackSilk =
new wxCheckBox( m_LayersSizer->GetStaticBox(), wxID_ANY,
_(
"Back silk screen"), wxDefaultPosition, wxDefaultSize, 0 );
556 m_layerFrontMask =
new wxCheckBox( m_LayersSizer->GetStaticBox(), wxID_ANY,
_(
"Front solder mask"), wxDefaultPosition, wxDefaultSize, 0 );
559 m_layerBackMask =
new wxCheckBox( m_LayersSizer->GetStaticBox(), wxID_ANY,
_(
"Back solder mask"), wxDefaultPosition, wxDefaultSize, 0 );
562 m_layerUserDwgs =
new wxCheckBox( m_LayersSizer->GetStaticBox(), wxID_ANY,
_(
"Drafting notes"), wxDefaultPosition, wxDefaultSize, 0 );
565 m_layerECO1 =
new wxCheckBox( m_LayersSizer->GetStaticBox(), wxID_ANY,
_(
"E.C.O.1"), wxDefaultPosition, wxDefaultSize, 0 );
566 m_LayersSizer->Add(
m_layerECO1, 0, wxTOP|wxRIGHT|wxLEFT, 4 );
568 m_layerECO2 =
new wxCheckBox( m_LayersSizer->GetStaticBox(), wxID_ANY,
_(
"E.C.O.2"), wxDefaultPosition, wxDefaultSize, 0 );
576 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 specifies an electrical test point\nHeatsink specifies a thermal pad\nCastellated specifies a through hole pad on a board edge\nMechanical specifies a through-hole pad that is used for mechanical support") );
583 wxString m_choiceFabPropertyChoices[] = {
_(
"None"),
_(
"BGA pad"),
_(
"Fiducial, local to footprint"),
_(
"Fiducial, global to board"),
_(
"Test point pad"),
_(
"Heatsink pad"),
_(
"Castellated pad (through hole only)"),
_(
"Mechanical") };
584 int m_choiceFabPropertyNChoices =
sizeof( m_choiceFabPropertyChoices ) /
sizeof( wxString );
598 wxBoxSizer* bSizerPanelConnections;
599 bSizerPanelConnections =
new wxBoxSizer( wxVERTICAL );
601 wxBoxSizer* bSizerConnectionsMargins;
602 bSizerConnectionsMargins =
new wxBoxSizer( wxVERTICAL );
604 wxStaticBoxSizer* bSizerTeardrops;
605 bSizerTeardrops =
new wxStaticBoxSizer(
new wxStaticBox(
m_connectionsPanel, wxID_ANY,
_(
"Teardrops") ), wxVERTICAL );
609 m_legacyTeardropsIcon =
new wxStaticBitmap( bSizerTeardrops->GetStaticBox(), wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, 0 );
612 wxBoxSizer* bSizer42;
613 bSizer42 =
new wxBoxSizer( wxVERTICAL );
615 m_staticText85 =
new wxStaticText( bSizerTeardrops->GetStaticBox(), wxID_ANY,
_(
"Board contains legacy teardrops."), wxDefaultPosition, wxDefaultSize, 0 );
619 m_staticText851 =
new wxStaticText( bSizerTeardrops->GetStaticBox(), wxID_ANY,
_(
"Use Edit > Edit Teardrops to apply automatic teardrops."), wxDefaultPosition, wxDefaultSize, 0 );
629 wxBoxSizer* bSizerCols11;
630 bSizerCols11 =
new wxBoxSizer( wxHORIZONTAL );
632 wxBoxSizer* bSizerLeftCol11;
633 bSizerLeftCol11 =
new wxBoxSizer( wxVERTICAL );
635 m_cbTeardrops =
new wxCheckBox( bSizerTeardrops->GetStaticBox(), wxID_ANY,
_(
"Add teardrops on pad's track connections"), wxDefaultPosition, wxDefaultSize, 0 );
636 bSizerLeftCol11->Add(
m_cbTeardrops, 0, wxBOTTOM|wxRIGHT|wxLEFT, 5 );
638 m_cbPreferZoneConnection =
new wxCheckBox( bSizerTeardrops->GetStaticBox(), wxID_ANY,
_(
"Prefer zone connection"), wxDefaultPosition, wxDefaultSize, 0 );
640 m_cbPreferZoneConnection->SetToolTip(
_(
"Do not create teardrops on tracks connected to pads that are also connected to a copper zone.") );
644 m_cbTeardropsUseNextTrack =
new wxCheckBox( bSizerTeardrops->GetStaticBox(), wxID_ANY,
_(
"Allow teardrops to span 2 track segments"), wxDefaultPosition, wxDefaultSize, 0 );
646 m_cbTeardropsUseNextTrack->SetToolTip(
_(
"Allows a teardrop to spread over 2 tracks if the first track segment is too short") );
651 bSizerCols11->Add( bSizerLeftCol11, 1, wxEXPAND|wxTOP, 3 );
654 bSizerCols11->Add( 15, 0, 0, wxEXPAND, 5 );
656 wxBoxSizer* bSizerRightCol11;
657 bSizerRightCol11 =
new wxBoxSizer( wxVERTICAL );
659 wxBoxSizer* bSizer39;
660 bSizer39 =
new wxBoxSizer( wxHORIZONTAL );
662 m_stHDRatio =
new wxStaticText( bSizerTeardrops->GetStaticBox(), wxID_ANY,
_(
"Maximum track width:"), wxDefaultPosition, wxDefaultSize, 0 );
664 m_stHDRatio->SetToolTip(
_(
"Max pad/via size to track width ratio to create a teardrop.\n100 always creates a teardrop.") );
666 bSizer39->Add(
m_stHDRatio, 0, wxALIGN_CENTER_VERTICAL, 5 );
668 m_spTeardropHDPercent =
new wxSpinCtrlDouble( bSizerTeardrops->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxSP_ARROW_KEYS, 0, 100, 90, 10 );
670 m_spTeardropHDPercent->SetToolTip(
_(
"Tracks which are similar in size to the pad do not need teardrops.") );
674 m_minTrackWidthUnits =
new wxStaticText( bSizerTeardrops->GetStaticBox(), wxID_ANY,
_(
"%("), wxDefaultPosition, wxDefaultSize, 0 );
678 m_minTrackWidthHint =
new wxStaticText( bSizerTeardrops->GetStaticBox(), wxID_ANY,
_(
"d"), wxDefaultPosition, wxDefaultSize, 0 );
680 m_minTrackWidthHint->SetFont( wxFont( wxNORMAL_FONT->GetPointSize(), wxFONTFAMILY_DEFAULT, wxFONTSTYLE_ITALIC, wxFONTWEIGHT_NORMAL,
false, wxEmptyString ) );
684 m_staticText87 =
new wxStaticText( bSizerTeardrops->GetStaticBox(), wxID_ANY,
_(
" )"), wxDefaultPosition, wxDefaultSize, 0 );
689 bSizerRightCol11->Add( bSizer39, 0, 0, 3 );
692 bSizerCols11->Add( bSizerRightCol11, 1, wxEXPAND|wxLEFT, 10 );
695 bSizerTeardrops->Add( bSizerCols11, 0, wxEXPAND, 5 );
698 bSizerTeardrops->Add( 0, 5, 0, wxEXPAND, 5 );
700 m_teardropShapeLabel =
new wxStaticText( bSizerTeardrops->GetStaticBox(), wxID_ANY,
_(
"Teardrop Shape"), wxDefaultPosition, wxDefaultSize, 0 );
704 m_staticline51 =
new wxStaticLine( bSizerTeardrops->GetStaticBox(), wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_HORIZONTAL );
707 wxBoxSizer* bSizerShapeColumns;
708 bSizerShapeColumns =
new wxBoxSizer( wxHORIZONTAL );
710 wxBoxSizer* bSizerLeftCol;
711 bSizerLeftCol =
new wxBoxSizer( wxVERTICAL );
713 m_bitmapTeardrop =
new wxStaticBitmap( bSizerTeardrops->GetStaticBox(), wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, 0 );
714 bSizerLeftCol->Add(
m_bitmapTeardrop, 1, wxALIGN_CENTER_HORIZONTAL|wxRIGHT|wxLEFT, 5 );
717 bSizerShapeColumns->Add( bSizerLeftCol, 1, wxEXPAND|wxRIGHT, 10 );
720 bSizerShapeColumns->Add( 10, 0, 0, wxEXPAND, 5 );
722 wxBoxSizer* bSizer43;
723 bSizer43 =
new wxBoxSizer( wxVERTICAL );
725 wxFlexGridSizer* fgSizerRightCol;
726 fgSizerRightCol =
new wxFlexGridSizer( 0, 3, 2, 0 );
727 fgSizerRightCol->AddGrowableCol( 1 );
728 fgSizerRightCol->SetFlexibleDirection( wxBOTH );
729 fgSizerRightCol->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
731 m_stHsetting =
new wxStaticText( bSizerTeardrops->GetStaticBox(), wxID_ANY,
_(
"Best length (L):"), wxDefaultPosition, wxDefaultSize, 0 );
733 fgSizerRightCol->Add(
m_stHsetting, 0, wxALIGN_CENTER_VERTICAL, 5 );
735 m_spTeardropLenPercent =
new wxSpinCtrlDouble( bSizerTeardrops->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxSP_ARROW_KEYS, 20, 200, 40.000000, 10 );
739 wxBoxSizer* bSizer131;
740 bSizer131 =
new wxBoxSizer( wxHORIZONTAL );
742 m_stLenPercentUnits =
new wxStaticText( bSizerTeardrops->GetStaticBox(), wxID_ANY,
_(
"%("), wxDefaultPosition, wxDefaultSize, 0 );
746 m_stLenPercentHint =
new wxStaticText( bSizerTeardrops->GetStaticBox(), wxID_ANY,
_(
"d"), wxDefaultPosition, wxDefaultSize, 0 );
748 m_stLenPercentHint->SetFont( wxFont( wxNORMAL_FONT->GetPointSize(), wxFONTFAMILY_DEFAULT, wxFONTSTYLE_ITALIC, wxFONTWEIGHT_NORMAL,
false, wxEmptyString ) );
752 m_staticText88 =
new wxStaticText( bSizerTeardrops->GetStaticBox(), wxID_ANY,
_(
" )"), wxDefaultPosition, wxDefaultSize, 0 );
757 fgSizerRightCol->Add( bSizer131, 1, wxEXPAND|wxALIGN_CENTER_VERTICAL, 5 );
759 m_stMaxLen =
new wxStaticText( bSizerTeardrops->GetStaticBox(), wxID_ANY,
_(
"Maximum length (L):"), wxDefaultPosition, wxDefaultSize, 0 );
761 fgSizerRightCol->Add(
m_stMaxLen, 0, wxALIGN_CENTER_VERTICAL, 5 );
763 m_tcTdMaxLen =
new wxTextCtrl( bSizerTeardrops->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
764 fgSizerRightCol->Add(
m_tcTdMaxLen, 0, wxEXPAND|wxALIGN_CENTER_VERTICAL|wxRIGHT|wxLEFT, 3 );
766 m_stMaxLenUnits =
new wxStaticText( bSizerTeardrops->GetStaticBox(), wxID_ANY,
_(
"mm"), wxDefaultPosition, wxDefaultSize, 0 );
768 fgSizerRightCol->Add(
m_stMaxLenUnits, 0, wxALIGN_CENTER_VERTICAL|wxRIGHT, 5 );
771 fgSizerRightCol->Add( 0, 5, 1, wxEXPAND, 5 );
774 fgSizerRightCol->Add( 0, 0, 1, wxEXPAND, 5 );
777 fgSizerRightCol->Add( 0, 0, 1, wxEXPAND, 5 );
779 m_stVsetting =
new wxStaticText( bSizerTeardrops->GetStaticBox(), wxID_ANY,
_(
"Best width (W):"), wxDefaultPosition, wxDefaultSize, 0 );
781 fgSizerRightCol->Add(
m_stVsetting, 0, wxALIGN_CENTER_VERTICAL, 10 );
783 m_spTeardropSizePercent =
new wxSpinCtrlDouble( bSizerTeardrops->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxSP_ARROW_KEYS, 60, 100, 100.000000, 10 );
787 wxBoxSizer* bSizer13;
788 bSizer13 =
new wxBoxSizer( wxHORIZONTAL );
790 m_stWidthPercentUnits =
new wxStaticText( bSizerTeardrops->GetStaticBox(), wxID_ANY,
_(
"%("), wxDefaultPosition, wxDefaultSize, 0 );
794 m_stWidthPercentHint =
new wxStaticText( bSizerTeardrops->GetStaticBox(), wxID_ANY,
_(
"d"), wxDefaultPosition, wxDefaultSize, 0 );
796 m_stWidthPercentHint->SetFont( wxFont( wxNORMAL_FONT->GetPointSize(), wxFONTFAMILY_DEFAULT, wxFONTSTYLE_ITALIC, wxFONTWEIGHT_NORMAL,
false, wxEmptyString ) );
800 m_staticText89 =
new wxStaticText( bSizerTeardrops->GetStaticBox(), wxID_ANY,
_(
" )"), wxDefaultPosition, wxDefaultSize, 0 );
805 fgSizerRightCol->Add( bSizer13, 1, wxEXPAND|wxALIGN_CENTER_VERTICAL, 5 );
807 m_stTdMaxSize =
new wxStaticText( bSizerTeardrops->GetStaticBox(), wxID_ANY,
_(
"Maximum width (W):"), wxDefaultPosition, wxDefaultSize, 0 );
809 fgSizerRightCol->Add(
m_stTdMaxSize, 0, wxALIGN_CENTER_VERTICAL, 10 );
811 m_tcMaxHeight =
new wxTextCtrl( bSizerTeardrops->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
812 fgSizerRightCol->Add(
m_tcMaxHeight, 0, wxEXPAND|wxALIGN_CENTER_VERTICAL|wxRIGHT|wxLEFT, 3 );
814 m_stMaxHeightUnits =
new wxStaticText( bSizerTeardrops->GetStaticBox(), wxID_ANY,
_(
"mm"), wxDefaultPosition, wxDefaultSize, 0 );
819 bSizer43->Add( fgSizerRightCol, 1, wxEXPAND|wxTOP|wxLEFT, 10 );
821 wxBoxSizer* bSizer44;
822 bSizer44 =
new wxBoxSizer( wxHORIZONTAL );
824 m_curvedEdges =
new wxCheckBox( bSizerTeardrops->GetStaticBox(), wxID_ANY,
_(
"Curved edges"), wxDefaultPosition, wxDefaultSize, 0 );
825 bSizer44->Add(
m_curvedEdges, 0, wxALIGN_CENTER_VERTICAL, 5 );
828 bSizer44->Add( 45, 0, 0, 0, 5 );
830 m_curvePointsLabel =
new wxStaticText( bSizerTeardrops->GetStaticBox(), wxID_ANY,
_(
"Points:"), wxDefaultPosition, wxDefaultSize, 0 );
834 m_curvePointsCtrl =
new wxSpinCtrl( bSizerTeardrops->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxSP_ARROW_KEYS, 3, 10, 5 );
835 bSizer44->Add(
m_curvePointsCtrl, 0, wxALIGN_CENTER_VERTICAL|wxRIGHT|wxLEFT, 5 );
838 bSizer43->Add( bSizer44, 0, wxEXPAND|wxTOP|wxRIGHT|wxLEFT, 8 );
841 bSizerShapeColumns->Add( bSizer43, 1, wxEXPAND, 5 );
844 bSizerTeardrops->Add( bSizerShapeColumns, 1, wxBOTTOM|wxEXPAND|wxRIGHT, 5 );
847 bSizerConnectionsMargins->Add( bSizerTeardrops, 1, wxEXPAND|wxBOTTOM|wxRIGHT|wxLEFT, 5 );
849 wxBoxSizer* bSizerConnectionsLower;
850 bSizerConnectionsLower =
new wxBoxSizer( wxHORIZONTAL );
854 wxFlexGridSizer* fgSizerCopperZonesOpts;
855 fgSizerCopperZonesOpts =
new wxFlexGridSizer( 0, 2, 5, 0 );
856 fgSizerCopperZonesOpts->AddGrowableCol( 1 );
857 fgSizerCopperZonesOpts->SetFlexibleDirection( wxBOTH );
858 fgSizerCopperZonesOpts->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
864 wxString m_ZoneConnectionChoiceChoices[] = {
_(
"From parent footprint"),
_(
"Solid"),
_(
"Thermal relief"),
_(
"None") };
865 int m_ZoneConnectionChoiceNChoices =
sizeof( m_ZoneConnectionChoiceChoices ) /
sizeof( wxString );
874 wxString m_ZoneCustomPadShapeChoices[] = {
_(
"Pad shape"),
_(
"Pad convex hull") };
875 int m_ZoneCustomPadShapeNChoices =
sizeof( m_ZoneCustomPadShapeChoices ) /
sizeof( wxString );
878 fgSizerCopperZonesOpts->Add(
m_ZoneCustomPadShape, 1, wxALIGN_CENTER_VERTICAL|wxEXPAND|wxLEFT, 5 );
886 wxStaticBoxSizer* sbSizerThermalReliefs;
887 sbSizerThermalReliefs =
new wxStaticBoxSizer(
new wxStaticBox(
m_connectionsPanel, wxID_ANY,
_(
"Thermal Relief Overrides") ), wxVERTICAL );
889 wxFlexGridSizer* fgSizerThermalReliefs;
890 fgSizerThermalReliefs =
new wxFlexGridSizer( 0, 3, 3, 0 );
891 fgSizerThermalReliefs->AddGrowableCol( 1 );
892 fgSizerThermalReliefs->SetFlexibleDirection( wxBOTH );
893 fgSizerThermalReliefs->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
895 m_thermalGapLabel =
new wxStaticText( sbSizerThermalReliefs->GetStaticBox(), wxID_ANY,
_(
"Relief gap:"), wxDefaultPosition, wxDefaultSize, 0 );
897 fgSizerThermalReliefs->Add(
m_thermalGapLabel, 0, wxALIGN_CENTER_VERTICAL|wxLEFT, 5 );
899 m_thermalGapCtrl =
new wxTextCtrl( sbSizerThermalReliefs->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
900 fgSizerThermalReliefs->Add(
m_thermalGapCtrl, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxEXPAND, 3 );
902 m_thermalGapUnits =
new wxStaticText( sbSizerThermalReliefs->GetStaticBox(), wxID_ANY,
_(
"mm"), wxDefaultPosition, wxDefaultSize, 0 );
904 fgSizerThermalReliefs->Add(
m_thermalGapUnits, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5 );
906 m_spokeWidthLabel =
new wxStaticText( sbSizerThermalReliefs->GetStaticBox(), wxID_ANY,
_(
"Spoke width:"), wxDefaultPosition, wxDefaultSize, 0 );
908 fgSizerThermalReliefs->Add(
m_spokeWidthLabel, 0, wxALIGN_CENTER_VERTICAL|wxLEFT, 5 );
910 m_spokeWidthCtrl =
new wxTextCtrl( sbSizerThermalReliefs->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
911 fgSizerThermalReliefs->Add(
m_spokeWidthCtrl, 0, wxEXPAND|wxALIGN_CENTER_VERTICAL|wxLEFT, 3 );
913 m_spokeWidthUnits =
new wxStaticText( sbSizerThermalReliefs->GetStaticBox(), wxID_ANY,
_(
"mm"), wxDefaultPosition, wxDefaultSize, 0 );
915 fgSizerThermalReliefs->Add(
m_spokeWidthUnits, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5 );
917 m_spokeAngleLabel =
new wxStaticText( sbSizerThermalReliefs->GetStaticBox(), wxID_ANY,
_(
"Spoke angle:"), wxDefaultPosition, wxDefaultSize, 0 );
919 fgSizerThermalReliefs->Add(
m_spokeAngleLabel, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5 );
921 m_spokeAngleCtrl =
new wxTextCtrl( sbSizerThermalReliefs->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
924 m_spokeAngleUnits =
new wxStaticText( sbSizerThermalReliefs->GetStaticBox(), wxID_ANY,
_(
"deg"), wxDefaultPosition, wxDefaultSize, 0 );
926 fgSizerThermalReliefs->Add(
m_spokeAngleUnits, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5 );
929 sbSizerThermalReliefs->Add( fgSizerThermalReliefs, 1, wxBOTTOM|wxEXPAND, 5 );
932 bSizerConnectionsLower->Add( sbSizerThermalReliefs, 1, wxEXPAND|wxALL, 5 );
935 bSizerConnectionsMargins->Add( bSizerConnectionsLower, 0, wxEXPAND|wxTOP, 10 );
938 bSizerPanelConnections->Add( bSizerConnectionsMargins, 0, wxEXPAND|wxBOTTOM|wxRIGHT|wxLEFT, 5 );
946 wxBoxSizer* bSizerPanelClearance;
947 bSizerPanelClearance =
new wxBoxSizer( wxVERTICAL );
949 wxBoxSizer* bSizerClearance;
950 bSizerClearance =
new wxBoxSizer( wxVERTICAL );
952 wxStaticBoxSizer* sbClearancesSizer;
953 sbClearancesSizer =
new wxStaticBoxSizer(
new wxStaticBox(
m_localSettingsPanel, wxID_ANY,
_(
"Clearance Overrides") ), wxVERTICAL );
955 wxStaticText* m_staticTextHint;
956 m_staticTextHint =
new wxStaticText( sbClearancesSizer->GetStaticBox(), wxID_ANY,
_(
"Leave values blank to use parent footprint or netclass values."), wxDefaultPosition, wxDefaultSize, 0 );
957 m_staticTextHint->Wrap( -1 );
958 sbClearancesSizer->Add( m_staticTextHint, 0, wxBOTTOM|wxLEFT|wxRIGHT, 5 );
960 m_staticTextInfoPosValue =
new wxStaticText( sbClearancesSizer->GetStaticBox(), wxID_ANY,
_(
"Positive clearance means area bigger than the pad (usual for mask clearance)."), wxDefaultPosition, wxDefaultSize, 0 );
964 m_staticTextInfoNegVal =
new wxStaticText( sbClearancesSizer->GetStaticBox(), wxID_ANY,
_(
"Negative clearance means area smaller than the pad (usual for paste clearance)."), wxDefaultPosition, wxDefaultSize, 0 );
968 wxFlexGridSizer* fgClearancesGridSizer;
969 fgClearancesGridSizer =
new wxFlexGridSizer( 4, 3, 4, 0 );
970 fgClearancesGridSizer->AddGrowableCol( 1 );
971 fgClearancesGridSizer->SetFlexibleDirection( wxBOTH );
972 fgClearancesGridSizer->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
974 m_clearanceLabel =
new wxStaticText( sbClearancesSizer->GetStaticBox(), wxID_ANY,
_(
"Pad clearance:"), wxDefaultPosition, wxDefaultSize, 0 );
976 m_clearanceLabel->SetToolTip(
_(
"This is the local net clearance for this pad.\nIf 0, the footprint local value or the Netclass value is used.") );
978 fgClearancesGridSizer->Add(
m_clearanceLabel, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5 );
980 m_clearanceCtrl =
new wxTextCtrl( sbClearancesSizer->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
981 fgClearancesGridSizer->Add(
m_clearanceCtrl, 0, wxEXPAND|wxALIGN_CENTER_VERTICAL, 5 );
983 m_clearanceUnits =
new wxStaticText( sbClearancesSizer->GetStaticBox(), wxID_ANY,
_(
"mm"), wxDefaultPosition, wxDefaultSize, 0 );
985 fgClearancesGridSizer->Add(
m_clearanceUnits, 0, wxALIGN_CENTER_VERTICAL|wxRIGHT|wxLEFT, 5 );
987 m_maskMarginLabel =
new wxStaticText( sbClearancesSizer->GetStaticBox(), wxID_ANY,
_(
"Solder mask expansion:"), wxDefaultPosition, wxDefaultSize, 0 );
989 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.") );
991 fgClearancesGridSizer->Add(
m_maskMarginLabel, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5 );
993 m_maskMarginCtrl =
new wxTextCtrl( sbClearancesSizer->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
994 fgClearancesGridSizer->Add(
m_maskMarginCtrl, 0, wxEXPAND|wxTOP|wxBOTTOM|wxALIGN_CENTER_VERTICAL, 15 );
996 m_maskMarginUnits =
new wxStaticText( sbClearancesSizer->GetStaticBox(), wxID_ANY,
_(
"mm"), wxDefaultPosition, wxDefaultSize, 0 );
998 fgClearancesGridSizer->Add(
m_maskMarginUnits, 0, wxALIGN_CENTER_VERTICAL|wxRIGHT|wxLEFT, 5 );
1000 m_pasteMarginLabel =
new wxStaticText( sbClearancesSizer->GetStaticBox(), wxID_ANY,
_(
"Solder paste absolute clearance:"), wxDefaultPosition, wxDefaultSize, 0 );
1002 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.") );
1004 fgClearancesGridSizer->Add(
m_pasteMarginLabel, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5 );
1006 m_pasteMarginCtrl =
new wxTextCtrl( sbClearancesSizer->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
1007 fgClearancesGridSizer->Add(
m_pasteMarginCtrl, 0, wxEXPAND|wxALIGN_CENTER_VERTICAL, 5 );
1009 m_pasteMarginUnits =
new wxStaticText( sbClearancesSizer->GetStaticBox(), wxID_ANY,
_(
"mm"), wxDefaultPosition, wxDefaultSize, 0 );
1011 fgClearancesGridSizer->Add(
m_pasteMarginUnits, 0, wxALIGN_CENTER_VERTICAL|wxRIGHT|wxLEFT, 5 );
1013 m_pasteMarginRatioLabel =
new wxStaticText( sbClearancesSizer->GetStaticBox(), wxID_ANY,
_(
"Solder paste relative clearance:"), wxDefaultPosition, wxDefaultSize, 0 );
1015 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.") );
1019 m_pasteMarginRatioCtrl =
new wxTextCtrl( sbClearancesSizer->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
1022 m_pasteMarginRatioUnits =
new wxStaticText( sbClearancesSizer->GetStaticBox(), wxID_ANY,
_(
"%"), wxDefaultPosition, wxDefaultSize, 0 );
1027 sbClearancesSizer->Add( fgClearancesGridSizer, 0, wxTOP|wxBOTTOM, 10 );
1029 m_nonCopperWarningBook =
new wxSimplebook( sbClearancesSizer->GetStaticBox(), wxID_ANY, wxDefaultPosition, wxDefaultSize, 0 );
1031 notePanel =
new wxPanel(
m_nonCopperWarningBook, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL );
1032 wxBoxSizer* bNoteSizer;
1033 bNoteSizer =
new wxBoxSizer( wxVERTICAL );
1035 m_nonCopperNote =
new wxStaticText( notePanel, wxID_ANY,
_(
"Note: solder mask and paste values are used only for pads on copper layers."), wxDefaultPosition, wxDefaultSize, 0 );
1039 m_staticTextInfoPaste =
new wxStaticText( notePanel, wxID_ANY,
_(
"Note: solder paste clearances (absolute and relative) are added to determine the final clearance."), wxDefaultPosition, wxDefaultSize, 0 );
1044 notePanel->SetSizer( bNoteSizer );
1045 notePanel->Layout();
1046 bNoteSizer->Fit( notePanel );
1048 wxPanel* warningPanel;
1049 warningPanel =
new wxPanel(
m_nonCopperWarningBook, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL );
1050 wxBoxSizer* bWarningSizer;
1051 bWarningSizer =
new wxBoxSizer( wxHORIZONTAL );
1053 bWarningSizer->SetMinSize( wxSize( -1,50 ) );
1054 m_nonCopperWarningIcon =
new wxStaticBitmap( warningPanel, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxSize( 48,48 ), 0 );
1059 m_nonCopperWarningText =
new wxStaticText( warningPanel, wxID_ANY,
_(
"Note: solder mask and paste values are used only for pads on copper layers."), wxDefaultPosition, wxDefaultSize, 0 );
1064 warningPanel->SetSizer( bWarningSizer );
1065 warningPanel->Layout();
1066 bWarningSizer->Fit( warningPanel );
1072 bSizerClearance->Add( sbClearancesSizer, 0, wxALL|wxEXPAND, 5 );
1075 bSizerPanelClearance->Add( bSizerClearance, 0, wxEXPAND|wxBOTTOM|wxRIGHT|wxLEFT, 5 );
1083 bSizerUpper->Add(
m_notebook, 0, wxEXPAND|wxTOP|wxBOTTOM, 12 );
1085 wxBoxSizer* bSizerDisplayPad;
1086 bSizerDisplayPad =
new wxBoxSizer( wxVERTICAL );
1088 bSizerDisplayPad->SetMinSize( wxSize( 290,-1 ) );
1090 bSizerDisplayPad->Add( 0, 25, 0, wxEXPAND, 5 );
1092 m_stackupImagesBook =
new wxSimplebook(
this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxBORDER_SIMPLE );
1094 wxBoxSizer* page0Sizer;
1095 page0Sizer =
new wxBoxSizer( wxVERTICAL );
1097 m_stackupImage0 =
new wxStaticBitmap(
page0, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, 0 );
1098 page0Sizer->Add(
m_stackupImage0, 0, wxALL|wxALIGN_CENTER_HORIZONTAL, 5 );
1101 page0->SetSizer( page0Sizer );
1103 page0Sizer->Fit(
page0 );
1106 wxBoxSizer* page1Sizer;
1107 page1Sizer =
new wxBoxSizer( wxVERTICAL );
1109 m_stackupImage1 =
new wxStaticBitmap(
page1, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, 0 );
1110 page1Sizer->Add(
m_stackupImage1, 0, wxALL|wxALIGN_CENTER_HORIZONTAL, 5 );
1113 page1->SetSizer( page1Sizer );
1115 page1Sizer->Fit(
page1 );
1118 wxBoxSizer* page2Sizer;
1119 page2Sizer =
new wxBoxSizer( wxVERTICAL );
1121 m_stackupImage2 =
new wxStaticBitmap(
page2, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, 0 );
1122 page2Sizer->Add(
m_stackupImage2, 0, wxALL|wxALIGN_CENTER_HORIZONTAL, 5 );
1125 page2->SetSizer( page2Sizer );
1127 page2Sizer->Fit(
page2 );
1130 wxBoxSizer* page3Sizer;
1131 page3Sizer =
new wxBoxSizer( wxVERTICAL );
1134 page3->SetSizer( page3Sizer );
1136 page3Sizer->Fit(
page3 );
1139 wxBoxSizer* page4Sizer;
1140 page4Sizer =
new wxBoxSizer( wxVERTICAL );
1142 m_stackupImage4 =
new wxStaticBitmap(
page4, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, 0 );
1143 page4Sizer->Add(
m_stackupImage4, 0, wxALL|wxALIGN_CENTER_HORIZONTAL, 5 );
1146 page4->SetSizer( page4Sizer );
1148 page4Sizer->Fit(
page4 );
1151 wxBoxSizer* page5Sizer;
1152 page5Sizer =
new wxBoxSizer( wxVERTICAL );
1154 m_stackupImage5 =
new wxStaticBitmap(
page5, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, 0 );
1155 page5Sizer->Add(
m_stackupImage5, 0, wxALL|wxALIGN_CENTER_HORIZONTAL, 5 );
1158 page5->SetSizer( page5Sizer );
1160 page5Sizer->Fit(
page5 );
1163 wxBoxSizer* page6Sizer;
1164 page6Sizer =
new wxBoxSizer( wxVERTICAL );
1166 m_stackupImage6 =
new wxStaticBitmap(
page6, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, 0 );
1167 page6Sizer->Add(
m_stackupImage6, 0, wxALL|wxALIGN_CENTER_HORIZONTAL, 5 );
1170 page6->SetSizer( page6Sizer );
1172 page6Sizer->Fit(
page6 );
1175 wxBoxSizer* page7Sizer;
1176 page7Sizer =
new wxBoxSizer( wxVERTICAL );
1178 m_stackupImage7 =
new wxStaticBitmap(
page7, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, 0 );
1179 page7Sizer->Add(
m_stackupImage7, 0, wxALL|wxALIGN_CENTER_HORIZONTAL, 5 );
1182 page7->SetSizer( page7Sizer );
1184 page7Sizer->Fit(
page7 );
1190 bSizerDisplayPad->Add( 0, 4, 0, wxEXPAND, 5 );
1192 m_boardViewPanel =
new wxPanel(
this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL );
1203 bSizerUpper->Add( bSizerDisplayPad, 1, wxEXPAND|wxTOP, 5 );
1206 m_MainSizer->Add( bSizerUpper, 1, wxEXPAND|wxLEFT, 8 );
1208 wxBoxSizer* bottomSizer;
1209 bottomSizer =
new wxBoxSizer( wxHORIZONTAL );
1211 m_parentInfo =
new wxStaticText(
this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
1213 bottomSizer->Add(
m_parentInfo, 0, wxALIGN_CENTER_VERTICAL|wxBOTTOM|wxLEFT, 8 );
1216 bottomSizer->Add( 20, 0, 1, wxEXPAND, 5 );
1218 m_cbShowPadOutline =
new wxCheckBox(
this, wxID_ANY,
_(
"Preview pad in sketch mode"), wxDefaultPosition, wxDefaultSize, 0 );
1219 bottomSizer->Add(
m_cbShowPadOutline, 0, wxALIGN_CENTER_VERTICAL|wxBOTTOM|wxRIGHT|wxLEFT, 5 );
1222 bottomSizer->Add( 40, 0, 0, wxEXPAND, 5 );
1231 bottomSizer->Add(
m_sdbSizer, 0, wxBOTTOM|wxEXPAND|wxTOP, 5 );
1234 m_MainSizer->Add( bottomSizer, 0, wxEXPAND|wxLEFT, 5 );
1241 this->Centre( wxBOTH );
wxStaticText * m_staticTextInfoNegVal
wxStaticText * m_techLayersLabel
wxBoxSizer * m_padstackControls
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_staticText891
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)
wxTextCtrl * m_pasteMarginRatioCtrl
wxCheckBox * m_layerFrontSilk
wxTextCtrl * m_thermalGapCtrl
virtual void OnPadstackModeChanged(wxCommandEvent &event)
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
virtual void OnEditLayerChanged(wxCommandEvent &event)
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)
virtual void onModify(wxCommandEvent &event)
wxTextCtrl * m_trapDeltaCtrl
~DIALOG_PAD_PROPERTIES_BASE()
wxCheckBox * m_layerUserDwgs
wxStaticText * m_staticText90
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
wxChoice * m_cbPadstackMode
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
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.