public void SetPackages(PackageFilter filter, IEnumerable <Package> packages) { if (filter == PackageFilter.Modules) { packages = packages.Where(pkg => pkg.IsBuiltIn); } else if (filter == PackageFilter.All) { packages = packages.Where(pkg => !pkg.IsBuiltIn && pkg.IsDiscoverable); } else { packages = packages.Where(pkg => !pkg.IsBuiltIn); packages = packages.Where(pkg => pkg.Current != null && pkg.Current.IsDirectDependency); } OnLoaded(); ClearAll(); var packagesGroup = new PackageGroup(PackageGroupOrigins.Packages.ToString(), Selection); Groups.Add(packagesGroup); List.Add(packagesGroup); packagesGroup.previousGroup = null; var builtInGroup = new PackageGroup(PackageGroupOrigins.BuiltInPackages.ToString(), Selection); Groups.Add(builtInGroup); List.Add(builtInGroup); if (filter == PackageFilter.Modules) { packagesGroup.nextGroup = builtInGroup; builtInGroup.previousGroup = packagesGroup; builtInGroup.nextGroup = null; } else { packagesGroup.nextGroup = null; UIUtils.SetElementDisplay(builtInGroup, false); } var items = packages.OrderBy(pkg => pkg.VersionToDisplay == null ? pkg.Name : pkg.VersionToDisplay.DisplayName).ToList(); foreach (var package in items) { AddPackage(package); } if (!Selection.Selected.Any() && items.Any()) { Selection.SetSelection(items.First()); } PackageFiltering.FilterPackageList(this); }
private void SetPackages(IEnumerable <Package> packages) { if (PackageCollection.Instance.Filter == PackageFilter.Local) { packages = packages.Where(pkg => pkg.Current != null); } var previousSelection = selectedItem != null ? selectedItem.package : null; OnLoaded(); ClearAll(); var packagesGroup = new PackageGroup(PackageGroupOrigins.Packages.ToString()); Groups.Add(packagesGroup); List.Add(packagesGroup); var builtInGroup = new PackageGroup(PackageGroupOrigins.BuiltInPackages.ToString()); Groups.Add(builtInGroup); List.Add(builtInGroup); packagesGroup.previousGroup = null; #if UNITY_2018_2_OR_NEWER packagesGroup.nextGroup = builtInGroup; builtInGroup.previousGroup = packagesGroup; builtInGroup.nextGroup = null; #else packagesGroup.nextGroup = null; UIUtils.SetElementDisplay(builtInGroup, false); #endif root.Q <VisualElement>(loadingId).visible = false; LoadingSpinner.Stop(); foreach (var package in packages.OrderBy(pkg => pkg.Versions.FirstOrDefault() == null ? pkg.Name : pkg.Versions.FirstOrDefault().DisplayName)) { var item = AddPackage(package); if (previousSelection != null && package.Name == previousSelection.Name) { Select(item); } } root.Q <VisualElement>(emptyId).visible = !packages.Any(); }
private PackageGroup GetOrCreateGroup(string groupName, bool hidden) { foreach (var g in Groups) { if (g.name == groupName) { return(g); } } var group = new PackageGroup(groupName, hidden); if (!hidden) { group.OnGroupToggle += value => { if (value) { PackageCollection.Instance.CollapsedGroups.Remove(group.name); if (group.Contains(selectedItem)) { EditorApplication.delayCall += ScrollIfNeeded; } } else { if (!PackageCollection.Instance.CollapsedGroups.Contains(group.name)) { PackageCollection.Instance.CollapsedGroups.Add(group.name); } } }; } group.SetExpanded(!PackageCollection.Instance.CollapsedGroups.Contains(groupName)); Groups.Add(group); List.Add(group); return(group); }
private void SetPackages(IEnumerable <Package> packages) { if (PackageCollection.Instance.Filter == PackageFilter.Modules) { packages = packages.Where(pkg => pkg.IsBuiltIn); } else if (PackageCollection.Instance.Filter == PackageFilter.All) { packages = packages.Where(pkg => !pkg.IsBuiltIn); } else { packages = packages.Where(pkg => !pkg.IsBuiltIn); packages = packages.Where(pkg => pkg.Current != null); } OnLoaded(); ClearAll(); var packagesGroup = new PackageGroup(PackageGroupOrigins.Packages.ToString()); Groups.Add(packagesGroup); List.Add(packagesGroup); packagesGroup.previousGroup = null; var builtInGroup = new PackageGroup(PackageGroupOrigins.BuiltInPackages.ToString()); Groups.Add(builtInGroup); List.Add(builtInGroup); if ((PackageCollection.Instance.Filter & PackageFilter.Modules) == PackageFilter.Modules) { packagesGroup.nextGroup = builtInGroup; builtInGroup.previousGroup = packagesGroup; builtInGroup.nextGroup = null; } else { packagesGroup.nextGroup = null; UIUtils.SetElementDisplay(builtInGroup, false); } var lastSelection = PackageCollection.Instance.SelectedPackage; Select(null); PackageItem defaultSelection = null; foreach (var package in packages.OrderBy(pkg => pkg.Versions.FirstOrDefault() == null ? pkg.Name : pkg.Versions.FirstOrDefault().DisplayName)) { var item = AddPackage(package); if (null == selectedItem && defaultSelection == null) { defaultSelection = item; } if (null == selectedItem && !string.IsNullOrEmpty(lastSelection) && package.Name.Equals(lastSelection)) { Select(item); } } if (selectedItem == null) { Select(defaultSelection); } PackageFiltering.FilterPackageList(this); }