diff --git a/PROMS/VEPROMS User Interface/VEPROMS_UI.csproj b/PROMS/VEPROMS User Interface/VEPROMS_UI.csproj
index 856bf9c4..eb1a7ffd 100644
--- a/PROMS/VEPROMS User Interface/VEPROMS_UI.csproj
+++ b/PROMS/VEPROMS User Interface/VEPROMS_UI.csproj
@@ -164,6 +164,9 @@
dlgCheckedOutProcedure.cs
+
+ Form
+
Form
diff --git a/PROMS/VEPROMS User Interface/dlgExportImport.cs b/PROMS/VEPROMS User Interface/dlgExportImport.cs
index 47b85a1b..e0496b3a 100644
--- a/PROMS/VEPROMS User Interface/dlgExportImport.cs
+++ b/PROMS/VEPROMS User Interface/dlgExportImport.cs
@@ -29,6 +29,7 @@ namespace VEPROMS
}
private bool _ConvertROsToTextDuringImport = false;
private bool _ConvertROsAndTransitionsToText = false; // set to true when Approval creates an Export file
+ protected bool _ExportBothConvertedandNot = false; // set to true when Electronic Procedure export
// B2016-225 notify user when Transitions and/or ROs are converted to text
private bool _DidConvertTransitionsToText = false;
@@ -64,7 +65,7 @@ namespace VEPROMS
private FolderInfo MyFolder = null;
private DocVersionInfo MyDocVersion = null;
private ProcedureInfo MyProcedure = null;
- private XmlAttribute AddAttribute(XmlDocument xd, string name, string value)
+ protected XmlAttribute AddAttribute(XmlDocument xd, string name, string value)
{
XmlAttribute xa = xd.CreateAttribute(name);
xa.InnerText = value;
@@ -2423,9 +2424,17 @@ namespace VEPROMS
if (ii.ItemAnnotationCount > 0)
foreach (AnnotationInfo ai in ii.ItemAnnotations)
ExportAnnotation(xe, ai, "annotation");
+
+ ExportEPAnnotationInfo(xe, ii);
}
- private void ExportItemAudits(XmlElement xn, ItemInfo ii)
+ protected virtual void ExportEPAnnotationInfo(XmlElement xe, ItemInfo ii)
+ {
+ //do nothing - this will be for Electronic procedures only
+ //and handled/overridden in dlgExportEP.cs
+ }
+
+ private void ExportItemAudits(XmlElement xn, ItemInfo ii)
{
if (cbxExportAudits.Checked)
{
@@ -2566,6 +2575,7 @@ namespace VEPROMS
xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "dts", ci.DTS.ToString("MM/dd/yyyy HH:mm:ss.fff")));
xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "userid", ci.UserID.ToString()));
xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "formatfilename", formatFileName));
+ if (_ExportBothConvertedandNot) xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "textwithlinks", ci.Text));
//content audits
ExportContentAudits(xe, ci);
@@ -2652,6 +2662,7 @@ namespace VEPROMS
MyWriter.WriteAttributeString("dts", ci.DTS.ToString("MM/dd/yyyy HH:mm:ss.fff"));
MyWriter.WriteAttributeString("userid", ci.UserID.ToString());
MyWriter.WriteAttributeString("formatfilename", formatFileName);
+ if (_ExportBothConvertedandNot) MyWriter.WriteAttributeString("textwithlinks", ci.Text);
if (ci.ContentTransitionCount > 0)
foreach (TransitionInfo ti in ci.ContentTransitions)
@@ -2699,7 +2710,8 @@ namespace VEPROMS
xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "config", gi.Config));
xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "dts", gi.DTS.ToString("MM/dd/yyyy HH:mm:ss.fff")));
xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "userid", gi.UserID.ToString()));
-
+ if (_ExportBothConvertedandNot) xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "datawithlinks", gi.Data));
+
//grid audits
ExportGridAudits(xe, gi);
xn.AppendChild(xe);
@@ -2758,6 +2770,7 @@ namespace VEPROMS
MyWriter.WriteAttributeString("config", gi.Config);
MyWriter.WriteAttributeString("dts", gi.DTS.ToString("MM/dd/yyyy HH:mm:ss.fff"));
MyWriter.WriteAttributeString("userid", gi.UserID.ToString());
+ if (_ExportBothConvertedandNot) MyWriter.WriteAttributeString("datawithlinks", gi.Data);
MyWriter.WriteEndElement();
}
@@ -2932,7 +2945,8 @@ namespace VEPROMS
xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "dts", di.DTS.ToString("MM/dd/yyyy HH:mm:ss.fff")));
xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "userid", di.UserID.ToString()));
xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "fileextension", di.FileExtension));
-
+ if (_ExportBothConvertedandNot) xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "doccontentwithlinks", Convert.ToBase64String(di.DocContent)));
+
//document audits
ExportDocumentAudits(xe, di);
xn.AppendChild(xe);
@@ -2998,6 +3012,7 @@ namespace VEPROMS
MyWriter.WriteAttributeString("dts", di.DTS.ToString("MM/dd/yyyy HH:mm:ss.fff"));
MyWriter.WriteAttributeString("userid", di.UserID.ToString());
MyWriter.WriteAttributeString("fileextension", di.FileExtension);
+ if (_ExportBothConvertedandNot) MyWriter.WriteAttributeString("doccontentwithlinks", Convert.ToBase64String(di.DocContent));
MyWriter.WriteEndElement();
}
diff --git a/PROMS/VEPROMS User Interface/dlgExportImportEP.cs b/PROMS/VEPROMS User Interface/dlgExportImportEP.cs
new file mode 100644
index 00000000..7918e448
--- /dev/null
+++ b/PROMS/VEPROMS User Interface/dlgExportImportEP.cs
@@ -0,0 +1,202 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Text.RegularExpressions;
+using System.Threading.Tasks;
+using System.Xml;
+using VEPROMS.CSLA.Library;
+
+namespace VEPROMS
+{
+ //C2025-024 Electronic Procedures - Phase 2 (PROMS XML output)
+ //class inherits from normal import/export form
+ //then adds additional functionality
+ public partial class dlgExportImportEP : dlgExportImport
+ {
+ private readonly AnnotationTypeInfo _AnnotationType;
+
+ private string multiseparator = ",";
+
+ private static Regex _ROAccPageTokenPattern = new Regex("[<][^<>-]+-[^<>]+[>]");
+
+ public dlgExportImportEP(string mode, FolderInfo folderInfo, frmVEPROMS myFrmVEPROMS, int annotationTypeId) : base(mode, folderInfo, myFrmVEPROMS, (E_UCFImportOptions) 0)
+ {
+ _AnnotationType = AnnotationTypeInfo.Get(annotationTypeId);
+ _ExportBothConvertedandNot = true;
+ DocReplace = new Dictionary();
+ FormClosed += OnClose;
+ Text = $"{mode} Electronic Procedure ({_AnnotationType.Name}) Dialog for {folderInfo.Name}";
+ }
+
+ public dlgExportImportEP(string mode, DocVersionInfo docVersionInfo, frmVEPROMS myFrmVEPROMS, int annotationTypeId) : base(mode, docVersionInfo, myFrmVEPROMS, (E_UCFImportOptions)0)
+ {
+ _AnnotationType = AnnotationTypeInfo.Get(annotationTypeId);
+ _ExportBothConvertedandNot = true;
+ DocReplace = new Dictionary();
+ FormClosed += OnClose;
+ Text = $"{mode} Electronic Procedure ({_AnnotationType.Name}) Dialog for {docVersionInfo.Name} of {docVersionInfo.MyFolder.Name}";
+ }
+ public dlgExportImportEP(string mode, ProcedureInfo procedureInfo, frmVEPROMS myFrmVEPROMS, int annotationTypeId) : base(mode, procedureInfo, myFrmVEPROMS, (E_UCFImportOptions)0)
+ {
+ _AnnotationType = AnnotationTypeInfo.Get(annotationTypeId);
+ _ExportBothConvertedandNot = true;
+ DocReplace = new Dictionary();
+ FormClosed += OnClose;
+ Text = $"{mode} Electronic Procedure ({_AnnotationType.Name}) Dialog for {procedureInfo.DisplayNumber}";
+ }
+
+ //Overridden function to handle export of EP data
+ protected override void ExportEPAnnotationInfo(XmlElement xe, ItemInfo ii)
+ {
+ //switch to handle customizations for different formats
+ switch (ii.ActiveFormat.PlantFormat.EPFormatFiles.Find(x => x.AnnotationTypeID == _AnnotationType.TypeID)?.Name)
+ {
+ default:
+ ExportEPAnnotationInfo_Default(xe, ii);
+ break;
+ }
+
+ }
+
+ //default export of EP Data
+ private void ExportEPAnnotationInfo_Default(XmlElement xe, ItemInfo ii)
+ {
+ //Add tab text to item
+ string steptab = Volian.Print.Library.PDFReport.BuildStepTab(ii);
+ xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "StepTab", steptab));
+
+ //get first transition in item and add it as an xml element
+ if (ii.MyContent.ContentTransitionCount > 0)
+ {
+ TransitionInfo ct = ii.MyContent.ContentTransitions[0];
+ xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "TransitionToItemID", ct.ToID.ToString()));
+ }
+
+ //export EP annotation details under an EPInfo node
+ if (ii.ItemAnnotations != null)
+ {
+ XmlElement xepinfo = xe.OwnerDocument.CreateElement("EPInfo");
+
+ EPFields myEPFields = ii.GetValidEPFields(_AnnotationType.TypeID);
+
+ ROFSTLookup lookup = ii.MyDocVersion.DocVersionAssociations[0].MyROFst.GetROFSTLookup(ii.MyDocVersion);
+
+ //For each annotation in the item that is of the current EP Annotation type
+ foreach (var EPAnnotation in ii.ItemAnnotations.Where(x => x.TypeID == _AnnotationType.TypeID))
+ {
+ var EPAnnotationConfig = new AnnotationConfig(EPAnnotation.Config);
+
+ XmlElement xepdetails = xe.OwnerDocument.CreateElement("Details");
+ //include the annotation ID for reference
+ xepdetails.Attributes.SetNamedItem(AddAttribute(xepdetails.OwnerDocument, "AnnotationID", EPAnnotation.AnnotationID.ToString()));
+
+ //loop through each EP Field - name the xml elements the EP.name
+ foreach (EPField EP in myEPFields)
+ {
+ string val = EPAnnotationConfig.GetValue("EP", EP.name);
+
+ XmlElement xindivid = xe.OwnerDocument.CreateElement(EP.name);
+
+ //need to resolve ROs ROSingle, ROMulti, in text
+ //get values
+ //should we export blank?
+ //
+ switch (EP.type.ToLower())
+ {
+ case "text":
+
+ //for text, check if any embedded ROs
+ //if none, set the xml element to the text
+ //otherwise resolve the Ros
+ MatchCollection matches = _ROAccPageTokenPattern.Matches(val);
+ if (matches.Count == 0)
+ {
+ xindivid.InnerText = val;
+ }
+ else
+ {
+ //resolve ROs
+ //text ROs will replace the AccID key in the text
+ //for binary objects like images,
+ //we will keep the AccID in the text and output the binary as a separate child
+ //XML element with the same xml name as the AccID
+ foreach (Match m in matches)
+ {
+ ROFSTLookup.rochild roc = lookup.GetROChildByAccPageID(m.Groups[1].Value);
+
+
+ if (roc.type == 8) // Exclude replacing Images since are binary - for those, add a sub item
+ {
+ XmlElement xroid = xindivid.OwnerDocument.CreateElement(m.Groups[1].Value);
+ xroid.InnerText = roc.value;
+ xindivid.AppendChild(xroid);
+ }
+ else if (!string.IsNullOrEmpty(roc.value))
+ {
+ bool convertCaretToDeltaSymbol = (ii.ActiveSection != null) && ii.ActiveSection.ActiveFormat.PlantFormat.FormatData.SectData.ConvertCaretToDelta;
+
+ string rocvalue = roc.value.Replace("`", "\xB0");
+ rocvalue = rocvalue.Replace("\xF8", "\xB0");
+ rocvalue = rocvalue.Replace("\x7F", "\x394"); //delta
+ if (convertCaretToDeltaSymbol) rocvalue = rocvalue.Replace("^", "\x394"); // delta
+ val = val.Replace($"<{m.Groups[1].Value}>", rocvalue);
+ }
+
+ }
+
+ xindivid.InnerText = val;
+ }
+ break;
+ case "rosingle":
+ //Get the output columns from the EPFormatFile
+ //set the "Item" nodes value = to those resolved items
+ //separated by multiseparator
+ XmlElement xindivid_rosingle = xindivid.OwnerDocument.CreateElement("Item");
+ xindivid_rosingle.Attributes.SetNamedItem(AddAttribute(xindivid_rosingle.OwnerDocument, "ROID", val));
+ List ro_single_tmp = EP.getROValuesList(EPAnnotation, val);
+ xindivid_rosingle.InnerText = String.Join(multiseparator, ro_single_tmp.ToArray());
+ xindivid.AppendChild(xindivid_rosingle);
+ break;
+ case "romulti":
+ //Get the output columns from the EPFormatFile
+ //create an "Item" subnode for each selected RO
+ //set the nodes value = to those resolved items
+ //separated by multiseparator
+ foreach (string ival in val.Split(multiseparator.ToCharArray()))
+ {
+ XmlElement xindivid_romulti = xindivid.OwnerDocument.CreateElement("Item");
+ xindivid_romulti.Attributes.SetNamedItem(AddAttribute(xindivid_romulti.OwnerDocument, "ROID", ival));
+ List ro_multi_tmp = EP.getROValuesList(EPAnnotation, ival);
+ xindivid_romulti.InnerText = String.Join(multiseparator, ro_multi_tmp.ToArray());
+ xindivid.AppendChild(xindivid_romulti);
+ }
+ break;
+ case "tableinput":
+ xindivid.InnerText = val;
+ break;
+ default:
+ xindivid.InnerText = val;
+ break;
+ }
+ xepdetails.AppendChild(xindivid);
+ }
+
+ xepinfo.AppendChild(xepdetails);
+ }
+
+ xe.AppendChild(xepinfo);
+ }
+
+ }
+
+ //clear objects to release memory
+ private void OnClose(object sender, EventArgs e)
+ {
+ DocReplace.Clear();
+ DocReplace = null;
+ }
+
+
+ }
+}
diff --git a/PROMS/VEPROMS User Interface/frmVEPROMS.cs b/PROMS/VEPROMS User Interface/frmVEPROMS.cs
index 840dbd6e..0ab8be76 100644
--- a/PROMS/VEPROMS User Interface/frmVEPROMS.cs
+++ b/PROMS/VEPROMS User Interface/frmVEPROMS.cs
@@ -708,15 +708,32 @@ namespace VEPROMS
else
{
int ownerid = MySessionInfo.CheckOutItem(fi.FolderID, CheckOutType.Session);
-
- dlgExportImport dlg = new dlgExportImport(args.Index == 0 ? "Export" : "Import", fi, this, (E_UCFImportOptions)Properties.Settings.Default.UCFImportOpt);//Added frmVEPROMS Parameter
- dlg.ShowDialog(this);
- MySessionInfo.CheckInItem(ownerid);
-
- if (args.Index == 1 && dlg.MyNewFolder != null)
+ //C2025-024 Electronic Procedures - Phase 2 (PROMS XML output)
+ //form for exporting Electronic Procedures from FolderInfo
+ if (args.AnnotationTypeId > 0)
{
- tv.AddNewNode(dlg.MyNewFolder);
+ dlgExportImportEP dlg = new dlgExportImportEP(args.Index == 0 ? "Export" : "Import", fi, this, args.AnnotationTypeId);
+ dlg.ShowDialog(this);
+
+ MySessionInfo.CheckInItem(ownerid);
+
+ if (args.Index == 1 && dlg.MyNewFolder != null)
+ {
+ tv.AddNewNode(dlg.MyNewFolder);
+ }
+ }
+ else
+ {
+ dlgExportImport dlg = new dlgExportImport(args.Index == 0 ? "Export" : "Import", fi, this, (E_UCFImportOptions)Properties.Settings.Default.UCFImportOpt);//Added frmVEPROMS Parameter
+ dlg.ShowDialog(this);
+
+ MySessionInfo.CheckInItem(ownerid);
+
+ if (args.Index == 1 && dlg.MyNewFolder != null)
+ {
+ tv.AddNewNode(dlg.MyNewFolder);
+ }
}
}
}
@@ -742,18 +759,40 @@ namespace VEPROMS
int ownerid = MySessionInfo.CheckOutItem(dvi.VersionID, CheckOutType.DocVersion);
- dlgExportImport dlg = new dlgExportImport("Import", dvi, this, (E_UCFImportOptions)Properties.Settings.Default.UCFImportOpt);//Added frmVEPROMS Parameter
- dlg.MyNewProcedure = null;
- dlg.ExternalTransitionItem = null;
- dlg.ShowDialog(this);
+ //C2025-024 Electronic Procedures - Phase 2 (PROMS XML output)
+ //form for exporting Electronic Procedures from DocVersionInfo
+ if (args.AnnotationTypeId > 0)
+ {
+ dlgExportImportEP dlg = new dlgExportImportEP(args.Index == 0 ? "Export" : "Import", dvi, this, args.AnnotationTypeId);
+ dlg.MyNewProcedure = null;
+ dlg.ExternalTransitionItem = null;
+ dlg.ShowDialog(this);
- MySessionInfo.CheckInItem(ownerid);
+ MySessionInfo.CheckInItem(ownerid);
- if (dlg.MyNewProcedure != null)
- tv.AddNewNode(dlg.MyNewProcedure);
+ if (dlg.MyNewProcedure != null)
+ tv.AddNewNode(dlg.MyNewProcedure);
+
+ if (dlg.ExternalTransitionItem != null)
+ tc.OpenItem(dlg.ExternalTransitionItem);
+ }
+ else
+ {
+
+ dlgExportImport dlg = new dlgExportImport("Import", dvi, this, (E_UCFImportOptions)Properties.Settings.Default.UCFImportOpt);//Added frmVEPROMS Parameter
+ dlg.MyNewProcedure = null;
+ dlg.ExternalTransitionItem = null;
+ dlg.ShowDialog(this);
+
+ MySessionInfo.CheckInItem(ownerid);
+
+ if (dlg.MyNewProcedure != null)
+ tv.AddNewNode(dlg.MyNewProcedure);
+
+ if (dlg.ExternalTransitionItem != null)
+ tc.OpenItem(dlg.ExternalTransitionItem);
+ }
- if (dlg.ExternalTransitionItem != null)
- tc.OpenItem(dlg.ExternalTransitionItem);
}
}
@@ -769,10 +808,24 @@ namespace VEPROMS
else
{
int ownerid = MySessionInfo.CheckOutItem(pi.ItemID, CheckOutType.Procedure);
- dlgExportImport dlg = new dlgExportImport("Export", pi, this, (E_UCFImportOptions)0);//Added frmVEPROMS Parameter
- dlg.ShowDialog(this);
- MySessionInfo.CheckInItem(ownerid);
+ //C2025-024 Electronic Procedures - Phase 2 (PROMS XML output)
+ //form for exporting Electronic Procedures from ProcedureInfo
+ if (args.AnnotationTypeId > 0)
+ {
+ dlgExportImportEP dlg = new dlgExportImportEP("Export", pi, this, args.AnnotationTypeId);
+ dlg.ShowDialog(this);
+
+ MySessionInfo.CheckInItem(ownerid);
+ }
+ else
+ {
+
+ dlgExportImport dlg = new dlgExportImport("Export", pi, this, (E_UCFImportOptions)0);//Added frmVEPROMS Parameter
+ dlg.ShowDialog(this);
+
+ MySessionInfo.CheckInItem(ownerid);
+ }
}
}
}
@@ -1216,7 +1269,7 @@ namespace VEPROMS
//Print Section
//C2025-028 Add a Quick Print Section option
-
+
void tv_PrintSection(object sender, vlnTreeEventArgs args)
{
PrintSection(sender, args, false);
@@ -1226,7 +1279,7 @@ namespace VEPROMS
PrintSection(sender, args, true);
}
- void PrintSection(object sender, vlnTreeEventArgs args, bool quickprint)
+ void PrintSection(object sender, vlnTreeEventArgs args, bool quickprint)
{
try
{
@@ -2195,7 +2248,7 @@ namespace VEPROMS
this.superTooltip1.SetSuperTooltip(btnResetSecurity, new SuperTooltipInfo("Reset Security", "", "WARNING this will \nREMOVE ALL PROMS USERS and Reset to the\nOriginal Volian Defaults", null, null, eTooltipColor.Gray));
this.superTooltip1.SetSuperTooltip(btnAdministrativeTools, new SuperTooltipInfo("Administrative Tools", "", "Open the PROMS Adminstration Tools Window", null, null, eTooltipColor.Gray));
this.superTooltip1.SetSuperTooltip(btnUpdateFormats, new SuperTooltipInfo("Update Formats", "", "Install New Formats \n or Re-Install Formats", null, null, eTooltipColor.Gray));
-
+
try
{
MyUserInfo = UserInfo.GetByUserID(VlnSettings.UserID);
diff --git a/PROMS/Volian.Controls.Library/vlnTreeView.cs b/PROMS/Volian.Controls.Library/vlnTreeView.cs
index bdd75d47..95beb6f2 100644
--- a/PROMS/Volian.Controls.Library/vlnTreeView.cs
+++ b/PROMS/Volian.Controls.Library/vlnTreeView.cs
@@ -22,11 +22,11 @@ namespace Volian.Controls.Library
public delegate void vlnTreeViewEvent(object sender, vlnTreeEventArgs args);
public delegate void vlnTreeViewTimeEvent(object sender, vlnTreeTimeEventArgs args);
public delegate void vlnTreeViewStatusEvent(object sender, vlnTreeStatusEventArgs args);
- public delegate ItemInfo vlnTreeViewClipboardStatusEvent(object sender, vlnTreeEventArgs args);
- public delegate void vlnTreeViewItemInfoEvent(object sender, vlnTreeItemInfoEventArgs args);
+ public delegate ItemInfo vlnTreeViewClipboardStatusEvent(object sender, vlnTreeEventArgs args);
+ public delegate void vlnTreeViewItemInfoEvent(object sender, vlnTreeItemInfoEventArgs args);
public delegate bool vlnTreeViewBoolEvent(object sender, vlnTreeEventArgs args);
public delegate bool vlnTreeViewItemInfoDeleteEvent(object sender, vlnTreeItemInfoEventArgs args);
-
+
public delegate bool vlnTreeViewItemInfoInsertEvent(object sender, vlnTreeItemInfoInsertEventArgs args);
public delegate bool vlnTreeViewItemInfoDeleteFolderEvent(object sender, vlnTreeFolderDeleteEventArgs args);
public delegate bool vlnTreeViewItemInfoPasteEvent(object sender, vlnTreeItemInfoPasteEventArgs args);
@@ -152,6 +152,15 @@ namespace Volian.Controls.Library
get { return _Index; }
set { _Index = value; }
}
+
+ //C2025-024 Electronic Procedures - Phase 2 (PROMS XML output)
+ //AnnotationType that would be doing an export for
+ private int _AnnotationTypeId = -1;
+ public int AnnotationTypeId
+ {
+ get { return _AnnotationTypeId; }
+ set { _AnnotationTypeId = value; }
+ }
//jcb multiunit
private string _Unit;
public string Unit
@@ -179,6 +188,13 @@ namespace Volian.Controls.Library
_Destination = destination;
_Index = index;
}
+ public vlnTreeEventArgs(TreeNode node, TreeNode destination, int index, int annTypeId)
+ {
+ _Node = node;
+ _Destination = destination;
+ _Index = index;
+ _AnnotationTypeId = annTypeId;
+ }
//jcb multiunit
public vlnTreeEventArgs(TreeNode node, TreeNode destination, int index, string unit, int unitIndex)
{
@@ -188,11 +204,20 @@ namespace Volian.Controls.Library
_Unit = unit;
_UnitIndex = unitIndex;
}
+ public vlnTreeEventArgs(TreeNode node, TreeNode destination, int index, string unit, int unitIndex, int annTypeId)
+ {
+ _Node = node;
+ _Destination = destination;
+ _Index = index;
+ _Unit = unit;
+ _UnitIndex = unitIndex;
+ _AnnotationTypeId = annTypeId;
+ }
//end jcb multiunit
#endregion
public override string ToString()
{
- return string.Format("Node={0},Destination={1},Index={2},Unit={3},UnitIndex={4}", NodePath(this.Node), this.Destination, this.Index, this.Unit, this.UnitIndex);
+ return string.Format("Node={0},Destination={1},Index={2},Unit={3},UnitIndex={4}", NodePath(this.Node), this.Destination, this.Index, this.Unit, this.UnitIndex);
}
private string NodePath(TreeNode node)
@@ -322,7 +347,7 @@ namespace Volian.Controls.Library
_PasteType = pasteType;
_Type = type;
}
-
+
#endregion
}
#endregion
@@ -573,16 +598,16 @@ namespace Volian.Controls.Library
{
if (ProcedureCheckedOutTo != null) ProcedureCheckedOutTo(sender, args);
}
-
-
-
-
-
- public event vlnTreeViewEvent ExportImportProcedureSets;
- private void OnExportImportProcedureSets(object sender, vlnTreeEventArgs args)
- {
- if (ExportImportProcedureSets != null) ExportImportProcedureSets(sender, args);
- }
+
+
+
+
+
+ public event vlnTreeViewEvent ExportImportProcedureSets;
+ private void OnExportImportProcedureSets(object sender, vlnTreeEventArgs args)
+ {
+ if (ExportImportProcedureSets != null) ExportImportProcedureSets(sender, args);
+ }
public event vlnTreeViewEvent PrintTransitionReport;
private void OnPrintTransitionReport(object sender, vlnTreeEventArgs args)
{
@@ -634,7 +659,7 @@ namespace Volian.Controls.Library
// This event was added to update the Step Properties/RO & Tools/Search RO & Reports
// when an update of ro.fst is done & the ro trees on those panels needs refreshed.
// (bug fix B2015-226)
- public event StepPanelTabDisplayEvent TabDisplay;
+ public event StepPanelTabDisplayEvent TabDisplay;
private void OnTabDisplay(object sender, StepPanelTabDisplayEventArgs args)
{
if (TabDisplay != null) TabDisplay(sender, args);
@@ -711,7 +736,10 @@ namespace Volian.Controls.Library
if (ui.IsAdministrator() || ui.IsSetAdministrator(fi))// && fi.MyParent == null) //VEPROMS level
{
if (fi.HasWorkingDraft)
+ {
cm.MenuItems.Add("Export Procedure Set", new EventHandler(mi_Click));
+ //AddEPExport(cm.MenuItems, 0, null);
+ }
else
cm.MenuItems.Add("Import Procedure Set", new EventHandler(mi_Click));
if (DoSpecificInfo)
@@ -731,12 +759,12 @@ namespace Volian.Controls.Library
}
}
// B2020-111 only allow Set Administrator to add new folders inside folders they admininstrate
- if ((ui.IsAdministrator() || ui.IsSetAdministrator(fi.MyParent)) && fi.FolderDocVersionCount == 0)
+ if ((ui.IsAdministrator() || ui.IsSetAdministrator(fi.MyParent)) && fi.FolderDocVersionCount == 0)
cm.MenuItems.Add("New Folder", new EventHandler(mi_Click));
- if (fi.ChildFolderCount == 0 && !fi.HasWorkingDraft)
+ if (fi.ChildFolderCount == 0 && !fi.HasWorkingDraft)
cm.MenuItems.Add("Create Working Draft", new EventHandler(mi_Click));
}
- if (fi.HasWorkingDraft)
+ if (fi.HasWorkingDraft)
cm.MenuItems.Add("Print Transition Report", new EventHandler(mi_Click));
}
else if (tn.VEObject as DocVersionInfo != null) // DocVersions can only contain procs
@@ -745,14 +773,14 @@ namespace Volian.Controls.Library
//_MyLog.WarnFormat("Context Menu 1c - {0}", GC.GetTotalMemory(true));
DocVersionInfo dvi = tn.VEObject as DocVersionInfo;
if (ui.IsAdministrator() || ui.IsSetAdministrator(dvi))
- {
- cm.MenuItems.Add("Import Procedure", mi_Click);
- }
- if (ui.IsAdministrator() || ui.IsSetAdministrator(dvi) || ui.IsWriter(dvi))
+ {
+ cm.MenuItems.Add("Import Procedure", mi_Click);
+ }
+ if (ui.IsAdministrator() || ui.IsSetAdministrator(dvi) || ui.IsWriter(dvi))
{
OwnerInfoList.Reset();
oil = OwnerInfoList.GetByVersionID(dvi.VersionID);
- if (dvi.ActiveFormat.PlantFormat.FormatData.SpecificInfo)
+ if (dvi.ActiveFormat.PlantFormat.FormatData.SpecificInfo)
cm.MenuItems.Add("Procedure Set Specific Information", new EventHandler(mi_Click));
cm.MenuItems.Add("Refresh Checked Out Procedures", new EventHandler(mi_Click));
cm.MenuItems.Add("New Procedure", new EventHandler(mi_Click));
@@ -846,7 +874,8 @@ namespace Volian.Controls.Library
oi = OwnerInfo.GetByItemID(pri.ItemID, CheckOutType.Procedure);
if (ui.IsAdministrator() || ui.IsSetAdministrator(pri.MyDocVersion))
{
- cm.MenuItems.Add("Export Procedure", mi_Click);
+ cm.MenuItems.Add("Export Procedure", mi_Click);
+ AddEPExport(cm.MenuItems, pri.MyDocVersion.MultiUnitCount, pri.MyDocVersion.UnitNames);
}
if (ui.IsAdministrator() || ui.IsSetAdministrator(pri.MyDocVersion) || ui.IsWriter(pri.MyDocVersion))
{
@@ -898,7 +927,7 @@ namespace Volian.Controls.Library
}
cm.MenuItems.Add(micas);
cm.MenuItems.Add(mitcas);
- cm.MenuItems.Add(mip);
+ cm.MenuItems.Add(mip);
cm.MenuItems.Add(miqp);
//cm.MenuItems.Add(mips);
AddShowChangeBarsAfterMenuItem(cm.MenuItems, pri);
@@ -1132,35 +1161,35 @@ namespace Volian.Controls.Library
#region Menu_Delete
if (ok)
-
-
-
-
-
- {
- // Add delete to the menu unless at the very 'top' node, on a grouping (partinfo)
- // node (RNOs, Steps, Cautions, Notes) or Folder/DocVersion that contains any items.
- PartInfo pi = tn.VEObject as PartInfo;
- if (pi == null && tn.Parent != null) // it's not a part and it's not the top....
+
+
+
+
+
{
- fi = tn.VEObject as FolderInfo;
- if (fi == null || tn.Nodes.Count == 0) // it's not a folder or it has no children
+ // Add delete to the menu unless at the very 'top' node, on a grouping (partinfo)
+ // node (RNOs, Steps, Cautions, Notes) or Folder/DocVersion that contains any items.
+ PartInfo pi = tn.VEObject as PartInfo;
+ if (pi == null && tn.Parent != null) // it's not a part and it's not the top....
{
- DocVersionInfo di = tn.VEObject as DocVersionInfo;
- if (di == null || tn.Nodes.Count == 0) // it's not a docversion or it has no children
+ fi = tn.VEObject as FolderInfo;
+ if (fi == null || tn.Nodes.Count == 0) // it's not a folder or it has no children
{
- // if it's an enhanced step that was linked from a source, don't allow delete
- bool canDoDel = true;
- ItemInfo iienh = tn.VEObject as ItemInfo;
- if (iienh != null && iienh.IsProcedure && iienh.IsEnhancedProcedure) canDoDel = false;
- if (iienh != null && iienh.IsSection && iienh.IsEnhancedSection && !iienh.IsEnhancedSectionTitleOnly) canDoDel = false;
- if (iienh != null && iienh.IsEnhancedStep) canDoDel = false;
- if (canDoDel) cm.MenuItems.Add("Delete", new EventHandler(mi_Click));
+ DocVersionInfo di = tn.VEObject as DocVersionInfo;
+ if (di == null || tn.Nodes.Count == 0) // it's not a docversion or it has no children
+ {
+ // if it's an enhanced step that was linked from a source, don't allow delete
+ bool canDoDel = true;
+ ItemInfo iienh = tn.VEObject as ItemInfo;
+ if (iienh != null && iienh.IsProcedure && iienh.IsEnhancedProcedure) canDoDel = false;
+ if (iienh != null && iienh.IsSection && iienh.IsEnhancedSection && !iienh.IsEnhancedSectionTitleOnly) canDoDel = false;
+ if (iienh != null && iienh.IsEnhancedStep) canDoDel = false;
+ if (canDoDel) cm.MenuItems.Add("Delete", new EventHandler(mi_Click));
+ }
}
}
}
- }
-
+
#endregion
//_MyLog.WarnFormat("Context Menu 6 - {0}", GC.GetTotalMemory(true));
#region Menu_ExternalTransitions
@@ -1224,8 +1253,8 @@ namespace Volian.Controls.Library
// node (RNOs, Steps, Cautions, Notes) or at the step level.
// B2020-105 Allow Set Administrators to rename folder's (sets of procedures) to which they have been given access.
if (tn.VEObject is FolderInfo) ok = (ui.IsAdministrator() || ui.IsSetAdministrator(tn.VEObject as FolderInfo));
- else ok = (tn.VEObject is DocVersionInfo) ? (ui.IsAdministrator() || ui.IsSetAdministrator(tn.VEObject as DocVersionInfo))
- : (ui.IsAdministrator() || (tn.VEObject is ItemInfo) && (ui.IsSetAdministrator((tn.VEObject as ItemInfo).MyProcedure.MyDocVersion)
+ else ok = (tn.VEObject is DocVersionInfo) ? (ui.IsAdministrator() || ui.IsSetAdministrator(tn.VEObject as DocVersionInfo))
+ : (ui.IsAdministrator() || (tn.VEObject is ItemInfo) && (ui.IsSetAdministrator((tn.VEObject as ItemInfo).MyProcedure.MyDocVersion)
|| ui.IsWriter((tn.VEObject as ItemInfo).MyProcedure.MyDocVersion)));
PartInfo pia = tn.VEObject as PartInfo;
ItemInfo ii = tn.VEObject as ItemInfo;
@@ -1306,7 +1335,7 @@ namespace Volian.Controls.Library
itm.Text == "Procedure Set Specific Information" || itm.Text == "Approve All Procedures for" ||
itm.Text == "Approve Some Procedures" || itm.Text == "Approve Some Procedures for")
itm.Enabled = false;
-
+
}
}
}
@@ -1335,9 +1364,9 @@ namespace Volian.Controls.Library
// F2022-024 added Time Critical Action Summary option
foreach (MenuItem itm in cm.MenuItems)
{
- if (itm.Text == "Procedure Specific Information" || itm.Text == "New Section" || itm.Text == "Approve" || itm.Text == "Open" ||
+ if (itm.Text == "Procedure Specific Information" || itm.Text == "New Section" || itm.Text == "Approve" || itm.Text == "Open" ||
itm.Text == "Copy" || itm.Text == "Delete" || itm.Text == "Properties..." || itm.Text == "Replace Existing Procedure" ||
- itm.Text.StartsWith("Showing Change Bars Starting") || itm.Text == "Create Continuous Action Summary" ||
+ itm.Text.StartsWith("Showing Change Bars Starting") || itm.Text == "Create Continuous Action Summary" ||
itm.Text == "Create Time Critical Action Summary" || itm.Text == "Export Procedure")
itm.Enabled = false;
}
@@ -1359,7 +1388,53 @@ namespace Volian.Controls.Library
}
}
- private void AddApprovedRevisionsMultiUnit(Menu.MenuItemCollection menuItemCollection, ProcedureInfo pri)
+ //C2025-024 Electronic Procedures - Phase 2 (PROMS XML output)
+ // Add context menu for exporting Electronic Procedures
+ // if has an Electronic procedure
+ // then loop through and add an Export for each EP Viewer
+ private void AddEPExport(Menu.MenuItemCollection menuItems, int MultiUnitCount, string[] UnitNames)
+ {
+ //get EP Annotations
+ AnnotationTypeInfoList annotations = AnnotationTypeInfoList.Get();
+ List epAnnotations = new List();
+ foreach (AnnotationTypeInfo tmp in annotations)
+ {
+ if (tmp.IsEPAnnotationType) epAnnotations.Add(tmp);
+ }
+
+ if (epAnnotations.Count == 0) return; // no Electronic Procedures
+
+ //add outer menu
+ MenuItem mi = menuItems.Add("Electronic Procedure Viewer Export");
+ foreach (AnnotationTypeInfo epAnn in epAnnotations)
+ {
+ //Add item for each individual EP Viewer
+ MenuItem mv = mi.MenuItems.Add(epAnn.Name);
+
+ //tag will be of format:
+ //{EP Annotation Type ID},{Unit}
+ //if not multi-unit, unit will be zero.
+ if (MultiUnitCount > 1)
+ {
+ //if multi-unit, add menu item for each unit
+ int k = 0;
+ foreach (string s in UnitNames)
+ {
+ k++;
+ MenuItem multiunit_mv = mv.MenuItems.Add(s);
+ multiunit_mv.Tag = $"{epAnn.TypeID},{k}";
+ multiunit_mv.Click += new EventHandler(miEP_Click);
+ }
+ }
+ else
+ {
+ mv.Tag = $"{epAnn.TypeID},0";
+ mv.Click += new EventHandler(miEP_Click);
+ }
+ }
+ }
+
+ private void AddApprovedRevisionsMultiUnit(Menu.MenuItemCollection menuItemCollection, ProcedureInfo pri)
{
_currentPri = pri;
RevisionInfoList ril = RevisionInfoList.GetByItemID(pri.ItemID);
@@ -1410,11 +1485,11 @@ namespace Volian.Controls.Library
ril = null;
}
}
- public void AddNewNode(IVEDrillDownReadOnly o)
- {
- VETreeNode tn = new VETreeNode(o);
- SelectedNode.Nodes.Add(tn);
- }
+ public void AddNewNode(IVEDrillDownReadOnly o)
+ {
+ VETreeNode tn = new VETreeNode(o);
+ SelectedNode.Nodes.Add(tn);
+ }
private void AddApprovedRevisions(Menu.MenuItemCollection menuItemCollection, ProcedureInfo pri)
{
try
@@ -1423,7 +1498,7 @@ namespace Volian.Controls.Library
_currentPri = pri;
using (RevisionInfoList ril = RevisionInfoList.GetByItemID(pri.ItemID))
{
- //_MyLog.WarnFormat("Context Menu 1 After GET - {0}", GC.GetTotalMemory(true));
+ //_MyLog.WarnFormat("Context Menu 1 After GET - {0}", GC.GetTotalMemory(true));
if (ril.Count == 0) return; // no versions to list
MenuItem mi = menuItemCollection.Add("Versions");
int lastApprovedRevisionID = 0;
@@ -1557,7 +1632,7 @@ namespace Volian.Controls.Library
}
vlnTreeViewPdfArgs args = new vlnTreeViewPdfArgs(Volian.Base.Library.TmpFile.CreateFileName(ProcedureInfo.Get(ri.ItemID).PDFNumber), ri.LatestVersion.PDF, superceded ? "Superceded" : "");
OnViewPDF(sender, args);
- // System.Diagnostics.Process pp = System.Diagnostics.Process.Start(GetDocPdf(ri, superceded));
+// System.Diagnostics.Process pp = System.Diagnostics.Process.Start(GetDocPdf(ri, superceded));
}
void MultiUnitApprovedRevision_Click(object sender, EventArgs e)
{
@@ -1680,7 +1755,7 @@ namespace Volian.Controls.Library
// 3) 'to' docversion is 'source' and 'from' procedure is within this docversion
// 4) 'to' docVersion is 'enhanced' and 'from' procedure is not
bool canPaste = false;
-
+
DocVersionInfo dvi = tn.VEObject as DocVersionInfo;
DocVersionConfig dvc = dvi.DocVersionConfig;
bool docVersionIsEnhanced = dvc.MyEnhancedDocuments != null && dvc.MyEnhancedDocuments.Count > 0 && dvc.MyEnhancedDocuments[0].Type == 0;
@@ -1701,7 +1776,7 @@ namespace Volian.Controls.Library
if (iiClipboard.IsRtfRaw) canPaste = false; // never paste an equation.
if (canPaste) cm.MenuItems.Add("Paste Procedure", new EventHandler(mi_Click));
}
- #endregion
+ #endregion
}
else
{
@@ -1919,7 +1994,7 @@ namespace Volian.Controls.Library
OnQPrintSection(this, new vlnTreeEventArgs(SelectedNode as VETreeNode, null, 0, mi.Text, (int)mi.Tag));
break;
case "Print All Procedures for":
- OnPrintAllProcedures(this, new vlnTreeEventArgs(SelectedNode as VETreeNode, null, 0, mi.Text, (int)mi.Tag));
+ OnPrintAllProcedures(this, new vlnTreeEventArgs(SelectedNode as VETreeNode, null, 0, mi.Text, (int)mi.Tag));
break;
case "Approve":
OnApproveProcedure(this, new vlnTreeEventArgs(SelectedNode as VETreeNode, null, 0, mi.Text, (int)mi.Tag));
@@ -1980,7 +2055,7 @@ namespace Volian.Controls.Library
if (hasValidConnectingProc)
{
ItemInfo lprc = ItemInfo.Get(seleds[0].ItemID);
- lprc.DoUnlinkEnhanced(lprc, 0, !hasValidConnectingProc);
+ lprc.DoUnlinkEnhanced(lprc, 0, !hasValidConnectingProc);
}
else
selprc.DoUnlinkEnhanced(selprc, seleds[0].Type, !hasValidConnectingProc);
@@ -2000,7 +2075,7 @@ namespace Volian.Controls.Library
{
ItemInfo lprc = ItemInfo.Get(ed.ItemID);
bool hasValidConnectingProc = CheckForValidEnhLink(lprc);
- // if there is a valid connection, unlink both. Otherwise, just unlink this selected procedure.
+ // if there is a valid connection, unlink both. Otherwise, just unlink this selected procedure.
if (hasValidConnectingProc)
lprc.DoUnlinkEnhanced(lprc, ed.Type, !hasValidConnectingProc);
else
@@ -2024,37 +2099,37 @@ namespace Volian.Controls.Library
OnNodeSI(this, new vlnTreeEventArgs(tn, null, 0));
return;
}
- if (mi.Text.StartsWith("Collapse"))
- {
+ if (mi.Text.StartsWith("Collapse"))
+ {
CollapseProcedures();
- return;
- }
+ return;
+ }
if (mi.Text == "Print Transition Report")
{
OnPrintTransitionReport(this, new vlnTreeEventArgs(SelectedNode as VETreeNode));
return;
}
-
-
-
-
-
-
-
-
-
-
- if (mi.Text == "Export Procedure Set" || mi.Text == "Export Procedure")
- {
- OnExportImportProcedureSets(this, new vlnTreeEventArgs(SelectedNode as VETreeNode, null, 0));
- return;
- }
- if (mi.Text == "Import Procedure Set" || mi.Text == "Import Procedure")
- {
- OnExportImportProcedureSets(this, new vlnTreeEventArgs(SelectedNode as VETreeNode, null, 1));
- return;
- }
- if (mi.Text.StartsWith("Procedure Checked Out to") || mi.Text.StartsWith("Document Checked Out to"))
+
+
+
+
+
+
+
+
+
+
+ if (mi.Text == "Export Procedure Set" || mi.Text == "Export Procedure")
+ {
+ OnExportImportProcedureSets(this, new vlnTreeEventArgs(SelectedNode as VETreeNode, null, 0));
+ return;
+ }
+ if (mi.Text == "Import Procedure Set" || mi.Text == "Import Procedure")
+ {
+ OnExportImportProcedureSets(this, new vlnTreeEventArgs(SelectedNode as VETreeNode, null, 1));
+ return;
+ }
+ if (mi.Text.StartsWith("Procedure Checked Out to") || mi.Text.StartsWith("Document Checked Out to"))
{
OnProcedureCheckedOutTo(this, new vlnTreeEventArgs(SelectedNode as VETreeNode, null, 0));
return;
@@ -2080,7 +2155,7 @@ namespace Volian.Controls.Library
break;
case "New Folder":
SelectedNode.Expand();
- tv_NodeNew(MenuSelections.Folder);
+ tv_NodeNew(MenuSelections.Folder);
break;
case "Create Working Draft":
SelectedNode.Expand();
@@ -2124,7 +2199,7 @@ namespace Volian.Controls.Library
tv_NodeCopy();
break;
// lots of paste options:
- case "Paste Procedure":
+ case "Paste Procedure":
case "Paste Procedure Before":
case "Paste Procedure After":
case "Paste Section":
@@ -2158,7 +2233,7 @@ namespace Volian.Controls.Library
break;
}
-
+
case "Delete":
if (tv_NodeDelete())
{
@@ -2226,12 +2301,12 @@ namespace Volian.Controls.Library
case "Create Continuous Action Summary":
OnCreateContinuousActionSummary(this, new vlnTreeEventArgs(SelectedNode as VETreeNode, null, 0));
break;
- // F2022-024 Time Critical Action Summary
+ // F2022-024 Time Critical Action Summary
case "Create Time Critical Action Summary":
OnCreateTimeCriticalActionSummary(this, new vlnTreeEventArgs(SelectedNode as VETreeNode, null, 0));
break;
- // B2017-243 added the following two Cannot Paste items when dealing with enhanced documents
- // when then user selects these menu items a message box will appear giving more information as to why it cannot be pasted
+ // B2017-243 added the following two Cannot Paste items when dealing with enhanced documents
+ // when then user selects these menu items a message box will appear giving more information as to why it cannot be pasted
case "CANNOT PASTE HERE. Click for more information...":
FlexibleMessageBox.Show("You have copied a document that is linked to an Enhanced Document.\n\n" +
"It can only be pasted before or after another document, within the set, that is linked to an Enhanced Document.", "Cannot Paste Here");
@@ -2255,6 +2330,23 @@ namespace Volian.Controls.Library
break;
}
}
+
+ //C2025-024 Electronic Procedures - Phase 2 (PROMS XML output)
+ // Handles clicking of items in the context menu
+ // for exporting Electronic Procedures
+ // tag will be of format:
+ // {EP Annotation Type ID},{Unit}
+ // if not multi-unit, unit will be zero.
+ void miEP_Click(object sender, EventArgs e)
+ {
+ MenuItem mi = sender as MenuItem;
+ int annTypeid = int.Parse(((string)mi.Tag).Split(',')[0]);
+ int unit = int.Parse(((string)mi.Tag).Split(',')[1]);
+ if (unit == 0)
+ OnExportImportProcedureSets(this, new vlnTreeEventArgs(SelectedNode as VETreeNode, null, 0, annTypeid));
+ else
+ OnExportImportProcedureSets(this, new vlnTreeEventArgs(SelectedNode as VETreeNode, null, 0, "", unit, annTypeid));
+ }
private bool _doingCollapseNode = false; // B2016-058 when collapse is done, it always calls the drag node event which doesn't appear to be needed
private void CollapseProcedures()
{
@@ -2273,7 +2365,7 @@ namespace Volian.Controls.Library
foreach (VETreeNode tnc in tn.Nodes)
CollapseProcedures(tnc);
if (tn.VEObject as DocVersionInfo == null && tn.VEObject as FolderInfo == null)
- tn.Collapse();
+ tn.Collapse();
_doingCollapseNode = true; // B2016-058 this will prevent a Drag Node error when collapsing an RNOs, Cautions, or Notes tree node
}
private void tv_RemoveChgIds()
@@ -2333,7 +2425,7 @@ namespace Volian.Controls.Library
using (DocVersion dv = DocVersion.Get(MyDVI.VersionID))
{
swROUpdate = new System.IO.StreamWriter(ROFstInfo.ROUpdateResultsPath(MyDVI)); // RO changes placed in file in the Documents\VEPROMS folder
- // B2022-026 RO Memory Reduction code - first load the new ro.fst so that we can assign the ROTableUpdate event to the correct roFstInfo
+ // B2022-026 RO Memory Reduction code - first load the new ro.fst so that we can assign the ROTableUpdate event to the correct roFstInfo
if (dv.ROfstLoadingFigures || dv.NewerRoFst) // B2017-125 see if loading figures was completed
{
// only load the RO.fst
@@ -2474,7 +2566,7 @@ namespace Volian.Controls.Library
return;
}
// C2017-003: ro data in sql server, check for sql connection string
- if (MyDVI.DocVersionAssociations[0].MyROFst.MyRODb.DBConnectionString != "cstring")
+ if (MyDVI.DocVersionAssociations[0].MyROFst.MyRODb.DBConnectionString != "cstring")
roloc = roloc + " \"" + MyDVI.DocVersionAssociations[0].MyROFst.MyRODb.DBConnectionString + "\"";
// C2021-026 pass in Parent/Child information (list of the children)
// B2022-019 look at all DocVersions to find ParentChild information
@@ -2525,7 +2617,7 @@ namespace Volian.Controls.Library
}
}
VETreeNode tn = SelectedNode as VETreeNode;
-
+
DocVersionInfo dvi = tn.VEObject as DocVersionInfo;
// Check for paste into a docversion - queries/code is different than paste related to an item (into a proc or section)
if (dvi != null)
@@ -2575,7 +2667,7 @@ namespace Volian.Controls.Library
if (OnlyProc && repitem != null && tmp != null)
{
VETreeNode tn1 = new VETreeNode(repitem);
- tmp.Nodes.Add(tn1);
+ tmp.Nodes.Add(tn1);
SelectedNode = tn1;
}
}
@@ -2584,7 +2676,7 @@ namespace Volian.Controls.Library
//if (p.IndexOf("Replace") <= -1)
- this.Cursor = Cursors.Default;
+ this.Cursor = Cursors.Default;
}
public void PasteAsDocVersionChild(VETreeNode tn, int copyStartID)
@@ -2653,7 +2745,7 @@ namespace Volian.Controls.Library
// the item to be pasted in the step editor and the tree.
ItemInfo newItemInfo = null;
// F2021-009 display a message if pasting step will results in more sub-step levels than are defined in the format
- if (!ii.IsProcedure)
+ if (!ii.IsProcedure)
ItemInfo.PasteStepIsWithinDefinedSubStepLevels(copyStartID, ii, false);
if (ii.IsProcedure || !OnPasteItemInfo(this, new vlnTreeItemInfoPasteEventArgs(ii, copyStartID, pasteOpt, ii.MyContent.Type)))
{
@@ -2716,7 +2808,7 @@ namespace Volian.Controls.Library
SelectedNode.Nodes.Add(tn1); // add tree node to end of list.
SelectedNode = tn1;
}
- private void tv_NodeCopy()
+ private void tv_NodeCopy()
{
if (SelectedNode == null) return;
VETreeNode tn = SelectedNode as VETreeNode;
@@ -2754,7 +2846,7 @@ namespace Volian.Controls.Library
{
using (Folder folder = folderInfo.Get())
{
- OnNodeOpenProperty(this, new vlnTreePropertyEventArgs(string.Format("{0} Properties", folder.FolderConfig.Name), folder.FolderConfig));
+ OnNodeOpenProperty(this, new vlnTreePropertyEventArgs(string.Format("{0} Properties", folder.FolderConfig.Name), folder.FolderConfig));
}
}
private void OpenProperties(DocVersionInfo dvInfo)
@@ -2768,7 +2860,7 @@ namespace Volian.Controls.Library
{
using (Procedure proc = procInfo.Get())
{
- OnNodeOpenProperty(this, new vlnTreePropertyEventArgs(string.Format("{0} {1} Properties", proc.ProcedureConfig.Number, proc.ProcedureConfig.Title), proc.ProcedureConfig));
+ OnNodeOpenProperty(this, new vlnTreePropertyEventArgs(string.Format("{0} {1} Properties", proc.ProcedureConfig.Number, proc.ProcedureConfig.Title), proc.ProcedureConfig));
}
}
private void OpenProperties(SectionInfo sectInfo)
@@ -2781,7 +2873,7 @@ namespace Volian.Controls.Library
title = string.Format("{0} {1} Properties", sectInfo.SectionConfig.Number, sectInfo.SectionConfig.Title);
else
title = string.Format("{0} Properties", sectInfo.SectionConfig.Title);
- OnNodeOpenProperty(this, new vlnTreePropertyEventArgs(title, sect.SectionConfig));
+ OnNodeOpenProperty(this, new vlnTreePropertyEventArgs(title, sect.SectionConfig));
}
}
private void OpenProperties(StepInfo stpinfo)
@@ -2919,7 +3011,7 @@ namespace Volian.Controls.Library
procedure.Save();
tn = new VETreeNode(_LastProcedureInfo);
SelectedNode.Nodes.Add(tn); // add tree node to end of list.
- // The following line will allow for a refresh of the procedure list on the Working Draft's treenodes docversion (B2016-034)
+ // The following line will allow for a refresh of the procedure list on the Working Draft's treenodes docversion (B2016-034)
if (((SelectedNode as VETreeNode).VEObject as DocVersionInfo) != null) ((SelectedNode as VETreeNode).VEObject as DocVersionInfo).ResetProcedures();
if (procedure.MyProcedureInfo.CreateEnhanced)
{
@@ -2961,7 +3053,7 @@ namespace Volian.Controls.Library
else
p2 = procedure.ItemID;
}
- if (p2 != -1)
+ if (p2 != -1)
DeleteItemInfoAndChildren(_LastProcedureInfo); // Delete Item and reset Previous and Next
}
#endregion
@@ -2971,11 +3063,11 @@ namespace Volian.Controls.Library
string message = string.Empty;
if (_LastProcedureInfo != null)
if (!MySessionInfo.CanCheckOutItem(_LastProcedureInfo.ItemID, CheckOutType.Procedure, ref message))
- {
- FlexibleMessageBox.Show(this, message, "Item Already Checked Out", MessageBoxButtons.OK, MessageBoxIcon.Warning);
- OnUnPauseRefresh(this, null);
- return;
- }
+ {
+ FlexibleMessageBox.Show(this, message, "Item Already Checked Out", MessageBoxButtons.OK, MessageBoxIcon.Warning);
+ OnUnPauseRefresh(this, null);
+ return;
+ }
int s1 = -1;
if (!(_LastProcedureInfo == null) || !(_LastSectionInfo == null))
{
@@ -3028,8 +3120,8 @@ namespace Volian.Controls.Library
{
tn = new VETreeNode(_LastSectionInfo);
SelectedNode.Nodes.Add(tn); // add tree node to end of list.
- // if the new section was flagged as either having an enhanced link for Title or Contents, create the
- // Enhanced section:
+ // if the new section was flagged as either having an enhanced link for Title or Contents, create the
+ // Enhanced section:
Section sectiontmp = Section.Get(section.ItemID); // need to do this because of 'caching' problem.
if (sectiontmp.SectionConfig.LinkEnhanced == "T" || sectiontmp.SectionConfig.LinkEnhanced == "Y")
CreateEnhancedForSection(newtype, sectiontmp, savLastSectionInfo, sectiontmp.DisplayNumber, sectiontmp.MyContent.Text);
@@ -3057,7 +3149,7 @@ namespace Volian.Controls.Library
if (s1 != -1)
{
DeleteItemInfoAndChildren(_LastSectionInfo);// Delete Item and reset Previous and Next
- // B2020-087 refresh the tree node after canceling the creation of the subsection
+ // B2020-087 refresh the tree node after canceling the creation of the subsection
_LastTreeNode.ChildrenLoaded = false;
_LastTreeNode.RefreshNode();
_LastTreeNode.Collapse();
@@ -3104,7 +3196,7 @@ namespace Volian.Controls.Library
if (s2 != -1)
{
DeleteItemInfoAndChildren(_LastSectionInfo);// Delete Item and reset Previous and Next
- // B2020-087 refresh the tree node after canceling the creation of the subsection
+ // B2020-087 refresh the tree node after canceling the creation of the subsection
_LastTreeNode.ChildrenLoaded = false;
_LastTreeNode.RefreshNode();
_LastTreeNode.Collapse();
@@ -3301,7 +3393,7 @@ namespace Volian.Controls.Library
cs.Save();
}
}
-
+
private Section CreateNewSection()
{
// B2020-087 the config for SubSection_Edit was sometimes set even when there wasn't any subsections,
@@ -3341,7 +3433,7 @@ namespace Volian.Controls.Library
// The parent step was not open in the step editor, just create new step(s) and add treenode.
int newId = -1;
// B2020-076: if this step has a template, insert template steps.
- int topType = ii.GetSmartTemplateTopLevelIndxOfThisType(20002);
+ int topType = ii.GetSmartTemplateTopLevelIndxOfThisType(20002);
if (topType != -1)
{
ItemInfo tmp = null;
@@ -3561,7 +3653,7 @@ namespace Volian.Controls.Library
{
foreach (DVEnhancedDocument dve in dvc.MyEnhancedDocuments)
{
- if (dve.Type != 0)
+ if (dve.Type != 0)
DocVersion.Delete(dve.VersionID);
else
{
@@ -3607,7 +3699,7 @@ namespace Volian.Controls.Library
if (ed.Type != 0) enhIds.Add(ed.ItemID);
// always return false because an event gets fired to delete tree nodes.
if (!DeleteItemInfoAndChildren(_LastProcedureInfo)) return false;
-
+
_LastProcedureInfo = null;
foreach (int enhId in enhIds)
{
@@ -3706,7 +3798,7 @@ namespace Volian.Controls.Library
}
return false;
}
-
+
public void RemoveFolder(int folderId)
{
TreeNode nodeToRemove = FindNodeById(folderId, this.Nodes);
@@ -3780,7 +3872,7 @@ namespace Volian.Controls.Library
// C2020-033: Support delete to bring up Search/Incoming Transitions panel
if (ex.Message.Contains("has External Transitions"))
{
- ItemInfo iis = ItemInfo.Get(ii.ItemID);
+ ItemInfo iis = ItemInfo.Get(ii.ItemID);
OnSearchIncTransIn(this, new vlnTreeItemInfoEventArgs(iis));
iis = ii.HandleSqlExceptionOnDelete(ex);
}
@@ -3878,7 +3970,7 @@ namespace Volian.Controls.Library
ItemInfo iidrag = ((VETreeNode)dragNode).VEObject as ItemInfo;
FolderInfo fdrag = ((VETreeNode)dragNode).VEObject as FolderInfo;
DocVersionInfo ddrag = ((VETreeNode)dragNode).VEObject as DocVersionInfo;
- if ((iidrag == null && fdrag == null && ddrag == null))
+ if ((iidrag == null && fdrag == null && ddrag == null))
{
FlexibleMessageBox.Show("Cannot drag/drop a grouping node.");
return;
@@ -3929,7 +4021,7 @@ namespace Volian.Controls.Library
{
get { return _lastScroll; }
}
- private string _location = string.Empty;
+ private string _location = string.Empty;
#endregion
#region Constructors
public DropLocation(TreeView tv, System.Windows.Forms.DragEventArgs e, DateTime lastScroll)
@@ -4046,7 +4138,7 @@ namespace Volian.Controls.Library
{
return;
}
- //if(_MyLog.IsInfoEnabled)_MyLog.InfoFormat("Line at {0} Node {1}[{2}] {3}", _location, _dropNode.Text, _index, _position.ToString());
+ //if(_MyLog.IsInfoEnabled)_MyLog.InfoFormat("Line at {0} Node {1}[{2}] {3}", _location, _dropNode.Text, _index, _position.ToString());
// Changed the color of the drag indicator to always be red
Color lc = (_position == DropPosition.After ? Color.Red : Color.Red);
Brush lb = (_position == DropPosition.After ? Brushes.Red : Brushes.Red);
@@ -4073,12 +4165,12 @@ namespace Volian.Controls.Library
//if (e.Effect == DragDropEffects.None) return;
if (_dropNode != null)
{
- // if(_MyLog.IsInfoEnabled)_MyLog.InfoFormat("ShowLocation1 {0} {1}", e.Effect.ToString(), DateTime.Now.Millisecond);
+// if(_MyLog.IsInfoEnabled)_MyLog.InfoFormat("ShowLocation1 {0} {1}", e.Effect.ToString(), DateTime.Now.Millisecond);
DragHelper.ImageList_DragShowNolock(false);
TreeView tv = _dropNode.TreeView;
TreeNode tmp = tv.GetNodeAt(tv.PointToClient(new Point(e.X, e.Y)));
- // if (!ScrollOnly)
- // {
+// if (!ScrollOnly)
+// {
if (ScrollTreeView(tmp) || !ScrollOnly)
{
//if(_MyLog.IsInfoEnabled)_MyLog.InfoFormat("ShowLocation2 {0} {1}", e.Effect.ToString(), DateTime.Now.Millisecond);
@@ -4091,8 +4183,8 @@ namespace Volian.Controls.Library
if (_position != DropPosition.Child) InsertPointer(tmp, g);
}
}
- // }
- // else ScrollTreeView(tmp);
+// }
+// else ScrollTreeView(tmp);
DragHelper.ImageList_DragShowNolock(true);
}
}
@@ -4115,10 +4207,10 @@ namespace Volian.Controls.Library
tn.NextVisibleNode.EnsureVisible();// Make sure that the next node is visible
else
if (tn.PrevVisibleNode != null && tn.PrevVisibleNode.PrevVisibleNode != null && tn.PrevVisibleNode.PrevVisibleNode.IsVisible == false)
- tn.PrevVisibleNode.PrevVisibleNode.EnsureVisible();// Make sure that the previous node is visible }
- else
+ tn.PrevVisibleNode.PrevVisibleNode.EnsureVisible();// Make sure that the previous node is visible }
+ else
if (tn.PrevVisibleNode != null && tn.PrevVisibleNode.IsVisible == false)
- tn.PrevVisibleNode.EnsureVisible();// Make sure that the previous node is visible
+ tn.PrevVisibleNode.EnsureVisible();// Make sure that the previous node is visible
retval = (top != tn.Bounds.Top);
// if (retval) if(_MyLog.IsInfoEnabled)_MyLog.Info("Scroll");
}
@@ -4151,7 +4243,7 @@ namespace Volian.Controls.Library
{
DragDropEffects ee = e.Effect;
if (e.KeyState == 13) // Shift and Control Keys to do a move.
- ee = DragDropEffects.Move;
+ ee = DragDropEffects.Move;
else
ee = DragDropEffects.None; // Default - Do nothing
if (IsChild(dragNode, dl.DropNode)) // Don't copy or move to a child node
@@ -4347,28 +4439,28 @@ namespace Volian.Controls.Library
if (_MyLog.IsErrorEnabled) _MyLog.Error("tv_DragDrop", ex);
}
}
- // private void DumpMembers(object o)
- // {
- // Type t = o.GetType();
- // //if(_MyLog.IsInfoEnabled)_MyLog.InfoFormat("\r\n\r\nMembers for type {0}", t.ToString());
- // MemberInfo[] mis = t.GetMembers();
- // int i = 0;
- // foreach (MemberInfo mi in mis)
- // {
- // i++;
- // try
- // {
- // //if(mi.MemberType != MemberTypes.Method)
- // //if(_MyLog.IsInfoEnabled)_MyLog.InfoFormat("{0} {1} {2}", i, mi.Name, mi.MemberType);
- //// if (fi.Name == "TreeView")
- //// fi.SetValue(o, null);
- // }
- // catch (Exception ex)
- // {
- // if(_MyLog.IsErrorEnabled)_MyLog.Error("DumpMembers", ex);
- // }
- // }
- // }
+// private void DumpMembers(object o)
+// {
+// Type t = o.GetType();
+// //if(_MyLog.IsInfoEnabled)_MyLog.InfoFormat("\r\n\r\nMembers for type {0}", t.ToString());
+// MemberInfo[] mis = t.GetMembers();
+// int i = 0;
+// foreach (MemberInfo mi in mis)
+// {
+// i++;
+// try
+// {
+// //if(mi.MemberType != MemberTypes.Method)
+// //if(_MyLog.IsInfoEnabled)_MyLog.InfoFormat("{0} {1} {2}", i, mi.Name, mi.MemberType);
+//// if (fi.Name == "TreeView")
+//// fi.SetValue(o, null);
+// }
+// catch (Exception ex)
+// {
+// if(_MyLog.IsErrorEnabled)_MyLog.Error("DumpMembers", ex);
+// }
+// }
+// }
private TreeNode Clone(TreeNode tn)
{
diff --git a/PROMS/Volian.Print.Library/PDFReport.cs b/PROMS/Volian.Print.Library/PDFReport.cs
index 39bf29f8..e660630e 100644
--- a/PROMS/Volian.Print.Library/PDFReport.cs
+++ b/PROMS/Volian.Print.Library/PDFReport.cs
@@ -1688,7 +1688,7 @@ namespace Volian.Print.Library
System.Windows.Forms.MessageBox.Show(msg.ToString(), "Error during PDF creation for search:", System.Windows.Forms.MessageBoxButtons.OK, System.Windows.Forms.MessageBoxIcon.Exclamation);
}
- private static string BuildStepTab(ItemInfo item)
+ public static string BuildStepTab(ItemInfo item)
{
if (item == null)
return string.Empty;