diff --git a/common/tool/tool_manager.cpp b/common/tool/tool_manager.cpp index c3082eca70..86104e492b 100644 --- a/common/tool/tool_manager.cpp +++ b/common/tool/tool_manager.cpp @@ -92,7 +92,47 @@ void TOOL_MANAGER::RegisterTool( TOOL_BASE* aTool ) } -void TOOL_MANAGER::ScheduleNextState( TOOL_BASE *aTool, TOOL_STATE_FUNC& aHandler, +void TOOL_MANAGER::InvokeTool( TOOL_ID aToolId ) +{ + TOOL_BASE* tool = FindTool( aToolId ); + + if( tool && tool->GetType() == TOOL_Interactive ) + static_cast( tool )->Reset(); +} + + +void TOOL_MANAGER::InvokeTool( const std::string& aName ) +{ + TOOL_BASE* tool = FindTool( aName ); + + if( tool && tool->GetType() == TOOL_Interactive ) + static_cast( tool )->Reset(); +} + + +TOOL_BASE* TOOL_MANAGER::FindTool( int aId ) const +{ + std::map::const_iterator it = m_toolIdIndex.find( aId ); + + if( it != m_toolIdIndex.end() ) + return it->second->theTool; + + return NULL; +} + + +TOOL_BASE* TOOL_MANAGER::FindTool( const std::string& aName ) const +{ + std::map::const_iterator it = m_toolNameIndex.find( aName ); + + if( it != m_toolNameIndex.end() ) + return it->second->theTool; + + return NULL; +} + + +void TOOL_MANAGER::ScheduleNextState( TOOL_BASE* aTool, TOOL_STATE_FUNC& aHandler, const TOOL_EVENT_LIST& aConditions ) { ToolState* st = m_toolState[aTool];