private void OptionsChanged() { // Allow time for FileSytemWatcher to fire Thread.Sleep(250); _renderOptions = new OoXmlV4Options(null); _editorOptions = new AcmeOptions(null); Debug.WriteLine($"ACME ColouredAtoms {_editorOptions.ColouredAtoms}"); Debug.WriteLine($"OoXml ColouredAtoms {_renderOptions.ColouredAtoms}"); UpdateControls(); }
/// <summary> /// Create an OpenXml Word Document from the CML /// </summary> /// <param name="cml">Input Chemistry</param> /// <param name="guid">Bookmark to create</param> /// <param name="options"></param> /// <param name="telemetry"></param> /// <param name="topLeft"></param> /// <returns></returns> public static string CreateFromCml(string cml, string guid, OoXmlV4Options options, IChem4WordTelemetry telemetry, Point topLeft) { string module = $"{_product}.{_class}.{MethodBase.GetCurrentMethod().Name}()"; CMLConverter cc = new CMLConverter(); Model model = cc.Import(cml); if (model.AllErrors.Count > 0 || model.AllWarnings.Count > 0) { if (model.AllErrors.Count > 0) { telemetry.Write(module, "Exception(Data)", string.Join(Environment.NewLine, model.AllErrors)); } if (model.AllWarnings.Count > 0) { telemetry.Write(module, "Exception(Data)", string.Join(Environment.NewLine, model.AllWarnings)); } } string fileName = string.Empty; bool canRender = model.TotalAtomsCount > 0 && (model.TotalBondsCount == 0 || model.MeanBondLength > Core.Helpers.Constants.BondLengthTolerance / 2); if (canRender) { fileName = Path.Combine(Path.GetTempPath(), $"Chem4Word-V3-{guid}.docx"); string bookmarkName = Core.Helpers.Constants.OoXmlBookmarkPrefix + guid; // Create a Wordprocessing document. using (WordprocessingDocument package = WordprocessingDocument.Create(fileName, WordprocessingDocumentType.Document)) { // Add a new main document part. MainDocumentPart mdp = package.AddMainDocumentPart(); mdp.Document = new Document(new Body()); Body docbody = package.MainDocumentPart.Document.Body; // This will be live AddPictureFromModel(docbody, model, bookmarkName, options, telemetry, topLeft); // Save changes to the main document part. package.MainDocumentPart.Document.Save(); } } return(fileName); }
public MainForm() { InitializeComponent(); _helper = new SystemHelper(); _telemetry = new TelemetryWriter(true, _helper); var location = Assembly.GetExecutingAssembly().Location; var path = Path.GetDirectoryName(location); // Use either path or null below _editorOptions = new AcmeOptions(null); _renderOptions = new OoXmlV4Options(null); }
private void ChangeOoXmlSettings_Click(object sender, EventArgs e) { OoXmlV4Settings settings = new OoXmlV4Settings(); settings.Telemetry = _telemetry; settings.TopLeft = new System.Windows.Point(Left + 24, Top + 24); var tempOptions = _renderOptions.Clone(); settings.RendererOptions = tempOptions; DialogResult dr = settings.ShowDialog(); if (dr == DialogResult.OK) { _renderOptions = tempOptions.Clone(); OptionsChanged(); } settings.Close(); }
/// <summary> /// Creates the DrawingML objects and adds them to the document /// </summary> /// <param name="docbody"></param> /// <param name="model"></param> /// <param name="bookmarkName"></param> /// <param name="options"></param> /// <param name="telemetry"></param> /// <param name="topLeft"></param> private static void AddPictureFromModel(Body docbody, Model model, string bookmarkName, OoXmlV4Options options, IChem4WordTelemetry telemetry, Point topLeft) { Paragraph paragraph1 = new Paragraph(); if (!string.IsNullOrEmpty(bookmarkName)) { BookmarkStart bookmarkstart = new BookmarkStart(); bookmarkstart.Name = bookmarkName; bookmarkstart.Id = "1"; paragraph1.Append(bookmarkstart); } OoXmlRenderer renderer = new OoXmlRenderer(model, options, telemetry, topLeft); paragraph1.Append(renderer.GenerateRun()); if (!string.IsNullOrEmpty(bookmarkName)) { BookmarkEnd bookmarkend = new BookmarkEnd(); bookmarkend.Id = "1"; paragraph1.Append(bookmarkend); } docbody.Append(paragraph1); }