private void DoOpen(AssetList resolve) { bool includeFolder = true; Asset.States[] states = new Asset.States[] { Asset.States.Conflicted }; this.assetList = resolve.Filter(includeFolder, states); this.RefreshList(); }
private static string StateToString(Asset.States state) { if (IsState(state, Asset.States.AddedLocal)) { return("Added Local"); } if (IsState(state, Asset.States.AddedRemote)) { return("Added Remote"); } if (IsState(state, Asset.States.CheckedOutLocal) && !IsState(state, Asset.States.LockedLocal)) { return("Checked Out Local"); } if (IsState(state, Asset.States.CheckedOutRemote) && !IsState(state, Asset.States.LockedRemote)) { return("Checked Out Remote"); } if (IsState(state, Asset.States.Conflicted)) { return("Conflicted"); } if (IsState(state, Asset.States.DeletedLocal)) { return("Deleted Local"); } if (IsState(state, Asset.States.DeletedRemote)) { return("Deleted Remote"); } if (IsState(state, Asset.States.Local)) { return("Local"); } if (IsState(state, Asset.States.LockedLocal)) { return("Locked Local"); } if (IsState(state, Asset.States.LockedRemote)) { return("Locked Remote"); } if (IsState(state, Asset.States.OutOfSync)) { return("Out Of Sync"); } return(string.Empty); }
public static void Open(AssetList assets) { Task task = Provider.Status(assets); task.Wait(); Asset.States[] states = new Asset.States[] { Asset.States.CheckedOutLocal, Asset.States.DeletedLocal, Asset.States.AddedLocal, Asset.States.Missing }; AssetList revert = task.assetList.Filter(true, states); GetWindow().DoOpen(revert); }
private void DoOpen(AssetList resolve) { bool includeFolder = true; Asset.States[] states = new Asset.States[] { Asset.States.Conflicted }; this.assetList = resolve.Filter(includeFolder, states); this.RefreshList(); }
internal static string StateToString(Asset.States state) { string result; if (Asset.IsState(state, Asset.States.AddedLocal)) { result = "Added Local"; } else if (Asset.IsState(state, Asset.States.AddedRemote)) { result = "Added Remote"; } else if (Asset.IsState(state, Asset.States.CheckedOutLocal) && !Asset.IsState(state, Asset.States.LockedLocal)) { result = "Checked Out Local"; } else if (Asset.IsState(state, Asset.States.CheckedOutRemote) && !Asset.IsState(state, Asset.States.LockedRemote)) { result = "Checked Out Remote"; } else if (Asset.IsState(state, Asset.States.Conflicted)) { result = "Conflicted"; } else if (Asset.IsState(state, Asset.States.DeletedLocal)) { result = "Deleted Local"; } else if (Asset.IsState(state, Asset.States.DeletedRemote)) { result = "Deleted Remote"; } else if (Asset.IsState(state, Asset.States.Local)) { result = "Local"; } else if (Asset.IsState(state, Asset.States.LockedLocal)) { result = "Locked Local"; } else if (Asset.IsState(state, Asset.States.LockedRemote)) { result = "Locked Remote"; } else if (Asset.IsState(state, Asset.States.OutOfSync)) { result = "Out Of Sync"; } else if (Asset.IsState(state, Asset.States.Updating)) { result = "Updating Status"; } else { result = ""; } return(result); }
// Handle asset moving public static AssetMoveResult OnWillMoveAsset(string from, string to) { if (!Provider.enabled || EditorUserSettings.WorkOffline) { return(AssetMoveResult.DidNotMove); } if (!Provider.PathIsVersioned(from)) { return(AssetMoveResult.DidNotMove); } if (!Provider.PathIsVersioned(to)) { return(AssetMoveResult.DidNotMove); } if (InternalEditorUtility.isHumanControllingUs && Directory.Exists(from) && !EditorUtility.DisplayDialog("Confirm version control operation", L10n.Tr($"You are about to move or rename a folder that is under version control.\n\nFrom:\t{from}\nTo:\t{to}\n\nAre you sure you want to perform this action?"), "Yes", "No")) { return(AssetMoveResult.FailedMove); } Asset asset = GetStatusCachedIfPossible(from, true); if (asset == null || !asset.IsUnderVersionControl) { return(AssetMoveResult.DidNotMove); } Asset.States assetState = asset.state; if (Asset.IsState(assetState, Asset.States.OutOfSync)) { Debug.LogError("Cannot move version controlled file that is not up to date. Please get latest changes from server"); return(AssetMoveResult.FailedMove); } else if (Asset.IsState(assetState, Asset.States.DeletedRemote)) { Debug.LogError("Cannot move version controlled file that is deleted on server. Please get latest changes from server"); return(AssetMoveResult.FailedMove); } else if (Asset.IsState(assetState, Asset.States.CheckedOutRemote)) { Debug.LogError("Cannot move version controlled file that is checked out on server. Please get latest changes from server"); return(AssetMoveResult.FailedMove); } else if (Asset.IsState(assetState, Asset.States.LockedRemote)) { Debug.LogError("Cannot move version controlled file that is locked on server. Please get latest changes from server"); return(AssetMoveResult.FailedMove); } // Perform the actual move Task task = Provider.Move(from, to); task.Wait(); return(task.success ? (AssetMoveResult)task.resultCode : AssetMoveResult.FailedMove); }
public static void Open(AssetList assets) { Task task = Provider.Status(assets); task.Wait(); Asset.States[] states = new Asset.States[] { Asset.States.CheckedOutLocal, Asset.States.DeletedLocal, Asset.States.AddedLocal, Asset.States.Missing }; AssetList revert = task.assetList.Filter(true, states); GetWindow().DoOpen(revert); }
public bool IsOneOfStates(Asset.States[] states) { for (int i = 0; i < states.Length; i++) { Asset.States states2 = states[i]; if ((this.state & states2) != Asset.States.None) { return(true); } } return(false); }
private static void DrawOverlay(Asset.States state, Rect iconRect) { Rect atlasRectForState = Provider.GetAtlasRectForState((int)state); if (atlasRectForState.width != 0f) { Texture2D overlayAtlas = Provider.overlayAtlas; if (!(overlayAtlas == null)) { GUI.DrawTextureWithTexCoords(iconRect, overlayAtlas, atlasRectForState); } } }
void DrawOverlayDescription(Asset.States state) { Rect atlasUV = Provider.GetAtlasRectForState((int)state); if (atlasUV.width == 0f) return; // no overlay Texture2D atlas = Provider.overlayAtlas; if (atlas == null) return; GUILayout.Label(" " + Asset.StateToString(state), EditorStyles.miniLabel); Rect r = GUILayoutUtility.GetLastRect(); r.width = 16f; GUI.DrawTextureWithTexCoords(r, atlas, atlasUV); }
private static void DrawOverlay(Asset.States state, Rect iconRect) { Rect atlasRectForState = Provider.GetAtlasRectForState((int)state); if ((double)atlasRectForState.width == 0.0) { return; } Texture2D overlayAtlas = Provider.overlayAtlas; if ((Object)overlayAtlas == (Object)null) { return; } GUI.DrawTextureWithTexCoords(iconRect, (Texture)overlayAtlas, atlasRectForState); }
private void DrawOverlayDescription(Asset.States state) { Rect atlasRectForState = Provider.GetAtlasRectForState((int)state); if (atlasRectForState.width != 0f) { Texture2D overlayAtlas = Provider.overlayAtlas; if (!(overlayAtlas == null)) { GUILayout.Label(" " + Asset.StateToString(state), EditorStyles.miniLabel, new GUILayoutOption[0]); Rect lastRect = GUILayoutUtility.GetLastRect(); lastRect.width = 16f; GUI.DrawTextureWithTexCoords(lastRect, overlayAtlas, atlasRectForState); } } }
public bool IsOneOfStates(Asset.States[] states) { bool result; for (int i = 0; i < states.Length; i++) { Asset.States states2 = states[i]; if ((this.state & states2) != Asset.States.None) { result = true; return(result); } } result = false; return(result); }
static void DrawOverlay(Asset.States state, Rect iconRect) { Rect atlasUV = Provider.GetAtlasRectForState((int)state); if (atlasUV.width == 0f) { return; // no overlay } Texture2D atlas = Provider.overlayAtlas; if (atlas == null) { return; } GUI.DrawTextureWithTexCoords(iconRect, atlas, atlasUV); }
private void ShowScriptPopup(Rect r) { int length = m_DefaultTimeScripts.Count; string[] names = new string[length]; bool[] enabled = new bool[length]; var lockedScripts = new HashSet <MonoScript>(); if (Provider.enabled) { var assetList = new AssetList(); var pathToScript = new Dictionary <string, MonoScript>(); for (int i = 0; i < length; i++) { var metaPath = AssetDatabase.GetTextMetaFilePathFromAssetPath(AssetDatabase.GetAssetPath(m_DefaultTimeScripts[i])); if (Provider.GetAssetByPath(metaPath) != null) { assetList.Add(Provider.GetAssetByPath(metaPath)); pathToScript.Add(metaPath, m_DefaultTimeScripts[i]); } } Provider.Status(assetList).Wait(); const Asset.States kExclusiveLockedRemote = Asset.States.Exclusive | Asset.States.LockedRemote; foreach (var asset in assetList) { if ((asset.state & kExclusiveLockedRemote) == kExclusiveLockedRemote) { lockedScripts.Add(pathToScript[asset.metaPath]); } } } for (int c = 0; c < length; c++) { names[c] = m_DefaultTimeScripts[c].GetClass().FullName; // TODO: localization with a proper database. enabled[c] = !lockedScripts.Contains(m_DefaultTimeScripts[c]); //List item is disabled when asset is locked } EditorUtility.DisplayCustomMenu(r, names, enabled, null, MenuSelection, null); }
// Handle asset moving public static AssetMoveResult OnWillMoveAsset(string from, string to) { if (!Provider.enabled) { return(AssetMoveResult.DidNotMove); } Asset asset = GetStatusCachedIfPossible(from, CachedStatusMode.Sync); if (asset == null || !asset.IsUnderVersionControl) { return(AssetMoveResult.DidNotMove); } Asset.States assetState = asset.state; if (Asset.IsState(assetState, Asset.States.OutOfSync)) { Debug.LogError("Cannot move version controlled file that is not up to date. Please get latest changes from server"); return(AssetMoveResult.FailedMove); } else if (Asset.IsState(assetState, Asset.States.DeletedRemote)) { Debug.LogError("Cannot move version controlled file that is deleted on server. Please get latest changes from server"); return(AssetMoveResult.FailedMove); } else if (Asset.IsState(assetState, Asset.States.CheckedOutRemote)) { Debug.LogError("Cannot move version controlled file that is checked out on server. Please get latest changes from server"); return(AssetMoveResult.FailedMove); } else if (Asset.IsState(assetState, Asset.States.LockedRemote)) { Debug.LogError("Cannot move version controlled file that is locked on server. Please get latest changes from server"); return(AssetMoveResult.FailedMove); } // Perform the actual move Task task = Provider.Move(from, to); task.Wait(); return(task.success ? (AssetMoveResult)task.resultCode : AssetMoveResult.FailedMove); }
private void DrawOverlayDescription(Asset.States state) { Rect atlasRectForState = Provider.GetAtlasRectForState((int)state); if ((double)atlasRectForState.width == 0.0) { return; } Texture2D overlayAtlas = Provider.overlayAtlas; if ((UnityEngine.Object)overlayAtlas == (UnityEngine.Object)null) { return; } GUILayout.Label(" " + Asset.StateToString(state), EditorStyles.miniLabel, new GUILayoutOption[0]); Rect lastRect = GUILayoutUtility.GetLastRect(); lastRect.width = 16f; GUI.DrawTextureWithTexCoords(lastRect, (Texture)overlayAtlas, atlasRectForState); }
private static bool IsState(Asset.States state) { return(Overlay.m_Asset.IsState(state)); }
public bool IsState(Asset.States state) { return(Asset.IsState(this.state, state)); }
internal static bool IsState(Asset.States isThisState, Asset.States partOfThisState) { return((isThisState & partOfThisState) != Asset.States.None); }
internal static string AllStateToString(Asset.States state) { StringBuilder stringBuilder = new StringBuilder(); if (Asset.IsState(state, Asset.States.AddedLocal)) { stringBuilder.AppendLine("Added Local"); } if (Asset.IsState(state, Asset.States.AddedRemote)) { stringBuilder.AppendLine("Added Remote"); } if (Asset.IsState(state, Asset.States.CheckedOutLocal)) { stringBuilder.AppendLine("Checked Out Local"); } if (Asset.IsState(state, Asset.States.CheckedOutRemote)) { stringBuilder.AppendLine("Checked Out Remote"); } if (Asset.IsState(state, Asset.States.Conflicted)) { stringBuilder.AppendLine("Conflicted"); } if (Asset.IsState(state, Asset.States.DeletedLocal)) { stringBuilder.AppendLine("Deleted Local"); } if (Asset.IsState(state, Asset.States.DeletedRemote)) { stringBuilder.AppendLine("Deleted Remote"); } if (Asset.IsState(state, Asset.States.Local)) { stringBuilder.AppendLine("Local"); } if (Asset.IsState(state, Asset.States.LockedLocal)) { stringBuilder.AppendLine("Locked Local"); } if (Asset.IsState(state, Asset.States.LockedRemote)) { stringBuilder.AppendLine("Locked Remote"); } if (Asset.IsState(state, Asset.States.OutOfSync)) { stringBuilder.AppendLine("Out Of Sync"); } if (Asset.IsState(state, Asset.States.Synced)) { stringBuilder.AppendLine("Synced"); } if (Asset.IsState(state, Asset.States.Missing)) { stringBuilder.AppendLine("Missing"); } if (Asset.IsState(state, Asset.States.ReadOnly)) { stringBuilder.AppendLine("ReadOnly"); } return(stringBuilder.ToString()); }
static void DrawOverlays(Asset asset, Asset metaAsset, Rect itemRect, bool isHierarchy = false, bool isProject = false, bool otherIcons = false) { if (!EditorUserSettings.overlayIcons && !EditorUserSettings.hierarchyOverlayIcons && !EditorUserSettings.otherOverlayIcons) { return; } if (isHierarchy && !EditorUserSettings.hierarchyOverlayIcons) { return; } if (isProject && !EditorUserSettings.overlayIcons) { return; } if (otherIcons && !EditorUserSettings.otherOverlayIcons) { return; } CreateStaticResources(); float iconWidth = Mathf.Min(itemRect.height / 2 + 4, 16); // slightly offset icons since their texture space is not filled with content entirely float offsetX = 0; float offsetY = 2; Rect topLeft = new Rect(itemRect.x - offsetX, itemRect.y - offsetY, iconWidth, iconWidth); Rect topRight = new Rect(itemRect.xMax - iconWidth + offsetX, itemRect.y - offsetY, iconWidth, iconWidth); Rect bottomLeft = new Rect(itemRect.x - offsetX, itemRect.yMax - iconWidth + offsetY, iconWidth, iconWidth); Rect bottomRight = new Rect(itemRect.xMax - iconWidth + offsetX, itemRect.yMax - iconWidth + offsetY, iconWidth, iconWidth); Asset.States assetState = asset.state; Asset.States metaState = metaAsset != null ? metaAsset.state : Asset.States.None; Asset.States unmodifiedState = Asset.States.Local | Asset.States.MetaFile | Asset.States.ReadOnly | Asset.States.Synced; bool isMetaUnmodifiedState = metaAsset == null || (metaState & unmodifiedState) == unmodifiedState; Asset.States localMetaState = metaAsset == null ? Asset.States.None : metaState & (Asset.States.AddedLocal | Asset.States.CheckedOutLocal | Asset.States.DeletedLocal | Asset.States.LockedLocal); Asset.States remoteMetaState = metaAsset == null ? Asset.States.None : metaState & (Asset.States.AddedRemote | Asset.States.CheckedOutRemote | Asset.States.DeletedRemote | Asset.States.LockedRemote); bool keepFolderMetaParans = asset.isFolder && Provider.isVersioningFolders; bool providerActive = Provider.isActive; if (!isHierarchy) { // Local state overlay if (!providerActive) { GUI.DrawTexture(topLeft, s_DisconnectedIcon); } else if (Asset.IsState(assetState, Asset.States.AddedLocal)) { DrawOverlay(Asset.States.AddedLocal, topLeft); // Meta overlay if meta file is not added or already in repo and unmodified. if (metaAsset != null && (localMetaState & Asset.States.AddedLocal) == 0 && !isMetaUnmodifiedState) { DrawMetaOverlay(topLeft, false); } } else if (Asset.IsState(assetState, Asset.States.DeletedLocal)) { DrawOverlay(Asset.States.DeletedLocal, topLeft); // Meta overlay if meta file is not deleted but asset is and meta file is still present or missing (ie. should have been there) if (metaAsset != null && (localMetaState & Asset.States.DeletedLocal) == 0 && Asset.IsState(metaState, Asset.States.Local | Asset.States.Missing)) { DrawMetaOverlay(topLeft, false); } } else if (Asset.IsState(assetState, Asset.States.LockedLocal)) { DrawOverlay(Asset.States.LockedLocal, topLeft); // Meta overlay if meta file is not locked or unmodified. if (metaAsset != null && (localMetaState & Asset.States.LockedLocal) == 0 && !isMetaUnmodifiedState) { DrawMetaOverlay(topLeft, false); } } else if (Asset.IsState(assetState, Asset.States.CheckedOutLocal)) { DrawOverlay(Asset.States.CheckedOutLocal, topLeft); // Meta overlay if meta file is not checked out or unmodified. if (metaAsset != null && (localMetaState & Asset.States.CheckedOutLocal) == 0 && !isMetaUnmodifiedState) { DrawMetaOverlay(topLeft, false); } } else if (Asset.IsState(assetState, Asset.States.Local) && !(Asset.IsState(assetState, Asset.States.OutOfSync) || Asset.IsState(assetState, Asset.States.Synced))) { DrawOverlay(Asset.States.Local, bottomLeft); // Meta overlay if meta file is not local only or unmodified. if (metaAsset != null && (metaAsset.IsUnderVersionControl || !Asset.IsState(metaState, Asset.States.Local))) { DrawMetaOverlay(bottomLeft, false); } } // From here the local asset have no state that need a local state overlay. We use the meta state if there is one instead. else if (metaAsset != null && Asset.IsState(metaState, Asset.States.AddedLocal)) { DrawOverlay(Asset.States.AddedLocal, topLeft); if (keepFolderMetaParans) { DrawMetaOverlay(topLeft, false); } } else if (metaAsset != null && Asset.IsState(metaState, Asset.States.DeletedLocal)) { DrawOverlay(Asset.States.DeletedLocal, topLeft); if (keepFolderMetaParans) { DrawMetaOverlay(topLeft, false); } } else if (metaAsset != null && Asset.IsState(metaState, Asset.States.LockedLocal)) { DrawOverlay(Asset.States.LockedLocal, topLeft); if (keepFolderMetaParans) { DrawMetaOverlay(topLeft, false); } } else if (metaAsset != null && Asset.IsState(metaState, Asset.States.CheckedOutLocal)) { DrawOverlay(Asset.States.CheckedOutLocal, topLeft); if (keepFolderMetaParans) { DrawMetaOverlay(topLeft, false); } } else if (metaAsset != null && Asset.IsState(metaState, Asset.States.Local) && !(Asset.IsState(metaState, Asset.States.OutOfSync) || Asset.IsState(metaState, Asset.States.Synced)) && !(Asset.IsState(assetState, Asset.States.Conflicted) || (metaAsset != null && Asset.IsState(metaState, Asset.States.Conflicted)))) { DrawOverlay(Asset.States.Local, bottomLeft); if (keepFolderMetaParans) { DrawMetaOverlay(bottomLeft, false); } } } if (Asset.IsState(assetState, Asset.States.Conflicted) || (metaAsset != null && Asset.IsState(metaState, Asset.States.Conflicted))) { if (isHierarchy) { bottomLeft.x += 5; } DrawOverlay(Asset.States.Conflicted, bottomLeft); } if (providerActive && !isHierarchy) { if ((asset.isFolder == false && Asset.IsState(assetState, Asset.States.Updating)) || (metaAsset != null && Asset.IsState(metaState, Asset.States.Updating))) { DrawOverlay(Asset.States.Updating, bottomRight); } } // Remote state overlay if (!providerActive) { // nothing; disconnected icon was already drawn for local overlay above } else if (Asset.IsState(assetState, Asset.States.AddedRemote)) { DrawOverlay(Asset.States.AddedRemote, topRight); // Meta overlay if meta file is not added or already in repo and unmodified. if (metaAsset != null && (remoteMetaState & Asset.States.AddedRemote) == 0) { DrawMetaOverlay(topRight, true); } } else if (Asset.IsState(assetState, Asset.States.DeletedRemote)) { DrawOverlay(Asset.States.DeletedRemote, topRight); // Meta overlay if meta file is not deleted but asset is and meta file is still present or missing (ie. should have been there) if (metaAsset != null && (remoteMetaState & Asset.States.DeletedRemote) == 0) { DrawMetaOverlay(topRight, true); } } else if (Asset.IsState(assetState, Asset.States.LockedRemote)) { DrawOverlay(Asset.States.LockedRemote, topRight); // Meta overlay if meta file is not locked or unmodified. if (metaAsset != null && (remoteMetaState & Asset.States.LockedRemote) == 0) { DrawMetaOverlay(topRight, true); } } else if (Asset.IsState(assetState, Asset.States.CheckedOutRemote)) { DrawOverlay(Asset.States.CheckedOutRemote, topRight); // Meta overlay if meta file is not checked out or unmodified. if (metaAsset != null && (remoteMetaState & Asset.States.CheckedOutRemote) == 0) { DrawMetaOverlay(topRight, true); } } // From here the remote asset have no state that need a remote state overlay. We use the meta state if there is one instead. else if (metaAsset != null && Asset.IsState(metaState, Asset.States.AddedRemote)) { DrawOverlay(Asset.States.AddedRemote, topRight); if (keepFolderMetaParans) { DrawMetaOverlay(topRight, true); } } else if (metaAsset != null && Asset.IsState(metaState, Asset.States.DeletedRemote)) { DrawOverlay(Asset.States.DeletedRemote, topRight); if (keepFolderMetaParans) { DrawMetaOverlay(topRight, true); } } else if (metaAsset != null && Asset.IsState(metaState, Asset.States.LockedRemote)) { DrawOverlay(Asset.States.LockedRemote, topRight); if (keepFolderMetaParans) { DrawMetaOverlay(topRight, true); } } else if (metaAsset != null && Asset.IsState(metaState, Asset.States.CheckedOutRemote)) { DrawOverlay(Asset.States.CheckedOutRemote, topRight); if (keepFolderMetaParans) { DrawMetaOverlay(topRight, true); } } if (Asset.IsState(assetState, Asset.States.OutOfSync) || (metaAsset != null && Asset.IsState(metaState, Asset.States.OutOfSync))) { if (isHierarchy) { bottomLeft.x += 5; DrawOverlay(Asset.States.OutOfSync, bottomLeft); } else { DrawOverlay(Asset.States.OutOfSync, bottomRight); } } }
private void OnSubmitGUI() { if (this.submitResultCode != 0x100) { GUI.enabled = false; } Event current = Event.current; if (current.isKey && (current.keyCode == KeyCode.Escape)) { base.Close(); } GUILayout.Label("Description", EditorStyles.boldLabel, new GUILayoutOption[0]); if ((this.taskStatus != null) && (this.taskStatus.resultCode != 0)) { Asset.States[] states = new Asset.States[] { Asset.States.CheckedOutLocal, Asset.States.DeletedLocal, Asset.States.AddedLocal }; this.assetList = this.taskStatus.assetList.Filter(true, states); this.RefreshList(); this.taskStatus = null; } else if ((this.taskDesc != null) && (this.taskDesc.resultCode != 0)) { this.description = (this.taskDesc.text.Length <= 0) ? string.Empty : this.taskDesc.text; if (this.description.Trim() == "<enter description here>") { this.description = string.Empty; } this.taskDesc = null; } else if ((this.taskStat != null) && (this.taskStat.resultCode != 0)) { this.assetList = this.taskStat.assetList; this.RefreshList(); this.taskStat = null; } Task task = ((this.taskStatus == null) || (this.taskStatus.resultCode != 0)) ? (((this.taskDesc == null) || (this.taskDesc.resultCode != 0)) ? (((this.taskStat == null) || (this.taskStat.resultCode != 0)) ? this.taskSubmit : this.taskStat) : this.taskDesc) : this.taskStatus; GUI.enabled = ((this.taskDesc == null) || (this.taskDesc.resultCode != 0)) && (this.submitResultCode == 0x100); GUILayoutOption[] options = new GUILayoutOption[] { GUILayout.Height(150f) }; this.description = EditorGUILayout.TextArea(this.description, options).Trim(); if (this.m_TextAreaControlID == 0) { this.m_TextAreaControlID = EditorGUIUtility.s_LastControlID; } if (this.m_TextAreaControlID != 0) { GUIUtility.keyboardControl = this.m_TextAreaControlID; EditorGUIUtility.editingTextField = true; } GUI.enabled = true; GUILayout.Label("Files", EditorStyles.boldLabel, new GUILayoutOption[0]); GUILayout.FlexibleSpace(); Rect screenRect = new Rect(6f, 206f, base.position.width - 12f, base.position.height - 248f); GUILayout.BeginArea(screenRect); GUILayoutOption[] optionArray2 = new GUILayoutOption[] { GUILayout.ExpandWidth(true), GUILayout.ExpandHeight(true) }; GUILayout.Box(string.Empty, optionArray2); GUILayout.EndArea(); this.submitList.OnGUI(new Rect(screenRect.x + 2f, screenRect.y + 2f, screenRect.width - 4f, screenRect.height - 4f), true); GUILayout.FlexibleSpace(); GUILayout.BeginHorizontal(new GUILayoutOption[0]); if (this.submitResultCode == 0x100) { if (task != null) { GUIContent content = GUIContent.Temp("Getting info"); content.image = WindowPending.StatusWheel.image; GUILayout.Label(content, new GUILayoutOption[0]); content.image = null; } GUILayout.FlexibleSpace(); if (GUILayout.Button("Cancel", new GUILayoutOption[0])) { this.ResetAndClose(); } GUI.enabled = (task == null) && !string.IsNullOrEmpty(this.description); bool flag3 = (current.isKey && current.shift) && (current.keyCode == KeyCode.Return); bool flag4 = flag3 && !this.allowSubmit; if (Provider.hasChangelistSupport && (GUILayout.Button("Save", new GUILayoutOption[0]) || flag4)) { this.Save(false); } if (this.allowSubmit) { bool enabled = GUI.enabled; GUI.enabled = ((this.assetList != null) && (this.assetList.Count > 0)) && !string.IsNullOrEmpty(this.description); if (GUILayout.Button("Submit", new GUILayoutOption[0]) || flag3) { this.Save(true); } GUI.enabled = enabled; } } else { bool flag6 = (this.submitResultCode & 1) != 0; GUI.enabled = flag6; string text = string.Empty; if (flag6) { text = "Finished successfully"; } else if (task != null) { GUILayout.Label(WindowPending.StatusWheel, new GUILayoutOption[0]); text = task.progressMessage; if (text.Length == 0) { text = "Running..."; } } GUILayout.Label(text, new GUILayoutOption[0]); GUILayout.FlexibleSpace(); if (GUILayout.Button("Close", new GUILayoutOption[0])) { this.ResetAndClose(); } } GUI.enabled = true; GUILayout.EndHorizontal(); GUILayout.Space(12f); if (task != null) { base.Repaint(); } }
static void DrawOverlays(Asset asset, Asset metaAsset, Rect itemRect) { CreateStaticResources(); float iconWidth = 16; float offsetX = 1f; // offset to compensate that icons are 16x16 with 8x8 content float offsetY = 4f; float syncOffsetX = -4f; // offset to compensate that icons are 16x16 with 8x8 content and sync overlay pos Rect topLeft = new Rect(itemRect.x - offsetX, itemRect.y - offsetY, iconWidth, iconWidth); Rect topRight = new Rect(itemRect.xMax - iconWidth + offsetX, itemRect.y - offsetY, iconWidth, iconWidth); Rect bottomLeft = new Rect(itemRect.x - offsetX, itemRect.yMax - iconWidth + offsetY, iconWidth, iconWidth); Rect bottomRight = new Rect(itemRect.xMax - iconWidth + offsetX, itemRect.yMax - iconWidth + offsetY, iconWidth, iconWidth); Rect syncRect = new Rect(itemRect.xMax - iconWidth + syncOffsetX, itemRect.yMax - iconWidth + offsetY, iconWidth, iconWidth); Asset.States unmodifiedState = Asset.States.Local | Asset.States.MetaFile | Asset.States.ReadOnly | Asset.States.Synced; bool isMetaUnmodifiedState = metaAsset == null || (metaAsset.state & unmodifiedState) == unmodifiedState; Asset.States localMetaState = metaAsset == null ? Asset.States.None : metaAsset.state & (Asset.States.AddedLocal | Asset.States.CheckedOutLocal | Asset.States.DeletedLocal | Asset.States.LockedLocal); Asset.States remoteMetaState = metaAsset == null ? Asset.States.None : metaAsset.state & (Asset.States.AddedRemote | Asset.States.CheckedOutRemote | Asset.States.DeletedRemote | Asset.States.LockedRemote); bool keepFolderMetaParans = asset.isFolder && Provider.isVersioningFolders; // Local state overlay if (asset.IsState(Asset.States.AddedLocal)) { DrawOverlay(Asset.States.AddedLocal, topLeft); // Meta overlay if meta file is not added or already in repo and unmodified. if (metaAsset != null && (localMetaState & Asset.States.AddedLocal) == 0 && !isMetaUnmodifiedState) { DrawMetaOverlay(topLeft, false); } } else if (asset.IsState(Asset.States.DeletedLocal)) { DrawOverlay(Asset.States.DeletedLocal, topLeft); // Meta overlay if meta file is not deleted but asset is and meta file is still present or missing (ie. should have been there) if (metaAsset != null && (localMetaState & Asset.States.DeletedLocal) == 0 && metaAsset.IsState(Asset.States.Local | Asset.States.Missing)) { DrawMetaOverlay(topLeft, false); } } else if (asset.IsState(Asset.States.LockedLocal)) { DrawOverlay(Asset.States.LockedLocal, topLeft); // Meta overlay if meta file is not locked or unmodified. if (metaAsset != null && (localMetaState & Asset.States.LockedLocal) == 0 && !isMetaUnmodifiedState) { DrawMetaOverlay(topLeft, false); } } else if (asset.IsState(Asset.States.CheckedOutLocal)) { DrawOverlay(Asset.States.CheckedOutLocal, topLeft); // Meta overlay if meta file is not checked out or unmodified. if (metaAsset != null && (localMetaState & Asset.States.CheckedOutLocal) == 0 && !isMetaUnmodifiedState) { DrawMetaOverlay(topLeft, false); } } else if (asset.IsState(Asset.States.Local) && !(asset.IsState(Asset.States.OutOfSync) || asset.IsState(Asset.States.Synced))) { DrawOverlay(Asset.States.Local, bottomLeft); // Meta overlay if meta file is not local only or unmodified. if (metaAsset != null && (metaAsset.IsUnderVersionControl || !metaAsset.IsState(Asset.States.Local))) { DrawMetaOverlay(bottomLeft, false); } } // From here the local asset have no state that need a local state overlay. We use the meta state if there is one instead. else if (metaAsset != null && metaAsset.IsState(Asset.States.AddedLocal)) { DrawOverlay(Asset.States.AddedLocal, topLeft); if (keepFolderMetaParans) { DrawMetaOverlay(topLeft, false); } } else if (metaAsset != null && metaAsset.IsState(Asset.States.DeletedLocal)) { DrawOverlay(Asset.States.DeletedLocal, topLeft); if (keepFolderMetaParans) { DrawMetaOverlay(topLeft, false); } } else if (metaAsset != null && metaAsset.IsState(Asset.States.LockedLocal)) { DrawOverlay(Asset.States.LockedLocal, topLeft); if (keepFolderMetaParans) { DrawMetaOverlay(topLeft, false); } } else if (metaAsset != null && metaAsset.IsState(Asset.States.CheckedOutLocal)) { DrawOverlay(Asset.States.CheckedOutLocal, topLeft); if (keepFolderMetaParans) { DrawMetaOverlay(topLeft, false); } } else if (metaAsset != null && metaAsset.IsState(Asset.States.Local) && !(metaAsset.IsState(Asset.States.OutOfSync) || metaAsset.IsState(Asset.States.Synced)) && !(asset.IsState(Asset.States.Conflicted) || (metaAsset != null && metaAsset.IsState(Asset.States.Conflicted)))) { DrawOverlay(Asset.States.Local, bottomLeft); if (keepFolderMetaParans) { DrawMetaOverlay(bottomLeft, false); } } if (asset.IsState(Asset.States.Conflicted) || (metaAsset != null && metaAsset.IsState(Asset.States.Conflicted))) { DrawOverlay(Asset.States.Conflicted, bottomLeft); } if ((asset.isFolder == false && asset.IsState(Asset.States.Updating)) || (metaAsset != null && metaAsset.IsState(Asset.States.Updating))) { DrawOverlay(Asset.States.Updating, bottomRight); } // Remote state overlay if (asset.IsState(Asset.States.AddedRemote)) { DrawOverlay(Asset.States.AddedRemote, topRight); // Meta overlay if meta file is not added or already in repo and unmodified. if (metaAsset != null && (remoteMetaState & Asset.States.AddedRemote) == 0) { DrawMetaOverlay(topRight, true); } } else if (asset.IsState(Asset.States.DeletedRemote)) { DrawOverlay(Asset.States.DeletedRemote, topRight); // Meta overlay if meta file is not deleted but asset is and meta file is still present or missing (ie. should have been there) if (metaAsset != null && (remoteMetaState & Asset.States.DeletedRemote) == 0) { DrawMetaOverlay(topRight, true); } } else if (asset.IsState(Asset.States.LockedRemote)) { DrawOverlay(Asset.States.LockedRemote, topRight); // Meta overlay if meta file is not locked or unmodified. if (metaAsset != null && (remoteMetaState & Asset.States.LockedRemote) == 0) { DrawMetaOverlay(topRight, true); } } else if (asset.IsState(Asset.States.CheckedOutRemote)) { DrawOverlay(Asset.States.CheckedOutRemote, topRight); // Meta overlay if meta file is not checked out or unmodified. if (metaAsset != null && (remoteMetaState & Asset.States.CheckedOutRemote) == 0) { DrawMetaOverlay(topRight, true); } } // From here the remote asset have no state that need a remote state overlay. We use the meta state if there is one instead. else if (metaAsset != null && metaAsset.IsState(Asset.States.AddedRemote)) { DrawOverlay(Asset.States.AddedRemote, topRight); if (keepFolderMetaParans) { DrawMetaOverlay(topRight, true); } } else if (metaAsset != null && metaAsset.IsState(Asset.States.DeletedRemote)) { DrawOverlay(Asset.States.DeletedRemote, topRight); if (keepFolderMetaParans) { DrawMetaOverlay(topRight, true); } } else if (metaAsset != null && metaAsset.IsState(Asset.States.LockedRemote)) { DrawOverlay(Asset.States.LockedRemote, topRight); if (keepFolderMetaParans) { DrawMetaOverlay(topRight, true); } } else if (metaAsset != null && metaAsset.IsState(Asset.States.CheckedOutRemote)) { DrawOverlay(Asset.States.CheckedOutRemote, topRight); if (keepFolderMetaParans) { DrawMetaOverlay(topRight, true); } } if (asset.IsState(Asset.States.OutOfSync) || (metaAsset != null && metaAsset.IsState(Asset.States.OutOfSync))) { DrawOverlay(Asset.States.OutOfSync, syncRect); } }
private void OnSubmitGUI() { if (this.submitResultCode != 0x100) { GUI.enabled = false; } Event current = Event.current; if (current.isKey && (current.keyCode == KeyCode.Escape)) { base.Close(); } GUILayout.Label("Description", EditorStyles.boldLabel, new GUILayoutOption[0]); if ((this.taskStatus != null) && (this.taskStatus.resultCode != 0)) { Asset.States[] states = new Asset.States[] { Asset.States.CheckedOutLocal, Asset.States.DeletedLocal, Asset.States.AddedLocal }; this.assetList = this.taskStatus.assetList.Filter(true, states); this.RefreshList(); this.taskStatus = null; } else if ((this.taskDesc != null) && (this.taskDesc.resultCode != 0)) { this.description = (this.taskDesc.text.Length <= 0) ? string.Empty : this.taskDesc.text; if (this.description.Trim() == "<enter description here>") { this.description = string.Empty; } this.taskDesc = null; } else if ((this.taskStat != null) && (this.taskStat.resultCode != 0)) { this.assetList = this.taskStat.assetList; this.RefreshList(); this.taskStat = null; } Task task = ((this.taskStatus == null) || (this.taskStatus.resultCode != 0)) ? (((this.taskDesc == null) || (this.taskDesc.resultCode != 0)) ? (((this.taskStat == null) || (this.taskStat.resultCode != 0)) ? this.taskSubmit : this.taskStat) : this.taskDesc) : this.taskStatus; GUI.enabled = ((this.taskDesc == null) || (this.taskDesc.resultCode != 0)) && (this.submitResultCode == 0x100); GUILayoutOption[] options = new GUILayoutOption[] { GUILayout.Height(150f) }; this.description = EditorGUILayout.TextArea(this.description, options).Trim(); if (this.m_TextAreaControlID == 0) { this.m_TextAreaControlID = EditorGUIUtility.s_LastControlID; } if (this.m_TextAreaControlID != 0) { GUIUtility.keyboardControl = this.m_TextAreaControlID; EditorGUIUtility.editingTextField = true; } GUI.enabled = true; GUILayout.Label("Files", EditorStyles.boldLabel, new GUILayoutOption[0]); GUILayout.FlexibleSpace(); Rect screenRect = new Rect(6f, 206f, base.position.width - 12f, base.position.height - 248f); GUILayout.BeginArea(screenRect); GUILayoutOption[] optionArray2 = new GUILayoutOption[] { GUILayout.ExpandWidth(true), GUILayout.ExpandHeight(true) }; GUILayout.Box(string.Empty, optionArray2); GUILayout.EndArea(); this.submitList.OnGUI(new Rect(screenRect.x + 2f, screenRect.y + 2f, screenRect.width - 4f, screenRect.height - 4f), true); GUILayout.FlexibleSpace(); GUILayout.BeginHorizontal(new GUILayoutOption[0]); if (this.submitResultCode == 0x100) { if (task != null) { GUIContent content = GUIContent.Temp("Getting info"); content.image = WindowPending.StatusWheel.image; GUILayout.Label(content, new GUILayoutOption[0]); content.image = null; } GUILayout.FlexibleSpace(); if (GUILayout.Button("Cancel", new GUILayoutOption[0])) { this.ResetAndClose(); } GUI.enabled = (task == null) && !string.IsNullOrEmpty(this.description); bool flag3 = (current.isKey && current.shift) && (current.keyCode == KeyCode.Return); bool flag4 = flag3 && !this.allowSubmit; if (Provider.hasChangelistSupport && (GUILayout.Button("Save", new GUILayoutOption[0]) || flag4)) { this.Save(false); } if (this.allowSubmit) { bool enabled = GUI.enabled; GUI.enabled = ((this.assetList != null) && (this.assetList.Count > 0)) && !string.IsNullOrEmpty(this.description); if (GUILayout.Button("Submit", new GUILayoutOption[0]) || flag3) { this.Save(true); } GUI.enabled = enabled; } } else { bool flag6 = (this.submitResultCode & 1) != 0; GUI.enabled = flag6; string text = string.Empty; if (flag6) { text = "Finished successfully"; } else if (task != null) { GUILayout.Label(WindowPending.StatusWheel, new GUILayoutOption[0]); text = task.progressMessage; if (text.Length == 0) { text = "Running..."; } } GUILayout.Label(text, new GUILayoutOption[0]); GUILayout.FlexibleSpace(); if (GUILayout.Button("Close", new GUILayoutOption[0])) { this.ResetAndClose(); } } GUI.enabled = true; GUILayout.EndHorizontal(); GUILayout.Space(12f); if (task != null) { base.Repaint(); } }
internal static string StateToString(Asset.States state) { if (IsState(state, Asset.States.AddedLocal)) { return("Added Local"); } if (IsState(state, Asset.States.AddedRemote)) { return("Added Remote"); } if (IsState(state, Asset.States.CheckedOutLocal) && !IsState(state, Asset.States.LockedLocal)) { return("Checked Out Local"); } if (IsState(state, Asset.States.CheckedOutRemote) && !IsState(state, Asset.States.LockedRemote)) { return("Checked Out Remote"); } if (IsState(state, Asset.States.Conflicted)) { return("Conflicted"); } if (IsState(state, Asset.States.DeletedLocal)) { return("Deleted Local"); } if (IsState(state, Asset.States.DeletedRemote)) { return("Deleted Remote"); } if (IsState(state, Asset.States.Local)) { return("Local"); } if (IsState(state, Asset.States.LockedLocal)) { return("Locked Local"); } if (IsState(state, Asset.States.LockedRemote)) { return("Locked Remote"); } if (IsState(state, Asset.States.OutOfSync)) { return("Out Of Sync"); } if (IsState(state, Asset.States.Updating)) { return("Updating Status"); } return(""); }