display installed version in details

This commit is contained in:
Matt Parker
2025-11-03 20:10:49 +10:00
parent dbc3ab82ff
commit 785080389e
3 changed files with 13 additions and 7 deletions

View File

@@ -1,4 +1,5 @@
using Godot; using Godot;
using SharpIDE.Application.Features.Evaluation;
using SharpIDE.Application.Features.Nuget; using SharpIDE.Application.Features.Nuget;
using SharpIDE.Application.Features.SolutionDiscovery.VsPersistence; using SharpIDE.Application.Features.SolutionDiscovery.VsPersistence;
@@ -43,6 +44,7 @@ public partial class NugetPackageDetails : VBoxContainer
}); });
var (iconBytes, iconFormat) = await iconTask; var (iconBytes, iconFormat) = await iconTask;
var imageTexture = ImageTextureHelper.GetImageTextureFromBytes(iconBytes, iconFormat) ?? _defaultIconTextureRect; var imageTexture = ImageTextureHelper.GetImageTextureFromBytes(iconBytes, iconFormat) ?? _defaultIconTextureRect;
await SetProjects(package.InstalledNugetPackageInfo!.ProjectPackageReferences);
await this.InvokeAsync(() => await this.InvokeAsync(() =>
{ {
_packageIconTextureRect.Texture = imageTexture; _packageIconTextureRect.Texture = imageTexture;
@@ -58,12 +60,14 @@ public partial class NugetPackageDetails : VBoxContainer
}); });
} }
public async Task SetProjects(HashSet<SharpIdeProjectModel> projects) public async Task SetProjects(List<ProjectPackageReference> projectPackageReferences)
{ {
var scenes = projects.Select(s => var scenes = projectPackageReferences.Select(s =>
{ {
var scene = _packageDetailsProjectEntryScene.Instantiate<PackageDetailsProjectEntry>(); var scene = _packageDetailsProjectEntryScene.Instantiate<PackageDetailsProjectEntry>();
scene.ProjectModel = s; scene.ProjectModel = s.Project;
scene.InstalledVersion = s.InstalledVersion;
scene.IsTransitive = s.IsTransitive;
return scene; return scene;
}).ToList(); }).ToList();
await this.InvokeAsync(() => await this.InvokeAsync(() =>

View File

@@ -72,7 +72,7 @@ public partial class NugetPanel : Control
{ {
if (_solution is null) throw new InvalidOperationException("Solution is null but should not be"); if (_solution is null) throw new InvalidOperationException("Solution is null but should not be");
_ = Task.GodotRun(() => SetSolutionOrProjectNameLabels(slnOrProject)); _ = Task.GodotRun(() => SetSolutionOrProjectNameLabels(slnOrProject));
_ = Task.GodotRun(() => SetDetailsProjects(slnOrProject)); //_ = Task.GodotRun(() => SetDetailsProjects(slnOrProject));
_ = Task.GodotRun(() => PopulateInstalledPackages(slnOrProject)); _ = Task.GodotRun(() => PopulateInstalledPackages(slnOrProject));
_ = Task.GodotRun(PopulateSearchResults); _ = Task.GodotRun(PopulateSearchResults);
}); });
@@ -91,7 +91,7 @@ public partial class NugetPanel : Control
SharpIdeProjectModel projectModel => [projectModel], SharpIdeProjectModel projectModel => [projectModel],
_ => throw new InvalidOperationException("Unknown solution or project type") _ => throw new InvalidOperationException("Unknown solution or project type")
}; };
await _nugetPackageDetails.SetProjects(projects); //await _nugetPackageDetails.SetProjects(projects);
} }
private async Task SetSolutionOrProjectNameLabels(ISolutionOrProject slnOrProject) private async Task SetSolutionOrProjectNameLabels(ISolutionOrProject slnOrProject)

View File

@@ -1,4 +1,5 @@
using Godot; using Godot;
using NuGet.Versioning;
using SharpIDE.Application.Features.SolutionDiscovery.VsPersistence; using SharpIDE.Application.Features.SolutionDiscovery.VsPersistence;
namespace SharpIDE.Godot.Features.Nuget; namespace SharpIDE.Godot.Features.Nuget;
@@ -9,7 +10,8 @@ public partial class PackageDetailsProjectEntry : MarginContainer
private Label _installedVersionLabel = null!; private Label _installedVersionLabel = null!;
public SharpIdeProjectModel ProjectModel { get; set; } = null!; public SharpIdeProjectModel ProjectModel { get; set; } = null!;
public string InstalledVersion { get; set; } = string.Empty; public NuGetVersion? InstalledVersion { get; set; }
public bool IsTransitive { get; set; }
public override void _Ready() public override void _Ready()
{ {
_projectNameLabel = GetNode<Label>("%ProjectNameLabel");; _projectNameLabel = GetNode<Label>("%ProjectNameLabel");;
@@ -21,6 +23,6 @@ public partial class PackageDetailsProjectEntry : MarginContainer
{ {
if (ProjectModel == null) return; if (ProjectModel == null) return;
_projectNameLabel.Text = ProjectModel.Name; _projectNameLabel.Text = ProjectModel.Name;
_installedVersionLabel.Text = InstalledVersion; _installedVersionLabel.Text = IsTransitive ? $"({InstalledVersion?.ToNormalizedString()})" : InstalledVersion?.ToNormalizedString();
} }
} }