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; }
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; }
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; }
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; }
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); } }
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; }
private async void OnInterpretersChanged(object sender, EventArgs e) { await Dispatcher.InvokeAsync(() => { Interpreters.Merge( InterpreterView.GetInterpreters(_project.Site, _project), InterpreterView.EqualityComparer, InterpreterView.Comparer ); }); }
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(); }
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 ); }
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; } }