conditionally show buttons
This commit is contained in:
@@ -1,7 +1,9 @@
|
|||||||
using Godot;
|
using Godot;
|
||||||
|
using NuGet.Versioning;
|
||||||
using SharpIDE.Application.Features.Evaluation;
|
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;
|
||||||
|
using SharpIDE.Godot.Features.Problems;
|
||||||
|
|
||||||
namespace SharpIDE.Godot.Features.Nuget;
|
namespace SharpIDE.Godot.Features.Nuget;
|
||||||
|
|
||||||
@@ -29,10 +31,21 @@ public partial class NugetPackageDetails : VBoxContainer
|
|||||||
_nugetSourceOptionButton = GetNode<OptionButton>("%NugetSourceOptionButton");
|
_nugetSourceOptionButton = GetNode<OptionButton>("%NugetSourceOptionButton");
|
||||||
_projectsVBoxContainer = GetNode<VBoxContainer>("%ProjectsVBoxContainer");
|
_projectsVBoxContainer = GetNode<VBoxContainer>("%ProjectsVBoxContainer");
|
||||||
_nugetSourceOptionButton.ItemSelected += OnNugetSourceSelected;
|
_nugetSourceOptionButton.ItemSelected += OnNugetSourceSelected;
|
||||||
|
_versionOptionButton.ItemSelected += VersionSelected;
|
||||||
|
|
||||||
_projectsVBoxContainer.QueueFreeChildren();
|
_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)
|
public async Task SetPackage(IdePackageResult package)
|
||||||
{
|
{
|
||||||
_package = package;
|
_package = package;
|
||||||
@@ -106,10 +119,12 @@ public partial class NugetPackageDetails : VBoxContainer
|
|||||||
_versionOptionButton.Clear();
|
_versionOptionButton.Clear();
|
||||||
foreach (var (index, metadata) in results.Index())
|
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.SetItemIcon(index, _warningIconTextureRect);
|
||||||
}
|
}
|
||||||
_versionOptionButton.Selected = 0;
|
_versionOptionButton.Selected = 0;
|
||||||
|
VersionSelected(0);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -9,13 +9,22 @@ public partial class PackageDetailsProjectEntry : MarginContainer
|
|||||||
{
|
{
|
||||||
private Label _projectNameLabel = null!;
|
private Label _projectNameLabel = null!;
|
||||||
private Label _installedVersionLabel = 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 SharpIdeProjectModel ProjectModel { get; set; } = null!;
|
||||||
public ProjectPackageReference? ProjectPackageReference { get; set; }
|
public ProjectPackageReference? ProjectPackageReference { get; set; }
|
||||||
|
public NuGetVersion? VersionSelectedInDetails { 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");
|
||||||
|
_addButton = GetNode<Button>("%AddButton");
|
||||||
|
_upgradeButton = GetNode<Button>("%UpgradeButton");
|
||||||
|
_downgradeButton = GetNode<Button>("%DowngradeButton");
|
||||||
|
_removeButton = GetNode<Button>("%RemoveButton");
|
||||||
_installedVersionLabel.Text = string.Empty;
|
_installedVersionLabel.Text = string.Empty;
|
||||||
SetValues();
|
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)}"))}
|
{string.Join("\n", transitiveOriginsGroupedByVersion.Select(t => $"{t.RequestedVersion.ToString("p", VersionRangeFormatter.Instance)} by {string.Join(", ", t.PackageNames)}"))}
|
||||||
""";
|
""";
|
||||||
}
|
}
|
||||||
|
DisplayRelevantButtons();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void ClearInstallInfo()
|
public void ClearInstallInfo()
|
||||||
@@ -50,5 +60,40 @@ public partial class PackageDetailsProjectEntry : MarginContainer
|
|||||||
_installedVersionLabel.Text = string.Empty;
|
_installedVersionLabel.Text = string.Empty;
|
||||||
_installedVersionLabel.TooltipText = string.Empty;
|
_installedVersionLabel.TooltipText = string.Empty;
|
||||||
ProjectPackageReference = null;
|
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
|
size_flags_horizontal = 3
|
||||||
|
|
||||||
[node name="UpgradeButton" type="Button" parent="HBoxContainer"]
|
[node name="UpgradeButton" type="Button" parent="HBoxContainer"]
|
||||||
|
unique_name_in_owner = true
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
text = "Upgrade"
|
text = "Upgrade"
|
||||||
|
|
||||||
[node name="DowngradeButton" type="Button" parent="HBoxContainer"]
|
[node name="DowngradeButton" type="Button" parent="HBoxContainer"]
|
||||||
|
unique_name_in_owner = true
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
text = "Downgrade"
|
text = "Downgrade"
|
||||||
|
|
||||||
[node name="RemoveButton" type="Button" parent="HBoxContainer"]
|
[node name="RemoveButton" type="Button" parent="HBoxContainer"]
|
||||||
|
unique_name_in_owner = true
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
text = "Remove"
|
text = "Remove"
|
||||||
|
|
||||||
[node name="AddButton" type="Button" parent="HBoxContainer"]
|
[node name="AddButton" type="Button" parent="HBoxContainer"]
|
||||||
|
unique_name_in_owner = true
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
text = "Add"
|
text = "Add"
|
||||||
|
|||||||
Reference in New Issue
Block a user