Ejemplo n.º 1
0
 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);
        }
Ejemplo n.º 3
0
 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);
 }
Ejemplo n.º 4
0
        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();
        }
Ejemplo n.º 5
0
        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);
        }
Ejemplo n.º 7
0
        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);
        }
Ejemplo n.º 8
0
 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);
 }
Ejemplo n.º 9
0
        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);
        }
Ejemplo n.º 11
0
        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);
        }
Ejemplo n.º 12
0
        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);
                }
            }
        }
Ejemplo n.º 13
0
        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);
        }
Ejemplo n.º 14
0
        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);
        }
Ejemplo n.º 15
0
        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);
        }
Ejemplo n.º 16
0
        // 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);
        }
Ejemplo n.º 17
0
        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);
        }
Ejemplo n.º 18
0
 private static bool IsState(Asset.States state)
 {
     return(Overlay.m_Asset.IsState(state));
 }
Ejemplo n.º 19
0
 public bool IsState(Asset.States state)
 {
     return(Asset.IsState(this.state, state));
 }
Ejemplo n.º 20
0
 internal static bool IsState(Asset.States isThisState, Asset.States partOfThisState)
 {
     return((isThisState & partOfThisState) != Asset.States.None);
 }
Ejemplo n.º 21
0
        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());
        }
Ejemplo n.º 22
0
        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);
                }
            }
        }
Ejemplo n.º 23
0
        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();
            }
        }
Ejemplo n.º 24
0
        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);
            }
        }
Ejemplo n.º 25
0
 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();
     }
 }
Ejemplo n.º 26
0
        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("");
        }