diff --git a/src/SharpIDE.Godot/Features/Nuget/NugetPackageDetails.cs b/src/SharpIDE.Godot/Features/Nuget/NugetPackageDetails.cs index 53d6cfa..ebc6156 100644 --- a/src/SharpIDE.Godot/Features/Nuget/NugetPackageDetails.cs +++ b/src/SharpIDE.Godot/Features/Nuget/NugetPackageDetails.cs @@ -1,7 +1,9 @@ using Godot; +using NuGet.Versioning; using SharpIDE.Application.Features.Evaluation; using SharpIDE.Application.Features.Nuget; using SharpIDE.Application.Features.SolutionDiscovery.VsPersistence; +using SharpIDE.Godot.Features.Problems; namespace SharpIDE.Godot.Features.Nuget; @@ -29,10 +31,21 @@ public partial class NugetPackageDetails : VBoxContainer _nugetSourceOptionButton = GetNode("%NugetSourceOptionButton"); _projectsVBoxContainer = GetNode("%ProjectsVBoxContainer"); _nugetSourceOptionButton.ItemSelected += OnNugetSourceSelected; + _versionOptionButton.ItemSelected += VersionSelected; _projectsVBoxContainer.QueueFreeChildren(); } + private void VersionSelected(long index) + { + var selectedVersion = _versionOptionButton.GetItemMetadata((int)index).As>(); + foreach (var child in _projectsVBoxContainer.GetChildren().OfType()) + { + child.VersionSelectedInDetails = selectedVersion?.Item; + child.DisplayRelevantButtons(); + } + } + public async Task SetPackage(IdePackageResult package) { _package = package; @@ -106,10 +119,12 @@ public partial class NugetPackageDetails : VBoxContainer _versionOptionButton.Clear(); foreach (var (index, metadata) in results.Index()) { - _versionOptionButton.AddItem(metadata.Identity.Version.ToNormalizedString()); + _versionOptionButton.AddItem(metadata.Identity.Version.ToNormalizedString(), index); + _versionOptionButton.SetItemMetadata(index, new RefCountedContainer(metadata.Identity.Version)); //_versionOptionButton.SetItemIcon(index, _warningIconTextureRect); } _versionOptionButton.Selected = 0; + VersionSelected(0); }); } } \ No newline at end of file diff --git a/src/SharpIDE.Godot/Features/Nuget/PackageDetailsProjectEntry.cs b/src/SharpIDE.Godot/Features/Nuget/PackageDetailsProjectEntry.cs index 1584258..20cfba0 100644 --- a/src/SharpIDE.Godot/Features/Nuget/PackageDetailsProjectEntry.cs +++ b/src/SharpIDE.Godot/Features/Nuget/PackageDetailsProjectEntry.cs @@ -9,13 +9,22 @@ public partial class PackageDetailsProjectEntry : MarginContainer { private Label _projectNameLabel = null!; private Label _installedVersionLabel = null!; + private Button _addButton = null!; + private Button _upgradeButton = null!; + private Button _downgradeButton = null!; + private Button _removeButton = null!; public SharpIdeProjectModel ProjectModel { get; set; } = null!; public ProjectPackageReference? ProjectPackageReference { get; set; } + public NuGetVersion? VersionSelectedInDetails { get; set; } public override void _Ready() { _projectNameLabel = GetNode