//--------------------------------------------------------------------- // MENU FUNCTIONS //--------------------------------------------------------------------- /// <summary> /// Helper function to save a HXM file, with lots of dumb error handling that doesn't work probably. /// </summary> private void SaveHXMFile() { if (saveHandler == null) //No save handler, so can't actually save right now { //HACK: Just call the save as handler for now... This needs restructuring SaveAsMenuItem_Click(this, new EventArgs()); return; //and don't repeat the save code when we recall ourselves. } Stream stream = saveHandler.GetStream(); if (stream == null) { MessageBox.Show(this, string.Format("Error opening save file {0}:\r\n{1}", saveHandler.GetUIName(), saveHandler.GetErrorMsg())); } else { datafile.Write(stream); if (saveHandler.FinalizeStream()) { MessageBox.Show(this, string.Format("Error writing save file {0}:\r\n{1}", saveHandler.GetUIName(), saveHandler.GetErrorMsg())); } else { transactionManager.UnsavedFlag = false; } } }
//--------------------------------------------------------------------- // MENU FUNCTIONS //--------------------------------------------------------------------- /// <summary> /// Helper function to save a HAM file, with lots of dumb error handling that doesn't work probably. /// </summary> /// <param name="filename">The filename to save the file to.</param> private void SaveHXMFile(string filename) { //Get rid of any old backups try { File.Delete(Path.ChangeExtension(filename, "BAK")); } catch (FileNotFoundException) { } catch (DirectoryNotFoundException) { } //Discover this with our face to avoid a 1/1000000 race condition catch (UnauthorizedAccessException exc) { host.AppendConsole(String.Format("Cannot delete old backup file {0}: Permission denied.\r\nMsg: {1}\r\n", Path.ChangeExtension(filename, "BAK"), exc.Message)); } catch (IOException exc) { host.AppendConsole(String.Format("Cannot delete old backup file {0}: IO error occurred.\r\nMsg: {1}\r\n", Path.ChangeExtension(filename, "BAK"), exc.Message)); } //Move the current file into the backup slot try { File.Move(filename, Path.ChangeExtension(filename, "BAK")); } catch (FileNotFoundException) { } catch (DirectoryNotFoundException) { } //Discover this with our face to avoid a 1/1000000 race condition catch (UnauthorizedAccessException exc) { host.AppendConsole(String.Format("Cannot move old HXM file {0}: Permission denied.\r\nMsg: {1}\r\n", filename, exc.Message)); } catch (IOException exc) { host.AppendConsole(String.Format("Cannot move old HXM file {0}: IO error occurred.\r\nMsg: {1}\r\n", filename, exc.Message)); } //Finally write the new file FileStream stream; try { stream = File.Open(filename, FileMode.Create); datafile.Write(stream); stream.Close(); stream.Dispose(); } catch (Exception exc) { FileUtilities.FileExceptionHandler(exc, "HXM file"); } }