@ -356,7 +356,7 @@ DIALOG_PAD_PROPERTIES_BASE::DIALOG_PAD_PROPERTIES_BASE( wxWindow* parent, wxWind
m_LeftBoxSizer - > Add ( 0 , 0 , 1 , wxEXPAND , 5 ) ;
m_staticline6 = new wxStaticLine ( m_panelGeneral , wxID_ANY , wxDefaultPosition , wxDefaultSize , wxLI_HORIZONTAL ) ;
m_LeftBoxSizer - > Add ( m_staticline6 , 0 , wxBOTTOM | wx EXPAND | wxTOP , 5 ) ;
m_LeftBoxSizer - > Add ( m_staticline6 , 0 , wxEXPAND | wxBOTTOM , 5 ) ;
wxGridBagSizer * gbSizerHole ;
gbSizerHole = new wxGridBagSizer ( 4 , 0 ) ;
@ -579,20 +579,20 @@ DIALOG_PAD_PROPERTIES_BASE::DIALOG_PAD_PROPERTIES_BASE( wxWindow* parent, wxWind
bSizerClearance = new wxBoxSizer ( wxVERTICAL ) ;
wxStaticBoxSizer * sbClearancesSizer ;
sbClearancesSizer = new wxStaticBoxSizer ( new wxStaticBox ( m_localSettingsPanel , wxID_ANY , _ ( " Clearances " ) ) , wxVERTICAL ) ;
sbClearancesSizer = new wxStaticBoxSizer ( new wxStaticBox ( m_localSettingsPanel , wxID_ANY , _ ( " Clearance Override s " ) ) , wxVERTICAL ) ;
wxStaticText * m_staticTextHint ;
m_staticTextHint = new wxStaticText ( sbClearancesSizer - > GetStaticBox ( ) , wxID_ANY , _ ( " Set values to 0 to use parent footprint or netclass values. " ) , wxDefaultPosition , wxDefaultSize , 0 ) ;
m_staticTextHint - > Wrap ( - 1 ) ;
sbClearancesSizer - > Add ( m_staticTextHint , 0 , wxLEFT | wx RIGHT , 5 ) ;
sbClearancesSizer - > Add ( m_staticTextHint , 0 , wxRIGHT , 10 ) ;
m_staticTextInfoPosValue = new wxStaticText ( sbClearancesSizer - > GetStaticBox ( ) , wxID_ANY , _ ( " Positive clearance means area bigger than the pad (usual for mask clearance). " ) , wxDefaultPosition , wxDefaultSize , 0 ) ;
m_staticTextInfoPosValue - > Wrap ( - 1 ) ;
sbClearancesSizer - > Add ( m_staticTextInfoPosValue , 0 , wxLEF T | wxRIGHT | wxTOP , 5 ) ;
sbClearancesSizer - > Add ( m_staticTextInfoPosValue , 0 , wxTOP | wxRIGHT , 10 ) ;
m_staticTextInfoNegVal = new wxStaticText ( sbClearancesSizer - > GetStaticBox ( ) , wxID_ANY , _ ( " Negative clearance means area smaller than the pad (usual for paste clearance). " ) , wxDefaultPosition , wxDefaultSize , 0 ) ;
m_staticTextInfoNegVal - > Wrap ( - 1 ) ;
sbClearancesSizer - > Add ( m_staticTextInfoNegVal , 0 , wxBOTTOM | wxLEFT | wx RIGHT , 5 ) ;
sbClearancesSizer - > Add ( m_staticTextInfoNegVal , 0 , wxBOTTOM | wxRIGHT , 10 ) ;
wxFlexGridSizer * fgClearancesGridSizer ;
fgClearancesGridSizer = new wxFlexGridSizer ( 4 , 3 , 0 , 0 ) ;
@ -604,12 +604,12 @@ DIALOG_PAD_PROPERTIES_BASE::DIALOG_PAD_PROPERTIES_BASE( wxWindow* parent, wxWind
m_clearanceLabel - > Wrap ( - 1 ) ;
m_clearanceLabel - > SetToolTip ( _ ( " This is the local net clearance for this pad. \n If 0, the footprint local value or the Netclass value is used. " ) ) ;
fgClearancesGridSizer - > Add ( m_clearanceLabel , 0 , wxALIGN_CENTER_VERTICAL | wxLEFT , 5 ) ;
fgClearancesGridSizer - > Add ( m_clearanceLabel , 0 , wxALIGN_CENTER_VERTICAL , 5 ) ;
m_clearanceCtrl = new wxTextCtrl ( sbClearancesSizer - > GetStaticBox ( ) , wxID_ANY , wxEmptyString , wxDefaultPosition , wxDefaultSize , 0 ) ;
fgClearancesGridSizer - > Add ( m_clearanceCtrl , 0 , wxEXPAND | wxTOP | wxLEFT , 5 ) ;
m_clearanceUnits = new wxStaticText ( sbClearancesSizer - > GetStaticBox ( ) , wxID_ANY , _ ( " Inch " ) , wxDefaultPosition , wxDefaultSize , 0 ) ;
m_clearanceUnits = new wxStaticText ( sbClearancesSizer - > GetStaticBox ( ) , wxID_ANY , _ ( " mm " ) , wxDefaultPosition , wxDefaultSize , 0 ) ;
m_clearanceUnits - > Wrap ( - 1 ) ;
fgClearancesGridSizer - > Add ( m_clearanceUnits , 0 , wxALIGN_CENTER_VERTICAL | wxTOP | wxRIGHT | wxLEFT , 5 ) ;
@ -617,12 +617,12 @@ DIALOG_PAD_PROPERTIES_BASE::DIALOG_PAD_PROPERTIES_BASE( wxWindow* parent, wxWind
m_maskMarginLabel - > Wrap ( - 1 ) ;
m_maskMarginLabel - > SetToolTip ( _ ( " This is the local clearance between this pad and the solder mask. \n If 0, the footprint local value or the global value is used. " ) ) ;
fgClearancesGridSizer - > Add ( m_maskMarginLabel , 0 , wxALIGN_CENTER_VERTICAL | wxLEFT | wx TOP , 5 ) ;
fgClearancesGridSizer - > Add ( m_maskMarginLabel , 0 , wxALIGN_CENTER_VERTICAL | wxTOP , 5 ) ;
m_maskMarginCtrl = new wxTextCtrl ( sbClearancesSizer - > GetStaticBox ( ) , wxID_ANY , wxEmptyString , wxDefaultPosition , wxDefaultSize , 0 ) ;
fgClearancesGridSizer - > Add ( m_maskMarginCtrl , 0 , wxEXPAND | wxLEFT | wxTOP , 5 ) ;
m_maskMarginUnits = new wxStaticText ( sbClearancesSizer - > GetStaticBox ( ) , wxID_ANY , _ ( " Inch " ) , wxDefaultPosition , wxDefaultSize , 0 ) ;
m_maskMarginUnits = new wxStaticText ( sbClearancesSizer - > GetStaticBox ( ) , wxID_ANY , _ ( " mm " ) , wxDefaultPosition , wxDefaultSize , 0 ) ;
m_maskMarginUnits - > Wrap ( - 1 ) ;
fgClearancesGridSizer - > Add ( m_maskMarginUnits , 0 , wxALIGN_CENTER_VERTICAL | wxLEFT | wxRIGHT | wxTOP , 5 ) ;
@ -630,12 +630,12 @@ DIALOG_PAD_PROPERTIES_BASE::DIALOG_PAD_PROPERTIES_BASE( wxWindow* parent, wxWind
m_pasteMarginLabel - > Wrap ( - 1 ) ;
m_pasteMarginLabel - > SetToolTip ( _ ( " This is the local clearance between this pad and the solder paste. \n If 0, the footprint value or the global value is used. \n The final clearance value is the sum of this value and the clearance value ratio. \n A negative value means a smaller mask size than pad size. " ) ) ;
fgClearancesGridSizer - > Add ( m_pasteMarginLabel , 0 , wxALIGN_CENTER_VERTICAL | wxLEFT | wx TOP , 5 ) ;
fgClearancesGridSizer - > Add ( m_pasteMarginLabel , 0 , wxALIGN_CENTER_VERTICAL | wxTOP , 5 ) ;
m_pasteMarginCtrl = new wxTextCtrl ( sbClearancesSizer - > GetStaticBox ( ) , wxID_ANY , wxEmptyString , wxDefaultPosition , wxDefaultSize , 0 ) ;
fgClearancesGridSizer - > Add ( m_pasteMarginCtrl , 0 , wxEXPAND | wxLEFT | wxTOP , 5 ) ;
m_pasteMarginUnits = new wxStaticText ( sbClearancesSizer - > GetStaticBox ( ) , wxID_ANY , _ ( " Inch " ) , wxDefaultPosition , wxDefaultSize , 0 ) ;
m_pasteMarginUnits = new wxStaticText ( sbClearancesSizer - > GetStaticBox ( ) , wxID_ANY , _ ( " mm " ) , wxDefaultPosition , wxDefaultSize , 0 ) ;
m_pasteMarginUnits - > Wrap ( - 1 ) ;
fgClearancesGridSizer - > Add ( m_pasteMarginUnits , 0 , wxALIGN_CENTER_VERTICAL | wxLEFT | wxRIGHT | wxTOP , 5 ) ;
@ -643,7 +643,7 @@ DIALOG_PAD_PROPERTIES_BASE::DIALOG_PAD_PROPERTIES_BASE( wxWindow* parent, wxWind
m_pasteMarginRatioLabel - > Wrap ( - 1 ) ;
m_pasteMarginRatioLabel - > SetToolTip ( _ ( " This is the local clearance ratio in percent between this pad and the solder paste. \n A value of 10 means the clearance value is 10 percent of the pad size. \n If 0, the footprint value or the global value is used. \n The final clearance value is the sum of this value and the clearance value. \n A negative value means a smaller mask size than pad size. " ) ) ;
fgClearancesGridSizer - > Add ( m_pasteMarginRatioLabel , 0 , wxALIGN_CENTER_VERTICAL | wxBOTTOM | wxLEFT | wxTOP , 5 ) ;
fgClearancesGridSizer - > Add ( m_pasteMarginRatioLabel , 0 , wxALIGN_CENTER_VERTICAL | wxTOP | wxBOTTOM , 5 ) ;
m_pasteMarginRatioCtrl = new TEXT_CTRL_EVAL ( sbClearancesSizer - > GetStaticBox ( ) , wxID_ANY , wxEmptyString , wxDefaultPosition , wxDefaultSize , 0 ) ;
fgClearancesGridSizer - > Add ( m_pasteMarginRatioCtrl , 0 , wxBOTTOM | wxEXPAND | wxLEFT | wxTOP , 5 ) ;
@ -653,7 +653,7 @@ DIALOG_PAD_PROPERTIES_BASE::DIALOG_PAD_PROPERTIES_BASE( wxWindow* parent, wxWind
fgClearancesGridSizer - > Add ( m_pasteMarginRatioUnits , 0 , wxALIGN_CENTER_VERTICAL | wxALL , 5 ) ;
sbClearancesSizer - > Add ( fgClearancesGridSizer , 0 , wxEXPAND , 5 ) ;
sbClearancesSizer - > Add ( fgClearancesGridSizer , 0 , 0 , 5 ) ;
m_nonCopperWarningBook = new wxSimplebook ( sbClearancesSizer - > GetStaticBox ( ) , wxID_ANY , wxDefaultPosition , wxDefaultSize , 0 ) ;
wxPanel * notePanel ;
@ -663,11 +663,11 @@ DIALOG_PAD_PROPERTIES_BASE::DIALOG_PAD_PROPERTIES_BASE( wxWindow* parent, wxWind
m_nonCopperNote = new wxStaticText ( notePanel , wxID_ANY , _ ( " Note: solder mask and paste values are used only for pads on copper layers. " ) , wxDefaultPosition , wxDefaultSize , 0 ) ;
m_nonCopperNote - > Wrap ( - 1 ) ;
bNoteSizer - > Add ( m_nonCopperNote , 0 , wxLEF T | wxRIGHT | wxTOP , 5 ) ;
bNoteSizer - > Add ( m_nonCopperNote , 0 , wxTOP | wxRIGHT , 5 ) ;
m_staticTextInfoPaste = new wxStaticText ( notePanel , wxID_ANY , _ ( " Note: solder paste clearances (absolute and relative) are added to determine the final clearance. " ) , wxDefaultPosition , wxDefaultSize , 0 ) ;
m_staticTextInfoPaste - > Wrap ( - 1 ) ;
bNoteSizer - > Add ( m_staticTextInfoPaste , 0 , wxBOTTOM | wxLEFT | wx RIGHT , 5 ) ;
bNoteSizer - > Add ( m_staticTextInfoPaste , 0 , wxBOTTOM | wxRIGHT , 5 ) ;
notePanel - > SetSizer ( bNoteSizer ) ;
@ -700,64 +700,93 @@ DIALOG_PAD_PROPERTIES_BASE::DIALOG_PAD_PROPERTIES_BASE( wxWindow* parent, wxWind
bSizerClearance - > Add ( sbClearancesSizer , 0 , wxALL | wxEXPAND , 5 ) ;
wxBoxSizer * bSizerLower ;
bSizerLower = new wxBoxSizer ( wxHORIZONTAL ) ;
m_sbSizerZonesSettings = new wxStaticBoxSizer ( new wxStaticBox ( m_localSettingsPanel , wxID_ANY , _ ( " Connection to Copper Zones " ) ) , wxVERTICAL ) ;
wxFlexGridSizer * fgSizerCopperZonesOpts ;
fgSizerCopperZonesOpts = new wxFlexGridSizer ( 0 , 3 , 0 , 0 ) ;
fgSizerCopperZonesOpts = new wxFlexGridSizer ( 0 , 2 , 0 , 0 ) ;
fgSizerCopperZonesOpts - > AddGrowableCol ( 1 ) ;
fgSizerCopperZonesOpts - > SetFlexibleDirection ( wxBOTH ) ;
fgSizerCopperZonesOpts - > SetNonFlexibleGrowMode ( wxFLEX_GROWMODE_SPECIFIED ) ;
m_staticText40 = new wxStaticText ( m_sbSizerZonesSettings - > GetStaticBox ( ) , wxID_ANY , _ ( " Pad connection: " ) , wxDefaultPosition , wxDefaultSize , 0 ) ;
m_staticText40 - > Wrap ( - 1 ) ;
fgSizerCopperZonesOpts - > Add ( m_staticText40 , 0 , wxALIGN_CENTER_VERTICAL | wxLEFT , 5 ) ;
fgSizerCopperZonesOpts - > Add ( m_staticText40 , 0 , wxALIGN_CENTER_VERTICAL | wxBOTTOM , 5 ) ;
wxString m_ZoneConnectionChoiceChoices [ ] = { _ ( " From parent footprint " ) , _ ( " Solid " ) , _ ( " Thermal relief " ) , _ ( " None " ) } ;
int m_ZoneConnectionChoiceNChoices = sizeof ( m_ZoneConnectionChoiceChoices ) / sizeof ( wxString ) ;
m_ZoneConnectionChoice = new wxChoice ( m_sbSizerZonesSettings - > GetStaticBox ( ) , wxID_ANY , wxDefaultPosition , wxDefaultSize , m_ZoneConnectionChoiceNChoices , m_ZoneConnectionChoiceChoices , 0 ) ;
m_ZoneConnectionChoice - > SetSelection ( 0 ) ;
fgSizerCopperZonesOpts - > Add ( m_ZoneConnectionChoice , 0 , wxEXPAND | wxLEFT | wxALIGN_CENTER_VERTICAL , 5 ) ;
fgSizerCopperZonesOpts - > Add ( m_ZoneConnectionChoice , 1 , wxEXPAND | wxALIGN_CENTER_VERTICAL | wxBOTTOM | wxLEFT , 5 ) ;
m_staticTextcps = new wxStaticText ( m_sbSizerZonesSettings - > GetStaticBox ( ) , wxID_ANY , _ ( " Zone knockout: " ) , wxDefaultPosition , wxDefaultSize , 0 ) ;
m_staticTextcps - > Wrap ( - 1 ) ;
fgSizerCopperZonesOpts - > Add ( m_staticTextcps , 0 , wxALIGN_CENTER_VERTICAL | wxTOP | wxBOTTOM , 5 ) ;
fgSizerCopperZonesOpts - > Add ( 0 , 0 , 1 , wxEXPAND , 5 ) ;
wxString m_ZoneCustomPadShapeChoices [ ] = { _ ( " Pad shape " ) , _ ( " Pad convex hull " ) } ;
int m_ZoneCustomPadShapeNChoices = sizeof ( m_ZoneCustomPadShapeChoices ) / sizeof ( wxString ) ;
m_ZoneCustomPadShape = new wxChoice ( m_sbSizerZonesSettings - > GetStaticBox ( ) , wxID_ANY , wxDefaultPosition , wxDefaultSize , m_ZoneCustomPadShapeNChoices , m_ZoneCustomPadShapeChoices , 0 ) ;
m_ZoneCustomPadShape - > SetSelection ( 0 ) ;
fgSizerCopperZonesOpts - > Add ( m_ZoneCustomPadShape , 1 , wxEXPAND | wxTOP | wxBOTTOM | wxLEFT | wxALIGN_CENTER_VERTICAL , 5 ) ;
m_spokeWidthLabel = new wxStaticText ( m_sbSizerZonesSettings - > GetStaticBox ( ) , wxID_ANY , _ ( " Thermal relief spoke width: " ) , wxDefaultPosition , wxDefaultSize , 0 ) ;
m_spokeWidthLabel - > Wrap ( - 1 ) ;
fgSizerCopperZonesOpts - > Add ( m_spokeWidthLabel , 0 , wxALIGN_CENTER_VERTICAL | wxLEFT | wxTOP , 5 ) ;
m_spokeWidthCtrl = new wxTextCtrl ( m_sbSizerZonesSettings - > GetStaticBox ( ) , wxID_ANY , wxEmptyString , wxDefaultPosition , wxDefaultSize , 0 ) ;
fgSizerCopperZonesOpts - > Add ( m_spokeWidthCtrl , 0 , wxEXPAND | wxLEFT | wxTOP | wxALIGN_CENTER_VERTICAL , 5 ) ;
m_sbSizerZonesSettings - > Add ( fgSizerCopperZonesOpts , 0 , 0 , 5 ) ;
m_spokeWidthUnits = new wxStaticText ( m_sbSizerZonesSettings - > GetStaticBox ( ) , wxID_ANY , _ ( " Inch " ) , wxDefaultPosition , wxDefaultSize , 0 ) ;
m_spokeWidthUnits - > Wrap ( - 1 ) ;
fgSizerCopperZonesOpts - > Add ( m_spokeWidthUnits , 0 , wxALIGN_CENTER_VERTICAL | wxLEFT | wxRIGHT | wxTOP , 5 ) ;
m_thermalGapLabel = new wxStaticText ( m_sbSizerZonesSettings - > GetStaticBox ( ) , wxID_ANY , _ ( " Thermal relief gap: " ) , wxDefaultPosition , wxDefaultSize , 0 ) ;
bSizerLower - > Add ( m_sbSizerZonesSettings , 1 , wxALL | wxEXPAND , 5 ) ;
wxStaticBoxSizer * sbSizerThermalReliefs ;
sbSizerThermalReliefs = new wxStaticBoxSizer ( new wxStaticBox ( m_localSettingsPanel , wxID_ANY , _ ( " Thermal Relief Overrides " ) ) , wxVERTICAL ) ;
wxFlexGridSizer * fgSizerThermalReliefs ;
fgSizerThermalReliefs = new wxFlexGridSizer ( 0 , 3 , 0 , 0 ) ;
fgSizerThermalReliefs - > AddGrowableCol ( 1 ) ;
fgSizerThermalReliefs - > SetFlexibleDirection ( wxBOTH ) ;
fgSizerThermalReliefs - > SetNonFlexibleGrowMode ( wxFLEX_GROWMODE_SPECIFIED ) ;
m_thermalGapLabel = new wxStaticText ( sbSizerThermalReliefs - > GetStaticBox ( ) , wxID_ANY , _ ( " Relief gap: " ) , wxDefaultPosition , wxDefaultSize , 0 ) ;
m_thermalGapLabel - > Wrap ( - 1 ) ;
fgSizerCopperZonesOpts - > Add ( m_thermalGapLabel , 0 , wxALIGN_CENTER_VERTICAL | wxLEFT | wxTOP , 5 ) ;
fgSizerThermalRelief s - > Add ( m_thermalGapLabel , 0 , wxALIGN_CENTER_VERTICAL , 5 ) ;
m_thermalGapCtrl = new wxTextCtrl ( m_sbSizerZonesSettings - > GetStaticBox ( ) , wxID_ANY , wxEmptyString , wxDefaultPosition , wxDefaultSize , 0 ) ;
fgSizerCopperZonesOpts - > Add ( m_thermalGapCtrl , 0 , wxEXPAND | wxTOP | wxLEFT | wxALIGN_CENTER_VERTICAL , 5 ) ;
m_thermalGapCtrl = new wxTextCtrl ( sbSizerThermalRelief s- > GetStaticBox ( ) , wxID_ANY , wxEmptyString , wxDefaultPosition , wxDefaultSize , 0 ) ;
fgSizerThermalRelief s - > Add ( m_thermalGapCtrl , 0 , wxEXPAND | wxALIGN_CENTER_VERTICAL | wxLEFT , 5 ) ;
m_thermalGapUnits = new wxStaticText ( m_sbSizerZonesSettings - > GetStaticBox ( ) , wxID_ANY , _ ( " Inch " ) , wxDefaultPosition , wxDefaultSize , 0 ) ;
m_thermalGapUnits = new wxStaticText ( sbSizerThermalRelief s- > GetStaticBox ( ) , wxID_ANY , _ ( " mm " ) , wxDefaultPosition , wxDefaultSize , 0 ) ;
m_thermalGapUnits - > Wrap ( - 1 ) ;
fgSizerCopperZonesOpts - > Add ( m_thermalGapUnits , 0 , wxALIGN_CENTER_VERTICAL | wxTOP | wxRIGHT | wxLEFT , 5 ) ;
fgSizerThermalRelief s - > Add ( m_thermalGapUnits , 0 , wxALIGN_CENTER_VERTICAL | wxLEFT , 5 ) ;
m_staticTextcps = new wxStaticText ( m_sbSizerZonesSettings - > GetStaticBox ( ) , wxID_ANY , _ ( " Custom pad shape in zone: " ) , wxDefaultPosition , wxDefaultSize , 0 ) ;
m_staticTextcps - > Wrap ( - 1 ) ;
fgSizerCopperZonesOpt s - > Add ( m_staticTextcps , 0 , wxALIGN_CENTER_VERTICAL | wxBOTTOM | wxLEFT | wxRIGHT | wxTOP , 5 ) ;
m_spokeWidthLabel = new wxStaticText ( sbSizerThermalRelief s- > GetStaticBox ( ) , wxID_ANY , _ ( " Spoke width :" ) , wxDefaultPosition , wxDefaultSize , 0 ) ;
m_spokeWidthLabel - > Wrap ( - 1 ) ;
fgSizerThermalRelief s - > Add ( m_spokeWidthLabel , 0 , wxALIGN_CENTER_VERTICAL | wxTOP , 5 ) ;
wxString m_ZoneCustomPadShapeChoices [ ] = { _ ( " Use pad shape " ) , _ ( " Use pad convex hull " ) } ;
int m_ZoneCustomPadShapeNChoices = sizeof ( m_ZoneCustomPadShapeChoices ) / sizeof ( wxString ) ;
m_ZoneCustomPadShape = new wxChoice ( m_sbSizerZonesSettings - > GetStaticBox ( ) , wxID_ANY , wxDefaultPosition , wxDefaultSize , m_ZoneCustomPadShapeNChoices , m_ZoneCustomPadShapeChoices , 0 ) ;
m_ZoneCustomPadShape - > SetSelection ( 0 ) ;
fgSizerCopperZonesOpts - > Add ( m_ZoneCustomPadShape , 0 , wxEXPAND | wxTOP | wxBOTTOM | wxLEFT | wxALIGN_CENTER_VERTICAL , 5 ) ;
m_spokeWidthCtrl = new wxTextCtrl ( sbSizerThermalReliefs - > GetStaticBox ( ) , wxID_ANY , wxEmptyString , wxDefaultPosition , wxDefaultSize , 0 ) ;
fgSizerThermalReliefs - > Add ( m_spokeWidthCtrl , 0 , wxEXPAND | wxLEFT | wxTOP | wxALIGN_CENTER_VERTICAL , 5 ) ;
m_spokeWidthUnits = new wxStaticText ( sbSizerThermalReliefs - > GetStaticBox ( ) , wxID_ANY , _ ( " mm " ) , wxDefaultPosition , wxDefaultSize , 0 ) ;
m_spokeWidthUnits - > Wrap ( - 1 ) ;
fgSizerThermalReliefs - > Add ( m_spokeWidthUnits , 0 , wxALIGN_CENTER_VERTICAL | wxTOP | wxLEFT , 5 ) ;
m_spokeAngleLabel = new wxStaticText ( sbSizerThermalReliefs - > GetStaticBox ( ) , wxID_ANY , _ ( " Spoke angle: " ) , wxDefaultPosition , wxDefaultSize , 0 ) ;
m_spokeAngleLabel - > Wrap ( - 1 ) ;
fgSizerThermalReliefs - > Add ( m_spokeAngleLabel , 0 , wxTOP | wxBOTTOM | wxRIGHT | wxALIGN_CENTER_VERTICAL , 5 ) ;
m_spokeAngleCtrl = new wxTextCtrl ( sbSizerThermalReliefs - > GetStaticBox ( ) , wxID_ANY , wxEmptyString , wxDefaultPosition , wxDefaultSize , 0 ) ;
fgSizerThermalReliefs - > Add ( m_spokeAngleCtrl , 0 , wxEXPAND | wxTOP | wxBOTTOM | wxLEFT , 5 ) ;
m_spokeAngleUnits = new wxStaticText ( sbSizerThermalReliefs - > GetStaticBox ( ) , wxID_ANY , _ ( " deg " ) , wxDefaultPosition , wxDefaultSize , 0 ) ;
m_spokeAngleUnits - > Wrap ( - 1 ) ;
fgSizerThermalReliefs - > Add ( m_spokeAngleUnits , 0 , wxALIGN_CENTER_VERTICAL | wxTOP | wxBOTTOM | wxLEFT , 5 ) ;
sbSizerThermalReliefs - > Add ( fgSizerThermalReliefs , 1 , wxEXPAND , 5 ) ;
m_sbSizerZonesSettings - > Add ( fgSizerCopperZonesOpts , 0 , wxEXPAND , 5 ) ;
bSizerLower - > Add ( sbSizerThermalReliefs , 1 , wxEXPAND | wxALL , 5 ) ;
bSizerClearance - > Add ( m_sbSizerZonesSettings , 0 , wxALL | wxEXPAND , 5 ) ;
bSizerClearance - > Add ( bSizerLower , 1 , wxEXPAND , 5 ) ;
bSizerPanelClearance - > Add ( bSizerClearance , 0 , wxEXPAND | wxBOTTOM | wxRIGHT | wxLEFT , 5 ) ;