private void MarkBoldItemsByGUID(string guid) { for (int i = 0; i < this.m_GUIItems.Length; i++) { ASHistoryWindow.GUIHistoryListItem gUIHistoryListItem = this.m_GUIItems[i]; ParentViewState assets = gUIHistoryListItem.assets; int num = 0; gUIHistoryListItem.boldAssets = new bool[assets.GetLineCount()]; for (int j = 0; j < assets.folders.Length; j++) { ParentViewFolder parentViewFolder = assets.folders[j]; if (parentViewFolder.guid == guid) { gUIHistoryListItem.boldAssets[num] = true; } num++; for (int k = 0; k < parentViewFolder.files.Length; k++) { if (parentViewFolder.files[k].guid == guid) { gUIHistoryListItem.boldAssets[num] = true; } num++; } } } }
private int CheckParentViewInFilterAndMarkBoldItems(GUIHistoryListItem item, string text) { ParentViewState assets = item.assets; int num = -1; int index = 0; for (int i = 0; i < assets.folders.Length; i++) { ParentViewFolder folder = assets.folders[i]; if (folder.name.IndexOf(text, StringComparison.InvariantCultureIgnoreCase) != -1) { item.boldAssets[index] = true; if (num == -1) { num = index; } } index++; for (int j = 0; j < folder.files.Length; j++) { if (folder.files[j].name.IndexOf(text, StringComparison.InvariantCultureIgnoreCase) != -1) { item.boldAssets[index] = true; if (num == -1) { num = index; } } index++; } } return(num); }
private void MarkBoldItemsByGUID(string guid) { for (int i = 0; i < this.m_GUIItems.Length; i++) { GUIHistoryListItem item = this.m_GUIItems[i]; ParentViewState assets = item.assets; int index = 0; item.boldAssets = new bool[assets.GetLineCount()]; for (int j = 0; j < assets.folders.Length; j++) { ParentViewFolder folder = assets.folders[j]; if (folder.guid == guid) { item.boldAssets[index] = true; } index++; for (int k = 0; k < folder.files.Length; k++) { if (folder.files[k].guid == guid) { item.boldAssets[index] = true; } index++; } } } }
private void AddAssetItem(string guid, string pathName, bool isDir, ChangeFlags changeFlags, int changeset) { if (pathName == string.Empty) { return; } if (isDir) { string str = ParentViewFolder.MakeNiceName(pathName); int index = ParentViewState.IndexOf(this.folders, str); if (index == -1) { ArrayUtility.Add <ParentViewFolder>(ref this.folders, new ParentViewFolder(str, guid, changeFlags)); } else { this.folders[index].changeFlags = changeFlags; this.folders[index].guid = guid; } } else { string str1 = ParentViewFolder.MakeNiceName(FileUtil.DeleteLastPathNameComponent(pathName)); string str2 = pathName.Substring(pathName.LastIndexOf("/") + 1); int index1 = ParentViewState.IndexOf(this.folders, str1); ParentViewFolder parentViewFolder; if (index1 == -1) { parentViewFolder = new ParentViewFolder(str1, AssetServer.GetParentGUID(guid, changeset)); ArrayUtility.Add <ParentViewFolder>(ref this.folders, parentViewFolder); } else { parentViewFolder = this.folders[index1]; } int index2 = ParentViewState.IndexOf(parentViewFolder.files, str2); if (index2 != -1) { if ((parentViewFolder.files[index2].changeFlags & ChangeFlags.Deleted) != ChangeFlags.None) { return; } parentViewFolder.files[index2].guid = guid; parentViewFolder.files[index2].changeFlags = changeFlags; } else { ArrayUtility.Add <ParentViewFile>(ref parentViewFolder.files, new ParentViewFile(str2, guid, changeFlags)); } } }
private void AddAssetItem(string guid, string pathName, bool isDir, ChangeFlags changeFlags, int changeset) { if (!(pathName == string.Empty)) { if (isDir) { string text = ParentViewFolder.MakeNiceName(pathName); int num = ParentViewState.IndexOf(this.folders, text); if (num == -1) { ParentViewFolder item = new ParentViewFolder(text, guid, changeFlags); ArrayUtility.Add<ParentViewFolder>(ref this.folders, item); } else { this.folders[num].changeFlags = changeFlags; this.folders[num].guid = guid; } } else { string text2 = ParentViewFolder.MakeNiceName(FileUtil.DeleteLastPathNameComponent(pathName)); string text3 = pathName.Substring(pathName.LastIndexOf("/") + 1); int num2 = ParentViewState.IndexOf(this.folders, text2); ParentViewFolder parentViewFolder; if (num2 == -1) { parentViewFolder = new ParentViewFolder(text2, AssetServer.GetParentGUID(guid, changeset)); ArrayUtility.Add<ParentViewFolder>(ref this.folders, parentViewFolder); } else { parentViewFolder = this.folders[num2]; } num2 = ParentViewState.IndexOf(parentViewFolder.files, text3); if (num2 != -1) { if ((parentViewFolder.files[num2].changeFlags & ChangeFlags.Deleted) == ChangeFlags.None) { parentViewFolder.files[num2].guid = guid; parentViewFolder.files[num2].changeFlags = changeFlags; } } else { ArrayUtility.Add<ParentViewFile>(ref parentViewFolder.files, new ParentViewFile(text3, guid, changeFlags)); } } } }
private int MarkBoldItemsBySelection(ASHistoryWindow.GUIHistoryListItem item) { List <string> list = new List <string>(); ParentViewState assets = item.assets; int num = -1; int num2 = 0; if (Selection.instanceIDs.Length == 0) { return(0); } int[] instanceIDs = Selection.instanceIDs; for (int i = 0; i < instanceIDs.Length; i++) { int instanceID = instanceIDs[i]; list.Add(AssetDatabase.AssetPathToGUID(AssetDatabase.GetAssetPath(instanceID))); } for (int j = 0; j < assets.folders.Length; j++) { ParentViewFolder parentViewFolder = assets.folders[j]; if (list.Contains(parentViewFolder.guid)) { item.boldAssets[num2] = true; if (num == -1) { num = num2; } } num2++; for (int k = 0; k < parentViewFolder.files.Length; k++) { if (list.Contains(parentViewFolder.files[k].guid)) { item.boldAssets[num2] = true; if (num == -1) { num = num2; } } num2++; } } return(num); }
private int MarkBoldItemsBySelection(GUIHistoryListItem item) { List <string> list = new List <string>(); ParentViewState assets = item.assets; int num = -1; int index = 0; if (Selection.instanceIDs.Length == 0) { return(0); } foreach (int num3 in Selection.instanceIDs) { list.Add(AssetDatabase.AssetPathToGUID(AssetDatabase.GetAssetPath(num3))); } for (int i = 0; i < assets.folders.Length; i++) { ParentViewFolder folder = assets.folders[i]; if (list.Contains(folder.guid)) { item.boldAssets[index] = true; if (num == -1) { num = index; } } index++; for (int j = 0; j < folder.files.Length; j++) { if (list.Contains(folder.files[j].guid)) { item.boldAssets[index] = true; if (num == -1) { num = index; } } index++; } } return(num); }
private bool ParentViewGUI(ParentViewState pvState, ParentViewState anotherPvState, ref bool hasSelection) { bool flag1 = false; EditorGUIUtility.SetIconSize(this.iconSize); ListViewState lv = pvState.lv; bool shift = Event.current.shift; bool actionKey = EditorGUI.actionKey; int row = lv.row; int folder1 = -1; int file = -1; bool flag2 = false; foreach (ListViewElement listViewElement in ListViewGUILayout.ListView(lv, ListViewOptions.wantsToStartCustomDrag | ListViewOptions.wantsToAcceptCustomDrag, this.dragTitle, GUIStyle.none, new GUILayoutOption[0])) { if (folder1 == -1 && !pvState.IndexToFolderAndFile(listViewElement.row, ref folder1, ref file)) { flag1 = true; break; } if (GUIUtility.keyboardControl == lv.ID && Event.current.type == EventType.KeyDown && actionKey) Event.current.Use(); ParentViewFolder folder2 = pvState.folders[folder1]; if (pvState.selectedItems[listViewElement.row] && Event.current.type == EventType.Repaint) ASCommitWindow.constants.entrySelected.Draw(listViewElement.position, false, false, false, false); if (ListViewGUILayout.HasMouseUp(listViewElement.position)) { if (!shift && !actionKey) flag2 |= ListViewGUILayout.MultiSelection(row, pvState.lv.row, ref pvState.initialSelectedItem, ref pvState.selectedItems); } else if (ListViewGUILayout.HasMouseDown(listViewElement.position)) { if (Event.current.clickCount == 2) { this.DoShowMyDiff(false); GUIUtility.ExitGUI(); } else { if (!pvState.selectedItems[listViewElement.row] || shift || actionKey) flag2 |= ListViewGUILayout.MultiSelection(row, listViewElement.row, ref pvState.initialSelectedItem, ref pvState.selectedItems); pvState.selectedFile = file; pvState.selectedFolder = folder1; lv.row = listViewElement.row; } } else if (ListViewGUILayout.HasMouseDown(listViewElement.position, 1)) { if (!pvState.selectedItems[listViewElement.row]) { flag2 = true; pvState.ClearSelection(); pvState.selectedItems[listViewElement.row] = true; pvState.selectedFile = file; pvState.selectedFolder = folder1; lv.row = listViewElement.row; } this.dropDownMenuItems[0] = pvState != this.pv1state ? "<<<" : ">>>"; GUIUtility.hotControl = 0; EditorUtility.DisplayCustomMenu(new Rect(Event.current.mousePosition.x, Event.current.mousePosition.y, 1f, 1f), this.dropDownMenuItems, (int[]) null, new EditorUtility.SelectMenuItemFunction(this.ContextMenuClick), (object) null); Event.current.Use(); } ChangeFlags changeFlags; if (file != -1) { Texture2D texture2D = AssetDatabase.GetCachedIcon(folder2.name + "/" + folder2.files[file].name) as Texture2D; if ((UnityEngine.Object) texture2D == (UnityEngine.Object) null) texture2D = InternalEditorUtility.GetIconForFile(folder2.files[file].name); GUILayout.Label(new GUIContent(folder2.files[file].name, (Texture) texture2D), ASCommitWindow.constants.element, new GUILayoutOption[0]); changeFlags = folder2.files[file].changeFlags; } else { GUILayout.Label(folder2.name, ASCommitWindow.constants.header, new GUILayoutOption[0]); changeFlags = folder2.changeFlags; } GUIContent content = (GUIContent) null; if (ASCommitWindow.HasFlag(changeFlags, ChangeFlags.Undeleted) || ASCommitWindow.HasFlag(changeFlags, ChangeFlags.Created)) content = ASMainWindow.constants.badgeNew; else if (ASCommitWindow.HasFlag(changeFlags, ChangeFlags.Deleted)) content = ASMainWindow.constants.badgeDelete; else if (ASCommitWindow.HasFlag(changeFlags, ChangeFlags.Renamed) || ASCommitWindow.HasFlag(changeFlags, ChangeFlags.Moved)) content = ASMainWindow.constants.badgeMove; if (content != null && Event.current.type == EventType.Repaint) { Rect position = new Rect((float) ((double) listViewElement.position.x + (double) listViewElement.position.width - (double) content.image.width - 5.0), listViewElement.position.y + listViewElement.position.height / 2f - (float) (content.image.height / 2), (float) content.image.width, (float) content.image.height); EditorGUIUtility.SetIconSize(Vector2.zero); GUIStyle.none.Draw(position, content, false, false, false, false); EditorGUIUtility.SetIconSize(this.iconSize); } pvState.NextFileFolder(ref folder1, ref file); } if (!flag1) { if (GUIUtility.keyboardControl == lv.ID) { if (Event.current.type == EventType.ValidateCommand && Event.current.commandName == "SelectAll") Event.current.Use(); else if (Event.current.type == EventType.ExecuteCommand && Event.current.commandName == "SelectAll") { for (int index = 0; index < pvState.selectedItems.Length; ++index) pvState.selectedItems[index] = true; flag2 = true; Event.current.Use(); } } if (lv.customDraggedFromID != 0 && lv.customDraggedFromID == anotherPvState.lv.ID) this.DoTransferAll(anotherPvState, pvState, pvState.selectedFolder, pvState.selectedFile); if (GUIUtility.keyboardControl == lv.ID && !actionKey) { if (lv.selectionChanged) { flag2 |= ListViewGUILayout.MultiSelection(row, lv.row, ref pvState.initialSelectedItem, ref pvState.selectedItems); if (!pvState.IndexToFolderAndFile(lv.row, ref pvState.selectedFolder, ref pvState.selectedFile)) flag1 = true; } else if (pvState.selectedFolder != -1 && Event.current.type == EventType.KeyDown && (GUIUtility.keyboardControl == lv.ID && Event.current.keyCode == KeyCode.Return)) { this.DoTransferAll(pvState, anotherPvState, pvState.selectedFolder, pvState.selectedFile); ListViewGUILayout.MultiSelection(row, lv.row, ref pvState.initialSelectedItem, ref pvState.selectedItems); pvState.IndexToFolderAndFile(lv.row, ref pvState.selectedFolder, ref pvState.selectedFile); Event.current.Use(); flag1 = true; } } if (lv.selectionChanged || flag2) { if (pvState.IndexToFolderAndFile(lv.row, ref folder1, ref file)) this.dragTitle = file != -1 ? pvState.folders[folder1].files[file].name : pvState.folders[folder1].name; anotherPvState.ClearSelection(); anotherPvState.lv.row = -1; anotherPvState.selectedFile = -1; anotherPvState.selectedFolder = -1; this.MySelectionToGlobalSelection(); } } EditorGUIUtility.SetIconSize(Vector2.zero); return !flag1; }
private bool IsLastOne(int f, int fl, ParentViewState st) { return (((st.folders.Length - 1) == f) && ((st.folders[f].files.Length - 1) == fl)); }
public static bool SomethingDiscardableSelected(ParentViewState st) { int num = 0; foreach (ParentViewFolder folder in st.folders) { if (st.selectedItems[num++]) return true; foreach (ParentViewFile file in folder.files) { if (st.selectedItems[num++] && ASCommitWindow.IsDiscardableAsset(file.guid, file.changeFlags)) return true; } } return false; }
private static bool AllFolderWouldBeMovedAnyway(ParentViewState pvState, string guid) { int num1 = 0; for (int index1 = 0; index1 < pvState.folders.Length; ++index1) { if (pvState.folders[index1].guid == guid) { bool flag1 = true; bool flag2 = true; bool[] selectedItems = pvState.selectedItems; int index2 = num1; int num2 = 1; int num3 = index2 + num2; bool flag3 = selectedItems[index2]; for (int index3 = 0; index3 < pvState.folders[index1].files.Length; ++index3) { if (pvState.selectedItems[num3++]) flag1 = false; else flag2 = false; } if (!flag3) return false; if (!flag2) return flag1; return true; } num1 += 1 + pvState.folders[index1].files.Length; } return false; }
private void OnGUI() { if (EditorSettings.externalVersionControl != ExternalVersionControl.Disabled && EditorSettings.externalVersionControl != ExternalVersionControl.AssetServer) { GUILayout.FlexibleSpace(); GUILayout.BeginHorizontal(new GUILayoutOption[0]); GUILayout.FlexibleSpace(); GUILayout.Label("Asset Server is disabled when external version control is used. Go to 'Edit -> Project Settings -> Editor' to re-enable it.", new GUILayoutOption[0]); GUILayout.FlexibleSpace(); GUILayout.EndHorizontal(); GUILayout.FlexibleSpace(); return; } if (ASMainWindow.constants == null) { ASMainWindow.constants = new ASMainWindow.Constants(); } if (!this.m_CheckedMaint && Event.current.type != EventType.Layout) { if (!InternalEditorUtility.HasPro()) { base.Close(); GUIUtility.ExitGUI(); } this.m_CheckedMaint = true; } if (this.maxNickLength == 1 && this.sharedChangesets != null) { for (int i = 0; i < this.sharedChangesets.Length; i++) { int num = (int)ASMainWindow.constants.serverUpdateInfo.CalcSize(new GUIContent(this.sharedChangesets[i].owner)).x; if (num > this.maxNickLength) { this.maxNickLength = num; } } this.changesetContents = new GUIContent[this.sharedChangesets.Length]; ParentViewState parentViewState = new ParentViewState(); for (int j = 0; j < this.changesetContents.Length; j++) { int num2 = 15; Changeset changeset = this.sharedChangesets[j]; string text = changeset.message.Split(new char[] { '\n' })[0]; text = ((text.Length >= 45) ? (text.Substring(0, 42) + "...") : text); string text2 = string.Format("[{0} {1}] {2}", changeset.date, changeset.owner, text); num2--; parentViewState.Clear(); parentViewState.AddAssetItems(changeset); for (int k = 0; k < parentViewState.folders.Length; k++) { if (--num2 == 0 && !this.IsLastOne(k, 0, parentViewState)) { text2 += "\n(and more...)"; break; } text2 = text2 + "\n" + parentViewState.folders[k].name; for (int l = 0; l < parentViewState.folders[k].files.Length; l++) { if (--num2 == 0 && !this.IsLastOne(k, l, parentViewState)) { text2 += "\n(and more...)"; break; } text2 = text2 + "\n\t" + parentViewState.folders[k].files[l].name; } if (num2 == 0) { break; } } this.changesetContents[j] = new GUIContent(this.sharedChangesets[j].message.Split(new char[] { '\n' })[0], text2); } if (this.maxNickLength == 1) { this.maxNickLength = 0; } } if (AssetServer.IsControllerBusy() != 0) { base.Repaint(); return; } if (this.isInitialUpdate) { this.isInitialUpdate = false; this.SwitchSelectedPage(ASMainWindow.Page.Overview); } if (Event.current.type == EventType.ExecuteCommand && Event.current.commandName == "Find") { this.SetShownSearchField(this.m_SearchToShow); Event.current.Use(); } GUILayout.BeginHorizontal(EditorStyles.toolbar, new GUILayoutOption[0]); int num3 = -1; bool enabled = GUI.enabled; if (this.ToolbarToggle(this.selectedPage == ASMainWindow.Page.Overview, this.pageTitles[0], EditorStyles.toolbarButton)) { num3 = 0; } GUI.enabled = (!this.needsSetup && this.sharedChangesets != null && this.sharedChangesets.Length != 0 && enabled); if (this.ToolbarToggle(this.selectedPage == ASMainWindow.Page.Update, this.pageTitles[1], EditorStyles.toolbarButton)) { num3 = 1; } GUI.enabled = (!this.needsSetup && this.pv.lv.totalRows != 0 && enabled); if (this.selectedPage > ASMainWindow.Page.Commit) { if (this.ToolbarToggle(this.selectedPage == ASMainWindow.Page.Commit, this.pageTitles[2], EditorStyles.toolbarButton)) { num3 = 2; } GUI.enabled = enabled; if (this.ToolbarToggle(this.selectedPage > ASMainWindow.Page.Commit, this.pageTitles[3], EditorStyles.toolbarButton)) { num3 = 3; } } else { if (this.ToolbarToggle(this.selectedPage == ASMainWindow.Page.Commit, this.pageTitles[2], EditorStyles.toolbarButton)) { num3 = 2; } GUI.enabled = enabled; } if (num3 != -1 && num3 != (int)this.selectedPage) { if (this.selectedPage == ASMainWindow.Page.Commit) { this.NotifyClosingCommit(); } if (num3 <= 2) { this.SwitchSelectedPage((ASMainWindow.Page)num3); GUIUtility.ExitGUI(); } } GUILayout.FlexibleSpace(); if (this.selectedPage == ASMainWindow.Page.History) { this.DoSearchToggle(ASMainWindow.ShowSearchField.HistoryList); } if (!this.needsSetup) { switch (this.selectedPage) { case ASMainWindow.Page.Overview: case ASMainWindow.Page.Update: case ASMainWindow.Page.History: if (GUILayout.Button("Refresh", EditorStyles.toolbarButton, new GUILayoutOption[0])) { this.ActionRefresh(); GUIUtility.ExitGUI(); } break; } } GUILayout.EndHorizontal(); EditorGUIUtility.SetIconSize(this.iconSize); this.DoSelectedPageGUI(); EditorGUIUtility.SetIconSize(Vector2.zero); if (Event.current.type == EventType.ContextClick) { GUIUtility.hotControl = 0; Rect position = new Rect(Event.current.mousePosition.x, Event.current.mousePosition.y, 1f, 1f); EditorUtility.DisplayCustomMenu(position, (!this.needsSetup) ? this.dropDownMenuItems : this.unconfiguredDropDownMenuItems, null, new EditorUtility.SelectMenuItemFunction(this.ContextMenuClick), null); Event.current.Use(); } }
public static bool MarkAllFolderDependenciesForDiscarding(ParentViewState pvState, ParentViewState anotherPvState) { bool flag1 = false; bool flag2 = false; int index1 = 0; List<string> stringList = new List<string>(); for (int index2 = 0; index2 < pvState.folders.Length; ++index2) { ParentViewFolder folder = pvState.folders[index2]; if (ASCommitWindow.HasFlag(folder.changeFlags, ChangeFlags.Deleted)) { bool flag3 = false; for (int index3 = 1; index3 <= folder.files.Length; ++index3) { if (pvState.selectedItems[index1 + index3]) { flag3 = true; pvState.selectedItems[index1] = true; stringList.Add(folder.guid); break; } } if (pvState.selectedItems[index1] || flag3) { string str = folder.guid; while (AssetServer.IsGUIDValid(str = AssetServer.GetParentGUID(str, -1)) != 0) { int folderIndex = ASCommitWindow.IndexOfFolderWithGUID(pvState.folders, str); if (folderIndex != -1) { int totalIndex = ASCommitWindow.FolderIndexToTotalIndex(pvState.folders, folderIndex); if (!pvState.selectedItems[totalIndex] && ASCommitWindow.HasFlag(pvState.folders[totalIndex].changeFlags, ChangeFlags.Deleted)) { pvState.selectedItems[totalIndex] = true; stringList.Add(str); flag1 = true; } } else break; } } } else if (!ASCommitWindow.AllFolderWouldBeMovedAnyway(pvState, folder.guid)) { if (ASCommitWindow.AnyOfTheParentsIsSelected(ref pvState, folder.guid)) { pvState.selectedItems[index1] = true; stringList.Add(folder.guid); for (int index3 = 1; index3 <= folder.files.Length; ++index3) pvState.selectedItems[index1 + index3] = true; flag1 = true; } } else { for (int index3 = 1; index3 <= folder.files.Length; ++index3) { if (!pvState.selectedItems[index1 + index3]) pvState.selectedItems[index1 + index3] = true; } stringList.Add(folder.guid); } index1 += 1 + pvState.folders[index2].files.Length; } if (anotherPvState != null) { for (int index2 = 0; index2 < anotherPvState.folders.Length; ++index2) { ParentViewFolder folder = anotherPvState.folders[index2]; if (ASCommitWindow.AnyOfTheParentsIsSelected(ref pvState, folder.guid)) stringList.Add(folder.guid); } for (int index2 = anotherPvState.folders.Length - 1; index2 >= 0; --index2) { if (stringList.Contains(anotherPvState.folders[index2].guid)) { ParentViewFolder folder1 = anotherPvState.folders[index2]; int index3 = ASCommitWindow.FolderSelectionIndexFromGUID(pvState.folders, folder1.guid); if (index3 != -1) { ParentViewFolder folder2 = pvState.folders[index3]; int length = pvState.lv.totalRows - index3 - 1 - folder2.files.Length; int sourceIndex = index3 + 1 + folder2.files.Length; Array.Copy((Array) pvState.selectedItems, sourceIndex, (Array) pvState.selectedItems, sourceIndex + folder1.files.Length, length); ArrayUtility.AddRange<ParentViewFile>(ref folder2.files, folder1.files); for (int index4 = 1; index4 <= folder2.files.Length; ++index4) pvState.selectedItems[index3 + index4] = true; Array.Sort<ParentViewFile>(folder2.files, new Comparison<ParentViewFile>(ParentViewState.CompareViewFile)); } else { int index4 = 0; for (int index5 = 0; index5 < pvState.folders.Length && ParentViewState.CompareViewFolder(pvState.folders[index4], folder1) <= 0; ++index5) index4 += 1 + pvState.folders[index5].files.Length; int length = pvState.lv.totalRows - index4; int sourceIndex = index4; Array.Copy((Array) pvState.selectedItems, sourceIndex, (Array) pvState.selectedItems, sourceIndex + 1 + folder1.files.Length, length); ArrayUtility.Add<ParentViewFolder>(ref pvState.folders, folder1); for (int index5 = 0; index5 <= folder1.files.Length; ++index5) pvState.selectedItems[index4 + index5] = true; flag2 = true; } ArrayUtility.RemoveAt<ParentViewFolder>(ref anotherPvState.folders, index2); flag1 = true; } } anotherPvState.SetLineCount(); } pvState.SetLineCount(); if (flag2) Array.Sort<ParentViewFolder>(pvState.folders, new Comparison<ParentViewFolder>(ParentViewState.CompareViewFolder)); return flag1; }
private static bool AllFolderWouldBeMovedAnyway(ParentViewState pvState, string guid) { int num = 0; for (int i = 0; i < pvState.folders.Length; i++) { if (pvState.folders[i].guid == guid) { bool flag = true; bool flag2 = true; bool flag3 = pvState.selectedItems[num++]; for (int j = 0; j < pvState.folders[i].files.Length; j++) { if (pvState.selectedItems[num++]) { flag = false; } else { flag2 = false; } } return (flag3 && (flag2 || flag)); } num += 1 + pvState.folders[i].files.Length; } return false; }
internal static bool MarkSelected(ParentViewState activeState, List<string> guids) { int num = 0; bool flag = false; ParentViewFolder[] folders = activeState.folders; for (int i = 0; i < folders.Length; i++) { ParentViewFolder parentViewFolder = folders[i]; bool flag2 = guids.Contains(parentViewFolder.guid); activeState.selectedItems[num++] = flag2; flag |= flag2; ParentViewFile[] files = parentViewFolder.files; for (int j = 0; j < files.Length; j++) { ParentViewFile parentViewFile = files[j]; flag2 = guids.Contains(parentViewFile.guid); activeState.selectedItems[num++] = flag2; flag |= flag2; } } return flag; }
internal static List<string> GetParentViewSelectedItems(ParentViewState state, bool includeFolders, bool excludeUndiscardableOnes) { List<string> stringList = new List<string>(); int index1 = 0; for (int index2 = 0; index2 < state.folders.Length; ++index2) { ParentViewFolder folder = state.folders[index2]; bool flag1 = true; bool flag2 = true; int index3 = index1++; int count = stringList.Count; for (int index4 = 0; index4 < folder.files.Length; ++index4) { if (state.selectedItems[index1]) { if (!excludeUndiscardableOnes || ASCommitWindow.IsDiscardableAsset(folder.files[index4].guid, folder.files[index4].changeFlags)) { stringList.Add(folder.files[index4].guid); flag1 = false; } } else flag2 = false; ++index1; } if (includeFolders && state.selectedItems[index3] && (flag1 || flag2) && (AssetServer.IsGUIDValid(folder.guid) != 0 && count <= stringList.Count)) stringList.Insert(count, folder.guid); } return stringList; }
private bool MarkDependantFiles(ParentViewState pvState) { string[] array = new string[0]; bool result = false; if (pvState == this.pv1state) { array = AssetServer.CollectAllDependencies(ASCommitWindow.GetParentViewSelectedItems(this.pv1state, false, false).ToArray()); if (array.Length != 0) { int i = 1; int num = 0; while (i < pvState.lv.totalRows) { int j = 0; while (j < pvState.folders[num].files.Length) { if (!pvState.selectedItems[i]) { for (int k = 0; k < array.Length; k++) { if (array[k] == pvState.folders[num].files[j].guid) { pvState.selectedItems[i] = true; result = true; break; } } } j++; i++; } num++; i++; } } } return result; }
private void DoTransferAll(ParentViewState pvState, ParentViewState anotherPvState, int selFolder, int selFile) { List<string> list = new List<string>(); bool flag = this.MarkDependantFiles(pvState); int i = pvState.lv.totalRows - 1; for (int j = pvState.folders.Length - 1; j >= 0; j--) { ParentViewFolder parentViewFolder = pvState.folders[j]; bool flag2 = false; for (int k = parentViewFolder.files.Length - 1; k >= -1; k--) { if (!list.Contains(parentViewFolder.guid) && pvState.selectedItems[i]) { if (k != -1 || !flag2) { flag |= this.DoTransfer(ref pvState.folders, ref anotherPvState.folders, j, k, ref list, pvState == this.pv1state); } flag2 = true; } i--; } } for (i = pvState.folders.Length - 1; i >= 0; i--) { if (list.Contains(pvState.folders[i].guid)) { list.Remove(pvState.folders[i].guid); ArrayUtility.RemoveAt<ParentViewFolder>(ref pvState.folders, i); } } this.pv1state.SetLineCount(); this.pv2state.SetLineCount(); this.pv1state.ClearSelection(); this.pv2state.ClearSelection(); pvState.selectedFile = -1; pvState.selectedFolder = -1; AssetServer.SetSelectionFromGUID(string.Empty); this.lastTransferMovedDependencies = flag; }
public static bool MarkAllFolderDependenciesForDiscarding(ParentViewState pvState, ParentViewState anotherPvState) { bool result = false; bool flag = false; int num = 0; List<string> list = new List<string>(); for (int i = 0; i < pvState.folders.Length; i++) { ParentViewFolder parentViewFolder = pvState.folders[i]; if (ASCommitWindow.HasFlag(parentViewFolder.changeFlags, ChangeFlags.Deleted)) { bool flag2 = false; for (int j = 1; j <= parentViewFolder.files.Length; j++) { if (pvState.selectedItems[num + j]) { flag2 = true; pvState.selectedItems[num] = true; list.Add(parentViewFolder.guid); break; } } if (pvState.selectedItems[num] || flag2) { string text = parentViewFolder.guid; while (AssetServer.IsGUIDValid(text = AssetServer.GetParentGUID(text, -1)) != 0) { int num2 = ASCommitWindow.IndexOfFolderWithGUID(pvState.folders, text); if (num2 == -1) { break; } num2 = ASCommitWindow.FolderIndexToTotalIndex(pvState.folders, num2); if (!pvState.selectedItems[num2] && ASCommitWindow.HasFlag(pvState.folders[num2].changeFlags, ChangeFlags.Deleted)) { pvState.selectedItems[num2] = true; list.Add(text); result = true; } } } } else { if (!ASCommitWindow.AllFolderWouldBeMovedAnyway(pvState, parentViewFolder.guid)) { if (ASCommitWindow.AnyOfTheParentsIsSelected(ref pvState, parentViewFolder.guid)) { pvState.selectedItems[num] = true; list.Add(parentViewFolder.guid); for (int k = 1; k <= parentViewFolder.files.Length; k++) { pvState.selectedItems[num + k] = true; } result = true; } } else { for (int l = 1; l <= parentViewFolder.files.Length; l++) { if (!pvState.selectedItems[num + l]) { pvState.selectedItems[num + l] = true; } } list.Add(parentViewFolder.guid); } } num += 1 + pvState.folders[i].files.Length; } if (anotherPvState != null) { for (int m = 0; m < anotherPvState.folders.Length; m++) { ParentViewFolder parentViewFolder2 = anotherPvState.folders[m]; if (ASCommitWindow.AnyOfTheParentsIsSelected(ref pvState, parentViewFolder2.guid)) { list.Add(parentViewFolder2.guid); } } for (int n = anotherPvState.folders.Length - 1; n >= 0; n--) { if (list.Contains(anotherPvState.folders[n].guid)) { ParentViewFolder parentViewFolder3 = anotherPvState.folders[n]; int num3 = ASCommitWindow.FolderSelectionIndexFromGUID(pvState.folders, parentViewFolder3.guid); if (num3 != -1) { ParentViewFolder parentViewFolder4 = pvState.folders[num3]; int length = pvState.lv.totalRows - num3 - 1 - parentViewFolder4.files.Length; int num4 = num3 + 1 + parentViewFolder4.files.Length; Array.Copy(pvState.selectedItems, num4, pvState.selectedItems, num4 + parentViewFolder3.files.Length, length); ArrayUtility.AddRange<ParentViewFile>(ref parentViewFolder4.files, parentViewFolder3.files); for (int num5 = 1; num5 <= parentViewFolder4.files.Length; num5++) { pvState.selectedItems[num3 + num5] = true; } Array.Sort<ParentViewFile>(parentViewFolder4.files, new Comparison<ParentViewFile>(ParentViewState.CompareViewFile)); } else { num3 = 0; for (int num6 = 0; num6 < pvState.folders.Length; num6++) { if (ParentViewState.CompareViewFolder(pvState.folders[num3], parentViewFolder3) > 0) { break; } num3 += 1 + pvState.folders[num6].files.Length; } int length2 = pvState.lv.totalRows - num3; int num7 = num3; Array.Copy(pvState.selectedItems, num7, pvState.selectedItems, num7 + 1 + parentViewFolder3.files.Length, length2); ArrayUtility.Add<ParentViewFolder>(ref pvState.folders, parentViewFolder3); for (int num8 = 0; num8 <= parentViewFolder3.files.Length; num8++) { pvState.selectedItems[num3 + num8] = true; } flag = true; } ArrayUtility.RemoveAt<ParentViewFolder>(ref anotherPvState.folders, n); result = true; } } anotherPvState.SetLineCount(); } pvState.SetLineCount(); if (flag) { Array.Sort<ParentViewFolder>(pvState.folders, new Comparison<ParentViewFolder>(ParentViewState.CompareViewFolder)); } return result; }
public static bool SomethingDiscardableSelected(ParentViewState st) { int num = 0; ParentViewFolder[] folders = st.folders; for (int i = 0; i < folders.Length; i++) { ParentViewFolder parentViewFolder = folders[i]; if (st.selectedItems[num++]) { return true; } ParentViewFile[] files = parentViewFolder.files; for (int j = 0; j < files.Length; j++) { ParentViewFile parentViewFile = files[j]; if (st.selectedItems[num++] && ASCommitWindow.IsDiscardableAsset(parentViewFile.guid, parentViewFile.changeFlags)) { return true; } } } return false; }
private void OnGUI() { if ((EditorSettings.externalVersionControl != ExternalVersionControl.Disabled) && (EditorSettings.externalVersionControl != ExternalVersionControl.AssetServer)) { GUILayout.FlexibleSpace(); GUILayout.BeginHorizontal(new GUILayoutOption[0]); GUILayout.FlexibleSpace(); GUILayout.Label("Asset Server is disabled when external version control is used. Go to 'Edit -> Project Settings -> Editor' to re-enable it.", new GUILayoutOption[0]); GUILayout.FlexibleSpace(); GUILayout.EndHorizontal(); GUILayout.FlexibleSpace(); } else { if (constants == null) { constants = new Constants(); } if (!this.m_CheckedMaint && (Event.current.type != EventType.Layout)) { if (!InternalEditorUtility.HasTeamLicense()) { base.Close(); GUIUtility.ExitGUI(); } this.m_CheckedMaint = true; } if ((this.maxNickLength == 1) && (this.sharedChangesets != null)) { for (int i = 0; i < this.sharedChangesets.Length; i++) { int x = (int) constants.serverUpdateInfo.CalcSize(new GUIContent(this.sharedChangesets[i].owner)).x; if (x > this.maxNickLength) { this.maxNickLength = x; } } this.changesetContents = new GUIContent[this.sharedChangesets.Length]; ParentViewState st = new ParentViewState(); for (int j = 0; j < this.changesetContents.Length; j++) { int num4 = 15; Changeset assets = this.sharedChangesets[j]; char[] separator = new char[] { '\n' }; string str = assets.message.Split(separator)[0]; str = (str.Length >= 0x2d) ? (str.Substring(0, 0x2a) + "...") : str; string tooltip = string.Format("[{0} {1}] {2}", assets.date, assets.owner, str); num4--; st.Clear(); st.AddAssetItems(assets); for (int k = 0; k < st.folders.Length; k++) { if ((--num4 == 0) && !this.IsLastOne(k, 0, st)) { tooltip = tooltip + "\n(and more...)"; break; } tooltip = tooltip + "\n" + st.folders[k].name; for (int m = 0; m < st.folders[k].files.Length; m++) { if ((--num4 == 0) && !this.IsLastOne(k, m, st)) { tooltip = tooltip + "\n(and more...)"; break; } tooltip = tooltip + "\n\t" + st.folders[k].files[m].name; } if (num4 == 0) { break; } } char[] chArray2 = new char[] { '\n' }; this.changesetContents[j] = new GUIContent(this.sharedChangesets[j].message.Split(chArray2)[0], tooltip); } if (this.maxNickLength == 1) { this.maxNickLength = 0; } } if (AssetServer.IsControllerBusy() != 0) { base.Repaint(); } else { if (this.isInitialUpdate) { this.isInitialUpdate = false; this.SwitchSelectedPage(Page.Overview); } if ((Event.current.type == EventType.ExecuteCommand) && (Event.current.commandName == "Find")) { this.SetShownSearchField(this.m_SearchToShow); Event.current.Use(); } GUILayout.BeginHorizontal(EditorStyles.toolbar, new GUILayoutOption[0]); int num7 = -1; bool enabled = GUI.enabled; if (this.ToolbarToggle(this.selectedPage == Page.Overview, this.pageTitles[0], EditorStyles.toolbarButton)) { num7 = 0; } GUI.enabled = ((!this.needsSetup && (this.sharedChangesets != null)) && (this.sharedChangesets.Length != 0)) && enabled; if (this.ToolbarToggle(this.selectedPage == Page.Update, this.pageTitles[1], EditorStyles.toolbarButton)) { num7 = 1; } GUI.enabled = (!this.needsSetup && (this.pv.lv.totalRows != 0)) && enabled; if (this.selectedPage > Page.Commit) { if (this.ToolbarToggle(this.selectedPage == Page.Commit, this.pageTitles[2], EditorStyles.toolbarButton)) { num7 = 2; } GUI.enabled = enabled; if (this.ToolbarToggle(this.selectedPage > Page.Commit, this.pageTitles[3], EditorStyles.toolbarButton)) { num7 = 3; } } else { if (this.ToolbarToggle(this.selectedPage == Page.Commit, this.pageTitles[2], EditorStyles.toolbarButton)) { num7 = 2; } GUI.enabled = enabled; } if ((num7 != -1) && (num7 != this.selectedPage)) { if (this.selectedPage == Page.Commit) { this.NotifyClosingCommit(); } if (num7 <= 2) { this.SwitchSelectedPage((Page) num7); GUIUtility.ExitGUI(); } } GUILayout.FlexibleSpace(); if (this.selectedPage == Page.History) { this.DoSearchToggle(ShowSearchField.HistoryList); } if (!this.needsSetup) { Page selectedPage = this.selectedPage; if ((((selectedPage == Page.Overview) || (selectedPage == Page.Update)) || (selectedPage == Page.History)) && GUILayout.Button("Refresh", EditorStyles.toolbarButton, new GUILayoutOption[0])) { this.ActionRefresh(); GUIUtility.ExitGUI(); } } GUILayout.EndHorizontal(); EditorGUIUtility.SetIconSize(this.iconSize); this.DoSelectedPageGUI(); EditorGUIUtility.SetIconSize(Vector2.zero); if (Event.current.type == EventType.ContextClick) { GUIUtility.hotControl = 0; Rect position = new Rect(Event.current.mousePosition.x, Event.current.mousePosition.y, 1f, 1f); EditorUtility.DisplayCustomMenu(position, !this.needsSetup ? this.dropDownMenuItems : this.unconfiguredDropDownMenuItems, null, new EditorUtility.SelectMenuItemFunction(this.ContextMenuClick), null); Event.current.Use(); } } } }
private bool IsLastOne(int f, int fl, ParentViewState st) { if (st.folders.Length - 1 == f) return st.folders[f].files.Length - 1 == fl; return false; }
private void DrawParentView(Rect r, ref GUIHistoryListItem item, int changesetIndex, bool hasFocus) { ParentViewState assets = item.assets; GUIContent content = new GUIContent(); Texture2D textured = EditorGUIUtility.FindTexture(EditorResourcesUtility.folderIconName); Event current = Event.current; hasFocus &= this.m_HistoryControlID == GUIUtility.keyboardControl; r.height = this.m_RowHeight; r.y += 3f; int index = -1; int num2 = (item.collapsedItemCount == 0) ? item.totalLineCount : 4; num2 += item.startShowingFrom; for (int i = 0; i < assets.folders.Length; i++) { GUIStyle label; ParentViewFolder folder = assets.folders[i]; content.text = folder.name; content.image = textured; index++; if (index == num2) { break; } if (index >= item.startShowingFrom) { label = ms_Style.label; if ((current.type == EventType.MouseDown) && r.Contains(current.mousePosition)) { if (((this.ChangeLogSelectionRev == this.m_Changesets[changesetIndex].changeset) && (this.m_ChangeLogSelectionGUID == folder.guid)) && EditorGUI.actionKey) { this.ClearItemSelection(); } else { this.ChangeLogSelectionRev = this.m_Changesets[changesetIndex].changeset; this.m_ChangeLogSelectionGUID = folder.guid; this.m_ChangeLogSelectionAssetName = folder.name; this.m_FolderSelected = true; this.m_AssetSelectionIndex = index; } this.m_ChangesetSelectionIndex = changesetIndex; GUIUtility.keyboardControl = this.m_HistoryControlID; ((ASMainWindow)this.m_ParentWindow).m_SearchToShow = ASMainWindow.ShowSearchField.HistoryList; if (current.clickCount == 2) { this.ShowAssetsHistory(); GUIUtility.ExitGUI(); } else if (current.button == 1) { GUIUtility.hotControl = 0; r = new Rect(current.mousePosition.x, current.mousePosition.y, 1f, 1f); EditorUtility.DisplayCustomMenu(r, this.m_DropDownMenuItems, -1, new EditorUtility.SelectMenuItemFunction(this.ContextMenuClick), null); } this.DoScroll(); current.Use(); } bool on = (this.ChangeLogSelectionRev == this.m_Changesets[changesetIndex].changeset) && (this.m_ChangeLogSelectionGUID == folder.guid); if (item.boldAssets[index] && !on) { GUI.Label(r, string.Empty, ms_Style.ping); } if (Event.current.type == EventType.Repaint) { label.Draw(r, content, false, false, on, hasFocus); this.DrawBadge(r, folder.changeFlags, label, content, GUIClip.visibleRect.width - 150f); } r.y += this.m_RowHeight; } RectOffset padding = ms_Style.label.padding; padding.left += 0x10; RectOffset offset2 = ms_Style.boldLabel.padding; offset2.left += 0x10; try { for (int j = 0; j < folder.files.Length; j++) { index++; if (index == num2) { break; } if (index >= item.startShowingFrom) { label = ms_Style.label; if ((current.type == EventType.MouseDown) && r.Contains(current.mousePosition)) { if (((this.ChangeLogSelectionRev == this.m_Changesets[changesetIndex].changeset) && (this.m_ChangeLogSelectionGUID == folder.files[j].guid)) && EditorGUI.actionKey) { this.ClearItemSelection(); } else { this.ChangeLogSelectionRev = this.m_Changesets[changesetIndex].changeset; this.m_ChangeLogSelectionGUID = folder.files[j].guid; this.m_ChangeLogSelectionAssetName = folder.files[j].name; this.m_FolderSelected = false; this.m_AssetSelectionIndex = index; } this.m_ChangesetSelectionIndex = changesetIndex; GUIUtility.keyboardControl = this.m_HistoryControlID; ((ASMainWindow)this.m_ParentWindow).m_SearchToShow = ASMainWindow.ShowSearchField.HistoryList; if (current.clickCount == 2) { if (this.IsComparableAssetSelected() && (this.m_SelectedGUID == this.m_ChangeLogSelectionGUID)) { this.DoShowDiff(false, this.ChangeLogSelectionRev, -1); } else { this.ShowAssetsHistory(); GUIUtility.ExitGUI(); } } else if (current.button == 1) { GUIUtility.hotControl = 0; r = new Rect(current.mousePosition.x, current.mousePosition.y, 1f, 1f); EditorUtility.DisplayCustomMenu(r, this.m_DropDownMenuItems, -1, new EditorUtility.SelectMenuItemFunction(this.ContextMenuClick), null); } this.DoScroll(); current.Use(); } content.text = folder.files[j].name; content.image = InternalEditorUtility.GetIconForFile(folder.files[j].name); bool flag2 = (this.ChangeLogSelectionRev == this.m_Changesets[changesetIndex].changeset) && (this.m_ChangeLogSelectionGUID == folder.files[j].guid); if (item.boldAssets[index] && !flag2) { GUI.Label(r, string.Empty, ms_Style.ping); } if (Event.current.type == EventType.Repaint) { label.Draw(r, content, false, false, flag2, hasFocus); this.DrawBadge(r, folder.files[j].changeFlags, label, content, GUIClip.visibleRect.width - 150f); } r.y += this.m_RowHeight; } } if (index == num2) { break; } } finally { RectOffset offset3 = ms_Style.label.padding; offset3.left -= 0x10; RectOffset offset4 = ms_Style.boldLabel.padding; offset4.left -= 0x10; } } if (((index == num2) || (num2 >= item.totalLineCount)) && (item.collapsedItemCount != 0)) { r.x += 19f; if (GUI.Button(r, item.collapsedItemCount.ToString() + " more...", ms_Style.foldout)) { GUIUtility.keyboardControl = this.m_HistoryControlID; this.UncollapseListItem(ref item); } } }
internal static List<string> GetParentViewSelectedItems(ParentViewState state, bool includeFolders, bool excludeUndiscardableOnes) { List<string> list = new List<string>(); int num = 0; for (int i = 0; i < state.folders.Length; i++) { ParentViewFolder parentViewFolder = state.folders[i]; bool flag = true; bool flag2 = true; int num2 = num++; int count = list.Count; for (int j = 0; j < parentViewFolder.files.Length; j++) { if (state.selectedItems[num]) { if (!excludeUndiscardableOnes || ASCommitWindow.IsDiscardableAsset(parentViewFolder.files[j].guid, parentViewFolder.files[j].changeFlags)) { list.Add(parentViewFolder.files[j].guid); flag = false; } } else { flag2 = false; } num++; } if (includeFolders && state.selectedItems[num2] && (flag || flag2) && AssetServer.IsGUIDValid(parentViewFolder.guid) != 0 && count <= list.Count) { list.Insert(count, parentViewFolder.guid); } } return list; }
internal static bool MarkSelected(ParentViewState activeState, List<string> guids) { int num = 0; bool flag1 = false; foreach (ParentViewFolder folder in activeState.folders) { bool flag2 = guids.Contains(folder.guid); activeState.selectedItems[num++] = flag2; flag1 |= flag2; foreach (ParentViewFile file in folder.files) { bool flag3 = guids.Contains(file.guid); activeState.selectedItems[num++] = flag3; flag1 |= flag3; } } return flag1; }
private bool IsLastOne(int f, int fl, ParentViewState st) { return st.folders.Length - 1 == f && st.folders[f].files.Length - 1 == fl; }
private static bool AnyOfTheParentsIsSelected(ref ParentViewState pvState, string guid) { string itemGUID = guid; while (AssetServer.IsGUIDValid(itemGUID = AssetServer.GetParentGUID(itemGUID, -1)) != 0) { if (AllFolderWouldBeMovedAnyway(pvState, itemGUID)) { return true; } } return false; }
private bool MarkDependantFiles(ParentViewState pvState) { string[] strArray1 = new string[0]; bool flag = false; if (pvState == this.pv1state) { string[] strArray2 = AssetServer.CollectAllDependencies(ASCommitWindow.GetParentViewSelectedItems(this.pv1state, false, false).ToArray()); if (strArray2.Length != 0) { int index1 = 1; int index2 = 0; for (; index1 < pvState.lv.totalRows; ++index1) { int index3 = 0; while (index3 < pvState.folders[index2].files.Length) { if (!pvState.selectedItems[index1]) { for (int index4 = 0; index4 < strArray2.Length; ++index4) { if (strArray2[index4] == pvState.folders[index2].files[index3].guid) { pvState.selectedItems[index1] = true; flag = true; break; } } } ++index3; ++index1; } ++index2; } } } return flag; }
private void DoTransferAll(ParentViewState pvState, ParentViewState anotherPvState, int selFolder, int selFile) { List<string> guidsOfFoldersToRemove = new List<string>(); bool flag1 = this.MarkDependantFiles(pvState); int index1 = pvState.lv.totalRows - 1; for (int folder1 = pvState.folders.Length - 1; folder1 >= 0; --folder1) { ParentViewFolder folder2 = pvState.folders[folder1]; bool flag2 = false; for (int file = folder2.files.Length - 1; file >= -1; --file) { if (!guidsOfFoldersToRemove.Contains(folder2.guid) && pvState.selectedItems[index1]) { if (file != -1 || !flag2) flag1 |= this.DoTransfer(ref pvState.folders, ref anotherPvState.folders, folder1, file, ref guidsOfFoldersToRemove, pvState == this.pv1state); flag2 = true; } --index1; } } for (int index2 = pvState.folders.Length - 1; index2 >= 0; --index2) { if (guidsOfFoldersToRemove.Contains(pvState.folders[index2].guid)) { guidsOfFoldersToRemove.Remove(pvState.folders[index2].guid); ArrayUtility.RemoveAt<ParentViewFolder>(ref pvState.folders, index2); } } this.pv1state.SetLineCount(); this.pv2state.SetLineCount(); this.pv1state.ClearSelection(); this.pv2state.ClearSelection(); pvState.selectedFile = -1; pvState.selectedFolder = -1; AssetServer.SetSelectionFromGUID(string.Empty); this.lastTransferMovedDependencies = flag1; }
private static bool AnyOfTheParentsIsSelected(ref ParentViewState pvState, string guid) { string str = guid; while (AssetServer.IsGUIDValid(str = AssetServer.GetParentGUID(str, -1)) != 0) { if (ASCommitWindow.AllFolderWouldBeMovedAnyway(pvState, str)) return true; } return false; }
private void OnGUI() { if (EditorSettings.externalVersionControl != ExternalVersionControl.Disabled && EditorSettings.externalVersionControl != ExternalVersionControl.AssetServer) { GUILayout.FlexibleSpace(); GUILayout.BeginHorizontal(); GUILayout.FlexibleSpace(); GUILayout.Label("Asset Server is disabled when external version control is used. Go to 'Edit -> Project Settings -> Editor' to re-enable it."); GUILayout.FlexibleSpace(); GUILayout.EndHorizontal(); GUILayout.FlexibleSpace(); } else { if (ASMainWindow.constants == null) ASMainWindow.constants = new ASMainWindow.Constants(); if (!this.m_CheckedMaint && Event.current.type != EventType.Layout) { if (!InternalEditorUtility.HasTeamLicense()) { this.Close(); GUIUtility.ExitGUI(); } this.m_CheckedMaint = true; } if (this.maxNickLength == 1 && this.sharedChangesets != null) { for (int index = 0; index < this.sharedChangesets.Length; ++index) { int x = (int) ASMainWindow.constants.serverUpdateInfo.CalcSize(new GUIContent(this.sharedChangesets[index].owner)).x; if (x > this.maxNickLength) this.maxNickLength = x; } this.changesetContents = new GUIContent[this.sharedChangesets.Length]; ParentViewState st = new ParentViewState(); for (int index = 0; index < this.changesetContents.Length; ++index) { int num1 = 15; Changeset sharedChangeset = this.sharedChangesets[index]; string str1 = sharedChangeset.message.Split('\n')[0]; string str2 = str1.Length >= 45 ? str1.Substring(0, 42) + "..." : str1; string tooltip = string.Format("[{0} {1}] {2}", (object) sharedChangeset.date, (object) sharedChangeset.owner, (object) str2); int num2 = num1 - 1; st.Clear(); st.AddAssetItems(sharedChangeset); for (int f = 0; f < st.folders.Length; ++f) { if (--num2 == 0 && !this.IsLastOne(f, 0, st)) { tooltip += "\n(and more...)"; break; } tooltip = tooltip + "\n" + st.folders[f].name; for (int fl = 0; fl < st.folders[f].files.Length; ++fl) { if (--num2 == 0 && !this.IsLastOne(f, fl, st)) { tooltip += "\n(and more...)"; break; } tooltip = tooltip + "\n\t" + st.folders[f].files[fl].name; } if (num2 == 0) break; } this.changesetContents[index] = new GUIContent(this.sharedChangesets[index].message.Split('\n')[0], tooltip); } if (this.maxNickLength == 1) this.maxNickLength = 0; } if (AssetServer.IsControllerBusy() != 0) { this.Repaint(); } else { if (this.isInitialUpdate) { this.isInitialUpdate = false; this.SwitchSelectedPage(ASMainWindow.Page.Overview); } if (Event.current.type == EventType.ExecuteCommand && Event.current.commandName == "Find") { this.SetShownSearchField(this.m_SearchToShow); Event.current.Use(); } GUILayout.BeginHorizontal(EditorStyles.toolbar, new GUILayoutOption[0]); int num = -1; bool enabled = GUI.enabled; if (this.ToolbarToggle(this.selectedPage == ASMainWindow.Page.Overview, this.pageTitles[0], EditorStyles.toolbarButton)) num = 0; GUI.enabled = !this.needsSetup && this.sharedChangesets != null && this.sharedChangesets.Length != 0 && enabled; if (this.ToolbarToggle(this.selectedPage == ASMainWindow.Page.Update, this.pageTitles[1], EditorStyles.toolbarButton)) num = 1; GUI.enabled = !this.needsSetup && this.pv.lv.totalRows != 0 && enabled; if (this.selectedPage > ASMainWindow.Page.Commit) { if (this.ToolbarToggle(this.selectedPage == ASMainWindow.Page.Commit, this.pageTitles[2], EditorStyles.toolbarButton)) num = 2; GUI.enabled = enabled; if (this.ToolbarToggle(this.selectedPage > ASMainWindow.Page.Commit, this.pageTitles[3], EditorStyles.toolbarButton)) num = 3; } else { if (this.ToolbarToggle(this.selectedPage == ASMainWindow.Page.Commit, this.pageTitles[2], EditorStyles.toolbarButton)) num = 2; GUI.enabled = enabled; } if (num != -1 && (ASMainWindow.Page) num != this.selectedPage) { if (this.selectedPage == ASMainWindow.Page.Commit) this.NotifyClosingCommit(); if (num <= 2) { this.SwitchSelectedPage((ASMainWindow.Page) num); GUIUtility.ExitGUI(); } } GUILayout.FlexibleSpace(); if (this.selectedPage == ASMainWindow.Page.History) this.DoSearchToggle(ASMainWindow.ShowSearchField.HistoryList); if (!this.needsSetup) { switch (this.selectedPage) { case ASMainWindow.Page.Overview: case ASMainWindow.Page.Update: case ASMainWindow.Page.History: if (GUILayout.Button("Refresh", EditorStyles.toolbarButton, new GUILayoutOption[0])) { this.ActionRefresh(); GUIUtility.ExitGUI(); break; } break; } } GUILayout.EndHorizontal(); EditorGUIUtility.SetIconSize(this.iconSize); this.DoSelectedPageGUI(); EditorGUIUtility.SetIconSize(Vector2.zero); if (Event.current.type != EventType.ContextClick) return; GUIUtility.hotControl = 0; EditorUtility.DisplayCustomMenu(new Rect(Event.current.mousePosition.x, Event.current.mousePosition.y, 1f, 1f), !this.needsSetup ? this.dropDownMenuItems : this.unconfiguredDropDownMenuItems, (int[]) null, new EditorUtility.SelectMenuItemFunction(this.ContextMenuClick), (object) null); Event.current.Use(); } } }
private bool ParentViewGUI(ParentViewState pvState, ParentViewState anotherPvState, ref bool hasSelection) { bool flag = false; EditorGUIUtility.SetIconSize(this.iconSize); ListViewState lv = pvState.lv; bool shift = Event.current.shift; bool actionKey = EditorGUI.actionKey; int row = lv.row; int num = -1; int num2 = -1; bool flag2 = false; foreach (ListViewElement listViewElement in ListViewGUILayout.ListView(lv, (ListViewOptions)12, this.dragTitle, GUIStyle.none, new GUILayoutOption[0])) { if (num == -1 && !pvState.IndexToFolderAndFile(listViewElement.row, ref num, ref num2)) { flag = true; break; } if (GUIUtility.keyboardControl == lv.ID && Event.current.type == EventType.KeyDown && actionKey) { Event.current.Use(); } ParentViewFolder parentViewFolder = pvState.folders[num]; if (pvState.selectedItems[listViewElement.row] && Event.current.type == EventType.Repaint) { ASCommitWindow.constants.entrySelected.Draw(listViewElement.position, false, false, false, false); } if (ListViewGUILayout.HasMouseUp(listViewElement.position)) { if (!shift && !actionKey) { flag2 |= ListViewGUILayout.MultiSelection(row, pvState.lv.row, ref pvState.initialSelectedItem, ref pvState.selectedItems); } } else { if (ListViewGUILayout.HasMouseDown(listViewElement.position)) { if (Event.current.clickCount == 2) { this.DoShowMyDiff(false); GUIUtility.ExitGUI(); } else { if (!pvState.selectedItems[listViewElement.row] || shift || actionKey) { flag2 |= ListViewGUILayout.MultiSelection(row, listViewElement.row, ref pvState.initialSelectedItem, ref pvState.selectedItems); } pvState.selectedFile = num2; pvState.selectedFolder = num; lv.row = listViewElement.row; } } else { if (ListViewGUILayout.HasMouseDown(listViewElement.position, 1)) { if (!pvState.selectedItems[listViewElement.row]) { flag2 = true; pvState.ClearSelection(); pvState.selectedItems[listViewElement.row] = true; pvState.selectedFile = num2; pvState.selectedFolder = num; lv.row = listViewElement.row; } this.dropDownMenuItems[0] = ((pvState != this.pv1state) ? "<<<" : ">>>"); GUIUtility.hotControl = 0; Rect position = new Rect(Event.current.mousePosition.x, Event.current.mousePosition.y, 1f, 1f); EditorUtility.DisplayCustomMenu(position, this.dropDownMenuItems, null, new EditorUtility.SelectMenuItemFunction(this.ContextMenuClick), null); Event.current.Use(); } } } ChangeFlags changeFlags; if (num2 != -1) { Texture2D texture2D = AssetDatabase.GetCachedIcon(parentViewFolder.name + "/" + parentViewFolder.files[num2].name) as Texture2D; if (texture2D == null) { texture2D = InternalEditorUtility.GetIconForFile(parentViewFolder.files[num2].name); } GUILayout.Label(new GUIContent(parentViewFolder.files[num2].name, texture2D), ASCommitWindow.constants.element, new GUILayoutOption[0]); changeFlags = parentViewFolder.files[num2].changeFlags; } else { GUILayout.Label(parentViewFolder.name, ASCommitWindow.constants.header, new GUILayoutOption[0]); changeFlags = parentViewFolder.changeFlags; } GUIContent gUIContent = null; if (ASCommitWindow.HasFlag(changeFlags, ChangeFlags.Undeleted) || ASCommitWindow.HasFlag(changeFlags, ChangeFlags.Created)) { gUIContent = ASMainWindow.constants.badgeNew; } else { if (ASCommitWindow.HasFlag(changeFlags, ChangeFlags.Deleted)) { gUIContent = ASMainWindow.constants.badgeDelete; } else { if (ASCommitWindow.HasFlag(changeFlags, ChangeFlags.Renamed) || ASCommitWindow.HasFlag(changeFlags, ChangeFlags.Moved)) { gUIContent = ASMainWindow.constants.badgeMove; } } } if (gUIContent != null && Event.current.type == EventType.Repaint) { Rect position2 = new Rect(listViewElement.position.x + listViewElement.position.width - (float)gUIContent.image.width - 5f, listViewElement.position.y + listViewElement.position.height / 2f - (float)(gUIContent.image.height / 2), (float)gUIContent.image.width, (float)gUIContent.image.height); EditorGUIUtility.SetIconSize(Vector2.zero); GUIStyle.none.Draw(position2, gUIContent, false, false, false, false); EditorGUIUtility.SetIconSize(this.iconSize); } pvState.NextFileFolder(ref num, ref num2); } if (!flag) { if (GUIUtility.keyboardControl == lv.ID) { if (Event.current.type == EventType.ValidateCommand && Event.current.commandName == "SelectAll") { Event.current.Use(); } else { if (Event.current.type == EventType.ExecuteCommand && Event.current.commandName == "SelectAll") { for (int i = 0; i < pvState.selectedItems.Length; i++) { pvState.selectedItems[i] = true; } flag2 = true; Event.current.Use(); } } } if (lv.customDraggedFromID != 0 && lv.customDraggedFromID == anotherPvState.lv.ID) { this.DoTransferAll(anotherPvState, pvState, pvState.selectedFolder, pvState.selectedFile); } if (GUIUtility.keyboardControl == lv.ID && !actionKey) { if (lv.selectionChanged) { flag2 |= ListViewGUILayout.MultiSelection(row, lv.row, ref pvState.initialSelectedItem, ref pvState.selectedItems); if (!pvState.IndexToFolderAndFile(lv.row, ref pvState.selectedFolder, ref pvState.selectedFile)) { flag = true; } } else { if (pvState.selectedFolder != -1 && Event.current.type == EventType.KeyDown && GUIUtility.keyboardControl == lv.ID && Event.current.keyCode == KeyCode.Return) { this.DoTransferAll(pvState, anotherPvState, pvState.selectedFolder, pvState.selectedFile); ListViewGUILayout.MultiSelection(row, lv.row, ref pvState.initialSelectedItem, ref pvState.selectedItems); pvState.IndexToFolderAndFile(lv.row, ref pvState.selectedFolder, ref pvState.selectedFile); Event.current.Use(); flag = true; } } } if (lv.selectionChanged || flag2) { if (pvState.IndexToFolderAndFile(lv.row, ref num, ref num2)) { this.dragTitle = ((num2 != -1) ? pvState.folders[num].files[num2].name : pvState.folders[num].name); } anotherPvState.ClearSelection(); anotherPvState.lv.row = -1; anotherPvState.selectedFile = -1; anotherPvState.selectedFolder = -1; this.MySelectionToGlobalSelection(); } } EditorGUIUtility.SetIconSize(Vector2.zero); return !flag; }