TabsPane.cs 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. using System;
  2. using UnityEngine;
  3. namespace MeidoPhotoStudio.Plugin;
  4. public class TabsPane : BasePane
  5. {
  6. private static readonly string[] TabNames = { "call", "pose", "face", "bg", "bg2" };
  7. private readonly SelectionGrid tabs;
  8. private Constants.Window selectedTab;
  9. public TabsPane()
  10. {
  11. Translation.ReloadTranslationEvent += (_, _) =>
  12. ReloadTranslation();
  13. tabs = new(Translation.GetArray("tabs", TabNames));
  14. tabs.ControlEvent += (_, _) =>
  15. OnChangeTab();
  16. }
  17. public event EventHandler TabChange;
  18. public Constants.Window SelectedTab
  19. {
  20. get => selectedTab;
  21. set => tabs.SelectedItemIndex = (int)value;
  22. }
  23. public override void Draw()
  24. {
  25. tabs.Draw(GUILayout.ExpandWidth(false));
  26. MpsGui.BlackLine();
  27. }
  28. protected override void ReloadTranslation()
  29. {
  30. updating = true;
  31. tabs.SetItems(Translation.GetArray("tabs", TabNames), tabs.SelectedItemIndex);
  32. updating = false;
  33. }
  34. private void OnChangeTab()
  35. {
  36. if (updating)
  37. return;
  38. selectedTab = (Constants.Window)tabs.SelectedItemIndex;
  39. TabChange?.Invoke(null, EventArgs.Empty);
  40. }
  41. }