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) if (projectPackageReferences.Count is 0)
{ {
scenes.ForEach(s => s.ClearInstallInfo()); scenes.ForEach(s => s.ClearInstallInfo());
return;
} }
foreach (var projectPackageReference in projectPackageReferences) foreach (var projectPackageReference in projectPackageReferences)
{ {
var scene = scenes.Single(s => s.ProjectModel == projectPackageReference.Project); var scene = scenes.Single(s => s.ProjectModel == projectPackageReference.Project);
scene.InstalledVersion = projectPackageReference.InstalledVersion; scene.ProjectPackageReference = projectPackageReference;
scene.IsTransitive = projectPackageReference.IsTransitive;
scene.SetValues(); scene.SetValues();
} }
}); });

View File

@@ -1,5 +1,6 @@
using Godot; using Godot;
using NuGet.Versioning; using NuGet.Versioning;
using SharpIDE.Application.Features.Evaluation;
using SharpIDE.Application.Features.SolutionDiscovery.VsPersistence; using SharpIDE.Application.Features.SolutionDiscovery.VsPersistence;
namespace SharpIDE.Godot.Features.Nuget; namespace SharpIDE.Godot.Features.Nuget;
@@ -10,12 +11,12 @@ 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 NuGetVersion? InstalledVersion { get; set; } public ProjectPackageReference? ProjectPackageReference { get; set; }
public bool IsTransitive { get; set; }
public override void _Ready() public override void _Ready()
{ {
_projectNameLabel = GetNode<Label>("%ProjectNameLabel");; _projectNameLabel = GetNode<Label>("%ProjectNameLabel");;
_installedVersionLabel = GetNode<Label>("%InstalledVersionLabel"); _installedVersionLabel = GetNode<Label>("%InstalledVersionLabel");
_installedVersionLabel.Text = string.Empty;
SetValues(); SetValues();
} }
@@ -23,12 +24,31 @@ public partial class PackageDetailsProjectEntry : MarginContainer
{ {
if (ProjectModel == null) return; if (ProjectModel == null) return;
_projectNameLabel.Text = ProjectModel.Name; _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() public void ClearInstallInfo()
{ {
_installedVersionLabel.Text = string.Empty; _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 unique_name_in_owner = true
layout_mode = 2 layout_mode = 2
size_flags_horizontal = 6 size_flags_horizontal = 6
mouse_filter = 1
theme_override_colors/font_color = Color(0.6706895, 0.6706895, 0.6706895, 1) theme_override_colors/font_color = Color(0.6706895, 0.6706895, 0.6706895, 1)
text = "1.12.0" text = "1.12.0"