Exemple #1
0
        private static void FillInlines(TextBlock textBlock, InlineCollection prefixInlines, InlineCollection mainInlines)
        {
            var textBlockMain   = new TextBlock();
            var textBlockPrefix = new TextBlock();

            if (prefixInlines == null || prefixInlines.Count <= 0 || mainInlines == null || mainInlines.Count <= 0)
            {
                foreach (Inline inline in textBlock.Inlines.ToList())
                {
                    var inlineKind = (inline.Tag as string);
                    switch (inlineKind)
                    {
                    case "main":
                        if (mainInlines == null || mainInlines.Count <= 0)
                        {
                            textBlockMain.Inlines.Add(inline);
                        }
                        break;

                    case "prefix":
                        if (prefixInlines == null || prefixInlines.Count <= 0)
                        {
                            textBlockPrefix.Inlines.Add(inline);
                        }
                        break;
                    }
                }
            }

            textBlock.Inlines.Clear();

            if (prefixInlines != null && prefixInlines.Count > 0)
            {
                foreach (Inline inline in prefixInlines.ToList())
                {
                    inline.Tag = "prefix";
                    textBlock.Inlines.Add(inline);
                }
            }
            else
            {
                textBlock.Inlines.AddRange(textBlockPrefix.Inlines.ToList());
            }

            if (mainInlines != null && mainInlines.Count > 0)
            {
                foreach (Inline inline in mainInlines.ToList())
                {
                    inline.Tag = "main";
                    textBlock.Inlines.Add(inline);
                }
            }
            else
            {
                textBlock.Inlines.AddRange(textBlockMain.Inlines.ToList());
            }
        }
Exemple #2
0
        private void buttonReport_Click(object sender, RoutedEventArgs e)
        {
            StringBuilder sb = new StringBuilder();

            // TextPointer firstVisibleChar = MEFiles[0].textBox.GetPositionFromPoint(new Point(0, 0), true);
            // int pos = firstVisibleChar.DocumentStart.GetOffsetToPosition(firstVisibleChar);
            int caretPos = Util.Rtb_GetCaretPos(editItems[0].textBox);

            sb.Append(String.Format("\npos={0}", caretPos));

            // TextPointer caretPos = MEFiles[0].textBox.CaretPosition;
            // TextPointer lineStartPos = caretPos.GetLineStartPosition(0);
            // int caretColumnPos = Math.Max(lineStartPos.GetOffsetToPosition(caretPos) - 1, 0);
            int caretColumnPos = Util.Rtb_GetCaretColumnPos(editItems[0].textBox);

            sb.Append(String.Format("\ncaretColumnPos={0}", caretColumnPos));

            // TextPointer caretLineStart = caretPos.GetLineStartPosition(0);
            // // caretPos.get
            // TextPointer pp = MEFiles[0].textBox.Document.ContentStart.GetLineStartPosition(0);
            // int caretLinePos = 1;
            // while (true)
            // {
            //     if (caretLineStart.CompareTo(pp) < 0)
            //     {
            //         break;
            //     }
            //     int result;
            //     pp = pp.GetLineStartPosition(1, out result);
            //     if (result == 0)
            //     {
            //         break;
            //     }
            //     caretLinePos++;
            // }
            int caretLinePos = Util.Rtb_GetCaretLinePos(editItems[0].textBox);

            sb.Append(String.Format("\ncaretLinePos={0}", caretLinePos));

            // string lineText = new TextRange(caretPos.GetLineStartPosition(0), caretPos.GetLineStartPosition(1)).Text;
            string lineText = Util.Rtb_GetCaretLineText(editItems[0].textBox);

            sb.Append(String.Format("\nlineText=\"{0}\"", lineText.Trim()));

            sb.Append("\n");
            BlockCollection bc = editItems[0].textBox.Document.Blocks;
            List <Block>    bs = bc.ToList();

            foreach (Block b in bs)
            {
                sb.Append("\nBlock/Paragraph");
                Paragraph        p    = b as Paragraph;
                InlineCollection ic   = p.Inlines;
                List <Inline>    inls = ic.ToList();
                foreach (Inline inl in inls)
                {
                    sb.Append("\n    Inline/Run");
                    Run r = inl as Run;
                    if (r == null)
                    {
                        Bold bld = inl as Bold;
                        if (bld == null)
                        {
                            throw new Exception(String.Format("buttonReport_Click: Bold=null"));
                        }
                        else
                        {
                            if (bld.Inlines.ToList().Count != 1)
                            {
                                throw new Exception(String.Format("buttonReport_Click: bld.Inlines.ToList().Count != 1"));
                            }
                            foreach (Inline inl2 in bld.Inlines.ToList())
                            {
                                sb.Append("\n        Inline/Bold/Run");
                                Run rr = inl2 as Run;
                                if (rr == null)
                                {
                                    sb.Append(String.Format("\n            Run=null"));
                                }
                                else
                                {
                                    sb.Append(String.Format("\n            Run.Text.Length={0} Run.Text={1}", rr.Text.Length, rr.Text.Replace("\r", @"\r").Replace("\n", @"\n"))); // .Replace("\n", @"\n")));
                                }
                            }
                        }
                    }
                    else
                    {
                        sb.Append(String.Format("\n        Run.Text.Length={0} Run.Text=\"{1}\"", r.Text.Length, r.Text.Replace("\r", @"\r").Replace("\n", @"\n"))); // .Replace("\n", @"\n")));
                    }
                }
            }
            string text = editItems[0].GetContent();

            sb.Append(String.Format("\n\nText.Length={0} Text=\"{1}\"", text.Length, text));
            Util.FileWrite(@"C:\temp\report.txt", sb.ToString());
        }