Пример #1
0
        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;
            }
        }
Пример #2
0
        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();
            }
        }
Пример #3
0
 private void UpdateInterpreter(InterpreterView interpreterView)
 {
     UpdateInterpreterAsync(interpreterView).HandleAllExceptions(Site, GetType()).DoNotWait();
 }