DFLayoutHeader.cs 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  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; }
  21. [CheckBoxEditor]
  22. [EditorSequence(1)]
  23. public DFLayoutHeaderAlignment Alignment { get; set; }
  24. [EditorSequence("Style", 0)]
  25. public DFLayoutTextStyle Style { get; set; }
  26. protected override void Init()
  27. {
  28. base.Init();
  29. Header = "";
  30. Collapsed = false;
  31. Alignment = DFLayoutHeaderAlignment.Left;
  32. Style.IsBold = true;
  33. }
  34. protected override string GetDescription()
  35. {
  36. return $"Header: {Header}";
  37. }
  38. protected override void LoadProperties()
  39. {
  40. base.LoadProperties();
  41. Header = GetProperty("Header", "");
  42. Collapsed = GetProperty("Collapsed", false);
  43. Style.LoadProperties(this);
  44. }
  45. protected override void SaveProperties()
  46. {
  47. base.SaveProperties();
  48. SetProperty("Header", Header);
  49. SetProperty("Collapsed", Collapsed);
  50. Style.SaveProperties(this);
  51. }
  52. public T GetStyleProperty<T>(string name, T defaultValue)
  53. {
  54. if (name == "IsBold") defaultValue = CoreUtils.ChangeType<T>(true) ?? defaultValue;
  55. return GetProperty($"Style.{name}", defaultValue);
  56. }
  57. public void SetStyleProperty(string name, object? value)
  58. {
  59. SetProperty($"Style.{name}", value);
  60. }
  61. }
  62. }