update labels v1

This commit is contained in:
Matt Parker
2025-11-03 01:41:38 +10:00
parent cdf50d07b5
commit e4d1f0d729
2 changed files with 52 additions and 3 deletions

View File

@@ -12,6 +12,11 @@ public partial class NugetPanel : Control
private VBoxContainer _availablePackagesItemList = null!;
private OptionButton _solutionOrProjectOptionButton = null!;
private Label _installedPackagesSlnOrProjectNameLabel = null!;
private Label _installedPackagesResultCountLabel = null!;
private Label _implicitlyInstalledPackagesSlnOrProjectNameLabel = null!;
private Label _implicitlyInstalledPackagesResultCountLabel = null!;
private NugetPackageDetails _nugetPackageDetails = null!;
private SharpIdeSolutionModel? _solution;
@@ -23,6 +28,8 @@ public partial class NugetPanel : Control
private readonly Texture2D _csprojIcon = ResourceLoader.Load<Texture2D>("uid://cqt30ma6xgder");
private IdePackageResult? _selectedPackage;
// we use this to access the project for the dropdown
private List<SharpIdeProjectModel?> _projects = null!;
public override void _Ready()
{
@@ -31,6 +38,10 @@ public partial class NugetPanel : Control
_availablePackagesItemList = GetNode<VBoxContainer>("%AvailablePackagesVBoxContainer");
_solutionOrProjectOptionButton = GetNode<OptionButton>("%SolutionOrProjectOptionButton");
_nugetPackageDetails = GetNode<NugetPackageDetails>("%NugetPackageDetails");
_installedPackagesSlnOrProjectNameLabel = GetNode<Label>("%InstalledPackagesSlnOrProjectNameLabel");
_installedPackagesResultCountLabel = GetNode<Label>("%InstalledPackagesResultCountLabel");
//_implicitlyInstalledPackagesSlnOrProjectNameLabel = GetNode<Label>("%ImplicitlyInstalledPackagesSlnOrProjectNameLabel");
//_implicitlyInstalledPackagesResultCountLabel = GetNode<Label>("%ImplicitlyInstalledPackagesResultCountLabel");
_nugetPackageDetails.Visible = false;
_installedPackagesVboxContainer.QueueFreeChildren();
_implicitlyInstalledPackagesItemList.QueueFreeChildren();
@@ -43,9 +54,10 @@ public partial class NugetPanel : Control
{
await _sharpIdeSolutionAccessor.SolutionReadyTcs.Task;
_solution = _sharpIdeSolutionAccessor.SolutionModel;
_projects = [null!, .._solution!.AllProjects.OrderBy(s => s.Name)]; // So that index 0 is solution // Probably should use Item Metadata instead of this
await this.InvokeAsync(() =>
{
foreach (var project in _solution!.AllProjects.OrderBy(s => s.Name))
foreach (var project in _projects.Skip(1))
{
_solutionOrProjectOptionButton.AddIconItem(_csprojIcon, project.Name);
}
@@ -56,9 +68,11 @@ public partial class NugetPanel : Control
private void OnSolutionOrProjectSelected(long index)
{
var slnOrProject = (ISolutionOrProject?)_projects[(int)index] ?? _solution!;
_ = Task.GodotRun(async () =>
{
if (_solution is null) throw new InvalidOperationException("Solution is null but should not be");
_ = Task.GodotRun(() => SetSolutionOrProjectNameLabels(slnOrProject));
_ = Task.GodotRun(PopulateSearchResults);
_ = Task.GodotRun(PopulateInstalledPackages);
});
@@ -70,6 +84,20 @@ public partial class NugetPanel : Control
await _nugetPackageDetails.SetPackage(packageResult);
}
private async Task SetSolutionOrProjectNameLabels(ISolutionOrProject slnOrProject)
{
var text = slnOrProject switch
{
SharpIdeSolutionModel => "Solution",
SharpIdeProjectModel projectModel => projectModel.Name,
_ => throw new InvalidOperationException("Unknown solution or project type")
};
await this.InvokeAsync(() =>
{
return _installedPackagesSlnOrProjectNameLabel.Text = text;
});
}
private async Task PopulateSearchResults()
{
var result = await _nugetClientService.GetTop100Results(_solution!.DirectoryPath);

View File

@@ -89,10 +89,31 @@ layout_mode = 2
size_flags_horizontal = 3
size_flags_vertical = 3
[node name="Label" type="Label" parent="VBoxContainer/MarginContainer2/HSplitContainer/VBoxContainer/ScrollContainer/VBoxContainer"]
[node name="HBoxContainer" type="HBoxContainer" parent="VBoxContainer/MarginContainer2/HSplitContainer/VBoxContainer/ScrollContainer/VBoxContainer"]
layout_mode = 2
theme_override_constants/separation = 0
[node name="Label" type="Label" parent="VBoxContainer/MarginContainer2/HSplitContainer/VBoxContainer/ScrollContainer/VBoxContainer/HBoxContainer"]
layout_mode = 2
theme_override_colors/font_color = Color(0.67058825, 0.67058825, 0.67058825, 1)
text = "Installed Packages in Application: 4"
text = "Installed Packages in "
[node name="InstalledPackagesSlnOrProjectNameLabel" type="Label" parent="VBoxContainer/MarginContainer2/HSplitContainer/VBoxContainer/ScrollContainer/VBoxContainer/HBoxContainer"]
unique_name_in_owner = true
layout_mode = 2
theme_override_colors/font_color = Color(0.67058825, 0.67058825, 0.67058825, 1)
text = "Application"
[node name="Label3" type="Label" parent="VBoxContainer/MarginContainer2/HSplitContainer/VBoxContainer/ScrollContainer/VBoxContainer/HBoxContainer"]
layout_mode = 2
theme_override_colors/font_color = Color(0.67058825, 0.67058825, 0.67058825, 1)
text = ": "
[node name="InstalledPackagesResultCountLabel" type="Label" parent="VBoxContainer/MarginContainer2/HSplitContainer/VBoxContainer/ScrollContainer/VBoxContainer/HBoxContainer"]
unique_name_in_owner = true
layout_mode = 2
theme_override_colors/font_color = Color(0.67058825, 0.67058825, 0.67058825, 1)
text = "4"
[node name="PanelContainer" type="PanelContainer" parent="VBoxContainer/MarginContainer2/HSplitContainer/VBoxContainer/ScrollContainer/VBoxContainer"]
layout_mode = 2