public void SaveAs() { try { var inputFile = _kitbasherViewModel.MainFile as PackFile; byte[] bytes = GetBytesToSave(); using (var browser = new SavePackFileWindow(_packFileService)) { browser.ViewModel.Filter.SetExtentions(new List <string>() { ".rigid_model_v2" }); if (browser.ShowDialog() == true) { var path = browser.FilePath; if (path.Contains(".rigid_model_v2") == false) { path += ".rigid_model_v2"; } var res = SaveHelper.Save(_packFileService, path, inputFile, bytes); if (res != null) { _kitbasherViewModel.MainFile = res; } } } } catch (Exception e) { _logger.Here().Error("Error saving model - " + e.ToString()); MessageBox.Show("Saving failed!"); } }
public static PackFile Save(PackFileService packFileService, string filename, PackFile packFile, byte[] updatedData = null, bool promptSaveOverride = true) { filename = filename.ToLower(); var selectedEditabelPackFile = packFileService.GetEditablePack(); if (selectedEditabelPackFile == null) { MessageBox.Show("No editable pack selected!"); return(null); } var existingFile = packFileService.FindFile(filename, selectedEditabelPackFile); if (existingFile != null && promptSaveOverride) { var fullPath = packFileService.GetFullPath(existingFile as PackFile, selectedEditabelPackFile); if (MessageBox.Show($"Replace existing file?\n{fullPath} \nin packfile:{selectedEditabelPackFile.Name}", "", MessageBoxButton.OKCancel) == MessageBoxResult.Cancel) { var extention = Path.GetExtension(fullPath); using (var browser = new SavePackFileWindow(packFileService)) { browser.ViewModel.Filter.SetExtentions(new List <string>() { extention }); if (browser.ShowDialog() == true) { var path = browser.FilePath; if (path.Contains(extention) == false) { path += extention; } filename = path; existingFile = null; } else { return(null); } } } } if (existingFile == null) { var directoryPath = Path.GetDirectoryName(filename); var justFileName = Path.GetFileName(filename); var data = updatedData; if (data == null) { data = packFile.DataSource.ReadData(); } var newPackFile = new PackFile(justFileName, new MemorySource(data)); packFileService.AddFileToPack(selectedEditabelPackFile, directoryPath, newPackFile); return(newPackFile); } else { if (updatedData == null) { throw new Exception("Trying to update an existing file, but no data is provided"); } packFileService.SaveFile(existingFile as PackFile, updatedData); return(existingFile as PackFile); } }