A game about forced loneliness, made by TACStudios
at master 2.6 kB view raw
1using UnityEditor; 2using UnityEngine; 3 4namespace Unity.PlasticSCM.Editor.UI.Progress 5{ 6 internal static class DrawProgressForOperations 7 { 8 internal static void For( 9 WorkspaceWindow workspaceWindow, 10 OperationProgressData operationProgressData, 11 float width) 12 { 13 EditorGUILayout.BeginVertical( 14 EditorStyles.helpBox, GUILayout.Height(60)); 15 16 GUILayout.Label( 17 operationProgressData.ProgressHeader ?? string.Empty, 18 EditorStyles.miniLabel); 19 20 DoProgressBar( 21 operationProgressData.TotalProgressMessage, 22 (float)operationProgressData.TotalProgressPercent, 23 operationProgressData.CanCancelProgress, width); 24 25 if (operationProgressData.CanCancelProgress) 26 DoCancelButton(workspaceWindow); 27 28 if (operationProgressData.ShowCurrentBlock) 29 { 30 GUILayout.Space(6); 31 DoProgressBar( 32 operationProgressData.CurrentBlockProgressMessage, 33 (float)operationProgressData.CurrentBlockProgressPercent, 34 operationProgressData.CanCancelProgress, width); 35 } 36 37 EditorGUILayout.EndVertical(); 38 } 39 40 static void DoProgressBar( 41 string message, 42 float progressPercent, 43 bool canCancel, 44 float width) 45 { 46 Rect progressRect = GUILayoutUtility.GetRect(width, 15); 47 48 if (canCancel) 49 progressRect.width -= UnityConstants.CANCEL_BUTTON_SIZE + 2; 50 51 EditorGUI.ProgressBar(progressRect, progressPercent, string.Empty); 52 53 progressRect.xMin += 4; 54 55 GUI.Label(progressRect, message, EditorStyles.miniLabel); 56 } 57 58 static void DoCancelButton( 59 WorkspaceWindow workspaceWindow) 60 { 61 Rect beginRect = GUILayoutUtility.GetLastRect(); 62 Rect endRect = GUILayoutUtility.GetLastRect(); 63 64 float freeVerticalSpace = endRect.yMax - beginRect.yMin; 65 66 Rect cancelButtonRect = new Rect( 67 endRect.xMax - UnityConstants.CANCEL_BUTTON_SIZE + 1, 68 beginRect.yMin + (freeVerticalSpace - UnityConstants.CANCEL_BUTTON_SIZE) / 2, 69 UnityConstants.CANCEL_BUTTON_SIZE, UnityConstants.CANCEL_BUTTON_SIZE); 70 71 if (!GUI.Button(cancelButtonRect, GUIContent.none, UnityStyles.CancelButton)) 72 return; 73 74 workspaceWindow.CancelCurrentOperation(); 75 } 76 } 77}