Esempio n. 1
0
        public AddVirtualEnvironmentView(
            PythonProjectNode project,
            IInterpreterOptionsService interpreterService,
            IPythonInterpreterFactory selectInterpreter
            )
        {
            _interpreterService = interpreterService;
            _project            = project;
            VirtualEnvBasePath  = _projectHome = project.ProjectHome;
            Interpreters        = new ObservableCollection <InterpreterView>(InterpreterView.GetInterpreters(project.Site, interpreterService));
            var selection = Interpreters.FirstOrDefault(v => v.Interpreter == selectInterpreter);

            if (selection == null)
            {
                selection = Interpreters.FirstOrDefault(v => v.Interpreter == interpreterService.DefaultInterpreter)
                            ?? Interpreters.LastOrDefault();
            }
            BaseInterpreter = selection;

            _interpreterService.InterpretersChanged += OnInterpretersChanged;

            var venvName = "env";

            for (int i = 1; Directory.Exists(Path.Combine(_projectHome, venvName)); ++i)
            {
                venvName = "env" + i.ToString();
            }
            VirtualEnvName = venvName;

            CanInstallRequirementsTxt  = File.Exists(CommonUtils.GetAbsoluteFilePath(_projectHome, "requirements.txt"));
            WillInstallRequirementsTxt = CanInstallRequirementsTxt;
        }
Esempio n. 2
0
        public AddInterpreterView(
            IServiceProvider serviceProvider,
            IInterpreterOptionsService interpreterService,
            IEnumerable <IPythonInterpreterFactory> selected
            )
        {
            _interpreterService = interpreterService;
            Interpreters        = new ObservableCollection <InterpreterView>(InterpreterView.GetInterpreters(serviceProvider, interpreterService));

            var map = new Dictionary <IPythonInterpreterFactory, InterpreterView>();

            foreach (var view in Interpreters)
            {
                map[view.Interpreter] = view;
                view.IsSelected       = false;
            }

            foreach (var interp in selected)
            {
                InterpreterView view;
                if (map.TryGetValue(interp, out view))
                {
                    view.IsSelected = true;
                }
                else
                {
                    view            = new InterpreterView(interp, interp.Description, false);
                    view.IsSelected = true;
                    Interpreters.Add(view);
                }
            }

            _interpreterService.InterpretersChanged += OnInterpretersChanged;
        }
Esempio n. 3
0
        public AddVirtualEnvironmentView(
            PythonProjectNode project,
            IInterpreterRegistryService interpreterService,
            string selectInterpreterId,
            string requirementsPath
            )
        {
            _interpreterService = interpreterService;
            _project            = project;
            _requirementsPath   = requirementsPath;
            VirtualEnvBasePath  = _projectHome = project.ProjectHome;
            Interpreters        = new ObservableCollection <InterpreterView>(InterpreterView.GetInterpreters(project.Site, null, true));
            var selection = Interpreters.FirstOrDefault(v => v.Id == selectInterpreterId);

            if (selection == null)
            {
                selection = Interpreters.FirstOrDefault(v => v.Id == project.ActiveInterpreter?.Configuration.Id)
                            ?? Interpreters.LastOrDefault();
            }
            BaseInterpreter = selection;

            _project.InterpreterFactoriesChanged += OnInterpretersChanged;

            var venvName = "env";

            for (int i = 1; Directory.Exists(Path.Combine(_projectHome, venvName)); ++i)
            {
                venvName = "env" + i.ToString();
            }
            VirtualEnvName = venvName;

            CanInstallRequirementsTxt  = File.Exists(_requirementsPath);
            WillInstallRequirementsTxt = CanInstallRequirementsTxt;
        }
Esempio n. 4
0
        public AddInterpreterView(
            PythonProjectNode project,
            IServiceProvider serviceProvider,
            IEnumerable <string> selectedIds
            )
        {
            _project     = project;
            Interpreters = new ObservableCollection <InterpreterView>(InterpreterView.GetInterpreters(serviceProvider, project));

            var map = new Dictionary <string, InterpreterView>();

            foreach (var view in Interpreters)
            {
                map[view.Id]    = view;
                view.IsSelected = false;
            }

            foreach (var id in selectedIds)
            {
                InterpreterView view;
                if (map.TryGetValue(id, out view))
                {
                    view.IsSelected = true;
                }
            }

            _project.InterpreterFactoriesChanged += OnInterpretersChanged;
        }
Esempio n. 5
0
        private void OnInterpretersChanged(object sender, EventArgs e)
        {
            if (!Dispatcher.CheckAccess())
            {
                Dispatcher.BeginInvoke((Action)(() => OnInterpretersChanged(sender, e)));
                return;
            }

            var existing = Interpreters.Where(iv => iv.Interpreter != null).ToDictionary(iv => iv.Interpreter);
            var def      = _project.GetInterpreterFactory();

            int i = 0;

            foreach (var interp in InterpreterView.GetInterpreters(_project.Site, _project).Select(x => x.Interpreter))
            {
                if (!existing.Remove(interp))
                {
                    Interpreters.Insert(i, new InterpreterView(interp, interp.Configuration.FullDescription, interp == def));
                }
                i += 1;
            }
            foreach (var kv in existing)
            {
                Interpreters.Remove(kv.Value);
            }
        }
Esempio n. 6
0
        public AddInterpreterView(
            PythonProjectNode project,
            IServiceProvider serviceProvider,
            IEnumerable <IPythonInterpreterFactory> selected
            )
        {
            _project     = project;
            Interpreters = new ObservableCollection <InterpreterView>(InterpreterView.GetInterpreters(serviceProvider, project));

            var map = new Dictionary <IPythonInterpreterFactory, InterpreterView>();

            foreach (var view in Interpreters)
            {
                map[view.Interpreter] = view;
                view.IsSelected       = false;
            }

            foreach (var interp in selected)
            {
                InterpreterView view;
                if (map.TryGetValue(interp, out view))
                {
                    view.IsSelected = true;
                }
                else
                {
                    view            = new InterpreterView(interp, interp.Configuration.Description, false);
                    view.IsSelected = true;
                    Interpreters.Add(view);
                }
            }

            _project.InterpreterFactoriesChanged += OnInterpretersChanged;
        }
Esempio n. 7
0
 private async void OnInterpretersChanged(object sender, EventArgs e)
 {
     await Dispatcher.InvokeAsync(() => {
         Interpreters.Merge(
             InterpreterView.GetInterpreters(_project.Site, _project),
             InterpreterView.EqualityComparer,
             InterpreterView.Comparer
             );
     });
 }
Esempio n. 8
0
 protected override void ResetProjectDependentProperties()
 {
     LocationPath               = SelectedProject?.HomeFolder ?? Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
     VirtualEnvName             = GetDefaultEnvName();
     Interpreters               = new ObservableCollection <InterpreterView>(InterpreterView.GetInterpreters(Site, null, true, InterpreterView.InterpreterFilter.ExcludeAll));
     BaseInterpreter            = Interpreters.FirstOrDefault(v => v.Id == SelectedProject?.ActiveInterpreterId) ?? Interpreters.LastOrDefault();
     RequirementsPath           = SelectedProject?.RequirementsTxtPath ?? string.Empty;
     CanInstallRequirementsTxt  = File.Exists(RequirementsPath);
     WillInstallRequirementsTxt = CanInstallRequirementsTxt && WillCreateVirtualEnv;
     SetAsCurrent               = SetAsCurrent && SelectedProject != null;
 }
 public AddExistingEnvironmentView(
     IServiceProvider serviceProvider,
     ProjectView[] projects,
     ProjectView selectedProject
     ) : base(serviceProvider, projects, selectedProject)
 {
     _logger = Site.GetService(typeof(IPythonToolsLogger)) as IPythonToolsLogger;
     _allGlobalInterpreters = InterpreterView.GetInterpreters(Site, null).ToArray();
     PageName = Strings.AddExistingEnvironmentTabHeader;
     ResetProjectDependentProperties();
 }
Esempio n. 10
0
        private void OnInterpretersChanged(object sender, EventArgs e)
        {
            if (!Dispatcher.CheckAccess())
            {
                Dispatcher.BeginInvoke((Action)(() => OnInterpretersChanged(sender, e)));
                return;
            }
            var def = _project.ActiveInterpreter;

            Interpreters.Merge(
                InterpreterView.GetInterpreters(_project.Site, _project),
                InterpreterView.EqualityComparer,
                InterpreterView.Comparer
                );
        }
Esempio n. 11
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;
            }
        }