LANCommander/LANCommander.Packager/Views/RegistrySelectionView.axaml.cs
Pat Hartl 8917a2d79f
Some checks failed
LANCommander SDK Release / prep (push) Failing after 59s
LANCommander SDK Release / publish (push) Has been skipped
LANCommander Release / prep (push) Failing after 1m12s
LANCommander Release / build_server_linux_arm64 (push) Has been skipped
LANCommander Release / build_server_linux_x64 (push) Has been skipped
LANCommander Release / build_server_osx_arm64 (push) Has been skipped
LANCommander Release / build_server_osx_x64 (push) Has been skipped
LANCommander Release / build_server_win_arm64 (push) Has been skipped
LANCommander Release / build_server_win_x64 (push) Has been skipped
LANCommander Release / build_launcher_avalonia_linux_x64 (push) Has been skipped
LANCommander Release / build_launcher_avalonia_osx_arm64 (push) Has been skipped
LANCommander Release / build_launcher_avalonia_osx_x64 (push) Has been skipped
LANCommander Release / build_launcher_avalonia_win_x64 (push) Has been skipped
LANCommander Release / build_packager (push) Has been skipped
LANCommander Release / build_release (push) Has been skipped
Add package application for auto-building LCX files
2026-05-30 13:10:01 -05:00

46 lines
1.4 KiB
C#

using Avalonia.Controls;
using LANCommander.Packager.Models;
namespace LANCommander.Packager.Views;
public partial class RegistrySelectionView : UserControl
{
private readonly PackageContext _context;
private CheckableTreeNode _root = new();
public RegistrySelectionView(PackageContext context)
{
_context = context;
InitializeComponent();
SelectAllButton.Click += (_, _) => { _root.IsChecked = true; UpdateCount(); };
SelectNoneButton.Click += (_, _) => { _root.IsChecked = false; UpdateCount(); };
}
public void PopulateEntries()
{
_root = CheckableTreeNode.BuildRegistryTree(_context.RegistryChanges);
_root.OnTreeSelectionChanged = UpdateCount;
RegistryTree.ItemsSource = _root.Children;
UpdateCount();
}
public void ApplySelection()
{
_context.SelectedRegistryEntries.Clear();
foreach (var leaf in _root.GetCheckedLeaves())
{
if (leaf.SourceIndex >= 0 && leaf.SourceIndex < _context.RegistryChanges.Count)
_context.SelectedRegistryEntries.Add(_context.RegistryChanges[leaf.SourceIndex]);
}
}
private void UpdateCount()
{
var selected = _root.CountCheckedLeaves();
var total = _root.CountTotalLeaves();
CountLabel.Text = $"{selected} / {total} entries selected";
}
}