protected override void ResetProjectDependentProperties() { // When there's no project, the only action that is viable is to register a custom environment. IEnumerable <InterpreterView> available = SelectedProject != null ? InterpreterView.GetInterpreters(Site, SelectedProject?.Node).Where(view => SelectedProject.InterpreterIds.IndexOf(view.Id) < 0) : Enumerable.Empty <InterpreterView>(); var interpreters = new ObservableCollection <InterpreterView>(available); interpreters.Insert(0, CustomInterpreter); Interpreters = interpreters; if (Interpreters.Count > 1) { SelectedInterpreter = (InterpreterView)Interpreters[1]; } else { SelectedInterpreter = CustomInterpreter; } }
internal async Task UpdateInterpreterAsync(InterpreterView interpreterView) { if (!Dispatcher.CheckAccess()) { await Dispatcher.InvokeAsync(() => UpdateInterpreterAsync(interpreterView)); return; } try { await _ready.WaitAsync(); } catch (ObjectDisposedException) { return; } Progress.IsProgressDisplayed = true; IsAcceptEnabled = false; try { WillInstallPip = false; WillInstallVirtualEnv = false; WillRegisterGlobally = false; UseVEnv = false; UseVirtualEnv = false; IsAcceptShieldVisible = false; if (interpreterView == null) { return; } var interp = RegistryService.FindInterpreter(interpreterView.Id); Debug.Assert(interp != null); if (interp == null) { return; } RefreshCanCreateVirtualEnv(); if (await interp.HasModuleAsync("venv", OptionsService)) { WillInstallPip = false; WillInstallVirtualEnv = false; UseVEnv = true; UseVirtualEnv = false; } else if (await interp.HasModuleAsync("virtualenv", OptionsService)) { WillInstallPip = false; WillInstallVirtualEnv = false; UseVEnv = false; UseVirtualEnv = true; } else { WillInstallPip = await interp.HasModuleAsync("pip", OptionsService); WillInstallVirtualEnv = true; UseVEnv = false; UseVirtualEnv = true; } IsAcceptShieldVisible = (WillInstallPip || WillInstallVirtualEnv) && Site.GetPythonToolsService().GeneralOptions.ElevatePip; } finally { try { _ready.Release(); } catch (ObjectDisposedException) { } Progress.IsProgressDisplayed = false; RefreshCanCreateVirtualEnv(); } }
private void UpdateInterpreter(InterpreterView interpreterView) { UpdateInterpreterAsync(interpreterView).HandleAllExceptions(Site, GetType()).DoNotWait(); }