Nuget panel progress bar
This commit is contained in:
@@ -1,7 +1,10 @@
|
||||
using System.Diagnostics;
|
||||
using Godot;
|
||||
using SharpIDE.Application;
|
||||
using SharpIDE.Application.Features.Evaluation;
|
||||
using SharpIDE.Application.Features.Nuget;
|
||||
using SharpIDE.Application.Features.SolutionDiscovery.VsPersistence;
|
||||
using SharpIDE.Godot.Features.ActivityListener;
|
||||
|
||||
namespace SharpIDE.Godot.Features.Nuget;
|
||||
|
||||
@@ -17,12 +20,15 @@ public partial class NugetPanel : Control
|
||||
private Label _implicitlyInstalledPackagesSlnOrProjectNameLabel = null!;
|
||||
private Label _implicitlyInstalledPackagesResultCountLabel = null!;
|
||||
|
||||
private ProgressBar _installedPackagesProgressBar = null!;
|
||||
|
||||
private NugetPackageDetails _nugetPackageDetails = null!;
|
||||
|
||||
private SharpIdeSolutionModel? _solution;
|
||||
|
||||
[Inject] private readonly NugetClientService _nugetClientService = null!;
|
||||
[Inject] private readonly SharpIdeSolutionAccessor _sharpIdeSolutionAccessor = null!;
|
||||
[Inject] private readonly ActivityMonitor _activityMonitor = null!;
|
||||
|
||||
private readonly PackedScene _packageEntryScene = ResourceLoader.Load<PackedScene>("uid://cqc2xlt81ju8s");
|
||||
private readonly Texture2D _csprojIcon = ResourceLoader.Load<Texture2D>("uid://cqt30ma6xgder");
|
||||
@@ -42,10 +48,13 @@ public partial class NugetPanel : Control
|
||||
_installedPackagesResultCountLabel = GetNode<Label>("%InstalledPackagesResultCountLabel");
|
||||
_implicitlyInstalledPackagesSlnOrProjectNameLabel = GetNode<Label>("%ImplicitlyInstalledPackagesSlnOrProjectNameLabel");
|
||||
_implicitlyInstalledPackagesResultCountLabel = GetNode<Label>("%ImplicitlyInstalledPackagesResultCountLabel");
|
||||
_installedPackagesProgressBar = GetNode<ProgressBar>("%InstalledPackagesProgressBar");
|
||||
_installedPackagesProgressBar.Visible = false;
|
||||
_nugetPackageDetails.Visible = false;
|
||||
_installedPackagesVboxContainer.QueueFreeChildren();
|
||||
_implicitlyInstalledPackagesItemList.QueueFreeChildren();
|
||||
_availablePackagesItemList.QueueFreeChildren();
|
||||
_activityMonitor.ActivityChanged.Subscribe(OnActivityChanged);
|
||||
|
||||
_ = Task.GodotRun(_AsyncReady);
|
||||
}
|
||||
@@ -66,6 +75,11 @@ public partial class NugetPanel : Control
|
||||
OnSolutionOrProjectSelected(0);
|
||||
}
|
||||
|
||||
public override void _ExitTree()
|
||||
{
|
||||
_activityMonitor.ActivityChanged.Unsubscribe(OnActivityChanged);
|
||||
}
|
||||
|
||||
private void OnSolutionOrProjectSelected(long index)
|
||||
{
|
||||
var slnOrProject = (ISolutionOrProject?)_projects[(int)index] ?? _solution!;
|
||||
@@ -133,6 +147,7 @@ public partial class NugetPanel : Control
|
||||
|
||||
private async Task PopulateInstalledPackages(ISolutionOrProject slnOrProject)
|
||||
{
|
||||
using var _ = SharpIdeOtel.Source.StartActivity($"{nameof(NugetPanel)}.{nameof(PopulateInstalledPackages)}");
|
||||
var setDetailsProjectsTask = SetDetailsProjects(slnOrProject);
|
||||
var msbuildEvalTask = slnOrProject switch
|
||||
{
|
||||
@@ -184,4 +199,13 @@ public partial class NugetPanel : Control
|
||||
_implicitlyInstalledPackagesResultCountLabel.Text = transitiveScenes.Count.ToString();
|
||||
});
|
||||
}
|
||||
|
||||
private async Task OnActivityChanged(Activity activity)
|
||||
{
|
||||
var isOccurring = !activity.IsStopped;
|
||||
if (activity.DisplayName == $"{nameof(NugetPanel)}.{nameof(PopulateInstalledPackages)}")
|
||||
{
|
||||
await this.InvokeAsync(() => _installedPackagesProgressBar.Visible = isOccurring);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -115,6 +115,22 @@ layout_mode = 2
|
||||
theme_override_colors/font_color = Color(0.67058825, 0.67058825, 0.67058825, 1)
|
||||
text = "0"
|
||||
|
||||
[node name="MarginContainer" type="MarginContainer" parent="VBoxContainer/MarginContainer2/HSplitContainer/VBoxContainer/ScrollContainer/VBoxContainer/HBoxContainer"]
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 3
|
||||
size_flags_vertical = 4
|
||||
theme_override_constants/margin_left = 10
|
||||
|
||||
[node name="InstalledPackagesProgressBar" type="ProgressBar" parent="VBoxContainer/MarginContainer2/HSplitContainer/VBoxContainer/ScrollContainer/VBoxContainer/HBoxContainer/MarginContainer"]
|
||||
unique_name_in_owner = true
|
||||
custom_minimum_size = Vector2(0, 9)
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 3
|
||||
size_flags_vertical = 4
|
||||
theme_override_font_sizes/font_size = 2
|
||||
indeterminate = true
|
||||
editor_preview_indeterminate = false
|
||||
|
||||
[node name="PanelContainer" type="PanelContainer" parent="VBoxContainer/MarginContainer2/HSplitContainer/VBoxContainer/ScrollContainer/VBoxContainer"]
|
||||
layout_mode = 2
|
||||
|
||||
|
||||
Reference in New Issue
Block a user