Added support to save reference objects derived from word documents to support Westinghouse
This commit is contained in:
parent
dd6285f4a4
commit
bec2a177a5
@ -58,6 +58,8 @@ namespace Volian.Controls.Library
|
|||||||
MyStepRTB = null;
|
MyStepRTB = null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
// added jcb 20121221 to support set ro from word doc
|
||||||
|
private ROFSTLookup MyLookup;
|
||||||
private DocVersionInfo _MyDVI;
|
private DocVersionInfo _MyDVI;
|
||||||
public DocVersionInfo MyDVI
|
public DocVersionInfo MyDVI
|
||||||
{
|
{
|
||||||
@ -69,6 +71,8 @@ namespace Volian.Controls.Library
|
|||||||
ItemInfo procInfo = _MyEditItem.MyItemInfo.MyProcedure as ItemInfo;
|
ItemInfo procInfo = _MyEditItem.MyItemInfo.MyProcedure as ItemInfo;
|
||||||
if (procInfo == null) return null;
|
if (procInfo == null) return null;
|
||||||
_MyDVI = procInfo.ActiveParent as DocVersionInfo;
|
_MyDVI = procInfo.ActiveParent as DocVersionInfo;
|
||||||
|
// added jcb 20121221 to support set ro from word doc
|
||||||
|
MyLookup = _MyDVI.DocVersionAssociations[0].MyROFst.ROFSTLookup;
|
||||||
return _MyDVI;
|
return _MyDVI;
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
@ -89,10 +93,226 @@ namespace Volian.Controls.Library
|
|||||||
{
|
{
|
||||||
_ContextMenuBar.SetContextMenuEx(_MyStepRTB, null);
|
_ContextMenuBar.SetContextMenuEx(_MyStepRTB, null);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#region Save ROs from Word Document jcb 20121221
|
||||||
|
private string MyLookupData;
|
||||||
|
private Dictionary<string, string> MyAvailableROs;
|
||||||
public void SetContextMenu()
|
public void SetContextMenu()
|
||||||
{
|
{
|
||||||
|
#region set up save ro menu jcb 20121221
|
||||||
|
MyAvailableROs = new Dictionary<string, string>();
|
||||||
|
DevComponents.DotNetBar.BaseItem btnSaveRO = null;
|
||||||
|
if (!btnCMRtfEdit.SubItems.Contains("btnSaveRO"))
|
||||||
|
{
|
||||||
|
btnSaveRO = new DevComponents.DotNetBar.ButtonItem("btnSaveRO", "Save RO");
|
||||||
|
btnSaveRO.Visible = false;
|
||||||
|
btnCMRtfEdit.SubItems.Add(btnSaveRO);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
btnSaveRO = btnCMRtfEdit.SubItems["btnSaveRO"];
|
||||||
|
if (Clipboard.ContainsData(System.Windows.Forms.DataFormats.Text))
|
||||||
|
{
|
||||||
|
MyLookupData = Clipboard.GetData(System.Windows.Forms.DataFormats.Text).ToString();
|
||||||
|
if (MyLookupData.StartsWith("<STP") || MyLookupData.StartsWith("<MEL") || MyLookupData.StartsWith("<ARP"))
|
||||||
|
{
|
||||||
|
if (IsValidRO(MyLookupData))
|
||||||
|
{
|
||||||
|
btnSaveRO.SubItems.Clear();
|
||||||
|
btnSaveRO.Text = "Save RO";
|
||||||
|
foreach (string k in MyAvailableROs.Keys)
|
||||||
|
{
|
||||||
|
DevComponents.DotNetBar.BaseItem btn = new DevComponents.DotNetBar.ButtonItem(k, MyAvailableROs[k]);
|
||||||
|
btn.Tag = MyAvailableROs[k];
|
||||||
|
btn.Click += new EventHandler(SaveRO_Click);
|
||||||
|
btnSaveRO.SubItems.Add(btn);
|
||||||
|
if (MyStepRTB.SelectedText.Length > 0 && MyStepRTB.SelectedText.ToLower() != MyAvailableROs[k].ToLower())
|
||||||
|
{
|
||||||
|
btn = new DevComponents.DotNetBar.ButtonItem("_" + k, MyAvailableROs[k] + " with Annotation");
|
||||||
|
btn.Tag = MyAvailableROs[k];
|
||||||
|
btn.Click += new EventHandler(SaveROWithAnnotation_Click);
|
||||||
|
btnSaveRO.SubItems.Add(btn);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
btnSaveRO.Visible = true;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
btnSaveRO.SubItems.Clear();
|
||||||
|
btnSaveRO.Text = "No RO Found";
|
||||||
|
DevComponents.DotNetBar.BaseItem btn = new DevComponents.DotNetBar.ButtonItem("btnRONotFound", "Create Annotation");
|
||||||
|
btn.Tag = string.Format("Text '{0}' has no corresponding RO", MyStepRTB.SelectedText);
|
||||||
|
btn.Click += new EventHandler(NoROFound_Click);
|
||||||
|
btnSaveRO.SubItems.Add(btn);
|
||||||
|
btnSaveRO.Visible = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endregion
|
||||||
_ContextMenuBar.SetContextMenuEx(_MyStepRTB, btnCMRtfEdit);
|
_ContextMenuBar.SetContextMenuEx(_MyStepRTB, btnCMRtfEdit);
|
||||||
}
|
}
|
||||||
|
private bool IsValidRO(string data)
|
||||||
|
{
|
||||||
|
bool rv = false;
|
||||||
|
MyAvailableROs = new Dictionary<string, string>();
|
||||||
|
if (MyDVI != null)
|
||||||
|
{
|
||||||
|
#region force arp without hi or lo jcb 20121221
|
||||||
|
//if (data == "<ARP CDS-LT002-1-MED-LO1 \\s\\l\\1>")
|
||||||
|
//{
|
||||||
|
// data = data.Replace("-LO1", "");
|
||||||
|
// Console.WriteLine("force null roc");
|
||||||
|
//}
|
||||||
|
#endregion
|
||||||
|
string accPageID = GetAccPageID(data);
|
||||||
|
ROFSTLookup.rochild? roc = MyLookup.GetRoChildByAccPagID(accPageID, MyDVI.DocVersionConfig.RODefaults_setpointprefix, MyDVI.DocVersionConfig.RODefaults_graphicsprefix);
|
||||||
|
if (roc != null)
|
||||||
|
{
|
||||||
|
int index = GetROValueIndex(data);
|
||||||
|
if (index > -1)
|
||||||
|
{
|
||||||
|
MyAvailableROs.Add(((ROFSTLookup.rochild)roc).children[index].roid, ((ROFSTLookup.rochild)roc).children[index].value.Replace(@"\u160?", " "));
|
||||||
|
rv = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
//see if arp then try HI 1,2,3 and LO 1,2,3
|
||||||
|
if (accPageID.StartsWith("ARP"))
|
||||||
|
{
|
||||||
|
string tmpAccPageID = string.Empty;
|
||||||
|
//try HI1,2,3
|
||||||
|
string suffix = "-HI";
|
||||||
|
for (int i = 1; i < 4; i++)
|
||||||
|
{
|
||||||
|
tmpAccPageID = accPageID + suffix + i.ToString();
|
||||||
|
roc = MyLookup.GetRoChildByAccPagID(tmpAccPageID, MyDVI.DocVersionConfig.RODefaults_setpointprefix, MyDVI.DocVersionConfig.RODefaults_graphicsprefix);
|
||||||
|
if (roc != null)
|
||||||
|
{
|
||||||
|
int index = GetROValueIndex(data);
|
||||||
|
if (index > -1)
|
||||||
|
{
|
||||||
|
MyAvailableROs.Add(((ROFSTLookup.rochild)roc).children[index].roid, ((ROFSTLookup.rochild)roc).children[index].value.Replace(@"\u160?", " "));
|
||||||
|
rv = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//try LO1,2,3
|
||||||
|
suffix = "-LO";
|
||||||
|
for (int i = 1; i < 4; i++)
|
||||||
|
{
|
||||||
|
tmpAccPageID = accPageID + suffix + i.ToString();
|
||||||
|
roc = MyLookup.GetRoChildByAccPagID(tmpAccPageID, MyDVI.DocVersionConfig.RODefaults_setpointprefix, MyDVI.DocVersionConfig.RODefaults_graphicsprefix);
|
||||||
|
if (roc != null)
|
||||||
|
{
|
||||||
|
int index = GetROValueIndex(data);
|
||||||
|
if (index > -1)
|
||||||
|
{
|
||||||
|
MyAvailableROs.Add(((ROFSTLookup.rochild)roc).children[index].roid, ((ROFSTLookup.rochild)roc).children[index].value.Replace(@"\u160?", " "));
|
||||||
|
rv = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return rv;
|
||||||
|
}
|
||||||
|
private string GetAccPageID(string txt)
|
||||||
|
{
|
||||||
|
//<MEL FWS-MP-02B \\n \\H>
|
||||||
|
//<STP L19 \\v \\E \\H \\P \\S >
|
||||||
|
//<ARP FWS-MP-02C-TMP1 \\s \\h \\1>
|
||||||
|
txt = txt.Replace("<MEL ", "MEL-");
|
||||||
|
txt = txt.Replace("<STP ", MyDVI.DocVersionConfig.RODefaults_setpointprefix + "-");
|
||||||
|
txt = txt.Replace("<ARP ", "ARP-");
|
||||||
|
int i = txt.IndexOf(" ");
|
||||||
|
txt = txt.Substring(0, i);
|
||||||
|
return txt;
|
||||||
|
}
|
||||||
|
private int GetROValueIndex(string data)
|
||||||
|
{
|
||||||
|
int rv = -1;
|
||||||
|
if (data.StartsWith("<ARP"))
|
||||||
|
{
|
||||||
|
// arp children = \n alarm, \s value, \t type, \d description
|
||||||
|
if (data.IndexOf(@"\n") > 0)
|
||||||
|
rv = 0;
|
||||||
|
else if (data.IndexOf(@"\s") > 0)
|
||||||
|
rv = 1;
|
||||||
|
else if (data.IndexOf(@"\t") > 0)
|
||||||
|
rv = 2;
|
||||||
|
else if (data.IndexOf(@"\d") > 0)
|
||||||
|
rv = 3;
|
||||||
|
else
|
||||||
|
rv = -1;
|
||||||
|
}
|
||||||
|
if (data.StartsWith("<MEL"))
|
||||||
|
{
|
||||||
|
//mel children = \n name, \d description, \r room
|
||||||
|
if (data.IndexOf(@"\n") > 0)
|
||||||
|
rv = 0;
|
||||||
|
else if (data.IndexOf(@"\d") > 0)
|
||||||
|
rv = 1;
|
||||||
|
else if (data.IndexOf(@"\r") > 0)
|
||||||
|
rv = 2;
|
||||||
|
else
|
||||||
|
rv = -1;
|
||||||
|
}
|
||||||
|
if (data.StartsWith("<STP"))
|
||||||
|
{
|
||||||
|
//stp children = \v value, \d description, \n id
|
||||||
|
if (data.IndexOf(@"\v") > 0)
|
||||||
|
rv = 0;
|
||||||
|
else if (data.IndexOf(@"\d") > 0)
|
||||||
|
rv = 1;
|
||||||
|
else if (data.IndexOf(@"\n") > 0)
|
||||||
|
rv = 2;
|
||||||
|
else
|
||||||
|
rv = -1;
|
||||||
|
}
|
||||||
|
return rv;
|
||||||
|
}
|
||||||
|
private void SaveRO_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
DevComponents.DotNetBar.BaseItem btn = sender as DevComponents.DotNetBar.BaseItem;
|
||||||
|
string myroid = btn.Name;
|
||||||
|
string myvalue = btn.Tag.ToString();
|
||||||
|
// the roid may be 12 or 16 chars long, with the last 4 set if there is unit specific
|
||||||
|
// menuing. Pad to 12 to store in the rousage table.
|
||||||
|
string padroid = (myroid.Length <= 12) ? myroid + "0000" : myroid;
|
||||||
|
string linktxt = string.Format(@"#Link:ReferencedObject:<NewID> {0} {1}", padroid, MyLookup.DocVersionInfo.DocVersionAssociations[0].MyROFst.MyRODb.RODbID);
|
||||||
|
// Resolve symbols and scientific notation in the RO return value
|
||||||
|
string valtxt = MyLookup.GetTranslatedRoValue(padroid, MyStepRTB.MyItemInfo.ActiveFormat.PlantFormat.FormatData.SectData.ConvertCaretToDelta); //ConvertSymbolsAndStuff(selectedChld.value);
|
||||||
|
MyStepRTB.OnRoInsert(this, new StepRTBRoEventArgs(valtxt, myvalue, linktxt, padroid, MyLookup.DocVersionInfo.DocVersionAssociations[0].MyROFst.MyRODb.RODbID));
|
||||||
|
}
|
||||||
|
private void SaveROWithAnnotation_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
DevComponents.DotNetBar.BaseItem btn = sender as DevComponents.DotNetBar.BaseItem;
|
||||||
|
string myroid = btn.Name.Replace("_", "");
|
||||||
|
string myvalue = btn.Tag.ToString();
|
||||||
|
using (Item itm = MyStepRTB.MyItemInfo.Get())
|
||||||
|
{
|
||||||
|
Annotation x = Annotation.MakeAnnotation(itm, AnnotationType.GetByName("RO Value Changed"), null, string.Format("RO Value '{0}' replaces text '{1}'", myvalue, MyStepRTB.SelectedText), null);
|
||||||
|
}
|
||||||
|
// the roid may be 12 or 16 chars long, with the last 4 set if there is unit specific
|
||||||
|
// menuing. Pad to 12 to store in the rousage table.
|
||||||
|
string padroid = (myroid.Length <= 12) ? myroid + "0000" : myroid;
|
||||||
|
string linktxt = string.Format(@"#Link:ReferencedObject:<NewID> {0} {1}", padroid, MyLookup.DocVersionInfo.DocVersionAssociations[0].MyROFst.MyRODb.RODbID);
|
||||||
|
// Resolve symbols and scientific notation in the RO return value
|
||||||
|
string valtxt = MyLookup.GetTranslatedRoValue(padroid, MyStepRTB.MyItemInfo.ActiveFormat.PlantFormat.FormatData.SectData.ConvertCaretToDelta); //ConvertSymbolsAndStuff(selectedChld.value);
|
||||||
|
MyStepRTB.OnRoInsert(this, new StepRTBRoEventArgs(valtxt, myvalue, linktxt, padroid, MyLookup.DocVersionInfo.DocVersionAssociations[0].MyROFst.MyRODb.RODbID));
|
||||||
|
}
|
||||||
|
private void NoROFound_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
DevComponents.DotNetBar.BaseItem btn = sender as DevComponents.DotNetBar.BaseItem;
|
||||||
|
string myvalue = btn.Tag.ToString();
|
||||||
|
using (Item itm = MyStepRTB.MyItemInfo.Get())
|
||||||
|
{
|
||||||
|
Annotation x = Annotation.MakeAnnotation(itm, AnnotationType.GetByName("RO Missing"), null, myvalue, null);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endregion
|
||||||
|
|
||||||
public void SetGridCellContextMenu()
|
public void SetGridCellContextMenu()
|
||||||
{
|
{
|
||||||
_ContextMenuBar.SetContextMenuEx(_MyStepRTB, btnCMRtfCellEdit);
|
_ContextMenuBar.SetContextMenuEx(_MyStepRTB, btnCMRtfCellEdit);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user