diff --git a/PROMS/DataLoader/Steps.cs b/PROMS/DataLoader/Steps.cs index 58c7200f..c52999e4 100644 --- a/PROMS/DataLoader/Steps.cs +++ b/PROMS/DataLoader/Steps.cs @@ -51,6 +51,86 @@ namespace DataLoader if (tok == -1 && Textm[Textm.Length - 1] == '\x5') tok = Textm.Length - 1; + // if this is bge, handle some special cases for bold/underline next that were not + // getting processed from regular expression, as defined in comments for each case below: + if (fmt.PlantFormat.FormatData.PrintData.SpecialCaseCalvert) + { + // get step type, and check its format for bold. BGE had data that was high5 (bolded step) + // with the bold of the next word character, but it was redundant + int stptype = Convert.ToInt32(StepType) + 1; + bool isbold = (stptype == 41); // This is hardcoded for BGE only + if (isbold && Textm.Contains("\x13")) Textm = Textm.Replace("\x13", ""); + + // BGE was not migrating a few styles on next word correctly because of the other + // characters after the hex, i.e. '[', '(', etc (see comments on specific cases). + // The regular expression that handled replacing the 'style next word' hex flag was + // not working with those. Handle those special cases here. + + int indxH = -1; + int indxHE = -1; + if (Textm.Contains("\x13")) + { + if (Textm.Contains("\x13[")) // bold before '[' + { + indxH = Textm.IndexOf("\x13["); + indxHE = Textm.IndexOf("]", indxH); + Textm = Textm.Insert(indxHE+1, @"\b0 "); + Textm = Textm.Replace("\x13[", @"\b ["); + } + if (Textm.Contains("\x13(")) // bold before '(' + { + indxH = Textm.IndexOf("\x13("); + indxHE = Textm.IndexOf(")", indxH); + Textm = Textm.Insert(indxHE+1, @"\b0 "); + Textm = Textm.Replace("\x13(", @"\b ("); + } + if (Textm.Contains("\x13{")) // bold before '{' + { + indxH = Textm.IndexOf("\x13{"); + indxHE = Textm.IndexOf(" ", indxH); + Textm = Textm.Insert(indxHE + 1, @"\b0 "); + Textm = Textm.Replace("\x13{", @"\b {"); + } + if (Textm.Contains("\x13}")) // bold before '}' + { + indxH = Textm.IndexOf("\x13}"); + indxHE = Textm.IndexOf(" ", indxH); + if (indxHE == -1) // add the bold off to end of string (no space needed at end) + Textm = Textm + @"\b0"; + else + Textm = Textm.Insert(indxHE + 1, @"\b0 "); + Textm = Textm.Replace("\x13}", @"\b }"); + } + if (Textm.Contains("\x13\xa0")) // bold before hardspace + { + indxH = Textm.IndexOf("\x13\xa0"); + indxHE = Textm.IndexOf(" ", indxH); + if (indxHE == -1) // add the bold off to end of string (no space needed at end) + Textm = Textm + @"\b0"; + else + Textm = Textm.Insert(indxHE + 1, @"\b0 "); + Textm = Textm.Replace("\x13\xa0", "\\b \xa0"); + } + if (Textm.Contains("\x13 ")) // bold before a space, switch bold & space + Textm = Textm.Replace("\x13 ", " \x13"); + } + + // BGE also had special cases for underline next word \x17 + if (Textm.Contains("\x17\\b")) // before bold on + { + indxH = Textm.IndexOf("\x17\\b"); + indxHE = Textm.IndexOf(@"\b0", indxH); + Textm = Textm.Insert(indxHE+1, @"\ulnone "); + Textm = Textm.Replace("\x17\\b", @"\ul\b"); + } + if (Textm.Contains("\x17\x13")) // before bold next word token + { + indxH = Textm.IndexOf("\x17\x13"); + indxHE = Textm.IndexOf(" ", indxH); + Textm = Textm.Insert(indxHE + 1, @"\ulnone "); + Textm = Textm.Replace("\x17\x13", "\\ul\x13"); + } + } if (tok < 0) stptext = TextConvert.ConvertText(Textm, conv_caret); else @@ -301,7 +381,7 @@ namespace DataLoader // ChgBarMessageFromEdit flag, the data after the Multiple change id token was not used in // 16bit, at least anywhere that could be found when running the program through the debugger. if (fmt.PlantFormat.FormatData.ProcData.ChangeBarData.ChgBarMessageFromEdit && - fmt.PlantFormat.FormatData.ProcData.ChangeBarData.MultipleChangeIds) + fmt.PlantFormat.FormatData.ProcData.ChangeBarData.ChangeIds) { if ((nxttok = tkstring.IndexOf("\x2")) > -1) // Multiple Change Ids { @@ -309,7 +389,7 @@ namespace DataLoader if (tmpchgid.Length > 0) { //Console.WriteLine("Multiple Change ID: {0}", tkstring.Substring(nxttok + 1)); - ci.AddItem("Step", "MultipleChangeID", tkstring.Substring(nxttok + 1)); + ci.AddItem("Step", "ChangeID", tkstring.Substring(nxttok + 1)); recdirty = true; //recdirty |= AddContentDetail(content, STP_MULT_CHGID, tkstring.Substring(nxttok + 1)); }