DFLayoutHeader.cs 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  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
  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 = Serialization.Deserialize<DFLayoutTextStyle>(GetProperty<string?>("Style", null)) ?? new DFLayoutTextStyle { IsBold = true };
  35. }
  36. protected override void SaveProperties()
  37. {
  38. base.SaveProperties();
  39. SetProperty("Header", Header);
  40. SetProperty("Collapsed", Collapsed);
  41. SetProperty("Style", Serialization.Serialize(Style));
  42. }
  43. public T GetStyleProperty<T>(string name, T defaultValue)
  44. {
  45. return GetProperty($"Style.{name}", defaultValue);
  46. }
  47. public void SetStyleProperty(string name, object? value)
  48. {
  49. SetProperty($"Style.{name}", value);
  50. }
  51. }
  52. }