Ejemplo n.º 1
0
        private static IVsSetupPackageInfo[] GetPackages(IVsSetupCompositionService setupService)
        {
            if (setupService != null)
            {
                // Get the count
                setupService.GetSetupPackagesInfo(0, null, out uint count);

                // Get the data
                var buffer = new IVsSetupPackageInfo[count];
                setupService.GetSetupPackagesInfo(count, buffer, out uint actual);

                // Extra safety in case count changed between the 2 calls
                return(buffer.Take((int)Math.Min(actual, count)).ToArray());
            }
            else
            {
                return(new IVsSetupPackageInfo[0]);
            }
        }
Ejemplo n.º 2
0
        public AddInstalledEnvironmentView(
            IServiceProvider serviceProvider,
            ProjectView[] projects,
            ProjectView selectedProject
            ) : base(serviceProvider, projects, selectedProject)
        {
            _logger               = Site.GetService(typeof(IPythonToolsLogger)) as IPythonToolsLogger;
            PageName              = Strings.AddInstalledEnvironmentTabHeader;
            AcceptCaption         = Strings.AddInstalledEnvironmentInstallButton;
            AcceptAutomationName  = Strings.AddInstalledEnvironmentInstallButtonAutomationName;
            IsAcceptShieldVisible = true;

            _setupService = Site.GetService(typeof(SVsSetupCompositionService)) as IVsSetupCompositionService;
            _retargeting  = Site.GetService(typeof(SVsTrackProjectRetargeting)) as IVsTrackProjectRetargeting2;

            var packages = GetPackages(_setupService)
                           .Where(p => p.PackageId.StartsWithOrdinal("Component.CPython"))
                           .Select(p => new SetupPackageView(
                                       p.PackageId,
                                       p.Title,
                                       p.CurrentState == (uint)__VsSetupPackageState.INSTALL_PACKAGE_PRESENT,
                                       RefreshAcceptButton
                                       ));

            AvailablePackages = new ObservableCollection <object>(packages.Where(p => !p.Installed));
            if (!AvailablePackages.Any())
            {
                AvailablePackages.Add(new SetupPackageNoneView(Strings.AddInstalledEnvironmentNoneAvailable));
            }

            InstalledPackages = new ObservableCollection <object>(packages.Where(p => p.Installed));
            if (!InstalledPackages.Any())
            {
                InstalledPackages.Add(new SetupPackageNoneView(Strings.AddInstalledEnvironmentNone));
            }

            RefreshAcceptButton();
        }