diff --git a/PROMS/Volian.Controls.Library/DisplayText.cs b/PROMS/Volian.Controls.Library/DisplayText.cs
index 8423d489..ebeb500d 100644
--- a/PROMS/Volian.Controls.Library/DisplayText.cs
+++ b/PROMS/Volian.Controls.Library/DisplayText.cs
@@ -191,6 +191,7 @@ namespace Volian.Controls.Library
{
try
{
+ FormatInfo formatInfo = _MyItemInfo.ActiveFormat;
_MyItem = _MyItemInfo.Get();
// check for different text, i.e. text from this itm doesn't match
// original text, a change occurred in database, but not from this user.
@@ -225,6 +226,10 @@ namespace Volian.Controls.Library
if (ctReplacements.Count > 0)
{
EditText = FixCtReplacements(EditText, ctReplacements);
+ // Replace Transition Text
+ foreach (ContentTransition ct in ctReplacements.Values)
+ using (TransitionInfo tran = TransitionInfo.Get(ct.TransitionID))
+ _MyItem.MyContent.FixTransitionText(tran);
_MyItem.Save();
}
if (roUsgReplacements.Count > 0)
@@ -695,7 +700,7 @@ namespace Volian.Controls.Library
{
if (ti.TransitionID == transitionID)
{
- string path = ti.ResolvePathTo(_MyFormat, _MyItemInfo, ItemInfo.Get(ti.ToID), ti.RangeID==0?null:ItemInfo.Get(ti.RangeID));
+ string path = ti.ResolvePathTo(_MyFormat, _MyItemInfo, ti.TranType, ti.MyItemToID, ti.MyItemRangeID);
return path;
}
}
@@ -746,7 +751,14 @@ namespace Volian.Controls.Library
else if (text[endComment + 3] == '\\') retlen = 3;
vte.TextAndLink = text.Substring(index, endComment - index + retlen);
rettoken = endComment + retlen;
- if (vte.Type != E_TextElementType.ReferencedObject) vte.TextAndLink = vte.TextAndLink = vte.TextAndLink.Replace("(Resolved Transition Text)", tmptxt);
+ if (vte.Type != E_TextElementType.ReferencedObject)
+ {
+ if (vte.TextAndLink.Contains("(Resolved Transition Text)"))
+ vte.TextAndLink = vte.TextAndLink.Replace("(Resolved Transition Text)", tmptxt);
+ else
+ if (vte.Text != tmptxt)
+ vte.Text = tmptxt;
+ }
DisplayTextElementList.Add(vte);
return rettoken;
}
@@ -825,8 +837,17 @@ namespace Volian.Controls.Library
}
else
{
- string pat = @"(?<=\W|^)" + rs.ReplaceWord + @"(?=\W|$)";
- Text = Regex.Replace(Text, pat, rs.ReplaceWith);
+ // If there are Regex Control Characters '\[]()' prefix them with backslash
+ string replaceWord = Regex.Replace(rs.ReplaceWord, @"\\[[\]()]", @"\$0");
+ string pat = @"(?<=\W|^)" + replaceWord + @"(?=\W|$)";
+ try
+ {
+ Text = Regex.Replace(Text, pat, rs.ReplaceWith);
+ }
+ catch (Exception ex)
+ {
+ Console.WriteLine("{0},'{1}',{2},'{3}'", _MyItemInfo.ActiveFormat.Name, replaceWord, ex.GetType().Name, ex.Message);
+ }
}
}
@@ -852,8 +873,8 @@ namespace Volian.Controls.Library
get { return _Type; }
set { _Type = value; }
}
- private string _Text;
- public string Text
+ protected string _Text;
+ virtual public string Text
{
get { return _Text; }
set { _Text = value; }
@@ -873,6 +894,31 @@ namespace Volian.Controls.Library
get { return _TextAndLink; }
set { _TextAndLink = value; }
}
+ ///
+ /// Text - this should parse the text and return the results
+ ///
+ override public string Text
+ {
+ get
+ {
+ if (_TextAndLink != null)
+ {
+ Match m = Regex.Match(_TextAndLink, @"");
+ return m.Groups[1].ToString();
+ }
+ return _Text;
+ }
+ set
+ {
+ if (_TextAndLink != null)
+ {
+ Match m = Regex.Match(_TextAndLink, @"");
+ System.Text.RegularExpressions.Group g = m.Groups[1];
+ _TextAndLink = _TextAndLink.Substring(0, g.Index) + value + _TextAndLink.Substring(g.Index + g.Length);
+ }
+ _Text = value;
+ }
+ }
}
#endregion
diff --git a/PROMS/Volian.Controls.Library/DisplayTransition.cs b/PROMS/Volian.Controls.Library/DisplayTransition.cs
index 4f323404..25e73459 100644
--- a/PROMS/Volian.Controls.Library/DisplayTransition.cs
+++ b/PROMS/Volian.Controls.Library/DisplayTransition.cs
@@ -707,7 +707,7 @@ namespace Volian.Controls.Library
}
private void btnTranSave_Click(object sender, EventArgs e)
{
- string trantxt = "*Resolved Transition Text*";
+ string trantxt = "(Resolved Transition Text)";
string linktxt = null;
E_TransUI etm = (E_TransUI)_CurItemFrom.ActiveFormat.PlantFormat.FormatData.TransData.TransTypeList[listBoxTranFmt.SelectedIndex].TransUI;
// if must have a step, test for this first.
@@ -719,8 +719,8 @@ namespace Volian.Controls.Library
return;
}
}
- ItemInfo _tranitem1 = null;
- ItemInfo _tranitem2 = null;
+ ItemInfo toItem = null;
+ ItemInfo rangeItem = null;
if ((etm & E_TransUI.StepLast) == E_TransUI.StepLast) //range
{
if (_RangeNode1==null)
@@ -728,7 +728,7 @@ namespace Volian.Controls.Library
MessageBox.Show("Must 'Select Step' for transition 'to'");
return;
}
- _tranitem1 = (ItemInfo)_RangeNode1.VEObject;
+ toItem = (ItemInfo)_RangeNode1.VEObject;
// Get the second item in the range, based on current tree view selection.
if (_RangeNode2 == null && tvTran.SelectedNode == null)
{
@@ -736,52 +736,56 @@ namespace Volian.Controls.Library
return;
}
if (_RangeNode2 == null) _RangeNode2 = (VETreeNode)tvTran.SelectedNode;
- _tranitem2 = (ItemInfo)_RangeNode2.VEObject;
+ rangeItem = (ItemInfo)_RangeNode2.VEObject;
// Check that the two items are of the below the section type.
- if (_tranitem1.MyContent.Type < 20000 || _tranitem2.MyContent.Type < 20000)
+ if (toItem.MyContent.Type < 20000 || rangeItem.MyContent.Type < 20000)
{
MessageBox.Show("Must select two items at the step level or below, i.e. no sections, procedures, etc.");
return;
}
- linktxt = string.Format("#Link:Transition:{0} {1} {2}", listBoxTranFmt.SelectedIndex, _tranitem1.ItemID, _tranitem2.ItemID);
+ linktxt = string.Format("#Link:Transition:{0} {1} {2}", listBoxTranFmt.SelectedIndex, toItem.ItemID, rangeItem.ItemID);
}
else if ((etm & E_TransUI.StepFirst) == E_TransUI.StepFirst)
{
VETreeNode vtn = (VETreeNode)tvTran.SelectedNode;
if (vtn != null)
{
- _tranitem1 = (ItemInfo)vtn.VEObject; // is this cast valid?
- linktxt = string.Format("#Link:Transition:{0} {1}", listBoxTranFmt.SelectedIndex, _tranitem1.ItemID);
+ toItem = (ItemInfo)vtn.VEObject; // is this cast valid?
+ linktxt = string.Format("#Link:Transition:{0} {1}", listBoxTranFmt.SelectedIndex, toItem.ItemID);
}
}
- if (_tranitem1 == null && (etm & E_TransUI.SectMenuAny) == E_TransUI.SectMenuAny)
+ if (toItem == null && (etm & E_TransUI.SectMenuAny) == E_TransUI.SectMenuAny)
{
- if (tvTran.Enabled == false || _tranitem1.IsAccPages)
- _tranitem1 = (ItemInfo)cbTranSects.SelectedItem;
+ if (tvTran.Enabled == false || toItem.IsAccPages)
+ toItem = (ItemInfo)cbTranSects.SelectedItem;
else
{
VETreeNode vtn = (VETreeNode)tvTran.SelectedNode;
- _tranitem1 = (ItemInfo)vtn.VEObject;
+ toItem = (ItemInfo)vtn.VEObject;
}
- if (_tranitem1==null)
+ if (toItem==null)
{
MessageBox.Show("Must 'Select Section' or 'Select Step' for transition 'to'");
return;
}
- linktxt = string.Format("#Link:Transition:{0} {1}", listBoxTranFmt.SelectedIndex, _tranitem1.ItemID);
+ linktxt = string.Format("#Link:Transition:{0} {1}", listBoxTranFmt.SelectedIndex, toItem.ItemID);
}
- if (_tranitem1 == null && (((etm & E_TransUI.ProcCur) == E_TransUI.ProcCur) || ((etm & E_TransUI.ProcMenu) == E_TransUI.ProcMenu)))
+ if (toItem == null && (((etm & E_TransUI.ProcCur) == E_TransUI.ProcCur) || ((etm & E_TransUI.ProcMenu) == E_TransUI.ProcMenu)))
{
- _tranitem1 = (ItemInfo)cbTranProcs.SelectedItem;
- if (_tranitem1 == null)
+ toItem = (ItemInfo)cbTranProcs.SelectedItem;
+ if (toItem == null)
{
MessageBox.Show("Must select an item for transition 'to'");
return;
}
- linktxt = string.Format("#Link:Transition:{0} {1}", listBoxTranFmt.SelectedIndex, _tranitem1.ItemID);
+ linktxt = string.Format("#Link:Transition:{0} {1}", listBoxTranFmt.SelectedIndex, toItem.ItemID);
}
+ // Can I build the text right now?
+ trantxt = TransitionText.GetResolvedText(_MyRTB.MyItemInfo, listBoxTranFmt.SelectedIndex,toItem,rangeItem ?? toItem);
_MyRTB.InsertTran(trantxt, linktxt);
+ _MyRTB.Select(_MyRTB.SelectionStart + trantxt.Length + linktxt.Length,0);
+ _MyRTB.Focus();
}
#endregion
#region VariousSupportMethods