From 9ff09aa784551264e89350368f61ed6b35266f7a Mon Sep 17 00:00:00 2001 From: Jeff Young Date: Mon, 1 Jun 2020 17:05:40 +0100 Subject: [PATCH] Progressive disclosure pad properties. --- pcbnew/dialogs/dialog_pad_properties.cpp | 273 +- pcbnew/dialogs/dialog_pad_properties.h | 2 + pcbnew/dialogs/dialog_pad_properties_base.cpp | 607 +- pcbnew/dialogs/dialog_pad_properties_base.fbp | 6467 ++++++++++------- pcbnew/dialogs/dialog_pad_properties_base.h | 84 +- 5 files changed, 4198 insertions(+), 3235 deletions(-) diff --git a/pcbnew/dialogs/dialog_pad_properties.cpp b/pcbnew/dialogs/dialog_pad_properties.cpp index 71d55a602f..a975a05aa9 100644 --- a/pcbnew/dialogs/dialog_pad_properties.cpp +++ b/pcbnew/dialogs/dialog_pad_properties.cpp @@ -37,7 +37,6 @@ #include #include #include -#include #include #include #include @@ -184,6 +183,7 @@ DIALOG_PAD_PROPERTIES::DIALOG_PAD_PROPERTIES( PCB_BASE_FRAME* aParent, D_PAD* aP m_staticTextInfoPaste->SetFont( infoFont ); m_staticTextInfoNegVal->SetFont( infoFont ); m_staticTextInfoPosValue->SetFont( infoFont ); + m_staticTextPrimitiveListWarning->SetFont( infoFont ); // Usually, TransferDataToWindow is called by OnInitDialog // calling it here fixes all widget sizes so FinishDialogSettings can safely fix minsizes @@ -200,6 +200,9 @@ DIALOG_PAD_PROPERTIES::DIALOG_PAD_PROPERTIES( PCB_BASE_FRAME* aParent, D_PAD* aP // Now all widgets have the size fixed, call FinishDialogSettings FinishDialogSettings(); + + wxUpdateUIEvent dummy; + OnUpdateUI( dummy ); } @@ -486,6 +489,7 @@ void DIALOG_PAD_PROPERTIES::initValues() m_sizeX.SetValue( m_dummyPad->GetSize().x ); m_sizeY.SetValue( m_dummyPad->GetSize().y ); + m_offsetShapeOpt->SetValue( m_dummyPad->GetOffset() != wxPoint() ); m_offsetX.SetValue( m_dummyPad->GetOffset().x ); m_offsetY.SetValue( m_dummyPad->GetOffset().y ); @@ -500,6 +504,7 @@ void DIALOG_PAD_PROPERTIES::initValues() m_trapAxisCtrl->SetSelection( 1 ); } + m_padToDieOpt->SetValue( m_dummyPad->GetPadToDieLength() != 0 ); m_padToDie.SetValue( m_dummyPad->GetPadToDieLength() ); m_clearance.SetValue( m_dummyPad->GetLocalClearance() ); @@ -630,14 +635,6 @@ void DIALOG_PAD_PROPERTIES::initValues() m_choiceFabProperty->Enable( false ); } - - // Disable Pad name,and pad to die length for mechanical and aperture pads - m_PadNumText->Enable( !mechanical && !aperture ); - m_PadNumCtrl->Enable( !mechanical && !aperture ); - m_PadNameText->Enable( !mechanical && !aperture && m_canEditNetName && m_currentPad ); - m_PadNetSelector->Enable( !mechanical && !aperture && m_canEditNetName && m_currentPad ); - m_padToDie.Enable( !mechanical && !aperture ); - if( m_dummyPad->GetDrillShape() != PAD_DRILL_SHAPE_OBLONG ) m_holeShapeCtrl->SetSelection( 0 ); else @@ -769,88 +766,60 @@ void DIALOG_PAD_PROPERTIES::onChangePadMode( wxCommandEvent& event ) void DIALOG_PAD_PROPERTIES::OnPadShapeSelection( wxCommandEvent& event ) { - bool is_custom = false; - switch( m_PadShape->GetSelection() ) { case CHOICE_SHAPE_CIRCLE: - m_trapDelta.Enable( false ); - m_trapAxisLabel->Enable( false ); - m_trapAxisCtrl->Enable( false ); - m_sizeY.Enable( false ); - m_offsetX.Enable( false ); - m_offsetY.Enable( false ); - break; - case CHOICE_SHAPE_OVAL: - m_trapDelta.Enable( false ); - m_trapAxisLabel->Enable( false ); - m_trapAxisCtrl->Enable( false ); - m_sizeY.Enable( true ); - m_offsetX.Enable( true ); - m_offsetY.Enable( true ); - break; - case CHOICE_SHAPE_RECT: - m_trapDelta.Enable( false ); - m_trapAxisLabel->Enable( false ); - m_trapAxisCtrl->Enable( false ); - m_sizeY.Enable( true ); - m_offsetX.Enable( true ); - m_offsetY.Enable( true ); + m_shapePropsBook->SetSelection( 0 ); break; case CHOICE_SHAPE_TRAPEZOID: - m_trapDelta.Enable( true ); - m_trapAxisLabel->Enable( true ); - m_trapAxisCtrl->Enable( true ); - m_sizeY.Enable( true ); - m_offsetX.Enable( true ); - m_offsetY.Enable( true ); + m_shapePropsBook->SetSelection( 1 ); break; case CHOICE_SHAPE_ROUNDRECT: - case CHOICE_SHAPE_CHAMFERED_RECT: - m_trapDelta.Enable( false ); - m_trapAxisLabel->Enable( false ); - m_trapAxisCtrl->Enable( false ); - m_sizeY.Enable( true ); - m_offsetX.Enable( true ); - m_offsetY.Enable( true ); + m_shapePropsBook->SetSelection( 2 ); + // Ensure m_tcCornerSizeRatio contains the right value: m_tcCornerSizeRatio->ChangeValue( wxString::Format( "%.1f", - m_dummyPad->GetRoundRectRadiusRatio()*100 ) ); + m_dummyPad->GetRoundRectRadiusRatio()*100 ) ); + break; + + case CHOICE_SHAPE_CHAMFERED_RECT: + m_shapePropsBook->SetSelection( 3 ); + + // A reasonable default is all corners chamferred. + if( !m_cbTopLeft->GetValue() && !m_cbTopRight->GetValue() + && !m_cbBottomLeft->GetValue() && !m_cbBottomRight->GetValue() ) + { + m_cbTopLeft->SetValue( true ); + m_cbTopRight->SetValue( true ); + m_cbBottomLeft->SetValue( true ); + m_cbBottomRight->SetValue( true ); + } break; case CHOICE_SHAPE_CUSTOM_CIRC_ANCHOR: // PAD_SHAPE_CUSTOM, circular anchor case CHOICE_SHAPE_CUSTOM_RECT_ANCHOR: // PAD_SHAPE_CUSTOM, rect anchor - is_custom = true; - m_trapDelta.Enable( false ); - m_trapAxisLabel->Enable( false ); - m_trapAxisCtrl->Enable( false ); - m_sizeY.Enable( m_PadShape->GetSelection() == CHOICE_SHAPE_CUSTOM_RECT_ANCHOR ); - m_offsetX.Enable( false ); - m_offsetY.Enable( false ); + m_shapePropsBook->SetSelection( 0 ); break; } + m_sizeY.Enable( m_PadShape->GetSelection() != CHOICE_SHAPE_CIRCLE + && m_PadShape->GetSelection() != CHOICE_SHAPE_CUSTOM_CIRC_ANCHOR ); + + m_offsetShapeOpt->Enable( m_PadShape->GetSelection() != CHOICE_SHAPE_CIRCLE + && m_PadShape->GetSelection() != CHOICE_SHAPE_CUSTOM_CIRC_ANCHOR + && m_PadShape->GetSelection() != CHOICE_SHAPE_CUSTOM_RECT_ANCHOR ); + + if( !m_offsetShapeOpt->IsEnabled() ) + m_offsetShapeOpt->SetValue( false ); + + bool is_custom = m_PadShape->GetSelection() == CHOICE_SHAPE_CUSTOM_CIRC_ANCHOR + || m_PadShape->GetSelection() == CHOICE_SHAPE_CUSTOM_RECT_ANCHOR; + enablePrimitivePage( is_custom ); - - // A few widgets are enabled only for rounded rect and chamfered pads: - bool chamfered_rect_enable = m_PadShape->GetSelection() == CHOICE_SHAPE_CHAMFERED_RECT; - bool round_rect_enable = m_PadShape->GetSelection() == CHOICE_SHAPE_ROUNDRECT || - chamfered_rect_enable; - m_staticTextCornerSizeRatio->Enable( round_rect_enable ); - m_tcCornerSizeRatio->Enable( round_rect_enable ); - m_staticTextCornerSizeRatioUnit->Enable( round_rect_enable ); - m_cornerRadius.Enable( round_rect_enable ); - - m_cbTopLeft->Enable( chamfered_rect_enable ); - m_cbTopRight->Enable( chamfered_rect_enable ); - m_cbBottomLeft->Enable( chamfered_rect_enable ); - m_cbBottomRight->Enable( chamfered_rect_enable ); - m_tcChamferRatio->Enable( chamfered_rect_enable ); - m_staticTextcps->Enable( is_custom ); m_ZoneCustomPadShape->Enable( is_custom ); @@ -882,22 +851,16 @@ void DIALOG_PAD_PROPERTIES::PadTypeSelected( wxCommandEvent& event ) if( (unsigned)ii >= arrayDim( code_type ) ) // catches < 0 also ii = 0; - bool hasHole, hasConnection; - bool hasProperty = true; + bool hasHole, hasConnection, hasProperty; switch( ii ) { default: - case 0: /* PTH */ hasHole = true; hasConnection = true; break; - case 1: /* SMD */ hasHole = false; hasConnection = true; break; - case 2: /* CONN */ hasHole = false; hasConnection = true; break; - case 3: /* NPTH */ - hasHole = true; - hasConnection = false; - hasProperty = false; - break; - - case 4: /* Aperture */ hasHole = false; hasConnection = false; break; + case 0: /* PTH */ hasHole = true; hasConnection = true; hasProperty = true; break; + case 1: /* SMD */ hasHole = false; hasConnection = true; hasProperty = true; break; + case 2: /* CONN */ hasHole = false; hasConnection = true; hasProperty = true; break; + case 3: /* NPTH */ hasHole = true; hasConnection = false; hasProperty = false; break; + case 4: /* Aperture */ hasHole = false; hasConnection = false; hasProperty = true; break; } LSET layer_mask = std_pad_layers[ii]; @@ -918,7 +881,7 @@ void DIALOG_PAD_PROPERTIES::PadTypeSelected( wxCommandEvent& event ) { m_PadNumCtrl->SetValue( wxEmptyString ); m_PadNetSelector->SetSelectedNetcode( 0 ); - m_padToDie.SetValue( 0 ); + m_padToDieOpt->SetValue( false ); } else if( m_PadNumCtrl->GetValue().IsEmpty() && m_currentPad ) { @@ -966,10 +929,24 @@ void DIALOG_PAD_PROPERTIES::OnUpdateUI( wxUpdateUIEvent& event ) m_PadNumCtrl->Enable( hasConnection ); m_PadNameText->Enable( hasConnection ); m_PadNetSelector->Enable( hasConnection && m_canEditNetName && m_currentPad ); - m_padToDie.Enable( hasConnection ); + m_padToDieOpt->Enable( hasConnection ); + + if( !m_padToDieOpt->IsEnabled() ) + m_padToDieOpt->SetValue( false ); + + // Show/hide extra properties + m_shapePropsBook->Show( m_shapePropsBook->GetSelection() > 0 ); + + // Show/hide offset controls + m_offsetCtrls->Show( m_offsetShapeOpt->GetValue() ); + m_offsetShapeOptLabel->Show( m_offsetShapeOpt->GetValue() ); + m_padToDie.Show( m_padToDieOpt->GetValue() ); // Enable/disable Copper Layers control m_rbCopperLayersSel->Enable( ii != 4 ); + + // Adjust for any shown/hidden elements + Layout(); } @@ -1497,18 +1474,10 @@ bool DIALOG_PAD_PROPERTIES::transferDataToPad( D_PAD* aPad ) switch( m_ZoneConnectionChoice->GetSelection() ) { default: - case 0: - aPad->SetZoneConnection( ZONE_CONNECTION::INHERITED ); - break; - case 1: - aPad->SetZoneConnection( ZONE_CONNECTION::FULL ); - break; - case 2: - aPad->SetZoneConnection( ZONE_CONNECTION::THERMAL ); - break; - case 3: - aPad->SetZoneConnection( ZONE_CONNECTION::NONE ); - break; + case 0: aPad->SetZoneConnection( ZONE_CONNECTION::INHERITED ); break; + case 1: aPad->SetZoneConnection( ZONE_CONNECTION::FULL ); break; + case 2: aPad->SetZoneConnection( ZONE_CONNECTION::THERMAL ); break; + case 3: aPad->SetZoneConnection( ZONE_CONNECTION::NONE ); break; } aPad->SetPosition( wxPoint( m_posX.GetValue(), m_posY.GetValue() ) ); @@ -1530,19 +1499,14 @@ bool DIALOG_PAD_PROPERTIES::transferDataToPad( D_PAD* aPad ) else aPad->SetSize( wxSize( m_sizeX.GetValue(), m_sizeY.GetValue() ) ); - // Read pad length die - aPad->SetPadToDieLength( m_padToDie.GetValue() ); - // For a trapezoid, test delta value (be sure delta is not too large for pad size) // remember DeltaSize.x is the Y size variation bool error = false; + wxSize delta( 0, 0 ); if( aPad->GetShape() == PAD_SHAPE_TRAPEZOID ) { - wxSize delta; - - // For a trapezoid, only one of delta.x or delta.y is not 0, depending on - // the direction. + // For a trapezoid, only one of delta.x or delta.y is not 0, depending on axis. if( m_trapAxisCtrl->GetSelection() == 0 ) delta.x = m_trapDelta.GetValue(); else @@ -1571,59 +1535,46 @@ bool DIALOG_PAD_PROPERTIES::transferDataToPad( D_PAD* aPad ) delta.y = aPad->GetSize().x - 2; error = true; } - - aPad->SetDelta( delta ); } - aPad->SetOffset( wxPoint( m_offsetX.GetValue(), m_offsetY.GetValue() ) ); + aPad->SetDelta( delta ); + + if( m_offsetShapeOpt->GetValue() ) + aPad->SetOffset( wxPoint( m_offsetX.GetValue(), m_offsetY.GetValue() ) ); + else + aPad->SetOffset( wxPoint() ); + + // Read pad length die + if( m_padToDieOpt->GetValue() ) + aPad->SetPadToDieLength( m_padToDie.GetValue() ); + else + aPad->SetPadToDieLength( 0 ); + aPad->SetOrientation( m_OrientValue * 10.0 ); aPad->SetName( m_PadNumCtrl->GetValue() ); aPad->SetNetCode( m_PadNetSelector->GetSelectedNetcode() ); int chamfers = 0; - if( m_cbTopLeft->GetValue() ) - chamfers |= RECT_CHAMFER_TOP_LEFT; + if( aPad->GetShape() == PAD_SHAPE_CHAMFERED_RECT ) + { + if( m_cbTopLeft->GetValue() ) + chamfers |= RECT_CHAMFER_TOP_LEFT; - if( m_cbTopRight->GetValue() ) - chamfers |= RECT_CHAMFER_TOP_RIGHT; + if( m_cbTopRight->GetValue() ) + chamfers |= RECT_CHAMFER_TOP_RIGHT; - if( m_cbBottomLeft->GetValue() ) - chamfers |= RECT_CHAMFER_BOTTOM_LEFT; + if( m_cbBottomLeft->GetValue() ) + chamfers |= RECT_CHAMFER_BOTTOM_LEFT; - if( m_cbBottomRight->GetValue() ) - chamfers |= RECT_CHAMFER_BOTTOM_RIGHT; + if( m_cbBottomRight->GetValue() ) + chamfers |= RECT_CHAMFER_BOTTOM_RIGHT; + } aPad->SetChamferPositions( chamfers ); - // Clear some values, according to the pad type and shape - switch( aPad->GetShape() ) + if( aPad->GetShape() == PAD_SHAPE_CUSTOM ) { - case PAD_SHAPE_CIRCLE: - aPad->SetOffset( wxPoint( 0, 0 ) ); - aPad->SetDelta( wxSize( 0, 0 ) ); - break; - - case PAD_SHAPE_RECT: - aPad->SetDelta( wxSize( 0, 0 ) ); - break; - - case PAD_SHAPE_OVAL: - aPad->SetDelta( wxSize( 0, 0 ) ); - break; - - case PAD_SHAPE_TRAPEZOID: - break; - - case PAD_SHAPE_ROUNDRECT: - case PAD_SHAPE_CHAMFERED_RECT: - aPad->SetDelta( wxSize( 0, 0 ) ); - break; - - case PAD_SHAPE_CUSTOM: - aPad->SetOffset( wxPoint( 0, 0 ) ); - aPad->SetDelta( wxSize( 0, 0 ) ); - // The pad custom has a "anchor pad" (a basic shape: round or rect pad) // that is the minimal area of this pad, and is usefull to ensure a hole // diameter is acceptable, and is used in Gerber files as flashed area @@ -1635,10 +1586,6 @@ bool DIALOG_PAD_PROPERTIES::transferDataToPad( D_PAD* aPad ) aPad->SetCustomShapeInZoneOpt( m_ZoneCustomPadShape->GetSelection() == 0 ? CUST_PAD_SHAPE_IN_ZONE_OUTLINE : CUST_PAD_SHAPE_IN_ZONE_CONVEXHULL ); - break; - - default: - ; } switch( aPad->GetAttribute() ) @@ -1669,19 +1616,12 @@ bool DIALOG_PAD_PROPERTIES::transferDataToPad( D_PAD* aPad ) break; } - if( aPad->GetShape() == PAD_SHAPE_ROUNDRECT || aPad->GetShape() == PAD_SHAPE_CHAMFERED_RECT ) - { - wxString value = m_tcCornerSizeRatio->GetValue(); - double ratioPercent; + double ratioPercent = 0.0; - if( value.ToDouble( &ratioPercent ) ) - aPad->SetRoundRectRadiusRatio( ratioPercent / 100.0 ); + if( aPad->GetShape() == PAD_SHAPE_ROUNDRECT ) + m_tcCornerSizeRatio->GetValue().ToDouble( &ratioPercent ); - value = m_tcChamferRatio->GetValue(); - - if( value.ToDouble( &ratioPercent ) ) - aPad->SetChamferRectRatio( ratioPercent / 100.0 ); - } + aPad->SetRoundRectRadiusRatio( ratioPercent / 100.0 ); aPad->SetProperty( getSelectedProperty() ); @@ -1734,6 +1674,27 @@ bool DIALOG_PAD_PROPERTIES::transferDataToPad( D_PAD* aPad ) } +void DIALOG_PAD_PROPERTIES::OnOffsetCheckbox( wxCommandEvent& event ) +{ + if( m_offsetShapeOpt->GetValue() && m_currentPad ) + { + m_offsetX.SetValue( m_currentPad->GetOffset().x ); + m_offsetY.SetValue( m_currentPad->GetOffset().y ); + } + + OnValuesChanged( event ); +} + + +void DIALOG_PAD_PROPERTIES::OnPadToDieCheckbox( wxCommandEvent& event ) +{ + if( m_padToDieOpt->GetValue() && m_currentPad ) + m_padToDie.SetValue( m_currentPad->GetPadToDieLength() ); + + OnValuesChanged( event ); +} + + void DIALOG_PAD_PROPERTIES::OnValuesChanged( wxCommandEvent& event ) { if( m_canUpdate ) diff --git a/pcbnew/dialogs/dialog_pad_properties.h b/pcbnew/dialogs/dialog_pad_properties.h index 239dc2ec01..2669fce350 100644 --- a/pcbnew/dialogs/dialog_pad_properties.h +++ b/pcbnew/dialogs/dialog_pad_properties.h @@ -120,6 +120,8 @@ private: void OnPadShapeSelection( wxCommandEvent& event ) override; void OnDrillShapeSelected( wxCommandEvent& event ) override; void onChangePadMode( wxCommandEvent& event ) override; + void OnOffsetCheckbox( wxCommandEvent& event ) override; + void OnPadToDieCheckbox( wxCommandEvent& event ) override; void PadOrientEvent( wxCommandEvent& event ) override; void PadTypeSelected( wxCommandEvent& event ) override; diff --git a/pcbnew/dialogs/dialog_pad_properties_base.cpp b/pcbnew/dialogs/dialog_pad_properties_base.cpp index 9bda88ae82..8614aebc63 100644 --- a/pcbnew/dialogs/dialog_pad_properties_base.cpp +++ b/pcbnew/dialogs/dialog_pad_properties_base.cpp @@ -30,292 +30,402 @@ DIALOG_PAD_PROPERTIES_BASE::DIALOG_PAD_PROPERTIES_BASE( wxWindow* parent, wxWind wxBoxSizer* m_LeftBoxSizer; m_LeftBoxSizer = new wxBoxSizer( wxVERTICAL ); - wxFlexGridSizer* fgSizerShapeType; - fgSizerShapeType = new wxFlexGridSizer( 0, 3, 2, 0 ); - fgSizerShapeType->AddGrowableCol( 1 ); - fgSizerShapeType->SetFlexibleDirection( wxBOTH ); - fgSizerShapeType->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED ); + wxGridBagSizer* gbSizerCommon; + gbSizerCommon = new wxGridBagSizer( 0, 0 ); + gbSizerCommon->SetFlexibleDirection( wxBOTH ); + gbSizerCommon->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED ); - m_PadNumText = new wxStaticText( m_panelGeneral, wxID_ANY, _("Pad number:"), wxDefaultPosition, wxDefaultSize, 0 ); - m_PadNumText->Wrap( -1 ); - fgSizerShapeType->Add( m_PadNumText, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxTOP, 3 ); - - m_PadNumCtrl = new wxTextCtrl( m_panelGeneral, wxID_PADNUMCTRL, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 ); - fgSizerShapeType->Add( m_PadNumCtrl, 0, wxEXPAND|wxTOP|wxRIGHT|wxLEFT, 3 ); - - - fgSizerShapeType->Add( 0, 0, 1, wxEXPAND, 5 ); - - m_PadNameText = new wxStaticText( m_panelGeneral, wxID_ANY, _("Net name:"), wxDefaultPosition, wxDefaultSize, 0 ); - m_PadNameText->Wrap( -1 ); - fgSizerShapeType->Add( m_PadNameText, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT|wxTOP, 3 ); - - m_PadNetSelector = new NET_SELECTOR( m_panelGeneral, wxID_ANY, wxDefaultPosition, wxDefaultSize, 0 ); - fgSizerShapeType->Add( m_PadNetSelector, 0, wxTOP|wxLEFT|wxEXPAND, 3 ); - - - fgSizerShapeType->Add( 0, 0, 1, wxEXPAND, 5 ); - - m_staticText44 = new wxStaticText( m_panelGeneral, wxID_ANY, _("Pad type:"), wxDefaultPosition, wxDefaultSize, 0 ); - m_staticText44->Wrap( -1 ); - fgSizerShapeType->Add( m_staticText44, 0, wxALIGN_CENTER_VERTICAL|wxTOP|wxBOTTOM|wxLEFT, 3 ); + m_padTypeLabel = new wxStaticText( m_panelGeneral, wxID_ANY, _("Pad type:"), wxDefaultPosition, wxDefaultSize, 0 ); + m_padTypeLabel->Wrap( -1 ); + gbSizerCommon->Add( m_padTypeLabel, wxGBPosition( 0, 0 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxALL, 5 ); wxString m_PadTypeChoices[] = { _("Through-hole"), _("SMD"), _("Edge Connector"), _("NPTH, Mechanical"), _("SMD Aperture") }; int m_PadTypeNChoices = sizeof( m_PadTypeChoices ) / sizeof( wxString ); m_PadType = new wxChoice( m_panelGeneral, wxID_ANY, wxDefaultPosition, wxDefaultSize, m_PadTypeNChoices, m_PadTypeChoices, 0 ); m_PadType->SetSelection( 0 ); - fgSizerShapeType->Add( m_PadType, 0, wxEXPAND|wxALL, 3 ); + gbSizerCommon->Add( m_PadType, wxGBPosition( 0, 1 ), wxGBSpan( 1, 5 ), wxEXPAND|wxALIGN_CENTER_VERTICAL|wxTOP|wxBOTTOM|wxRIGHT, 5 ); + + m_PadNumText = new wxStaticText( m_panelGeneral, wxID_ANY, _("Pad number:"), wxDefaultPosition, wxDefaultSize, 0 ); + m_PadNumText->Wrap( -1 ); + gbSizerCommon->Add( m_PadNumText, wxGBPosition( 1, 0 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxBOTTOM|wxLEFT, 5 ); + + m_PadNumCtrl = new wxTextCtrl( m_panelGeneral, wxID_PADNUMCTRL, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 ); + gbSizerCommon->Add( m_PadNumCtrl, wxGBPosition( 1, 1 ), wxGBSpan( 1, 5 ), wxEXPAND|wxALIGN_CENTER_VERTICAL|wxBOTTOM|wxRIGHT, 5 ); + + m_PadNameText = new wxStaticText( m_panelGeneral, wxID_ANY, _("Net name:"), wxDefaultPosition, wxDefaultSize, 0 ); + m_PadNameText->Wrap( -1 ); + gbSizerCommon->Add( m_PadNameText, wxGBPosition( 2, 0 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxBOTTOM|wxRIGHT|wxLEFT, 5 ); + + m_PadNetSelector = new NET_SELECTOR( m_panelGeneral, wxID_ANY, wxDefaultPosition, wxDefaultSize, 0 ); + gbSizerCommon->Add( m_PadNetSelector, wxGBPosition( 2, 1 ), wxGBSpan( 1, 5 ), wxALIGN_CENTER_VERTICAL|wxBOTTOM|wxRIGHT|wxEXPAND, 5 ); + + m_posXLabel = new wxStaticText( m_panelGeneral, wxID_ANY, _("Position X:"), wxDefaultPosition, wxDefaultSize, 0 ); + m_posXLabel->Wrap( -1 ); + gbSizerCommon->Add( m_posXLabel, wxGBPosition( 3, 0 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxTOP|wxRIGHT|wxLEFT, 5 ); + + m_posXCtrl = new wxTextCtrl( m_panelGeneral, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 ); + gbSizerCommon->Add( m_posXCtrl, wxGBPosition( 3, 1 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxEXPAND|wxTOP, 5 ); + + m_posXUnits = new wxStaticText( m_panelGeneral, wxID_ANY, _("mm"), wxDefaultPosition, wxDefaultSize, 0 ); + m_posXUnits->Wrap( -1 ); + gbSizerCommon->Add( m_posXUnits, wxGBPosition( 3, 2 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxTOP|wxRIGHT, 5 ); + + m_posYLabel = new wxStaticText( m_panelGeneral, wxID_ANY, _("Y:"), wxDefaultPosition, wxDefaultSize, 0 ); + m_posYLabel->Wrap( -1 ); + gbSizerCommon->Add( m_posYLabel, wxGBPosition( 3, 3 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxTOP|wxLEFT, 5 ); + + m_posYCtrl = new wxTextCtrl( m_panelGeneral, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 ); + gbSizerCommon->Add( m_posYCtrl, wxGBPosition( 3, 4 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxEXPAND|wxTOP, 5 ); + + m_posYUnits = new wxStaticText( m_panelGeneral, wxID_ANY, _("mm"), wxDefaultPosition, wxDefaultSize, 0 ); + m_posYUnits->Wrap( -1 ); + gbSizerCommon->Add( m_posYUnits, wxGBPosition( 3, 5 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxTOP|wxRIGHT, 5 ); - fgSizerShapeType->Add( 0, 0, 1, wxEXPAND, 5 ); + gbSizerCommon->AddGrowableCol( 1 ); + gbSizerCommon->AddGrowableCol( 4 ); - m_staticText45 = new wxStaticText( m_panelGeneral, wxID_ANY, _("Shape:"), wxDefaultPosition, wxDefaultSize, 0 ); - m_staticText45->Wrap( -1 ); - fgSizerShapeType->Add( m_staticText45, 0, wxALIGN_CENTER_VERTICAL|wxTOP|wxBOTTOM|wxLEFT, 3 ); + m_LeftBoxSizer->Add( gbSizerCommon, 0, wxEXPAND|wxBOTTOM, 5 ); + + + m_LeftBoxSizer->Add( 0, 0, 1, wxEXPAND, 5 ); + + m_staticline5 = new wxStaticLine( m_panelGeneral, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_HORIZONTAL ); + m_LeftBoxSizer->Add( m_staticline5, 0, wxEXPAND, 5 ); + + + m_LeftBoxSizer->Add( 0, 0, 1, wxEXPAND, 5 ); + + wxBoxSizer* bSizerShape; + bSizerShape = new wxBoxSizer( wxHORIZONTAL ); + + m_shapeLabel = new wxStaticText( m_panelGeneral, wxID_ANY, _("Pad shape:"), wxDefaultPosition, wxDefaultSize, 0 ); + m_shapeLabel->Wrap( -1 ); + bSizerShape->Add( m_shapeLabel, 0, wxALIGN_CENTER_VERTICAL|wxBOTTOM|wxRIGHT|wxLEFT, 5 ); wxString m_PadShapeChoices[] = { _("Circular"), _("Oval"), _("Rectangular"), _("Trapezoidal"), _("Rounded Rectangle"), _("Chamfered Rectangle"), _("Custom (Circ. Anchor)"), _("Custom (Rect. Anchor)") }; int m_PadShapeNChoices = sizeof( m_PadShapeChoices ) / sizeof( wxString ); m_PadShape = new wxChoice( m_panelGeneral, wxID_ANY, wxDefaultPosition, wxDefaultSize, m_PadShapeNChoices, m_PadShapeChoices, 0 ); m_PadShape->SetSelection( 0 ); - fgSizerShapeType->Add( m_PadShape, 0, wxEXPAND|wxALL, 3 ); + bSizerShape->Add( m_PadShape, 1, wxEXPAND|wxALIGN_CENTER_VERTICAL|wxBOTTOM|wxRIGHT|wxLEFT, 3 ); - fgSizerShapeType->Add( 0, 0, 1, wxEXPAND, 5 ); + m_LeftBoxSizer->Add( bSizerShape, 0, wxEXPAND|wxTOP, 5 ); - m_posXLabel = new wxStaticText( m_panelGeneral, wxID_ANY, _("Position X:"), wxDefaultPosition, wxDefaultSize, 0 ); - m_posXLabel->Wrap( -1 ); - fgSizerShapeType->Add( m_posXLabel, 0, wxALIGN_CENTER_VERTICAL|wxTOP|wxLEFT, 3 ); + wxBoxSizer* bSizerShapeProps; + bSizerShapeProps = new wxBoxSizer( wxVERTICAL ); - m_posXCtrl = new wxTextCtrl( m_panelGeneral, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 ); - fgSizerShapeType->Add( m_posXCtrl, 0, wxEXPAND|wxTOP|wxRIGHT|wxLEFT, 3 ); - m_posXUnits = new wxStaticText( m_panelGeneral, wxID_ANY, _("Inch"), wxDefaultPosition, wxDefaultSize, 0 ); - m_posXUnits->Wrap( -1 ); - fgSizerShapeType->Add( m_posXUnits, 0, wxALIGN_CENTER_VERTICAL|wxTOP|wxRIGHT, 3 ); + m_LeftBoxSizer->Add( bSizerShapeProps, 0, wxEXPAND|wxLEFT, 25 ); - m_posYLabel = new wxStaticText( m_panelGeneral, wxID_ANY, _("Position Y:"), wxDefaultPosition, wxDefaultSize, 0 ); - m_posYLabel->Wrap( -1 ); - fgSizerShapeType->Add( m_posYLabel, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxTOP, 3 ); + m_shapePropsBook = new wxSimplebook( m_panelGeneral, wxID_ANY, wxDefaultPosition, wxDefaultSize, 0 ); + m_pageSimple = new wxPanel( m_shapePropsBook, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL ); + m_shapePropsBook->AddPage( m_pageSimple, _("a page"), false ); + m_pageTrap = new wxPanel( m_shapePropsBook, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL ); + fgSizerTrapProps = new wxFlexGridSizer( 0, 3, 0, 0 ); + fgSizerTrapProps->AddGrowableCol( 1 ); + fgSizerTrapProps->SetFlexibleDirection( wxBOTH ); + fgSizerTrapProps->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED ); - m_posYCtrl = new wxTextCtrl( m_panelGeneral, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 ); - fgSizerShapeType->Add( m_posYCtrl, 0, wxEXPAND|wxTOP|wxRIGHT|wxLEFT, 3 ); + m_trapDeltaLabel = new wxStaticText( m_pageTrap, wxID_ANY, _("Trapezoid delta:"), wxDefaultPosition, wxDefaultSize, 0 ); + m_trapDeltaLabel->Wrap( -1 ); + fgSizerTrapProps->Add( m_trapDeltaLabel, 0, wxALIGN_CENTER_VERTICAL|wxTOP, 5 ); - m_posYUnits = new wxStaticText( m_panelGeneral, wxID_ANY, _("Inch"), wxDefaultPosition, wxDefaultSize, 0 ); - m_posYUnits->Wrap( -1 ); - fgSizerShapeType->Add( m_posYUnits, 0, wxALIGN_CENTER_VERTICAL|wxTOP|wxRIGHT, 3 ); + m_trapDeltaCtrl = new wxTextCtrl( m_pageTrap, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 ); + fgSizerTrapProps->Add( m_trapDeltaCtrl, 0, wxEXPAND|wxALIGN_CENTER_VERTICAL|wxTOP|wxLEFT, 5 ); - m_sizeXLabel = new wxStaticText( m_panelGeneral, wxID_ANY, _("Size X:"), wxDefaultPosition, wxDefaultSize, 0 ); + m_trapDeltaUnits = new wxStaticText( m_pageTrap, wxID_ANY, _("mm"), wxDefaultPosition, wxDefaultSize, 0 ); + m_trapDeltaUnits->Wrap( -1 ); + fgSizerTrapProps->Add( m_trapDeltaUnits, 0, wxALIGN_CENTER_VERTICAL|wxTOP|wxRIGHT, 5 ); + + m_trapAxisLabel = new wxStaticText( m_pageTrap, wxID_ANY, _("Trapezoid axis:"), wxDefaultPosition, wxDefaultSize, 0 ); + m_trapAxisLabel->Wrap( -1 ); + fgSizerTrapProps->Add( m_trapAxisLabel, 0, wxALIGN_CENTER_VERTICAL|wxTOP, 5 ); + + wxString m_trapAxisCtrlChoices[] = { _("Horizontal"), _("Vertical") }; + int m_trapAxisCtrlNChoices = sizeof( m_trapAxisCtrlChoices ) / sizeof( wxString ); + m_trapAxisCtrl = new wxChoice( m_pageTrap, wxID_ANY, wxDefaultPosition, wxDefaultSize, m_trapAxisCtrlNChoices, m_trapAxisCtrlChoices, 0 ); + m_trapAxisCtrl->SetSelection( 0 ); + fgSizerTrapProps->Add( m_trapAxisCtrl, 0, wxEXPAND|wxALIGN_CENTER_VERTICAL|wxTOP|wxLEFT, 5 ); + + + m_pageTrap->SetSizer( fgSizerTrapProps ); + m_pageTrap->Layout(); + fgSizerTrapProps->Fit( m_pageTrap ); + m_shapePropsBook->AddPage( m_pageTrap, _("a page"), false ); + m_pageRounding = new wxPanel( m_shapePropsBook, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL ); + fgSizerRoundingProps = new wxFlexGridSizer( 0, 3, 0, 0 ); + fgSizerRoundingProps->AddGrowableCol( 1 ); + fgSizerRoundingProps->SetFlexibleDirection( wxBOTH ); + fgSizerRoundingProps->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED ); + + m_staticTextCornerSizeRatio = new wxStaticText( m_pageRounding, wxID_ANY, _("Corner size:"), wxDefaultPosition, wxDefaultSize, 0 ); + m_staticTextCornerSizeRatio->Wrap( -1 ); + m_staticTextCornerSizeRatio->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.") ); + + fgSizerRoundingProps->Add( m_staticTextCornerSizeRatio, 0, wxALIGN_CENTER_VERTICAL|wxTOP|wxRIGHT, 5 ); + + m_tcCornerSizeRatio = new TEXT_CTRL_EVAL( m_pageRounding, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 ); + fgSizerRoundingProps->Add( m_tcCornerSizeRatio, 0, wxEXPAND|wxALIGN_CENTER_VERTICAL|wxTOP|wxLEFT, 5 ); + + m_staticTextCornerSizeRatioUnit = new wxStaticText( m_pageRounding, wxID_ANY, _("%"), wxDefaultPosition, wxDefaultSize, 0 ); + m_staticTextCornerSizeRatioUnit->Wrap( -1 ); + fgSizerRoundingProps->Add( m_staticTextCornerSizeRatioUnit, 0, wxALIGN_CENTER_VERTICAL|wxTOP|wxRIGHT, 5 ); + + m_cornerRadiusLabel = new wxStaticText( m_pageRounding, wxID_ANY, _("Corner radius:"), wxDefaultPosition, wxDefaultSize, 0 ); + m_cornerRadiusLabel->Wrap( -1 ); + 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.") ); + + fgSizerRoundingProps->Add( m_cornerRadiusLabel, 0, wxALIGN_CENTER_VERTICAL|wxTOP|wxRIGHT, 5 ); + + m_tcCornerRadius = new wxTextCtrl( m_pageRounding, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 ); + fgSizerRoundingProps->Add( m_tcCornerRadius, 0, wxEXPAND|wxALIGN_CENTER_VERTICAL|wxTOP|wxLEFT, 5 ); + + m_cornerRadiusUnits = new wxStaticText( m_pageRounding, wxID_ANY, _("mm"), wxDefaultPosition, wxDefaultSize, 0 ); + m_cornerRadiusUnits->Wrap( -1 ); + fgSizerRoundingProps->Add( m_cornerRadiusUnits, 0, wxALIGN_CENTER_VERTICAL|wxTOP|wxRIGHT, 5 ); + + + m_pageRounding->SetSizer( fgSizerRoundingProps ); + m_pageRounding->Layout(); + fgSizerRoundingProps->Fit( m_pageRounding ); + m_shapePropsBook->AddPage( m_pageRounding, _("a page"), false ); + m_pageChamfer = new wxPanel( m_shapePropsBook, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL ); + wxFlexGridSizer* fgSizerChamferProps; + fgSizerChamferProps = new wxFlexGridSizer( 0, 3, 0, 0 ); + fgSizerChamferProps->AddGrowableCol( 1 ); + fgSizerChamferProps->SetFlexibleDirection( wxBOTH ); + fgSizerChamferProps->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED ); + + m_staticTextChamferRatio = new wxStaticText( m_pageChamfer, wxID_ANY, _("Chamfer size:"), wxDefaultPosition, wxDefaultSize, 0 ); + m_staticTextChamferRatio->Wrap( -1 ); + m_staticTextChamferRatio->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.") ); + + fgSizerChamferProps->Add( m_staticTextChamferRatio, 0, wxALIGN_CENTER_VERTICAL|wxTOP|wxBOTTOM|wxRIGHT, 5 ); + + m_tcChamferRatio = new TEXT_CTRL_EVAL( m_pageChamfer, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 ); + fgSizerChamferProps->Add( m_tcChamferRatio, 1, wxEXPAND|wxALIGN_CENTER_VERTICAL|wxTOP|wxBOTTOM|wxLEFT, 5 ); + + m_staticTextChamferRatioUnit = new wxStaticText( m_pageChamfer, wxID_ANY, _("%"), wxDefaultPosition, wxDefaultSize, 0 ); + m_staticTextChamferRatioUnit->Wrap( -1 ); + fgSizerChamferProps->Add( m_staticTextChamferRatioUnit, 0, wxALIGN_CENTER_VERTICAL|wxTOP|wxBOTTOM|wxRIGHT, 5 ); + + m_staticTextChamferCorner = new wxStaticText( m_pageChamfer, wxID_ANY, _("Chamfer corners:"), wxDefaultPosition, wxDefaultSize, 0 ); + m_staticTextChamferCorner->Wrap( -1 ); + m_staticTextChamferCorner->SetToolTip( _("Chamfered corners. The position is relative to a pad orientation 0 degree.") ); + + fgSizerChamferProps->Add( m_staticTextChamferCorner, 0, wxTOP, 5 ); + + wxGridSizer* gCornersSizer; + gCornersSizer = new wxGridSizer( 0, 2, 3, 6 ); + + m_cbTopLeft = new wxCheckBox( m_pageChamfer, wxID_ANY, _("Top left"), wxDefaultPosition, wxDefaultSize, 0 ); + m_cbTopLeft->SetValue(true); + gCornersSizer->Add( m_cbTopLeft, 0, 0, 5 ); + + m_cbTopRight = new wxCheckBox( m_pageChamfer, wxID_ANY, _("Top right"), wxDefaultPosition, wxDefaultSize, 0 ); + gCornersSizer->Add( m_cbTopRight, 0, 0, 5 ); + + m_cbBottomLeft = new wxCheckBox( m_pageChamfer, wxID_ANY, _("Bottom left"), wxDefaultPosition, wxDefaultSize, 0 ); + gCornersSizer->Add( m_cbBottomLeft, 0, 0, 5 ); + + m_cbBottomRight = new wxCheckBox( m_pageChamfer, wxID_ANY, _("Bottom right"), wxDefaultPosition, wxDefaultSize, 0 ); + gCornersSizer->Add( m_cbBottomRight, 0, 0, 5 ); + + + fgSizerChamferProps->Add( gCornersSizer, 1, wxEXPAND|wxALL, 5 ); + + + m_pageChamfer->SetSizer( fgSizerChamferProps ); + m_pageChamfer->Layout(); + fgSizerChamferProps->Fit( m_pageChamfer ); + m_shapePropsBook->AddPage( m_pageChamfer, _("a page"), false ); + + m_LeftBoxSizer->Add( m_shapePropsBook, 0, wxEXPAND|wxLEFT, 20 ); + + wxGridBagSizer* gbSizerPadOrientation; + gbSizerPadOrientation = new wxGridBagSizer( 0, 0 ); + gbSizerPadOrientation->SetFlexibleDirection( wxBOTH ); + gbSizerPadOrientation->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED ); + + m_sizeXLabel = new wxStaticText( m_panelGeneral, wxID_ANY, _("Pad size X:"), wxDefaultPosition, wxDefaultSize, 0 ); m_sizeXLabel->Wrap( -1 ); - fgSizerShapeType->Add( m_sizeXLabel, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxTOP, 3 ); + gbSizerPadOrientation->Add( m_sizeXLabel, wxGBPosition( 0, 0 ), wxGBSpan( 1, 1 ), wxALL|wxALIGN_CENTER_VERTICAL, 5 ); - m_sizeXCtrl = new wxTextCtrl( m_panelGeneral, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 ); - fgSizerShapeType->Add( m_sizeXCtrl, 0, wxEXPAND|wxTOP|wxRIGHT|wxLEFT, 3 ); + m_sizeXCtrl = new wxTextCtrl( m_panelGeneral, wxID_ANY, wxEmptyString, wxDefaultPosition, wxSize( -1,-1 ), 0 ); + gbSizerPadOrientation->Add( m_sizeXCtrl, wxGBPosition( 0, 1 ), wxGBSpan( 1, 1 ), wxTOP|wxBOTTOM|wxALIGN_CENTER_VERTICAL|wxEXPAND, 5 ); - m_sizeXUnits = new wxStaticText( m_panelGeneral, wxID_ANY, _("Inch"), wxDefaultPosition, wxDefaultSize, 0 ); + m_sizeXUnits = new wxStaticText( m_panelGeneral, wxID_ANY, _("mm"), wxDefaultPosition, wxDefaultSize, 0 ); m_sizeXUnits->Wrap( -1 ); - fgSizerShapeType->Add( m_sizeXUnits, 0, wxALIGN_CENTER_VERTICAL|wxTOP|wxRIGHT, 3 ); + gbSizerPadOrientation->Add( m_sizeXUnits, wxGBPosition( 0, 2 ), wxGBSpan( 1, 1 ), wxTOP|wxBOTTOM|wxRIGHT|wxALIGN_CENTER_VERTICAL, 5 ); - m_sizeYLabel = new wxStaticText( m_panelGeneral, wxID_ANY, _("Size Y:"), wxDefaultPosition, wxDefaultSize, 0 ); + m_sizeYLabel = new wxStaticText( m_panelGeneral, wxID_ANY, _("Y:"), wxDefaultPosition, wxDefaultSize, 0 ); m_sizeYLabel->Wrap( -1 ); - fgSizerShapeType->Add( m_sizeYLabel, 0, wxALIGN_CENTER_VERTICAL|wxTOP|wxLEFT, 3 ); + gbSizerPadOrientation->Add( m_sizeYLabel, wxGBPosition( 0, 3 ), wxGBSpan( 1, 1 ), wxTOP|wxBOTTOM|wxLEFT|wxALIGN_CENTER_VERTICAL, 5 ); m_sizeYCtrl = new wxTextCtrl( m_panelGeneral, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 ); - fgSizerShapeType->Add( m_sizeYCtrl, 0, wxEXPAND|wxTOP|wxRIGHT|wxLEFT|wxALIGN_CENTER_VERTICAL, 3 ); + gbSizerPadOrientation->Add( m_sizeYCtrl, wxGBPosition( 0, 4 ), wxGBSpan( 1, 1 ), wxTOP|wxBOTTOM|wxALIGN_CENTER_VERTICAL|wxEXPAND, 5 ); - m_sizeYUnits = new wxStaticText( m_panelGeneral, wxID_ANY, _("Inch"), wxDefaultPosition, wxDefaultSize, 0 ); + m_sizeYUnits = new wxStaticText( m_panelGeneral, wxID_ANY, _("mm"), wxDefaultPosition, wxDefaultSize, 0 ); m_sizeYUnits->Wrap( -1 ); - fgSizerShapeType->Add( m_sizeYUnits, 0, wxALIGN_CENTER_VERTICAL|wxTOP|wxRIGHT, 3 ); + gbSizerPadOrientation->Add( m_sizeYUnits, wxGBPosition( 0, 5 ), wxGBSpan( 1, 1 ), wxTOP|wxBOTTOM|wxRIGHT|wxALIGN_CENTER_VERTICAL, 5 ); - m_PadOrientText = new wxStaticText( m_panelGeneral, wxID_ANY, _("Orientation:"), wxDefaultPosition, wxDefaultSize, 0 ); + m_PadOrientText = new wxStaticText( m_panelGeneral, wxID_ANY, _("Angle:"), wxDefaultPosition, wxSize( -1,-1 ), 0 ); m_PadOrientText->Wrap( -1 ); - fgSizerShapeType->Add( m_PadOrientText, 0, wxALIGN_CENTER_VERTICAL|wxTOP|wxLEFT, 3 ); + gbSizerPadOrientation->Add( m_PadOrientText, wxGBPosition( 1, 0 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxRIGHT|wxLEFT, 5 ); - m_orientation = new wxComboBox( m_panelGeneral, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0, NULL, 0 ); + m_orientation = new wxComboBox( m_panelGeneral, wxID_ANY, wxEmptyString, wxDefaultPosition, wxSize( 100,-1 ), 0, NULL, 0 ); m_orientation->Append( _("0") ); m_orientation->Append( _("90") ); m_orientation->Append( _("-90") ); m_orientation->Append( _("180") ); - fgSizerShapeType->Add( m_orientation, 0, wxEXPAND|wxTOP|wxRIGHT|wxLEFT|wxALIGN_CENTER_VERTICAL, 3 ); + gbSizerPadOrientation->Add( m_orientation, wxGBPosition( 1, 1 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxEXPAND, 5 ); - m_staticText491 = new wxStaticText( m_panelGeneral, wxID_ANY, _("deg"), wxDefaultPosition, wxDefaultSize, 0 ); - m_staticText491->Wrap( -1 ); - fgSizerShapeType->Add( m_staticText491, 0, wxALIGN_CENTER_VERTICAL|wxTOP|wxRIGHT, 3 ); - - m_offsetXLabel = new wxStaticText( m_panelGeneral, wxID_ANY, _("Shape offset X:"), wxDefaultPosition, wxDefaultSize, 0 ); - m_offsetXLabel->Wrap( -1 ); - fgSizerShapeType->Add( m_offsetXLabel, 0, wxALIGN_CENTER_VERTICAL|wxLEFT, 3 ); - - m_offsetXCtrl = new wxTextCtrl( m_panelGeneral, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 ); - fgSizerShapeType->Add( m_offsetXCtrl, 0, wxEXPAND|wxRIGHT|wxLEFT, 3 ); - - m_offsetXUnits = new wxStaticText( m_panelGeneral, wxID_ANY, _("Inch"), wxDefaultPosition, wxDefaultSize, 0 ); - m_offsetXUnits->Wrap( -1 ); - fgSizerShapeType->Add( m_offsetXUnits, 0, wxALIGN_CENTER_VERTICAL|wxRIGHT, 3 ); - - m_offsetYLabel = new wxStaticText( m_panelGeneral, wxID_ANY, _("Shape offset Y:"), wxDefaultPosition, wxDefaultSize, 0 ); - m_offsetYLabel->Wrap( -1 ); - fgSizerShapeType->Add( m_offsetYLabel, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxTOP, 3 ); - - m_offsetYCtrl = new wxTextCtrl( m_panelGeneral, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 ); - fgSizerShapeType->Add( m_offsetYCtrl, 0, wxEXPAND|wxTOP|wxRIGHT|wxLEFT, 3 ); - - m_offsetYUnits = new wxStaticText( m_panelGeneral, wxID_ANY, _("Inch"), wxDefaultPosition, wxDefaultSize, 0 ); - m_offsetYUnits->Wrap( -1 ); - fgSizerShapeType->Add( m_offsetYUnits, 0, wxALIGN_CENTER_VERTICAL|wxTOP|wxRIGHT, 3 ); - - m_trapDeltaLabel = new wxStaticText( m_panelGeneral, wxID_ANY, _("Trapezoid delta:"), wxDefaultPosition, wxDefaultSize, 0 ); - m_trapDeltaLabel->Wrap( -1 ); - fgSizerShapeType->Add( m_trapDeltaLabel, 0, wxTOP|wxLEFT|wxALIGN_CENTER_VERTICAL, 3 ); - - m_trapDeltaCtrl = new wxTextCtrl( m_panelGeneral, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 ); - fgSizerShapeType->Add( m_trapDeltaCtrl, 0, wxEXPAND|wxTOP|wxRIGHT|wxLEFT|wxALIGN_CENTER_VERTICAL, 3 ); - - m_trapDeltaUnits = new wxStaticText( m_panelGeneral, wxID_ANY, _("Inch"), wxDefaultPosition, wxDefaultSize, 0 ); - m_trapDeltaUnits->Wrap( -1 ); - fgSizerShapeType->Add( m_trapDeltaUnits, 0, wxALIGN_CENTER_VERTICAL|wxTOP|wxRIGHT, 3 ); - - m_trapAxisLabel = new wxStaticText( m_panelGeneral, wxID_ANY, _("Trapezoid axis:"), wxDefaultPosition, wxDefaultSize, 0 ); - m_trapAxisLabel->Wrap( -1 ); - fgSizerShapeType->Add( m_trapAxisLabel, 0, wxALIGN_CENTER_VERTICAL|wxTOP|wxLEFT, 3 ); - - wxString m_trapAxisCtrlChoices[] = { _("Horizontal"), _("Vertical") }; - int m_trapAxisCtrlNChoices = sizeof( m_trapAxisCtrlChoices ) / sizeof( wxString ); - m_trapAxisCtrl = new wxChoice( m_panelGeneral, wxID_ANY, wxDefaultPosition, wxDefaultSize, m_trapAxisCtrlNChoices, m_trapAxisCtrlChoices, 0 ); - m_trapAxisCtrl->SetSelection( 0 ); - fgSizerShapeType->Add( m_trapAxisCtrl, 0, wxEXPAND|wxTOP|wxRIGHT|wxLEFT|wxALIGN_CENTER_VERTICAL, 3 ); + m_orientationUnits = new wxStaticText( m_panelGeneral, wxID_ANY, _("deg"), wxDefaultPosition, wxDefaultSize, 0 ); + m_orientationUnits->Wrap( -1 ); + gbSizerPadOrientation->Add( m_orientationUnits, wxGBPosition( 1, 2 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxRIGHT, 5 ); - fgSizerShapeType->Add( 0, 0, 1, wxEXPAND|wxTOP, 15 ); - - m_staticTextCornerSizeRatio = new wxStaticText( m_panelGeneral, wxID_ANY, _("Corner size:"), wxDefaultPosition, wxDefaultSize, 0 ); - m_staticTextCornerSizeRatio->Wrap( -1 ); - m_staticTextCornerSizeRatio->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.") ); - - fgSizerShapeType->Add( m_staticTextCornerSizeRatio, 0, wxALIGN_CENTER_VERTICAL|wxTOP|wxRIGHT|wxLEFT, 3 ); - - m_tcCornerSizeRatio = new TEXT_CTRL_EVAL( m_panelGeneral, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 ); - fgSizerShapeType->Add( m_tcCornerSizeRatio, 0, wxEXPAND|wxALIGN_CENTER_VERTICAL|wxTOP|wxRIGHT|wxLEFT, 3 ); - - m_staticTextCornerSizeRatioUnit = new wxStaticText( m_panelGeneral, wxID_ANY, _("%"), wxDefaultPosition, wxDefaultSize, 0 ); - m_staticTextCornerSizeRatioUnit->Wrap( -1 ); - fgSizerShapeType->Add( m_staticTextCornerSizeRatioUnit, 0, wxALIGN_CENTER_VERTICAL|wxTOP|wxRIGHT, 3 ); - - m_cornerRadiusLabel = new wxStaticText( m_panelGeneral, wxID_ANY, _("Corner radius:"), wxDefaultPosition, wxDefaultSize, 0 ); - m_cornerRadiusLabel->Wrap( -1 ); - 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.") ); - - fgSizerShapeType->Add( m_cornerRadiusLabel, 0, wxALIGN_CENTER_VERTICAL|wxTOP|wxRIGHT|wxLEFT, 3 ); - - m_tcCornerRadius = new wxTextCtrl( m_panelGeneral, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 ); - fgSizerShapeType->Add( m_tcCornerRadius, 0, wxEXPAND|wxTOP|wxRIGHT|wxLEFT|wxALIGN_CENTER_VERTICAL, 3 ); - - m_cornerRadiusUnits = new wxStaticText( m_panelGeneral, wxID_ANY, _("unit"), wxDefaultPosition, wxDefaultSize, 0 ); - m_cornerRadiusUnits->Wrap( -1 ); - fgSizerShapeType->Add( m_cornerRadiusUnits, 0, wxALIGN_CENTER_VERTICAL|wxTOP|wxRIGHT, 3 ); - - m_staticTextChamferRatio = new wxStaticText( m_panelGeneral, wxID_ANY, _("Chamfer size:"), wxDefaultPosition, wxDefaultSize, 0 ); - m_staticTextChamferRatio->Wrap( -1 ); - m_staticTextChamferRatio->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.") ); - - fgSizerShapeType->Add( m_staticTextChamferRatio, 0, wxALIGN_CENTER_VERTICAL|wxALL, 3 ); - - m_tcChamferRatio = new TEXT_CTRL_EVAL( m_panelGeneral, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 ); - fgSizerShapeType->Add( m_tcChamferRatio, 0, wxEXPAND|wxALL|wxALIGN_CENTER_VERTICAL, 3 ); - - m_staticTextChamferRatioUnit = new wxStaticText( m_panelGeneral, wxID_ANY, _("%"), wxDefaultPosition, wxDefaultSize, 0 ); - m_staticTextChamferRatioUnit->Wrap( -1 ); - fgSizerShapeType->Add( m_staticTextChamferRatioUnit, 0, wxALIGN_CENTER_VERTICAL|wxTOP|wxBOTTOM|wxRIGHT, 5 ); - - m_staticTextChamferCorner = new wxStaticText( m_panelGeneral, wxID_ANY, _("Chamfers:"), wxDefaultPosition, wxDefaultSize, 0 ); - m_staticTextChamferCorner->Wrap( -1 ); - m_staticTextChamferCorner->SetToolTip( _("Chamfered corners. The position is relative to a pad orientation 0 degree.") ); - - fgSizerShapeType->Add( m_staticTextChamferCorner, 0, wxALIGN_CENTER_VERTICAL|wxRIGHT|wxLEFT, 3 ); - - wxGridSizer* gSizer1; - gSizer1 = new wxGridSizer( 0, 2, 3, 6 ); - - m_cbTopLeft = new wxCheckBox( m_panelGeneral, wxID_ANY, _("Top left"), wxDefaultPosition, wxDefaultSize, 0 ); - m_cbTopLeft->SetValue(true); - gSizer1->Add( m_cbTopLeft, 0, 0, 5 ); - - m_cbTopRight = new wxCheckBox( m_panelGeneral, wxID_ANY, _("Top right"), wxDefaultPosition, wxDefaultSize, 0 ); - gSizer1->Add( m_cbTopRight, 0, 0, 5 ); - - m_cbBottomLeft = new wxCheckBox( m_panelGeneral, wxID_ANY, _("Bottom left"), wxDefaultPosition, wxDefaultSize, 0 ); - gSizer1->Add( m_cbBottomLeft, 0, 0, 5 ); - - m_cbBottomRight = new wxCheckBox( m_panelGeneral, wxID_ANY, _("Bottom right"), wxDefaultPosition, wxDefaultSize, 0 ); - gSizer1->Add( m_cbBottomRight, 0, 0, 5 ); + m_LeftBoxSizer->Add( gbSizerPadOrientation, 0, wxEXPAND, 5 ); - fgSizerShapeType->Add( gSizer1, 1, wxEXPAND|wxTOP|wxLEFT, 3 ); + 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, wxEXPAND, 5 ); - m_LeftBoxSizer->Add( fgSizerShapeType, 0, wxBOTTOM|wxRIGHT|wxLEFT|wxEXPAND, 5 ); + m_LeftBoxSizer->Add( 0, 5, 1, wxEXPAND, 5 ); - - bGeneralSizer->Add( m_LeftBoxSizer, 0, wxALL|wxEXPAND, 5 ); - - m_middleBoxSizer = new wxBoxSizer( wxVERTICAL ); - - wxFlexGridSizer* fgSizerGeometry; - fgSizerGeometry = new wxFlexGridSizer( 14, 3, 0, 0 ); - fgSizerGeometry->AddGrowableCol( 1 ); - fgSizerGeometry->SetFlexibleDirection( wxBOTH ); - fgSizerGeometry->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED ); + wxGridBagSizer* gbSizerHole; + gbSizerHole = new wxGridBagSizer( 0, 0 ); + gbSizerHole->SetFlexibleDirection( wxBOTH ); + gbSizerHole->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED ); m_holeShapeLabel = new wxStaticText( m_panelGeneral, wxID_ANY, _("Hole shape:"), wxDefaultPosition, wxDefaultSize, 0 ); m_holeShapeLabel->Wrap( -1 ); - fgSizerGeometry->Add( m_holeShapeLabel, 0, wxALIGN_CENTER_VERTICAL|wxTOP|wxLEFT, 5 ); + gbSizerHole->Add( m_holeShapeLabel, wxGBPosition( 0, 0 ), wxGBSpan( 1, 1 ), wxALL, 5 ); wxString m_holeShapeCtrlChoices[] = { _("Circular"), _("Oval") }; int m_holeShapeCtrlNChoices = sizeof( m_holeShapeCtrlChoices ) / sizeof( wxString ); m_holeShapeCtrl = new wxChoice( m_panelGeneral, wxID_ANY, wxDefaultPosition, wxDefaultSize, m_holeShapeCtrlNChoices, m_holeShapeCtrlChoices, 0 ); m_holeShapeCtrl->SetSelection( 0 ); - fgSizerGeometry->Add( m_holeShapeCtrl, 0, wxALIGN_CENTER_VERTICAL|wxEXPAND|wxLEFT|wxTOP, 5 ); - - m_staticText51 = new wxStaticText( m_panelGeneral, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 ); - m_staticText51->Wrap( -1 ); - fgSizerGeometry->Add( m_staticText51, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT|wxTOP, 5 ); + gbSizerHole->Add( m_holeShapeCtrl, wxGBPosition( 0, 1 ), wxGBSpan( 1, 5 ), wxEXPAND|wxTOP|wxBOTTOM|wxRIGHT, 5 ); m_holeXLabel = new wxStaticText( m_panelGeneral, wxID_ANY, _("Hole size X:"), wxDefaultPosition, wxDefaultSize, 0 ); m_holeXLabel->Wrap( -1 ); - fgSizerGeometry->Add( m_holeXLabel, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxTOP, 5 ); + gbSizerHole->Add( m_holeXLabel, wxGBPosition( 1, 0 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxTOP|wxBOTTOM|wxLEFT, 5 ); m_holeXCtrl = new wxTextCtrl( m_panelGeneral, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 ); - fgSizerGeometry->Add( m_holeXCtrl, 0, wxEXPAND|wxLEFT|wxTOP, 5 ); + gbSizerHole->Add( m_holeXCtrl, wxGBPosition( 1, 1 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL, 5 ); - m_holeXUnits = new wxStaticText( m_panelGeneral, wxID_ANY, _("Inch"), wxDefaultPosition, wxDefaultSize, 0 ); + m_holeXUnits = new wxStaticText( m_panelGeneral, wxID_ANY, _("mm"), wxDefaultPosition, wxDefaultSize, 0 ); m_holeXUnits->Wrap( -1 ); - fgSizerGeometry->Add( m_holeXUnits, 0, wxALIGN_CENTER_VERTICAL|wxTOP|wxRIGHT, 5 ); + gbSizerHole->Add( m_holeXUnits, wxGBPosition( 1, 2 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxTOP|wxBOTTOM|wxRIGHT, 5 ); - m_holeYLabel = new wxStaticText( m_panelGeneral, wxID_ANY, _("Hole size Y:"), wxDefaultPosition, wxDefaultSize, 0 ); + m_holeYLabel = new wxStaticText( m_panelGeneral, wxID_ANY, _("Y:"), wxDefaultPosition, wxDefaultSize, 0 ); m_holeYLabel->Wrap( -1 ); - fgSizerGeometry->Add( m_holeYLabel, 0, wxALIGN_CENTER_VERTICAL|wxTOP|wxLEFT, 5 ); + gbSizerHole->Add( m_holeYLabel, wxGBPosition( 1, 3 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxTOP|wxBOTTOM|wxLEFT, 5 ); m_holeYCtrl = new wxTextCtrl( m_panelGeneral, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 ); - fgSizerGeometry->Add( m_holeYCtrl, 0, wxEXPAND|wxTOP|wxLEFT|wxALIGN_CENTER_VERTICAL, 5 ); + gbSizerHole->Add( m_holeYCtrl, wxGBPosition( 1, 4 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL, 5 ); - m_holeYUnits = new wxStaticText( m_panelGeneral, wxID_ANY, _("Inch"), wxDefaultPosition, wxDefaultSize, 0 ); + m_holeYUnits = new wxStaticText( m_panelGeneral, wxID_ANY, _("mm"), wxDefaultPosition, wxDefaultSize, 0 ); m_holeYUnits->Wrap( -1 ); - fgSizerGeometry->Add( m_holeYUnits, 0, wxALIGN_CENTER_VERTICAL|wxTOP|wxRIGHT, 5 ); + gbSizerHole->Add( m_holeYUnits, wxGBPosition( 1, 5 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxTOP|wxBOTTOM|wxRIGHT, 5 ); - m_padToDieLabel = new wxStaticText( m_panelGeneral, wxID_ANY, _("Pad to die:"), wxDefaultPosition, wxDefaultSize, 0 ); + + m_LeftBoxSizer->Add( gbSizerHole, 0, wxEXPAND, 5 ); + + + m_LeftBoxSizer->Add( 0, 0, 1, wxEXPAND, 5 ); + + m_staticline7 = new wxStaticLine( m_panelGeneral, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_HORIZONTAL ); + m_LeftBoxSizer->Add( m_staticline7, 0, wxEXPAND, 5 ); + + + m_LeftBoxSizer->Add( 0, 0, 1, wxEXPAND, 5 ); + + wxBoxSizer* bSizer35; + bSizer35 = new wxBoxSizer( wxHORIZONTAL ); + + m_offsetShapeOpt = new wxCheckBox( m_panelGeneral, wxID_ANY, _("Offset shape from hole"), wxDefaultPosition, wxDefaultSize, 0 ); + bSizer35->Add( m_offsetShapeOpt, 0, wxLEFT, 5 ); + + m_offsetShapeOptLabel = new wxStaticText( m_panelGeneral, wxID_ANY, _(":"), wxDefaultPosition, wxDefaultSize, 0 ); + m_offsetShapeOptLabel->Wrap( -1 ); + bSizer35->Add( m_offsetShapeOptLabel, 0, wxRIGHT, 5 ); + + + m_LeftBoxSizer->Add( bSizer35, 0, wxEXPAND, 5 ); + + + m_LeftBoxSizer->Add( 0, 3, 0, wxEXPAND, 5 ); + + m_offsetCtrls = new wxFlexGridSizer( 0, 6, 0, 0 ); + m_offsetCtrls->AddGrowableCol( 1 ); + m_offsetCtrls->AddGrowableCol( 4 ); + m_offsetCtrls->SetFlexibleDirection( wxBOTH ); + m_offsetCtrls->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED ); + + m_offsetXLabel = new wxStaticText( m_panelGeneral, wxID_ANY, _("X:"), wxDefaultPosition, wxDefaultSize, 0 ); + m_offsetXLabel->Wrap( -1 ); + m_offsetCtrls->Add( m_offsetXLabel, 0, wxALIGN_CENTER_VERTICAL|wxBOTTOM|wxLEFT, 5 ); + + m_offsetXCtrl = new wxTextCtrl( m_panelGeneral, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 ); + m_offsetCtrls->Add( m_offsetXCtrl, 0, wxEXPAND|wxALIGN_CENTER_VERTICAL|wxBOTTOM, 5 ); + + m_offsetXUnits = new wxStaticText( m_panelGeneral, wxID_ANY, _("mm"), wxDefaultPosition, wxDefaultSize, 0 ); + m_offsetXUnits->Wrap( -1 ); + m_offsetCtrls->Add( m_offsetXUnits, 0, wxALIGN_CENTER_VERTICAL|wxBOTTOM|wxRIGHT, 5 ); + + m_offsetYLabel = new wxStaticText( m_panelGeneral, wxID_ANY, _("Y:"), wxDefaultPosition, wxDefaultSize, 0 ); + m_offsetYLabel->Wrap( -1 ); + m_offsetCtrls->Add( m_offsetYLabel, 0, wxALIGN_CENTER_VERTICAL|wxBOTTOM|wxLEFT, 5 ); + + m_offsetYCtrl = new wxTextCtrl( m_panelGeneral, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 ); + m_offsetCtrls->Add( m_offsetYCtrl, 0, wxEXPAND|wxALIGN_CENTER_VERTICAL|wxBOTTOM, 5 ); + + m_offsetYUnits = new wxStaticText( m_panelGeneral, wxID_ANY, _("mm"), wxDefaultPosition, wxDefaultSize, 0 ); + m_offsetYUnits->Wrap( -1 ); + m_offsetCtrls->Add( m_offsetYUnits, 0, wxALIGN_CENTER_VERTICAL|wxBOTTOM|wxRIGHT, 5 ); + + + m_LeftBoxSizer->Add( m_offsetCtrls, 0, wxEXPAND|wxLEFT, 25 ); + + wxFlexGridSizer* fgSizerPadToDie; + fgSizerPadToDie = new wxFlexGridSizer( 14, 3, 0, 0 ); + fgSizerPadToDie->AddGrowableCol( 1 ); + fgSizerPadToDie->SetFlexibleDirection( wxBOTH ); + fgSizerPadToDie->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED ); + + wxBoxSizer* bSizer34; + bSizer34 = new wxBoxSizer( wxHORIZONTAL ); + + m_padToDieOpt = new wxCheckBox( m_panelGeneral, wxID_ANY, _("Specify pad to die length"), wxDefaultPosition, wxDefaultSize, 0 ); + bSizer34->Add( m_padToDieOpt, 0, wxALIGN_CENTER_VERTICAL|wxTOP|wxLEFT, 5 ); + + m_padToDieLabel = new wxStaticText( m_panelGeneral, wxID_ANY, _(":"), wxDefaultPosition, wxDefaultSize, 0 ); m_padToDieLabel->Wrap( -1 ); - m_padToDieLabel->SetToolTip( _("Wire length from pad to die on chip ( used to calculate actual track length)") ); + bSizer34->Add( m_padToDieLabel, 0, wxALIGN_CENTER_VERTICAL|wxTOP|wxRIGHT, 5 ); - fgSizerGeometry->Add( m_padToDieLabel, 0, wxALIGN_CENTER_VERTICAL|wxTOP|wxLEFT, 5 ); + + fgSizerPadToDie->Add( bSizer34, 0, wxEXPAND|wxRIGHT, 5 ); m_padToDieCtrl = new wxTextCtrl( m_panelGeneral, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 ); - fgSizerGeometry->Add( m_padToDieCtrl, 0, wxEXPAND|wxALIGN_CENTER_VERTICAL|wxTOP|wxLEFT, 5 ); + fgSizerPadToDie->Add( m_padToDieCtrl, 0, wxEXPAND|wxALIGN_CENTER_VERTICAL|wxTOP|wxLEFT, 5 ); - m_padToDieUnits = new wxStaticText( m_panelGeneral, wxID_ANY, _("Inch"), wxDefaultPosition, wxDefaultSize, 0 ); + m_padToDieUnits = new wxStaticText( m_panelGeneral, wxID_ANY, _("mm"), wxDefaultPosition, wxDefaultSize, 0 ); m_padToDieUnits->Wrap( -1 ); - fgSizerGeometry->Add( m_padToDieUnits, 0, wxALIGN_CENTER_VERTICAL|wxTOP|wxRIGHT, 3 ); + fgSizerPadToDie->Add( m_padToDieUnits, 0, wxALIGN_CENTER_VERTICAL|wxTOP|wxRIGHT, 5 ); - m_middleBoxSizer->Add( fgSizerGeometry, 0, wxEXPAND, 5 ); + m_LeftBoxSizer->Add( fgSizerPadToDie, 0, wxEXPAND, 5 ); + + + bGeneralSizer->Add( m_LeftBoxSizer, 0, wxEXPAND|wxALL, 5 ); + + m_middleBoxSizer = new wxBoxSizer( wxVERTICAL ); wxStaticBoxSizer* m_LayersSizer; m_LayersSizer = new wxStaticBoxSizer( new wxStaticBox( m_panelGeneral, wxID_ANY, wxEmptyString ), wxVERTICAL ); @@ -398,6 +508,9 @@ DIALOG_PAD_PROPERTIES_BASE::DIALOG_PAD_PROPERTIES_BASE( wxWindow* parent, wxWind m_middleBoxSizer->Add( m_staticTextFabProperty, 0, wxTOP|wxRIGHT|wxLEFT, 5 ); + + m_middleBoxSizer->Add( 0, 2, 0, wxEXPAND, 5 ); + wxString m_choiceFabPropertyChoices[] = { _("None"), _("BGA pad"), _("Fiducial, local to footprint"), _("Fiducial, global to board"), _("Test Point Pad"), _("Heatsink pad"), _("Castellated pad (through hole only)") }; int m_choiceFabPropertyNChoices = sizeof( m_choiceFabPropertyChoices ) / sizeof( wxString ); m_choiceFabProperty = new wxChoice( m_panelGeneral, wxID_ANY, wxDefaultPosition, wxDefaultSize, m_choiceFabPropertyNChoices, m_choiceFabPropertyChoices, 0 ); @@ -623,20 +736,26 @@ DIALOG_PAD_PROPERTIES_BASE::DIALOG_PAD_PROPERTIES_BASE( wxWindow* parent, wxWind m_panelCustomShapePrimitives = new wxPanel( m_notebook, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL ); m_bSizerPanelPrimitives = new wxBoxSizer( wxVERTICAL ); - m_staticTextPrimitivesList = new wxStaticText( m_panelCustomShapePrimitives, wxID_ANY, _("Primitives list"), wxDefaultPosition, wxDefaultSize, 0 ); + wxBoxSizer* bSizerAboveList; + bSizerAboveList = new wxBoxSizer( wxHORIZONTAL ); + + m_staticTextPrimitivesList = new wxStaticText( m_panelCustomShapePrimitives, wxID_ANY, _("Primitives list:"), wxDefaultPosition, wxDefaultSize, 0 ); m_staticTextPrimitivesList->Wrap( -1 ); - m_staticTextPrimitivesList->SetFont( wxFont( wxNORMAL_FONT->GetPointSize(), wxFONTFAMILY_DEFAULT, wxFONTSTYLE_ITALIC, wxFONTWEIGHT_BOLD, false, wxEmptyString ) ); + m_staticTextPrimitivesList->SetFont( wxFont( wxNORMAL_FONT->GetPointSize(), wxFONTFAMILY_DEFAULT, wxFONTSTYLE_NORMAL, wxFONTWEIGHT_BOLD, false, wxEmptyString ) ); - m_bSizerPanelPrimitives->Add( m_staticTextPrimitivesList, 0, wxALL|wxALIGN_CENTER_HORIZONTAL, 5 ); + bSizerAboveList->Add( m_staticTextPrimitivesList, 1, wxALIGN_CENTER_HORIZONTAL|wxEXPAND|wxTOP|wxRIGHT|wxLEFT|wxALIGN_CENTER_VERTICAL, 5 ); - m_staticTextPrimitiveListWarning = new wxStaticText( m_panelCustomShapePrimitives, wxID_ANY, _("Coordinates are relative to anchor pad, orientation 0"), wxDefaultPosition, wxDefaultSize, 0 ); + m_staticTextPrimitiveListWarning = new wxStaticText( m_panelCustomShapePrimitives, wxID_ANY, _("Note: coordinates are relative to anchor pad, orientation 0."), wxDefaultPosition, wxDefaultSize, 0 ); m_staticTextPrimitiveListWarning->Wrap( -1 ); - m_staticTextPrimitiveListWarning->SetFont( wxFont( wxNORMAL_FONT->GetPointSize(), wxFONTFAMILY_DEFAULT, wxFONTSTYLE_NORMAL, wxFONTWEIGHT_BOLD, false, wxEmptyString ) ); + m_staticTextPrimitiveListWarning->SetFont( wxFont( 11, wxFONTFAMILY_DEFAULT, wxFONTSTYLE_ITALIC, wxFONTWEIGHT_NORMAL, false, wxEmptyString ) ); - m_bSizerPanelPrimitives->Add( m_staticTextPrimitiveListWarning, 0, wxALL|wxALIGN_CENTER_HORIZONTAL, 5 ); + bSizerAboveList->Add( m_staticTextPrimitiveListWarning, 0, wxALIGN_CENTER_HORIZONTAL|wxEXPAND|wxALIGN_BOTTOM|wxTOP|wxRIGHT|wxLEFT, 7 ); + + + m_bSizerPanelPrimitives->Add( bSizerAboveList, 0, wxEXPAND|wxBOTTOM, 3 ); m_listCtrlPrimitives = new wxListView( m_panelCustomShapePrimitives, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLC_HRULES|wxLC_NO_HEADER|wxLC_REPORT ); - m_bSizerPanelPrimitives->Add( m_listCtrlPrimitives, 1, wxALL|wxEXPAND, 5 ); + m_bSizerPanelPrimitives->Add( m_listCtrlPrimitives, 1, wxEXPAND|wxBOTTOM|wxRIGHT|wxLEFT, 5 ); wxBoxSizer* bSizerButtons; bSizerButtons = new wxBoxSizer( wxVERTICAL ); @@ -644,15 +763,12 @@ DIALOG_PAD_PROPERTIES_BASE::DIALOG_PAD_PROPERTIES_BASE( wxWindow* parent, wxWind wxBoxSizer* bSizerButtonsUpper; bSizerButtonsUpper = new wxBoxSizer( wxHORIZONTAL ); - m_buttonDel = new wxButton( m_panelCustomShapePrimitives, wxID_ANY, _("Delete Primitive"), wxDefaultPosition, wxDefaultSize, 0 ); - bSizerButtonsUpper->Add( m_buttonDel, 0, wxALL, 5 ); + m_buttonAddShape = new wxButton( m_panelCustomShapePrimitives, wxID_ANY, _("Add Primitive"), wxDefaultPosition, wxDefaultSize, 0 ); + bSizerButtonsUpper->Add( m_buttonAddShape, 0, wxALL, 5 ); m_buttonEditShape = new wxButton( m_panelCustomShapePrimitives, wxID_ANY, _("Edit Primitive"), wxDefaultPosition, wxDefaultSize, 0 ); bSizerButtonsUpper->Add( m_buttonEditShape, 0, wxALL, 5 ); - m_buttonAddShape = new wxButton( m_panelCustomShapePrimitives, wxID_ANY, _("Add Primitive"), wxDefaultPosition, wxDefaultSize, 0 ); - bSizerButtonsUpper->Add( m_buttonAddShape, 0, wxALL, 5 ); - m_buttonDup = new wxButton( m_panelCustomShapePrimitives, wxID_ANY, _("Duplicate Primitive"), wxDefaultPosition, wxDefaultSize, 0 ); bSizerButtonsUpper->Add( m_buttonDup, 0, wxALL, 5 ); @@ -660,10 +776,16 @@ DIALOG_PAD_PROPERTIES_BASE::DIALOG_PAD_PROPERTIES_BASE( wxWindow* parent, wxWind bSizerButtonsUpper->Add( m_buttonGeometry, 0, wxALL, 5 ); - bSizerButtons->Add( bSizerButtonsUpper, 0, wxALIGN_CENTER_HORIZONTAL, 5 ); + bSizerButtonsUpper->Add( 0, 0, 1, wxEXPAND, 5 ); + + m_buttonDel = new wxButton( m_panelCustomShapePrimitives, wxID_ANY, _("Delete Primitive"), wxDefaultPosition, wxDefaultSize, 0 ); + bSizerButtonsUpper->Add( m_buttonDel, 0, wxALL, 5 ); - m_bSizerPanelPrimitives->Add( bSizerButtons, 0, wxALIGN_CENTER_HORIZONTAL, 5 ); + bSizerButtons->Add( bSizerButtonsUpper, 0, wxALIGN_CENTER_HORIZONTAL|wxEXPAND, 5 ); + + + m_bSizerPanelPrimitives->Add( bSizerButtons, 0, wxALIGN_CENTER_HORIZONTAL|wxEXPAND, 5 ); m_panelCustomShapePrimitives->SetSizer( m_bSizerPanelPrimitives ); @@ -726,21 +848,16 @@ DIALOG_PAD_PROPERTIES_BASE::DIALOG_PAD_PROPERTIES_BASE( wxWindow* parent, wxWind this->SetSizer( m_MainSizer ); this->Layout(); + m_MainSizer->Fit( this ); this->Centre( wxBOTH ); // Connect Events this->Connect( wxEVT_INIT_DIALOG, wxInitDialogEventHandler( DIALOG_PAD_PROPERTIES_BASE::OnInitDialog ) ); m_panelGeneral->Connect( wxEVT_UPDATE_UI, wxUpdateUIEventHandler( DIALOG_PAD_PROPERTIES_BASE::OnUpdateUI ), NULL, this ); - m_PadNumCtrl->Connect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( DIALOG_PAD_PROPERTIES_BASE::OnValuesChanged ), NULL, this ); m_PadType->Connect( wxEVT_COMMAND_CHOICE_SELECTED, wxCommandEventHandler( DIALOG_PAD_PROPERTIES_BASE::PadTypeSelected ), NULL, this ); + m_PadNumCtrl->Connect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( DIALOG_PAD_PROPERTIES_BASE::OnValuesChanged ), NULL, this ); m_PadShape->Connect( wxEVT_COMMAND_CHOICE_SELECTED, wxCommandEventHandler( DIALOG_PAD_PROPERTIES_BASE::OnPadShapeSelection ), NULL, this ); - m_sizeXCtrl->Connect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( DIALOG_PAD_PROPERTIES_BASE::OnValuesChanged ), NULL, this ); - m_sizeYCtrl->Connect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( DIALOG_PAD_PROPERTIES_BASE::OnValuesChanged ), NULL, this ); - m_orientation->Connect( wxEVT_COMMAND_COMBOBOX_SELECTED, wxCommandEventHandler( DIALOG_PAD_PROPERTIES_BASE::PadOrientEvent ), NULL, this ); - m_orientation->Connect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( DIALOG_PAD_PROPERTIES_BASE::PadOrientEvent ), NULL, this ); - m_offsetXCtrl->Connect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( DIALOG_PAD_PROPERTIES_BASE::OnValuesChanged ), NULL, this ); - m_offsetYCtrl->Connect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( DIALOG_PAD_PROPERTIES_BASE::OnValuesChanged ), NULL, this ); m_trapDeltaCtrl->Connect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( DIALOG_PAD_PROPERTIES_BASE::OnValuesChanged ), NULL, this ); m_trapAxisCtrl->Connect( wxEVT_COMMAND_CHOICE_SELECTED, wxCommandEventHandler( DIALOG_PAD_PROPERTIES_BASE::OnSetLayers ), NULL, this ); m_tcCornerSizeRatio->Connect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( DIALOG_PAD_PROPERTIES_BASE::onCornerSizePercentChange ), NULL, this ); @@ -750,9 +867,17 @@ DIALOG_PAD_PROPERTIES_BASE::DIALOG_PAD_PROPERTIES_BASE( wxWindow* parent, wxWind m_cbTopRight->Connect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( DIALOG_PAD_PROPERTIES_BASE::OnValuesChanged ), NULL, this ); m_cbBottomLeft->Connect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( DIALOG_PAD_PROPERTIES_BASE::OnValuesChanged ), NULL, this ); m_cbBottomRight->Connect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( DIALOG_PAD_PROPERTIES_BASE::OnValuesChanged ), NULL, this ); + m_sizeXCtrl->Connect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( DIALOG_PAD_PROPERTIES_BASE::OnValuesChanged ), NULL, this ); + m_sizeYCtrl->Connect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( DIALOG_PAD_PROPERTIES_BASE::OnValuesChanged ), NULL, this ); + m_orientation->Connect( wxEVT_COMMAND_COMBOBOX_SELECTED, wxCommandEventHandler( DIALOG_PAD_PROPERTIES_BASE::PadOrientEvent ), NULL, this ); + m_orientation->Connect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( DIALOG_PAD_PROPERTIES_BASE::PadOrientEvent ), NULL, this ); m_holeShapeCtrl->Connect( wxEVT_COMMAND_CHOICE_SELECTED, wxCommandEventHandler( DIALOG_PAD_PROPERTIES_BASE::OnDrillShapeSelected ), NULL, this ); m_holeXCtrl->Connect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( DIALOG_PAD_PROPERTIES_BASE::OnValuesChanged ), NULL, this ); m_holeYCtrl->Connect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( DIALOG_PAD_PROPERTIES_BASE::OnValuesChanged ), NULL, this ); + m_offsetShapeOpt->Connect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( DIALOG_PAD_PROPERTIES_BASE::OnOffsetCheckbox ), NULL, this ); + m_offsetXCtrl->Connect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( DIALOG_PAD_PROPERTIES_BASE::OnValuesChanged ), NULL, this ); + m_offsetYCtrl->Connect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( DIALOG_PAD_PROPERTIES_BASE::OnValuesChanged ), NULL, this ); + m_padToDieOpt->Connect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( DIALOG_PAD_PROPERTIES_BASE::OnPadToDieCheckbox ), NULL, this ); m_rbCopperLayersSel->Connect( wxEVT_COMMAND_CHOICE_SELECTED, wxCommandEventHandler( DIALOG_PAD_PROPERTIES_BASE::OnSetLayers ), NULL, this ); m_PadLayerAdhCmp->Connect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( DIALOG_PAD_PROPERTIES_BASE::OnSetLayers ), NULL, this ); m_PadLayerAdhCu->Connect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( DIALOG_PAD_PROPERTIES_BASE::OnSetLayers ), NULL, this ); @@ -770,11 +895,11 @@ DIALOG_PAD_PROPERTIES_BASE::DIALOG_PAD_PROPERTIES_BASE( wxWindow* parent, wxWind m_listCtrlPrimitives->Connect( wxEVT_LEFT_DCLICK, wxMouseEventHandler( DIALOG_PAD_PROPERTIES_BASE::onPrimitiveDClick ), NULL, this ); m_listCtrlPrimitives->Connect( wxEVT_COMMAND_LIST_ITEM_DESELECTED, wxListEventHandler( DIALOG_PAD_PROPERTIES_BASE::OnPrimitiveSelection ), NULL, this ); m_listCtrlPrimitives->Connect( wxEVT_COMMAND_LIST_ITEM_SELECTED, wxListEventHandler( DIALOG_PAD_PROPERTIES_BASE::OnPrimitiveSelection ), NULL, this ); - m_buttonDel->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_PAD_PROPERTIES_BASE::onDeletePrimitive ), NULL, this ); - m_buttonEditShape->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_PAD_PROPERTIES_BASE::onEditPrimitive ), NULL, this ); m_buttonAddShape->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_PAD_PROPERTIES_BASE::onAddPrimitive ), NULL, this ); + m_buttonEditShape->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_PAD_PROPERTIES_BASE::onEditPrimitive ), NULL, this ); m_buttonDup->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_PAD_PROPERTIES_BASE::onDuplicatePrimitive ), NULL, this ); m_buttonGeometry->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_PAD_PROPERTIES_BASE::onGeometryTransform ), NULL, this ); + m_buttonDel->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_PAD_PROPERTIES_BASE::onDeletePrimitive ), NULL, this ); m_cbShowPadOutline->Connect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( DIALOG_PAD_PROPERTIES_BASE::onChangePadMode ), NULL, this ); m_sdbSizerCancel->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_PAD_PROPERTIES_BASE::OnCancel ), NULL, this ); } @@ -784,15 +909,9 @@ DIALOG_PAD_PROPERTIES_BASE::~DIALOG_PAD_PROPERTIES_BASE() // Disconnect Events this->Disconnect( wxEVT_INIT_DIALOG, wxInitDialogEventHandler( DIALOG_PAD_PROPERTIES_BASE::OnInitDialog ) ); m_panelGeneral->Disconnect( wxEVT_UPDATE_UI, wxUpdateUIEventHandler( DIALOG_PAD_PROPERTIES_BASE::OnUpdateUI ), NULL, this ); - m_PadNumCtrl->Disconnect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( DIALOG_PAD_PROPERTIES_BASE::OnValuesChanged ), NULL, this ); m_PadType->Disconnect( wxEVT_COMMAND_CHOICE_SELECTED, wxCommandEventHandler( DIALOG_PAD_PROPERTIES_BASE::PadTypeSelected ), NULL, this ); + m_PadNumCtrl->Disconnect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( DIALOG_PAD_PROPERTIES_BASE::OnValuesChanged ), NULL, this ); m_PadShape->Disconnect( wxEVT_COMMAND_CHOICE_SELECTED, wxCommandEventHandler( DIALOG_PAD_PROPERTIES_BASE::OnPadShapeSelection ), NULL, this ); - m_sizeXCtrl->Disconnect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( DIALOG_PAD_PROPERTIES_BASE::OnValuesChanged ), NULL, this ); - m_sizeYCtrl->Disconnect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( DIALOG_PAD_PROPERTIES_BASE::OnValuesChanged ), NULL, this ); - m_orientation->Disconnect( wxEVT_COMMAND_COMBOBOX_SELECTED, wxCommandEventHandler( DIALOG_PAD_PROPERTIES_BASE::PadOrientEvent ), NULL, this ); - m_orientation->Disconnect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( DIALOG_PAD_PROPERTIES_BASE::PadOrientEvent ), NULL, this ); - m_offsetXCtrl->Disconnect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( DIALOG_PAD_PROPERTIES_BASE::OnValuesChanged ), NULL, this ); - m_offsetYCtrl->Disconnect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( DIALOG_PAD_PROPERTIES_BASE::OnValuesChanged ), NULL, this ); m_trapDeltaCtrl->Disconnect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( DIALOG_PAD_PROPERTIES_BASE::OnValuesChanged ), NULL, this ); m_trapAxisCtrl->Disconnect( wxEVT_COMMAND_CHOICE_SELECTED, wxCommandEventHandler( DIALOG_PAD_PROPERTIES_BASE::OnSetLayers ), NULL, this ); m_tcCornerSizeRatio->Disconnect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( DIALOG_PAD_PROPERTIES_BASE::onCornerSizePercentChange ), NULL, this ); @@ -802,9 +921,17 @@ DIALOG_PAD_PROPERTIES_BASE::~DIALOG_PAD_PROPERTIES_BASE() m_cbTopRight->Disconnect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( DIALOG_PAD_PROPERTIES_BASE::OnValuesChanged ), NULL, this ); m_cbBottomLeft->Disconnect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( DIALOG_PAD_PROPERTIES_BASE::OnValuesChanged ), NULL, this ); m_cbBottomRight->Disconnect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( DIALOG_PAD_PROPERTIES_BASE::OnValuesChanged ), NULL, this ); + m_sizeXCtrl->Disconnect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( DIALOG_PAD_PROPERTIES_BASE::OnValuesChanged ), NULL, this ); + m_sizeYCtrl->Disconnect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( DIALOG_PAD_PROPERTIES_BASE::OnValuesChanged ), NULL, this ); + m_orientation->Disconnect( wxEVT_COMMAND_COMBOBOX_SELECTED, wxCommandEventHandler( DIALOG_PAD_PROPERTIES_BASE::PadOrientEvent ), NULL, this ); + m_orientation->Disconnect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( DIALOG_PAD_PROPERTIES_BASE::PadOrientEvent ), NULL, this ); m_holeShapeCtrl->Disconnect( wxEVT_COMMAND_CHOICE_SELECTED, wxCommandEventHandler( DIALOG_PAD_PROPERTIES_BASE::OnDrillShapeSelected ), NULL, this ); m_holeXCtrl->Disconnect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( DIALOG_PAD_PROPERTIES_BASE::OnValuesChanged ), NULL, this ); m_holeYCtrl->Disconnect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( DIALOG_PAD_PROPERTIES_BASE::OnValuesChanged ), NULL, this ); + m_offsetShapeOpt->Disconnect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( DIALOG_PAD_PROPERTIES_BASE::OnOffsetCheckbox ), NULL, this ); + m_offsetXCtrl->Disconnect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( DIALOG_PAD_PROPERTIES_BASE::OnValuesChanged ), NULL, this ); + m_offsetYCtrl->Disconnect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( DIALOG_PAD_PROPERTIES_BASE::OnValuesChanged ), NULL, this ); + m_padToDieOpt->Disconnect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( DIALOG_PAD_PROPERTIES_BASE::OnPadToDieCheckbox ), NULL, this ); m_rbCopperLayersSel->Disconnect( wxEVT_COMMAND_CHOICE_SELECTED, wxCommandEventHandler( DIALOG_PAD_PROPERTIES_BASE::OnSetLayers ), NULL, this ); m_PadLayerAdhCmp->Disconnect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( DIALOG_PAD_PROPERTIES_BASE::OnSetLayers ), NULL, this ); m_PadLayerAdhCu->Disconnect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( DIALOG_PAD_PROPERTIES_BASE::OnSetLayers ), NULL, this ); @@ -822,11 +949,11 @@ DIALOG_PAD_PROPERTIES_BASE::~DIALOG_PAD_PROPERTIES_BASE() m_listCtrlPrimitives->Disconnect( wxEVT_LEFT_DCLICK, wxMouseEventHandler( DIALOG_PAD_PROPERTIES_BASE::onPrimitiveDClick ), NULL, this ); m_listCtrlPrimitives->Disconnect( wxEVT_COMMAND_LIST_ITEM_DESELECTED, wxListEventHandler( DIALOG_PAD_PROPERTIES_BASE::OnPrimitiveSelection ), NULL, this ); m_listCtrlPrimitives->Disconnect( wxEVT_COMMAND_LIST_ITEM_SELECTED, wxListEventHandler( DIALOG_PAD_PROPERTIES_BASE::OnPrimitiveSelection ), NULL, this ); - m_buttonDel->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_PAD_PROPERTIES_BASE::onDeletePrimitive ), NULL, this ); - m_buttonEditShape->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_PAD_PROPERTIES_BASE::onEditPrimitive ), NULL, this ); m_buttonAddShape->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_PAD_PROPERTIES_BASE::onAddPrimitive ), NULL, this ); + m_buttonEditShape->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_PAD_PROPERTIES_BASE::onEditPrimitive ), NULL, this ); m_buttonDup->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_PAD_PROPERTIES_BASE::onDuplicatePrimitive ), NULL, this ); m_buttonGeometry->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_PAD_PROPERTIES_BASE::onGeometryTransform ), NULL, this ); + m_buttonDel->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_PAD_PROPERTIES_BASE::onDeletePrimitive ), NULL, this ); m_cbShowPadOutline->Disconnect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( DIALOG_PAD_PROPERTIES_BASE::onChangePadMode ), NULL, this ); m_sdbSizerCancel->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_PAD_PROPERTIES_BASE::OnCancel ), NULL, this ); diff --git a/pcbnew/dialogs/dialog_pad_properties_base.fbp b/pcbnew/dialogs/dialog_pad_properties_base.fbp index 95b704e401..5b50d3ac30 100644 --- a/pcbnew/dialogs/dialog_pad_properties_base.fbp +++ b/pcbnew/dialogs/dialog_pad_properties_base.fbp @@ -45,7 +45,7 @@ -1,-1 DIALOG_PAD_PROPERTIES_BASE - 764,581 + -1,-1 wxDEFAULT_DIALOG_STYLE|wxRESIZE_BORDER DIALOG_SHIM; dialog_shim.h Pad Properties @@ -188,302 +188,35 @@ none 5 - wxALL|wxEXPAND + wxEXPAND|wxALL 0 m_LeftBoxSizer wxVERTICAL none - + 5 - wxBOTTOM|wxRIGHT|wxLEFT|wxEXPAND + wxEXPAND|wxBOTTOM 0 - - 3 + + wxBOTH - 1 + 1,4 0 - fgSizerShapeType + gbSizerCommon wxFLEX_GROWMODE_SPECIFIED none - 0 - 2 - - 3 - wxALIGN_CENTER_VERTICAL|wxLEFT|wxTOP - 0 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 1 - - 1 - - 0 - 0 - wxID_ANY - Pad number: - 0 - - 0 - - - 0 - - 1 - m_PadNumText - 1 - - - protected - 1 - - Resizable - 1 - - - - 0 - - - - - -1 - - - - 3 - wxEXPAND|wxTOP|wxRIGHT|wxLEFT - 0 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 1 - - 1 - - 0 - 0 - wxID_PADNUMCTRL - - 0 - - 0 - - 0 - - 1 - m_PadNumCtrl - 1 - - - protected - 1 - - Resizable - 1 - - - - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - - OnValuesChanged - - - + 0 + 5 - wxEXPAND - 1 - - 0 - protected - 0 - - - - 3 - wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT|wxTOP - 0 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 1 - - 1 - - 0 - 0 - wxID_ANY - Net name: - 0 - - 0 - - - 0 - - 1 - m_PadNameText - 1 - - - protected - 1 - - Resizable - 1 - - - - 0 - - - - - -1 - - - - 3 - wxTOP|wxLEFT|wxEXPAND - 0 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - NET_SELECTOR - 1 - - - 1 - - 0 - Dock - 0 - Left - 1 - - 1 - - 0 - 0 - wxID_ANY - #include <widgets/net_selector.h> - - 0 - - - 0 - - 1 - m_PadNetSelector - 1 - - - protected - 1 - - Resizable - - 1 - - ; forward_declare - 0 - - - - - - - - 5 - wxEXPAND - 1 - - 0 - protected - 0 - - - - 3 - wxALIGN_CENTER_VERTICAL|wxTOP|wxBOTTOM|wxLEFT - 0 + 1 + 0 + wxALIGN_CENTER_VERTICAL|wxALL + 0 + 1 1 1 @@ -521,7 +254,7 @@ 0 1 - m_staticText44 + m_padTypeLabel 1 @@ -541,10 +274,13 @@ -1 - - 3 - wxEXPAND|wxALL - 0 + + 5 + 5 + 1 + wxEXPAND|wxALIGN_CENTER_VERTICAL|wxTOP|wxBOTTOM|wxRIGHT + 0 + 1 1 1 @@ -606,19 +342,749 @@ PadTypeSelected - + 5 - wxEXPAND - 1 - - 0 + 1 + 0 + wxALIGN_CENTER_VERTICAL|wxBOTTOM|wxLEFT + 1 + 1 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + Pad number: + 0 + + 0 + + + 0 + + 1 + m_PadNumText + 1 + + protected - 0 + 1 + + Resizable + 1 + + + + 0 + + + + + -1 + + 5 + 5 + 1 + wxEXPAND|wxALIGN_CENTER_VERTICAL|wxBOTTOM|wxRIGHT + 1 + 1 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_PADNUMCTRL + + 0 + + 0 + + 0 + + 1 + m_PadNumCtrl + 1 + + + protected + 1 + + Resizable + 1 + + + + 0 + + + wxFILTER_NONE + wxDefaultValidator + + + + + + OnValuesChanged + + + + 5 + 1 + 0 + wxALIGN_CENTER_VERTICAL|wxBOTTOM|wxRIGHT|wxLEFT + 2 + 1 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + Net name: + 0 + + 0 + + + 0 + + 1 + m_PadNameText + 1 + + + protected + 1 + + Resizable + 1 + + + + 0 + + + + + -1 + + + + 5 + 5 + 1 + wxALIGN_CENTER_VERTICAL|wxBOTTOM|wxRIGHT|wxEXPAND + 2 + 1 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + NET_SELECTOR + 1 + + + 1 + + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + #include <widgets/net_selector.h> + + 0 + + + 0 + + 1 + m_PadNetSelector + 1 + + + protected + 1 + + Resizable + + 1 + + ; forward_declare + 0 + + + + + + + + 5 + 1 + 0 + wxALIGN_CENTER_VERTICAL|wxTOP|wxRIGHT|wxLEFT + 3 + 1 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + Position X: + 0 + + 0 + + + 0 + + 1 + m_posXLabel + 1 + + + protected + 1 + + Resizable + 1 + + + + 0 + + + + + -1 + + + + 5 + 1 + 1 + wxALIGN_CENTER_VERTICAL|wxEXPAND|wxTOP + 3 + 1 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + + 0 + + 0 + + 0 + + 1 + m_posXCtrl + 1 + + + protected + 1 + + Resizable + 1 + + + ; ; forward_declare + 0 + + + wxFILTER_NONE + wxDefaultValidator + + + + + + + + + 5 + 1 + 2 + wxALIGN_CENTER_VERTICAL|wxTOP|wxRIGHT + 3 + 1 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + mm + 0 + + 0 + + + 0 + + 1 + m_posXUnits + 1 + + + protected + 1 + + Resizable + 1 + + + + 0 + + + + + -1 + + + + 5 + 1 + 3 + wxALIGN_CENTER_VERTICAL|wxTOP|wxLEFT + 3 + 1 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + Y: + 0 + + 0 + + + 0 + + 1 + m_posYLabel + 1 + + + protected + 1 + + Resizable + 1 + + + + 0 + + + + + -1 + + + + 5 + 1 + 4 + wxALIGN_CENTER_VERTICAL|wxEXPAND|wxTOP + 3 + 1 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + + 0 + + 0 + + 0 + + 1 + m_posYCtrl + 1 + + + protected + 1 + + Resizable + 1 + + + ; ; forward_declare + 0 + + + wxFILTER_NONE + wxDefaultValidator + + + + + + + + + 5 + 1 + 5 + wxALIGN_CENTER_VERTICAL|wxTOP|wxRIGHT + 3 + 1 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + mm + 0 + + 0 + + + 0 + + 1 + m_posYUnits + 1 + + + protected + 1 + + Resizable + 1 + + + + 0 + + + + + -1 + + + + + + 5 + wxEXPAND + 1 + + 0 + protected + 0 + + + + 5 + wxEXPAND + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + + 0 + + + 0 + + 1 + m_staticline5 + 1 + + + protected + 1 + + Resizable + 1 + + wxLI_HORIZONTAL + ; ; forward_declare + 0 + + + + + + + + 5 + wxEXPAND + 1 + + 0 + protected + 0 + + + + 5 + wxEXPAND|wxTOP + 0 + + + bSizerShape + wxHORIZONTAL + none - 3 - wxALIGN_CENTER_VERTICAL|wxTOP|wxBOTTOM|wxLEFT + 5 + wxALIGN_CENTER_VERTICAL|wxBOTTOM|wxRIGHT|wxLEFT 0 1 @@ -648,7 +1114,7 @@ 0 0 wxID_ANY - Shape: + Pad shape: 0 0 @@ -657,7 +1123,7 @@ 0 1 - m_staticText45 + m_shapeLabel 1 @@ -668,7 +1134,7 @@ 1 - + ; ; forward_declare 0 @@ -679,8 +1145,8 @@ 3 - wxEXPAND|wxALL - 0 + wxEXPAND|wxALIGN_CENTER_VERTICAL|wxBOTTOM|wxRIGHT|wxLEFT + 1 1 1 @@ -742,20 +1208,1570 @@ OnPadShapeSelection - + + + + 25 + wxEXPAND|wxLEFT + 0 + + + bSizerShapeProps + wxVERTICAL + none + + + + 20 + wxEXPAND|wxLEFT + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + + 0 + + + 0 + + 1 + m_shapePropsBook + 1 + + + protected + 1 + + Resizable + 1 + + ; ; forward_declare + 0 + + + + + + a page + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + + 0 + + + 0 + + 1 + m_pageSimple + 1 + + + protected + 1 + + Resizable + 1 + + ; ; forward_declare + 0 + + + + wxTAB_TRAVERSAL + + + + a page + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + + 0 + + + 0 + + 1 + m_pageTrap + 1 + + + protected + 1 + + Resizable + 1 + + ; ; forward_declare + 0 + + + + wxTAB_TRAVERSAL + + 3 + wxBOTH + 1 + + 0 + + fgSizerTrapProps + wxFLEX_GROWMODE_SPECIFIED + protected + 0 + 0 + + 5 + wxALIGN_CENTER_VERTICAL|wxTOP + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + Trapezoid delta: + 0 + + 0 + + + 0 + + 1 + m_trapDeltaLabel + 1 + + + protected + 1 + + Resizable + 1 + + + + 0 + + + + + -1 + + + + 5 + wxEXPAND|wxALIGN_CENTER_VERTICAL|wxTOP|wxLEFT + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + + 0 + + 0 + + 0 + + 1 + m_trapDeltaCtrl + 1 + + + protected + 1 + + Resizable + 1 + + + ; ; forward_declare + 0 + + + wxFILTER_NONE + wxDefaultValidator + + + + + + OnValuesChanged + + + + 5 + wxALIGN_CENTER_VERTICAL|wxTOP|wxRIGHT + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + mm + 0 + + 0 + + + 0 + + 1 + m_trapDeltaUnits + 1 + + + protected + 1 + + Resizable + 1 + + + + 0 + + + + + -1 + + + + 5 + wxALIGN_CENTER_VERTICAL|wxTOP + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + Trapezoid axis: + 0 + + 0 + + + 0 + + 1 + m_trapAxisLabel + 1 + + + protected + 1 + + Resizable + 1 + + + + 0 + + + + + -1 + + + + 5 + wxEXPAND|wxALIGN_CENTER_VERTICAL|wxTOP|wxLEFT + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + "Horizontal" "Vertical" + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + + 0 + + + 0 + + 1 + m_trapAxisCtrl + 1 + + + protected + 1 + + Resizable + 0 + 1 + + + + 0 + + + wxFILTER_NONE + wxDefaultValidator + + + + + OnSetLayers + + + + + + + a page + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + + 0 + + + 0 + + 1 + m_pageRounding + 1 + + + protected + 1 + + Resizable + 1 + + ; ; forward_declare + 0 + + + + wxTAB_TRAVERSAL + + 3 + wxBOTH + 1 + + 0 + + fgSizerRoundingProps + wxFLEX_GROWMODE_SPECIFIED + protected + 0 + 0 + + 5 + wxALIGN_CENTER_VERTICAL|wxTOP|wxRIGHT + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + Corner size: + 0 + + 0 + + + 0 + + 1 + m_staticTextCornerSizeRatio + 1 + + + protected + 1 + + Resizable + 1 + + + + 0 + Corner radius in percent of the pad width. The width is the smaller value between size X and size Y. The max value is 50 percent. + + + + -1 + + + + 5 + wxEXPAND|wxALIGN_CENTER_VERTICAL|wxTOP|wxLEFT + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + + 0 + + 0 + + 0 + + 1 + m_tcCornerSizeRatio + 1 + + + protected + 1 + + Resizable + 1 + + + TEXT_CTRL_EVAL; widgets/text_ctrl_eval.h + 0 + + + wxFILTER_NONE + wxDefaultValidator + + + + + + onCornerSizePercentChange + + + + 5 + wxALIGN_CENTER_VERTICAL|wxTOP|wxRIGHT + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + % + 0 + + 0 + + + 0 + + 1 + m_staticTextCornerSizeRatioUnit + 1 + + + protected + 1 + + Resizable + 1 + + + + 0 + + + + + -1 + + + + 5 + wxALIGN_CENTER_VERTICAL|wxTOP|wxRIGHT + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + Corner radius: + 0 + + 0 + + + 0 + + 1 + m_cornerRadiusLabel + 1 + + + protected + 1 + + Resizable + 1 + + + + 0 + Corner radius. Can be no more than half pad width. The width is the smaller value between size X and size Y. Note: IPC norm gives a max value = 0.25mm. + + + + -1 + + + + 5 + wxEXPAND|wxALIGN_CENTER_VERTICAL|wxTOP|wxLEFT + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + + 0 + + + + 0 + + 1 + m_tcCornerRadius + 1 + + + protected + 1 + + Resizable + 1 + + + ; forward_declare + 0 + + + wxFILTER_NONE + wxDefaultValidator + + + + + + onCornerRadiusChange + + + + 5 + wxALIGN_CENTER_VERTICAL|wxTOP|wxRIGHT + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + mm + 0 + + 0 + + + 0 + + 1 + m_cornerRadiusUnits + 1 + + + protected + 1 + + Resizable + 1 + + + + 0 + + + + + -1 + + + + + + + a page + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + + 0 + + + 0 + -1,-1 + 1 + m_pageChamfer + 1 + + + protected + 1 + + Resizable + 1 + + ; ; forward_declare + 0 + + + + wxTAB_TRAVERSAL + + 3 + wxBOTH + 1 + + 0 + + fgSizerChamferProps + wxFLEX_GROWMODE_SPECIFIED + none + 0 + 0 + + 5 + wxALIGN_CENTER_VERTICAL|wxTOP|wxBOTTOM|wxRIGHT + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + Chamfer size: + 0 + + 0 + + + 0 + + 1 + m_staticTextChamferRatio + 1 + + + protected + 1 + + Resizable + 1 + + + + 0 + Chamfer size in percent of the pad width. The width is the smaller value between size X and size Y. The max value is 50 percent. + + + + -1 + + + + 5 + wxEXPAND|wxALIGN_CENTER_VERTICAL|wxTOP|wxBOTTOM|wxLEFT + 1 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + + 0 + + 0 + + 0 + + 1 + m_tcChamferRatio + 1 + + + protected + 1 + + Resizable + 1 + + + TEXT_CTRL_EVAL; widgets/text_ctrl_eval.h + 0 + + + wxFILTER_NONE + wxDefaultValidator + + + + + + onCornerSizePercentChange + + + + 5 + wxALIGN_CENTER_VERTICAL|wxTOP|wxBOTTOM|wxRIGHT + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + % + 0 + + 0 + + + 0 + + 1 + m_staticTextChamferRatioUnit + 1 + + + protected + 1 + + Resizable + 1 + + + + 0 + + + + + -1 + + + + 5 + wxTOP + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + Chamfer corners: + 0 + + 0 + + + 0 + + 1 + m_staticTextChamferCorner + 1 + + + protected + 1 + + Resizable + 1 + + + + 0 + Chamfered corners. The position is relative to a pad orientation 0 degree. + + + + -1 + + + + 5 + wxEXPAND|wxALL + 1 + + 2 + 6 + + gCornersSizer + none + 0 + 3 + + 5 + + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + Top left + + 0 + + + 0 + + 1 + m_cbTopLeft + 1 + + + protected + 1 + + Resizable + 1 + + + ; forward_declare + 0 + + + wxFILTER_NONE + wxDefaultValidator + + + + + OnValuesChanged + + + + 5 + + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + Top right + + 0 + + + 0 + + 1 + m_cbTopRight + 1 + + + protected + 1 + + Resizable + 1 + + + ; forward_declare + 0 + + + wxFILTER_NONE + wxDefaultValidator + + + + + OnValuesChanged + + + + 5 + + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + Bottom left + + 0 + + + 0 + + 1 + m_cbBottomLeft + 1 + + + protected + 1 + + Resizable + 1 + + + ; forward_declare + 0 + + + wxFILTER_NONE + wxDefaultValidator + + + + + OnValuesChanged + + + + 5 + + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + Bottom right + + 0 + + + 0 + + 1 + m_cbBottomRight + 1 + + + protected + 1 + + Resizable + 1 + + + ; forward_declare + 0 + + + wxFILTER_NONE + wxDefaultValidator + + + + + OnValuesChanged + + + + + + + + + + + 5 + wxEXPAND + 0 + + + wxBOTH + + + 0 + + gbSizerPadOrientation + wxFLEX_GROWMODE_SPECIFIED + none + 0 + 5 - wxEXPAND - 1 - - 0 - protected - 0 - - - - 3 - wxALIGN_CENTER_VERTICAL|wxTOP|wxLEFT - 0 + 1 + 0 + wxALL|wxALIGN_CENTER_VERTICAL + 0 + 1 1 1 @@ -784,379 +2800,7 @@ 0 0 wxID_ANY - Position X: - 0 - - 0 - - - 0 - - 1 - m_posXLabel - 1 - - - protected - 1 - - Resizable - 1 - - - - 0 - - - - - -1 - - - - 3 - wxEXPAND|wxTOP|wxRIGHT|wxLEFT - 0 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - 0 - - 0 - - 1 - m_posXCtrl - 1 - - - protected - 1 - - Resizable - 1 - - - ; ; forward_declare - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - - - - - 3 - wxALIGN_CENTER_VERTICAL|wxTOP|wxRIGHT - 0 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 1 - - 1 - - 0 - 0 - wxID_ANY - Inch - 0 - - 0 - - - 0 - - 1 - m_posXUnits - 1 - - - protected - 1 - - Resizable - 1 - - - - 0 - - - - - -1 - - - - 3 - wxALIGN_CENTER_VERTICAL|wxLEFT|wxTOP - 0 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 1 - - 1 - - 0 - 0 - wxID_ANY - Position Y: - 0 - - 0 - - - 0 - - 1 - m_posYLabel - 1 - - - protected - 1 - - Resizable - 1 - - - - 0 - - - - - -1 - - - - 3 - wxEXPAND|wxTOP|wxRIGHT|wxLEFT - 0 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - 0 - - 0 - - 1 - m_posYCtrl - 1 - - - protected - 1 - - Resizable - 1 - - - ; ; forward_declare - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - - - - - 3 - wxALIGN_CENTER_VERTICAL|wxTOP|wxRIGHT - 0 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 1 - - 1 - - 0 - 0 - wxID_ANY - Inch - 0 - - 0 - - - 0 - - 1 - m_posYUnits - 1 - - - protected - 1 - - Resizable - 1 - - - - 0 - - - - - -1 - - - - 3 - wxALIGN_CENTER_VERTICAL|wxLEFT|wxTOP - 0 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 1 - - 1 - - 0 - 0 - wxID_ANY - Size X: + Pad size X: 0 0 @@ -1185,10 +2829,13 @@ -1 - - 3 - wxEXPAND|wxTOP|wxRIGHT|wxLEFT - 0 + + 5 + 1 + 1 + wxTOP|wxBOTTOM|wxALIGN_CENTER_VERTICAL|wxEXPAND + 0 + 1 1 1 @@ -1234,7 +2881,7 @@ Resizable 1 - + -1,-1 ; ; forward_declare 0 @@ -1250,10 +2897,13 @@ OnValuesChanged - - 3 - wxALIGN_CENTER_VERTICAL|wxTOP|wxRIGHT - 0 + + 5 + 1 + 2 + wxTOP|wxBOTTOM|wxRIGHT|wxALIGN_CENTER_VERTICAL + 0 + 1 1 1 @@ -1282,7 +2932,7 @@ 0 0 wxID_ANY - Inch + mm 0 0 @@ -1311,10 +2961,13 @@ -1 - - 3 - wxALIGN_CENTER_VERTICAL|wxTOP|wxLEFT - 0 + + 5 + 1 + 3 + wxTOP|wxBOTTOM|wxLEFT|wxALIGN_CENTER_VERTICAL + 0 + 1 1 1 @@ -1343,7 +2996,7 @@ 0 0 wxID_ANY - Size Y: + Y: 0 0 @@ -1372,10 +3025,13 @@ -1 - - 3 - wxEXPAND|wxTOP|wxRIGHT|wxLEFT|wxALIGN_CENTER_VERTICAL - 0 + + 5 + 1 + 4 + wxTOP|wxBOTTOM|wxALIGN_CENTER_VERTICAL|wxEXPAND + 0 + 1 1 1 @@ -1437,10 +3093,13 @@ OnValuesChanged - - 3 - wxALIGN_CENTER_VERTICAL|wxTOP|wxRIGHT - 0 + + 5 + 1 + 5 + wxTOP|wxBOTTOM|wxRIGHT|wxALIGN_CENTER_VERTICAL + 0 + 1 1 1 @@ -1469,7 +3128,7 @@ 0 0 wxID_ANY - Inch + mm 0 0 @@ -1498,10 +3157,13 @@ -1 - - 3 - wxALIGN_CENTER_VERTICAL|wxTOP|wxLEFT - 0 + + 5 + 1 + 0 + wxALIGN_CENTER_VERTICAL|wxRIGHT|wxLEFT + 1 + 1 1 1 @@ -1530,7 +3192,7 @@ 0 0 wxID_ANY - Orientation: + Angle: 0 0 @@ -1548,7 +3210,7 @@ Resizable 1 - + -1,-1 0 @@ -1559,10 +3221,13 @@ -1 - - 3 - wxEXPAND|wxTOP|wxRIGHT|wxLEFT|wxALIGN_CENTER_VERTICAL - 0 + + 5 + 1 + 1 + wxALIGN_CENTER_VERTICAL|wxEXPAND + 1 + 1 1 1 @@ -1594,7 +3259,7 @@ wxID_ANY 0 - + -1,-1 0 @@ -1609,7 +3274,7 @@ Resizable -1 1 - + 100,-1 ; forward_declare 0 @@ -1626,10 +3291,13 @@ PadOrientEvent - - 3 - wxALIGN_CENTER_VERTICAL|wxTOP|wxRIGHT - 0 + + 5 + 1 + 2 + wxALIGN_CENTER_VERTICAL|wxRIGHT + 1 + 1 1 1 @@ -1667,7 +3335,7 @@ 0 1 - m_staticText491 + m_orientationUnits 1 @@ -1687,9 +3355,871 @@ -1 + + + + 5 + wxEXPAND + 1 + + 0 + protected + 0 + + + + 5 + wxEXPAND + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + + 0 + + + 0 + + 1 + m_staticline6 + 1 + + + protected + 1 + + Resizable + 1 + + wxLI_HORIZONTAL + ; ; forward_declare + 0 + + + + + + + + 5 + wxEXPAND + 1 + + 5 + protected + 0 + + + + 5 + wxEXPAND + 0 + + + wxBOTH + + + 0 + + gbSizerHole + wxFLEX_GROWMODE_SPECIFIED + none + 0 + + 5 + 1 + 0 + wxALL + 0 + 1 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + Hole shape: + 0 + + 0 + + + 0 + + 1 + m_holeShapeLabel + 1 + + + protected + 1 + + Resizable + 1 + + + + 0 + + + + + -1 + + + + 5 + 5 + 1 + wxEXPAND|wxTOP|wxBOTTOM|wxRIGHT + 0 + 1 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + "Circular" "Oval" + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + + 0 + + + 0 + + 1 + m_holeShapeCtrl + 1 + + + protected + 1 + + Resizable + 0 + 1 + + + + 0 + + + wxFILTER_NONE + wxDefaultValidator + + + + + OnDrillShapeSelected + + + + 5 + 1 + 0 + wxALIGN_CENTER_VERTICAL|wxTOP|wxBOTTOM|wxLEFT + 1 + 1 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + Hole size X: + 0 + + 0 + + + 0 + + 1 + m_holeXLabel + 1 + + + protected + 1 + + Resizable + 1 + + + + 0 + + + + + -1 + + + + 5 + 1 + 1 + wxALIGN_CENTER_VERTICAL + 1 + 1 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + + 0 + + 0 + + 0 + + 1 + m_holeXCtrl + 1 + + + protected + 1 + + Resizable + 1 + + + ; ; forward_declare + 0 + + + wxFILTER_NONE + wxDefaultValidator + + + + + + OnValuesChanged + + + + 5 + 1 + 2 + wxALIGN_CENTER_VERTICAL|wxTOP|wxBOTTOM|wxRIGHT + 1 + 1 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + mm + 0 + + 0 + + + 0 + + 1 + m_holeXUnits + 1 + + + protected + 1 + + Resizable + 1 + + + + 0 + + + + + -1 + + + + 5 + 1 + 3 + wxALIGN_CENTER_VERTICAL|wxTOP|wxBOTTOM|wxLEFT + 1 + 1 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + Y: + 0 + + 0 + + + 0 + + 1 + m_holeYLabel + 1 + + + protected + 1 + + Resizable + 1 + + + + 0 + + + + + -1 + + + + 5 + 1 + 4 + wxALIGN_CENTER_VERTICAL + 1 + 1 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + + 0 + + 0 + + 0 + + 1 + m_holeYCtrl + 1 + + + protected + 1 + + Resizable + 1 + + + ; ; forward_declare + 0 + + + wxFILTER_NONE + wxDefaultValidator + + + + + + OnValuesChanged + + + + 5 + 1 + 5 + wxALIGN_CENTER_VERTICAL|wxTOP|wxBOTTOM|wxRIGHT + 1 + 1 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + mm + 0 + + 0 + + + 0 + + 1 + m_holeYUnits + 1 + + + protected + 1 + + Resizable + 1 + + + + 0 + + + + + -1 + + + + + + 5 + wxEXPAND + 1 + + 0 + protected + 0 + + + + 5 + wxEXPAND + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + + 0 + + + 0 + + 1 + m_staticline7 + 1 + + + protected + 1 + + Resizable + 1 + + wxLI_HORIZONTAL + ; ; forward_declare + 0 + + + + + + + + 5 + wxEXPAND + 1 + + 0 + protected + 0 + + + + 5 + wxEXPAND + 0 + + + bSizer35 + wxHORIZONTAL + none + + 5 + wxLEFT + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + Offset shape from hole + + 0 + + + 0 + + 1 + m_offsetShapeOpt + 1 + + + protected + 1 + + Resizable + 1 + + + ; ; forward_declare + 0 + + + wxFILTER_NONE + wxDefaultValidator + + + + + OnOffsetCheckbox + + + + 5 + wxRIGHT + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + : + 0 + + 0 + + + 0 + + 1 + m_offsetShapeOptLabel + 1 + + + protected + 1 + + Resizable + 1 + + + ; ; forward_declare + 0 + + + + + -1 + + + + + + 5 + wxEXPAND + 0 + + 3 + protected + 0 + + + + 25 + wxEXPAND|wxLEFT + 0 + + 6 + wxBOTH + 1,4 + + 0 + + m_offsetCtrls + wxFLEX_GROWMODE_SPECIFIED + protected + 0 + 0 - 3 - wxALIGN_CENTER_VERTICAL|wxLEFT + 5 + wxALIGN_CENTER_VERTICAL|wxBOTTOM|wxLEFT 0 1 @@ -1719,7 +4249,7 @@ 0 0 wxID_ANY - Shape offset X: + X: 0 0 @@ -1749,8 +4279,8 @@ - 3 - wxEXPAND|wxRIGHT|wxLEFT + 5 + wxEXPAND|wxALIGN_CENTER_VERTICAL|wxBOTTOM 0 1 @@ -1814,8 +4344,8 @@ - 3 - wxALIGN_CENTER_VERTICAL|wxRIGHT + 5 + wxALIGN_CENTER_VERTICAL|wxBOTTOM|wxRIGHT 0 1 @@ -1845,7 +4375,7 @@ 0 0 wxID_ANY - Inch + mm 0 0 @@ -1875,8 +4405,8 @@ - 3 - wxALIGN_CENTER_VERTICAL|wxLEFT|wxTOP + 5 + wxALIGN_CENTER_VERTICAL|wxBOTTOM|wxLEFT 0 1 @@ -1906,7 +4436,7 @@ 0 0 wxID_ANY - Shape offset Y: + Y: 0 0 @@ -1936,8 +4466,8 @@ - 3 - wxEXPAND|wxTOP|wxRIGHT|wxLEFT + 5 + wxEXPAND|wxALIGN_CENTER_VERTICAL|wxBOTTOM 0 1 @@ -2001,8 +4531,8 @@ - 3 - wxALIGN_CENTER_VERTICAL|wxTOP|wxRIGHT + 5 + wxALIGN_CENTER_VERTICAL|wxBOTTOM|wxRIGHT 0 1 @@ -2032,7 +4562,7 @@ 0 0 wxID_ANY - Inch + mm 0 0 @@ -2061,1874 +4591,159 @@ -1 - - 3 - wxTOP|wxLEFT|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 1 - - 1 - - 0 - 0 - wxID_ANY - Trapezoid delta: - 0 - - 0 - - - 0 - - 1 - m_trapDeltaLabel - 1 - - - protected - 1 - - Resizable - 1 - - - - 0 - - - - - -1 - - - - 3 - wxEXPAND|wxTOP|wxRIGHT|wxLEFT|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - 0 - - 0 - - 1 - m_trapDeltaCtrl - 1 - - - protected - 1 - - Resizable - 1 - - - ; ; forward_declare - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - - OnValuesChanged - - - - 3 - wxALIGN_CENTER_VERTICAL|wxTOP|wxRIGHT - 0 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 1 - - 1 - - 0 - 0 - wxID_ANY - Inch - 0 - - 0 - - - 0 - - 1 - m_trapDeltaUnits - 1 - - - protected - 1 - - Resizable - 1 - - - - 0 - - - - - -1 - - - - 3 - wxALIGN_CENTER_VERTICAL|wxTOP|wxLEFT - 0 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 1 - - 1 - - 0 - 0 - wxID_ANY - Trapezoid axis: - 0 - - 0 - - - 0 - - 1 - m_trapAxisLabel - 1 - - - protected - 1 - - Resizable - 1 - - - - 0 - - - - - -1 - - - - 3 - wxEXPAND|wxTOP|wxRIGHT|wxLEFT|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - "Horizontal" "Vertical" - 1 - - 1 - 0 - Dock - 0 - Left - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - - 0 - - 1 - m_trapAxisCtrl - 1 - - - protected - 1 - - Resizable - 0 - 1 - - - - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - OnSetLayers - - - - 15 - wxEXPAND|wxTOP - 1 - - 0 - protected - 0 - - - - 3 - wxALIGN_CENTER_VERTICAL|wxTOP|wxRIGHT|wxLEFT - 0 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 1 - - 1 - - 0 - 0 - wxID_ANY - Corner size: - 0 - - 0 - - - 0 - - 1 - m_staticTextCornerSizeRatio - 1 - - - protected - 1 - - Resizable - 1 - - - - 0 - Corner radius in percent of the pad width. The width is the smaller value between size X and size Y. The max value is 50 percent. - - - - -1 - - - - 3 - wxEXPAND|wxALIGN_CENTER_VERTICAL|wxTOP|wxRIGHT|wxLEFT - 0 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - 0 - - 0 - - 1 - m_tcCornerSizeRatio - 1 - - - protected - 1 - - Resizable - 1 - - - TEXT_CTRL_EVAL; widgets/text_ctrl_eval.h - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - - onCornerSizePercentChange - - - - 3 - wxALIGN_CENTER_VERTICAL|wxTOP|wxRIGHT - 0 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 1 - - 1 - - 0 - 0 - wxID_ANY - % - 0 - - 0 - - - 0 - - 1 - m_staticTextCornerSizeRatioUnit - 1 - - - protected - 1 - - Resizable - 1 - - - - 0 - - - - - -1 - - - - 3 - wxALIGN_CENTER_VERTICAL|wxTOP|wxRIGHT|wxLEFT - 0 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 1 - - 1 - - 0 - 0 - wxID_ANY - Corner radius: - 0 - - 0 - - - 0 - - 1 - m_cornerRadiusLabel - 1 - - - protected - 1 - - Resizable - 1 - - - - 0 - Corner radius. Can be no more than half pad width. The width is the smaller value between size X and size Y. Note: IPC norm gives a max value = 0.25mm. - - - - -1 - - - - 3 - wxEXPAND|wxTOP|wxRIGHT|wxLEFT|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - - - 0 - - 1 - m_tcCornerRadius - 1 - - - protected - 1 - - Resizable - 1 - - - ; forward_declare - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - - onCornerRadiusChange - - - - 3 - wxALIGN_CENTER_VERTICAL|wxTOP|wxRIGHT - 0 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 1 - - 1 - - 0 - 0 - wxID_ANY - unit - 0 - - 0 - - - 0 - - 1 - m_cornerRadiusUnits - 1 - - - protected - 1 - - Resizable - 1 - - - - 0 - - - - - -1 - - - - 3 - wxALIGN_CENTER_VERTICAL|wxALL - 0 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 1 - - 1 - - 0 - 0 - wxID_ANY - Chamfer size: - 0 - - 0 - - - 0 - - 1 - m_staticTextChamferRatio - 1 - - - protected - 1 - - Resizable - 1 - - - - 0 - Chamfer size in percent of the pad width. The width is the smaller value between size X and size Y. The max value is 50 percent. - - - - -1 - - - - 3 - wxEXPAND|wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - 0 - - 0 - - 1 - m_tcChamferRatio - 1 - - - protected - 1 - - Resizable - 1 - - - TEXT_CTRL_EVAL; widgets/text_ctrl_eval.h - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - - onCornerSizePercentChange - - - - 5 - wxALIGN_CENTER_VERTICAL|wxTOP|wxBOTTOM|wxRIGHT - 0 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 1 - - 1 - - 0 - 0 - wxID_ANY - % - 0 - - 0 - - - 0 - - 1 - m_staticTextChamferRatioUnit - 1 - - - protected - 1 - - Resizable - 1 - - - - 0 - - - - - -1 - - - - 3 - wxALIGN_CENTER_VERTICAL|wxRIGHT|wxLEFT - 0 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 1 - - 1 - - 0 - 0 - wxID_ANY - Chamfers: - 0 - - 0 - - - 0 - - 1 - m_staticTextChamferCorner - 1 - - - protected - 1 - - Resizable - 1 - - - - 0 - Chamfered corners. The position is relative to a pad orientation 0 degree. - - - - -1 - - - - 3 - wxEXPAND|wxTOP|wxLEFT - 1 - - 2 - 6 - - gSizer1 - none - 0 - 3 - - 5 - - 0 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 1 - 1 - - 1 - 0 - Dock - 0 - Left - 1 - - 1 - - 0 - 0 - wxID_ANY - Top left - - 0 - - - 0 - - 1 - m_cbTopLeft - 1 - - - protected - 1 - - Resizable - 1 - - - ; forward_declare - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - OnValuesChanged - - - - 5 - - 0 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 1 - - 1 - - 0 - 0 - wxID_ANY - Top right - - 0 - - - 0 - - 1 - m_cbTopRight - 1 - - - protected - 1 - - Resizable - 1 - - - ; forward_declare - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - OnValuesChanged - - - - 5 - - 0 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 1 - - 1 - - 0 - 0 - wxID_ANY - Bottom left - - 0 - - - 0 - - 1 - m_cbBottomLeft - 1 - - - protected - 1 - - Resizable - 1 - - - ; forward_declare - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - OnValuesChanged - - - - 5 - - 0 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 1 - - 1 - - 0 - 0 - wxID_ANY - Bottom right - - 0 - - - 0 - - 1 - m_cbBottomRight - 1 - - - protected - 1 - - Resizable - 1 - - - ; forward_declare - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - OnValuesChanged - - - - - - - - 3 - wxEXPAND|wxALL - 0 - - - m_middleBoxSizer - wxVERTICAL - protected - + 5 wxEXPAND 0 - + 3 wxBOTH 1 0 - fgSizerGeometry + fgSizerPadToDie wxFLEX_GROWMODE_SPECIFIED none 14 0 - + 5 - wxALIGN_CENTER_VERTICAL|wxTOP|wxLEFT + wxEXPAND|wxRIGHT 0 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 1 - - 1 - - 0 - 0 - wxID_ANY - Hole shape: - 0 - - 0 - - - 0 + - 1 - m_holeShapeLabel - 1 - - - protected - 1 - - Resizable - 1 - - - - 0 - - - - - -1 - - - - 5 - wxALIGN_CENTER_VERTICAL|wxEXPAND|wxLEFT|wxTOP - 0 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - "Circular" "Oval" - 1 - - 1 - 0 - Dock - 0 - Left - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - - 0 - - 1 - m_holeShapeCtrl - 1 - - - protected - 1 - - Resizable - 0 - 1 - - - - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - OnDrillShapeSelected - - - - 5 - wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT|wxTOP - 0 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - 0 - - - 0 - - 1 - m_staticText51 - 1 - - - protected - 1 - - Resizable - 1 - - - - 0 - - - - - -1 - - - - 5 - wxALIGN_CENTER_VERTICAL|wxLEFT|wxTOP - 0 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 1 - - 1 - - 0 - 0 - wxID_ANY - Hole size X: - 0 - - 0 - - - 0 - - 1 - m_holeXLabel - 1 - - - protected - 1 - - Resizable - 1 - - - - 0 - - - - - -1 - - - - 5 - wxEXPAND|wxLEFT|wxTOP - 0 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - 0 - - 0 - - 1 - m_holeXCtrl - 1 - - - protected - 1 - - Resizable - 1 - - - ; ; forward_declare - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - - OnValuesChanged - - - - 5 - wxALIGN_CENTER_VERTICAL|wxTOP|wxRIGHT - 0 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 1 - - 1 - - 0 - 0 - wxID_ANY - Inch - 0 - - 0 - - - 0 - - 1 - m_holeXUnits - 1 - - - protected - 1 - - Resizable - 1 - - - - 0 - - - - - -1 - - - - 5 - wxALIGN_CENTER_VERTICAL|wxTOP|wxLEFT - 0 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 1 - - 1 - - 0 - 0 - wxID_ANY - Hole size Y: - 0 - - 0 - - - 0 - - 1 - m_holeYLabel - 1 - - - protected - 1 - - Resizable - 1 - - - - 0 - - - - - -1 - - - - 5 - wxEXPAND|wxTOP|wxLEFT|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - 0 - - 0 - - 1 - m_holeYCtrl - 1 - - - protected - 1 - - Resizable - 1 - - - ; ; forward_declare - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - - OnValuesChanged - - - - 5 - wxALIGN_CENTER_VERTICAL|wxTOP|wxRIGHT - 0 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 1 - - 1 - - 0 - 0 - wxID_ANY - Inch - 0 - - 0 - - - 0 - - 1 - m_holeYUnits - 1 - - - protected - 1 - - Resizable - 1 - - - - 0 - - - - - -1 - - - - 5 - wxALIGN_CENTER_VERTICAL|wxTOP|wxLEFT - 0 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 1 - - 1 - - 0 - 0 - wxID_ANY - Pad to die: - 0 - - 0 - - - 0 - - 1 - m_padToDieLabel - 1 - - - protected - 1 - - Resizable - 1 - - - - 0 - Wire length from pad to die on chip ( used to calculate actual track length) - - - - -1 + bSizer34 + wxHORIZONTAL + none + + 5 + wxALIGN_CENTER_VERTICAL|wxTOP|wxLEFT + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + Specify pad to die length + + 0 + + + 0 + + 1 + m_padToDieOpt + 1 + + + protected + 1 + + Resizable + 1 + + + ; ; forward_declare + 0 + + + wxFILTER_NONE + wxDefaultValidator + + + + + OnPadToDieCheckbox + + + + 5 + wxALIGN_CENTER_VERTICAL|wxTOP|wxRIGHT + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + : + 0 + + 0 + + + 0 + + 1 + m_padToDieLabel + 1 + + + protected + 1 + + Resizable + 1 + + + ; ; forward_declare + 0 + + + + + -1 + + @@ -3996,7 +4811,7 @@ - 3 + 5 wxALIGN_CENTER_VERTICAL|wxTOP|wxRIGHT 0 @@ -4027,7 +4842,7 @@ 0 0 wxID_ANY - Inch + mm 0 0 @@ -4058,6 +4873,17 @@ + + + + 3 + wxEXPAND|wxALL + 0 + + + m_middleBoxSizer + wxVERTICAL + protected 5 wxLEFT|wxRIGHT|wxTOP|wxEXPAND @@ -5176,6 +6002,16 @@ -1 + + 5 + wxEXPAND + 0 + + 2 + protected + 0 + + 5 wxEXPAND|wxBOTTOM|wxRIGHT|wxLEFT @@ -5314,11 +6150,11 @@ bSizerClearance wxVERTICAL none - + 5 wxALL|wxEXPAND 0 - + wxID_ANY Clearances @@ -6272,11 +7108,11 @@ - + 5 wxEXPAND|wxTOP|wxBOTTOM|wxRIGHT 1 - + 1 1 1 @@ -6328,7 +7164,7 @@ OnUpdateUINonCopperWarning - + a page 0 @@ -6512,7 +7348,7 @@ - + a page 0 @@ -7366,11 +8202,11 @@ - + Custom Shape Primitives 0 - + 1 1 1 @@ -7421,136 +8257,147 @@ wxTAB_TRAVERSAL - + m_bSizerPanelPrimitives wxVERTICAL protected - - 5 - wxALL|wxALIGN_CENTER_HORIZONTAL + + 3 + wxEXPAND|wxBOTTOM 0 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 1 - - 1 - ,93,92,-1,70,0 - 0 - 0 - wxID_ANY - Primitives list - 0 - - 0 - - - 0 + - 1 - m_staticTextPrimitivesList - 1 - - - protected - 1 - - Resizable - 1 - - - - 0 - - - - - -1 + bSizerAboveList + wxHORIZONTAL + none + + 5 + wxALIGN_CENTER_HORIZONTAL|wxEXPAND|wxTOP|wxRIGHT|wxLEFT|wxALIGN_CENTER_VERTICAL + 1 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + ,90,92,-1,70,0 + 0 + 0 + wxID_ANY + Primitives list: + 0 + + 0 + + + 0 + + 1 + m_staticTextPrimitivesList + 1 + + + protected + 1 + + Resizable + 1 + + + + 0 + + + + + -1 + + + + 7 + wxALIGN_CENTER_HORIZONTAL|wxEXPAND|wxALIGN_BOTTOM|wxTOP|wxRIGHT|wxLEFT + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + ,93,90,11,70,0 + 0 + 0 + wxID_ANY + Note: coordinates are relative to anchor pad, orientation 0. + 0 + + 0 + + + 0 + + 1 + m_staticTextPrimitiveListWarning + 1 + + + protected + 1 + + Resizable + 1 + + + + 0 + + + + + -1 + + 5 - wxALL|wxALIGN_CENTER_HORIZONTAL - 0 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 1 - - 1 - ,90,92,-1,70,0 - 0 - 0 - wxID_ANY - Coordinates are relative to anchor pad, orientation 0 - 0 - - 0 - - - 0 - - 1 - m_staticTextPrimitiveListWarning - 1 - - - protected - 1 - - Resizable - 1 - - - - 0 - - - - - -1 - - - - 5 - wxALL|wxEXPAND + wxEXPAND|wxBOTTOM|wxRIGHT|wxLEFT 1 1 @@ -7613,20 +8460,20 @@ OnPrimitiveSelection - + 5 - wxALIGN_CENTER_HORIZONTAL + wxALIGN_CENTER_HORIZONTAL|wxEXPAND 0 - + bSizerButtons wxVERTICAL none - + 5 - wxALIGN_CENTER_HORIZONTAL + wxALIGN_CENTER_HORIZONTAL|wxEXPAND 0 - + bSizerButtonsUpper wxHORIZONTAL @@ -7668,7 +8515,7 @@ 0 0 wxID_ANY - Delete Primitive + Add Primitive 0 @@ -7678,7 +8525,7 @@ 0 1 - m_buttonDel + m_buttonAddShape 1 @@ -7701,7 +8548,7 @@ - onDeletePrimitive + onAddPrimitive @@ -7777,79 +8624,6 @@ onEditPrimitive - - 5 - wxALL - 0 - - 1 - 1 - 1 - 1 - - - - - - - - - 1 - 0 - 1 - - 1 - - 0 - 0 - - Dock - 0 - Left - 1 - - 1 - - - 0 - 0 - wxID_ANY - Add Primitive - - 0 - - 0 - - - 0 - - 1 - m_buttonAddShape - 1 - - - protected - 1 - - - - Resizable - 1 - - - - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - onAddPrimitive - - 5 wxALL @@ -7996,6 +8770,89 @@ onGeometryTransform + + 5 + wxEXPAND + 1 + + 0 + protected + 0 + + + + 5 + wxALL + 0 + + 1 + 1 + 1 + 1 + + + + + + + + + 1 + 0 + 1 + + 1 + + 0 + 0 + + Dock + 0 + Left + 1 + + 1 + + + 0 + 0 + wxID_ANY + Delete Primitive + + 0 + + 0 + + + 0 + + 1 + m_buttonDel + 1 + + + protected + 1 + + + + Resizable + 1 + + + + 0 + + + wxFILTER_NONE + wxDefaultValidator + + + + + onDeletePrimitive + + diff --git a/pcbnew/dialogs/dialog_pad_properties_base.h b/pcbnew/dialogs/dialog_pad_properties_base.h index 4b0da196c8..790c9c04f7 100644 --- a/pcbnew/dialogs/dialog_pad_properties_base.h +++ b/pcbnew/dialogs/dialog_pad_properties_base.h @@ -20,25 +20,26 @@ class WX_GRID; #include #include #include +#include #include #include -#include -#include -#include +#include +#include #include +#include +#include +#include +#include #include #include #include #include #include -#include -#include #include #include #include #include #include -#include #include #include #include @@ -62,46 +63,39 @@ class DIALOG_PAD_PROPERTIES_BASE : public DIALOG_SHIM wxNotebook* m_notebook; wxPanel* m_panelGeneral; + wxStaticText* m_padTypeLabel; + wxChoice* m_PadType; wxStaticText* m_PadNumText; wxTextCtrl* m_PadNumCtrl; wxStaticText* m_PadNameText; NET_SELECTOR* m_PadNetSelector; - wxStaticText* m_staticText44; - wxChoice* m_PadType; - wxStaticText* m_staticText45; - wxChoice* m_PadShape; wxStaticText* m_posXLabel; wxTextCtrl* m_posXCtrl; wxStaticText* m_posXUnits; wxStaticText* m_posYLabel; wxTextCtrl* m_posYCtrl; wxStaticText* m_posYUnits; - wxStaticText* m_sizeXLabel; - wxTextCtrl* m_sizeXCtrl; - wxStaticText* m_sizeXUnits; - wxStaticText* m_sizeYLabel; - wxTextCtrl* m_sizeYCtrl; - wxStaticText* m_sizeYUnits; - wxStaticText* m_PadOrientText; - wxComboBox* m_orientation; - wxStaticText* m_staticText491; - wxStaticText* m_offsetXLabel; - wxTextCtrl* m_offsetXCtrl; - wxStaticText* m_offsetXUnits; - wxStaticText* m_offsetYLabel; - wxTextCtrl* m_offsetYCtrl; - wxStaticText* m_offsetYUnits; + wxStaticLine* m_staticline5; + wxStaticText* m_shapeLabel; + wxChoice* m_PadShape; + wxSimplebook* m_shapePropsBook; + wxPanel* m_pageSimple; + wxPanel* m_pageTrap; + wxFlexGridSizer* fgSizerTrapProps; wxStaticText* m_trapDeltaLabel; wxTextCtrl* m_trapDeltaCtrl; wxStaticText* m_trapDeltaUnits; wxStaticText* m_trapAxisLabel; wxChoice* m_trapAxisCtrl; + wxPanel* m_pageRounding; + wxFlexGridSizer* fgSizerRoundingProps; wxStaticText* m_staticTextCornerSizeRatio; TEXT_CTRL_EVAL* m_tcCornerSizeRatio; wxStaticText* m_staticTextCornerSizeRatioUnit; wxStaticText* m_cornerRadiusLabel; wxTextCtrl* m_tcCornerRadius; wxStaticText* m_cornerRadiusUnits; + wxPanel* m_pageChamfer; wxStaticText* m_staticTextChamferRatio; TEXT_CTRL_EVAL* m_tcChamferRatio; wxStaticText* m_staticTextChamferRatioUnit; @@ -110,19 +104,39 @@ class DIALOG_PAD_PROPERTIES_BASE : public DIALOG_SHIM wxCheckBox* m_cbTopRight; wxCheckBox* m_cbBottomLeft; wxCheckBox* m_cbBottomRight; - wxBoxSizer* m_middleBoxSizer; + wxStaticText* m_sizeXLabel; + wxTextCtrl* m_sizeXCtrl; + wxStaticText* m_sizeXUnits; + wxStaticText* m_sizeYLabel; + wxTextCtrl* m_sizeYCtrl; + wxStaticText* m_sizeYUnits; + wxStaticText* m_PadOrientText; + wxComboBox* m_orientation; + wxStaticText* m_orientationUnits; + wxStaticLine* m_staticline6; wxStaticText* m_holeShapeLabel; wxChoice* m_holeShapeCtrl; - wxStaticText* m_staticText51; wxStaticText* m_holeXLabel; wxTextCtrl* m_holeXCtrl; wxStaticText* m_holeXUnits; wxStaticText* m_holeYLabel; wxTextCtrl* m_holeYCtrl; wxStaticText* m_holeYUnits; + wxStaticLine* m_staticline7; + wxCheckBox* m_offsetShapeOpt; + wxStaticText* m_offsetShapeOptLabel; + wxFlexGridSizer* m_offsetCtrls; + wxStaticText* m_offsetXLabel; + wxTextCtrl* m_offsetXCtrl; + wxStaticText* m_offsetXUnits; + wxStaticText* m_offsetYLabel; + wxTextCtrl* m_offsetYCtrl; + wxStaticText* m_offsetYUnits; + wxCheckBox* m_padToDieOpt; wxStaticText* m_padToDieLabel; wxTextCtrl* m_padToDieCtrl; wxStaticText* m_padToDieUnits; + wxBoxSizer* m_middleBoxSizer; wxBoxSizer* m_FlippedWarningSizer; wxStaticBitmap* m_FlippedWarningIcon; wxStaticText* m_staticText86; @@ -178,11 +192,11 @@ class DIALOG_PAD_PROPERTIES_BASE : public DIALOG_SHIM wxStaticText* m_staticTextPrimitivesList; wxStaticText* m_staticTextPrimitiveListWarning; wxListView* m_listCtrlPrimitives; - wxButton* m_buttonDel; - wxButton* m_buttonEditShape; wxButton* m_buttonAddShape; + wxButton* m_buttonEditShape; wxButton* m_buttonDup; wxButton* m_buttonGeometry; + wxButton* m_buttonDel; wxStaticText* m_parentInfoLine1; wxStaticText* m_parentInfoLine2; PCB_DRAW_PANEL_GAL* m_panelShowPadGal; @@ -196,29 +210,31 @@ class DIALOG_PAD_PROPERTIES_BASE : public DIALOG_SHIM // Virtual event handlers, overide them in your derived class virtual void OnInitDialog( wxInitDialogEvent& event ) { event.Skip(); } virtual void OnUpdateUI( wxUpdateUIEvent& event ) { event.Skip(); } - virtual void OnValuesChanged( wxCommandEvent& event ) { event.Skip(); } virtual void PadTypeSelected( wxCommandEvent& event ) { event.Skip(); } + virtual void OnValuesChanged( wxCommandEvent& event ) { event.Skip(); } virtual void OnPadShapeSelection( wxCommandEvent& event ) { event.Skip(); } - virtual void PadOrientEvent( wxCommandEvent& event ) { event.Skip(); } virtual void OnSetLayers( wxCommandEvent& event ) { event.Skip(); } virtual void onCornerSizePercentChange( wxCommandEvent& event ) { event.Skip(); } virtual void onCornerRadiusChange( wxCommandEvent& event ) { event.Skip(); } + virtual void PadOrientEvent( wxCommandEvent& event ) { event.Skip(); } virtual void OnDrillShapeSelected( wxCommandEvent& event ) { event.Skip(); } + virtual void OnOffsetCheckbox( wxCommandEvent& event ) { event.Skip(); } + virtual void OnPadToDieCheckbox( wxCommandEvent& event ) { event.Skip(); } virtual void OnUpdateUINonCopperWarning( wxUpdateUIEvent& event ) { event.Skip(); } virtual void onPrimitiveDClick( wxMouseEvent& event ) { event.Skip(); } virtual void OnPrimitiveSelection( wxListEvent& event ) { event.Skip(); } - virtual void onDeletePrimitive( wxCommandEvent& event ) { event.Skip(); } - virtual void onEditPrimitive( wxCommandEvent& event ) { event.Skip(); } virtual void onAddPrimitive( wxCommandEvent& event ) { event.Skip(); } + virtual void onEditPrimitive( wxCommandEvent& event ) { event.Skip(); } virtual void onDuplicatePrimitive( wxCommandEvent& event ) { event.Skip(); } virtual void onGeometryTransform( wxCommandEvent& event ) { event.Skip(); } + virtual void onDeletePrimitive( wxCommandEvent& event ) { event.Skip(); } virtual void onChangePadMode( wxCommandEvent& event ) { event.Skip(); } virtual void OnCancel( wxCommandEvent& event ) { event.Skip(); } public: - 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( 764,581 ), long style = wxDEFAULT_DIALOG_STYLE|wxRESIZE_BORDER ); + 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 ); ~DIALOG_PAD_PROPERTIES_BASE(); };