DFLayoutHeader.cs 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  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. [CheckBoxEditor]
  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. Style.LoadProperties(this);
  41. }
  42. protected override void SaveProperties()
  43. {
  44. base.SaveProperties();
  45. SetProperty("Header", Header);
  46. SetProperty("Collapsed", Collapsed);
  47. Style.SaveProperties(this);
  48. }
  49. public T GetStyleProperty<T>(string name, T defaultValue)
  50. {
  51. if (name == "IsBold") defaultValue = CoreUtils.ChangeType<T>(true) ?? defaultValue;
  52. return GetProperty($"Style.{name}", defaultValue);
  53. }
  54. public void SetStyleProperty(string name, object? value)
  55. {
  56. SetProperty($"Style.{name}", value);
  57. }
  58. }
  59. }