BetterGitSettingsProvider.cs 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  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. private const string SettingsPath = "Project/Better Git";
  10. private BetterGitSettingsProvider(string path, SettingsScope scope = SettingsScope.User) : base(path, scope) {}
  11. /// <summary>
  12. /// This static method is what registers our settings provider with Unity.
  13. /// </summary>
  14. [SettingsProvider]
  15. public static SettingsProvider CreateSettingsProvider()
  16. {
  17. var provider = new BetterGitSettingsProvider(SettingsPath, SettingsScope.Project);
  18. return provider;
  19. }
  20. /// <summary>
  21. /// This is where we draw the UI for our settings page.
  22. /// </summary>
  23. public override void OnGUI(string searchContext)
  24. {
  25. var username = BetterGitSettings.Username;
  26. var email = BetterGitSettings.Email;
  27. var authUsername = BetterGitSettings.AuthUsername;
  28. var authPassword = BetterGitSettings.AuthPassword;
  29. EditorGUILayout.Space();
  30. EditorGUILayout.LabelField("Git Credentials", EditorStyles.boldLabel);
  31. 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);
  32. EditorGUILayout.Space();
  33. EditorGUI.BeginChangeCheck();
  34. username = EditorGUILayout.TextField("Username", username);
  35. email = EditorGUILayout.TextField("Email Address", email);
  36. EditorGUILayout.Space(20);
  37. EditorGUILayout.LabelField("HTTPS Authentication", EditorStyles.boldLabel);
  38. EditorGUILayout.HelpBox("Use these fields to provide credentials for private servers like Gogs or other systems that require a username and password/token for HTTPS operations.", MessageType.Info);
  39. authUsername = EditorGUILayout.TextField("Auth Username", authUsername);
  40. authPassword = EditorGUILayout.PasswordField("Auth Password / Token", authPassword);
  41. if (!EditorGUI.EndChangeCheck()) return;
  42. BetterGitSettings.Username = username;
  43. BetterGitSettings.Email = email;
  44. BetterGitSettings.AuthUsername = authUsername;
  45. BetterGitSettings.AuthPassword = authPassword;
  46. }
  47. }
  48. }