A game about forced loneliness, made by TACStudios
at master 2.0 kB view raw
1using UnityEditor; 2using UnityEditor.IMGUI.Controls; 3using UnityEngine; 4 5using Unity.PlasticSCM.Editor.Views.PendingChanges; 6 7namespace Unity.PlasticSCM.Editor 8{ 9 internal static class DrawGuiModeSwitcher 10 { 11 internal static void ForMode( 12 bool isGluonMode, 13 WorkspaceWindow workspaceWindow, 14 TreeView changesTreeView, 15 EditorWindow editorWindow) 16 { 17 GUI.enabled = !workspaceWindow.IsOperationInProgress(); 18 19 EditorGUI.BeginChangeCheck(); 20 21 GuiMode currentMode = isGluonMode ? 22 GuiMode.GluonMode : GuiMode.DeveloperMode; 23 24 GuiMode selectedMode = (GuiMode)EditorGUILayout.EnumPopup( 25 currentMode, 26 EditorStyles.toolbarDropDown, 27 GUILayout.Width(100)); 28 29 if (EditorGUI.EndChangeCheck()) 30 { 31 SwitchGuiModeIfUserWants( 32 workspaceWindow, currentMode, selectedMode, 33 changesTreeView, editorWindow); 34 } 35 36 GUI.enabled = true; 37 } 38 39 static void SwitchGuiModeIfUserWants( 40 WorkspaceWindow workspaceWindow, 41 GuiMode currentMode, GuiMode selectedMode, 42 TreeView changesTreeView, 43 EditorWindow editorWindow) 44 { 45 if (currentMode == selectedMode) 46 return; 47 48 bool userConfirmed = SwitchModeConfirmationDialog.SwitchMode( 49 currentMode == GuiMode.GluonMode, editorWindow); 50 51 if (!userConfirmed) 52 return; 53 54 bool isGluonMode = selectedMode == GuiMode.GluonMode; 55 56 workspaceWindow.UpdateWorkspaceForMode(isGluonMode); 57 58 PendingChangesTreeHeaderState.SetMode( 59 changesTreeView.multiColumnHeader.state, 60 isGluonMode); 61 } 62 63 enum GuiMode 64 { 65 DeveloperMode, 66 GluonMode 67 } 68 } 69}