Exemplo n.º 1
0
        private void OnImportButtonClicked()
        {
            var previousImports     = m_Sample.previousImports;
            var previousImportPaths = string.Empty;

            foreach (var v in previousImports)
            {
                previousImportPaths += v.Replace(Application.dataPath, "Assets") + "\n";
            }

            var warningMessage = string.Empty;

            if (previousImports.Count > 1)
            {
                warningMessage = L10n.Tr("Different versions of the sample are already imported at") + "\n\n"
                                 + previousImportPaths + "\n" + L10n.Tr("They will be deleted when you update.");
            }
            else if (previousImports.Count == 1)
            {
                if (m_Sample.isImported)
                {
                    warningMessage = L10n.Tr("The sample is already imported at") + "\n\n"
                                     + previousImportPaths + "\n" + L10n.Tr("Importing again will override all changes you have made to it.");
                }
                else
                {
                    warningMessage = L10n.Tr("A different version of the sample is already imported at") + "\n\n"
                                     + previousImportPaths + "\n" + L10n.Tr("It will be deleted when you update.");
                }
            }

            if (!string.IsNullOrEmpty(warningMessage) &&
                EditorUtility.DisplayDialog(L10n.Tr("Unity Package Manager"),
                                            warningMessage + L10n.Tr(" Are you sure you want to continue?"),
                                            L10n.Tr("No"), L10n.Tr("Yes")))
            {
                return;
            }

            PackageManagerWindowAnalytics.SendEvent("importSample", m_Version.uniqueId);

            if (m_Sample.Import(Sample.ImportOptions.OverridePreviousImports))
            {
                RefreshImportStatus();
                if (m_Sample.isImported)
                {
                    // Highlight import path
                    var    importRelativePath = m_Sample.importPath.Replace(Application.dataPath, "Assets");
                    Object obj = AssetDatabase.LoadAssetAtPath(importRelativePath, typeof(Object));
                    m_Selection.activeObject = obj;
                    EditorGUIUtility.PingObject(obj);
                }
            }
        }
 private void DelayedSearchEvent()
 {
     if (DateTime.Now.Ticks - m_SearchTextChangeTimestamp > k_SearchEventDelayTicks)
     {
         EditorApplication.update -= DelayedSearchEvent;
         PackageFiltering.instance.currentSearchText = searchToolbar.value;
         if (!string.IsNullOrEmpty(searchToolbar.value))
         {
             PackageManagerWindowAnalytics.SendEvent("search");
         }
     }
 }
        private void SetupAddMenu()
        {
            addMenu.menu.AppendAction("Add package from disk...", a =>
            {
                var path = EditorUtility.OpenFilePanelWithFilters("Select package on disk", "", new[] { "package.json file", "json" });
                if (Path.GetFileName(path) != "package.json")
                {
                    Debug.Log("Please select a valid package.json file in a package folder.");
                    return;
                }
                if (!string.IsNullOrEmpty(path) && !PackageDatabase.instance.isInstallOrUninstallInProgress)
                {
                    PackageDatabase.instance.InstallFromPath(Path.GetDirectoryName(path));
                    PackageManagerWindowAnalytics.SendEvent("addFromDisk");
                }
            }, a => DropdownMenuAction.Status.Normal);

            addMenu.menu.AppendAction("Add package from tarball...", a =>
            {
                var path = EditorUtility.OpenFilePanelWithFilters("Select package on disk", "", new[] { "Package tarball", "tgz" });
                if (!string.IsNullOrEmpty(path) && !PackageDatabase.instance.isInstallOrUninstallInProgress)
                {
                    PackageDatabase.instance.InstallFromPath(path);
                    PackageManagerWindowAnalytics.SendEvent("addFromTarball");
                }
            }, a => DropdownMenuAction.Status.Normal);

            addMenu.menu.AppendAction("Add package from git URL...", a =>
            {
                var addFromGitUrl            = new PackagesAction("Add");
                addFromGitUrl.actionClicked += url =>
                {
                    addFromGitUrl.Hide();
                    if (!PackageDatabase.instance.isInstallOrUninstallInProgress)
                    {
                        PackageDatabase.instance.InstallFromUrl(url);
                        PackageManagerWindowAnalytics.SendEvent("addFromGitUrl");
                    }
                };

                parent.Add(addFromGitUrl);
                addFromGitUrl.Show();
            }, a => DropdownMenuAction.Status.Normal);

            PackageManagerExtensions.ExtensionCallback(() =>
            {
                foreach (var extension in PackageManagerExtensions.MenuExtensions)
                {
                    extension.OnAddMenuCreate(addMenu.menu);
                }
            });
        }
Exemplo n.º 4
0
        private void DelayedSearchEvent()
        {
            if (DateTime.Now.Ticks - m_SearchTextChangeTimestamp > k_SearchEventDelayTicks)
            {
                if (string.IsNullOrEmpty(searchToolbar.value))
                {
                    return;
                }
                EditorApplication.update -= DelayedSearchEvent;

                PackageManagerWindowAnalytics.SendEvent("search");
            }
        }
Exemplo n.º 5
0
        public void OnEnable()
        {
            packageDetails.OnEnable();
            packageList.OnEnable();
            packageLoadBar.OnEnable();
            packageManagerToolbar.OnEnable();
            packageStatusbar.OnEnable();

            packageManagerToolbar.SetEnabled(!m_PackageDatabase.isEmpty);
            packageDetails.packageToolbarContainer.SetEnabled(!m_PackageDatabase.isEmpty);

            m_PageManager.onRefreshOperationFinish += OnRefreshOperationFinish;
            m_PageManager.onRefreshOperationStart  += OnRefreshOperationStart;
            m_PageManager.onRefreshOperationError  += OnRefreshOperationError;
            m_PackageFiltering.onFilterTabChanged  += OnFilterChanged;

            PackageManagerWindowAnalytics.Setup();

            var newTab = m_PackageManagerPrefs.lastUsedPackageFilter ?? m_PackageManagerPrefs.defaultFilterTab;

            m_PackageFiltering.SetCurrentFilterTabWithoutNotify(newTab);
            packageManagerToolbar.SetFilter(newTab);

            if (newTab != PackageFilterTab.AssetStore)
            {
                UIUtils.SetElementDisplay(packageLoadBar, false);
            }

            if (m_PageManager.GetRefreshTimestamp(newTab) == 0)
            {
                DelayRefresh(newTab);
            }

            if (newTab != PackageFilterTab.All && m_PageManager.GetRefreshTimestamp(PackageFilterTab.All) == 0)
            {
                DelayRefresh(PackageFilterTab.All);
            }

            mainContainer.leftWidth      = m_SplitPaneLeftWidth;
            mainContainer.onSizeChanged += width => { m_SplitPaneLeftWidth = width; };

            EditorApplication.focusChanged += OnFocusChanged;
            m_Selection.onSelectionChanged += RefreshSelectedInInspectorClass;

            focusable = true;
            RegisterCallback <AttachToPanelEvent>(OnAttachToPanel);
            RegisterCallback <DetachFromPanelEvent>(OnDetachFromPanel);

            RefreshSelectedInInspectorClass();
        }
        internal static void OpenPackageManager(string packageNameOrDisplayName)
        {
            var windows = UnityEngine.Resources.FindObjectsOfTypeAll <PackageManagerWindow>();
            var isWindowAlreadyVisible = windows != null;

            if (!isWindowAlreadyVisible)
            {
                string packageId = null;
                if (!string.IsNullOrEmpty(packageNameOrDisplayName))
                {
                    var package = PackageDatabase.instance.GetPackage(packageNameOrDisplayName)
                                  ?? PackageDatabase.instance.GetPackageByDisplayName(packageNameOrDisplayName);
                    packageId = package?.primaryVersion.uniqueId ?? $"{packageNameOrDisplayName}@primary";
                }
                PackageManagerWindowAnalytics.SendEvent("openWindow", packageId);
            }

            SelectPackageAndFilter(packageNameOrDisplayName);
        }
Exemplo n.º 7
0
        internal static void OpenPackageManager(string packageNameOrDisplayName)
        {
            var window = GetWindowDontShow <PackageManagerWindow>();
            var isWindowAlreadyVisible = window != null && window.m_Parent != null;

            SelectPackageAndFilter(packageNameOrDisplayName);

            if (!isWindowAlreadyVisible)
            {
                string packageId = null;
                if (!string.IsNullOrEmpty(packageNameOrDisplayName))
                {
                    var package = PackageDatabase.instance.GetPackage(packageNameOrDisplayName)
                                  ?? PackageDatabase.instance.GetPackageByDisplayName(packageNameOrDisplayName);
                    packageId = package?.primaryVersion.uniqueId ?? $"{packageNameOrDisplayName}@primary";
                }
                PackageManagerWindowAnalytics.SendEvent("openWindow", packageId);
            }
        }
Exemplo n.º 8
0
        private void UpdateClick()
        {
            // dissuade users from updating by showing a warning message
            if (package.versions.installed != null && !package.versions.installed.isDirectDependency && package.versions.installed != targetVersion)
            {
                var message = ApplicationUtil.instance.GetTranslationForText("This version of the package is being used by other packages. Upgrading a different version might break your project. Are you sure you want to continue?");
                if (!EditorUtility.DisplayDialog(ApplicationUtil.instance.GetTranslationForText("Unity Package Manager"), message, ApplicationUtil.instance.GetTranslationForText("Yes"), ApplicationUtil.instance.GetTranslationForText("No")))
                {
                    return;
                }
            }

            detailError.ClearError();
            PackageDatabase.instance.Install(targetVersion);
            RefreshPackageActionButtons();

            var eventName = package.versions.installed == null ? "installNew" : "installUpdate";

            PackageManagerWindowAnalytics.SendEvent(eventName, displayVersion?.uniqueId);
        }
        internal static void OpenPackageManager(string packageToSelect)
        {
            var isWindowAlreadyVisible = Resources.FindObjectsOfTypeAll <PackageManagerWindow>()?.FirstOrDefault() != null;

            SelectPackageAndFilterStatic(packageToSelect);
            if (!isWindowAlreadyVisible)
            {
                string packageId = null;
                if (!string.IsNullOrEmpty(packageToSelect))
                {
                    var packageDatabase = ServicesContainer.instance.Resolve <Internal.PackageDatabase>();
                    Internal.IPackageVersion version;
                    Internal.IPackage        package;
                    packageDatabase.GetPackageAndVersionByIdOrName(packageToSelect, out package, out version);

                    packageId = version?.uniqueId ?? package?.versions.primary.uniqueId ?? string.Format("{0}@primary", packageToSelect);
                }
                PackageManagerWindowAnalytics.SendEvent("openWindow", packageId);
            }
        }
Exemplo n.º 10
0
        internal static void OpenPackageManager(string packageNameOrDisplayName)
        {
            var window = UnityEngine.Resources.FindObjectsOfTypeAll <PackageManagerWindow>()?.FirstOrDefault();
            var isWindowAlreadyVisible = window != null;

            if (!isWindowAlreadyVisible)
            {
                string packageId = null;
                if (!string.IsNullOrEmpty(packageNameOrDisplayName))
                {
                    IPackageVersion version;
                    IPackage        package;
                    PackageDatabase.instance.GetPackageAndVersionByIdOrName(packageNameOrDisplayName, out package, out version);

                    packageId = version?.uniqueId ?? package?.versions.primary.uniqueId ?? string.Format(ApplicationUtil.instance.GetTranslationForText("{0}@primary"), packageNameOrDisplayName);
                }
                PackageManagerWindowAnalytics.SendEvent("openWindow", packageId);
            }

            SelectPackageAndFilter(packageNameOrDisplayName);
        }
Exemplo n.º 11
0
        public void OnEnable()
        {
            if (s_Root == null)
            {
                var windowResource = Resources.GetVisualTreeAsset("PackageManagerWindow.uxml");
                if (windowResource != null)
                {
                    s_Root = windowResource.CloneTree();
                    s_Root.styleSheets.Add(Resources.GetStyleSheet());
                    s_Cache = new VisualElementCache(s_Root);

                    PackageDatabase.instance.Setup();
                    SelectionManager.instance.Setup();

                    packageDetails.Setup();
                    packageList.Setup();
                    packageManagerToolbar.Setup();
                    packageStatusbar.Setup();

                    SetupDelayedPackageSelection();

                    PackageManagerWindowAnalytics.Setup();
                }
            }

            if (s_Root != null && s_Root.parent == null)
            {
                rootVisualElement.Add(s_Root);
                s_Root.StretchToParentSize();

                if (!EditorApplication.isPlayingOrWillChangePlaymode)
                {
                    RefreshDatabase();
                }

                PackageFiltering.instance.currentFilterTab = PackageManagerPrefs.instance.lastUsedPackageFilter ?? PackageFilterTab.All;
            }
        }
Exemplo n.º 12
0
        public static void SendEvent(string action, string packageId = null)
        {
            // remove sensitive part of the id: file path or url is not tracked
            if (!string.IsNullOrEmpty(packageId))
            {
                packageId = Regex.Replace(packageId, "(?<package>[^@]+)@(?<protocol>[^:]+):.+", "${package}@${protocol}");
            }

            var parameters = new PackageManagerWindowAnalytics
            {
                action               = action,
                package_id           = packageId ?? string.Empty,
                search_text          = PackageFiltering.instance.currentSearchText,
                filter_name          = PackageFiltering.instance.currentFilterTab.ToString(),
                window_docked        = EditorWindow.GetWindowDontShow <PackageManagerWindow>()?.docked ?? false,
                dependencies_visible = PackageManagerPrefs.instance.showPackageDependencies,
                preview_visible      = PackageManagerPrefs.instance.showPreviewPackages,
                t_since_start        = (long)(EditorApplication.timeSinceStartup * 1E6),
                ts = DateTime.Now.Ticks / TimeSpan.TicksPerMillisecond
            };

            EditorAnalytics.SendEventWithLimit("packageManagerWindowUserAction", parameters);
        }
Exemplo n.º 13
0
        private void RemoveClick()
        {
            var roots = PackageDatabase.instance.GetReverseDependencies(displayVersion)?.Where(p => p.isDirectDependency && p.isInstalled).ToList();
            // Only show this message on a package if it is installed by dependency only. This allows it to still be removed from the installed list.
            var showDialog = (roots?.Any() ?? false) && !(!displayVersion.HasTag(PackageTag.BuiltIn) && displayVersion.isDirectDependency);

            if (showDialog)
            {
                if (roots.Count > MaxDependentList)
                {
                    Debug.Log(GetDependentMessage(displayVersion, roots, int.MaxValue));
                }

                var message = GetDependentMessage(displayVersion, roots);
                var title   = displayVersion.HasTag(PackageTag.BuiltIn) ? ApplicationUtil.instance.GetTranslationForText("Cannot disable built-in package") : ApplicationUtil.instance.GetTranslationForText("Cannot remove dependent package");
                EditorUtility.DisplayDialog(title, message, ApplicationUtil.instance.GetTranslationForText("Ok"));

                return;
            }

            if (displayVersion.HasTag(PackageTag.InDevelopment))
            {
                if (!EditorUtility.DisplayDialog(ApplicationUtil.instance.GetTranslationForText("Unity Package Manager"), ApplicationUtil.instance.GetTranslationForText("You will lose all your changes (if any) if you delete a package in development. Are you sure?"), ApplicationUtil.instance.GetTranslationForText("Yes"), ApplicationUtil.instance.GetTranslationForText("No")))
                {
                    return;
                }

                detailError.ClearError();
                PackageDatabase.instance.RemoveEmbedded(package);
                RefreshPackageActionButtons();

                PackageManagerWindowAnalytics.SendEvent("removeEmbedded", displayVersion.uniqueId);
                return;
            }

            var result = 0;

            if (displayVersion.HasTag(PackageTag.BuiltIn))
            {
                if (!PackageManagerPrefs.instance.skipDisableConfirmation)
                {
                    result = EditorUtility.DisplayDialogComplex(ApplicationUtil.instance.GetTranslationForText("Disable Built-In Package"),
                                                                ApplicationUtil.instance.GetTranslationForText("Are you sure you want to disable this built-in package?"),
                                                                ApplicationUtil.instance.GetTranslationForText("Disable"), ApplicationUtil.instance.GetTranslationForText("Cancel"), ApplicationUtil.instance.GetTranslationForText("Never ask"));
                }
            }
            else
            {
                if (!PackageManagerPrefs.instance.skipRemoveConfirmation)
                {
                    result = EditorUtility.DisplayDialogComplex(ApplicationUtil.instance.GetTranslationForText("Removing Package"),
                                                                ApplicationUtil.instance.GetTranslationForText("Are you sure you want to remove this package?"),
                                                                ApplicationUtil.instance.GetTranslationForText("Remove"), ApplicationUtil.instance.GetTranslationForText("Cancel"), ApplicationUtil.instance.GetTranslationForText("Never ask"));
                }
            }

            // Cancel
            if (result == 1)
            {
                return;
            }

            // Do not ask again
            if (result == 2)
            {
                if (displayVersion.HasTag(PackageTag.BuiltIn))
                {
                    PackageManagerPrefs.instance.skipDisableConfirmation = true;
                }
                else
                {
                    PackageManagerPrefs.instance.skipRemoveConfirmation = true;
                }
            }

            // Remove
            detailError.ClearError();
            PackageDatabase.instance.Uninstall(package);
            RefreshPackageActionButtons();

            PackageManagerWindowAnalytics.SendEvent("uninstall", displayVersion?.uniqueId);
        }
        public void OnEnable()
        {
            this.SetAntiAliasing(4);
            if (instance == null)
            {
                instance = this;
            }
            if (instance != this)
            {
                return;
            }

            instance.titleContent = GetLocalizedTitleContent();

            var windowResource = Resources.GetVisualTreeAsset("PackageManagerWindow.uxml");

            if (windowResource != null)
            {
                var root = windowResource.Instantiate();
                root.styleSheets.Add(Resources.GetMainWindowStyleSheet());
                cache = new VisualElementCache(root);

                rootVisualElement.Add(root);
                LocalizeVisualElementAndAllChildrenText(rootVisualElement);

                PageManager.instance.Setup();

                packageDetails.OnEnable();
                packageList.OnEnable();
                packageLoadBar.OnEnable();
                packageManagerToolbar.OnEnable();
                packageStatusbar.OnEnable();

                packageManagerToolbar.SetEnabled(!PackageDatabase.instance.isEmpty);
                packageDetails.packageToolbarContainer.SetEnabled(!PackageDatabase.instance.isEmpty);

                PageManager.instance.onRefreshOperationFinish += OnRefreshOperationFinish;
                PageManager.instance.onRefreshOperationStart  += OnRefreshOperationStart;
                PageManager.instance.onRefreshOperationError  += OnRefreshOperationError;
                PackageFiltering.instance.onFilterTabChanged  += OnFilterChanged;

                PackageManagerWindowAnalytics.Setup();

                root.StretchToParentSize();

                var newTab = PackageManagerPrefs.instance.lastUsedPackageFilter ?? PackageFiltering.instance.defaultFilterTab;
                PackageFiltering.instance.SetCurrentFilterTabWithoutNotify(newTab);
                packageManagerToolbar.SetFilter(newTab);

                if (newTab != PackageFilterTab.AssetStore)
                {
                    UIUtils.SetElementDisplay(packageLoadBar, false);
                }

                if (PageManager.instance.GetRefreshTimestamp(newTab) == 0)
                {
                    DelayRefresh(newTab);
                }

                if (newTab != PackageFilterTab.All && PageManager.instance.GetRefreshTimestamp(PackageFilterTab.All) == 0)
                {
                    DelayRefresh(PackageFilterTab.All);
                }

                mainContainer.leftWidth      = m_SplitPaneLeftWidth;
                mainContainer.onSizeChanged += width => { m_SplitPaneLeftWidth = width; };

                EditorApplication.focusChanged += OnFocusChanged;
                Selection.selectionChanged     += OnEditorSelectionChanged;

                rootVisualElement.focusable = true;
                rootVisualElement.RegisterCallback <AttachToPanelEvent>(OnAttachToPanel);
                rootVisualElement.RegisterCallback <DetachFromPanelEvent>(OnDetachFromPanel);
            }
        }
        private void SetupAddMenu()
        {
            addMenu.menu.AppendAction("Add package from disk...", a =>
            {
                var path = EditorUtility.OpenFilePanelWithFilters("Select package on disk", "", new[] { "package.json file", "json" });
                if (Path.GetFileName(path) != "package.json")
                {
                    Debug.Log("Please select a valid package.json file in a package folder.");
                    return;
                }
                if (!string.IsNullOrEmpty(path) && !PackageDatabase.instance.isInstallOrUninstallInProgress)
                {
                    PackageDatabase.instance.InstallFromPath(Path.GetDirectoryName(path));
                    PackageManagerWindowAnalytics.SendEvent("addFromDisk");
                }
            }, a => DropdownMenuAction.Status.Normal);

            addMenu.menu.AppendAction("Add package from tarball...", a =>
            {
                var path = EditorUtility.OpenFilePanelWithFilters("Select package on disk", "", new[] { "Package tarball", "tgz" });
                if (!string.IsNullOrEmpty(path) && !PackageDatabase.instance.isInstallOrUninstallInProgress)
                {
                    PackageDatabase.instance.InstallFromPath(path);
                    PackageManagerWindowAnalytics.SendEvent("addFromTarball");
                }
            }, a => DropdownMenuAction.Status.Normal);

            addMenu.menu.AppendAction("Add package from git URL...", a =>
            {
                var addFromGitUrl            = new PackagesAction("Add");
                addFromGitUrl.actionClicked += url =>
                {
                    addFromGitUrl.Hide();
                    if (!PackageDatabase.instance.isInstallOrUninstallInProgress)
                    {
                        PackageDatabase.instance.InstallFromUrl(url);
                        PackageManagerWindowAnalytics.SendEvent("addFromGitUrl");
                    }
                };

                parent.Add(addFromGitUrl);
                addFromGitUrl.Show();
            }, a => DropdownMenuAction.Status.Normal);

            addMenu.menu.AppendSeparator("");

            addMenu.menu.AppendAction("Create Package...", a =>
            {
                var defaultName              = PackageCreator.GenerateUniquePackageDisplayName("New Package");
                var createPackage            = new PackagesAction("Create", defaultName);
                createPackage.actionClicked += displayName =>
                {
                    createPackage.Hide();
                    var packagePath = PackageCreator.CreatePackage("Packages/" + displayName);
                    PackageManagerWindowAnalytics.SendEvent("createPackage");
                    AssetDatabase.Refresh();
                    EditorApplication.delayCall += () =>
                    {
                        var path = Path.Combine(packagePath, "package.json");
                        var o    = AssetDatabase.LoadMainAssetAtPath(path);
                        if (o != null)
                        {
                            UnityEditor.Selection.activeObject = o;
                        }

                        PackageManagerWindow.SelectPackageAndFilter(displayName, PackageFilterTab.InDevelopment, true);
                    };
                };

                parent.Add(createPackage);
                createPackage.Show();
            }, a => DropdownMenuAction.Status.Normal);

            PackageManagerExtensions.ExtensionCallback(() =>
            {
                foreach (var extension in PackageManagerExtensions.MenuExtensions)
                {
                    extension.OnAddMenuCreate(addMenu.menu);
                }
            });
        }
 private void SetFilterFromMenu(PackageFilterTab filter)
 {
     SetFilter(filter);
     PackageManagerWindowAnalytics.SendEvent("changeFilter");
 }
        public void OnEnable()
        {
            this.SetAntiAliasing(4);
            if (s_Window == null)
            {
                s_Window = this;
            }
            if (s_Window != this)
            {
                return;
            }

            var windowResource = Resources.GetVisualTreeAsset("PackageManagerWindow.uxml");

            if (windowResource != null)
            {
                var root = windowResource.Instantiate();
                root.styleSheets.Add(Resources.GetStyleSheet());
                cache = new VisualElementCache(root);

                PageManager.instance.Setup();

                packageDetails.OnEnable();
                packageList.OnEnable();
                packageManagerToolbar.OnEnable();
                packageStatusbar.OnEnable();

                packageManagerToolbar.SetEnabled(!PackageDatabase.instance.isEmpty);
                packageDetails.packageToolbarContainer.SetEnabled(!PackageDatabase.instance.isEmpty);

                PageManager.instance.onRefreshOperationFinish += OnRefreshOperationFinish;
                PageManager.instance.onRefreshOperationStart  += OnRefreshOperationStart;
                PageManager.instance.onRefreshOperationError  += OnRefreshOperationError;

                PackageManagerWindowAnalytics.Setup();

                rootVisualElement.Add(root);
                root.StretchToParentSize();

                var newTab = PackageManagerPrefs.instance.lastUsedPackageFilter ?? PackageFilterTab.All;
                PackageFiltering.instance.currentFilterTab = newTab;

                if (PageManager.instance.GetRefreshTimestamp(newTab) == 0)
                {
                    PageManager.instance.Refresh(newTab);
                }

                if (newTab != PackageFilterTab.All && PageManager.instance.GetRefreshTimestamp(PackageFilterTab.All) == 0)
                {
                    PageManager.instance.Refresh(PackageFilterTab.All);
                }

                mainContainer.leftWidth      = m_SplitPaneLeftWidth;
                mainContainer.onSizeChanged += width => { m_SplitPaneLeftWidth = width; };

                EditorApplication.focusChanged += OnFocusChanged;

                rootVisualElement.focusable = true;
                rootVisualElement.RegisterCallback <AttachToPanelEvent>(OnAttachToPanel);
                rootVisualElement.RegisterCallback <DetachFromPanelEvent>(OnDetachFromPanel);
            }
        }
Exemplo n.º 18
0
        private void RemoveClick()
        {
            var roots = PackageDatabase.instance.GetDependentVersions(displayVersion).Where(p => p.isDirectDependency && p.isInstalled).ToList();
            // Only show this message on a package if it is installed by dependency only. This allows it to still be removed from the installed list.
            var showDialog = roots.Any() && !(!displayVersion.HasTag(PackageTag.BuiltIn) && displayVersion.isDirectDependency);

            if (showDialog)
            {
                if (roots.Count > MaxDependentList)
                {
                    Debug.Log(GetDependentMessage(displayVersion, roots, int.MaxValue));
                }

                var message = GetDependentMessage(displayVersion, roots);
                var title   = displayVersion.HasTag(PackageTag.BuiltIn) ? "Cannot disable built-in package" : "Cannot remove dependent package";
                EditorUtility.DisplayDialog(title, message, "Ok");

                return;
            }

            if (displayVersion.HasTag(PackageTag.InDevelopment))
            {
                if (!EditorUtility.DisplayDialog("Unity Package Manager", "You will loose all your changes (if any) if you delete a package in development. Are you sure?", "Yes", "No"))
                {
                    return;
                }

                detailError.ClearError();
                PackageDatabase.instance.RemoveEmbedded(package);
                RefreshPackageActionButtons();

                PackageManagerWindowAnalytics.SendEvent("removeEmbedded", displayVersion.uniqueId);

                EditorApplication.delayCall += () =>
                {
                    PackageFilterTab?newFilterTab = null;
                    if (PackageFiltering.instance.currentFilterTab == PackageFilterTab.InDevelopment)
                    {
                        var hasOtherInDevelopment = PackageDatabase.instance.allPackages.Any(p =>
                        {
                            var installed = p.installedVersion;
                            return(installed != null && installed.HasTag(PackageTag.InDevelopment) && p.uniqueId != package.uniqueId);
                        });
                        newFilterTab = hasOtherInDevelopment ? PackageFilterTab.InDevelopment : PackageFilterTab.Local;
                    }
                    PackageManagerWindow.SelectPackageAndFilter(displayVersion.uniqueId, newFilterTab, true);
                };
                return;
            }

            var result = 0;

            if (displayVersion.HasTag(PackageTag.BuiltIn))
            {
                if (!PackageManagerPrefs.instance.skipDisableConfirmation)
                {
                    result = EditorUtility.DisplayDialogComplex("Disable Built-In Package",
                                                                "Are you sure you want to disable this built-in package?",
                                                                "Disable", "Cancel", "Never ask");
                }
            }
            else
            {
                if (!PackageManagerPrefs.instance.skipRemoveConfirmation)
                {
                    result = EditorUtility.DisplayDialogComplex("Removing Package",
                                                                "Are you sure you want to remove this package?",
                                                                "Remove", "Cancel", "Never ask");
                }
            }

            // Cancel
            if (result == 1)
            {
                return;
            }

            // Do not ask again
            if (result == 2)
            {
                if (displayVersion.HasTag(PackageTag.BuiltIn))
                {
                    PackageManagerPrefs.instance.skipDisableConfirmation = true;
                }
                else
                {
                    PackageManagerPrefs.instance.skipRemoveConfirmation = true;
                }
            }

            // Remove
            detailError.ClearError();
            PackageDatabase.instance.Uninstall(package);
            RefreshPackageActionButtons();

            PackageManagerWindowAnalytics.SendEvent("uninstall", displayVersion?.uniqueId);
        }
Exemplo n.º 19
0
        public void OnEnable()
        {
            this.SetAntiAliasing(4);
            if (instance == null)
            {
                instance = this;
            }
            if (instance != this)
            {
                return;
            }

            ResolveDependencies();

            instance.titleContent = GetLocalizedTitleContent();

            var root = m_ResourceLoader.GetTemplate("PackageManagerWindow.uxml");

            root.styleSheets.Add(m_ResourceLoader.GetMainWindowStyleSheet());
            cache = new VisualElementCache(root);

            rootVisualElement.Add(root);

            packageDetails.OnEnable();
            packageList.OnEnable();
            packageLoadBar.OnEnable();
            packageManagerToolbar.OnEnable();
            packageStatusbar.OnEnable();

            packageManagerToolbar.SetEnabled(!m_PackageDatabase.isEmpty);
            packageDetails.packageToolbarContainer.SetEnabled(!m_PackageDatabase.isEmpty);

            m_PageManager.onRefreshOperationFinish += OnRefreshOperationFinish;
            m_PageManager.onRefreshOperationStart  += OnRefreshOperationStart;
            m_PageManager.onRefreshOperationError  += OnRefreshOperationError;
            m_PackageFiltering.onFilterTabChanged  += OnFilterChanged;

            PackageManagerWindowAnalytics.Setup();

            root.StretchToParentSize();

            var newTab = m_PackageManagerPrefs.lastUsedPackageFilter ?? m_PackageManagerPrefs.defaultFilterTab;

            m_PackageFiltering.SetCurrentFilterTabWithoutNotify(newTab);
            packageManagerToolbar.SetFilter(newTab);

            if (newTab != PackageFilterTab.AssetStore)
            {
                UIUtils.SetElementDisplay(packageLoadBar, false);
            }

            if (m_PageManager.GetRefreshTimestamp(newTab) == 0)
            {
                DelayRefresh(newTab);
            }

            if (newTab != PackageFilterTab.All && m_PageManager.GetRefreshTimestamp(PackageFilterTab.All) == 0)
            {
                DelayRefresh(PackageFilterTab.All);
            }

            mainContainer.leftWidth      = m_SplitPaneLeftWidth;
            mainContainer.onSizeChanged += width => { m_SplitPaneLeftWidth = width; };

            EditorApplication.focusChanged += OnFocusChanged;
            m_Selection.onSelectionChanged += RefreshSelectedInInspectorClass;

            rootVisualElement.focusable = true;
            rootVisualElement.RegisterCallback <AttachToPanelEvent>(OnAttachToPanel);
            rootVisualElement.RegisterCallback <DetachFromPanelEvent>(OnDetachFromPanel);

            RefreshSelectedInInspectorClass();
        }