DFLayoutHeader.cs 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. using Newtonsoft.Json;
  2. using System;
  3. using System.Collections.Generic;
  4. using System.Drawing;
  5. using System.Text;
  6. namespace InABox.Core
  7. {
  8. public enum DFLayoutHeaderAlignment
  9. {
  10. Left,
  11. Right
  12. }
  13. public class DFLayoutHeader : DFLayoutControl, IDFLayoutTextControl
  14. {
  15. [TextBoxEditor]
  16. [EditorSequence(-1)]
  17. public string Header { get; set; } = "";
  18. [CheckBoxEditor]
  19. [EditorSequence(0)]
  20. public bool Collapsed { get; set; } = false;
  21. [EnumLookupEditor(typeof(DFLayoutHeaderAlignment))]
  22. [EditorSequence(1)]
  23. public DFLayoutHeaderAlignment Alignment { get; set; } = DFLayoutHeaderAlignment.Left;
  24. [EditorSequence("Style", 0)]
  25. public DFLayoutTextStyle Style { get; set; }
  26. protected override void Init()
  27. {
  28. base.Init();
  29. Style.IsBold = true;
  30. }
  31. protected override string GetDescription()
  32. {
  33. return $"Header: {Header}";
  34. }
  35. protected override void LoadProperties()
  36. {
  37. base.LoadProperties();
  38. Header = GetProperty("Header", "");
  39. Collapsed = GetProperty("Collapsed", false);
  40. Alignment = GetProperty("Alignment", DFLayoutHeaderAlignment.Left);
  41. Style.LoadProperties(this);
  42. }
  43. protected override void SaveProperties()
  44. {
  45. base.SaveProperties();
  46. SetProperty("Header", Header);
  47. SetProperty("Collapsed", Collapsed);
  48. SetProperty("Alignment", Alignment);
  49. Style.SaveProperties(this);
  50. }
  51. public T GetStyleProperty<T>(string name, T defaultValue)
  52. {
  53. if (name == "IsBold") defaultValue = CoreUtils.ChangeType<T>(true) ?? defaultValue;
  54. return GetProperty($"Style.{name}", defaultValue);
  55. }
  56. public void SetStyleProperty(string name, object? value)
  57. {
  58. SetProperty($"Style.{name}", value);
  59. }
  60. }
  61. }