private void OnWorkspaceClosed(object sender, PythonWorkspaceContextEventArgs e) { _firstLoad = true; _isRefresh = false; if (_testFilesUpdateWatcher != null) { _testFilesUpdateWatcher.FileChangedEvent -= OnWorkspaceFileChanged; _testFilesUpdateWatcher.Dispose(); _testFilesUpdateWatcher = null; } if (_workspaceContextProvider.Workspace != null) { _workspaceContextProvider.Workspace.SearchPathsSettingChanged -= OnWorkspaceSettingsChange; _workspaceContextProvider.Workspace.InterpreterSettingChanged -= OnWorkspaceSettingsChange; _workspaceContextProvider.Workspace.TestSettingChanged -= OnWorkspaceSettingsChange; _workspaceContextProvider.Workspace.ActiveInterpreterChanged -= OnActiveInterpreterChanged; if (_projectMap.TryRemove(_workspaceContextProvider.Workspace.Location, out ProjectInfo projToRemove)) { projToRemove.Dispose(); } } _projectMap.Clear(); _packageManagerEventSink.InstalledPackagesChanged -= OnInstalledPackagesChanged; _packageManagerEventSink.UnwatchAll(); }
private void OnWorkspaceOpening(object sender, PythonWorkspaceContextEventArgs e) { var workspace = e.Workspace; _untrustedWorkspaceInfoBar = new UntrustedWorkspaceInfoBar(_serviceProvider, workspace); workspace.IsTrustedQueried += TriggerUntrustedWorkspaceInfoBar; }
private void OnWorkspaceInitialized(object sender, PythonWorkspaceContextEventArgs e) { var workspace = e.Workspace; _infoBarCheckTriggered = false; _packageInstallInfoBar = new PackageInstallWorkspaceInfoBar(_serviceProvider, workspace); _condaEnvCreateInfoBar = new CondaEnvCreateWorkspaceInfoBar(_serviceProvider, workspace); _virtualEnvCreateInfoBar = new VirtualEnvCreateWorkspaceInfoBar(_serviceProvider, workspace); _testFrameworkInfoBar = new TestFrameworkWorkspaceInfoBar(_serviceProvider, workspace); _pythonVersionNotSupportedInfoBar = new PythonNotSupportedInfoBar(_serviceProvider, InfoBarContexts.Workspace, () => workspace.CurrentFactory); workspace.AddActionOnClose(_packageInstallInfoBar, (obj => ((PythonInfoBar)obj).Dispose())); workspace.AddActionOnClose(_condaEnvCreateInfoBar, (obj => ((PythonInfoBar)obj).Dispose())); workspace.AddActionOnClose(_virtualEnvCreateInfoBar, (obj => ((PythonInfoBar)obj).Dispose())); workspace.AddActionOnClose(_testFrameworkInfoBar, (obj => ((PythonInfoBar)obj).Dispose())); workspace.AddActionOnClose( _pythonVersionNotSupportedInfoBar, obj => { ((PythonInfoBar)obj).Dispose(); workspace.ActiveInterpreterChanged -= TriggerPythonNotSupportedInforBar; } ); workspace.AddActionOnClose( _untrustedWorkspaceInfoBar, obj => { ((PythonInfoBar)obj).Dispose(); workspace.IsTrustedQueried -= TriggerUntrustedWorkspaceInfoBar; } ); workspace.ActiveInterpreterChanged += TriggerPythonNotSupportedInforBar; // When we see a Python file opened in the workspace, we trigger info bar checks. // Python files may have already been opened by the time this runs, so we'll check // the already loaded files first. If there are no Python file that trigger info bar // checks, then we'll register to be notified when files are opened. if (ErrorHandler.Succeeded(_docTable.GetRunningDocumentsEnum(out var pEnumRdt))) { if (ErrorHandler.Succeeded(pEnumRdt.Reset())) { uint[] cookie = new uint[1]; while (VSConstants.S_OK == pEnumRdt.Next(1, cookie, out _)) { var docFilePath = GetDocumentFilePath(cookie[0]); if (IsWorkspacePythonFile(docFilePath)) { TriggerInfoBar(); break; } } } } if (!_infoBarCheckTriggered) { if (ErrorHandler.Succeeded(_docTable.AdviseRunningDocTableEvents(this, out uint eventCookie))) { workspace.AddActionOnClose(_docTable, obj => _docTable.UnadviseRunningDocTableEvents(eventCookie)); } } }
private void OnWorkspaceLoaded(object sender, PythonWorkspaceContextEventArgs e) { if (e.Workspace == null) { return; } // guard against duplicate loaded triggers e.Workspace.SearchPathsSettingChanged -= OnWorkspaceSettingsChange; e.Workspace.InterpreterSettingChanged -= OnWorkspaceSettingsChange; e.Workspace.TestSettingChanged -= OnWorkspaceSettingsChange; e.Workspace.SearchPathsSettingChanged += OnWorkspaceSettingsChange; e.Workspace.InterpreterSettingChanged += OnWorkspaceSettingsChange; e.Workspace.TestSettingChanged += OnWorkspaceSettingsChange; }
private void OnWorkspaceChanged(object sender, PythonWorkspaceContextEventArgs e) { EvaluatorsChanged?.Invoke(this, EventArgs.Empty); }
private void OnWorkspaceClosing(object sender, PythonWorkspaceContextEventArgs e) { _site.GetUIThread().Invoke(() => { CloseAnalyzer(e.Workspace); }); }