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