static void DoStatusOverlays(
            Rect iconRect,
            IAssetStatusCache assetStatusCache,
            string path)
        {
            AssetsOverlays.AssetStatus statusesToDraw = DrawAssetOverlay.GetStatusesToDraw(
                assetStatusCache.GetStatusForPath(path));

            foreach (AssetsOverlays.AssetStatus status in Enum.GetValues(typeof(AssetsOverlays.AssetStatus)))
            {
                if (status == AssetsOverlays.AssetStatus.None)
                    continue;

                if (!statusesToDraw.HasFlag(status))
                    continue;

                GetChangesOverlayIcon.Data overlayIconData =
                    GetChangesOverlayIcon.ForAssetStatus(status);

                if (overlayIconData != null)
                {
                    Rect overlayIconRect = new Rect(
                        iconRect.x + overlayIconData.XOffset,
                        iconRect.y + overlayIconData.YOffset,
                        overlayIconData.Size, overlayIconData.Size);

                    GUI.DrawTexture(
                        overlayIconRect, overlayIconData.Texture,
                        ScaleMode.ScaleToFit);
                }
            }
        }
예제 #2
0
        static AssetStatus GetAssetStatus(Asset asset, IAssetStatusCache assetStatusCache)
        {
            string assetPath = Path.GetFullPath(asset.assetPath);

            if (MetaPath.IsMetaPath(assetPath))
            {
                assetPath = MetaPath.GetPathFromMetaPath(assetPath);
            }

            return(assetStatusCache.GetStatusForPath(assetPath));
        }
예제 #3
0
        static bool IsConflicted(
            bool isGluonMode,
            IAssetStatusCache assetStatusCache,
            string fullPath)
        {
            if (!isGluonMode)
            {
                return(false);
            }

            return(ClassifyAssetStatus.IsConflicted(
                       assetStatusCache.GetStatusForPath(fullPath)));
        }
예제 #4
0
        void DoFileList(
            WorkspaceInfo wkInfo,
            List <string> paths,
            IAssetStatusCache assetStatusCache,
            MetaCache metaCache)
        {
            mFileListScrollPosition = GUILayout.BeginScrollView(
                mFileListScrollPosition,
                EditorStyles.helpBox,
                GUILayout.ExpandHeight(true));

            foreach (string path in paths)
            {
                if (MetaPath.IsMetaPath(path))
                {
                    continue;
                }

                Texture fileIcon = Directory.Exists(path) ?
                                   Images.GetDirectoryIcon() :
                                   Images.GetFileIcon(path);

                string label = WorkspacePath.GetWorkspaceRelativePath(
                    wkInfo.ClientPath, path);

                if (metaCache.HasMeta(path))
                {
                    label = string.Concat(label, UnityConstants.TREEVIEW_META_LABEL);
                }

                AssetsOverlays.AssetStatus assetStatus =
                    assetStatusCache.GetStatusForPath(path);

                Rect selectionRect = EditorGUILayout.GetControlRect();

                DoListViewItem(selectionRect, fileIcon, label, assetStatus);
            }

            GUILayout.EndScrollView();
        }
예제 #5
0
        internal static SelectedAssetGroupInfo BuildFromSingleFile(
            string path,
            bool isDirectory,
            IAssetStatusCache statusCache)
        {
            bool isCheckedInSelection          = true;
            bool isControlledSelection         = true;
            bool isCheckedOutSelection         = true;
            bool isPrivateSelection            = true;
            bool isAddedSelection              = true;
            bool isFileSelection               = true;
            bool hasAnyAddedInSelection        = false;
            bool hasAnyRemoteLockedInSelection = false;

            string assetPath = Path.GetFullPath(path);

            WorkspaceTreeNode wkTreeNode =
                PlasticGui.Plastic.API.GetWorkspaceTreeNode(assetPath);

            if (isDirectory)
            {
                isFileSelection = false;
            }

            if (CheckWorkspaceTreeNodeStatus.IsPrivate(wkTreeNode))
            {
                isControlledSelection = false;
            }
            else
            {
                isPrivateSelection = false;
            }

            if (CheckWorkspaceTreeNodeStatus.IsCheckedOut(wkTreeNode))
            {
                isCheckedInSelection = false;
            }
            else
            {
                isCheckedOutSelection = false;
            }

            if (CheckWorkspaceTreeNodeStatus.IsAdded(wkTreeNode))
            {
                hasAnyAddedInSelection = true;
            }
            else
            {
                isAddedSelection = false;
            }

            AssetsOverlays.AssetStatus assetStatus = statusCache.GetStatusForPath(assetPath);

            if (ClassifyAssetStatus.IsLockedRemote(assetStatus))
            {
                hasAnyRemoteLockedInSelection = true;
            }

            return(new SelectedAssetGroupInfo()
            {
                IsCheckedInSelection = isCheckedInSelection,
                IsCheckedOutSelection = isCheckedOutSelection,
                IsControlledSelection = isControlledSelection,
                IsPrivateSelection = isPrivateSelection,
                IsAddedSelection = isAddedSelection,
                IsFileSelection = isFileSelection,
                HasAnyAddedInSelection = hasAnyAddedInSelection,
                HasAnyRemoteLockedInSelection = hasAnyRemoteLockedInSelection,
                SelectedCount = 1,
            });
        }