Added TOOL_ACTION for PNS router activation.

Most of the GAL tools are activated by corresponding buttons on the right toolbar.
Removed menu entry for PNS router (as it is activated as the usual "Add track" tool).
This commit is contained in:
Maciej Suminski 2014-02-17 18:21:00 +01:00
parent e14d9aaf8f
commit a802ca87e0
9 changed files with 83 additions and 43 deletions

View File

@ -32,8 +32,6 @@
#include <class_drawpanel_gal.h>
#include <pcbnew_id.h>
#include <boost/optional.hpp>
#include <boost/foreach.hpp>
@ -273,19 +271,5 @@ void TOOL_DISPATCHER::DispatchWxEvent( wxEvent& aEvent )
void TOOL_DISPATCHER::DispatchWxCommand( const wxCommandEvent& aEvent )
{
bool activateTool = false;
std::string toolName;
// fixme: use TOOL_ACTIONs here
switch( aEvent.GetId() )
{
case ID_PNS_ROUTER_TOOL:
toolName = "pcbnew.InteractiveRouter";
activateTool = true;
break;
}
// do nothing if the legacy view is active
if( activateTool && m_editFrame->IsGalCanvasActive() )
m_toolMgr->InvokeTool( toolName );
// no events to dispatch currently
}

View File

@ -54,6 +54,9 @@
#include <dialog_global_edit_tracks_and_vias.h>
#include <invoke_pcb_dialog.h>
#include <tool/tool_manager.h>
#include <tools/common_actions.h>
// Handles the selection of command events.
void PCB_EDIT_FRAME::Process_Special_Functions( wxCommandEvent& event )
{
@ -1451,4 +1454,13 @@ void PCB_EDIT_FRAME::OnSelectTool( wxCommandEvent& aEvent )
break;
}
if( IsGalCanvasActive() )
{
std::string actionName = COMMON_ACTIONS::TranslateLegacyId( id );
if( !actionName.empty() )
m_toolManager->RunAction( actionName );
return;
}
}

View File

@ -312,13 +312,6 @@ void PCB_EDIT_FRAME::ReCreateMenuBar()
_( "Reset text size and width of all module fields to current defaults" ),
KiBitmap( reset_text_xpm ) );
editMenu->AppendSeparator();
AddMenuItem( editMenu, ID_PNS_ROUTER_TOOL,
_( "Interactive router" ),
_( "Interactive router drag&drop tool." ),
KiBitmap( tools_xpm ) );
/** Create View menu **/
wxMenu* viewMenu = new wxMenu;

View File

@ -126,12 +126,6 @@ BEGIN_EVENT_TABLE( PCB_EDIT_FRAME, PCB_BASE_FRAME )
EVT_MENU( wxID_EXIT, PCB_EDIT_FRAME::OnQuit )
// menu Config
/* Tom's hacks start */
EVT_MENU ( ID_PNS_ROUTER_TOOL, PCB_EDIT_FRAME::onGenericCommand )
EVT_TOOL ( ID_PNS_ROUTER_TOOL, PCB_EDIT_FRAME::onGenericCommand )
/* Tom's hacks end */
EVT_MENU( ID_PCB_DRAWINGS_WIDTHS_SETUP, PCB_EDIT_FRAME::OnConfigurePcbOptions )
EVT_MENU( ID_PCB_LIB_TABLE_EDIT, PCB_EDIT_FRAME::Process_Config )
EVT_MENU( ID_CONFIG_SAVE, PCB_EDIT_FRAME::Process_Config )

View File

@ -369,9 +369,7 @@ enum pcbnew_ids
ID_FOOTPRINT_WIZARD_PAGES_WINDOW,
ID_FOOTPRINT_WIZARD_PARAMETERS_WINDOW,
ID_FOOTPRINT_WIZARD_SELECT_WIZARD,
ID_FOOTPRINT_WIZARD_EXPORT_TO_BOARD,
ID_PNS_ROUTER_TOOL
ID_FOOTPRINT_WIZARD_EXPORT_TO_BOARD
};
#endif // PCBNEW_ID_H_

View File

@ -31,6 +31,7 @@
#include <pcb_painter.h>
#include <tool/context_menu.h>
#include <tools/common_actions.h>
#include <ratsnest_data.h>
@ -88,7 +89,7 @@ void ROUTER_TOOL::Reset( RESET_REASON aReason )
if( getView() )
m_router->SetView( getView() );
Go( &ROUTER_TOOL::Main, TOOL_EVENT( TC_COMMAND, TA_ACTION, GetName() ) );
Go( &ROUTER_TOOL::Main, COMMON_ACTIONS::routerActivate.MakeEvent() );
}

View File

@ -24,6 +24,7 @@
#include "common_actions.h"
#include <tool/action_manager.h>
#include <pcbnew_id.h>
#include <wx/defs.h>
// Selection tool actions
@ -57,38 +58,82 @@ TOOL_ACTION COMMON_ACTIONS::properties( "pcbnew.InteractiveEdit.properties",
AS_GLOBAL, 'E',
"Properties...", "Displays properties window" );
// Drawing tool actions
TOOL_ACTION COMMON_ACTIONS::drawLine( "pcbnew.InteractiveDrawing.line",
AS_GLOBAL, 'D',
AS_GLOBAL, 0,
"Draw a line", "Draw a line" );
TOOL_ACTION COMMON_ACTIONS::drawCircle( "pcbnew.InteractiveDrawing.circle",
AS_GLOBAL, 'S',
AS_GLOBAL, 0,
"Draw a circle", "Draw a circle" );
TOOL_ACTION COMMON_ACTIONS::drawArc( "pcbnew.InteractiveDrawing.arc",
AS_GLOBAL, 'A',
AS_GLOBAL, 0,
"Draw an arc", "Draw an arc" );
TOOL_ACTION COMMON_ACTIONS::drawText( "pcbnew.InteractiveDrawing.text",
AS_GLOBAL, 'T',
AS_GLOBAL, 0,
"Add a text", "Add a text" );
TOOL_ACTION COMMON_ACTIONS::drawDimension( "pcbnew.InteractiveDrawing.dimension",
AS_GLOBAL, 'X',
AS_GLOBAL, 0,
"Add a dimension", "Add a dimension" );
TOOL_ACTION COMMON_ACTIONS::drawZone( "pcbnew.InteractiveDrawing.zone",
AS_GLOBAL, 'B',
AS_GLOBAL, 0,
"Add a filled zone", "Add a filled zone" );
TOOL_ACTION COMMON_ACTIONS::drawKeepout( "pcbnew.InteractiveDrawing.keepout",
AS_GLOBAL, 'N',
AS_GLOBAL, 0,
"Add a keepout area", "Add a keepout area" );
TOOL_ACTION COMMON_ACTIONS::placeTarget( "pcbnew.InteractiveDrawing.placeTarget",
AS_GLOBAL, 'C',
AS_GLOBAL, 0,
"Add layer alignment target", "Add layer alignment target" );
TOOL_ACTION COMMON_ACTIONS::placeModule( "pcbnew.InteractiveDrawing.placeModule",
AS_GLOBAL, 'V',
AS_GLOBAL, 0,
"Add modules", "Add modules" );
TOOL_ACTION COMMON_ACTIONS::routerActivate( "pcbnew.InteractiveRouter",
AS_GLOBAL, 0,
"Run push & shove router", "Run push & shove router" );
std::string COMMON_ACTIONS::TranslateLegacyId( int aId )
{
switch( aId )
{
case ID_PCB_MODULE_BUTT:
return COMMON_ACTIONS::placeModule.GetName();
case ID_TRACK_BUTT:
return COMMON_ACTIONS::routerActivate.GetName();
case ID_PCB_ZONES_BUTT:
return COMMON_ACTIONS::drawZone.GetName();
case ID_PCB_KEEPOUT_AREA_BUTT:
return COMMON_ACTIONS::drawKeepout.GetName();
case ID_PCB_ADD_LINE_BUTT:
return COMMON_ACTIONS::drawLine.GetName();
case ID_PCB_CIRCLE_BUTT:
return COMMON_ACTIONS::drawCircle.GetName();
case ID_PCB_ARC_BUTT:
return COMMON_ACTIONS::drawArc.GetName();
case ID_PCB_ADD_TEXT_BUTT:
return COMMON_ACTIONS::drawText.GetName();
case ID_PCB_DIMENSION_BUTT:
return COMMON_ACTIONS::drawDimension.GetName();
case ID_PCB_MIRE_BUTT:
return COMMON_ACTIONS::placeTarget.GetName();
}
return "";
}

View File

@ -83,4 +83,16 @@ public:
/// Activation of the drawing tool (placing a MODULE)
static TOOL_ACTION placeModule;
/// Activation of the Push and Shove router
static TOOL_ACTION routerActivate;
/**
* Function TranslateLegacyId()
* Translates legacy tool ids to the corresponding TOOL_ACTION name.
* @param aId is legacy tool id to be translated.
* @return std::string is name of the corresponding TOOL_ACTION. It may be empty, if there is
* no corresponding TOOL_ACTION.
*/
static std::string TranslateLegacyId( int aId );
};

View File

@ -64,6 +64,7 @@ void PCB_EDIT_FRAME::setupTools()
m_toolManager->RegisterAction( &COMMON_ACTIONS::drawKeepout );
m_toolManager->RegisterAction( &COMMON_ACTIONS::placeTarget );
m_toolManager->RegisterAction( &COMMON_ACTIONS::placeModule );
m_toolManager->RegisterAction( &COMMON_ACTIONS::routerActivate );
// Register tools
m_toolManager->RegisterTool( new SELECTION_TOOL );