Net-Game/Library/PackageCache/com.unity.collab-proxy@50ac96531b63/Editor/Settings/OtherOptionsFoldout.cs
2025-03-28 08:33:16 -04:00

145 lines
5.2 KiB
C#

using System;
using UnityEditor;
using UnityEngine;
using PlasticGui;
using Unity.PlasticSCM.Editor.UI;
namespace Unity.PlasticSCM.Editor.Settings
{
class OtherOptionsFoldout
{
internal void OnActivate()
{
PlasticGuiConfigData data = PlasticGuiConfig.Get().Configuration;
mNewCodeReviewCreateAndOpenInDesktop = data.NewCodeReviewBehavior == NewCodeReviewBehavior.CreateAndOpenInDesktop;
mNewCodeReviewRequestReviewInUnityCloud = data.NewCodeReviewBehavior == NewCodeReviewBehavior.RequestFromUnityCloud;
mNewCodeReviewAskAlways = data.NewCodeReviewBehavior == NewCodeReviewBehavior.Ask;
}
internal void OnDeactivate()
{
PlasticGuiConfig plasticGuiConfig = PlasticGuiConfig.Get();
plasticGuiConfig.Configuration.NewCodeReviewBehavior = GetSelectedNewCodeReviewBehavior();
plasticGuiConfig.Save();
}
internal void OnGUI()
{
DrawSplitter.ForWidth(UnityConstants.SETTINGS_GUI_WIDTH);
DrawSettingsSection(DoNewCodeReviewBehaviorSettings);
}
internal void SelectNewCodeReviewBehaviorForTesting(NewCodeReviewBehavior shelveBehavior)
{
mNewCodeReviewCreateAndOpenInDesktop = shelveBehavior == NewCodeReviewBehavior.CreateAndOpenInDesktop;
mNewCodeReviewRequestReviewInUnityCloud = shelveBehavior == NewCodeReviewBehavior.RequestFromUnityCloud;
mNewCodeReviewAskAlways = shelveBehavior == NewCodeReviewBehavior.Ask;
}
NewCodeReviewBehavior GetSelectedNewCodeReviewBehavior()
{
if (mNewCodeReviewCreateAndOpenInDesktop)
return NewCodeReviewBehavior.CreateAndOpenInDesktop;
if (mNewCodeReviewRequestReviewInUnityCloud)
return NewCodeReviewBehavior.RequestFromUnityCloud;
return NewCodeReviewBehavior.Ask;
}
void DoNewCodeReviewBehaviorSettings()
{
GUILayout.Label(
PlasticLocalization.Name.NewCodeReviewDefaultBehavior.GetString(),
UnityStyles.ProjectSettings.SectionTitle);
EditorGUILayout.Space(2);
if (EditorGUILayout.Toggle(
Styles.NewCodeReviewCreateAndOpenInDesktop,
mNewCodeReviewCreateAndOpenInDesktop,
new GUIStyle(EditorStyles.radioButton)))
{
mNewCodeReviewCreateAndOpenInDesktop = true;
mNewCodeReviewRequestReviewInUnityCloud = false;
mNewCodeReviewAskAlways = false;
}
if (EditorGUILayout.Toggle(
Styles.NewCodeReviewRequestReviewInUnityCloud,
mNewCodeReviewRequestReviewInUnityCloud,
new GUIStyle(EditorStyles.radioButton)))
{
mNewCodeReviewCreateAndOpenInDesktop = false;
mNewCodeReviewRequestReviewInUnityCloud = true;
mNewCodeReviewAskAlways = false;
}
if (EditorGUILayout.Toggle(
Styles.NewCodeReviewAskAlways,
mNewCodeReviewAskAlways,
new GUIStyle(EditorStyles.radioButton)))
{
mNewCodeReviewCreateAndOpenInDesktop = false;
mNewCodeReviewRequestReviewInUnityCloud = false;
mNewCodeReviewAskAlways = true;
}
}
static void DrawSettingsSection(Action drawSettings)
{
float originalLabelWidth = EditorGUIUtility.labelWidth;
try
{
EditorGUIUtility.labelWidth = UnityConstants.SETTINGS_GUI_WIDTH;
using (new EditorGUILayout.HorizontalScope())
{
GUILayout.Space(10);
using (new EditorGUILayout.VerticalScope())
{
GUILayout.Space(10);
drawSettings();
GUILayout.Space(10);
}
GUILayout.Space(10);
}
}
finally
{
EditorGUIUtility.labelWidth = originalLabelWidth;
}
}
class Styles
{
internal static GUIContent NewCodeReviewAskAlways =
new GUIContent(
PlasticLocalization.Name.NewCodeReviewAskAlways.GetString(),
PlasticLocalization.Name.NewCodeReviewAskAlwaysExplanation.GetString());
internal static GUIContent NewCodeReviewCreateAndOpenInDesktop =
new GUIContent(
PlasticLocalization.Name.OpenInDesktopApp.GetString(),
PlasticLocalization.Name.CreateAndOpenCodeReviewInDesktopExplanation.GetString());
internal static GUIContent NewCodeReviewRequestReviewInUnityCloud =
new GUIContent(
PlasticLocalization.Name.OpenInUnityCloud.GetString(),
PlasticLocalization.Name.RequestCodeReviewFromUnityCloudExplanation.GetString());
}
bool mNewCodeReviewCreateAndOpenInDesktop;
bool mNewCodeReviewRequestReviewInUnityCloud;
bool mNewCodeReviewAskAlways;
}
}