From b27b0ad8bd0a17b1b52813740a5e31fc12055bd4 Mon Sep 17 00:00:00 2001 From: John Date: Thu, 18 Sep 2014 19:58:04 +0000 Subject: [PATCH] =?UTF-8?q?Added=20a=20FormattedDisplayText=20for=20use=20?= =?UTF-8?q?on=20Calvert=E2=80=99s=20Placekeepers=20Will=20now=20handle=20B?= =?UTF-8?q?old,=20Underline,=20and=20Super/Sub=20Script?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../VEPROMS.CSLA.Library/Extension/ItemExt.cs | 19 ++++++- PROMS/Volian.Print.Library/Placekeeper.cs | 57 +++++++++++++++++-- 2 files changed, 69 insertions(+), 7 deletions(-) diff --git a/PROMS/VEPROMS.CSLA.Library/Extension/ItemExt.cs b/PROMS/VEPROMS.CSLA.Library/Extension/ItemExt.cs index 4e0bbffd..497015ed 100644 --- a/PROMS/VEPROMS.CSLA.Library/Extension/ItemExt.cs +++ b/PROMS/VEPROMS.CSLA.Library/Extension/ItemExt.cs @@ -1813,6 +1813,19 @@ namespace VEPROMS.CSLA.Library return (this.IsProcedure || parent.IsApplicable(apple)) && (cfg.MasterSlave_Applicability.GetFlags().Count == 0 || cfg.MasterSlave_Applicability.GetFlags().Contains(apple)); } //end jcb added inherited applicability + public string FormattedDisplayText + { + get + { + string str = MyContent.Text; + str = Regex.Replace(str, @"\<[uU]\>", MyDocVersion.DocVersionConfig.Unit_Number); + //if (str.Contains("")) + // str = str.Replace("", MyDocVersion.DocVersionConfig.Unit_Number); + //if (str.Contains("")) + // str = str.Replace("", MyDocVersion.DocVersionConfig.Unit_Number); + return ConvertToDisplayText(str,false); + } + } public string DisplayText { get @@ -1845,9 +1858,13 @@ namespace VEPROMS.CSLA.Library //get { return ConvertToDisplayText(MyContent.Number); } } public static string ConvertToDisplayText(string txt) + { + return ConvertToDisplayText(txt, true); + } + public static string ConvertToDisplayText(string txt, bool stripRTF) { string retval = txt; - retval = StripRtfFormatting(retval); + if (stripRTF) retval = StripRtfFormatting(retval); retval = StripLinks(retval); retval = ReplaceSpecialCharacters(retval); retval = retval.Replace("\u2011", "-"); diff --git a/PROMS/Volian.Print.Library/Placekeeper.cs b/PROMS/Volian.Print.Library/Placekeeper.cs index 571a7a27..68d7e380 100644 --- a/PROMS/Volian.Print.Library/Placekeeper.cs +++ b/PROMS/Volian.Print.Library/Placekeeper.cs @@ -4,6 +4,7 @@ using System.Text; using System.Drawing; using LBWordLibrary; using VEPROMS.CSLA.Library; +using System.Text.RegularExpressions; namespace Volian.Print.Library { @@ -59,7 +60,7 @@ namespace Volian.Print.Library foreach (pkParagraph myPlacekeeper in myPlacekeepers) { if(myPlacekeepers.Count > 1) - AddSectionHeader(myPlacekeeper.MyParagraph.MyItemInfo.DisplayNumber, myPlacekeeper.MyParagraph.MyItemInfo.DisplayText); + AddSectionHeader(myPlacekeeper.MyParagraph.MyItemInfo.DisplayNumber, myPlacekeeper.MyParagraph.MyItemInfo.FormattedDisplayText); foreach (pkParagraph pgh in myPlacekeeper.MyChildren) { foreach (pkParagraph pghC in pgh.MyCautionsAndNotes) @@ -68,9 +69,9 @@ namespace Volian.Print.Library string doneStr = (sc.Step_Placekeeper.ToUpper() == "C")? "C":""; string NoteCautionTab = "NOTE: "; if (pghC.MyParagraph.MyItemInfo.IsCaution) NoteCautionTab = "CAUTION: "; - AddCautionOrNote(NoteCautionTab, pghC.MyParagraph.MyItemInfo.DisplayText, doneStr, (pghC.MyParagraph.MyItemInfo.PageNumber+1).ToString()); + AddCautionOrNote(NoteCautionTab, pghC.MyParagraph.MyItemInfo.FormattedDisplayText, doneStr, (pghC.MyParagraph.MyItemInfo.PageNumber+1).ToString()); } - AddHighLevelStep(pgh.MyParagraph.MyItemInfo.MyTab.CleanText, pgh.MyParagraph.MyItemInfo.DisplayText, pgh.MyParagraph.MyItemInfo.FormatStepType == 9 ? "C" : "", (pgh.MyParagraph.MyItemInfo.PageNumber + 1).ToString()); + AddHighLevelStep(pgh.MyParagraph.MyItemInfo.MyTab.CleanText, pgh.MyParagraph.MyItemInfo.FormattedDisplayText, pgh.MyParagraph.MyItemInfo.FormatStepType == 9 ? "C" : "", (pgh.MyParagraph.MyItemInfo.PageNumber + 1).ToString()); if (pgh.MyChildren.Count > 0) { bool conAct = false; @@ -92,7 +93,7 @@ namespace Volian.Print.Library AddNotesOrCautions(cpgh,level, ref conAct); if (!conAct) conAct = IsContinuousActionPlacekeeper(conAct, cpgh); - ContinueSubStep(cpgh.MyParagraph.MyItemInfo.DisplayText, level); + ContinueSubStep(cpgh.MyParagraph.MyItemInfo.FormattedDisplayText, level); AddChildren(cpgh, level+1, ref conAct); } } @@ -121,7 +122,7 @@ namespace Volian.Print.Library if (!_FirstLine) _WordSel.TypeParagraph(); _FirstLine = false; SetIndent(.33F + (.31F * level), -.31F); - WriteCell(NoteCautionTab + ii.DisplayText, false, false); + WriteCell(NoteCautionTab + ii.FormattedDisplayText, false, false); } public void BuildSample() { @@ -306,11 +307,55 @@ namespace Volian.Print.Library SetAlignment(LBWdParagraphAlignment.wdAlignParagraphCenter, LBWdCellVerticalAlignment.wdCellAlignVerticalBottom); WriteCell(page, false, false); } + static Regex rgx = new Regex(@"\\(b|ul|up[1-9]|dn0|up0|dn[1-9]|b0|ulnone)( |$|(?=\\))"); + private void WriteRTF(string text) + { + if (text.Contains("\\")) + Console.WriteLine("here"); + Match m = rgx.Match(text); + while (m.Success) + { + if (m.Index > 0) + _WordSel.TypeText(text.Substring(0,m.Index)); + switch (m.Groups[1].Value) + { + case "b": // bold on + _WordSel.Font.Bold = 1; + break; + case "b0": // bold off + _WordSel.Font.Bold = 0; + break; + case "ul": // underline on + _WordSel.Font.Underline = LBWdUnderline.wdUnderlineSingle; + break; + case "ulnone": // underline off + _WordSel.Font.Underline = LBWdUnderline.wdUnderlineNone; + break; + case "dn0": // superscript off + _WordSel.Font.Superscript = 0; + break; + case "up0": // subscript off + _WordSel.Font.Subscript = 0; + break; + default: + if (m.Groups[1].Value.StartsWith("dn"))// subscript on + _WordSel.Font.Subscript = 1; + else // superscript on + _WordSel.Font.Superscript = 1; + break; + + } + text = text.Substring(m.Index+m.Length); + m = rgx.Match(text); + } + _WordSel.TypeText(text); + } private void WriteCell(string text, bool bold, bool advance) { _WordSel.Font.Name = _pkFont.Family;//"Arial"; _WordSel.Font.Bold = bold ? 1 : 0; - _WordSel.TypeText(text); + //_WordSel.TypeText(text); + WriteRTF(text); if (advance) Advance(); } private void SetIndent(float left, float first)