Exemplo n.º 1
0
        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();
        }
Exemplo n.º 2
0
        /// <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);
        }
Exemplo n.º 3
0
        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);
        }
Exemplo n.º 4
0
        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();
        }
Exemplo n.º 5
0
        /// <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);
        }