Added feature to switch between router modes
Fixes https://gitlab.com/kicad/code/kicad/-/issues/9414
This commit is contained in:
parent
b42fce430d
commit
4afb59fda0
|
@ -1239,6 +1239,24 @@ int ROUTER_TOOL::ChangeRouterMode( const TOOL_EVENT& aEvent )
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
int ROUTER_TOOL::CycleRouterMode( const TOOL_EVENT& aEvent )
|
||||||
|
{
|
||||||
|
PNS::ROUTING_SETTINGS& settings = m_router->Settings();
|
||||||
|
PNS::PNS_MODE mode = settings.Mode();
|
||||||
|
|
||||||
|
switch( mode )
|
||||||
|
{
|
||||||
|
case PNS::RM_MarkObstacles: mode = PNS::RM_Shove; break;
|
||||||
|
case PNS::RM_Shove: mode = PNS::RM_Walkaround; break;
|
||||||
|
case PNS::RM_Walkaround: mode = PNS::RM_MarkObstacles; break;
|
||||||
|
}
|
||||||
|
|
||||||
|
settings.SetMode( mode );
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
PNS::PNS_MODE ROUTER_TOOL::GetRouterMode()
|
PNS::PNS_MODE ROUTER_TOOL::GetRouterMode()
|
||||||
{
|
{
|
||||||
return m_router->Settings().Mode();
|
return m_router->Settings().Mode();
|
||||||
|
@ -2007,6 +2025,7 @@ void ROUTER_TOOL::setTransitions()
|
||||||
Go( &ROUTER_TOOL::ChangeRouterMode, PCB_ACTIONS::routerHighlightMode.MakeEvent() );
|
Go( &ROUTER_TOOL::ChangeRouterMode, PCB_ACTIONS::routerHighlightMode.MakeEvent() );
|
||||||
Go( &ROUTER_TOOL::ChangeRouterMode, PCB_ACTIONS::routerShoveMode.MakeEvent() );
|
Go( &ROUTER_TOOL::ChangeRouterMode, PCB_ACTIONS::routerShoveMode.MakeEvent() );
|
||||||
Go( &ROUTER_TOOL::ChangeRouterMode, PCB_ACTIONS::routerWalkaroundMode.MakeEvent() );
|
Go( &ROUTER_TOOL::ChangeRouterMode, PCB_ACTIONS::routerWalkaroundMode.MakeEvent() );
|
||||||
|
Go( &ROUTER_TOOL::CycleRouterMode, PCB_ACTIONS::cycleRouterMode.MakeEvent() );
|
||||||
Go( &ROUTER_TOOL::InlineDrag, PCB_ACTIONS::routerInlineDrag.MakeEvent() );
|
Go( &ROUTER_TOOL::InlineDrag, PCB_ACTIONS::routerInlineDrag.MakeEvent() );
|
||||||
Go( &ROUTER_TOOL::InlineBreakTrack, PCB_ACTIONS::inlineBreakTrack.MakeEvent() );
|
Go( &ROUTER_TOOL::InlineBreakTrack, PCB_ACTIONS::inlineBreakTrack.MakeEvent() );
|
||||||
|
|
||||||
|
|
|
@ -44,6 +44,7 @@ public:
|
||||||
int DpDimensionsDialog( const TOOL_EVENT& aEvent );
|
int DpDimensionsDialog( const TOOL_EVENT& aEvent );
|
||||||
int SettingsDialog( const TOOL_EVENT& aEvent );
|
int SettingsDialog( const TOOL_EVENT& aEvent );
|
||||||
int ChangeRouterMode( const TOOL_EVENT& aEvent );
|
int ChangeRouterMode( const TOOL_EVENT& aEvent );
|
||||||
|
int CycleRouterMode( const TOOL_EVENT& aEvent );
|
||||||
int CustomTrackWidthDialog( const TOOL_EVENT& aEvent );
|
int CustomTrackWidthDialog( const TOOL_EVENT& aEvent );
|
||||||
|
|
||||||
PNS::PNS_MODE GetRouterMode();
|
PNS::PNS_MODE GetRouterMode();
|
||||||
|
|
|
@ -1342,6 +1342,11 @@ TOOL_ACTION PCB_ACTIONS::routerWalkaroundMode( "pcbnew.InteractiveRouter.Walkaro
|
||||||
_( "Router Walkaround Mode" ), _( "Switch router to walkaround mode" ),
|
_( "Router Walkaround Mode" ), _( "Switch router to walkaround mode" ),
|
||||||
BITMAPS::INVALID_BITMAP, AF_NONE, (void*) PNS::RM_Walkaround );
|
BITMAPS::INVALID_BITMAP, AF_NONE, (void*) PNS::RM_Walkaround );
|
||||||
|
|
||||||
|
TOOL_ACTION PCB_ACTIONS::cycleRouterMode( "pcbnew.InteractiveRouter.CycleRouterMode",
|
||||||
|
AS_GLOBAL, 0, "",
|
||||||
|
_( "Cycle Router Mode" ), _( "Cycle router to the next mode" ),
|
||||||
|
BITMAPS::INVALID_BITMAP);
|
||||||
|
|
||||||
TOOL_ACTION PCB_ACTIONS::selectLayerPair( "pcbnew.InteractiveRouter.SelectLayerPair",
|
TOOL_ACTION PCB_ACTIONS::selectLayerPair( "pcbnew.InteractiveRouter.SelectLayerPair",
|
||||||
AS_GLOBAL, 0, "",
|
AS_GLOBAL, 0, "",
|
||||||
_( "Set Layer Pair..." ), _( "Change active layer pair for routing" ),
|
_( "Set Layer Pair..." ), _( "Change active layer pair for routing" ),
|
||||||
|
|
|
@ -200,6 +200,7 @@ public:
|
||||||
static TOOL_ACTION routerHighlightMode;
|
static TOOL_ACTION routerHighlightMode;
|
||||||
static TOOL_ACTION routerShoveMode;
|
static TOOL_ACTION routerShoveMode;
|
||||||
static TOOL_ACTION routerWalkaroundMode;
|
static TOOL_ACTION routerWalkaroundMode;
|
||||||
|
static TOOL_ACTION cycleRouterMode;
|
||||||
|
|
||||||
/// Activation of the Push and Shove router (inline dragging mode)
|
/// Activation of the Push and Shove router (inline dragging mode)
|
||||||
static TOOL_ACTION routerInlineDrag;
|
static TOOL_ACTION routerInlineDrag;
|
||||||
|
|
Loading…
Reference in New Issue