private async Task ProjectUnloading(object sender, EventArgs args) { VsAppShell.Current.AssertIsOnMainThread(); _unconfiguredProject.ProjectUnloading -= ProjectUnloading; _fileWatcher.Dispose(); if (!_fileSystem.DirectoryExists(_projectDirectory)) { return; } if (_toolsSettings.AlwaysSaveHistory) { _history.TrySaveToFile(Path.Combine(_projectDirectory, DefaultRHistoryName)); } var rdataPath = Path.Combine(_projectDirectory, DefaultRDataName); var saveDefaultWorkspace = await GetSaveDefaultWorkspace(rdataPath); if (!_session.IsHostRunning) { return; } Task.Run(async() => { using (var evaluation = await _session.BeginEvaluationAsync()) { if (saveDefaultWorkspace) { await evaluation.SaveWorkspaceAsync(rdataPath); } await evaluation.SetDefaultWorkingDirectoryAsync(); } }).SilenceException <RException>().SilenceException <MessageTransportException>().DoNotWait(); }
private async Task ProjectUnloading(object sender, EventArgs args) { _coreShell.AssertIsOnMainThread(); _unconfiguredProject.ProjectRenamedOnWriter -= ProjectRenamedOnWriter; _unconfiguredProject.ProjectUnloading -= ProjectUnloading; _fileWatcher.Dispose(); if (!_coreShell.Services.FileSystem.DirectoryExists(_projectDirectory)) { return; } if (_toolsSettings.AlwaysSaveHistory) { _history.TrySaveToFile(Path.Combine(_projectDirectory, DefaultRHistoryName)); } var rdataPath = Path.Combine(_projectDirectory, DefaultRDataName); var saveDefaultWorkspace = await GetSaveDefaultWorkspace(rdataPath); if (!_session.IsHostRunning) { return; } Task.Run(async() => { if (saveDefaultWorkspace) { await _session.SaveWorkspaceAsync(rdataPath); } await _session.SetDefaultWorkingDirectoryAsync(); }).SilenceException <RException>().DoNotWait(); }
public override CommandResult Invoke(Guid group, int id, object inputArg, ref object outputArg) { var initialPath = _settings.WorkingDirectory != null?PathHelper.EnsureTrailingSlash(_settings.WorkingDirectory) : null; var file = _ui.FileDialog.ShowSaveFileDialog(Resources.HistoryFileFilter, initialPath, Resources.SaveHistoryAsTitle); if (file != null) { _history.TrySaveToFile(file); } return(CommandResult.Executed); }
public override CommandResult Invoke(Guid group, int id, object inputArg, ref object outputArg) { var initialPath = RToolsSettings.Current.WorkingDirectory != null?PathHelper.EnsureTrailingSlash(RToolsSettings.Current.WorkingDirectory) : null; var file = _appShell.BrowseForFileSave(IntPtr.Zero, Resources.HistoryFileFilter, initialPath, Resources.SaveHistoryAsTitle); if (file != null) { _history.TrySaveToFile(file); } return(CommandResult.Executed); }
private async Task ProjectUnloading(object sender, EventArgs args) { _unconfiguredProject.ProjectUnloading -= ProjectUnloading; _fileWatcher.Dispose(); if (!_session.IsHostRunning) { return; } if (!_fileSystem.DirectoryExists(_projectDirectory)) { return; } var rdataPath = Path.Combine(_projectDirectory, DefaultRDataName); var saveDefaultWorkspace = await GetSaveDefaultWorkspace(rdataPath); Task.Run(async() => { try { using (var evaluation = await _session.BeginEvaluationAsync()) { if (saveDefaultWorkspace) { await evaluation.SaveWorkspace(rdataPath); } await evaluation.SetDefaultWorkingDirectory(); } } catch (OperationCanceledException) { return; } if (saveDefaultWorkspace || _toolsSettings.AlwaysSaveHistory) { await _threadHandling.SwitchToUIThread(); _history.TrySaveToFile(Path.Combine(_projectDirectory, DefaultRHistoryName)); } }).DoNotWait(); }
private async Task ProjectUnloadingAsync(object sender, EventArgs args) { await _coreShell.SwitchToMainThreadAsync(new CancellationTokenSource(10000).Token); _unconfiguredProject.ProjectRenamedOnWriter -= ProjectRenamedOnWriter; _unconfiguredProject.ProjectUnloading -= ProjectUnloadingAsync; _workflow.RSessions.BeforeDisposed -= BeforeRSessionsDisposed; _fileWatcher.Dispose(); if (!_coreShell.FileSystem().DirectoryExists(_projectDirectory)) { return; } if (_settings.AlwaysSaveHistory) { _history.TrySaveToFile(Path.Combine(_projectDirectory, DefaultRHistoryName)); } var rdataPath = Path.Combine(_projectDirectory, DefaultRDataName); var saveDefaultWorkspace = await GetSaveDefaultWorkspace(rdataPath); if (!_session.IsHostRunning) { return; } Task.Run(async() => { if (saveDefaultWorkspace) { await _session.SaveWorkspaceAsync(rdataPath); } await _session.SetDefaultWorkingDirectoryAsync(); }).SilenceException <RException>().DoNotWait(); }