public ChooseSaveErrorResult ChooseSaveError(FileName fileName, string message, string dialogName, Exception exceptionGot, bool chooseLocationEnabled) { ChooseSaveErrorResult r = ChooseSaveErrorResult.Ignore; restartlabel: var dlg = new SaveErrorChooseDialog(fileName, message, dialogName, exceptionGot, chooseLocationEnabled); ((GuiFactoryServiceWpfWin)Current.Gui).ShowDialog(dlg); switch (dlg.DetailedDialogResult) { case SaveErrorChooseDialog.SaveErrorChooseDialogResult.ChooseLocation: { // choose location: var fdiag = new SaveFileDialog { OverwritePrompt = true, AddExtension = true, CheckFileExists = false, CheckPathExists = true, Title = "Choose alternate file name", FileName = fileName }; if (fdiag.ShowDialog() == true) { r = ChooseSaveErrorResult.SaveAlternative(FileName.Create(fdiag.FileName)); break; } else { goto restartlabel; } } case SaveErrorChooseDialog.SaveErrorChooseDialogResult.Retry: r = ChooseSaveErrorResult.Retry; break; default: r = ChooseSaveErrorResult.Ignore; break; } return(r); }
public FileOperationResult ObservedSave(NamedFileOperationDelegate saveFileAs, string fileName, string message, FileErrorPolicy policy) { Debug.Assert(IsValidFileName(fileName)); #if false try { fileName = System.IO.Path.GetFullPath (fileName); saveFileAs(fileName); return FileOperationResult.OK; } catch (Exception e) { switch (policy) { case FileErrorPolicy.Inform: using (SaveErrorInformDialog informDialog = new SaveErrorInformDialog(fileName, message, "Error while saving", e)) { informDialog.ShowDialog(); } break; case FileErrorPolicy.ProvideAlternative: restartlabel: using (SaveErrorChooseDialog chooseDialog = new SaveErrorChooseDialog(fileName, message, "Error while saving", e, true)) { switch (chooseDialog.ShowDialog()) { case DialogResult.OK: using (SaveFileDialog fdiag = new SaveFileDialog()) { fdiag.OverwritePrompt = true; fdiag.AddExtension = true; fdiag.CheckFileExists = false; fdiag.CheckPathExists = true; fdiag.Title = "Choose alternate file name"; fdiag.FileName = fileName; if (fdiag.ShowDialog() == DialogResult.OK) { return ObservedSave(saveFileAs, fdiag.FileName, message, policy); } else { goto restartlabel; } } case DialogResult.Retry: return ObservedSave(saveFileAs, fileName, message, policy); case DialogResult.Ignore: return FileOperationResult.Failed; } } break; } } #else try { saveFileAs(fileName); return FileOperationResult.OK; } catch (Exception e) { Console.WriteLine("Error while saving as : " + e.ToString()); } #endif return FileOperationResult.Failed; }
// Observe SAVE functions public FileOperationResult ObservedSave(FileOperationDelegate saveFile, string fileName, string message, FileErrorPolicy policy) { Debug.Assert(IsValidFileName(fileName)); #if false try { saveFile(); return FileOperationResult.OK; } catch (Exception e) { switch (policy) { case FileErrorPolicy.Inform: using (SaveErrorInformDialog informDialog = new SaveErrorInformDialog(fileName, message, "Error while saving", e)) { informDialog.ShowDialog(); } break; case FileErrorPolicy.ProvideAlternative: using (SaveErrorChooseDialog chooseDialog = new SaveErrorChooseDialog(fileName, message, "Error while saving", e, false)) { switch (chooseDialog.ShowDialog()) { case DialogResult.OK: // choose location (never happens here) break; case DialogResult.Retry: return ObservedSave(saveFile, fileName, message, policy); case DialogResult.Ignore: return FileOperationResult.Failed; } } break; } } #else try { saveFile(); return FileOperationResult.OK; } catch (Exception e) { Console.WriteLine("Error while saving : " + e.ToString()); } #endif return FileOperationResult.Failed; }