conditionally show buttons
This commit is contained in:
@@ -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<OptionButton>("%NugetSourceOptionButton");
|
||||
_projectsVBoxContainer = GetNode<VBoxContainer>("%ProjectsVBoxContainer");
|
||||
_nugetSourceOptionButton.ItemSelected += OnNugetSourceSelected;
|
||||
_versionOptionButton.ItemSelected += VersionSelected;
|
||||
|
||||
_projectsVBoxContainer.QueueFreeChildren();
|
||||
}
|
||||
|
||||
private void VersionSelected(long index)
|
||||
{
|
||||
var selectedVersion = _versionOptionButton.GetItemMetadata((int)index).As<RefCountedContainer<NuGetVersion>>();
|
||||
foreach (var child in _projectsVBoxContainer.GetChildren().OfType<PackageDetailsProjectEntry>())
|
||||
{
|
||||
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<NuGetVersion>(metadata.Identity.Version));
|
||||
//_versionOptionButton.SetItemIcon(index, _warningIconTextureRect);
|
||||
}
|
||||
_versionOptionButton.Selected = 0;
|
||||
VersionSelected(0);
|
||||
});
|
||||
}
|
||||
}
|
||||
@@ -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<Label>("%ProjectNameLabel");;
|
||||
_installedVersionLabel = GetNode<Label>("%InstalledVersionLabel");
|
||||
_addButton = GetNode<Button>("%AddButton");
|
||||
_upgradeButton = GetNode<Button>("%UpgradeButton");
|
||||
_downgradeButton = GetNode<Button>("%DowngradeButton");
|
||||
_removeButton = GetNode<Button>("%RemoveButton");
|
||||
_installedVersionLabel.Text = string.Empty;
|
||||
SetValues();
|
||||
}
|
||||
@@ -43,6 +52,7 @@ public partial class PackageDetailsProjectEntry : MarginContainer
|
||||
{string.Join("\n", transitiveOriginsGroupedByVersion.Select(t => $"{t.RequestedVersion.ToString("p", VersionRangeFormatter.Instance)} by {string.Join(", ", t.PackageNames)}"))}
|
||||
""";
|
||||
}
|
||||
DisplayRelevantButtons();
|
||||
}
|
||||
|
||||
public void ClearInstallInfo()
|
||||
@@ -50,5 +60,40 @@ public partial class PackageDetailsProjectEntry : MarginContainer
|
||||
_installedVersionLabel.Text = string.Empty;
|
||||
_installedVersionLabel.TooltipText = string.Empty;
|
||||
ProjectPackageReference = null;
|
||||
DisplayRelevantButtons();
|
||||
}
|
||||
|
||||
public void DisplayRelevantButtons()
|
||||
{
|
||||
_addButton.Visible = false;
|
||||
_upgradeButton.Visible = false;
|
||||
_downgradeButton.Visible = false;
|
||||
_removeButton.Visible = false;
|
||||
|
||||
if (VersionSelectedInDetails == null)
|
||||
{
|
||||
_removeButton.Visible = true;
|
||||
return;
|
||||
}
|
||||
|
||||
if (ProjectPackageReference == null || ProjectPackageReference.IsTransitive)
|
||||
{
|
||||
_addButton.Visible = true;
|
||||
return;
|
||||
}
|
||||
|
||||
var installed = ProjectPackageReference.InstalledVersion;
|
||||
var selected = VersionSelectedInDetails;
|
||||
|
||||
if (installed < selected)
|
||||
{
|
||||
_upgradeButton.Visible = true;
|
||||
}
|
||||
else if (installed > selected)
|
||||
{
|
||||
_downgradeButton.Visible = true;
|
||||
}
|
||||
|
||||
_removeButton.Visible = true;
|
||||
}
|
||||
}
|
||||
@@ -52,17 +52,21 @@ layout_mode = 2
|
||||
size_flags_horizontal = 3
|
||||
|
||||
[node name="UpgradeButton" type="Button" parent="HBoxContainer"]
|
||||
unique_name_in_owner = true
|
||||
layout_mode = 2
|
||||
text = "Upgrade"
|
||||
|
||||
[node name="DowngradeButton" type="Button" parent="HBoxContainer"]
|
||||
unique_name_in_owner = true
|
||||
layout_mode = 2
|
||||
text = "Downgrade"
|
||||
|
||||
[node name="RemoveButton" type="Button" parent="HBoxContainer"]
|
||||
unique_name_in_owner = true
|
||||
layout_mode = 2
|
||||
text = "Remove"
|
||||
|
||||
[node name="AddButton" type="Button" parent="HBoxContainer"]
|
||||
unique_name_in_owner = true
|
||||
layout_mode = 2
|
||||
text = "Add"
|
||||
|
||||
Reference in New Issue
Block a user