diff --git a/pcbnew/board_connected_item.cpp b/pcbnew/board_connected_item.cpp index 00280091cd..c365434cde 100644 --- a/pcbnew/board_connected_item.cpp +++ b/pcbnew/board_connected_item.cpp @@ -155,10 +155,6 @@ static struct BOARD_CONNECTED_ITEM_DESC REGISTER_TYPE( BOARD_CONNECTED_ITEM ); propMgr.InheritsAfter( TYPE_HASH( BOARD_CONNECTED_ITEM ), TYPE_HASH( BOARD_ITEM ) ); - propMgr.ReplaceProperty( TYPE_HASH( BOARD_ITEM ), _HKI( "Layer" ), - new PROPERTY_ENUM( _HKI( "Layer" ), - &BOARD_CONNECTED_ITEM::SetLayer, &BOARD_CONNECTED_ITEM::GetLayer ) ); - propMgr.AddProperty( new PROPERTY_ENUM( _HKI( "Net" ), &BOARD_CONNECTED_ITEM::SetNetCode, &BOARD_CONNECTED_ITEM::GetNetCode ) ); propMgr.AddProperty( new PROPERTY( _HKI( "Net Name" ), diff --git a/pcbnew/dialogs/pcb_properties_panel.cpp b/pcbnew/dialogs/pcb_properties_panel.cpp index 330a83e096..29fd44097b 100644 --- a/pcbnew/dialogs/pcb_properties_panel.cpp +++ b/pcbnew/dialogs/pcb_properties_panel.cpp @@ -28,6 +28,7 @@ #include #include #include +#include #include @@ -101,21 +102,22 @@ void PCB_PROPERTIES_PANEL::valueChanged( wxPropertyGridEvent& aEvent ) void PCB_PROPERTIES_PANEL::updateLists( const BOARD* aBoard ) { - wxPGChoices layersAll, layersCu, layersNonCu, nets; + wxPGChoices layersAll, layersCu, nets; // Regenerate all layers - for( LSEQ layerSeq = aBoard->GetEnabledLayers().UIOrder(); layerSeq; ++layerSeq ) - layersAll.Add( LSET::Name( *layerSeq ), *layerSeq ); + for( LSEQ seq = aBoard->GetEnabledLayers().UIOrder(); seq; ++seq ) + layersAll.Add( LSET::Name( *seq ), *seq ); - if( m_propMgr.GetProperty( TYPE_HASH( BOARD_ITEM ), _HKI( "Layer" ) ) ) - m_propMgr.GetProperty( TYPE_HASH( BOARD_ITEM ), _HKI( "Layer" ) )->SetChoices( layersAll ); + for( LSEQ seq = LSET( aBoard->GetEnabledLayers() & LSET::AllCuMask() ).UIOrder(); seq; ++seq ) + layersCu.Add( LSET::Name( *seq ), *seq ); - if( m_propMgr.GetProperty( TYPE_HASH( PCB_SHAPE ), _HKI( "Layer" ) ) ) - m_propMgr.GetProperty( TYPE_HASH( PCB_SHAPE ), _HKI( "Layer" ) )->SetChoices( layersAll ); + m_propMgr.GetProperty( TYPE_HASH( BOARD_ITEM ), _HKI( "Layer" ) )->SetChoices( layersAll ); + m_propMgr.GetProperty( TYPE_HASH( PCB_SHAPE ), _HKI( "Layer" ) )->SetChoices( layersAll ); - if( m_propMgr.GetProperty( TYPE_HASH( BOARD_CONNECTED_ITEM ), _HKI( "Layer" ) ) ) - m_propMgr.GetProperty( TYPE_HASH( BOARD_CONNECTED_ITEM ), _HKI( "Layer" ) ) - ->SetChoices( layersAll ); + // Copper only properties + m_propMgr.GetProperty( TYPE_HASH( BOARD_CONNECTED_ITEM ), _HKI( "Layer" ) )->SetChoices( layersCu ); + m_propMgr.GetProperty( TYPE_HASH( PCB_VIA ), _HKI( "Layer Top" ) )->SetChoices( layersCu ); + m_propMgr.GetProperty( TYPE_HASH( PCB_VIA ), _HKI( "Layer Bottom" ) )->SetChoices( layersCu ); // Regenerate nets for( const auto& netinfo : aBoard->GetNetInfo().NetsByNetcode() ) diff --git a/pcbnew/pcb_shape.cpp b/pcbnew/pcb_shape.cpp index 43eed770bb..c280e35129 100644 --- a/pcbnew/pcb_shape.cpp +++ b/pcbnew/pcb_shape.cpp @@ -318,6 +318,7 @@ static struct PCB_SHAPE_DESC REGISTER_TYPE( PCB_SHAPE ); propMgr.AddTypeCast( new TYPE_CAST ); propMgr.AddTypeCast( new TYPE_CAST ); + propMgr.InheritsAfter( TYPE_HASH( PCB_SHAPE ), TYPE_HASH( BOARD_ITEM ) ); propMgr.InheritsAfter( TYPE_HASH( PCB_SHAPE ), TYPE_HASH( EDA_SHAPE ) ); } } _PCB_SHAPE_DESC;