private void ooxToOdf(string inputFile, string outputFile, bool showUserInterface, ConversionOptions options) { if (showUserInterface) { try { using (ConverterForm form = new ConverterForm(this.converter, inputFile, outputFile, this.resourceManager, options)) { System.Windows.Forms.DialogResult dr = form.ShowDialog(); if (form.HasLostElements) { string fidelityMsgValue = Microsoft.Win32.Registry.GetValue(this.addin.RegistryKeyUser, ConfigForm.FidelityValue, "false") as string; if (fidelityMsgValue == null || fidelityMsgValue == "false") { InfoBox infoBox = new InfoBox(this.addin, this.resourceManager, true, "FeedbackLabel", form.LostElements); infoBox.ShowDialog(); } } if (form.Exception != null) { throw form.Exception; } } } catch (OdfZipUtils.ZipCreationException zipEx) { InfoBox infoBox = new InfoBox(this.addin, this.resourceManager, false, "UnableToCreateOutputLabel", zipEx.Message ?? "UnableToCreateOutputDetail"); infoBox.ShowDialog(); } catch (OdfZipUtils.ZipException) { InfoBox infoBox = new InfoBox(this.addin, this.resourceManager, false, "UnableToCreateOutputLabel", "PossiblyEncryptedDocument"); infoBox.ShowDialog(); } catch (System.IO.IOException) { // this is meant to catch "file already accessed by another process", though there's no .NET fine-grain exception for this. // bug #1676586 Concurrent file access crashes the addin // bug #1807447 avoid display of unlocalized .NET exception message text and display localized string InfoBox infoBox = new InfoBox(this.addin, this.resourceManager, false, "UnableToCreateOutputLabel", "UnableToCreateOutputDetail"); //InfoBox infoBox = new InfoBox("UnableToCreateOutputLabel", e.Message, this.resourceManager); infoBox.ShowDialog(); } catch (Exception ex) { System.Diagnostics.Trace.WriteLine(ex.ToString()); InfoBox infoBox = new InfoBox(this.addin, this.resourceManager, false, "OdfUnexpectedError", ex.GetType() + ": " + ex.Message + " (" + ex.StackTrace + ")"); infoBox.ShowDialog(); if (File.Exists(outputFile)) { File.Delete(outputFile); } } } else { try { converter.DirectTransform = false; converter.Transform(inputFile, outputFile, options); } catch (Exception ex) { System.Diagnostics.Trace.WriteLine(ex.ToString()); if (File.Exists(outputFile)) { File.Delete(outputFile); } throw; } } }
// for backward compatibility remain parameter showUserInterface // remove this parameter once method void OdfToOox(string inputFile, string outputFile, bool showUserInterface) is no longer used. private void odfToOox(string inputFile, string outputFile, bool showUserInterface, ConversionOptions options) { if (showUserInterface) { try { // create a temporary file // call the converter using (ConverterForm form = new ConverterForm(this.converter, inputFile, outputFile, this.resourceManager, options)) { if (System.Windows.Forms.DialogResult.OK == form.ShowDialog()) { if (form.HasLostElements) { string fidelityValue = Microsoft.Win32.Registry.GetValue(this.addin.RegistryKeyUser, ConfigForm.FidelityValue, "false") as string; if (fidelityValue == null) { fidelityValue = "false"; } if (fidelityValue.Equals("false", StringComparison.InvariantCultureIgnoreCase)) { InfoBox infoBox = new InfoBox(this.addin, this.resourceManager, true, "FeedbackLabel", form.LostElements); infoBox.ShowDialog(); } } } else { if (File.Exists(outputFile)) { File.Delete(outputFile); } if (form.Exception != null) { throw form.Exception; } } } } catch (EncryptedDocumentException) { InfoBox infoBox = new InfoBox(this.addin, this.resourceManager, false, "EncryptedDocumentLabel", "EncryptedDocumentDetail"); infoBox.ShowDialog(); } catch (NotAnOdfDocumentException) { InfoBox infoBox = new InfoBox(this.addin, this.resourceManager, false, "NotAnOdfDocumentLabel", "NotAnOdfDocumentDetail"); infoBox.ShowDialog(); } catch (OdfZipUtils.ZipCreationException) { InfoBox infoBox = new InfoBox(this.addin, this.resourceManager, false, "UnableToCreateOutputLabel", "UnableToCreateOutputDetail"); infoBox.ShowDialog(); } catch (OdfZipUtils.ZipException) { InfoBox infoBox = new InfoBox(this.addin, this.resourceManager, false, "CorruptedInputFileLabel", "CorruptedInputFileDetail"); infoBox.ShowDialog(); } catch (Exception ex) { System.Diagnostics.Trace.WriteLine(ex.ToString()); if (ex.InnerException != null && ex.InnerException is System.Xml.XmlException) { // An xsl exception may embed an xml exception. In this case we have a non well formed xml document. List <string> messages = new List <string>(); messages.Add("CorruptedInputFileDetail"); messages.Add(""); messages.Add(ex.Message); messages.Add("InnerException: " + ex.InnerException.Message); InfoBox infoBox = new InfoBox(this.addin, this.resourceManager, false, "CorruptedInputFileLabel", (string[])messages.ToArray()); infoBox.ShowDialog(); } else { InfoBox infoBox = new InfoBox(this.addin, this.resourceManager, false, "OdfUnexpectedError", ex.GetType() + ": " + ex.Message + " (" + ex.StackTrace + ")"); infoBox.ShowDialog(); } if (File.Exists(outputFile)) { File.Delete(outputFile); } } } else { try { converter.DirectTransform = true; converter.Transform(inputFile, outputFile, options); } catch (Exception ex) { System.Diagnostics.Trace.WriteLine(ex.ToString()); if (File.Exists(outputFile)) { File.Delete(outputFile); } throw; } } }