174 lines
5.8 KiB
C#
174 lines
5.8 KiB
C#
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 != "<NO TITLE>" || _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;
|
|
}
|
|
}
|
|
}
|
|
}
|