SceneManagerTitleBar.cs 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128
  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. public event System.EventHandler CloseChange;
  13. private string sortLabel;
  14. public SceneManagerTitleBarPane(SceneManager sceneManager)
  15. {
  16. this.sceneManager = sceneManager;
  17. kankyoToggle = new(Translation.Get("sceneManager", "kankyoToggle"));
  18. kankyoToggle.ControlEvent += (s, a) => sceneManager.ToggleKankyoMode();
  19. refreshButton = new(Translation.Get("sceneManager", "refreshButton"));
  20. refreshButton.ControlEvent += (s, a) => sceneManager.Refresh();
  21. sortDropdown = new(
  22. Translation.GetArray("sceneManager", sortModes), (int)sceneManager.CurrentSortMode
  23. );
  24. sortDropdown.SelectionChange += (s, a) =>
  25. {
  26. var sortMode = (SceneManager.SortMode)sortDropdown.SelectedItemIndex;
  27. if (sceneManager.CurrentSortMode == sortMode)
  28. return;
  29. sceneManager.SortScenes(sortMode);
  30. };
  31. descendingToggle = new(
  32. Translation.Get("sceneManager", "descendingToggle"), sceneManager.SortDescending
  33. );
  34. descendingToggle.ControlEvent += (s, a) =>
  35. {
  36. sceneManager.SortDescending = descendingToggle.Value;
  37. sceneManager.SortScenes(sceneManager.CurrentSortMode);
  38. };
  39. closeButton = new("X");
  40. closeButton.ControlEvent += (s, a) => CloseChange?.Invoke(this, System.EventArgs.Empty);
  41. sortLabel = Translation.Get("sceneManager", "sortLabel");
  42. }
  43. public override void Draw()
  44. {
  45. var buttonStyle = new GUIStyle(GUI.skin.button)
  46. {
  47. fontSize = Utility.GetPix(12),
  48. };
  49. var buttonHeight = GUILayout.Height(Utility.GetPix(20));
  50. GUILayout.BeginHorizontal();
  51. GUILayout.BeginHorizontal(GUILayout.Width(Utility.GetPix(SceneManagerDirectoryPane.listWidth)));
  52. var originalColour = GUI.backgroundColor;
  53. if (sceneManager.KankyoMode)
  54. GUI.backgroundColor = Color.green;
  55. kankyoToggle.Draw(buttonStyle, buttonHeight);
  56. GUI.backgroundColor = originalColour;
  57. GUILayout.FlexibleSpace();
  58. refreshButton.Draw(buttonStyle, buttonHeight);
  59. GUILayout.EndHorizontal();
  60. GUILayout.BeginHorizontal();
  61. GUILayout.Space(Utility.GetPix(15));
  62. var labelStyle = new GUIStyle(GUI.skin.label)
  63. {
  64. fontSize = buttonStyle.fontSize,
  65. };
  66. GUILayout.Label(sortLabel, labelStyle);
  67. var dropdownStyle = new GUIStyle(DropdownHelper.DefaultDropdownStyle)
  68. {
  69. fontSize = buttonStyle.fontSize,
  70. };
  71. sortDropdown.Draw(buttonStyle, dropdownStyle, buttonHeight, GUILayout.Width(Utility.GetPix(100)));
  72. var toggleStyle = new GUIStyle(GUI.skin.toggle)
  73. {
  74. fontSize = buttonStyle.fontSize,
  75. };
  76. descendingToggle.Draw(toggleStyle);
  77. GUILayout.FlexibleSpace();
  78. closeButton.Draw();
  79. GUILayout.EndHorizontal();
  80. GUILayout.EndHorizontal();
  81. }
  82. protected override void ReloadTranslation()
  83. {
  84. kankyoToggle.Label = Translation.Get("sceneManager", "kankyoToggle");
  85. refreshButton.Label = Translation.Get("sceneManager", "refreshButton");
  86. sortDropdown.SetDropdownItems(Translation.GetArray("sceneManager", sortModes));
  87. descendingToggle.Label = Translation.Get("sceneManager", "descendingToggle");
  88. sortLabel = Translation.Get("sceneManager", "sortLabel");
  89. }
  90. }