DFLayoutHeader.cs 2.1 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; } = false;
  21. [EnumLookupEditor(typeof(DFLayoutHeaderAlignment))]
  22. [EditorSequence(1)]
  23. public DFLayoutHeaderAlignment Alignment { get; set; } = DFLayoutHeaderAlignment.Left;
  24. [EditorSequence("Style", 0)]
  25. public DFLayoutTextStyle Style => InitializeField(ref _style, nameof(Style));
  26. private DFLayoutTextStyle _style;
  27. protected override void Init()
  28. {
  29. base.Init();
  30. Style.IsBold = true;
  31. }
  32. protected override string GetDescription()
  33. {
  34. return $"Header: {Header}";
  35. }
  36. protected override void LoadProperties()
  37. {
  38. base.LoadProperties();
  39. Header = GetProperty("Header", "");
  40. Collapsed = GetProperty("Collapsed", false);
  41. Alignment = GetProperty("Alignment", DFLayoutHeaderAlignment.Left);
  42. Style.LoadProperties(this);
  43. }
  44. protected override void SaveProperties()
  45. {
  46. base.SaveProperties();
  47. SetProperty("Header", Header);
  48. SetProperty("Collapsed", Collapsed);
  49. SetProperty("Alignment", Alignment);
  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. }