private void CustomIcons(string guid, Rect rect) { if (statusTree == null) { return; } string path = AssetDatabase.GUIDToAssetPath(guid); var status = statusTree.GetStatus(path); if (status != null) { Object assetObject = AssetDatabase.LoadMainAssetAtPath(path); if (assetObject != null && ProjectWindowUtil.IsFolder(assetObject.GetInstanceID())) { //exclude the Assets folder if (status.Depth == 0) { return; } //todo cache expandedProjectWindowItems into a HashSet for faster Contains if (!status.ForceStatus && InternalEditorUtility.expandedProjectWindowItems.Contains(assetObject.GetInstanceID())) { return; } } DrawFileIcon(rect, GitOverlay.GetDiffTypeIcon(status.State, rect.height <= 16)); } }
public override void OnGUI(Rect rect) { EditorGUILayout.Space(); float msgHeight = commitMessageStyle.CalcHeight(GitGUI.GetTempContent(commit.Message), rect.width); scroll = EditorGUILayout.BeginScrollView(scroll); EditorGUILayout.LabelField(GitGUI.GetTempContent(commit.Message), commitMessageStyle, GUILayout.Height(msgHeight)); if (changes != null) { foreach (var change in changes) { //EditorGUILayout.BeginHorizontal(); //GUILayout.Label(change.Status.ToString(), "AssetLabel"); EditorGUILayout.BeginHorizontal("ProjectBrowserHeaderBgTop"); GUILayout.Label(new GUIContent(GitOverlay.GetDiffTypeIcon(change.Status, true)) { tooltip = change.Status.ToString() }, GUILayout.Width(16)); GUILayout.Space(8); string[] pathChunks = change.Path.Split(Path.DirectorySeparatorChar); for (int i = 0; i < pathChunks.Length; i++) { string chunk = pathChunks[i]; if (GUILayout.Button(GitGUI.GetTempContent(chunk), GitGUI.Styles.BreadcrumMid)) { string assetPath = string.Join("/", pathChunks, 0, i + 1); if (assetPath.EndsWith(".meta")) { assetPath = AssetDatabase.GetAssetPathFromTextMetaFilePath(assetPath); } ShowContextMenuForElement(change.Path, assetPath); } } EditorGUILayout.EndHorizontal(); } } else { DrawTreeEntry(commitTree, 0); } EditorGUILayout.Space(); EditorGUILayout.EndScrollView(); }
public override void OnGUI(Rect rect) { EditorGUILayout.Space(); float msgHeight = commitMessageStyle.CalcHeight(GitGUI.GetTempContent(commit.Message), rect.width); scroll = EditorGUILayout.BeginScrollView(scroll); EditorGUILayout.LabelField(GitGUI.GetTempContent(commit.Message), commitMessageStyle, GUILayout.Height(msgHeight)); if (changes != null) { foreach (var change in changes) { //EditorGUILayout.BeginHorizontal(); //GUILayout.Label(change.Status.ToString(), "AssetLabel"); EditorGUILayout.BeginHorizontal("ProjectBrowserHeaderBgTop"); GUILayout.Label(new GUIContent(GitOverlay.GetDiffTypeIcon(change.Status, true)) { tooltip = change.Status.ToString() }, GUILayout.Width(16)); GUILayout.Space(8); string[] pathChunks = change.Path.Split('\\'); for (int i = 0; i < pathChunks.Length; i++) { string chunk = pathChunks[i]; if (GUILayout.Button(GitGUI.GetTempContent(chunk), "GUIEditor.BreadcrumbMid")) { string assetPath = string.Join("/", pathChunks, 0, i + 1); if (assetPath.EndsWith(".meta")) { assetPath = AssetDatabase.GetAssetPathFromTextMetaFilePath(assetPath); } var asset = AssetDatabase.LoadAssetAtPath(assetPath, typeof(Object)); if (asset != null) { Selection.activeObject = asset; } } } //GUILayout.Label(new GUIContent(" (" + change.Status + ") " + change.Path)); EditorGUILayout.EndHorizontal(); Rect r = GUILayoutUtility.GetLastRect(); if (Event.current.type == EventType.ContextClick && r.Contains(Event.current.mousePosition)) { string path = change.Path; GenericMenu menu = new GenericMenu(); if (commit.Parents.Count() == 1) { menu.AddItem(new GUIContent("Difference with previous commit"), false, () => { Commit parent = commit.Parents.Single(); GitManager.ShowDiff(path, parent, commit); }); } else { menu.AddDisabledItem(new GUIContent(new GUIContent("Difference with previous commit"))); } menu.AddItem(new GUIContent("Difference with HEAD"), false, () => { GitManager.ShowDiff(path, commit, GitManager.Repository.Head.Tip); }); menu.ShowAsContext(); } //EditorGUILayout.EndHorizontal(); } } else { DrawTreeEntry(commitTree, 0); } EditorGUILayout.Space(); EditorGUILayout.EndScrollView(); }