private void DisplayPackagesCacheSetting() { packagesCacheDropdown.SetIcon("folder"); var packagesCacheDropdownMenu = new DropdownMenu(); packagesCacheDropdownMenu.AppendAction(k_OpenFolder, action => { if (!string.IsNullOrWhiteSpace(currentPackagesNormalizedPath)) { m_ApplicationProxy.RevealInFinder(currentPackagesNormalizedPath); } }, action => DropdownMenuAction.Status.Normal, "openLocation"); packagesCacheDropdownMenu.AppendAction(k_ChangeLocation, action => { var path = m_ApplicationProxy.OpenFolderPanel(L10n.Tr("Select Packages Cache Location"), currentPackagesNormalizedPath); path = path.NormalizePath(); if (!string.IsNullOrWhiteSpace(path) && string.CompareOrdinal(path, currentPackagesNormalizedPath) != 0) { m_UpmCacheRootClient.SetCacheRoot(path); } }, action => m_CurrentPackagesConfig.source != ConfigSource.Environment ? DropdownMenuAction.Status.Normal : DropdownMenuAction.Status.Disabled, "selectLocation"); packagesCacheDropdownMenu.AppendAction(k_ResetToDefaultLocation, action => { m_UpmCacheRootClient.ClearCacheRoot(); }, action => m_CurrentPackagesConfig.source == ConfigSource.User ? DropdownMenuAction.Status.Normal : DropdownMenuAction.Status.Disabled, "resetLocation"); packagesCacheDropdown.menu = packagesCacheDropdownMenu; m_UpmCacheRootClient.onGetCacheRootOperationError += OnPackagesGetCacheRootOperationError; m_UpmCacheRootClient.onGetCacheRootOperationResult += OnPackagesGetCacheRootOperationResult; m_UpmCacheRootClient.onSetCacheRootOperationError += OnPackagesSetCacheRootOperationError; m_UpmCacheRootClient.onSetCacheRootOperationResult += OnPackagesSetCacheRootOperationResult; m_UpmCacheRootClient.onClearCacheRootOperationError += OnPackagesClearCacheRootOperationError; m_UpmCacheRootClient.onClearCacheRootOperationResult += OnPackagesClearCacheRootOperationResult; if (!m_ApplicationProxy.isBatchMode && m_ApplicationProxy.isUpmRunning) { packagesCachePath.text = string.Empty; packagesCacheDropdown.SetEnabled(false); UIUtils.SetElementDisplay(packagesCacheErrorBox, false); m_UpmCacheRootClient.GetCacheRoot(); } else { packagesCachePath.text = string.Empty; packagesCacheDropdown.SetEnabled(false); DisplayPackagesCacheErrorBox(HelpBoxMessageType.Error, L10n.Tr("Cannot get the Packages Cache location, UPM server is not running.")); } }
public static void HandleInvalidOrUnreachableOnlineUrl(string onlineUrl, string offlineDocPath, string docType, string analyticsEvent, IPackageVersion version, IPackage package, ApplicationProxy applicationProxy) { if (!string.IsNullOrEmpty(offlineDocPath)) { applicationProxy.RevealInFinder(offlineDocPath); PackageManagerWindowAnalytics.SendEvent($"{analyticsEvent}OnDisk", version?.uniqueId); return; } if (!string.IsNullOrEmpty(onlineUrl)) { // With the current `UpmPackageDocs.GetDocumentationUrl` implementation, // We'll get invalid url links for non-unity packages on unity3d.com // We want to avoiding opening these kinds of links to avoid confusion. if (!UpmClient.IsUnityUrl(onlineUrl) || package.Is(PackageType.Unity) || version.packageUniqueId.StartsWith("com.unity.")) { applicationProxy.OpenURL(onlineUrl); PackageManagerWindowAnalytics.SendEvent($"{analyticsEvent}UnreachableOrInvalidUrl", version?.uniqueId); return; } } PackageManagerWindowAnalytics.SendEvent($"{analyticsEvent}NotFound", version?.uniqueId); Debug.LogError(string.Format(L10n.Tr("[Package Manager Window] Unable to find valid {0} for this {1}."), docType, package.GetDescriptor())); }