Added TOOL_MANAGER & ACTION_MANAGER::RunAction( const TOOL_ACTION aAction ).
Selection clearing is invoked using TOOL_ACTION object rather than its name.
This commit is contained in:
parent
94cfed4b9e
commit
c5c83bd271
|
@ -94,12 +94,20 @@ bool ACTION_MANAGER::RunAction( const std::string& aActionName ) const
|
||||||
if( it == m_actionNameIndex.end() )
|
if( it == m_actionNameIndex.end() )
|
||||||
return false; // no action with given name found
|
return false; // no action with given name found
|
||||||
|
|
||||||
runAction( it->second );
|
RunAction( it->second );
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void ACTION_MANAGER::RunAction( const TOOL_ACTION* aAction ) const
|
||||||
|
{
|
||||||
|
TOOL_EVENT event = aAction->MakeEvent();
|
||||||
|
|
||||||
|
m_toolMgr->ProcessEvent( event );
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
bool ACTION_MANAGER::RunHotKey( int aHotKey ) const
|
bool ACTION_MANAGER::RunHotKey( int aHotKey ) const
|
||||||
{
|
{
|
||||||
std::map<int, TOOL_ACTION*>::const_iterator it = m_actionHotKeys.find( aHotKey );
|
std::map<int, TOOL_ACTION*>::const_iterator it = m_actionHotKeys.find( aHotKey );
|
||||||
|
@ -107,7 +115,7 @@ bool ACTION_MANAGER::RunHotKey( int aHotKey ) const
|
||||||
if( it == m_actionHotKeys.end() )
|
if( it == m_actionHotKeys.end() )
|
||||||
return false; // no appropriate action found for the hotkey
|
return false; // no appropriate action found for the hotkey
|
||||||
|
|
||||||
runAction( it->second );
|
RunAction( it->second );
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -117,11 +125,3 @@ void ACTION_MANAGER::ClearHotKey( int aHotKey )
|
||||||
{
|
{
|
||||||
m_actionHotKeys.erase( aHotKey );
|
m_actionHotKeys.erase( aHotKey );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void ACTION_MANAGER::runAction( const TOOL_ACTION* aAction ) const
|
|
||||||
{
|
|
||||||
TOOL_EVENT event = aAction->MakeEvent();
|
|
||||||
|
|
||||||
m_toolMgr->ProcessEvent( event );
|
|
||||||
}
|
|
||||||
|
|
|
@ -196,6 +196,12 @@ bool TOOL_MANAGER::RunAction( const std::string& aActionName )
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void TOOL_MANAGER::RunAction( const TOOL_ACTION& aAction )
|
||||||
|
{
|
||||||
|
m_actionMgr->RunAction( &aAction );
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
bool TOOL_MANAGER::invokeTool( TOOL_BASE* aTool )
|
bool TOOL_MANAGER::invokeTool( TOOL_BASE* aTool )
|
||||||
{
|
{
|
||||||
wxASSERT( aTool != NULL );
|
wxASSERT( aTool != NULL );
|
||||||
|
|
|
@ -81,6 +81,14 @@ public:
|
||||||
*/
|
*/
|
||||||
bool RunAction( const std::string& aActionName ) const;
|
bool RunAction( const std::string& aActionName ) const;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Function RunAction()
|
||||||
|
* Prepares an appropriate event and sends it to the destination specified in a TOOL_ACTION
|
||||||
|
* object.
|
||||||
|
* @param aAction is the action to be run.
|
||||||
|
*/
|
||||||
|
void RunAction( const TOOL_ACTION* aAction ) const;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Function RunHotKey()
|
* Function RunHotKey()
|
||||||
* Runs an action associated with a hotkey (if there is one available).
|
* Runs an action associated with a hotkey (if there is one available).
|
||||||
|
@ -108,14 +116,6 @@ private:
|
||||||
|
|
||||||
///> Map for indexing actions by their hotkeys
|
///> Map for indexing actions by their hotkeys
|
||||||
std::map<int, TOOL_ACTION*> m_actionHotKeys;
|
std::map<int, TOOL_ACTION*> m_actionHotKeys;
|
||||||
|
|
||||||
/**
|
|
||||||
* Function runAction()
|
|
||||||
* Prepares an appropriate event and sends it to the destination specified in a TOOL_ACTION
|
|
||||||
* object.
|
|
||||||
* @param aAction is the action to be run.
|
|
||||||
*/
|
|
||||||
void runAction( const TOOL_ACTION* aAction ) const;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif /* ACTION_MANAGER_H_ */
|
#endif /* ACTION_MANAGER_H_ */
|
||||||
|
|
|
@ -101,13 +101,21 @@ public:
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Function RunAction()
|
* Function RunAction()
|
||||||
* Runs the specified action. The common format is "application.ToolName.Action".
|
* Runs the specified action. The common format for action names is "application.ToolName.Action".
|
||||||
*
|
*
|
||||||
* @param aActionName is the name of action to be invoked.
|
* @param aActionName is the name of action to be invoked.
|
||||||
* @return True if the action finished successfully, false otherwise.
|
* @return True if the action finished successfully, false otherwise.
|
||||||
*/
|
*/
|
||||||
bool RunAction( const std::string& aActionName );
|
bool RunAction( const std::string& aActionName );
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Function RunAction()
|
||||||
|
* Runs the specified action.
|
||||||
|
*
|
||||||
|
* @param aAction is the action to be invoked.
|
||||||
|
*/
|
||||||
|
void RunAction( const TOOL_ACTION& aAction );
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Function FindTool()
|
* Function FindTool()
|
||||||
* Searches for a tool with given ID.
|
* Searches for a tool with given ID.
|
||||||
|
|
|
@ -1458,6 +1458,7 @@ void PCB_EDIT_FRAME::OnSelectTool( wxCommandEvent& aEvent )
|
||||||
if( IsGalCanvasActive() )
|
if( IsGalCanvasActive() )
|
||||||
{
|
{
|
||||||
std::string actionName = COMMON_ACTIONS::TranslateLegacyId( id );
|
std::string actionName = COMMON_ACTIONS::TranslateLegacyId( id );
|
||||||
|
|
||||||
if( !actionName.empty() )
|
if( !actionName.empty() )
|
||||||
m_toolManager->RunAction( actionName );
|
m_toolManager->RunAction( actionName );
|
||||||
|
|
||||||
|
|
|
@ -172,7 +172,7 @@ int EDIT_TOOL::Main( TOOL_EVENT& aEvent )
|
||||||
}
|
}
|
||||||
|
|
||||||
if( unselect )
|
if( unselect )
|
||||||
m_toolMgr->RunAction( "pcbnew.InteractiveSelection.Clear" );
|
m_toolMgr->RunAction( COMMON_ACTIONS::selectionClear );
|
||||||
|
|
||||||
RN_DATA* ratsnest = getModel<BOARD>( PCB_T )->GetRatsnest();
|
RN_DATA* ratsnest = getModel<BOARD>( PCB_T )->GetRatsnest();
|
||||||
ratsnest->ClearSimple();
|
ratsnest->ClearSimple();
|
||||||
|
@ -230,7 +230,7 @@ int EDIT_TOOL::Properties( TOOL_EVENT& aEvent )
|
||||||
getModel<BOARD>( PCB_T )->GetRatsnest()->Recalculate();
|
getModel<BOARD>( PCB_T )->GetRatsnest()->Recalculate();
|
||||||
|
|
||||||
if( unselect )
|
if( unselect )
|
||||||
m_toolMgr->RunAction( "pcbnew.InteractiveSelection.Clear" );
|
m_toolMgr->RunAction( COMMON_ACTIONS::selectionClear );
|
||||||
}
|
}
|
||||||
|
|
||||||
setTransitions();
|
setTransitions();
|
||||||
|
@ -277,7 +277,7 @@ int EDIT_TOOL::Rotate( TOOL_EVENT& aEvent )
|
||||||
getModel<BOARD>( PCB_T )->GetRatsnest()->Recalculate();
|
getModel<BOARD>( PCB_T )->GetRatsnest()->Recalculate();
|
||||||
|
|
||||||
if( unselect )
|
if( unselect )
|
||||||
m_toolMgr->RunAction( "pcbnew.InteractiveSelection.Clear" );
|
m_toolMgr->RunAction( COMMON_ACTIONS::selectionClear );
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -321,7 +321,7 @@ int EDIT_TOOL::Flip( TOOL_EVENT& aEvent )
|
||||||
getModel<BOARD>( PCB_T )->GetRatsnest()->Recalculate();
|
getModel<BOARD>( PCB_T )->GetRatsnest()->Recalculate();
|
||||||
|
|
||||||
if( unselect )
|
if( unselect )
|
||||||
m_toolMgr->RunAction( "pcbnew.InteractiveSelection.Clear" );
|
m_toolMgr->RunAction( COMMON_ACTIONS::selectionClear );
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -339,7 +339,7 @@ int EDIT_TOOL::Remove( TOOL_EVENT& aEvent )
|
||||||
PCB_EDIT_FRAME* editFrame = static_cast<PCB_EDIT_FRAME*>( m_toolMgr->GetEditFrame() );
|
PCB_EDIT_FRAME* editFrame = static_cast<PCB_EDIT_FRAME*>( m_toolMgr->GetEditFrame() );
|
||||||
|
|
||||||
// As we are about to remove items, they have to be removed from the selection first
|
// As we are about to remove items, they have to be removed from the selection first
|
||||||
m_toolMgr->RunAction( "pcbnew.InteractiveSelection.Clear" );
|
m_toolMgr->RunAction( COMMON_ACTIONS::selectionClear );
|
||||||
|
|
||||||
// Save them
|
// Save them
|
||||||
for( unsigned int i = 0; i < selectedItems.GetCount(); ++i )
|
for( unsigned int i = 0; i < selectedItems.GetCount(); ++i )
|
||||||
|
@ -461,7 +461,7 @@ bool EDIT_TOOL::makeSelection( const SELECTION_TOOL::SELECTION& aSelection )
|
||||||
if( aSelection.Empty() )
|
if( aSelection.Empty() )
|
||||||
{
|
{
|
||||||
// Try to find an item that could be modified
|
// Try to find an item that could be modified
|
||||||
m_toolMgr->RunAction( "pcbnew.InteractiveSelection.Single" );
|
m_toolMgr->RunAction( COMMON_ACTIONS::selectionSingle );
|
||||||
|
|
||||||
if( aSelection.Empty() )
|
if( aSelection.Empty() )
|
||||||
{
|
{
|
||||||
|
|
|
@ -123,7 +123,7 @@ int SELECTION_TOOL::Main( TOOL_EVENT& aEvent )
|
||||||
if( m_selection.Empty() )
|
if( m_selection.Empty() )
|
||||||
selectSingle( evt->Position() );
|
selectSingle( evt->Position() );
|
||||||
|
|
||||||
m_toolMgr->RunAction( "pcbnew.InteractiveEdit.properties" );
|
m_toolMgr->RunAction( COMMON_ACTIONS::properties );
|
||||||
}
|
}
|
||||||
|
|
||||||
// drag with LMB? Select multiple objects (or at least draw a selection box) or drag them
|
// drag with LMB? Select multiple objects (or at least draw a selection box) or drag them
|
||||||
|
|
Loading…
Reference in New Issue