From d356073798d6b438d7c0fb13bc75fe6b886669a0 Mon Sep 17 00:00:00 2001 From: Seth Hillbrand Date: Tue, 9 Sep 2025 12:57:50 -0700 Subject: [PATCH] ADDED: synthetic parameters for graphics Allows editing start/end/radius instead of underlying properties Fixes https://gitlab.com/kicad/code/kicad/issues/16279 --- pcbnew/pcb_shape.cpp | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/pcbnew/pcb_shape.cpp b/pcbnew/pcb_shape.cpp index cb1e0ed8c2..0f0a938433 100644 --- a/pcbnew/pcb_shape.cpp +++ b/pcbnew/pcb_shape.cpp @@ -991,6 +991,39 @@ static struct PCB_SHAPE_DESC propMgr.OverrideAvailability( TYPE_HASH( PCB_SHAPE ), TYPE_HASH( EDA_SHAPE ), _HKI( "Fill" ), isNotBezier ); + auto isCircle = + []( INSPECTABLE* aItem ) -> bool + { + if( PCB_SHAPE* shape = dynamic_cast( aItem ) ) + return shape->GetShape() == SHAPE_T::CIRCLE; + + return false; + }; + + auto isNotCircle = + []( INSPECTABLE* aItem ) -> bool + { + if( PCB_SHAPE* shape = dynamic_cast( aItem ) ) + return shape->GetShape() != SHAPE_T::CIRCLE; + + return true; + }; + + propMgr.OverrideAvailability( TYPE_HASH( PCB_SHAPE ), TYPE_HASH( EDA_SHAPE ), + _HKI( "Start X" ), isNotCircle ); + propMgr.OverrideAvailability( TYPE_HASH( PCB_SHAPE ), TYPE_HASH( EDA_SHAPE ), + _HKI( "Start Y" ), isNotCircle ); + propMgr.OverrideAvailability( TYPE_HASH( PCB_SHAPE ), TYPE_HASH( EDA_SHAPE ), + _HKI( "End X" ), isNotCircle ); + propMgr.OverrideAvailability( TYPE_HASH( PCB_SHAPE ), TYPE_HASH( EDA_SHAPE ), + _HKI( "End Y" ), isNotCircle ); + propMgr.OverrideAvailability( TYPE_HASH( PCB_SHAPE ), TYPE_HASH( EDA_SHAPE ), + _HKI( "Center X" ), isCircle ); + propMgr.OverrideAvailability( TYPE_HASH( PCB_SHAPE ), TYPE_HASH( EDA_SHAPE ), + _HKI( "Center Y" ), isCircle ); + propMgr.OverrideAvailability( TYPE_HASH( PCB_SHAPE ), TYPE_HASH( EDA_SHAPE ), + _HKI( "Radius" ), isCircle ); + auto isCopper = []( INSPECTABLE* aItem ) -> bool {