Nuget panel progress bar
This commit is contained in:
@@ -1,7 +1,10 @@
|
|||||||
|
using System.Diagnostics;
|
||||||
using Godot;
|
using Godot;
|
||||||
|
using SharpIDE.Application;
|
||||||
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.ActivityListener;
|
||||||
|
|
||||||
namespace SharpIDE.Godot.Features.Nuget;
|
namespace SharpIDE.Godot.Features.Nuget;
|
||||||
|
|
||||||
@@ -17,12 +20,15 @@ public partial class NugetPanel : Control
|
|||||||
private Label _implicitlyInstalledPackagesSlnOrProjectNameLabel = null!;
|
private Label _implicitlyInstalledPackagesSlnOrProjectNameLabel = null!;
|
||||||
private Label _implicitlyInstalledPackagesResultCountLabel = null!;
|
private Label _implicitlyInstalledPackagesResultCountLabel = null!;
|
||||||
|
|
||||||
|
private ProgressBar _installedPackagesProgressBar = null!;
|
||||||
|
|
||||||
private NugetPackageDetails _nugetPackageDetails = null!;
|
private NugetPackageDetails _nugetPackageDetails = null!;
|
||||||
|
|
||||||
private SharpIdeSolutionModel? _solution;
|
private SharpIdeSolutionModel? _solution;
|
||||||
|
|
||||||
[Inject] private readonly NugetClientService _nugetClientService = null!;
|
[Inject] private readonly NugetClientService _nugetClientService = null!;
|
||||||
[Inject] private readonly SharpIdeSolutionAccessor _sharpIdeSolutionAccessor = null!;
|
[Inject] private readonly SharpIdeSolutionAccessor _sharpIdeSolutionAccessor = null!;
|
||||||
|
[Inject] private readonly ActivityMonitor _activityMonitor = null!;
|
||||||
|
|
||||||
private readonly PackedScene _packageEntryScene = ResourceLoader.Load<PackedScene>("uid://cqc2xlt81ju8s");
|
private readonly PackedScene _packageEntryScene = ResourceLoader.Load<PackedScene>("uid://cqc2xlt81ju8s");
|
||||||
private readonly Texture2D _csprojIcon = ResourceLoader.Load<Texture2D>("uid://cqt30ma6xgder");
|
private readonly Texture2D _csprojIcon = ResourceLoader.Load<Texture2D>("uid://cqt30ma6xgder");
|
||||||
@@ -42,10 +48,13 @@ public partial class NugetPanel : Control
|
|||||||
_installedPackagesResultCountLabel = GetNode<Label>("%InstalledPackagesResultCountLabel");
|
_installedPackagesResultCountLabel = GetNode<Label>("%InstalledPackagesResultCountLabel");
|
||||||
_implicitlyInstalledPackagesSlnOrProjectNameLabel = GetNode<Label>("%ImplicitlyInstalledPackagesSlnOrProjectNameLabel");
|
_implicitlyInstalledPackagesSlnOrProjectNameLabel = GetNode<Label>("%ImplicitlyInstalledPackagesSlnOrProjectNameLabel");
|
||||||
_implicitlyInstalledPackagesResultCountLabel = GetNode<Label>("%ImplicitlyInstalledPackagesResultCountLabel");
|
_implicitlyInstalledPackagesResultCountLabel = GetNode<Label>("%ImplicitlyInstalledPackagesResultCountLabel");
|
||||||
|
_installedPackagesProgressBar = GetNode<ProgressBar>("%InstalledPackagesProgressBar");
|
||||||
|
_installedPackagesProgressBar.Visible = false;
|
||||||
_nugetPackageDetails.Visible = false;
|
_nugetPackageDetails.Visible = false;
|
||||||
_installedPackagesVboxContainer.QueueFreeChildren();
|
_installedPackagesVboxContainer.QueueFreeChildren();
|
||||||
_implicitlyInstalledPackagesItemList.QueueFreeChildren();
|
_implicitlyInstalledPackagesItemList.QueueFreeChildren();
|
||||||
_availablePackagesItemList.QueueFreeChildren();
|
_availablePackagesItemList.QueueFreeChildren();
|
||||||
|
_activityMonitor.ActivityChanged.Subscribe(OnActivityChanged);
|
||||||
|
|
||||||
_ = Task.GodotRun(_AsyncReady);
|
_ = Task.GodotRun(_AsyncReady);
|
||||||
}
|
}
|
||||||
@@ -66,6 +75,11 @@ public partial class NugetPanel : Control
|
|||||||
OnSolutionOrProjectSelected(0);
|
OnSolutionOrProjectSelected(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public override void _ExitTree()
|
||||||
|
{
|
||||||
|
_activityMonitor.ActivityChanged.Unsubscribe(OnActivityChanged);
|
||||||
|
}
|
||||||
|
|
||||||
private void OnSolutionOrProjectSelected(long index)
|
private void OnSolutionOrProjectSelected(long index)
|
||||||
{
|
{
|
||||||
var slnOrProject = (ISolutionOrProject?)_projects[(int)index] ?? _solution!;
|
var slnOrProject = (ISolutionOrProject?)_projects[(int)index] ?? _solution!;
|
||||||
@@ -133,6 +147,7 @@ public partial class NugetPanel : Control
|
|||||||
|
|
||||||
private async Task PopulateInstalledPackages(ISolutionOrProject slnOrProject)
|
private async Task PopulateInstalledPackages(ISolutionOrProject slnOrProject)
|
||||||
{
|
{
|
||||||
|
using var _ = SharpIdeOtel.Source.StartActivity($"{nameof(NugetPanel)}.{nameof(PopulateInstalledPackages)}");
|
||||||
var setDetailsProjectsTask = SetDetailsProjects(slnOrProject);
|
var setDetailsProjectsTask = SetDetailsProjects(slnOrProject);
|
||||||
var msbuildEvalTask = slnOrProject switch
|
var msbuildEvalTask = slnOrProject switch
|
||||||
{
|
{
|
||||||
@@ -184,4 +199,13 @@ public partial class NugetPanel : Control
|
|||||||
_implicitlyInstalledPackagesResultCountLabel.Text = transitiveScenes.Count.ToString();
|
_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)
|
theme_override_colors/font_color = Color(0.67058825, 0.67058825, 0.67058825, 1)
|
||||||
text = "0"
|
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"]
|
[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