using System; using System.Collections.Generic; using System.Text; namespace VEPROMS.CSLA.Library { public partial class TransitionInfo { private StringBuilder retstr; private FormatData _MyFormatData = null; public string ResolvePathTo(FormatInfo fi, ItemInfo itminfo, ItemInfo toitem, ItemInfo rangeitem) { retstr = new StringBuilder(); // get the format of the transition string based on this transition's index into the TransData part of // format.... _MyFormatData = fi.PlantFormat.FormatData; string tranformat = _MyFormatData.TransData.TransTypeList[TranType].TransFormat; E_TransUI etm = (E_TransUI)_MyFormatData.TransData.TransTypeList[TranType].TransUI; int startIndex = 0; int index = -1; string nontoken = null; while ((index = tranformat.IndexOf("{", startIndex))>-1) { if (index > startIndex) nontoken = tranformat.Substring(startIndex, index - startIndex); int endtokn = tranformat.IndexOf("}", index); string token = tranformat.Substring(index, endtokn - index + 1); switch (token) { case "{Proc Num}": // Coded for HLP AddTransitionProcNum(nontoken, toitem); break; case "{Proc Title}": // Coded for HLP AddTransitionProcTitle(nontoken, toitem); break; case "{First Step}": // TODO: For hlp: LowerCaseTranNumber - lower case substep numbers in transitions // If we're on a step put out the step number. ItemInfo secitm = TranGetSectionItem(toitem); if ((!((etm & E_TransUI.StepAllowNone) == E_TransUI.StepAllowNone)) || toitem.MyContent.Type > 20000) { Append(nontoken, false); Append(toitem.Ordinal.ToString(), true); } break; case "{Last Step}": // TODO: TStepNoFlag, i.e. include step number in range items. Append(nontoken, false); Append(rangeitem.Ordinal.ToString(), true); break; case "{.}": // TODO: TStepNoFlag, i.e. include step number in range items. Append(nontoken, false); Append("#", true); // TODO: Intermediate Range. break; case "{Sect Hdr}": AddTranGetSectionHdr(nontoken, toitem); break; case "{Sect Title}": AddTranGetSectionTitle(nontoken, toitem); break; } startIndex = endtokn+1; if (startIndex >= tranformat.Length) break; } if (startIndex < tranformat.Length) Append(tranformat.Substring(startIndex, tranformat.Length - startIndex - 1), false); return (retstr.ToString()); } private void Append(string str, bool doflags) { if (str == null || str == "") return; if (doflags && _MyFormatData.TransData.XchngTranSpForHard) { int indx = str.IndexOf(' '); if (indx > -1) { str.Remove(indx, 1); str.Insert(indx, @"\u160?"); } } retstr.Append(str); } private void AddTransitionProcTitle(string nontoken, ItemInfo toitem) { string parenstr = toitem.MyProcedure.MyContent.Text; StringBuilder lretstr = new StringBuilder(); // LATER: For an else - Do I need to strip underlining here? See promsnt\lib\edit\gettran.c if (parenstr != "" || _MyFormatData.ProcData.PrintNoTitle) { lretstr.Append(_MyFormatData.TransData.DelimiterForTransitionTitle); lretstr.Append(_MyFormatData.TransData.CapsTransitions ? parenstr.ToUpper() : _MyFormatData.TransData.Cap1stCharTrans ? CapFirstLetterOnly(parenstr, 0) : parenstr); lretstr.Append(_MyFormatData.TransData.DelimiterForTransitionTitle); } // LATER: if (DoSectionTransitions && GetSTepNO(TSeq1)) TransitionCat(AddCommaStep", Step")); if (nontoken != null) Append(nontoken, false); Append(lretstr.ToString(), true); } private string CapFirstLetterOnly(string retstr, int p) { string lretstr = retstr; // LATER: write code to capitalize first letter (active plants) return lretstr; } private void AddTransitionProcNum(string nontoken, ItemInfo toitem) { string retstr = toitem.MyProcedure.MyContent.Number; // LATER: start with UnitSpecific procedure number. // LATER: Format Flag TruncateProcNmAfter1stSpace (dropped plants) // LATER: Format Flag HardSpTranProcNumb (active plants) if (nontoken != null) Append(nontoken, false); Append(retstr, true); } // TODO: Section methods are not complete.... private ItemInfo TranGetSectionItem(ItemInfo itminfo) { ItemInfo tmpitm = itminfo; while (tmpitm.MyContent.Type >= 20000) tmpitm = tmpitm.MyParent; return tmpitm; } private void AddTranGetSectionHdr(string nontoken, ItemInfo itminfo) { // if this is a step section & the default section, just return if (TranGetSectionItem(itminfo).IsDefaultSection) return; StringBuilder retstr = new StringBuilder(); retstr.Append(TranGetSectionNumber(itminfo)); string txt = TranGetSectionTitle(itminfo); if (retstr.Length>0 && txt.Length>0) retstr.Append(", "); retstr.Append(txt); Append(nontoken, false); Append(retstr.ToString(), true); } private string TranGetSectionNumber(ItemInfo itminfo) { ItemInfo tmpitm = TranGetSectionItem(itminfo); return (tmpitm.MyContent.Number); } private string TranGetSectionTitle(ItemInfo itminfo) { // LATER: Cap1stSectionTitle, CapFirstLetterOnly if (_MyFormatData.TransData.UseSecTitles) { ItemInfo tmpitm = TranGetSectionItem(itminfo); return (tmpitm.MyContent.Text); } return null; } private void AddTranGetSectionTitle(string nontoken, ItemInfo itminfo) { // LATER: Cap1stSectionTitle, CapFirstLetterOnly if (_MyFormatData.TransData.UseSecTitles) { string txt = TranGetSectionTitle(itminfo); if (txt.Length>0)Append(nontoken, false); Append(txt, true); } } public string PathTo { get { return MyItemToID.Path; } } public string PathFrom { get { //return "From " + MyContent.ContentItems[0].Path; return MyContent.ContentItems[0].Path; } } } }