SceneManagerTitleBarPane.cs 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125
  1. using UnityEngine;
  2. namespace MeidoPhotoStudio.Plugin;
  3. public class SceneManagerTitleBarPane : BasePane
  4. {
  5. private static readonly string[] SortModes = new[] { "sortName", "sortCreated", "sortModified" };
  6. private readonly SceneManager sceneManager;
  7. private readonly Button kankyoToggle;
  8. private readonly Button refreshButton;
  9. private readonly Dropdown sortDropdown;
  10. private readonly Toggle descendingToggle;
  11. private readonly Button closeButton;
  12. private string sortLabel;
  13. public SceneManagerTitleBarPane(SceneManager sceneManager)
  14. {
  15. this.sceneManager = sceneManager;
  16. kankyoToggle = new(Translation.Get("sceneManager", "kankyoToggle"));
  17. kankyoToggle.ControlEvent += (_, _) =>
  18. sceneManager.ToggleKankyoMode();
  19. refreshButton = new(Translation.Get("sceneManager", "refreshButton"));
  20. refreshButton.ControlEvent += (_, _) =>
  21. sceneManager.Refresh();
  22. sortDropdown = new(Translation.GetArray("sceneManager", SortModes), (int)sceneManager.CurrentSortMode);
  23. sortDropdown.SelectionChange += (_, _) =>
  24. {
  25. var sortMode = (SceneManager.SortMode)sortDropdown.SelectedItemIndex;
  26. if (sceneManager.CurrentSortMode == sortMode)
  27. return;
  28. sceneManager.SortScenes(sortMode);
  29. };
  30. descendingToggle = new(Translation.Get("sceneManager", "descendingToggle"), sceneManager.SortDescending);
  31. descendingToggle.ControlEvent += (_, _) =>
  32. {
  33. sceneManager.SortDescending = descendingToggle.Value;
  34. sceneManager.SortScenes(sceneManager.CurrentSortMode);
  35. };
  36. closeButton = new("X");
  37. closeButton.ControlEvent += (_, _) =>
  38. CloseChange?.Invoke(this, System.EventArgs.Empty);
  39. sortLabel = Translation.Get("sceneManager", "sortLabel");
  40. }
  41. public event System.EventHandler CloseChange;
  42. public override void Draw()
  43. {
  44. var buttonStyle = new GUIStyle(GUI.skin.button)
  45. {
  46. fontSize = Utility.GetPix(12),
  47. };
  48. var buttonHeight = GUILayout.Height(Utility.GetPix(20));
  49. GUILayout.BeginHorizontal();
  50. GUILayout.BeginHorizontal(GUILayout.Width(Utility.GetPix(SceneManagerDirectoryPane.ListWidth)));
  51. var originalColour = GUI.backgroundColor;
  52. if (sceneManager.KankyoMode)
  53. GUI.backgroundColor = Color.green;
  54. kankyoToggle.Draw(buttonStyle, buttonHeight);
  55. GUI.backgroundColor = originalColour;
  56. GUILayout.FlexibleSpace();
  57. refreshButton.Draw(buttonStyle, buttonHeight);
  58. GUILayout.EndHorizontal();
  59. GUILayout.BeginHorizontal();
  60. GUILayout.Space(Utility.GetPix(15));
  61. var labelStyle = new GUIStyle(GUI.skin.label)
  62. {
  63. fontSize = buttonStyle.fontSize,
  64. };
  65. GUILayout.Label(sortLabel, labelStyle);
  66. var dropdownStyle = new GUIStyle(DropdownHelper.DefaultDropdownStyle)
  67. {
  68. fontSize = buttonStyle.fontSize,
  69. };
  70. sortDropdown.Draw(buttonStyle, dropdownStyle, buttonHeight, GUILayout.Width(Utility.GetPix(100)));
  71. var toggleStyle = new GUIStyle(GUI.skin.toggle)
  72. {
  73. fontSize = buttonStyle.fontSize,
  74. };
  75. descendingToggle.Draw(toggleStyle);
  76. GUILayout.FlexibleSpace();
  77. closeButton.Draw();
  78. GUILayout.EndHorizontal();
  79. GUILayout.EndHorizontal();
  80. }
  81. protected override void ReloadTranslation()
  82. {
  83. kankyoToggle.Label = Translation.Get("sceneManager", "kankyoToggle");
  84. refreshButton.Label = Translation.Get("sceneManager", "refreshButton");
  85. sortDropdown.SetDropdownItems(Translation.GetArray("sceneManager", SortModes));
  86. descendingToggle.Label = Translation.Get("sceneManager", "descendingToggle");
  87. sortLabel = Translation.Get("sceneManager", "sortLabel");
  88. }
  89. }