internal override void AddMenuItems(IGenericMenu menu) { // We must update the choices and the values since we don't know if they changed... UpdateLayersInfo(); // Create the menu the usual way... base.AddMenuItems(menu); }
// This method is used when the menu is built to fill up all the choices. internal void AddMenuItems(IGenericMenu menu) { if (menu == null) { throw new ArgumentNullException(nameof(menu)); } foreach (var item in m_Choices) { bool isSelected = item == value; menu.AddItem(GetListItemToDisplay(item), isSelected, () => ChangeValueFromMenu(item)); } }
internal override void AddMenuItems(IGenericMenu menu) { if (menu == null) { throw new ArgumentNullException(nameof(menu)); } foreach (T item in m_Choices) { bool isSelected = EqualityComparer <T> .Default.Equals(item, value); menu.AddItem(GetListItemToDisplay(item), isSelected, () => ChangeValueFromMenu(item)); } }
internal override void AddMenuItems(IGenericMenu menu) { menu.AddItem("Select all", false, () => SelectAllTypes(true)); menu.AddItem("Select all mouse events (basic)", false, () => SelectAllTypes(true, EventTypeSelection.Mouse)); menu.AddItem("Select all drag events", false, () => SelectAllTypes(true, EventTypeSelection.Drag)); menu.AddItem("Select all keyboard events", false, () => SelectAllTypes(true, EventTypeSelection.Keyboard)); menu.AddItem("Select all command events", false, () => SelectAllTypes(true, EventTypeSelection.Command)); menu.AddSeparator(String.Empty); menu.AddItem("Unselect all", false, () => SelectAllTypes(false)); menu.AddSeparator(String.Empty); foreach (var item in m_Choices) { menu.AddItem(item.s, m_State[item.v], () => ChangeValueFromMenu(item)); } }
internal override void AddMenuItems(IGenericMenu menu) { if (menu == null) { throw new ArgumentNullException(nameof(menu)); } choices = InitializeTags(); foreach (var menuItem in choices) { var isSelected = (menuItem == value); menu.AddItem(menuItem, isSelected, () => ChangeValueFromMenu(menuItem)); } menu.AddSeparator(String.Empty); menu.AddItem(L10n.Tr("Add Tag..."), false, OpenTagInspector); }
internal override void AddMenuItems(IGenericMenu menu) { if (menu == null) { throw new ArgumentNullException(nameof(menu)); } choices = InitializeLayers(); string[] layerList = InternalEditorUtility.GetLayersWithId(); for (var i = 0; i < layerList.Length; i++) { var item = layerList[i]; var menuItemIndex = m_Choices[i]; var isSelected = (menuItemIndex == value); menu.AddItem(item, isSelected, () => ChangeValueFromMenu(menuItemIndex)); } menu.AddSeparator(String.Empty); menu.AddItem(L10n.Tr("Add Layer..."), false, OpenLayerInspector); }
internal override void AddMenuItems(IGenericMenu menu) { if (menu == null) { throw new ArgumentNullException(nameof(menu)); } int valueMask = ValueToMask(value); foreach (var item in m_Choices) { var maskOfItem = GetMaskValueOfItem(item); var isSelected = false; switch (maskOfItem) { case 0: if (valueMask == 0) { isSelected = true; } break; case ~0: if (valueMask == ~0) { isSelected = true; } break; default: if ((maskOfItem & valueMask) == maskOfItem) { isSelected = true; } break; } menu.AddItem(GetListItemToDisplay(MaskToValue(maskOfItem)), isSelected, () => ChangeValueFromMenu(item)); } }
// This method is used when the menu is built to fill up all the choices. internal abstract void AddMenuItems(IGenericMenu menu);
internal void Build(IGenericMenu editMenu, GitDiffWindow window) { StatusListEntry[] entries = window.GetStatusList().Where(window.IsSelected).ToArray(); FileStatus selectedFlags = entries.Select(e => e.State).CombineFlags(); GUIContent addContent = new GUIContent("Stage", GitGUI.Textures.CollabPush); if (GitManager.CanStage(selectedFlags)) { editMenu.AddItem(addContent, false, () => { AddSelectedCallback(window); }); } else { editMenu.AddDisabledItem(addContent); } GUIContent removeContent = new GUIContent("Unstage", GitGUI.Textures.CollabPull); if (GitManager.CanUnstage(selectedFlags)) { editMenu.AddItem(removeContent, false, () => { RemoveSelectedCallback(window); }); } else { editMenu.AddDisabledItem(removeContent); } editMenu.AddSeparator(""); Texture2D diffIcon = GitGUI.Textures.ZoomTool; if (entries.Length >= 1) { string localPath = entries[0].LocalPath; if (selectedFlags.IsFlagSet(FileStatus.Conflicted)) { if (conflictsHandler.CanResolveConflictsWithTool(localPath)) { editMenu.AddItem(new GUIContent("Resolve Conflicts", "Resolve merge conflicts"), false, ResolveConflictsCallback, localPath); } else { editMenu.AddDisabledItem(new GUIContent("Resolve Conflicts")); } editMenu.AddItem(new GUIContent("Resolve (Using Ours)"), false, ResolveConflictsOursCallback, localPath); editMenu.AddItem(new GUIContent("Resolve (Using Theirs)"), false, ResolveConflictsTheirsCallback, localPath); } else if (!selectedFlags.IsFlagSet(FileStatus.Ignored)) { if (entries[0].MetaChange == (MetaChangeEnum.Object | MetaChangeEnum.Meta)) { editMenu.AddItem(new GUIContent("Difference/Asset", diffIcon), false, () => { SeeDifferenceObject(entries[0]); }); editMenu.AddItem(new GUIContent("Difference/Meta", diffIcon), false, () => { SeeDifferenceMeta(entries[0]); }); } else { editMenu.AddItem(new GUIContent("Difference", diffIcon), false, () => { SeeDifferenceAuto(entries[0]); }); } if (entries[0].MetaChange == (MetaChangeEnum.Object | MetaChangeEnum.Meta)) { editMenu.AddItem(new GUIContent("Difference with previous version/Asset", diffIcon), false, () => { SeeDifferencePrevObject(entries[0]); }); editMenu.AddItem(new GUIContent("Difference with previous version/Meta", diffIcon), false, () => { SeeDifferencePrevMeta(entries[0]); }); } else { editMenu.AddItem(new GUIContent("Difference with previous version", diffIcon), false, () => { SeeDifferencePrevAuto(entries[0]); }); } } else { editMenu.AddDisabledItem(new GUIContent("Difference", diffIcon)); editMenu.AddDisabledItem(new GUIContent("Difference with previous version", diffIcon)); } editMenu.AddSeparator(""); } if (selectedFlags.IsFlagSet(FileStatus.Ignored)) { editMenu.AddDisabledItem(new GUIContent("Revert", GitGUI.Textures.AnimationWindow)); } else if (entries.Length >= 1) { if (entries[0].MetaChange == (MetaChangeEnum.Object | MetaChangeEnum.Meta)) { editMenu.AddItem(new GUIContent("Revert/Asset", GitGUI.Textures.AnimationWindow), false, () => RevertSelectedObjects(window)); editMenu.AddItem(new GUIContent("Revert/Meta", GitGUI.Textures.AnimationWindow), false, () => RevertSelectedMeta(window)); } else { editMenu.AddItem(new GUIContent("Revert", GitGUI.Textures.AnimationWindow), false, () => RevertSelectedCallback(window)); } } if (entries.Length >= 1) { editMenu.AddSeparator(""); if (entries[0].MetaChange == (MetaChangeEnum.Object | MetaChangeEnum.Meta)) { if (gitManager.CanBlame(entries[0].State)) { editMenu.AddItem(new GUIContent("Blame/Object", GitGUI.Textures.GameView), false, () => { BlameObject(entries[0]); }); editMenu.AddItem(new GUIContent("Blame/Meta", GitGUI.Textures.GameView), false, () => { BlameMeta(entries[0]); }); } else { editMenu.AddDisabledItem(new GUIContent("Blame", GitGUI.Textures.GameView)); } } else if (entries.Length > 0) { if (gitManager.CanBlame(entries[0].State)) { editMenu.AddItem(new GUIContent("Blame", GitGUI.Textures.GameView), false, () => { BlameAuto(entries[0]); }); } else { editMenu.AddDisabledItem(new GUIContent("Blame", GitGUI.Textures.GameView)); } } } editMenu.AddSeparator(""); if (entries.Length >= 1) { editMenu.AddItem(new GUIContent("Show In Explorer", GitGUI.Textures.FolderIcon), false, () => { EditorUtility.RevealInFinder(gitManager.ToProjectPath(entries[0].LocalPath)); }); } editMenu.AddItem(new GUIContent("Open", GitGUI.Textures.OrbitTool), false, () => { AssetDatabase.OpenAsset(entries.Select(e => AssetDatabase.LoadAssetAtPath <Object>(gitManager.ToProjectPath(e.LocalPath))).Where(a => a != null).ToArray()); }); editMenu.AddItem(new GUIContent("Delete", gitOverlay.icons.trashIconSmall.image), false, () => { foreach (var entry in entries) { window.DeleteAsset(entry.LocalPath); } }); editMenu.AddItem(new GUIContent("Reload", GitGUI.Textures.RotateTool), false, window.ReloadCallback); }