112 lines
3.8 KiB
C#
112 lines
3.8 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Text;
|
|
|
|
namespace VEPROMS.CSLA.Library
|
|
{
|
|
public partial class TransitionInfo
|
|
{
|
|
public string ResolvePathTo(FormatInfo fi, ItemInfo itminfo, ItemInfo toitem, ItemInfo rangeitem)
|
|
{
|
|
StringBuilder retstr = new StringBuilder();
|
|
// get the format of the transition string based on this transition's index into the TransData part of
|
|
// format....
|
|
string tranformat = fi.PlantFormat.FormatData.TransData.TransTypeList[TranType].TransFormat;
|
|
E_TransUI etm = (E_TransUI)fi.PlantFormat.FormatData.TransData.TransTypeList[TranType].TransUI;
|
|
int startIndex = 0;
|
|
int index = -1;
|
|
while ((index = tranformat.IndexOf("{", startIndex))>-1)
|
|
{
|
|
// Append any non-token text that preceeds the token.
|
|
string remstptext = null;
|
|
if (index > startIndex)
|
|
{
|
|
retstr.Append(tranformat.Substring(startIndex, index-startIndex));
|
|
remstptext = tranformat.Substring(startIndex, index-startIndex);
|
|
}
|
|
int endtokn = tranformat.IndexOf("}", index);
|
|
string token = tranformat.Substring(index, endtokn - index + 1);
|
|
switch (token)
|
|
{
|
|
case "{Proc Num}":
|
|
retstr.Append(toitem.MyProcedure.MyContent.Number);
|
|
break;
|
|
case "{Proc Title}":
|
|
if (fi.PlantFormat.FormatData.XtraOptions("CapsTransitions"))
|
|
retstr.Append(toitem.MyProcedure.MyContent.Text.ToUpper());
|
|
else
|
|
retstr.Append(toitem.MyProcedure.MyContent.Text);
|
|
break;
|
|
case "{First Step}": // TODO: 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)
|
|
retstr.Append(toitem.Ordinal.ToString());
|
|
else // if the word 'step' or ',' preceeds this template & there is no step, remove it.
|
|
{
|
|
if (remstptext != null)
|
|
{
|
|
int len = remstptext.Length;
|
|
retstr.Remove(retstr.Length-len,len);
|
|
}
|
|
}
|
|
break;
|
|
case "{Last Step}": // TODO: TStepNoFlag, i.e. include step number in range items.
|
|
retstr.Append(rangeitem.Ordinal.ToString());
|
|
break;
|
|
case "{.}": // TODO: TStepNoFlag, i.e. include step number in range items.
|
|
retstr.Append("#"); // TODO: Intermediate Range.
|
|
break;
|
|
case "{Sect Hdr}":
|
|
retstr.Append(TranGetSectionHdr(toitem));
|
|
break;
|
|
case "{Sect Title}":
|
|
retstr.Append(TranGetSectionTitle(toitem));
|
|
break;
|
|
}
|
|
startIndex = endtokn+1;
|
|
if (startIndex >= tranformat.Length) break;
|
|
}
|
|
if (startIndex < tranformat.Length) retstr.Append(tranformat.Substring(startIndex, tranformat.Length - startIndex - 1));
|
|
return (retstr.ToString());
|
|
}
|
|
// 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 string TranGetSectionHdr(ItemInfo itminfo)
|
|
{
|
|
ItemInfo tmpitm = TranGetSectionItem(itminfo);
|
|
StringBuilder retstr = new StringBuilder();
|
|
retstr.Append(tmpitm.MyContent.Number);
|
|
if (tmpitm.MyContent.Number != null && tmpitm.MyContent.Number != "" && tmpitm.MyContent.Text != null && tmpitm.MyContent.Text != "") retstr.Append(" ");
|
|
retstr.Append(tmpitm.MyContent.Text);
|
|
return (retstr.ToString());
|
|
}
|
|
|
|
private string TranGetSectionTitle(ItemInfo itminfo)
|
|
{
|
|
ItemInfo tmpitm = TranGetSectionItem(itminfo);
|
|
return (tmpitm.MyContent.Text);
|
|
}
|
|
public string PathTo
|
|
{
|
|
get
|
|
{
|
|
return MyItemToID.Path;
|
|
}
|
|
}
|
|
public string PathFrom
|
|
{
|
|
get
|
|
{
|
|
//return "From " + MyContent.ContentItems[0].Path;
|
|
return MyContent.ContentItems[0].Path;
|
|
}
|
|
}
|
|
}
|
|
}
|