public static async Task ShowDialog( PythonProjectNode project, IInterpreterRegistryService service, string requirementsPath, bool browseForExisting = false ) { using (var view = new AddVirtualEnvironmentView(project, service, project.ActiveInterpreter.Configuration.Id, requirementsPath)) { var wnd = new AddVirtualEnvironment(project.Site, view); if (browseForExisting) { var path = project.Site.BrowseForDirectory(IntPtr.Zero, project.ProjectHome); if (string.IsNullOrEmpty(path)) { throw new OperationCanceledException(); } view.VirtualEnvName = path; view.WillInstallRequirementsTxt = false; await view.WaitForReady(); if (view.WillAddVirtualEnv) { await view.Create().HandleAllExceptions(project.Site, typeof(AddVirtualEnvironment)); return; } view.ShowBrowsePathError = true; view.BrowseOrigPrefix = VirtualEnv.GetOrigPrefixPath(path); } wnd.VirtualEnvPathTextBox.ScrollToEnd(); wnd.VirtualEnvPathTextBox.SelectAll(); wnd.VirtualEnvPathTextBox.Focus(); wnd.ShowModal(); var op = wnd._currentOperation; if (op != null) { await op; } } }
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; } } }
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; } } }