2024-03-15 19:13:09 +00:00
|
|
|
using TUI.Engine.Attributes.Resizings;
|
2024-03-17 19:57:31 +00:00
|
|
|
using TUI.Engine.Components;
|
2024-03-15 19:13:09 +00:00
|
|
|
using TUI.Engine.Nodes;
|
|
|
|
|
|
|
|
namespace TUI.Engine.Containers;
|
|
|
|
|
|
|
|
internal static class ContainerExtensions
|
|
|
|
{
|
2024-03-17 19:57:31 +00:00
|
|
|
private static readonly Func<INode, bool> AbsoluteNodes = node => node is IComponent { IsRelative: false };
|
|
|
|
|
|
|
|
private static readonly Func<INode, bool> FixedNodes = node => node.ResizingVertical == Resizing.Fixed;
|
|
|
|
|
|
|
|
internal static IEnumerable<INode> GetAbsoluteNodes(this IContainer container, int? takeNodeNumber = null)
|
|
|
|
{
|
|
|
|
if (takeNodeNumber is not null)
|
|
|
|
{
|
|
|
|
return container
|
|
|
|
.GetNodes()
|
|
|
|
.Take(takeNodeNumber.Value + 1)
|
|
|
|
.Where(AbsoluteNodes);
|
|
|
|
}
|
|
|
|
|
|
|
|
return container
|
|
|
|
.GetNodes()
|
|
|
|
.Where(AbsoluteNodes);
|
|
|
|
}
|
|
|
|
|
2024-03-15 19:13:09 +00:00
|
|
|
internal static IEnumerable<INode> GetFixedNodes(this IContainer container, int? takeNodeNumber = null)
|
|
|
|
{
|
|
|
|
if (takeNodeNumber is not null)
|
|
|
|
{
|
|
|
|
return container
|
|
|
|
.GetNodes()
|
|
|
|
.Take(takeNodeNumber.Value + 1)
|
2024-03-17 19:57:31 +00:00
|
|
|
.Where(FixedNodes);
|
2024-03-15 19:13:09 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
return container
|
|
|
|
.GetNodes()
|
2024-03-17 19:57:31 +00:00
|
|
|
.Where(FixedNodes);
|
2024-03-15 19:13:09 +00:00
|
|
|
}
|
|
|
|
}
|