Browse Source

Expose pad type in property system.

Also corrects the spelling of some enum items so they match the
menus (otherwise folks will never be able to figure out what they
are).
pull/16/head
Jeff Young 5 years ago
parent
commit
3e366a901f
  1. 38
      pcbnew/class_pad.cpp
  2. 12
      pcbnew/class_track.cpp
  3. 5
      pcbnew/pcb_expr_evaluator.cpp

38
pcbnew/class_pad.cpp

@ -1346,28 +1346,38 @@ static struct PAD_DESC
{
PAD_DESC()
{
ENUM_MAP<PAD_ATTR_T>::Instance()
.Map( PAD_ATTRIB_STANDARD, _( "Through-hole" ) )
.Map( PAD_ATTRIB_SMD, _( "SMD" ) )
.Map( PAD_ATTRIB_CONN, _( "Edge connector" ) )
.Map( PAD_ATTRIB_HOLE_NOT_PLATED, _( "NPTH, mechanical" ) );
ENUM_MAP<PAD_SHAPE_T>::Instance()
.Map( PAD_SHAPE_CIRCLE, _( "Circle" ) )
.Map( PAD_SHAPE_RECT, _( "Rectangle" ) )
.Map( PAD_SHAPE_OVAL, _( "Oval" ) )
.Map( PAD_SHAPE_TRAPEZOID, _( "Trapezoid" ) )
.Map( PAD_SHAPE_ROUNDRECT, _( "Rounded rectangle" ) )
.Map( PAD_SHAPE_CHAMFERED_RECT, _( "Chamfered rectangle" ) )
.Map( PAD_SHAPE_CUSTOM, _( "Custom" ) );
.Map( PAD_SHAPE_CIRCLE, _( "Circle" ) )
.Map( PAD_SHAPE_RECT, _( "Rectangle" ) )
.Map( PAD_SHAPE_OVAL, _( "Oval" ) )
.Map( PAD_SHAPE_TRAPEZOID, _( "Trapezoid" ) )
.Map( PAD_SHAPE_ROUNDRECT, _( "Rounded rectangle" ) )
.Map( PAD_SHAPE_CHAMFERED_RECT, _( "Chamfered rectangle" ) )
.Map( PAD_SHAPE_CUSTOM, _( "Custom" ) );
ENUM_MAP<PAD_PROP_T>::Instance()
.Map( PAD_PROP_NONE, _( "None" ) )
.Map( PAD_PROP_BGA, _( "BGA pad" ) )
.Map( PAD_PROP_FIDUCIAL_GLBL, _( "Fiducial, global to board" ) )
.Map( PAD_PROP_FIDUCIAL_LOCAL, _( "Fiducial, local to footprint" ) )
.Map( PAD_PROP_TESTPOINT, _( "Test point pad" ) )
.Map( PAD_PROP_HEATSINK, _( "Heatsink pad" ) )
.Map( PAD_PROP_CASTELLATED, _( "Castellated pad" ) );
.Map( PAD_PROP_NONE, _( "None" ) )
.Map( PAD_PROP_BGA, _( "BGA pad" ) )
.Map( PAD_PROP_FIDUCIAL_GLBL, _( "Fiducial, global to board" ) )
.Map( PAD_PROP_FIDUCIAL_LOCAL, _( "Fiducial, local to footprint" ) )
.Map( PAD_PROP_TESTPOINT, _( "Test point pad" ) )
.Map( PAD_PROP_HEATSINK, _( "Heatsink pad" ) )
.Map( PAD_PROP_CASTELLATED, _( "Castellated pad" ) );
PROPERTY_MANAGER& propMgr = PROPERTY_MANAGER::Instance();
REGISTER_TYPE( D_PAD );
propMgr.InheritsAfter( TYPE_HASH( D_PAD ), TYPE_HASH( BOARD_CONNECTED_ITEM ) );
auto padType = new PROPERTY_ENUM<D_PAD, PAD_ATTR_T>( _( "Pad Type" ),
&D_PAD::SetAttribute, &D_PAD::GetAttribute );
propMgr.AddProperty( padType );
auto shape = new PROPERTY_ENUM<D_PAD, PAD_SHAPE_T>( _( "Shape" ),
&D_PAD::SetShape, &D_PAD::GetShape );
propMgr.AddProperty( shape );

12
pcbnew/class_track.cpp

@ -1046,8 +1046,8 @@ static struct TRACK_VIA_DESC
ENUM_MAP<VIATYPE>::Instance()
.Undefined( VIATYPE::NOT_DEFINED )
.Map( VIATYPE::THROUGH, _( "Through" ) )
.Map( VIATYPE::BLIND_BURIED, _( "Buried_via" ) )
.Map( VIATYPE::MICROVIA, _( "Micro_via" ) );
.Map( VIATYPE::BLIND_BURIED, _( "Blind/buried" ) )
.Map( VIATYPE::MICROVIA, _( "Micro" ) );
ENUM_MAP<PCB_LAYER_ID>& layerEnum = ENUM_MAP<PCB_LAYER_ID>::Instance();
@ -1085,13 +1085,13 @@ static struct TRACK_VIA_DESC
// TODO layerset for vias?
// TODO test drill, use getdrillvalue?
propMgr.ReplaceProperty( TYPE_HASH( TRACK ), _( "Width" ),
new PROPERTY<VIA, int, TRACK>( _( "Diameter" ), &VIA::SetWidth, &VIA::GetWidth,
PROPERTY_DISPLAY::DISTANCE ) );
new PROPERTY<VIA, int, TRACK>( _( "Diameter" ),
&VIA::SetWidth, &VIA::GetWidth, PROPERTY_DISPLAY::DISTANCE ) );
propMgr.AddProperty( new PROPERTY<VIA, int>( _( "Drill" ),
&VIA::SetDrill, &VIA::GetDrillValue, PROPERTY_DISPLAY::DISTANCE ) );
propMgr.ReplaceProperty( TYPE_HASH( BOARD_ITEM ), _( "Layer" ),
new PROPERTY_ENUM<VIA, PCB_LAYER_ID, BOARD_ITEM>( _( "Layer Top" ),
&VIA::SetLayer, &VIA::GetLayer ) );
new PROPERTY_ENUM<VIA, PCB_LAYER_ID, BOARD_ITEM>( _( "Layer Top" ),
&VIA::SetLayer, &VIA::GetLayer ) );
propMgr.AddProperty( new PROPERTY_ENUM<VIA, PCB_LAYER_ID>( _( "Layer Bottom" ),
&VIA::SetBottomLayer, &VIA::BottomLayer ) );
propMgr.AddProperty( new PROPERTY_ENUM<VIA, VIATYPE>( _( "Via Type" ),

5
pcbnew/pcb_expr_evaluator.cpp

@ -362,7 +362,8 @@ LIBEVAL::FUNC_CALL_REF PCB_EXPR_UCODE::CreateFuncCall( const wxString& aName )
}
std::unique_ptr<LIBEVAL::VAR_REF> PCB_EXPR_UCODE::CreateVarRef( const wxString& aVar, const wxString& aField )
std::unique_ptr<LIBEVAL::VAR_REF> PCB_EXPR_UCODE::CreateVarRef( const wxString& aVar,
const wxString& aField )
{
PROPERTY_MANAGER& propMgr = PROPERTY_MANAGER::Instance();
std::unique_ptr<PCB_EXPR_VAR_REF> vref;;
@ -409,7 +410,7 @@ std::unique_ptr<LIBEVAL::VAR_REF> PCB_EXPR_UCODE::CreateVarRef( const wxString&
else if ( prop->HasChoices() )
{ // it's an enum, we treat it as string
vref->SetType( LIBEVAL::VT_STRING );
vref->SetIsEnum ( true );
vref->SetIsEnum( true );
}
else
{

Loading…
Cancel
Save