mirror of
https://github.com/microsoft/PowerToys
synced 2025-08-22 10:07:37 +00:00
* [AdvancedPaste] Semantic Kernel support * Changed log-line with potentially sensitive info * Spellcheck issues * Various improvements for Semantic Kernel * Spellcheck issue * Refactored Clipboard routines * Added integration tests for KernelService * Extra telemetry for AdvancedPaste * Added 'Hotkey' suffix to AdvancedPaste_Settings telemetry event * Added IsSavedQuery * Added KernelQueryCache * Refactoring * Added KernelQueryCache to BugReportTool delete list * Added opt-n for Semantic Kernel * Fixed bug with KernelQueryCache * Ability to view last AI chat message on error * Improved kernel query cache * Used System.IO.Abstractions and improved tests * Fixed under-count of token usage * Used Semantic Kernel icon * Cleanup * Add missing EndProject line * Fix dependency version conflicts * Fix NOTICE.md * Correct place of SemanticKernel in NOTICE.md * Unlinked CustomPreview toggle from AI * Added Microsoft.Bcl.AsyncInterfaces dependency to AdvancedPaste * Fixed NOTICE.md order * Moved Custom Preview to behaviour section * Made Image to Text raise error on empty output * Added AIServiceBatchIntegrationTests * Updated AIServiceBatchIntegrationTests * Added prompt moderation * Moved GPO Infobar to better location
48 lines
1.7 KiB
C#
48 lines
1.7 KiB
C#
// Copyright (c) Microsoft Corporation
|
|
// The Microsoft Corporation licenses this file to you under the MIT license.
|
|
// See the LICENSE file in the project root for more information.
|
|
|
|
using System;
|
|
using System.IO;
|
|
using System.Linq;
|
|
using System.Reflection;
|
|
using System.Threading.Tasks;
|
|
|
|
using Windows.ApplicationModel.DataTransfer;
|
|
using Windows.Storage.Streams;
|
|
|
|
namespace AdvancedPaste.UnitTests.Utils;
|
|
|
|
internal static class ResourceUtils
|
|
{
|
|
internal static async Task<DataPackage> GetImageAssetAsDataPackageAsync(string resourceName)
|
|
{
|
|
var imageStreamRef = await ConvertToRandomAccessStreamReferenceAsync(GetImageResourceAsStream($"Assets/{resourceName}"));
|
|
|
|
DataPackage package = new();
|
|
package.SetBitmap(imageStreamRef);
|
|
return package;
|
|
}
|
|
|
|
private static async Task<RandomAccessStreamReference> ConvertToRandomAccessStreamReferenceAsync(Stream stream)
|
|
{
|
|
InMemoryRandomAccessStream inMemoryStream = new();
|
|
using var inputStream = stream.AsInputStream();
|
|
await RandomAccessStream.CopyAsync(inputStream, inMemoryStream);
|
|
|
|
inMemoryStream.Seek(0);
|
|
return RandomAccessStreamReference.CreateFromStream(inMemoryStream);
|
|
}
|
|
|
|
private static Stream GetImageResourceAsStream(string filename)
|
|
{
|
|
var assembly = Assembly.GetExecutingAssembly();
|
|
var assemblyName = new AssemblyName(assembly.FullName ?? throw new InvalidOperationException());
|
|
var resourceName = $"{assemblyName.Name}.{filename.Replace("/", ".")}";
|
|
|
|
return assembly.GetManifestResourceNames().Contains(resourceName)
|
|
? assembly.GetManifestResourceStream(resourceName)
|
|
: throw new InvalidOperationException($"Embedded resource '{resourceName}' does not exist.");
|
|
}
|
|
}
|