update labels v1
This commit is contained in:
@@ -12,6 +12,11 @@ public partial class NugetPanel : Control
|
|||||||
private VBoxContainer _availablePackagesItemList = null!;
|
private VBoxContainer _availablePackagesItemList = null!;
|
||||||
private OptionButton _solutionOrProjectOptionButton = 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 NugetPackageDetails _nugetPackageDetails = null!;
|
||||||
|
|
||||||
private SharpIdeSolutionModel? _solution;
|
private SharpIdeSolutionModel? _solution;
|
||||||
@@ -23,6 +28,8 @@ public partial class NugetPanel : Control
|
|||||||
private readonly Texture2D _csprojIcon = ResourceLoader.Load<Texture2D>("uid://cqt30ma6xgder");
|
private readonly Texture2D _csprojIcon = ResourceLoader.Load<Texture2D>("uid://cqt30ma6xgder");
|
||||||
|
|
||||||
private IdePackageResult? _selectedPackage;
|
private IdePackageResult? _selectedPackage;
|
||||||
|
// we use this to access the project for the dropdown
|
||||||
|
private List<SharpIdeProjectModel?> _projects = null!;
|
||||||
|
|
||||||
public override void _Ready()
|
public override void _Ready()
|
||||||
{
|
{
|
||||||
@@ -31,6 +38,10 @@ public partial class NugetPanel : Control
|
|||||||
_availablePackagesItemList = GetNode<VBoxContainer>("%AvailablePackagesVBoxContainer");
|
_availablePackagesItemList = GetNode<VBoxContainer>("%AvailablePackagesVBoxContainer");
|
||||||
_solutionOrProjectOptionButton = GetNode<OptionButton>("%SolutionOrProjectOptionButton");
|
_solutionOrProjectOptionButton = GetNode<OptionButton>("%SolutionOrProjectOptionButton");
|
||||||
_nugetPackageDetails = GetNode<NugetPackageDetails>("%NugetPackageDetails");
|
_nugetPackageDetails = GetNode<NugetPackageDetails>("%NugetPackageDetails");
|
||||||
|
_installedPackagesSlnOrProjectNameLabel = GetNode<Label>("%InstalledPackagesSlnOrProjectNameLabel");
|
||||||
|
_installedPackagesResultCountLabel = GetNode<Label>("%InstalledPackagesResultCountLabel");
|
||||||
|
//_implicitlyInstalledPackagesSlnOrProjectNameLabel = GetNode<Label>("%ImplicitlyInstalledPackagesSlnOrProjectNameLabel");
|
||||||
|
//_implicitlyInstalledPackagesResultCountLabel = GetNode<Label>("%ImplicitlyInstalledPackagesResultCountLabel");
|
||||||
_nugetPackageDetails.Visible = false;
|
_nugetPackageDetails.Visible = false;
|
||||||
_installedPackagesVboxContainer.QueueFreeChildren();
|
_installedPackagesVboxContainer.QueueFreeChildren();
|
||||||
_implicitlyInstalledPackagesItemList.QueueFreeChildren();
|
_implicitlyInstalledPackagesItemList.QueueFreeChildren();
|
||||||
@@ -43,9 +54,10 @@ public partial class NugetPanel : Control
|
|||||||
{
|
{
|
||||||
await _sharpIdeSolutionAccessor.SolutionReadyTcs.Task;
|
await _sharpIdeSolutionAccessor.SolutionReadyTcs.Task;
|
||||||
_solution = _sharpIdeSolutionAccessor.SolutionModel;
|
_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(() =>
|
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);
|
_solutionOrProjectOptionButton.AddIconItem(_csprojIcon, project.Name);
|
||||||
}
|
}
|
||||||
@@ -56,9 +68,11 @@ public partial class NugetPanel : Control
|
|||||||
|
|
||||||
private void OnSolutionOrProjectSelected(long index)
|
private void OnSolutionOrProjectSelected(long index)
|
||||||
{
|
{
|
||||||
|
var slnOrProject = (ISolutionOrProject?)_projects[(int)index] ?? _solution!;
|
||||||
_ = Task.GodotRun(async () =>
|
_ = Task.GodotRun(async () =>
|
||||||
{
|
{
|
||||||
if (_solution is null) throw new InvalidOperationException("Solution is null but should not be");
|
if (_solution is null) throw new InvalidOperationException("Solution is null but should not be");
|
||||||
|
_ = Task.GodotRun(() => SetSolutionOrProjectNameLabels(slnOrProject));
|
||||||
_ = Task.GodotRun(PopulateSearchResults);
|
_ = Task.GodotRun(PopulateSearchResults);
|
||||||
_ = Task.GodotRun(PopulateInstalledPackages);
|
_ = Task.GodotRun(PopulateInstalledPackages);
|
||||||
});
|
});
|
||||||
@@ -70,6 +84,20 @@ public partial class NugetPanel : Control
|
|||||||
await _nugetPackageDetails.SetPackage(packageResult);
|
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()
|
private async Task PopulateSearchResults()
|
||||||
{
|
{
|
||||||
var result = await _nugetClientService.GetTop100Results(_solution!.DirectoryPath);
|
var result = await _nugetClientService.GetTop100Results(_solution!.DirectoryPath);
|
||||||
|
|||||||
@@ -89,10 +89,31 @@ layout_mode = 2
|
|||||||
size_flags_horizontal = 3
|
size_flags_horizontal = 3
|
||||||
size_flags_vertical = 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
|
layout_mode = 2
|
||||||
theme_override_colors/font_color = Color(0.67058825, 0.67058825, 0.67058825, 1)
|
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"]
|
[node name="PanelContainer" type="PanelContainer" parent="VBoxContainer/MarginContainer2/HSplitContainer/VBoxContainer/ScrollContainer/VBoxContainer"]
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
|
|||||||
Reference in New Issue
Block a user