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;
}
}
}