예제 #1
0
        public void SelectInterpreter(IPythonInterpreterFactory selection)
        {
            if (selection == null)
            {
                return;
            }

            if (!Dispatcher.CheckAccess())
            {
                Dispatcher.BeginInvoke((Action)(() => SelectInterpreter(selection)));
                return;
            }

            var sel = Interpreters.FirstOrDefault(iv => iv.Interpreter == selection);

            if (sel != null)
            {
                BaseInterpreter = sel;
            }
        }
예제 #2
0
        private void RefreshCanCreateVirtualEnv(string path)
        {
            if (!Dispatcher.CheckAccess())
            {
                Dispatcher.BeginInvoke((Action)(() => RefreshCanCreateVirtualEnv(path)));
                return;
            }

            if (Interpreters.Count == 0)
            {
                WillCreateVirtualEnv    = false;
                WillAddVirtualEnv       = false;
                CannotCreateVirtualEnv  = false;
                NoInterpretersInstalled = true;
                return;
            }

            if (!IsValidVirtualEnvPath(path) || BaseInterpreter == null)
            {
                WillCreateVirtualEnv    = false;
                WillAddVirtualEnv       = false;
                CannotCreateVirtualEnv  = true;
                NoInterpretersInstalled = false;
                return;
            }


            if (Directory.Exists(path) && Directory.EnumerateFileSystemEntries(path).Any())
            {
                WillCreateVirtualEnv = false;

                var options = VirtualEnv.FindInterpreterOptions(path, _interpreterService);
                if (options != null && File.Exists(options.InterpreterPath))
                {
                    var             baseInterp = _interpreterService.FindInterpreter(options.Id, options.LanguageVersion);
                    InterpreterView baseInterpView;
                    if (baseInterp != null &&
                        (baseInterpView = Interpreters.FirstOrDefault(iv => iv.Interpreter == baseInterp)) != null)
                    {
                        if (_lastUserSelectedBaseInterpreter == null)
                        {
                            _lastUserSelectedBaseInterpreter = BaseInterpreter;
                        }
                        BaseInterpreter   = baseInterpView;
                        WillAddVirtualEnv = true;
                    }
                    else
                    {
                        WillAddVirtualEnv = false;
                    }
                }
                else
                {
                    WillAddVirtualEnv = false;
                }
                CannotCreateVirtualEnv  = !WillAddVirtualEnv;
                NoInterpretersInstalled = false;
            }
            else
            {
                WillCreateVirtualEnv    = true;
                WillAddVirtualEnv       = false;
                CannotCreateVirtualEnv  = false;
                NoInterpretersInstalled = false;
                if (_lastUserSelectedBaseInterpreter != null)
                {
                    BaseInterpreter = _lastUserSelectedBaseInterpreter;
                    _lastUserSelectedBaseInterpreter = null;
                }
            }
        }
예제 #3
0
        private void RefreshCanCreateVirtualEnv(string path)
        {
            if (!Dispatcher.CheckAccess())
            {
                Dispatcher.BeginInvoke((Action)(() => RefreshCanCreateVirtualEnv(path)));
                return;
            }

            if (Interpreters.Count == 0)
            {
                WillCreateVirtualEnv    = false;
                WillAddVirtualEnv       = false;
                CannotCreateVirtualEnv  = false;
                NoInterpretersInstalled = true;
                return;
            }

            if (!IsValidVirtualEnvPath(path) || BaseInterpreter == null)
            {
                WillCreateVirtualEnv    = false;
                WillAddVirtualEnv       = false;
                CannotCreateVirtualEnv  = true;
                NoInterpretersInstalled = false;
                return;
            }


            if (Directory.Exists(path) && Directory.EnumerateFileSystemEntries(path).Any())
            {
                WillCreateVirtualEnv = false;

                var config = VirtualEnv.FindInterpreterConfiguration(null, path, _interpreterService);
                if (config != null && File.Exists(config.InterpreterPath))
                {
                    var baseInterpView = Interpreters.FirstOrDefault(v => v.Id == config.Id);
                    if (baseInterpView != null)
                    {
                        if (_lastUserSelectedBaseInterpreter == null)
                        {
                            _lastUserSelectedBaseInterpreter = BaseInterpreter;
                        }
                        BaseInterpreter   = baseInterpView;
                        WillAddVirtualEnv = true;
                    }
                    else
                    {
                        WillAddVirtualEnv = false;
                    }
                }
                else
                {
                    WillAddVirtualEnv = false;
                }
                CannotCreateVirtualEnv  = !WillAddVirtualEnv;
                NoInterpretersInstalled = false;
            }
            else
            {
                WillCreateVirtualEnv    = true;
                WillAddVirtualEnv       = false;
                CannotCreateVirtualEnv  = false;
                NoInterpretersInstalled = false;
                if (_lastUserSelectedBaseInterpreter != null)
                {
                    BaseInterpreter = _lastUserSelectedBaseInterpreter;
                    _lastUserSelectedBaseInterpreter = null;
                }
            }
        }