From b04d6dd01c3e64a9233936b8e56e1822507138b1 Mon Sep 17 00:00:00 2001 From: Matt Parker <61717342+MattParkerDev@users.noreply.github.com> Date: Sat, 1 Nov 2025 22:16:25 +1000 Subject: [PATCH] package details v1 --- .../Features/Nuget/ImageTextureHelper.cs | 25 +++++++++++++++++ .../Features/Nuget/ImageTextureHelper.cs.uid | 1 + .../Features/Nuget/NugetPackageDetails.cs | 28 +++++++++++++++++++ .../Features/Nuget/NugetPackageDetails.tscn | 8 ++++-- .../Features/Nuget/NugetPanel.cs | 4 +-- .../Features/Nuget/PackageEntry.cs | 18 ++++-------- 6 files changed, 67 insertions(+), 17 deletions(-) create mode 100644 src/SharpIDE.Godot/Features/Nuget/ImageTextureHelper.cs create mode 100644 src/SharpIDE.Godot/Features/Nuget/ImageTextureHelper.cs.uid diff --git a/src/SharpIDE.Godot/Features/Nuget/ImageTextureHelper.cs b/src/SharpIDE.Godot/Features/Nuget/ImageTextureHelper.cs new file mode 100644 index 0000000..882d67a --- /dev/null +++ b/src/SharpIDE.Godot/Features/Nuget/ImageTextureHelper.cs @@ -0,0 +1,25 @@ +using Godot; +using SharpIDE.Application.Features.Nuget; + +namespace SharpIDE.Godot.Features.Nuget; + +public static class ImageTextureHelper +{ + public static ImageTexture? GetImageTextureFromBytes(byte[]? imageBytes, NugetPackageIconFormat? format) + { + if (imageBytes is null || format is null) return null; + var image = new Image(); + var error = format switch + { + NugetPackageIconFormat.Png => image.LoadPngFromBuffer(imageBytes), + NugetPackageIconFormat.Jpg => image.LoadJpgFromBuffer(imageBytes), + _ => Error.FileUnrecognized + }; + if (error is Error.Ok) + { + image.Resize(32, 32, Image.Interpolation.Lanczos); // Probably should cache resized images instead + return ImageTexture.CreateFromImage(image); + } + return null!; + } +} \ No newline at end of file diff --git a/src/SharpIDE.Godot/Features/Nuget/ImageTextureHelper.cs.uid b/src/SharpIDE.Godot/Features/Nuget/ImageTextureHelper.cs.uid new file mode 100644 index 0000000..ed75e56 --- /dev/null +++ b/src/SharpIDE.Godot/Features/Nuget/ImageTextureHelper.cs.uid @@ -0,0 +1 @@ +uid://f62r1og43wye diff --git a/src/SharpIDE.Godot/Features/Nuget/NugetPackageDetails.cs b/src/SharpIDE.Godot/Features/Nuget/NugetPackageDetails.cs index c1d5bec..953662e 100644 --- a/src/SharpIDE.Godot/Features/Nuget/NugetPackageDetails.cs +++ b/src/SharpIDE.Godot/Features/Nuget/NugetPackageDetails.cs @@ -1,8 +1,36 @@ using Godot; +using SharpIDE.Application.Features.Nuget; namespace SharpIDE.Godot.Features.Nuget; public partial class NugetPackageDetails : VBoxContainer { + private TextureRect _packageIconTextureRect = null!; + private Label _packageNameLabel = null!; + + private IdePackageResult? _package; + [Inject] private readonly NugetPackageIconCacheService _nugetPackageIconCacheService = null!; + public override void _Ready() + { + _packageIconTextureRect = GetNode("%PackageIconTextureRect"); + _packageNameLabel = GetNode