tooltip in package details

This commit is contained in:
Matt Parker
2025-11-03 21:03:44 +10:00
parent 3c3eb646d3
commit a8c7e87228
3 changed files with 27 additions and 6 deletions

View File

@@ -86,12 +86,12 @@ public partial class NugetPackageDetails : VBoxContainer
if (projectPackageReferences.Count is 0)
{
scenes.ForEach(s => s.ClearInstallInfo());
return;
}
foreach (var projectPackageReference in projectPackageReferences)
{
var scene = scenes.Single(s => s.ProjectModel == projectPackageReference.Project);
scene.InstalledVersion = projectPackageReference.InstalledVersion;
scene.IsTransitive = projectPackageReference.IsTransitive;
scene.ProjectPackageReference = projectPackageReference;
scene.SetValues();
}
});

View File

@@ -1,5 +1,6 @@
using Godot;
using NuGet.Versioning;
using SharpIDE.Application.Features.Evaluation;
using SharpIDE.Application.Features.SolutionDiscovery.VsPersistence;
namespace SharpIDE.Godot.Features.Nuget;
@@ -10,12 +11,12 @@ public partial class PackageDetailsProjectEntry : MarginContainer
private Label _installedVersionLabel = null!;
public SharpIdeProjectModel ProjectModel { get; set; } = null!;
public NuGetVersion? InstalledVersion { get; set; }
public bool IsTransitive { get; set; }
public ProjectPackageReference? ProjectPackageReference { get; set; }
public override void _Ready()
{
_projectNameLabel = GetNode<Label>("%ProjectNameLabel");;
_installedVersionLabel = GetNode<Label>("%InstalledVersionLabel");
_installedVersionLabel.Text = string.Empty;
SetValues();
}
@@ -23,12 +24,31 @@ public partial class PackageDetailsProjectEntry : MarginContainer
{
if (ProjectModel == null) return;
_projectNameLabel.Text = ProjectModel.Name;
_installedVersionLabel.Text = IsTransitive ? $"({InstalledVersion?.ToNormalizedString()})" : InstalledVersion?.ToNormalizedString();
if (ProjectPackageReference == null) return;
var isTransitive = ProjectPackageReference.IsTransitive;
var installedVersion = ProjectPackageReference.InstalledVersion;
_installedVersionLabel.Text = isTransitive ? $"({installedVersion?.ToNormalizedString()})" : installedVersion?.ToNormalizedString();
if (isTransitive)
{
var transitiveOriginsGroupedByVersion = ProjectPackageReference.DependentPackages!.GroupBy(t => t.RequestedVersion)
.Select(g => new
{
RequestedVersion = g.Key,
PackageNames = g.Select(t => t.PackageName).Distinct().ToList()
})
.ToList();
_installedVersionLabel.TooltipText = $"""
Implicitly Referenced Versions
{string.Join("\n", transitiveOriginsGroupedByVersion.Select(t => $"{t.RequestedVersion.ToString("p", VersionRangeFormatter.Instance)} by {string.Join(", ", t.PackageNames)}"))}
""";
}
}
public void ClearInstallInfo()
{
_installedVersionLabel.Text = string.Empty;
InstalledVersion = null;
_installedVersionLabel.TooltipText = string.Empty;
ProjectPackageReference = null;
}
}

View File

@@ -42,6 +42,7 @@ text = "Application"
unique_name_in_owner = true
layout_mode = 2
size_flags_horizontal = 6
mouse_filter = 1
theme_override_colors/font_color = Color(0.6706895, 0.6706895, 0.6706895, 1)
text = "1.12.0"