private void toolStripMenuItemSaveAsContiguousFile_Click(object sender, EventArgs e) { if (!HasSelectedRows) { MessageBox.Show(this, "No selection was made. Please make a selection in the file tree first.", GetDisplayedText(toolStripMenuItemSaveAsContiguousFile), MessageBoxButtons.OK, MessageBoxIcon.Exclamation, MessageBoxDefaultButton.Button1); return; } var fileDialog = new SaveFilePresenter(); fileDialog.FilterAllFiles(); fileDialog.Title = "Save As Contiguous File"; // Using the GUI, it is only possible to select one file or one or more container and codec streams Row firstSelectedRow = SelectedRows[0]; if (firstSelectedRow.Item is IInputFile) { if (SaveAsSingleFile != null) { FileInfo contiguousFile; if (fileDialog.ShowDialog(this, out contiguousFile)) { RunBackgroundTask(toolStripMenuItemSaveAsContiguousFile, "Save as " + contiguousFile.Name, p => SaveAsSingleFile(this, new FileExportEventArgs <IInputFile>(firstSelectedRow.Item as IInputFile, contiguousFile.FullName, p))); } } } else if (firstSelectedRow.Item is IFragment) { if (SaveAsContiguousFile != null) { // Fill the SaveFileDialog filter var fragment = firstSelectedRow.Item as IFragment; IDetector detector; if ((fragment != null) && (fragment.Detectors != null) && (fragment.Detectors.Count() > 0) && ((detector = fragment.Detectors.FirstOrDefault()) != null)) { string extension = detector.OutputFileExtension; fileDialog.Filter = string.Format("{0} Files (*{1})|*{2}|All Files (*.*)|*.*", detector.Name, extension, extension); } FileInfo contiguousFile; if (fileDialog.ShowDialog(this, out contiguousFile)) { RunBackgroundTask(toolStripMenuItemSaveAsContiguousFile, "Save as " + contiguousFile.Name, p => SaveAsContiguousFile(this, new FileExportEventArgs <IEnumerable <IDataPacket> >(SelectedRows.GetSelectedFragmentsInGuiOrder(), contiguousFile.FullName, p))); } } } }
/// <summary> /// Saves the current selection to a file. /// </summary> public void SaveSelectionAs(ISelection selection) { if (!HasSelectedRows) { return; } var saveFileDialog = new SaveFilePresenter(); saveFileDialog.FilterAllFiles(); saveFileDialog.Title = "Save Selection As"; IResultNode result = SelectedRows[0].Item as IResultNode; if (result != null && result.Detectors != null && result.Detectors.Count() > 0) { saveFileDialog.Filter = string.Format("{0} Files (*{1})|*{2}|All Files (*.*)|*.*", result.Detectors.First().Name, result.Detectors.First().OutputFileExtension, result.Detectors.First().OutputFileExtension); } FileInfo contiguousFile; if ((saveFileDialog.ShowDialog(this, out contiguousFile))) { try { // Saves the current selection to disk as one contiguous file IEnumerable <IDataPacket> dataPackets = Enumerable.Repeat(selection.DataPacket, 1); IList <IDetector> detectors = new List <IDetector>(); foreach (IResultNode resultNode in selection.Results) { AddDetectors(resultNode, detectors); } _fileExport.SaveAsContiguousFile(dataPackets, detectors, contiguousFile.FullName, SaveFilePresenter.ExportForensicIntegrityLog); } catch (IOException ex) { MessageBox.Show(this, string.Format("An error occurred when trying to write to file '{0}'\n{1}", contiguousFile.FullName, ex.Message), "Error writing file"); } } }