internal EnvironmentView( IInterpreterOptionsService service, IInterpreterRegistryService registry, IPythonInterpreterFactory factory, Redirector redirector ) { if (service == null) { throw new ArgumentNullException(nameof(service)); } if (registry == null) { throw new ArgumentNullException(nameof(registry)); } if (factory == null) { throw new ArgumentNullException(nameof(factory)); } if (factory.Configuration == null) { throw new ArgumentException("factory must include a configuration"); } _service = service; _registry = registry; Factory = factory; Configuration = Factory.Configuration; LocalizedDisplayName = Configuration.Description; IsBroken = !Configuration.IsRunnable(); LocalizedAutomationName = !IsBroken ? LocalizedDisplayName : String.Format(Resources.BrokenEnvironmentAutomationNameFormat, LocalizedDisplayName); BrokenEnvironmentHelpUrl = "https://go.microsoft.com/fwlink/?linkid=863373"; if (_service.IsConfigurable(Factory.Configuration.Id)) { IsConfigurable = true; } Description = Factory.Configuration.Description; IsDefault = (_service != null && _service.DefaultInterpreterId == Configuration.Id); PrefixPath = Factory.Configuration.GetPrefixPath(); InterpreterPath = Factory.Configuration.InterpreterPath; WindowsInterpreterPath = Factory.Configuration.GetWindowsInterpreterPath(); Extensions = new ObservableCollection <object>(); Extensions.Add(new EnvironmentPathsExtensionProvider()); if (IsConfigurable) { Extensions.Add(new ConfigurationExtensionProvider(_service, alwaysCreateNew: false)); } CanBeDefault = Factory.CanBeDefault(); CanBeDeleted = Factory.CanBeDeleted(); Company = _registry.GetProperty(Factory.Configuration.Id, CompanyKey) as string ?? ""; SupportUrl = _registry.GetProperty(Factory.Configuration.Id, SupportUrlKey) as string ?? ""; LocalizedHelpText = Company; }