MarginEditor.cs 2.6 KB

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