using UnityEditor; using UnityEngine.Scripting; using Terra.Arbitrator.Settings; namespace Terra.Arbitrator.GUI { [Preserve] internal class BetterGitSettingsProvider : SettingsProvider { private const string SettingsPath = "Project/Better Git"; private BetterGitSettingsProvider(string path, SettingsScope scope = SettingsScope.User) : base(path, scope) {} /// /// This static method is what registers our settings provider with Unity. /// [SettingsProvider] public static SettingsProvider CreateSettingsProvider() { var provider = new BetterGitSettingsProvider(SettingsPath, SettingsScope.Project); return provider; } /// /// This is where we draw the UI for our settings page. /// public override void OnGUI(string searchContext) { var username = BetterGitSettings.Username; var email = BetterGitSettings.Email; var authUsername = BetterGitSettings.AuthUsername; var authPassword = BetterGitSettings.AuthPassword; EditorGUILayout.Space(); EditorGUILayout.LabelField("Git Credentials", EditorStyles.boldLabel); 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); EditorGUILayout.Space(); EditorGUI.BeginChangeCheck(); username = EditorGUILayout.TextField("Username", username); email = EditorGUILayout.TextField("Email Address", email); EditorGUILayout.Space(20); EditorGUILayout.LabelField("HTTPS Authentication", EditorStyles.boldLabel); 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); authUsername = EditorGUILayout.TextField("Auth Username", authUsername); authPassword = EditorGUILayout.PasswordField("Auth Password / Token", authPassword); if (!EditorGUI.EndChangeCheck()) return; BetterGitSettings.Username = username; BetterGitSettings.Email = email; BetterGitSettings.AuthUsername = authUsername; BetterGitSettings.AuthPassword = authPassword; } } }