コード例 #1
0
    protected override void RowGUI(RowGUIArgs args)
    {
        VCTreeViewItem item = (VCTreeViewItem)args.item;

        for (int i = 0; i < args.GetNumVisibleColumns(); ++i)
        {
            CellGUI(args.GetCellRect(i), item, (MultiColumnView.Column)args.GetColumn(i), ref args);
        }
    }
コード例 #2
0
 private void drawNameEntry(Rect _rectCell, VCTreeViewItem _item)
 {
     if (multiColumnHeader.sortedColumnIndex == (int)MultiColumnView.Column.AssetPath)
     {
         _rectCell.xMin += GetContentIndent(_item);
     }
     GUI.Label(_rectCell, new GUIContent(new GUIContent(
                                             image: UnityEditor.AssetDatabase.GetCachedIcon(_item.m_data.assetPath.Compose()),
                                             text: System.IO.Path.GetFileName((_item.m_data.assetPath.Compose())
                                                                              ))));
 }
コード例 #3
0
    void CellGUI(Rect _rectCell, VCTreeViewItem _item, MultiColumnView.Column _column, ref RowGUIArgs _args)
    {
        // Center the cell rect vertically using EditorGUIUtility.singleLineHeight.
        // This makes it easier to place controls and icons in the cells.
        CenterRectUsingSingleLineHeight(ref _rectCell);

        switch (_column)
        {
        case MultiColumnView.Column.Selection:
            drawSelectionEntry(_rectCell, _item);
            break;

        case MultiColumnView.Column.Name:
            drawNameEntry(_rectCell, _item);
            break;

        case MultiColumnView.Column.Status:
            drawStatusEntry(_rectCell, _item);
            break;

        case MultiColumnView.Column.AssetPath:
            drawAssetPathEntry(_rectCell, _item);
            break;

        case MultiColumnView.Column.Meta:
            drawMetaEntry(_rectCell, _item);
            break;

        case MultiColumnView.Column.Type:
            drawTypeEntry(_rectCell, _item);
            break;

        case MultiColumnView.Column.Owner:
            drawOwnerEntry(_rectCell, _item);
            break;

        case MultiColumnView.Column.Conflict:
            drawConflictEntry(_rectCell, _item);
            break;

        case MultiColumnView.Column.ChangeList:
            drawChangeListEntry(_rectCell, _item);
            break;

        default:
            break;
        }
    }
コード例 #4
0
    protected override void DoubleClickedItem(int id)
    {
        base.DoubleClickedItem(id);

        VCTreeViewItem item = FindItem(id, rootItem) as VCTreeViewItem;

        if (VersionControl.VCUtility.IsDiffableAsset(item.m_data.assetPath) && VersionControl.VCUtility.ManagedByRepository(item.m_data) &&
            item.m_data.fileStatus == VersionControl.VCFileStatus.Modified)
        {
            VersionControl.VCUtility.DiffWithBase(item.m_data.assetPath.Compose());
        }
        else
        {
            AssetDatabase.OpenAsset(AssetDatabase.LoadMainAssetAtPath(item.m_data.assetPath.Compose()));
        }
    }
コード例 #5
0
    private void drawSelectionEntry(Rect _rectCell, VCTreeViewItem _item)
    {
        //    columnSelection = new MultiColumnState.Column(new GUIContent("[]"), data => new GUIContent(masterSelection.Contains(data) ? " ☑" : " ☐"));

        bool bOld = _item.m_bSelectedForCommit;

        _item.m_bSelectedForCommit = GUI.Toggle(_rectCell, _item.m_bSelectedForCommit, "");

        if (_item.m_bSelectedForCommit != bOld)
        {
            var rows = GetRows();
            for (int i = 0; i < rows.Count; i++)
            {
                if (IsSelected(rows[i].id) && rows[i].id != _item.id)
                {
                    (rows[i] as VCTreeViewItem).m_bSelectedForCommit = _item.m_bSelectedForCommit;
                }
            }
        }
    }
コード例 #6
0
    protected override TreeViewItem BuildRoot()
    {
        VCTreeViewItem root = new VCTreeViewItem {
            id = 0, depth = -1, displayName = "Root"
        };

        Dictionary <string, int> dicDirectoryPathIdx = new Dictionary <string, int>();

        int  iStatusCount     = m_View.iStatusCount();
        bool bShowProgressBar = iStatusCount > 100;

        if (bShowProgressBar)
        {
            EditorUtility.DisplayCancelableProgressBar(cBuildRootProgressBarTitle, "Setup", 0);
        }

        List <TreeViewItem> liItems = new List <TreeViewItem>();

        for (int i = 0; i < iStatusCount; i++)
        {
            VersionControl.VersionControlStatus status = m_View.statusAtId(i);
            VCTreeViewItem treeViewItem = new VCTreeViewItem {
                id = i + 1, displayName = "Meow", m_data = status
            };
            liItems.Add(treeViewItem);

            string strDirPath = null;
            if (IsDirectory(strDirPath = treeViewItem.m_data.assetPath.Compose(), treeViewItem.m_data.fileStatus))
            {
                if (!dicDirectoryPathIdx.ContainsKey(strDirPath))
                {
                    dicDirectoryPathIdx.Add(strDirPath, i);
                }
            }

            if (bShowProgressBar)
            {
                if (EditorUtility.DisplayCancelableProgressBar(cBuildRootProgressBarTitle, "Setup", (i / (float)iStatusCount) * 0.5f))
                {
                    EditorUtility.ClearProgressBar();
                    return(root);
                }
            }
        }

        if (bShowProgressBar)
        {
            EditorUtility.DisplayCancelableProgressBar(cBuildRootProgressBarTitle, "Parenting", 0.5f);
        }

        for (int i = 0; i < liItems.Count; i++)
        {
            int iParent = m_View.iParentOfStatus(i, dicDirectoryPathIdx);
            if (iParent < 0)
            {
                root.AddChild(liItems[i]);
            }
            else
            {
                liItems[iParent].AddChild(liItems[i]);
            }
            if (bShowProgressBar)
            {
                if (EditorUtility.DisplayCancelableProgressBar(cBuildRootProgressBarTitle, "Parenting", (i / (float)liItems.Count) * 0.5f + 0.5f))
                {
                    EditorUtility.ClearProgressBar();
                    return(root);
                }
            }
        }

        if (bShowProgressBar)
        {
            EditorUtility.DisplayCancelableProgressBar(cBuildRootProgressBarTitle, "Finalizing TreeView...", 1f);
        }

        SetupDepthsFromParentsAndChildren(root);

        if (bShowProgressBar)
        {
            EditorUtility.ClearProgressBar();
        }

        return(root);
    }
コード例 #7
0
 private void drawChangeListEntry(Rect _rectCell, VCTreeViewItem _item)
 {
     GUI.Label(_rectCell, new GUIContent(_item.m_data.changelist.Compose()));
 }
コード例 #8
0
 private void drawConflictEntry(Rect _rectCell, VCTreeViewItem _item)
 {
     GUI.Label(_rectCell, new GUIContent(_item.m_data.treeConflictStatus.ToString()));
 }
コード例 #9
0
 private void drawOwnerEntry(Rect _rectCell, VCTreeViewItem _item)
 {
     GUI.Label(_rectCell, new GUIContent(_item.m_data.owner, _item.m_data.lockToken));
 }
コード例 #10
0
 private void drawTypeEntry(Rect _rectCell, VCTreeViewItem _item)
 {
     GUI.Label(_rectCell, new GUIContent(VCMultiColumnAssetList.GetFileType(_item.m_data.assetPath.Compose())));
 }
コード例 #11
0
 private void drawMetaEntry(Rect _rectCell, VCTreeViewItem _item)
 {
     GUI.Label(_rectCell, VCMultiColumnAssetList.GetFileStatusContent(_item.m_data.MetaStatus()));
 }
コード例 #12
0
 private void drawAssetPathEntry(Rect _rectCell, VCTreeViewItem _item)
 {
     GUI.Label(_rectCell, _item.m_data.assetPath.Compose());
 }