From f3b7e9138f422e8cd0bb2a6da2fbf2b300213b38 Mon Sep 17 00:00:00 2001 From: Kathy Date: Fri, 16 Jan 2015 14:59:47 +0000 Subject: [PATCH] Implement code for DontResetIndentOnNewline for BGE --- PROMS/Volian.Controls.Library/StepRTB.cs | 36 +++++++++++++------- PROMS/Volian.Print.Library/Rtf2iTextSharp.cs | 12 +++++-- 2 files changed, 34 insertions(+), 14 deletions(-) diff --git a/PROMS/Volian.Controls.Library/StepRTB.cs b/PROMS/Volian.Controls.Library/StepRTB.cs index 909fb90f..4b171ce5 100644 --- a/PROMS/Volian.Controls.Library/StepRTB.cs +++ b/PROMS/Volian.Controls.Library/StepRTB.cs @@ -481,19 +481,31 @@ namespace Volian.Controls.Library // this line of code was moved before the find for the indent so that // the window gets resized if the indent changes the height, i.e. more line(s) in window. - AddEventHandlers(); - - while ((indchar = Find(indentToken, indchar, RichTextBoxFinds.None)) >= 0) + AddEventHandlers(); + if (MyItemInfo.InList(186722)) Console.WriteLine("here"); + if ((indchar = Find(indentToken, indchar, RichTextBoxFinds.None)) >= 0) { - Point indent = GetPositionFromCharIndex(indchar); - SelectionHangingIndent = indent.X; - // RHM 02/20/2013 - // The following line attempts to remove the indent character for display purposes. - // However, if the indent is followed immediately by an RO or Transition the - // RichTextBox will not allow the character to be removed this way and the RichTextBox - // will beep. So, to keep from going in an infintie loop, the value of indchar is incremented. - SelectedRtf = SelectedRtf.Replace(@"\'05",""); - indchar ++;// Don't so the same one twice. + int nindents = 0; + while ((indchar = Find(indentToken, indchar, RichTextBoxFinds.None)) >= 0) + { + nindents++; + Point indent = GetPositionFromCharIndex(indchar); + SelectionHangingIndent = indent.X; + + // RHM 02/20/2013 + // The following line attempts to remove the indent character for display purposes. + // However, if the indent is followed immediately by an RO or Transition the + // RichTextBox will not allow the character to be removed this way and the RichTextBox + // will beep. So, to keep from going in an infintie loop, the value of indchar is incremented. + SelectedRtf = SelectedRtf.Replace(@"\'05", ""); + indchar++;// Don't so the same one twice. + } + if (MyItemInfo != null && MyItemInfo.ActiveFormat != null + && MyItemInfo.ActiveFormat.PlantFormat.FormatData.SectData.StepSectionData.DontResetIndentOnNewline) + { + if (nindents == 1) Rtf = Rtf.Replace("\\par\r\n", @"\line "); + Rtf = Rtf.Replace(@"\line\pard", @"\line"); + } } } OrigRTF = Rtf; diff --git a/PROMS/Volian.Print.Library/Rtf2iTextSharp.cs b/PROMS/Volian.Print.Library/Rtf2iTextSharp.cs index af8c1f6e..001d3a0d 100644 --- a/PROMS/Volian.Print.Library/Rtf2iTextSharp.cs +++ b/PROMS/Volian.Print.Library/Rtf2iTextSharp.cs @@ -89,6 +89,12 @@ namespace Volian.Print.Library } public class Rtf2iTextSharp : RtfVisualVisitorBase { + private bool _HasIndent = false; + public bool HasIndent + { + get { return _HasIndent; } + set { _HasIndent = value; } + } private static bool _DoingComparison = false; public static bool DoingComparison { @@ -122,12 +128,14 @@ namespace Volian.Print.Library switch (visualBreak.BreakKind) { case RtfVisualBreakKind.Line: - _MyParagraph.Add(Chunk.NEWLINE); + Chunk ck = HasIndent ? new Chunk("".PadLeft(200)) : Chunk.NEWLINE; + _MyParagraph.Add(ck); break; case RtfVisualBreakKind.Page: break; case RtfVisualBreakKind.Paragraph: - _MyParagraph.Add(Chunk.NEWLINE); + Chunk ck1 = HasIndent ? new Chunk("".PadLeft(200)) : Chunk.NEWLINE; + _MyParagraph.Add(ck1); break; case RtfVisualBreakKind.Section: break;