DFLayoutHeader.cs 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  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 class DFLayoutHeader : DFLayoutControl, IDFLayoutTextControl
  9. {
  10. [TextBoxEditor]
  11. [EditorSequence(-1)]
  12. public string Header { get; set; }
  13. [CheckBoxEditor]
  14. [EditorSequence(0)]
  15. public bool Collapsed { get; set; }
  16. [EditorSequence("Style", 0)]
  17. public DFLayoutTextStyle Style { get; set; }
  18. protected override void Init()
  19. {
  20. base.Init();
  21. Header = "";
  22. Collapsed = false;
  23. Style = new DFLayoutTextStyle { IsBold = true };
  24. }
  25. protected override string GetDescription()
  26. {
  27. return $"Header: {Header}";
  28. }
  29. protected override void LoadProperties()
  30. {
  31. base.LoadProperties();
  32. Header = GetProperty("Header", "");
  33. Collapsed = GetProperty("Collapsed", false);
  34. Style.LoadProperties(this);
  35. }
  36. protected override void SaveProperties()
  37. {
  38. base.SaveProperties();
  39. SetProperty("Header", Header);
  40. SetProperty("Collapsed", Collapsed);
  41. Style.SaveProperties(this);
  42. }
  43. public T GetStyleProperty<T>(string name, T defaultValue)
  44. {
  45. if (name == "IsBold") defaultValue = CoreUtils.ChangeType<T>(true) ?? defaultValue;
  46. return GetProperty($"Style.{name}", defaultValue);
  47. }
  48. public void SetStyleProperty(string name, object? value)
  49. {
  50. SetProperty($"Style.{name}", value);
  51. }
  52. }
  53. }