private void SelectPackageAndFilter(string packageIdOrDisplayName, PackageFilterTab?filterTab = null, bool refresh = false, string searchText = "")
        {
            if (!string.IsNullOrEmpty(packageIdOrDisplayName) || filterTab != null)
            {
                if (filterTab == null)
                {
                    IPackageVersion version;
                    IPackage        package;
                    m_PackageDatabase.GetPackageAndVersionByIdOrName(packageIdOrDisplayName, out package, out version);
                    filterTab = m_PageManager.FindTab(package, version);
                }

                m_FilterToSelectAfterLoad = filterTab;
                m_PackageToSelectOnLoaded = packageIdOrDisplayName;
                packageManagerToolbar.SetCurrentSearch(searchText);

                if (refresh || m_PackageDatabase.isEmpty)
                {
                    DelayRefresh((PackageFilterTab)filterTab);
                }
                else
                {
                    SelectPackageAndFilter();
                }
            }
            Show();
        }
Exemple #2
0
        public void SelectPackageAndFilter(string packageIdOrDisplayName, PackageFilterTab?filterTab = null, bool refresh = false, string searchText = "")
        {
            if (!string.IsNullOrEmpty(packageIdOrDisplayName) || filterTab != null)
            {
                if (filterTab == null)
                {
                    m_PackageDatabase.GetPackageAndVersionByIdOrName(packageIdOrDisplayName, out var package, out var version);
                    if (package != null)
                    {
                        filterTab = m_PageManager.FindTab(package, version);
                    }
                    else
                    {
                        var packageIdOrDisplayNameSplit = packageIdOrDisplayName.Split('@');
                        var versionString = packageIdOrDisplayNameSplit.Length == 2 ? packageIdOrDisplayNameSplit[1] : string.Empty;

                        // Package is not found in PackageDatabase but we can determine if it's a preview package or not with it's version string.
                        SemVersionParser.TryParse(versionString, out var semVersion);
                        if (!m_SettingsProxy.enablePreviewPackages && semVersion.HasValue && (semVersion.Value.Major == 0 || semVersion.Value.Prerelease.StartsWith("preview")))
                        {
                            Debug.Log("You must check \"Enable Preview Packages\" in Project Settings > Package Manager in order to see this package.");
                            filterTab = m_PackageFiltering.currentFilterTab;
                            packageIdOrDisplayName = null;
                        }
                        else
                        {
                            filterTab = PackageFilterTab.All;
                        }
                    }
                }

                m_FilterToSelectAfterLoad = filterTab;
                m_PackageToSelectOnLoaded = packageIdOrDisplayName;
                packageManagerToolbar.SetCurrentSearch(searchText);

                if (refresh || m_PackageDatabase.isEmpty)
                {
                    DelayRefresh((PackageFilterTab)filterTab);
                }
                else
                {
                    SelectPackageAndFilter();
                }
            }
        }