This commit is contained in:
Kathy Ruffing 2008-03-19 12:44:57 +00:00
parent 30c3bf71d2
commit 0f4ce7874a
2 changed files with 111 additions and 24 deletions

View File

@ -10,7 +10,7 @@ namespace VEPROMS.CSLA.Library
public class DisplayText
{
#region Properties
private ItemInfo _itemInfo;
private ItemInfo _MyItemInfo;
// list of 'pieces of text' for this item. Pieces include symbols, ros,
// transitions & plain text.
private List<displayTextElement> _DisplayTextElementList;
@ -34,6 +34,7 @@ namespace VEPROMS.CSLA.Library
set { _textFont = value; }
}
public string OriginalText; // compare for save to see if change.
private FormatInfo _MyFormat;
#endregion
#region Constructors
/// <summary>
@ -47,7 +48,7 @@ namespace VEPROMS.CSLA.Library
/// </summary>
public DisplayText(ItemInfo itemInfo, E_EditPrintMode epMode, E_ViewMode vwMode)
{
_itemInfo = itemInfo;
_MyItemInfo = itemInfo;
DisplayTextElementList = new List<displayTextElement>();
OriginalText = itemInfo.MyContent.Text;
TextFont = GetItemFont();
@ -55,8 +56,8 @@ namespace VEPROMS.CSLA.Library
// if in print mode or view mode, do replace words. Only if in edit mode are replace
// words left as is.
FormatInfo format = itemInfo.ActiveFormat;
if (epMode == E_EditPrintMode.Print || vwMode == E_ViewMode.View) text = DoReplaceWords(text, format);
_MyFormat = itemInfo.ActiveFormat;
if (epMode == E_EditPrintMode.Print || vwMode == E_ViewMode.View) text = DoReplaceWords(text);
// as a precaution, convert any \~ to \u160?. This is for Hard spaces.. see the commentary in the
// save portion of this code for an explanation.
@ -111,7 +112,7 @@ namespace VEPROMS.CSLA.Library
string modtext = sret.ToString();
if (modtext != OriginalText)
{
Item itm = _itemInfo.Get();
Item itm = _MyItemInfo.Get();
// check for different text, i.e. text from this itm doesn't match
// original text.
if (OriginalText != itm.MyContent.Text)
@ -551,8 +552,8 @@ namespace VEPROMS.CSLA.Library
private VE_Font GetItemFont()
{
VE_Font font = null;
FormatInfo format = _itemInfo.ActiveFormat;
int type = (int)_itemInfo.MyContent.Type;
FormatInfo format = _MyItemInfo.ActiveFormat;
int type = (int)_MyItemInfo.MyContent.Type;
switch (type/10000)
{
case 0: // procedure
@ -571,7 +572,7 @@ namespace VEPROMS.CSLA.Library
}
private string InsertRtfStyles()
{
StringBuilder sb = new StringBuilder(_itemInfo.MyContent.Text);
StringBuilder sb = new StringBuilder(_MyItemInfo.MyContent.Text);
if ((TextFont.Style & E_Style.Bold)>0)
{
sb.Insert(0, "\\b ");
@ -657,12 +658,13 @@ namespace VEPROMS.CSLA.Library
{
int transitionID = Convert.ToInt32(link.Split(" ".ToCharArray())[1]);
// Find the transition
foreach (TransitionInfo ti in _itemInfo.MyContent.ContentTransitions)
foreach (TransitionInfo ti in _MyItemInfo.MyContent.ContentTransitions)
{
if (ti.TransitionID == transitionID)
{
string path = ti.PathTo.Replace(" Section PROCEDURE STEPS ", ", ");
path = path.Replace(" Section PROCEDURE STEPS", "");
//string path = ti.PathTo.Replace(" Section PROCEDURE STEPS ", ", ");
//path = path.Replace(" Section PROCEDURE STEPS", "");
string path = ti.ResolvePathTo(_MyFormat, _MyItemInfo, ItemInfo.Get(ti.ToID), ti.RangeID==0?null:ItemInfo.Get(ti.RangeID));
return path;
}
}
@ -714,23 +716,23 @@ namespace VEPROMS.CSLA.Library
string t = s.Replace(_rs.ReplaceWord, _rs.ReplaceWith);
return m.ToString().Replace(_rs.ReplaceWord, _rs.ReplaceWith);
}
private string DoReplaceWords(string Text, FormatInfo format)
private string DoReplaceWords(string Text)
{
ReplaceStrList rsl = format.PlantFormat.FormatData.SectData.ReplaceStrList;
ReplaceStrList rsl = _MyFormat.PlantFormat.FormatData.SectData.ReplaceStrList;
foreach (ReplaceStr rs in rsl)
{
if (_itemInfo.MyContent.Type < 20000) return Text; // for now only replace in steps.
if (_MyItemInfo.MyContent.Type < 20000) return Text; // for now only replace in steps.
bool replaceit = false;
// note that the order of this check is important. Check in this order...
// background here
if (_itemInfo.IsHigh && (rs.Flag & E_ReplaceFlags.High)>0) replaceit = true;
else if ((_itemInfo.IsTable || _itemInfo.IsFigure) && (rs.Flag & E_ReplaceFlags.Table) > 0) replaceit = true;
else if (_itemInfo.IsInRNO && (rs.Flag & E_ReplaceFlags.RNO) > 0) replaceit = true;
else if (_itemInfo.IsCaution && (rs.Flag & E_ReplaceFlags.Caution) > 0) replaceit = true;
else if (_itemInfo.IsNote && (rs.Flag & E_ReplaceFlags.Note) > 0) replaceit = true;
else if (_itemInfo.IsInFirstLevelSubStep && (rs.Flag & E_ReplaceFlags.Substep) > 0) replaceit = true;
else if (_itemInfo.IsAccPages & (rs.Flag & E_ReplaceFlags.Attach) > 0) replaceit = true;
if (_MyItemInfo.IsHigh && (rs.Flag & E_ReplaceFlags.High)>0) replaceit = true;
else if ((_MyItemInfo.IsTable || _MyItemInfo.IsFigure) && (rs.Flag & E_ReplaceFlags.Table) > 0) replaceit = true;
else if (_MyItemInfo.IsInRNO && (rs.Flag & E_ReplaceFlags.RNO) > 0) replaceit = true;
else if (_MyItemInfo.IsCaution && (rs.Flag & E_ReplaceFlags.Caution) > 0) replaceit = true;
else if (_MyItemInfo.IsNote && (rs.Flag & E_ReplaceFlags.Note) > 0) replaceit = true;
else if (_MyItemInfo.IsInFirstLevelSubStep && (rs.Flag & E_ReplaceFlags.Substep) > 0) replaceit = true;
else if (_MyItemInfo.IsAccPages & (rs.Flag & E_ReplaceFlags.Attach) > 0) replaceit = true;
if (replaceit)
{

View File

@ -6,11 +6,96 @@ 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 "To " + MyItemToID.Path;
get
{
return MyItemToID.Path;
}
}