BetterGitSettingsProvider.cs 1.9 KB

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