EffectsPane.cs 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. using System.Collections.Generic;
  2. namespace MeidoPhotoStudio.Plugin;
  3. public class EffectsPane : BasePane
  4. {
  5. private readonly Dictionary<string, BasePane> effectPanes = new();
  6. private readonly List<string> effectList = new();
  7. private readonly SelectionGrid effectToggles;
  8. private BasePane currentEffectPane;
  9. public EffectsPane()
  10. {
  11. effectToggles = new(new[] { "dummy" /* thicc */ });
  12. effectToggles.ControlEvent += (_, _) =>
  13. SetEffectPane(effectList[effectToggles.SelectedItemIndex]);
  14. }
  15. public BasePane this[string effectUI]
  16. {
  17. private get => effectPanes[effectUI];
  18. set
  19. {
  20. effectPanes[effectUI] = value;
  21. effectList.Add(effectUI);
  22. effectToggles.SetItems(Translation.GetArray("effectsPane", effectList), 0);
  23. }
  24. }
  25. public override void UpdatePane() =>
  26. currentEffectPane.UpdatePane();
  27. public override void Draw()
  28. {
  29. MpsGui.Header("Effects");
  30. MpsGui.WhiteLine();
  31. effectToggles.Draw();
  32. MpsGui.BlackLine();
  33. currentEffectPane.Draw();
  34. }
  35. protected override void ReloadTranslation() =>
  36. effectToggles.SetItems(Translation.GetArray("effectsPane", effectList));
  37. private void SetEffectPane(string effectUI)
  38. {
  39. currentEffectPane = effectPanes[effectUI];
  40. currentEffectPane.UpdatePane();
  41. }
  42. }