2025-03-11 15:30:07 +08:00

150 lines
4.8 KiB
C#

using System.Linq;
using UnityEditor;
using UnityEngine;
using UnityEngine.UIElements;
using UnityEditor.UIElements;
using Codice.CM.Common;
using PlasticGui;
using Unity.PlasticSCM.Editor;
using Unity.PlasticSCM.Editor.UI.UIElements;
using Unity.PlasticSCM.Editor.Inspector;
using Unity.PlasticSCM.Editor.SceneView;
internal class TurnOffPlasticWindow : EditorWindow
{
internal static void ShowWindow()
{
TurnOffPlasticWindow window = GetWindow<TurnOffPlasticWindow>();
window.titleContent = new GUIContent(PlasticLocalization.GetString(
PlasticLocalization.Name.TurnOffPlasticSCM));
window.minSize = new Vector2(500, 350);
window.maxSize = new Vector2(500, 350);
window.Show();
}
void OnEnable()
{
mProgress = 0;
EditorApplication.update += UpdateProgress;
InitializeLayoutAndStyles();
BuildComponents();
}
void OnDestroy()
{
Dispose();
}
void Dispose()
{
mTurnOffButton.clicked -= CreateButton_Clicked;
EditorApplication.update -= UpdateProgress;
}
void InitializeLayoutAndStyles()
{
mRoot = rootVisualElement;
mRoot.LoadLayout(typeof(TurnOffPlasticWindow).Name);
mRoot.LoadStyle(typeof(TurnOffPlasticWindow).Name);
}
void BuildComponents()
{
mRoot = rootVisualElement;
mTurnOffButton = mRoot.Query<Button>("turnoff-button").First();
mTurnOffButton.text = PlasticLocalization.GetString(
PlasticLocalization.Name.TurnOffPlasticSCM);
mTurnOffButton.clicked += CreateButton_Clicked;
mTurnOffLabel = mRoot.Query<Label>("turnoff-label").First();
mTurnOffLabel.text = PlasticLocalization.GetString(
PlasticLocalization.Name.TurnOffPlasticSCMDescrition);
mTurnedOffLabel = mRoot.Query<Label>("progress-label").First();
mTurnedOffLabel.text = string.Empty;
mRoot.Add(mProgressBar = new ProgressBar());
mProgressBar.style.marginLeft = 120f;
mProgressBar.style.marginBottom = 2f;
mProgressBar.title = string.Empty;
mProgressBar.style.width = 300f;
mProgressBar.style.display = DisplayStyle.None;
}
void UpdateProgress()
{
if (mProgress == 0) return;
mProgressBar.style.display = DisplayStyle.Flex;
if (mProgress == 1)
{
mProgressBar.value = 20f;
mProgressBar.title = mProgressBar.value.ToString() + "%";
mTurnedOffLabel.text = PlasticLocalization.GetString(
PlasticLocalization.Name.TurnOffPlasticSCMClosingWindow);
mPlasticWindow = Resources.FindObjectsOfTypeAll<PlasticWindow>().First();
mPlasticWindow.Close();
mProgress = 2;
return;
}
if (mProgress == 2)
{
mProgressBar.value = 50f;
mProgressBar.title = mProgressBar.value.ToString() +"%";
mTurnedOffLabel.text = PlasticLocalization.GetString(
PlasticLocalization.Name.TurnOffPlasticSCMCleaning);
SetupCloudProjectId.SetCloudProjectId("");
mProgress = 3;
return;
}
if (mProgress == 3)
{
mProgressBar.value = 75f;
mProgressBar.title = mProgressBar.value.ToString() +"%";
mTurnedOffLabel.text = PlasticLocalization.GetString(
PlasticLocalization.Name.TurnOffPlasticSCMDeleting);
WorkspaceInfo workspaceInfo =
FindWorkspace.InfoForApplicationPath(
Application.dataPath,
PlasticApp.PlasticAPI);
Plastic.API.RemoveWorkspace(workspaceInfo);
DrawInspectorOperations.Disable();
DrawSceneOperations.Disable();
mProgress = 4;
return;
}
if (mProgress == 4)
{
mProgressBar.value = 100f;
mProgressBar.title = mProgressBar.value.ToString() +"%";
mTurnedOffLabel.text = PlasticLocalization.GetString(
PlasticLocalization.Name.Done);
mProgress = 9999;
return;
}
}
void CreateButton_Clicked()
{
if (mProgress != 0) return;
if (EditorUtility.DisplayDialog(PlasticLocalization.GetString(
PlasticLocalization.Name.TurningOffPlasticSCM),
PlasticLocalization.GetString(PlasticLocalization.Name.TurnOffPlasticSCMAreYouSure),
PlasticLocalization.GetString(PlasticLocalization.Name.YesButton),
PlasticLocalization.GetString(PlasticLocalization.Name.NoButton)))
{
mProgress = 1;
}
}
VisualElement mRoot;
Button mTurnOffButton;
Label mTurnOffLabel;
Label mTurnedOffLabel;
ProgressBar mProgressBar;
int mProgress;
PlasticWindow mPlasticWindow;
}