display package details on select
This commit is contained in:
@@ -10,17 +10,23 @@ public partial class NugetPanel : Control
|
||||
private VBoxContainer _implicitlyInstalledPackagesItemList = null!;
|
||||
private VBoxContainer _availablePackagesItemList = null!;
|
||||
|
||||
private VBoxContainer _packageDetailsVBoxContainer = null!;
|
||||
|
||||
public SharpIdeSolutionModel? Solution { get; set; }
|
||||
|
||||
[Inject] private readonly NugetClientService _nugetClientService = null!;
|
||||
|
||||
private readonly PackedScene _packageEntryScene = ResourceLoader.Load<PackedScene>("uid://cqc2xlt81ju8s");
|
||||
|
||||
private IdePackageResult? _selectedPackage;
|
||||
|
||||
public override void _Ready()
|
||||
{
|
||||
_installedPackagesVboxContainer = GetNode<VBoxContainer>("%InstalledPackagesVBoxContainer");
|
||||
_implicitlyInstalledPackagesItemList = GetNode<VBoxContainer>("%ImplicitlyInstalledPackagesVBoxContainer");
|
||||
_availablePackagesItemList = GetNode<VBoxContainer>("%AvailablePackagesVBoxContainer");
|
||||
_packageDetailsVBoxContainer = GetNode<VBoxContainer>("%PackageDetailsVBoxContainer");
|
||||
_packageDetailsVBoxContainer.Visible = false;
|
||||
|
||||
_ = Task.GodotRun(async () =>
|
||||
{
|
||||
@@ -32,6 +38,7 @@ public partial class NugetPanel : Control
|
||||
{
|
||||
var scene = _packageEntryScene.Instantiate<PackageEntry>();
|
||||
scene.PackageResult = s;
|
||||
scene.PackageSelected += OnPackageSelected;
|
||||
return scene;
|
||||
}).ToList();
|
||||
await this.InvokeAsync(() =>
|
||||
@@ -43,4 +50,10 @@ public partial class NugetPanel : Control
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
private void OnPackageSelected(IdePackageResult packageResult)
|
||||
{
|
||||
_selectedPackage = packageResult;
|
||||
_packageDetailsVBoxContainer.Visible = true;
|
||||
}
|
||||
}
|
||||
@@ -118,31 +118,35 @@ layout_mode = 2
|
||||
[node name="VBoxContainer2" type="VBoxContainer" parent="VBoxContainer/MarginContainer2/HSplitContainer"]
|
||||
layout_mode = 2
|
||||
|
||||
[node name="HBoxContainer" type="HBoxContainer" parent="VBoxContainer/MarginContainer2/HSplitContainer/VBoxContainer2"]
|
||||
[node name="PackageDetailsVBoxContainer" type="VBoxContainer" parent="VBoxContainer/MarginContainer2/HSplitContainer/VBoxContainer2"]
|
||||
unique_name_in_owner = true
|
||||
layout_mode = 2
|
||||
|
||||
[node name="HBoxContainer" type="HBoxContainer" parent="VBoxContainer/MarginContainer2/HSplitContainer/VBoxContainer2/PackageDetailsVBoxContainer"]
|
||||
layout_mode = 2
|
||||
theme_override_constants/separation = 8
|
||||
|
||||
[node name="TextureRect" type="TextureRect" parent="VBoxContainer/MarginContainer2/HSplitContainer/VBoxContainer2/HBoxContainer"]
|
||||
[node name="TextureRect" type="TextureRect" parent="VBoxContainer/MarginContainer2/HSplitContainer/VBoxContainer2/PackageDetailsVBoxContainer/HBoxContainer"]
|
||||
custom_minimum_size = Vector2(32, 32)
|
||||
layout_mode = 2
|
||||
texture = ExtResource("3_yr6k7")
|
||||
expand_mode = 3
|
||||
|
||||
[node name="Label" type="Label" parent="VBoxContainer/MarginContainer2/HSplitContainer/VBoxContainer2/HBoxContainer"]
|
||||
[node name="Label" type="Label" parent="VBoxContainer/MarginContainer2/HSplitContainer/VBoxContainer2/PackageDetailsVBoxContainer/HBoxContainer"]
|
||||
layout_mode = 2
|
||||
theme_override_colors/font_color = Color(0.83137256, 0.83137256, 0.83137256, 1)
|
||||
theme_override_font_sizes/font_size = 18
|
||||
text = "OpenTelemetry.Exporter.OpenTelemetryProtocol"
|
||||
|
||||
[node name="HBoxContainer2" type="HBoxContainer" parent="VBoxContainer/MarginContainer2/HSplitContainer/VBoxContainer2"]
|
||||
[node name="HBoxContainer2" type="HBoxContainer" parent="VBoxContainer/MarginContainer2/HSplitContainer/VBoxContainer2/PackageDetailsVBoxContainer"]
|
||||
layout_mode = 2
|
||||
|
||||
[node name="Label" type="Label" parent="VBoxContainer/MarginContainer2/HSplitContainer/VBoxContainer2/HBoxContainer2"]
|
||||
[node name="Label" type="Label" parent="VBoxContainer/MarginContainer2/HSplitContainer/VBoxContainer2/PackageDetailsVBoxContainer/HBoxContainer2"]
|
||||
layout_mode = 2
|
||||
theme_override_colors/font_color = Color(0.83137256, 0.83137256, 0.83137256, 1)
|
||||
text = "Version"
|
||||
|
||||
[node name="VersionOptionButton" type="OptionButton" parent="VBoxContainer/MarginContainer2/HSplitContainer/VBoxContainer2/HBoxContainer2"]
|
||||
[node name="VersionOptionButton" type="OptionButton" parent="VBoxContainer/MarginContainer2/HSplitContainer/VBoxContainer2/PackageDetailsVBoxContainer/HBoxContainer2"]
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 3
|
||||
selected = 0
|
||||
@@ -150,7 +154,7 @@ item_count = 1
|
||||
popup/item_0/text = "1.13.0"
|
||||
popup/item_0/id = 0
|
||||
|
||||
[node name="NugetSourceOptionButton" type="OptionButton" parent="VBoxContainer/MarginContainer2/HSplitContainer/VBoxContainer2/HBoxContainer2"]
|
||||
[node name="NugetSourceOptionButton" type="OptionButton" parent="VBoxContainer/MarginContainer2/HSplitContainer/VBoxContainer2/PackageDetailsVBoxContainer/HBoxContainer2"]
|
||||
layout_mode = 2
|
||||
selected = 0
|
||||
item_count = 1
|
||||
|
||||
@@ -6,6 +6,7 @@ namespace SharpIDE.Godot.Features.Nuget;
|
||||
|
||||
public partial class PackageEntry : MarginContainer
|
||||
{
|
||||
private Button _button;
|
||||
private Label _packageNameLabel = null!;
|
||||
private Label _currentVersionLabel = null!;
|
||||
private Label _latestVersionLabel = null!;
|
||||
@@ -26,18 +27,22 @@ public partial class PackageEntry : MarginContainer
|
||||
Source_4_Color,
|
||||
Source_5_Color
|
||||
];
|
||||
|
||||
public event Action<IdePackageResult> PackageSelected = null!;
|
||||
|
||||
[Inject] private readonly NugetPackageIconCacheService _nugetPackageIconCacheService = null!;
|
||||
|
||||
public IdePackageResult PackageResult { get; set; } = null!;
|
||||
public override void _Ready()
|
||||
{
|
||||
_button = GetNode<Button>("Button");
|
||||
_packageNameLabel = GetNode<Label>("%PackageNameLabel");
|
||||
_currentVersionLabel = GetNode<Label>("%CurrentVersionLabel");
|
||||
_latestVersionLabel = GetNode<Label>("%LatestVersionLabel");
|
||||
_sourceNamesContainer = GetNode<HBoxContainer>("%SourceNamesHBoxContainer");
|
||||
_packageIconTextureRect = GetNode<TextureRect>("%PackageIconTextureRect");
|
||||
ApplyValues();
|
||||
_button.Pressed += () => PackageSelected?.Invoke(PackageResult);
|
||||
}
|
||||
|
||||
private void ApplyValues()
|
||||
|
||||
Reference in New Issue
Block a user