Extensions.cs 993 B

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. using Terminal.Gui;
  2. namespace ReactiveExample {
  3. public static class Extensions
  4. {
  5. public static MemoizedElement<TOwner, TNew> StackPanel<TOwner, TNew>(
  6. this TOwner owner,
  7. TNew control)
  8. where TOwner : View
  9. where TNew : View =>
  10. new MemoizedElement<TOwner, TNew>(owner, control);
  11. public static MemoizedElement<TOwner, TNew> Append<TOwner, TOld, TNew>(
  12. this MemoizedElement<TOwner, TOld> owner,
  13. TNew control,
  14. int height = 1)
  15. where TOwner : View
  16. where TOld : View
  17. where TNew : View
  18. {
  19. control.X = Pos.Left(owner.Control);
  20. control.Y = Pos.Top(owner.Control) + height;
  21. return new MemoizedElement<TOwner, TNew>(owner.View, control);
  22. }
  23. public class MemoizedElement<TOwner, TControl>
  24. where TOwner : View
  25. where TControl : View
  26. {
  27. public TOwner View { get; }
  28. public TControl Control { get; }
  29. public MemoizedElement(TOwner owner, TControl control)
  30. {
  31. View = owner;
  32. Control = control;
  33. View.Add(control);
  34. }
  35. }
  36. }
  37. }