MarginEditor.cs 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. #nullable enable
  2. using System;
  3. using Terminal.Gui;
  4. namespace UICatalog.Scenarios;
  5. public class MarginEditor : AdornmentEditor
  6. {
  7. public MarginEditor ()
  8. {
  9. Title = "_Margin";
  10. Initialized += MarginEditor_Initialized;
  11. AdornmentChanged += MarginEditor_AdornmentChanged;
  12. }
  13. private RadioGroup? _rgShadow;
  14. private FlagSelector? _flagSelectorTransparent;
  15. private void MarginEditor_AdornmentChanged (object? sender, EventArgs e)
  16. {
  17. if (AdornmentToEdit is { })
  18. {
  19. _rgShadow!.SelectedItem = (int)((Margin)AdornmentToEdit).ShadowStyle;
  20. }
  21. if (AdornmentToEdit is { })
  22. {
  23. _flagSelectorTransparent!.Value = (uint)((Margin)AdornmentToEdit).ViewportSettings;
  24. }
  25. }
  26. private void MarginEditor_Initialized (object? sender, EventArgs e)
  27. {
  28. _rgShadow = new RadioGroup
  29. {
  30. X = 0,
  31. Y = Pos.Bottom (SubViews.ElementAt(SubViews.Count-1)),
  32. SuperViewRendersLineCanvas = true,
  33. Title = "_Shadow",
  34. BorderStyle = LineStyle.Single,
  35. RadioLabels = Enum.GetNames (typeof (ShadowStyle)),
  36. };
  37. if (AdornmentToEdit is { })
  38. {
  39. _rgShadow.SelectedItem = (int)((Margin)AdornmentToEdit).ShadowStyle;
  40. }
  41. _rgShadow.SelectedItemChanged += (_, args) =>
  42. {
  43. ((Margin)AdornmentToEdit!).ShadowStyle = (ShadowStyle)args.SelectedItem!;
  44. };
  45. Add (_rgShadow);
  46. var flags = new Dictionary<uint, string> ()
  47. {
  48. { (uint)Terminal.Gui.ViewportSettings.Transparent, "Transparent" },
  49. { (uint)Terminal.Gui.ViewportSettings.TransparentMouse, "TransparentMouse" }
  50. };
  51. _flagSelectorTransparent = new FlagSelector ()
  52. {
  53. X = 0,
  54. Y = Pos.Bottom (_rgShadow),
  55. SuperViewRendersLineCanvas = true,
  56. Title = "_ViewportSettings",
  57. BorderStyle = LineStyle.Single,
  58. };
  59. _flagSelectorTransparent.SetFlags(flags.AsReadOnly ());
  60. Add (_flagSelectorTransparent);
  61. if (AdornmentToEdit is { })
  62. {
  63. _flagSelectorTransparent.Value = (uint)((Margin)AdornmentToEdit).ViewportSettings;
  64. }
  65. _flagSelectorTransparent.ValueChanged += (_, args) =>
  66. {
  67. ((Margin)AdornmentToEdit!).ViewportSettings = (Terminal.Gui.ViewportSettings)args.CurrentValue!;
  68. };
  69. }
  70. }