MICROWAVE_TOOL_INFO getMicrowaveItemCreator( PCB_EDIT_FRAME& frame, int aParam ) { MICROWAVE_TOOL_INFO info; switch( aParam ) { case MWAVE_TOOL_SIMPLE_ID::GAP: info.name = _( "Add Gap" ); info.toolId = ID_PCB_MUWAVE_TOOL_GAP_CMD; info.creatorFunc = [&frame] () { return std::unique_ptr<MODULE>( frame.Create_MuWaveComponent( 0 ) ); }; break; case MWAVE_TOOL_SIMPLE_ID::STUB: info.name = _( "Add Stub" ); info.toolId = ID_PCB_MUWAVE_TOOL_STUB_CMD; info.creatorFunc = [&frame] () { return std::unique_ptr<MODULE>( frame.Create_MuWaveComponent( 1 ) ); }; break; case MWAVE_TOOL_SIMPLE_ID::STUB_ARC: info.name = _( "Add Stub (Arc)" ); info.toolId = ID_PCB_MUWAVE_TOOL_STUB_ARC_CMD; info.creatorFunc = [&frame] () { return std::unique_ptr<MODULE>( frame.Create_MuWaveComponent( 2 ) ); }; break; case MWAVE_TOOL_SIMPLE_ID::FUNCTION_SHAPE: info.name = _( "Add Polynomial Shape" ); info.toolId = ID_PCB_MUWAVE_TOOL_FUNCTION_SHAPE_CMD; info.creatorFunc = [&frame] () { return std::unique_ptr<MODULE>( frame.Create_MuWavePolygonShape() ); }; break; default: // Avoid uninitilized value: info.toolId = 0; // info.name is already set to empty string break; }; return info; }