BetterGitSettingsProvider.cs 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. using UnityEditor;
  2. using UnityEngine.Scripting;
  3. using Terra.Arbitrator.Settings;
  4. namespace Terra.Arbitrator.GUI
  5. {
  6. [Preserve]
  7. internal class BetterGitSettingsProvider : SettingsProvider
  8. {
  9. // The path in the Project Settings window.
  10. private const string SettingsPath = "Project/Better Git";
  11. // Constructor
  12. private BetterGitSettingsProvider(string path, SettingsScope scope = SettingsScope.User)
  13. : base(path, scope) {}
  14. /// <summary>
  15. /// This static method is what registers our settings provider with Unity.
  16. /// </summary>
  17. [SettingsProvider]
  18. public static SettingsProvider CreateSettingsProvider()
  19. {
  20. var provider = new BetterGitSettingsProvider(SettingsPath, SettingsScope.Project);
  21. return provider;
  22. }
  23. /// <summary>
  24. /// This is where we draw the UI for our settings page.
  25. /// </summary>
  26. public override void OnGUI(string searchContext)
  27. {
  28. // Load the current settings directly within OnGUI.
  29. var username = BetterGitSettings.Username;
  30. var email = BetterGitSettings.Email;
  31. EditorGUILayout.Space();
  32. EditorGUILayout.LabelField("Git Credentials", EditorStyles.boldLabel);
  33. EditorGUILayout.HelpBox("These credentials will be used for Git operations like Push. They are saved per-user and shared across your projects. Changes are saved automatically.", MessageType.Info);
  34. EditorGUILayout.Space();
  35. EditorGUI.BeginChangeCheck();
  36. username = EditorGUILayout.TextField("Username", username);
  37. email = EditorGUILayout.TextField("Email Address", email);
  38. if (!EditorGUI.EndChangeCheck()) return;
  39. BetterGitSettings.Username = username;
  40. BetterGitSettings.Email = email;
  41. }
  42. }
  43. }