Properties meta-data for pcbnew classes

This commit is contained in:
Maciej Suminski 2020-02-02 19:40:14 +01:00 committed by Jon Evans
parent 745c94b0a1
commit 95fd58b25a
11 changed files with 73 additions and 63 deletions

View File

@ -1620,6 +1620,10 @@ void EDA_SHAPE::TransformShapeWithClearanceToPolygon( SHAPE_POLY_SET& aCornerBuf
} }
ENUM_TO_WXANY( SHAPE_T )
ENUM_TO_WXANY( PLOT_DASH_TYPE )
static struct EDA_SHAPE_DESC static struct EDA_SHAPE_DESC
{ {
EDA_SHAPE_DESC() EDA_SHAPE_DESC()
@ -1641,21 +1645,29 @@ static struct EDA_SHAPE_DESC
PROPERTY_MANAGER& propMgr = PROPERTY_MANAGER::Instance(); PROPERTY_MANAGER& propMgr = PROPERTY_MANAGER::Instance();
REGISTER_TYPE( EDA_SHAPE ); REGISTER_TYPE( EDA_SHAPE );
propMgr.AddProperty( new PROPERTY_ENUM<EDA_SHAPE, SHAPE_T>( _HKI( "Shape" ), auto shape = new PROPERTY_ENUM<EDA_SHAPE, SHAPE_T>( _HKI( "Shape" ),
&EDA_SHAPE::SetShape, &EDA_SHAPE::GetShape ) ); NO_SETTER( EDA_SHAPE, SHAPE_T ), &EDA_SHAPE::GetShape );
propMgr.AddProperty( shape );
propMgr.AddProperty( new PROPERTY<EDA_SHAPE, int>( _HKI( "Start X" ), propMgr.AddProperty( new PROPERTY<EDA_SHAPE, int>( _HKI( "Start X" ),
&EDA_SHAPE::SetStartX, &EDA_SHAPE::GetStartX ) ); &EDA_SHAPE::SetStartX, &EDA_SHAPE::GetStartX, PROPERTY_DISPLAY::COORD ) );
propMgr.AddProperty( new PROPERTY<EDA_SHAPE, int>( _HKI( "Start Y" ), propMgr.AddProperty( new PROPERTY<EDA_SHAPE, int>( _HKI( "Start Y" ),
&EDA_SHAPE::SetStartY, &EDA_SHAPE::GetStartY ) ); &EDA_SHAPE::SetStartY, &EDA_SHAPE::GetStartY, PROPERTY_DISPLAY::COORD ) );
propMgr.AddProperty( new PROPERTY<EDA_SHAPE, int>( _HKI( "End X" ), propMgr.AddProperty( new PROPERTY<EDA_SHAPE, int>( _HKI( "End X" ),
&EDA_SHAPE::SetEndX, &EDA_SHAPE::GetEndX ) ); &EDA_SHAPE::SetEndX, &EDA_SHAPE::GetEndX, PROPERTY_DISPLAY::COORD ) );
propMgr.AddProperty( new PROPERTY<EDA_SHAPE, int>( _HKI( "End Y" ), propMgr.AddProperty( new PROPERTY<EDA_SHAPE, int>( _HKI( "End Y" ),
&EDA_SHAPE::SetEndY, &EDA_SHAPE::GetEndY ) ); &EDA_SHAPE::SetEndY, &EDA_SHAPE::GetEndY, PROPERTY_DISPLAY::COORD ) );
// TODO: m_arcCenter, m_bezierC1, m_bezierC2, m_poly // TODO: m_arcCenter, m_bezierC1, m_bezierC2, m_poly
propMgr.AddProperty( new PROPERTY<EDA_SHAPE, int>( _HKI( "Line Width" ), propMgr.AddProperty( new PROPERTY<EDA_SHAPE, int>( _HKI( "Line Width" ),
&EDA_SHAPE::SetWidth, &EDA_SHAPE::GetWidth ) ); &EDA_SHAPE::SetWidth, &EDA_SHAPE::GetWidth, PROPERTY_DISPLAY::SIZE ) );
auto angle = new PROPERTY<EDA_SHAPE, EDA_ANGLE>( _HKI( "Angle" ),
NO_SETTER( EDA_SHAPE, EDA_ANGLE ), &EDA_SHAPE::GetArcAngle,
PROPERTY_DISPLAY::DECIDEGREE );
angle->SetAvailableFunc(
[=]( INSPECTABLE* aItem ) -> bool
{
return aItem->Get( shape ).As<SHAPE_T>() == SHAPE_T::ARC;
} );
propMgr.AddProperty( angle );
} }
} _EDA_SHAPE_DESC; } _EDA_SHAPE_DESC;
ENUM_TO_WXANY( SHAPE_T )
ENUM_TO_WXANY( PLOT_DASH_TYPE )

View File

@ -995,7 +995,7 @@ static struct EDA_TEXT_DESC
propMgr.AddProperty( new PROPERTY<EDA_TEXT, int>( _HKI( "Thickness" ), propMgr.AddProperty( new PROPERTY<EDA_TEXT, int>( _HKI( "Thickness" ),
&EDA_TEXT::SetTextThickness, &EDA_TEXT::SetTextThickness,
&EDA_TEXT::GetTextThickness, &EDA_TEXT::GetTextThickness,
PROPERTY_DISPLAY::DISTANCE ) ); PROPERTY_DISPLAY::SIZE ) );
propMgr.AddProperty( new PROPERTY<EDA_TEXT, bool>( _HKI( "Italic" ), propMgr.AddProperty( new PROPERTY<EDA_TEXT, bool>( _HKI( "Italic" ),
&EDA_TEXT::SetItalic, &EDA_TEXT::SetItalic,
&EDA_TEXT::IsItalic ) ); &EDA_TEXT::IsItalic ) );
@ -1010,11 +1010,11 @@ static struct EDA_TEXT_DESC
propMgr.AddProperty( new PROPERTY<EDA_TEXT, int>( _HKI( "Width" ), propMgr.AddProperty( new PROPERTY<EDA_TEXT, int>( _HKI( "Width" ),
&EDA_TEXT::SetTextWidth, &EDA_TEXT::SetTextWidth,
&EDA_TEXT::GetTextWidth, &EDA_TEXT::GetTextWidth,
PROPERTY_DISPLAY::DISTANCE ) ); PROPERTY_DISPLAY::SIZE ) );
propMgr.AddProperty( new PROPERTY<EDA_TEXT, int>( _HKI( "Height" ), propMgr.AddProperty( new PROPERTY<EDA_TEXT, int>( _HKI( "Height" ),
&EDA_TEXT::SetTextHeight, &EDA_TEXT::SetTextHeight,
&EDA_TEXT::GetTextHeight, &EDA_TEXT::GetTextHeight,
PROPERTY_DISPLAY::DISTANCE ) ); PROPERTY_DISPLAY::SIZE ) );
propMgr.AddProperty( new PROPERTY_ENUM<EDA_TEXT, propMgr.AddProperty( new PROPERTY_ENUM<EDA_TEXT,
GR_TEXT_H_ALIGN_T>( _HKI( "Horizontal Justification" ), GR_TEXT_H_ALIGN_T>( _HKI( "Horizontal Justification" ),
&EDA_TEXT::SetHorizJustify, &EDA_TEXT::SetHorizJustify,

View File

@ -177,9 +177,9 @@ private:
public: public:
PROPERTY_BASE( const wxString& aName, PROPERTY_DISPLAY aDisplay = DEFAULT ) : PROPERTY_BASE( const wxString& aName, PROPERTY_DISPLAY aDisplay = DEFAULT ) :
m_id( nextId ), m_id( 0 ),
m_name( aName ), m_name( aName ),
m_type( aType ), m_display( aDisplay ),
m_availFunc( [](INSPECTABLE*)->bool { return true; } ) m_availFunc( [](INSPECTABLE*)->bool { return true; } )
{ {
} }
@ -253,9 +253,9 @@ public:
virtual bool IsReadOnly() const = 0; virtual bool IsReadOnly() const = 0;
PROPERTY_TYPE Type() const PROPERTY_DISPLAY Display() const
{ {
return m_type; return m_display;
} }
protected: protected:
@ -301,18 +301,18 @@ public:
template<typename SetType, typename GetType> template<typename SetType, typename GetType>
PROPERTY( const wxString& aName, PROPERTY( const wxString& aName,
void ( Base::*aSetter )( SetType ), GetType( Base::*aGetter )(), void ( Base::*aSetter )( SetType ), GetType( Base::*aGetter )(),
PROPERTY_TYPE aType = DEFAULT ) PROPERTY_DISPLAY aDisplay = DEFAULT )
: PROPERTY( aName, METHOD<Owner, T, Base>::Wrap( aSetter ), : PROPERTY( aName, METHOD<Owner, T, Base>::Wrap( aSetter ),
METHOD<Owner, T, Base>::Wrap( aGetter ), aType ) METHOD<Owner, T, Base>::Wrap( aGetter ), aDisplay )
{ {
} }
template<typename SetType, typename GetType> template<typename SetType, typename GetType>
PROPERTY( const wxString& aName, PROPERTY( const wxString& aName,
void ( Base::*aSetter )( SetType ), GetType( Base::*aGetter )() const, void ( Base::*aSetter )( SetType ), GetType( Base::*aGetter )() const,
PROPERTY_TYPE aType = DEFAULT ) PROPERTY_DISPLAY aDisplay = DEFAULT )
: PROPERTY( aName, METHOD<Owner, T, Base>::Wrap( aSetter ), : PROPERTY( aName, METHOD<Owner, T, Base>::Wrap( aSetter ),
METHOD<Owner, T, Base>::Wrap( aGetter ), aType ) METHOD<Owner, T, Base>::Wrap( aGetter ), aDisplay )
{ {
} }
@ -338,8 +338,8 @@ public:
protected: protected:
PROPERTY( const wxString& aName, SETTER_BASE<Owner, T>* s, GETTER_BASE<Owner, T>* g, PROPERTY( const wxString& aName, SETTER_BASE<Owner, T>* s, GETTER_BASE<Owner, T>* g,
PROPERTY_TYPE aType ) PROPERTY_DISPLAY aDisplay )
: PROPERTY_BASE( aName, aType ), m_setter( s ), m_getter( g ), : PROPERTY_BASE( aName, aDisplay ), m_setter( s ), m_getter( g ),
m_ownerHash( TYPE_HASH( Owner ) ), m_baseHash( TYPE_HASH( Base ) ), m_ownerHash( TYPE_HASH( Owner ) ), m_baseHash( TYPE_HASH( Base ) ),
m_typeHash( TYPE_HASH( BASE_TYPE ) ) m_typeHash( TYPE_HASH( BASE_TYPE ) )
{ {
@ -390,9 +390,9 @@ public:
template<typename SetType, typename GetType> template<typename SetType, typename GetType>
PROPERTY_ENUM( const wxString& aName, PROPERTY_ENUM( const wxString& aName,
void ( Base::*aSetter )( SetType ), GetType( Base::*aGetter )(), void ( Base::*aSetter )( SetType ), GetType( Base::*aGetter )(),
PROPERTY_TYPE aType = PROPERTY_TYPE::DEFAULT ) PROPERTY_DISPLAY aDisplay = DEFAULT )
: PROPERTY<Owner, T, Base>( aName, METHOD<Owner, T, Base>::Wrap( aSetter ), : PROPERTY<Owner, T, Base>( aName, METHOD<Owner, T, Base>::Wrap( aSetter ),
METHOD<Owner, T, Base>::Wrap( aGetter ), aType ) METHOD<Owner, T, Base>::Wrap( aGetter ), aDisplay )
{ {
if ( std::is_enum<T>::value ) if ( std::is_enum<T>::value )
{ {
@ -404,9 +404,9 @@ public:
template<typename SetType, typename GetType> template<typename SetType, typename GetType>
PROPERTY_ENUM( const wxString& aName, PROPERTY_ENUM( const wxString& aName,
void ( Base::*aSetter )( SetType ), GetType( Base::*aGetter )() const, void ( Base::*aSetter )( SetType ), GetType( Base::*aGetter )() const,
PROPERTY_TYPE aType = PROPERTY_TYPE::DEFAULT ) PROPERTY_DISPLAY aDisplay = DEFAULT )
: PROPERTY<Owner, T, Base>( aName, METHOD<Owner, T, Base>::Wrap( aSetter ), : PROPERTY<Owner, T, Base>( aName, METHOD<Owner, T, Base>::Wrap( aSetter ),
METHOD<Owner, T, Base>::Wrap( aGetter ), aType ) METHOD<Owner, T, Base>::Wrap( aGetter ), aDisplay )
{ {
if ( std::is_enum<T>::value ) if ( std::is_enum<T>::value )
{ {

View File

@ -256,9 +256,9 @@ static struct BOARD_ITEM_DESC
propMgr.InheritsAfter( TYPE_HASH( BOARD_ITEM ), TYPE_HASH( EDA_ITEM ) ); propMgr.InheritsAfter( TYPE_HASH( BOARD_ITEM ), TYPE_HASH( EDA_ITEM ) );
propMgr.AddProperty( new PROPERTY<BOARD_ITEM, int>( _HKI( "Position X" ), propMgr.AddProperty( new PROPERTY<BOARD_ITEM, int>( _HKI( "Position X" ),
&BOARD_ITEM::SetX, &BOARD_ITEM::GetX, PROPERTY_TYPE::COORD ) ); &BOARD_ITEM::SetX, &BOARD_ITEM::GetX, PROPERTY_DISPLAY::COORD ) );
propMgr.AddProperty( new PROPERTY<BOARD_ITEM, int>( _HKI( "Position Y" ), propMgr.AddProperty( new PROPERTY<BOARD_ITEM, int>( _HKI( "Position Y" ),
&BOARD_ITEM::SetY, &BOARD_ITEM::GetY, PROPERTY_TYPE::COORD ) ); &BOARD_ITEM::SetY, &BOARD_ITEM::GetY, PROPERTY_DISPLAY::COORD ) );
propMgr.AddProperty( new PROPERTY_ENUM<BOARD_ITEM, PCB_LAYER_ID>( _HKI( "Layer" ), propMgr.AddProperty( new PROPERTY_ENUM<BOARD_ITEM, PCB_LAYER_ID>( _HKI( "Layer" ),
&BOARD_ITEM::SetLayer, &BOARD_ITEM::GetLayer ) ); &BOARD_ITEM::SetLayer, &BOARD_ITEM::GetLayer ) );
propMgr.AddProperty( new PROPERTY<BOARD_ITEM, bool>( _HKI( "Locked" ), propMgr.AddProperty( new PROPERTY<BOARD_ITEM, bool>( _HKI( "Locked" ),

View File

@ -2821,10 +2821,10 @@ static struct FOOTPRINT_DESC
PROPERTY_DISPLAY::DEGREE ) ); PROPERTY_DISPLAY::DEGREE ) );
propMgr.AddProperty( new PROPERTY<FOOTPRINT, int>( _HKI( "Clearance Override" ), propMgr.AddProperty( new PROPERTY<FOOTPRINT, int>( _HKI( "Clearance Override" ),
&FOOTPRINT::SetLocalClearance, &FOOTPRINT::GetLocalClearance, &FOOTPRINT::SetLocalClearance, &FOOTPRINT::GetLocalClearance,
PROPERTY_DISPLAY::DISTANCE ) ); PROPERTY_DISPLAY::SIZE ) );
propMgr.AddProperty( new PROPERTY<FOOTPRINT, int>( _HKI( "Solderpaste Margin Override" ), propMgr.AddProperty( new PROPERTY<FOOTPRINT, int>( _HKI( "Solderpaste Margin Override" ),
&FOOTPRINT::SetLocalSolderPasteMargin, &FOOTPRINT::GetLocalSolderPasteMargin, &FOOTPRINT::SetLocalSolderPasteMargin, &FOOTPRINT::GetLocalSolderPasteMargin,
PROPERTY_DISPLAY::DISTANCE ) ); PROPERTY_DISPLAY::SIZE ) );
propMgr.AddProperty( new PROPERTY<FOOTPRINT, double>( _HKI( "Solderpaste Margin Ratio Override" ), propMgr.AddProperty( new PROPERTY<FOOTPRINT, double>( _HKI( "Solderpaste Margin Ratio Override" ),
&FOOTPRINT::SetLocalSolderPasteMarginRatio, &FOOTPRINT::SetLocalSolderPasteMarginRatio,
&FOOTPRINT::GetLocalSolderPasteMarginRatio ) ); &FOOTPRINT::GetLocalSolderPasteMarginRatio ) );

View File

@ -1702,36 +1702,36 @@ static struct PAD_DESC
PROPERTY_DISPLAY::DEGREE ) ); PROPERTY_DISPLAY::DEGREE ) );
propMgr.AddProperty( new PROPERTY<PAD, int>( _HKI( "Size X" ), propMgr.AddProperty( new PROPERTY<PAD, int>( _HKI( "Size X" ),
&PAD::SetSizeX, &PAD::GetSizeX, &PAD::SetSizeX, &PAD::GetSizeX,
PROPERTY_DISPLAY::DISTANCE ) ); PROPERTY_DISPLAY::SIZE ) );
propMgr.AddProperty( new PROPERTY<PAD, int>( _HKI( "Size Y" ), propMgr.AddProperty( new PROPERTY<PAD, int>( _HKI( "Size Y" ),
&PAD::SetSizeY, &PAD::GetSizeY, &PAD::SetSizeY, &PAD::GetSizeY,
PROPERTY_DISPLAY::DISTANCE ) ); PROPERTY_DISPLAY::SIZE ) );
propMgr.AddProperty( new PROPERTY<PAD, int>( _HKI( "Hole Size X" ), propMgr.AddProperty( new PROPERTY<PAD, int>( _HKI( "Hole Size X" ),
&PAD::SetDrillSizeX, &PAD::GetDrillSizeX, &PAD::SetDrillSizeX, &PAD::GetDrillSizeX,
PROPERTY_DISPLAY::DISTANCE ) ); PROPERTY_DISPLAY::SIZE ) );
propMgr.AddProperty( new PROPERTY<PAD, int>( _HKI( "Hole Size Y" ), propMgr.AddProperty( new PROPERTY<PAD, int>( _HKI( "Hole Size Y" ),
&PAD::SetDrillSizeY, &PAD::GetDrillSizeY, &PAD::SetDrillSizeY, &PAD::GetDrillSizeY,
PROPERTY_DISPLAY::DISTANCE ) ); PROPERTY_DISPLAY::SIZE ) );
propMgr.AddProperty( new PROPERTY<PAD, int>( _HKI( "Pad To Die Length" ), propMgr.AddProperty( new PROPERTY<PAD, int>( _HKI( "Pad To Die Length" ),
&PAD::SetPadToDieLength, &PAD::GetPadToDieLength, &PAD::SetPadToDieLength, &PAD::GetPadToDieLength,
PROPERTY_DISPLAY::DISTANCE ) ); PROPERTY_DISPLAY::SIZE ) );
propMgr.AddProperty( new PROPERTY<PAD, int>( _HKI( "Soldermask Margin Override" ), propMgr.AddProperty( new PROPERTY<PAD, int>( _HKI( "Soldermask Margin Override" ),
&PAD::SetLocalSolderMaskMargin, &PAD::GetLocalSolderMaskMargin, &PAD::SetLocalSolderMaskMargin, &PAD::GetLocalSolderMaskMargin,
PROPERTY_DISPLAY::DISTANCE ) ); PROPERTY_DISPLAY::SIZE ) );
propMgr.AddProperty( new PROPERTY<PAD, int>( _HKI( "Solderpaste Margin Override" ), propMgr.AddProperty( new PROPERTY<PAD, int>( _HKI( "Solderpaste Margin Override" ),
&PAD::SetLocalSolderPasteMargin, &PAD::GetLocalSolderPasteMargin, &PAD::SetLocalSolderPasteMargin, &PAD::GetLocalSolderPasteMargin,
PROPERTY_DISPLAY::DISTANCE ) ); PROPERTY_DISPLAY::SIZE ) );
propMgr.AddProperty( new PROPERTY<PAD, double>( _HKI( "Solderpaste Margin Ratio Override" ), propMgr.AddProperty( new PROPERTY<PAD, double>( _HKI( "Solderpaste Margin Ratio Override" ),
&PAD::SetLocalSolderPasteMarginRatio, &PAD::GetLocalSolderPasteMarginRatio ) ); &PAD::SetLocalSolderPasteMarginRatio, &PAD::GetLocalSolderPasteMarginRatio ) );
propMgr.AddProperty( new PROPERTY<PAD, int>( _HKI( "Thermal Relief Spoke Width" ), propMgr.AddProperty( new PROPERTY<PAD, int>( _HKI( "Thermal Relief Spoke Width" ),
&PAD::SetThermalSpokeWidth, &PAD::GetThermalSpokeWidth, &PAD::SetThermalSpokeWidth, &PAD::GetThermalSpokeWidth,
PROPERTY_DISPLAY::DISTANCE ) ); PROPERTY_DISPLAY::SIZE ) );
propMgr.AddProperty( new PROPERTY<PAD, double>( _HKI( "Thermal Relief Spoke Angle" ), propMgr.AddProperty( new PROPERTY<PAD, double>( _HKI( "Thermal Relief Spoke Angle" ),
&PAD::SetThermalSpokeAngleDegrees, &PAD::GetThermalSpokeAngleDegrees, &PAD::SetThermalSpokeAngleDegrees, &PAD::GetThermalSpokeAngleDegrees,
PROPERTY_DISPLAY::DEGREE ) ); PROPERTY_DISPLAY::DEGREE ) );
propMgr.AddProperty( new PROPERTY<PAD, int>( _HKI( "Thermal Relief Gap" ), propMgr.AddProperty( new PROPERTY<PAD, int>( _HKI( "Thermal Relief Gap" ),
&PAD::SetThermalGap, &PAD::GetThermalGap, &PAD::SetThermalGap, &PAD::GetThermalGap,
PROPERTY_DISPLAY::DISTANCE ) ); PROPERTY_DISPLAY::SIZE ) );
propMgr.AddProperty( new PROPERTY_ENUM<PAD, PAD_PROP>( _HKI( "Fabrication Property" ), propMgr.AddProperty( new PROPERTY_ENUM<PAD, PAD_PROP>( _HKI( "Fabrication Property" ),
&PAD::SetProperty, &PAD::GetProperty ) ); &PAD::SetProperty, &PAD::GetProperty ) );
@ -1746,7 +1746,7 @@ static struct PAD_DESC
propMgr.AddProperty( new PROPERTY<PAD, int>( _HKI( "Clearance Override" ), propMgr.AddProperty( new PROPERTY<PAD, int>( _HKI( "Clearance Override" ),
&PAD::SetLocalClearance, &PAD::GetLocalClearance, &PAD::SetLocalClearance, &PAD::GetLocalClearance,
PROPERTY_DISPLAY::DISTANCE ) ); PROPERTY_DISPLAY::SIZE ) );
propMgr.AddProperty( new PROPERTY<PAD, wxString>( _HKI( "Parent" ), propMgr.AddProperty( new PROPERTY<PAD, wxString>( _HKI( "Parent" ),
NO_SETTER( PAD, wxString ), &PAD::GetParentAsString ) ); NO_SETTER( PAD, wxString ), &PAD::GetParentAsString ) );

View File

@ -1308,8 +1308,6 @@ static struct DIMENSION_DESC
propMgr.InheritsAfter( TYPE_HASH( PCB_DIMENSION_BASE ), TYPE_HASH( BOARD_ITEM ) ); propMgr.InheritsAfter( TYPE_HASH( PCB_DIMENSION_BASE ), TYPE_HASH( BOARD_ITEM ) );
// TODO: add dimension properties: // TODO: add dimension properties:
//propMgr.AddProperty( new PROPERTY<DIMENSION, int>( _HKI( "Height" ), //propMgr.AddProperty( new PROPERTY<DIMENSION, int>( _HKI( "Height" ),
//&DIMENSION::SetHeight, &DIMENSION::GetHeight, PROPERTY_DISPLAY::DISTANCE ) ); //&DIMENSION::SetHeight, &DIMENSION::GetHeight, PROPERTY_DISPLAY::SIZE ) );
} }
} _DIMENSION_DESC; } _DIMENSION_DESC;

View File

@ -318,7 +318,7 @@ static struct PCB_SHAPE_DESC
REGISTER_TYPE( PCB_SHAPE ); REGISTER_TYPE( PCB_SHAPE );
propMgr.AddTypeCast( new TYPE_CAST<PCB_SHAPE, BOARD_ITEM> ); propMgr.AddTypeCast( new TYPE_CAST<PCB_SHAPE, BOARD_ITEM> );
propMgr.AddTypeCast( new TYPE_CAST<PCB_SHAPE, EDA_SHAPE> ); propMgr.AddTypeCast( new TYPE_CAST<PCB_SHAPE, EDA_SHAPE> );
propMgr.InheritsAfter( TYPE_HASH( PCB_SHAPE ), TYPE_HASH( BOARD_ITEM ) );
propMgr.InheritsAfter( TYPE_HASH( PCB_SHAPE ), TYPE_HASH( EDA_SHAPE ) ); propMgr.InheritsAfter( TYPE_HASH( PCB_SHAPE ), TYPE_HASH( EDA_SHAPE ) );
} }
} _PCB_SHAPE_DESC; } _PCB_SHAPE_DESC;

View File

@ -200,9 +200,9 @@ static struct PCB_TARGET_DESC
REGISTER_TYPE( PCB_TARGET ); REGISTER_TYPE( PCB_TARGET );
propMgr.InheritsAfter( TYPE_HASH( PCB_TARGET ), TYPE_HASH( BOARD_ITEM ) ); propMgr.InheritsAfter( TYPE_HASH( PCB_TARGET ), TYPE_HASH( BOARD_ITEM ) );
propMgr.AddProperty( new PROPERTY<PCB_TARGET, int>( _HKI( "Size" ), propMgr.AddProperty( new PROPERTY<PCB_TARGET, int>( _HKI( "Size" ),
&PCB_TARGET::SetSize, &PCB_TARGET::GetSize, PROPERTY_TYPE::SIZE ) ); &PCB_TARGET::SetSize, &PCB_TARGET::GetSize, PROPERTY_DISPLAY::SIZE ) );
propMgr.AddProperty( new PROPERTY<PCB_TARGET, int>( _HKI( "Width" ), propMgr.AddProperty( new PROPERTY<PCB_TARGET, int>( _HKI( "Width" ),
&PCB_TARGET::SetWidth, &PCB_TARGET::GetWidth, PROPERTY_TYPE::SIZE ) ); &PCB_TARGET::SetWidth, &PCB_TARGET::GetWidth, PROPERTY_DISPLAY::SIZE ) );
auto shape = new PROPERTY<PCB_TARGET, int>( _HKI( "Shape" ), auto shape = new PROPERTY<PCB_TARGET, int>( _HKI( "Shape" ),
&PCB_TARGET::SetShape, &PCB_TARGET::GetShape ); &PCB_TARGET::SetShape, &PCB_TARGET::GetShape );

View File

@ -1242,34 +1242,34 @@ static struct TRACK_VIA_DESC
propMgr.InheritsAfter( TYPE_HASH( PCB_TRACK ), TYPE_HASH( BOARD_CONNECTED_ITEM ) ); propMgr.InheritsAfter( TYPE_HASH( PCB_TRACK ), TYPE_HASH( BOARD_CONNECTED_ITEM ) );
propMgr.AddProperty( new PROPERTY<PCB_TRACK, int>( _HKI( "Width" ), propMgr.AddProperty( new PROPERTY<PCB_TRACK, int>( _HKI( "Width" ),
&PCB_TRACK::SetWidth, &PCB_TRACK::GetWidth, PROPERTY_DISPLAY::DISTANCE ) ); &PCB_TRACK::SetWidth, &PCB_TRACK::GetWidth, PROPERTY_DISPLAY::SIZE ) );
propMgr.ReplaceProperty( TYPE_HASH( BOARD_ITEM ), _HKI( "Position X" ), propMgr.ReplaceProperty( TYPE_HASH( BOARD_ITEM ), _HKI( "Position X" ),
new PROPERTY<PCB_TRACK, int, BOARD_ITEM>( _HKI( "Origin X" ), new PROPERTY<PCB_TRACK, int, BOARD_ITEM>( _HKI( "Origin X" ),
&PCB_TRACK::SetX, &PCB_TRACK::GetX, PROPERTY_DISPLAY::DISTANCE ) ); &PCB_TRACK::SetX, &PCB_TRACK::GetX, PROPERTY_DISPLAY::SIZE ) );
propMgr.ReplaceProperty( TYPE_HASH( BOARD_ITEM ), _HKI( "Position Y" ), propMgr.ReplaceProperty( TYPE_HASH( BOARD_ITEM ), _HKI( "Position Y" ),
new PROPERTY<PCB_TRACK, int, BOARD_ITEM>( _HKI( "Origin Y" ), new PROPERTY<PCB_TRACK, int, BOARD_ITEM>( _HKI( "Origin Y" ),
&PCB_TRACK::SetY, &PCB_TRACK::GetY, PROPERTY_DISPLAY::DISTANCE ) ); &PCB_TRACK::SetY, &PCB_TRACK::GetY, PROPERTY_DISPLAY::SIZE ) );
propMgr.AddProperty( new PROPERTY<PCB_TRACK, int>( _HKI( "End X" ), propMgr.AddProperty( new PROPERTY<PCB_TRACK, int>( _HKI( "End X" ),
&PCB_TRACK::SetEndX, &PCB_TRACK::GetEndX, PROPERTY_DISPLAY::DISTANCE ) ); &PCB_TRACK::SetEndX, &PCB_TRACK::GetEndX, PROPERTY_DISPLAY::SIZE ) );
propMgr.AddProperty( new PROPERTY<PCB_TRACK, int>( _HKI( "End Y" ), propMgr.AddProperty( new PROPERTY<PCB_TRACK, int>( _HKI( "End Y" ),
&PCB_TRACK::SetEndY, &PCB_TRACK::GetEndY, PROPERTY_DISPLAY::DISTANCE ) ); &PCB_TRACK::SetEndY, &PCB_TRACK::GetEndY, PROPERTY_DISPLAY::SIZE ) );
// Arc // Arc
REGISTER_TYPE( PCB_ARC ); REGISTER_TYPE( PCB_ARC );
propMgr.InheritsAfter( TYPE_HASH( PCB_ARC ), TYPE_HASH( BOARD_CONNECTED_ITEM ) ); propMgr.InheritsAfter( TYPE_HASH( PCB_ARC ), TYPE_HASH( BOARD_CONNECTED_ITEM ) );
propMgr.AddProperty( new PROPERTY<PCB_TRACK, int>( _HKI( "Width" ), propMgr.AddProperty( new PROPERTY<PCB_TRACK, int>( _HKI( "Width" ),
&PCB_ARC::SetWidth, &PCB_ARC::GetWidth, PROPERTY_DISPLAY::DISTANCE ) ); &PCB_ARC::SetWidth, &PCB_ARC::GetWidth, PROPERTY_DISPLAY::SIZE ) );
propMgr.ReplaceProperty( TYPE_HASH( BOARD_ITEM ), _HKI( "Position X" ), propMgr.ReplaceProperty( TYPE_HASH( BOARD_ITEM ), _HKI( "Position X" ),
new PROPERTY<PCB_ARC, int, BOARD_ITEM>( _HKI( "Origin X" ), new PROPERTY<PCB_ARC, int, BOARD_ITEM>( _HKI( "Origin X" ),
&PCB_TRACK::SetX, &PCB_ARC::GetX, PROPERTY_DISPLAY::DISTANCE ) ); &PCB_TRACK::SetX, &PCB_ARC::GetX, PROPERTY_DISPLAY::SIZE ) );
propMgr.ReplaceProperty( TYPE_HASH( BOARD_ITEM ), _HKI( "Position Y" ), propMgr.ReplaceProperty( TYPE_HASH( BOARD_ITEM ), _HKI( "Position Y" ),
new PROPERTY<PCB_ARC, int, BOARD_ITEM>( _HKI( "Origin Y" ), new PROPERTY<PCB_ARC, int, BOARD_ITEM>( _HKI( "Origin Y" ),
&PCB_TRACK::SetY, &PCB_ARC::GetY, PROPERTY_DISPLAY::DISTANCE ) ); &PCB_TRACK::SetY, &PCB_ARC::GetY, PROPERTY_DISPLAY::SIZE ) );
propMgr.AddProperty( new PROPERTY<PCB_TRACK, int>( _HKI( "End X" ), propMgr.AddProperty( new PROPERTY<PCB_TRACK, int>( _HKI( "End X" ),
&PCB_TRACK::SetEndX, &PCB_ARC::GetEndX, PROPERTY_DISPLAY::DISTANCE ) ); &PCB_TRACK::SetEndX, &PCB_ARC::GetEndX, PROPERTY_DISPLAY::SIZE ) );
propMgr.AddProperty( new PROPERTY<PCB_TRACK, int>( _HKI( "End Y" ), propMgr.AddProperty( new PROPERTY<PCB_TRACK, int>( _HKI( "End Y" ),
&PCB_TRACK::SetEndY, &PCB_ARC::GetEndY, PROPERTY_DISPLAY::DISTANCE ) ); &PCB_TRACK::SetEndY, &PCB_ARC::GetEndY, PROPERTY_DISPLAY::SIZE ) );
// Via // Via
REGISTER_TYPE( PCB_VIA ); REGISTER_TYPE( PCB_VIA );
@ -1279,9 +1279,9 @@ static struct TRACK_VIA_DESC
// TODO test drill, use getdrillvalue? // TODO test drill, use getdrillvalue?
propMgr.ReplaceProperty( TYPE_HASH( PCB_TRACK ), _HKI( "Width" ), propMgr.ReplaceProperty( TYPE_HASH( PCB_TRACK ), _HKI( "Width" ),
new PROPERTY<PCB_VIA, int, PCB_TRACK>( _HKI( "Diameter" ), new PROPERTY<PCB_VIA, int, PCB_TRACK>( _HKI( "Diameter" ),
&PCB_VIA::SetWidth, &PCB_VIA::GetWidth, PROPERTY_DISPLAY::DISTANCE ) ); &PCB_VIA::SetWidth, &PCB_VIA::GetWidth, PROPERTY_DISPLAY::SIZE ) );
propMgr.AddProperty( new PROPERTY<PCB_VIA, int>( _HKI( "Hole" ), propMgr.AddProperty( new PROPERTY<PCB_VIA, int>( _HKI( "Hole" ),
&PCB_VIA::SetDrill, &PCB_VIA::GetDrillValue, PROPERTY_DISPLAY::DISTANCE ) ); &PCB_VIA::SetDrill, &PCB_VIA::GetDrillValue, PROPERTY_DISPLAY::SIZE ) );
propMgr.ReplaceProperty( TYPE_HASH( BOARD_ITEM ), _HKI( "Layer" ), propMgr.ReplaceProperty( TYPE_HASH( BOARD_ITEM ), _HKI( "Layer" ),
new PROPERTY_ENUM<PCB_VIA, PCB_LAYER_ID, BOARD_ITEM>( _HKI( "Layer Top" ), new PROPERTY_ENUM<PCB_VIA, PCB_LAYER_ID, BOARD_ITEM>( _HKI( "Layer Top" ),
&PCB_VIA::SetLayer, &PCB_VIA::GetLayer ) ); &PCB_VIA::SetLayer, &PCB_VIA::GetLayer ) );

View File

@ -1299,18 +1299,18 @@ static struct ZONE_DESC
&ZONE::SetZoneName, &ZONE::GetZoneName ) ); &ZONE::SetZoneName, &ZONE::GetZoneName ) );
propMgr.AddProperty( new PROPERTY<ZONE, int>( _HKI( "Clearance Override" ), propMgr.AddProperty( new PROPERTY<ZONE, int>( _HKI( "Clearance Override" ),
&ZONE::SetLocalClearance, &ZONE::GetLocalClearance, &ZONE::SetLocalClearance, &ZONE::GetLocalClearance,
PROPERTY_DISPLAY::DISTANCE ) ); PROPERTY_DISPLAY::SIZE ) );
propMgr.AddProperty( new PROPERTY<ZONE, int>( _HKI( "Min Width" ), propMgr.AddProperty( new PROPERTY<ZONE, int>( _HKI( "Min Width" ),
&ZONE::SetMinThickness, &ZONE::GetMinThickness, &ZONE::SetMinThickness, &ZONE::GetMinThickness,
PROPERTY_DISPLAY::DISTANCE ) ); PROPERTY_DISPLAY::SIZE ) );
propMgr.AddProperty( new PROPERTY_ENUM<ZONE, ZONE_CONNECTION>( _HKI( "Pad Connections" ), propMgr.AddProperty( new PROPERTY_ENUM<ZONE, ZONE_CONNECTION>( _HKI( "Pad Connections" ),
&ZONE::SetPadConnection, &ZONE::GetPadConnection ) ); &ZONE::SetPadConnection, &ZONE::GetPadConnection ) );
propMgr.AddProperty( new PROPERTY<ZONE, int>( _HKI( "Thermal Relief Gap" ), propMgr.AddProperty( new PROPERTY<ZONE, int>( _HKI( "Thermal Relief Gap" ),
&ZONE::SetThermalReliefGap, &ZONE::GetThermalReliefGap, &ZONE::SetThermalReliefGap, &ZONE::GetThermalReliefGap,
PROPERTY_DISPLAY::DISTANCE ) ); PROPERTY_DISPLAY::SIZE ) );
propMgr.AddProperty( new PROPERTY<ZONE, int>( _HKI( "Thermal Relief Spoke Width" ), propMgr.AddProperty( new PROPERTY<ZONE, int>( _HKI( "Thermal Relief Spoke Width" ),
&ZONE::SetThermalReliefSpokeWidth, &ZONE::GetThermalReliefSpokeWidth, &ZONE::SetThermalReliefSpokeWidth, &ZONE::GetThermalReliefSpokeWidth,
PROPERTY_DISPLAY::DISTANCE ) ); PROPERTY_DISPLAY::SIZE ) );
} }
} _ZONE_DESC; } _ZONE_DESC;