SceneManagerTitleBar.cs 4.1 KB

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