SettingsWindow.cs 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. using BansheeEngine;
  2. namespace BansheeEditor
  3. {
  4. /// <summary>
  5. /// Displays project and editor settings
  6. /// </summary>
  7. internal sealed class SettingsWindow : EditorWindow
  8. {
  9. private GUIFloatField defaultHandleSizeField;
  10. private GUIToggleField autoLoadLastProjectField;
  11. /// <summary>
  12. /// Opens the settings window if its not open already.
  13. /// </summary>
  14. [MenuItem("Tools/Settings", 9297, true)]
  15. private static void OpenSettingsWindow()
  16. {
  17. OpenWindow<SettingsWindow>();
  18. }
  19. /// <inheritdoc/>
  20. protected override LocString GetDisplayName()
  21. {
  22. return new LocEdString("Settings");
  23. }
  24. private void OnInitialize()
  25. {
  26. Width = 300;
  27. GUIToggle projectFoldout = new GUIToggle(new LocEdString("Project"), EditorStyles.Foldout);
  28. GUIToggle editorFoldout = new GUIToggle(new LocEdString("Editor"), EditorStyles.Foldout);
  29. defaultHandleSizeField = new GUIFloatField(new LocEdString("Handle size"), 200);
  30. defaultHandleSizeField.OnChanged += (x) => { EditorSettings.DefaultHandleSize = x; };
  31. autoLoadLastProjectField = new GUIToggleField(new LocEdString("Automatically load last project"), 200);
  32. autoLoadLastProjectField.OnChanged += (x) => { EditorSettings.AutoLoadLastProject = x; };
  33. GUILayout mainLayout = GUI.AddLayoutY();
  34. mainLayout.AddElement(projectFoldout);
  35. GUILayout projectLayoutOuterY = mainLayout.AddLayoutY();
  36. projectLayoutOuterY.AddSpace(5);
  37. GUILayout projectLayoutOuterX = projectLayoutOuterY.AddLayoutX();
  38. projectLayoutOuterX.AddSpace(5);
  39. GUILayout projectLayout = projectLayoutOuterX.AddLayoutY();
  40. projectLayoutOuterX.AddSpace(5);
  41. projectLayoutOuterY.AddSpace(5);
  42. mainLayout.AddElement(editorFoldout);
  43. GUILayout editorLayoutOuterY = mainLayout.AddLayoutY();
  44. editorLayoutOuterY.AddSpace(5);
  45. GUILayout editorLayoutOuterX = editorLayoutOuterY.AddLayoutX();
  46. editorLayoutOuterX.AddSpace(5);
  47. GUILayout editorLayout = editorLayoutOuterX.AddLayoutY();
  48. editorLayoutOuterX.AddSpace(5);
  49. editorLayoutOuterY.AddSpace(5);
  50. mainLayout.AddFlexibleSpace();
  51. editorLayout.AddElement(defaultHandleSizeField);
  52. editorLayout.AddElement(autoLoadLastProjectField);
  53. projectFoldout.Value = true;
  54. editorFoldout.Value = true;
  55. projectFoldout.OnToggled += (x) => projectLayout.Active = x;
  56. editorFoldout.OnToggled += (x) => editorLayout.Active = x;
  57. }
  58. private void OnEditorUpdate()
  59. {
  60. defaultHandleSizeField.Value = EditorSettings.DefaultHandleSize;
  61. autoLoadLastProjectField.Value = EditorSettings.AutoLoadLastProject;
  62. }
  63. }
  64. }