Compare commits

...

69 Commits

Author SHA1 Message Date
e2a276085b C2025-039 Per the customer’s request, adjusted the “{Proc Num} (Procedure Number Only)" transition type in the Beaver Valley formats so that a procedure that contains only Word sections can be referenced. 2025-08-04 10:30:20 -04:00
d561c579e0 Merge pull request 'C2025-047-cleanup' (#585) from C2025-047-cleanup into Development
good for testing
2025-08-01 14:58:51 -04:00
371d117746 C2025-047-cleanup 2025-08-01 14:44:48 -04:00
2131efb522 Merge pull request 'C2025-047-AnnotationsTypeSelectChanges' (#583) from C2025-047-AnnotationsTypeSelectChanges into Development
good for testing phase
2025-08-01 10:13:46 -04:00
6e20774edf C2025-047-AnnotationsTypeSelectChanges 2025-08-01 07:34:33 -04:00
a7c7744ff3 C2025-047-AnnotationsTypeSelectChanges 2025-07-31 23:06:29 -04:00
019aefbc61 Merge pull request 'SQL optimization to use AnnotationTypeSelections Index' (#582) from SQL_Optimization_7_31_2025 into Development
good for testing phase
2025-07-31 11:03:14 -04:00
81a23305ba SQL optimization to used AnnotationTypeSelections Index 2025-07-31 10:48:39 -04:00
4001abff02 Merge pull request 'C2025-027-AnnotationsTypeSelect-3' (#581) from C2025-027-AnnotationsTypeSelect-3 into Development
good for testing phase
2025-07-31 08:49:37 -04:00
25bfbeb8d6 C2025-027-AnnotationsTypeSelect-3 2025-07-30 23:05:11 -04:00
a3aa9747b8 Merge pull request 'C2025-027-AnnotationsTypeSelect-2' (#580) from C2025-027-AnnotationsTypeSelect-2 into Development
good for testing phase
2025-07-30 11:28:55 -04:00
009243b091 C2025-027-AnnotationsTypeSelect-2 2025-07-30 11:18:33 -04:00
e31e0b6680 C2025-027-AnnotationsTypeSelect-2 2025-07-30 10:58:58 -04:00
449bb2522b C2025-027-AnnotationsTypeSelect-2 2025-07-30 10:25:07 -04:00
453dce9520 Merge pull request 'C2025-027-AnnotationsTypeSelect' (#574) from C2025-027-AnnotationsTypeSelect into Development
good for the testing phase
2025-07-30 08:23:06 -04:00
655592186b C2025-027-AnnotationsTypeSelect 2025-07-29 22:54:44 -04:00
1ebf67233b C2025-027-AnnotationsTypeSelect 2025-07-29 15:34:13 -04:00
1588dabcbe Merge pull request 'C2025-044 Update PROMS Fixes to be SQL 2016 compatible' (#579) from C2025-044 into Development
good for testing phase
2025-07-29 15:18:37 -04:00
09d3995e6c C2025-044 Update PROMS Fixes to be SQL 2016 compatible 2025-07-29 15:12:51 -04:00
db20385a6d Merge pull request 'DEV_Proj_File_Dependency_Update' (#578) from DEV_Proj_File_Dependency_Update into Development
Good to use. - no testing required this update is for developers only.
2025-07-29 10:06:11 -04:00
d701935ddf DEV_Proj_File_Dependency_Update
Visual Studio 2022 changed the default build order --- this will alow rebuild all in VS2022
2025-07-29 09:21:51 -04:00
d3888e3c32 C2025-027-AnnotationsTypeSelect 2025-07-29 09:20:58 -04:00
94f0795247 Merge pull request 'B2025-039 Needed to include the Blue color to the RTF color table for formats that use a proportional font.' (#577) from B2025-039_PropFontColorRplWrds into Development
Looks Good.

Ready for QA Testing.
2025-07-28 16:14:29 -04:00
4def73d738 B2025-039 Needed to include the Blue color to the RTF color table for formats that use a proportional font. 2025-07-28 16:06:55 -04:00
99445406fc C2025-027-AnnotationsTypeSelect 2025-07-25 23:06:50 -04:00
025fa57e24 Merge remote-tracking branch 'origin/Development' into C2025-027-AnnotationsTypeSelect 2025-07-22 09:13:11 -04:00
6f04d0bf07 C2025-027-AnnotationsTypeSelect 2025-07-22 09:06:11 -04:00
7a0f56cad8 C2025-027-AnnotationsTypeSelect 2025-07-16 15:03:32 -04:00
c98299d916 C2025-027-AnnotationsTypeSelect 2025-07-15 23:32:31 -04:00
f6e25fd966 C2025-027-AnnotationsTypeSelect 2025-07-15 23:14:26 -04:00
557b9429bf Merge pull request 'F2025-017 Created a new cover page type for Wolf Creek Single Column format.' (#575) from General_Debugging into Development
Format only change- ready for testing
2025-07-15 15:34:24 -04:00
139f7bbd0a F2025-017 Created a new cover page type for Wolf Creek Single Column format. 2025-07-15 15:25:52 -04:00
e08b5cde69 C2025-027-AnnotationsTypeSelect 2025-07-11 16:08:14 -04:00
07c7718320 Merge pull request 'C2025-038 Code cleanup to prevent multiple events from being assigned to the same method.' (#573) from C2025-038_EventCalls into Development
Looks good - ready for QA testing.
2025-07-10 11:23:25 -04:00
2953e977ef C2025-038 Code cleanup to prevent multiple events from being assigned to the same method. 2025-07-10 10:47:06 -04:00
9ef9dcd7b9 Merge pull request 'F2025-016 fixed the Open Bullet with Blank Line "o" designator to use the greek "o" lower cased omicron symbol' (#572) from F2025-016 into Development
Format only change.  good for testing
2025-06-26 16:08:44 -04:00
5fd8096ef0 F2025-016 fixed the Open Bullet with Blank Line "o" designator to use the greek "o" lower cased omicron symbol 2025-06-26 16:08:21 -04:00
5f59543a14 Merge pull request 'B2025-035-Hold-Procedure-Set-Bug' (#571) from B2025-035-Hold-Procedure-Set-Bug into Development
good for testing phase
2025-06-25 08:28:02 -04:00
d44593d6d4 B2025-035-Hold-Procedure-Set-Bug 2025-06-24 19:48:48 -04:00
38744ff8e8 Merge pull request 'C2025-023 Electronic Procedures - Modifications to PROMS (Phase 1)' (#565) from C2025-023 into Development
good for testing phase
2025-06-23 08:32:55 -04:00
83e935a3f4 C2025-023 updated revision wording 2025-06-20 15:36:08 -04:00
4d96e73866 Remove from checkin - should be in phase 2 2025-06-20 14:39:42 -04:00
a55ce75e2e C2025-023 Bringing branch up to date to resolve merge conflicts 2025-06-20 14:33:58 -04:00
c45dbf1dac Resolved merge conflicts with Development 2025-06-20 14:29:18 -04:00
2d08629608 C2025-023 attempt to resolve merge conflict 2025-06-20 13:56:41 -04:00
49bc67a64f Merge pull request 'C2025-036 - Cleaned up logic in PROMS code that generates the step/sub-step tabs to reduce un-needed processing in certain cases' (#569) from C2025-036_CleanupTabCode into Development
Looks good. Ready for QA testing.
2025-06-18 09:29:10 -04:00
abec4d9281 C2025-036 - Cleaned up logic in PROMS code that generates the step/sub-step tabs to reduce un-needed processing in certain cases 2025-06-18 09:20:17 -04:00
149bc601e2 Merge pull request 'B2025-034-Add-error-message-documents-2' (#568) from B2025-034-Add-error-message-documents-2 into Development
good for testing phase
2025-06-12 08:36:28 -04:00
66deede936 B2025-034-Add-error-message-documents-2 2025-06-11 18:24:59 -04:00
0df5511bf7 Merge pull request 'B2025-034-Add-error-message-documents' (#567) from B2025-034-Add-error-message-documents into Development
good for testing phase
2025-06-11 08:42:44 -04:00
8f31532917 C2025-023-Format2-Update 2025-05-27 10:56:14 -04:00
5a7e63871d C2025-023 - Electronic Procedures - Modifications to PROMS
Simplified to textboxes as RTF was impacting possible tags / directories
2025-05-21 09:34:07 -04:00
7ade7f6e24 Merge pull request 'C2025-023-New-EP-Format-File' (#560) from C2025-023-New-EP-Format-File into C2025-023
Reviewed-on: #560
2025-05-20 17:21:25 -04:00
e470ef0553 C2025-023-New-EP-Format-File 2025-05-20 16:53:16 -04:00
f49c888307 C2025-023 Electronic Procedures - Modifications to PROMS (Phase 1)
Changed linq to use builtin Find method per code analyzer recommendation
2025-05-15 10:57:28 -04:00
04a2da4371 C2025-023 Electronic Procedures - Modifications to PROMS (Phase 1)
Change to not show open button if is an invalid step type
2025-05-15 10:45:52 -04:00
31f608a9ec C2025-023 Electronic Procedures - Modifications to PROMS (Phase 1)
Change to not show open button if using a format that is not attached to an EP format file.
2025-05-14 15:05:58 -04:00
3e53ec9191 C2025-023 - Electronic Procedures - Modifications to PROMS
Small change to handle removed items that were selected.
2025-05-13 07:48:50 -04:00
637cbd9954 C2025-023 Electronic Procedures - Modifications to PROMS (Phase 1)
RO/table entry - Dev Testing related changes
2025-05-08 10:18:50 -04:00
e9e934cfb1 C2025-023 - Electronic Procedures - Modifications to PROMS
RO input functionality
2025-05-02 11:46:55 -04:00
a417ddda85 C2025-023 Electronic Procedures - Modifications to PROMS (Phase 1)
RO Graphics Item Adjustment
2025-04-30 11:25:18 -04:00
f273a8839a C2025-023 Electronic Procedures - Modifications to PROMS (Phase 1)
Overlapping of textbox controls
2025-04-29 10:50:59 -04:00
62ae81c7b3 C2025-023 - Electronic Procedures - Modifications to PROMS
Working on Adding functionality for EP input for tables #2
2025-04-25 15:07:29 -04:00
6db9567eb9 C2025-023 - Electronic Procedures - Modifications to PROMS
Working on Adding functionality for EP input for tables
2025-04-23 07:42:28 -04:00
8ef08c53b3 C2025-023 - Electronic Procedures - Modifications to PROMS
1. undo changes to store checkbox/textbox in cell grid
2. change to use roid as key for RO listbox items
2025-04-11 10:12:37 -04:00
9fdbdb05f4 C2025-023 - Electronic Procedures - Modifications to PROMS (checkin 4 - added some comments) 2025-04-10 09:05:42 -04:00
d392131005 C2025-023 - Electronic Procedures - Modifications to PROMS (checkin #3 - fix winforms select first item bug in listboxes) 2025-04-10 08:53:27 -04:00
389b9e382b C2025-023 - Electronic Procedures - Modifications to PROMS - checkin #2 2025-04-09 15:22:36 -04:00
6fd84e2f2a C2025-023 Electronic Procedures - Modifications to PROMS (Phase 1) 2025-04-08 10:54:19 -04:00
72 changed files with 5345 additions and 2150 deletions

View File

@@ -28,7 +28,9 @@ namespace AT.STO.UI.Win
_dropDownHelper = new DropDownWindowHelper();
_dropDownHelper.DropDownClosed -= new DropDownClosedEventHandler(DropDownHelper_DropDownClosed);
_dropDownHelper.DropDownClosed += new DropDownClosedEventHandler(DropDownHelper_DropDownClosed);
_dropDownHelper.DropDownCancel -= new DropDownCancelEventHandler(DropDownHelper_DropDownCancel);
_dropDownHelper.DropDownCancel += new DropDownCancelEventHandler(DropDownHelper_DropDownCancel);
combo.DisplayMember = "Text";
@@ -82,7 +84,9 @@ namespace AT.STO.UI.Win
DropDownForm dropDown = new DropDownForm(_dropDownControl);
dropDown.FinishEditing -= new DropDownValueChangedEventHandler(DropDown_FinishEditing);
dropDown.FinishEditing += new DropDownValueChangedEventHandler(DropDown_FinishEditing);
dropDown.ValueChanged -= new DropDownValueChangedEventHandler(DropDown_ValueChanged);
dropDown.ValueChanged += new DropDownValueChangedEventHandler(DropDown_ValueChanged);
combo.DroppedDown = false;

View File

@@ -49,7 +49,9 @@ namespace AT.STO.UI.Win
{
base.OnShown(e);
_control.FinishEditing -= new DropDownValueChangedEventHandler(Ctrl_FinishEditing);
_control.FinishEditing += new DropDownValueChangedEventHandler(Ctrl_FinishEditing);
_control.ValueChanged -= new DropDownValueChangedEventHandler(Ctrl_ValueChanged);
_control.ValueChanged += new DropDownValueChangedEventHandler(Ctrl_ValueChanged);
}
#endregion

View File

@@ -39,6 +39,7 @@ namespace AT.STO.UI.Win
public DropDownWindowHelper()
{
_filter = new DropDownMessageFilter(this);
_filter.DropDownCancel -= new DropDownCancelEventHandler(Popup_Cancel);
_filter.DropDownCancel += new DropDownCancelEventHandler(Popup_Cancel);
}
#endregion

View File

@@ -92,6 +92,10 @@
</Compile>
</ItemGroup>
<ItemGroup>
<Content Include="epall\EPFormatTST1.xml" />
<Content Include="epall\EPFormatTST2.xml" />
<Content Include="epall\EPFormatTST3.xml" />
<Content Include="epall\EPFormatTST4.xml" />
<Content Include="fmtall\AEPall.xml">
<SubType>Designer</SubType>
</Content>
@@ -176,6 +180,7 @@
<Content Include="fmtall\CPL_03all.xml" />
<Content Include="fmtall\CPSAMGDataall.xml" />
<Content Include="fmtall\CPSAMGDEVall.xml" />
<Content Include="fmtall\EPTST1all.xml" />
<Content Include="fmtall\CWEall.xml" />
<Content Include="fmtall\CWEDEVall.xml" />
<Content Include="fmtall\CWERall.xml" />
@@ -187,6 +192,7 @@
<Content Include="fmtall\EFSGBCKall.xml" />
<Content Include="fmtall\ELFDEVall.xml" />
<Content Include="fmtall\ENall.xml" />
<Content Include="fmtall\EPTST2all.xml" />
<Content Include="fmtall\ESFDEVall.xml" />
<Content Include="fmtall\EXCLNall.xml" />
<Content Include="fmtall\EXCLN_00all.xml" />

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -0,0 +1,203 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using VEPROMS.CSLA.Library;
namespace VEPROMS
{
// C2025-027 Annotation Type Filtering
public partial class dlgAnnotationsSelect : Form
{
public dlgAnnotationsSelect()
{
InitializeComponent();
}
public dlgAnnotationsSelect(string userid)
{
InitializeComponent();
UserID = userid;
}
private int _MyItemID;
public int MyItemID
{
get { return _MyItemID; }
set { _MyItemID = value; }
}
private string _UserID;
public string UserID
{
get { return _UserID; }
set { _UserID = value; }
}
private void btnSelect_Click(object sender, EventArgs e)
{
MoveSelectedItems(lstUnselected, lstSelected);
}
// Move selected items to lstUnselected.
private void btnDeselect_Click(object sender, EventArgs e)
{
MoveSelectedItems(lstSelected, lstUnselected);
}
// Move selected items from one ListBox to another.
private void MoveSelectedItems(ListBox lstFrom, ListBox lstTo)
{
while (lstFrom.SelectedItems.Count > 0)
{
lstSelected.DisplayMember = "NameStr";
lstSelected.ValueMember = "TypeID";
AnnotataionItem item = (AnnotataionItem)lstFrom.SelectedItems[0];
lstTo.Items.Add(new AnnotataionItem(item.NameStr, item.TypeID));
lstFrom.Items.Remove(item);
}
SetButtonsEditable();
btnUpdate.Enabled = true;
}
// Move all items to lstSelected.
private void btnSelectAll_Click(object sender, EventArgs e)
{
MoveAllItems(lstUnselected, lstSelected);
btnUpdate.Enabled = true;
}
// Move all items to lstUnselected.
private void btnDeselectAll_Click(object sender, EventArgs e)
{
MoveAllItems(lstSelected, lstUnselected);
btnUpdate.Enabled = true;
}
// Move all items from one ListBox to another.
private void MoveAllItems(ListBox lstFrom, ListBox lstTo)
{
lstTo.Items.AddRange(lstFrom.Items);
lstFrom.Items.Clear();
SetButtonsEditable();
btnUpdate.Enabled = true;
}
// Enable and disable buttons.
private void lst_SelectedIndexChanged(object sender, EventArgs e)
{
SetButtonsEditable();
}
// Save selected list to DB.
private void btnUpdate_Click(object sender, EventArgs e)
{
saveChanges();
}
public class AnnotataionItem
{
private string _NameStr;
private int _TypeID;
public AnnotataionItem(string NameStr, int TypeID)
{
this._NameStr = NameStr;
this._TypeID = TypeID;
}
public string NameStr
{
get
{
return _NameStr;
}
}
public int TypeID
{
get
{
return _TypeID;
}
}
}
// Enable and disable buttons.
private void SetButtonsEditable()
{
btnSelect.Enabled = (lstUnselected.SelectedItems.Count > 0);
btnSelectAll.Enabled = (lstUnselected.Items.Count > 0);
btnDeselect.Enabled = (lstSelected.SelectedItems.Count > 0);
btnDeselectAll.Enabled = (lstSelected.Items.Count > 0);
}
private void DlgAnnotationsSelect_Load(object sender, EventArgs e)
{
lstUnselected.DisplayMember = "NameStr";
lstUnselected.ValueMember = "TypeID";
SetButtonsEditable();
DataTable AnnoType = AnnotationstypeSelections.GetAnnoTypes(UserID);
foreach (DataRow dr in AnnoType.Rows)
{
lstUnselected.Items.Add(new AnnotataionItem(dr["Name"].ToString(), (int)dr["TypeID"]));
}
lstSelected.DisplayMember = "NameStr";
lstSelected.ValueMember = "TypeID";
DataTable lstSelectedTbl = VEPROMS.CSLA.Library.AnnotationstypeSelections.Retrieve(UserID);
foreach (DataRow lstSelectedRow in lstSelectedTbl.Rows)
{
lstSelected.Items.Add(new AnnotataionItem(lstSelectedRow["Name"].ToString(), (int)lstSelectedRow["TypeID"]));
}
btnUpdate.Enabled = false;
}
private void btnCancel_Click_1(object sender, EventArgs e)
{
if (btnUpdate.Enabled == true)
{
string message = "Changes have not yet been saved. Do you want to save the changes prior to closing?";
string title = "Save Annotation Selections";
MessageBoxButtons buttons = MessageBoxButtons.YesNo;
DialogResult result = MessageBox.Show(message, title, buttons);
if (result == DialogResult.Yes)
{
saveChanges();
this.Close();
}
else
{
this.Close();
}
}
else
{
this.Close();
}
}
private DataTable coverToTable()
{
DataTable dt = new DataTable();
dt.Columns.Add("TypeID", typeof(Int32));
foreach (AnnotataionItem item in lstSelected.Items.OfType<AnnotataionItem>())
{
dt.Rows.Add(item.TypeID);
}
return dt;
}
private void saveChanges()
{
DataTable dt2 = coverToTable();
VEPROMS.CSLA.Library.AnnotationstypeSelections.Update(dt2, UserID);
btnUpdate.Enabled = false;
}
}
}

View File

@@ -0,0 +1,120 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>

View File

@@ -393,6 +393,7 @@ namespace VEPROMS
{
SetupForProcedure();
_MyTimer = new Timer();
_MyTimer.Tick -= new EventHandler(_MyTimer_Tick);
_MyTimer.Tick += new EventHandler(_MyTimer_Tick);
_MyTimer.Interval = 100;
_MyTimer.Enabled = true;

View File

@@ -1,5 +1,3 @@
Set NoCount On;
If (db_name() in('master','model','msdn','tempdb'))
@@ -23864,6 +23862,438 @@ IF (@@Error = 0) PRINT 'Running vesp_UpdateUserSettingMSWordSummaryPrompt Succee
ELSE PRINT 'Running vesp_UpdateUserSettingMSWordSummaryPrompt Failed to Execute'
GO
--- begin changes for:
---C2025-023 - Electronic Procedures - Modifications to PROMS
--- The following IsEPAnnotationType column was added for EP Annotations.
--- IsEPAnnotationType = Is for EPs
IF NOT EXISTS(SELECT *
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = 'AnnotationTypes'
AND COLUMN_NAME = 'IsEPAnnotationType')
ALTER TABLE AnnotationTypes ADD IsEPAnnotationType bit NOT NULL DEFAULT(0);
go
-- Display the status
IF (@@Error = 0) PRINT 'Altered table [AnnotationTypes] Succeeded for IsEPAnnotationType'
ELSE PRINT 'Altered table [AnnotationTypes] Error on Alter for IsEPAnnotationType'
go
IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getAnnotationType]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1)
DROP PROCEDURE [getAnnotationType];
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: Matthew Schill
-- Create date: 3/21/2025
-- Description: Add EP to AnnotationTypes
-- =============================================
CREATE PROCEDURE [dbo].[getAnnotationType]
(
@TypeID int
)
WITH EXECUTE AS OWNER
AS
SELECT
[TypeID],
[Name],
[Config],
[DTS],
[UserID],
[LastChanged],
(SELECT COUNT(*) FROM [Annotations] WHERE [Annotations].[TypeID]=[AnnotationTypes].[TypeID]) [AnnotationCount],
[IsEPAnnotationType]
FROM [AnnotationTypes]
WHERE [TypeID]=@TypeID
SELECT
[Annotations].[AnnotationID],
[Annotations].[ItemID],
[Annotations].[TypeID],
[Annotations].[RtfText],
[Annotations].[SearchText],
[Annotations].[Config],
[Annotations].[DTS],
[Annotations].[UserID],
[Annotations].[LastChanged],
[Items].[PreviousID] [Item_PreviousID],
[Items].[ContentID] [Item_ContentID],
[Items].[DTS] [Item_DTS],
[Items].[UserID] [Item_UserID]
FROM [Annotations]
JOIN [Items] ON
[Items].[ItemID]=[Annotations].[ItemID]
WHERE
[Annotations].[TypeID]=@TypeID
RETURN
GO
IF (@@Error = 0) PRINT 'Running getAnnotationType Succeeded'
ELSE PRINT 'Running getAnnotationType Failed to Execute'
GO
IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getAnnotationTypeByName]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1)
DROP PROCEDURE [getAnnotationTypeByName];
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: Matthew Schill
-- Create date: 3/21/2025
-- Description: Add EP to AnnotationTypes
-- =============================================
CREATE PROCEDURE [dbo].[getAnnotationTypeByName]
(
@Name nvarchar(100)
)
WITH EXECUTE AS OWNER
AS
SELECT
[TypeID],
[Name],
[Config],
[DTS],
[UserID],
[LastChanged],
(SELECT COUNT(*) FROM [Annotations] WHERE [Annotations].[TypeID]=[AnnotationTypes].[TypeID]) [AnnotationCount],
[IsEPAnnotationType]
FROM [AnnotationTypes]
WHERE [Name]=@Name
RETURN
GO
IF (@@Error = 0) PRINT 'Running getAnnotationTypeByName Succeeded'
ELSE PRINT 'Running getAnnotationTypeByName Failed to Execute'
GO
IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getAnnotationTypes]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1)
DROP PROCEDURE [getAnnotationTypes];
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: Matthew Schill
-- Create date: 3/21/2025
-- Description: Add EP to AnnotationTypes
-- =============================================
CREATE PROCEDURE [dbo].[getAnnotationTypes]
WITH EXECUTE AS OWNER
AS
SELECT
[TypeID],
[Name],
[Config],
[DTS],
[UserID],
[LastChanged],
(SELECT COUNT(*) FROM [Annotations] WHERE [Annotations].[TypeID]=[AnnotationTypes].[TypeID]) [AnnotationCount],
[IsEPAnnotationType]
FROM [AnnotationTypes]
RETURN
GO
IF (@@Error = 0) PRINT 'Running getAnnotationTypes Succeeded'
ELSE PRINT 'Running getAnnotationTypes Failed to Execute'
GO
IF Not Exists(SELECT * FROM sys.objects Where name = 'EPFormats' AND type in (N'U'))
Begin -- Rofst Tables
SET ANSI_NULLS ON
SET QUOTED_IDENTIFIER ON
CREATE TABLE [dbo].[EPFormats](
[FormatID] [int] IDENTITY(1,1) NOT NULL,
[Name] [nvarchar](100) NOT NULL,
[Data] [xml] NULL,
[Created] [datetime] NOT NULL DEFAULT (getdate()),
[CreatedBy] [nvarchar](100) NOT NULL DEFAULT (upper(suser_sname())),
[Updated] [datetime] NOT NULL DEFAULT (getdate()),
[UpdatedBy] [nvarchar](100) NOT NULL DEFAULT (upper(suser_sname()))
CONSTRAINT [PK_EPFormats] PRIMARY KEY CLUSTERED
(
[FormatID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
IF (@@Error = 0) PRINT 'Table Creation: [EPFormats] Succeeded'
ELSE PRINT 'Table Creation: [EPFormats] Error on Creation'
End
Go
IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vesp_UpdateEPFormat]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1)
DROP PROCEDURE [vesp_UpdateEPFormat];
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: Matthew Schill
-- Create date: 3/26/2025
-- Description: Update / Insert EP Format
-- =============================================
CREATE PROCEDURE [dbo].[vesp_UpdateEPFormat]
(
@name nvarchar(100),
@data nvarchar(max),
@userID nvarchar(15)
)
WITH EXECUTE AS OWNER
AS
IF EXISTS(Select 1 FROM EPFormats where Name = @name )
BEGIN
UpDate EPFormats
SET Name = @name,
Data = @data,
Updated = getdate(),
UpdatedBy = upper(@userID)
WHERE Name = @name
END
ELSE
BEGIN
INSERT INTO EPFormats (Name, Data, CreatedBy, UpdatedBy)
values (@name, @data, 'Migration', 'Migration')
END
GO
-- C2025-027 Annotation Type Filtering
/****** Object: Table [dbo].[AnnotationTypeSelections] Script Date: 7/10/2025 2:38:23 PM ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: Paul Larsen
-- Create date: 07/10/2025
-- Description: Store user Annotation selections for annotation filter.
-- =============================================
IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[AnnotationTypeSelections]') AND type in (N'U'))
BEGIN
CREATE TABLE [dbo].[AnnotationTypeSelections](
[ASTypeID] [int] IDENTITY(1,1) NOT NULL,
[TypeID] [int] NULL,
[UserID] [varchar](50) NULL,
[LastChanged] [datetime] NULL,
CONSTRAINT [PK_AnnotationTypeSelections] PRIMARY KEY CLUSTERED
([ASTypeID] ASC)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
END
IF OBJECT_ID('DF_AnnotationTypeSelections_LastChanged', 'D') IS NULL
ALTER TABLE AnnotationTypeSelections ADD CONSTRAINT [DF_AnnotationTypeSelections_LastChanged] DEFAULT (getdate()) for [LastChanged];
GO
IF EXISTS (SELECT * FROM sys.indexes WHERE name='idx_AnnotationTypeSelections_UserIDTypeID'
AND object_id = OBJECT_ID('[dbo].[AnnotationTypeSelections]'))
begin
DROP INDEX [idx_AnnotationTypeSelections_UserIDTypeID] ON [dbo].[AnnotationTypeSelections];
end
CREATE UNIQUE INDEX [idx_AnnotationTypeSelections_UserIDTypeID] ON [dbo].[AnnotationTypeSelections]
(
[UserID] ASC,
[TypeID] ASC
)
INCLUDE (ASTypeID)
WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
GO
-- C2025-027 Annotation Type Filtering
IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getAnnotationSelectListTypes]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1)
DROP PROCEDURE [getAnnotationSelectListTypes];
GO
-- =============================================
-- Author: Paul Larsen
-- Create date: 7/10/2025
-- Description: Retrieve Annotation Types not added to Annotation type filtering by user.
-- =============================================
CREATE PROCEDURE [dbo].[getAnnotationSelectListTypes]
(
@UserID varchar(50)
)
WITH EXECUTE AS OWNER
AS
SELECT
AT.[TypeID],
AT.[Name],
AT.[Config],
AT.[DTS],
AT.[UserID],
AT.[LastChanged],
(SELECT COUNT(*) FROM [Annotations] WHERE [Annotations].[TypeID]= AT.[TypeID]) [AnnotationCount],
AT.[IsEPAnnotationType]
FROM [AnnotationTypes] AT
LEFT OUTER JOIN AnnotationTypeSelections ATS
ON ATS.TypeID = AT.TypeID AND ATS.UserID = @UserID
WHERE ATS.ASTypeID IS NULL
GO
-- C2025-027 Annotation Type Filtering
IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getAnnotationstypeSelections]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1)
DROP PROCEDURE [getAnnotationstypeSelections];
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: Paul Larsen
-- Create date: 07/10/2025
-- Description: Retrieve Current Annotation Types
-- =============================================
CREATE PROC [dbo].[getAnnotationstypeSelections]
(
@UsrID varchar(50)
)
AS
BEGIN
SELECT [ASTypeID]
,ATS.[TypeID]
,ATS.[UserID]
,AT.[Name]
,AT.[Config]
,ATS.[LastChanged]
,AT.[UserID]
,AT.[IsEPAnnotationType]
FROM [dbo].[AnnotationTypeSelections] ATS
INNER JOIN AnnotationTypes AT ON AT.TypeID = ATS.TypeID
WHERE ATS.UserID = @UsrID
END
GO
-- C2025-027 Annotation Type Filtering
IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getAnnotationstypeFiltered]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1)
DROP PROCEDURE [getAnnotationstypeFiltered];
GO
-- =============================================
-- Author: Paul Larsen
-- Create date: 07/10/2025
-- Description: Retrieve Current Annotation Types
-- =============================================
CREATE PROC [dbo].[getAnnotationstypeFiltered]
(
@UsrID varchar(50)
)
AS
BEGIN
IF((SELECT count(TypeID) FROM AnnotationTypeSelections WHERE UserID = @UsrID) > 0)
BEGIN
SELECT [ASTypeID]
,ATS.[TypeID]
,ATS.[UserID]
,AT.[Name]
,AT.[Config]
,ATS.[LastChanged]
,AT.[UserID]
,AT.[IsEPAnnotationType]
FROM [dbo].[AnnotationTypeSelections] ATS
INNER JOIN AnnotationTypes AT ON AT.TypeID = ATS.TypeID
WHERE ATS.UserID = @UsrID
END
ELSE
BEGIN
SELECT
[TypeID],
[Name],
[Config],
[DTS],
[UserID],
[LastChanged],
(SELECT COUNT(*) FROM [Annotations] WHERE [Annotations].[TypeID]=[AnnotationTypes].[TypeID]) [AnnotationCount],
[IsEPAnnotationType]
FROM [AnnotationTypes]
END
END
GO
-- C2025-027 Annotation Type Filtering
IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[UpdateAnnotationstypeSelections]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1)
DROP PROCEDURE [UpdateAnnotationstypeSelections];
-- Need to drop UpdateAnnotationstypeSelections SP first so script can drop and recreate the TableValAnnotTypeSelections table type
IF EXISTS( SELECT * FROM INFORMATION_SCHEMA.DOMAINS WHERE Domain_Name = 'TableValAnnotTypeSelections' )
DROP TYPE [dbo].[TableValAnnotTypeSelections]
CREATE TYPE [dbo].[TableValAnnotTypeSelections] AS TABLE(
[TypeID] [int] NOT NULL
)
GO
/****** Object: StoredProcedure [dbo].[UpdateAnnotationstypeSelections] Script Date: 7/21/2025 8:51:42 PM ******/
-- =============================================
-- Author: Paul Larsen
-- Create date: 07/21/2025
-- Description: Manage user choice annotation types
-- =============================================
CREATE PROC [dbo].[UpdateAnnotationstypeSelections]
(
@TempTable AS dbo.TableValAnnotTypeSelections READONLY,
@UserID [varchar](50) NULL
)
AS
BEGIN
DELETE FROM AnnotationTypeSelections where UserID = @UserID
AND
TypeID not in
(Select TypeID From @TempTable tmp)
--this would insert all the ones that are in the uploaded table and not already in AnnotationTypeSelections
Insert INTO AnnotationTypeSelections (TypeID, UserID)
Select tmp.TypeID, @UserID
FROM
@TempTable tmp
LEFT OUTER JOIN
AnnotationTypeSelections ATS on ATS.TypeID = tmp.TypeID
AND ATS.UserID = @UserID
where
ATS.ASTypeID IS NULL
END
GO
IF (@@Error = 0) PRINT 'Running vesp_UpdateEPFormat Succeeded'
ELSE PRINT 'Running vesp_UpdateEPFormat Failed to Execute'
GO
UPDATE Formats SET ApplicablePlant = 1000 WHERE [Name] LIKE 'EPTST%';
Go
--- end changes for:
---C2025-023 - Electronic Procedures - Modifications to PROMS
/*
---------------------------------------------------------------------------
| ADD New Code Before this Block |
@@ -23897,8 +24327,8 @@ BEGIN TRY -- Try Block
DECLARE @RevDate varchar(255)
DECLARE @RevDescription varchar(255)
set @RevDate = '5/19/2025 8:44 AM'
set @RevDescription = 'C2025-013 Add ability to disable message that opening Summaries in MS Word'
set @RevDate = '07/31/2025 10:30 AM'
set @RevDescription = 'SQL Optimization'
Select cast(@RevDate as datetime) RevDate, @RevDescription RevDescription
PRINT 'SQL Code Revision ' + @RevDate + ' - ' + @RevDescription

View File

@@ -152,6 +152,17 @@
<DependentUpon>AboutVEPROMS.cs</DependentUpon>
</Compile>
<Compile Include="BookMarks.cs" />
<Compile Include="dlgAnnotationsSelect.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="dlgAnnotationsSelect.Designer.cs">
<DependentUpon>dlgAnnotationsSelect.cs</DependentUpon>
</Compile>
<Compile Include="dlgAnnotationsSelect.Designer.cs">
<AutoGen>True</AutoGen>
<DesignTime>True</DesignTime>
<DependentUpon>dlgAnnotationsSelect.resx</DependentUpon>
</Compile>
<Compile Include="dlgApproveProcedure.cs">
<SubType>Form</SubType>
</Compile>
@@ -337,6 +348,10 @@
<SubType>Designer</SubType>
<DependentUpon>AboutVEPROMS.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="dlgAnnotationsSelect.resx">
<DependentUpon>dlgAnnotationsSelect.cs</DependentUpon>
<Generator>ResXFileCodeGenerator</Generator>
</EmbeddedResource>
<EmbeddedResource Include="dlgMSWordMessage.resx">
<DependentUpon>dlgMSWordMessage.cs</DependentUpon>
</EmbeddedResource>

View File

@@ -0,0 +1,229 @@

namespace VEPROMS
{
partial class dlgAnnotationsSelect
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.lstUnselected = new System.Windows.Forms.ListBox();
this.lstSelected = new System.Windows.Forms.ListBox();
this.btnSelect = new System.Windows.Forms.Button();
this.btnSelectAll = new System.Windows.Forms.Button();
this.btnDeselectAll = new System.Windows.Forms.Button();
this.btnDeselect = new System.Windows.Forms.Button();
this.btnUpdate = new System.Windows.Forms.Button();
this.tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel();
this.btnCancel = new System.Windows.Forms.Button();
this.lblMessage = new System.Windows.Forms.Label();
this.lblAvailableTypes = new System.Windows.Forms.Label();
this.lblSelected = new System.Windows.Forms.Label();
this.tableLayoutPanel1.SuspendLayout();
this.SuspendLayout();
//
// lstUnselected
//
this.lstUnselected.Dock = System.Windows.Forms.DockStyle.Fill;
this.lstUnselected.FormattingEnabled = true;
this.lstUnselected.IntegralHeight = false;
this.lstUnselected.ItemHeight = 16;
this.lstUnselected.Location = new System.Drawing.Point(3, 3);
this.lstUnselected.Name = "lstUnselected";
this.tableLayoutPanel1.SetRowSpan(this.lstUnselected, 4);
this.lstUnselected.SelectionMode = System.Windows.Forms.SelectionMode.MultiExtended;
this.lstUnselected.Size = new System.Drawing.Size(287, 347);
this.lstUnselected.TabIndex = 0;
this.lstUnselected.SelectedIndexChanged += new System.EventHandler(this.lst_SelectedIndexChanged);
//
// lstSelected
//
this.lstSelected.Dock = System.Windows.Forms.DockStyle.Fill;
this.lstSelected.FormattingEnabled = true;
this.lstSelected.IntegralHeight = false;
this.lstSelected.ItemHeight = 16;
this.lstSelected.Location = new System.Drawing.Point(334, 3);
this.lstSelected.Name = "lstSelected";
this.tableLayoutPanel1.SetRowSpan(this.lstSelected, 4);
this.lstSelected.SelectionMode = System.Windows.Forms.SelectionMode.MultiExtended;
this.lstSelected.Size = new System.Drawing.Size(288, 347);
this.lstSelected.TabIndex = 1;
this.lstSelected.SelectedIndexChanged += new System.EventHandler(this.lst_SelectedIndexChanged);
//
// btnSelect
//
this.btnSelect.Anchor = System.Windows.Forms.AnchorStyles.None;
this.btnSelect.Location = new System.Drawing.Point(298, 32);
this.btnSelect.Name = "btnSelect";
this.btnSelect.Size = new System.Drawing.Size(28, 23);
this.btnSelect.TabIndex = 2;
this.btnSelect.Text = ">";
this.btnSelect.UseVisualStyleBackColor = true;
this.btnSelect.Click += new System.EventHandler(this.btnSelect_Click);
//
// btnSelectAll
//
this.btnSelectAll.Anchor = System.Windows.Forms.AnchorStyles.None;
this.btnSelectAll.Location = new System.Drawing.Point(296, 120);
this.btnSelectAll.Name = "btnSelectAll";
this.btnSelectAll.Size = new System.Drawing.Size(32, 23);
this.btnSelectAll.TabIndex = 3;
this.btnSelectAll.Text = ">>";
this.btnSelectAll.UseVisualStyleBackColor = true;
this.btnSelectAll.Click += new System.EventHandler(this.btnSelectAll_Click);
//
// btnDeselectAll
//
this.btnDeselectAll.Anchor = System.Windows.Forms.AnchorStyles.None;
this.btnDeselectAll.Location = new System.Drawing.Point(297, 207);
this.btnDeselectAll.Name = "btnDeselectAll";
this.btnDeselectAll.Size = new System.Drawing.Size(30, 26);
this.btnDeselectAll.TabIndex = 5;
this.btnDeselectAll.Text = "<<";
this.btnDeselectAll.UseVisualStyleBackColor = true;
this.btnDeselectAll.Click += new System.EventHandler(this.btnDeselectAll_Click);
//
// btnDeselect
//
this.btnDeselect.Anchor = System.Windows.Forms.AnchorStyles.None;
this.btnDeselect.Location = new System.Drawing.Point(298, 297);
this.btnDeselect.Name = "btnDeselect";
this.btnDeselect.Size = new System.Drawing.Size(28, 23);
this.btnDeselect.TabIndex = 4;
this.btnDeselect.Text = "<";
this.btnDeselect.UseVisualStyleBackColor = true;
this.btnDeselect.Click += new System.EventHandler(this.btnDeselect_Click);
//
// btnUpdate
//
this.btnUpdate.Anchor = System.Windows.Forms.AnchorStyles.None;
this.btnUpdate.Location = new System.Drawing.Point(536, 422);
this.btnUpdate.Name = "btnUpdate";
this.btnUpdate.Size = new System.Drawing.Size(100, 35);
this.btnUpdate.TabIndex = 8;
this.btnUpdate.Text = "Save";
this.btnUpdate.UseVisualStyleBackColor = true;
this.btnUpdate.Click += new System.EventHandler(this.btnUpdate_Click);
//
// tableLayoutPanel1
//
this.tableLayoutPanel1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
| System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.tableLayoutPanel1.ColumnCount = 3;
this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F));
this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 38F));
this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F));
this.tableLayoutPanel1.Controls.Add(this.lstUnselected, 0, 0);
this.tableLayoutPanel1.Controls.Add(this.lstSelected, 2, 0);
this.tableLayoutPanel1.Controls.Add(this.btnDeselect, 1, 3);
this.tableLayoutPanel1.Controls.Add(this.btnDeselectAll, 1, 2);
this.tableLayoutPanel1.Controls.Add(this.btnSelect, 1, 0);
this.tableLayoutPanel1.Controls.Add(this.btnSelectAll, 1, 1);
this.tableLayoutPanel1.Location = new System.Drawing.Point(12, 62);
this.tableLayoutPanel1.Name = "tableLayoutPanel1";
this.tableLayoutPanel1.RowCount = 4;
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 25F));
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 25F));
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 25F));
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 25F));
this.tableLayoutPanel1.Size = new System.Drawing.Size(625, 353);
this.tableLayoutPanel1.TabIndex = 6;
//
// btnCancel
//
this.btnCancel.Location = new System.Drawing.Point(411, 422);
this.btnCancel.Name = "btnCancel";
this.btnCancel.Size = new System.Drawing.Size(100, 35);
this.btnCancel.TabIndex = 9;
this.btnCancel.Text = "Close";
this.btnCancel.UseVisualStyleBackColor = true;
this.btnCancel.Click += new System.EventHandler(this.btnCancel_Click_1);
//
// lblMessage
//
this.lblMessage.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.lblMessage.Location = new System.Drawing.Point(43, 12);
this.lblMessage.Name = "lblMessage";
this.lblMessage.Size = new System.Drawing.Size(317, 16);
this.lblMessage.TabIndex = 10;
this.lblMessage.Text = "Updates will appear when PROMS is restarted.";
//
// lblAvailableTypes
//
this.lblAvailableTypes.AutoSize = true;
this.lblAvailableTypes.Location = new System.Drawing.Point(12, 43);
this.lblAvailableTypes.Name = "lblAvailableTypes";
this.lblAvailableTypes.Size = new System.Drawing.Size(110, 16);
this.lblAvailableTypes.TabIndex = 11;
this.lblAvailableTypes.Text = "Types Available ";
//
// lblSelected
//
this.lblSelected.AutoSize = true;
this.lblSelected.Location = new System.Drawing.Point(343, 43);
this.lblSelected.Name = "lblSelected";
this.lblSelected.Size = new System.Drawing.Size(104, 16);
this.lblSelected.TabIndex = 12;
this.lblSelected.Text = "Types Selected";
//
// dlgAnnotationsSelect
//
this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 16F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(653, 466);
this.Controls.Add(this.lblSelected);
this.Controls.Add(this.lblAvailableTypes);
this.Controls.Add(this.btnCancel);
this.Controls.Add(this.tableLayoutPanel1);
this.Controls.Add(this.btnUpdate);
this.Controls.Add(this.lblMessage);
this.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog;
this.Name = "dlgAnnotationsSelect";
this.Text = "Filter Annotation Types";
this.Load += new System.EventHandler(this.DlgAnnotationsSelect_Load);
this.tableLayoutPanel1.ResumeLayout(false);
this.ResumeLayout(false);
this.PerformLayout();
}
#endregion
private System.Windows.Forms.ListBox lstUnselected;
private System.Windows.Forms.ListBox lstSelected;
private System.Windows.Forms.Button btnSelect;
private System.Windows.Forms.Button btnSelectAll;
private System.Windows.Forms.Button btnDeselectAll;
private System.Windows.Forms.Button btnDeselect;
private System.Windows.Forms.Button btnUpdate;
private System.Windows.Forms.TableLayoutPanel tableLayoutPanel1;
private System.Windows.Forms.Button btnCancel;
private System.Windows.Forms.Label lblMessage;
private System.Windows.Forms.Label lblAvailableTypes;
private System.Windows.Forms.Label lblSelected;
}
}

View File

@@ -65,11 +65,13 @@ namespace VEPROMS
MyFrmVEPROMS = myFrmVEPROMS;// Save frmVEPROMS for Import to shutoff SessionPing
_MyApproval = new ApprovalInfo(myFrmVEPROMS);// Save frmVEPROMS for Import to shutoff SessionPing
ApplicabilityIndex = myDocVersion.DocVersionConfig.SelectedSlave;
this.ConsistencyPrintRequest -= new DisplayConsistencyReportEvent(dlgApproveProcedure_ConsistencyPrintRequest);
this.ConsistencyPrintRequest += new DisplayConsistencyReportEvent(dlgApproveProcedure_ConsistencyPrintRequest);
_MyDocVersion = myDocVersion;
_MyDocVersion.ResetProcedures(); // B2021-035: Pasted, modified number and deleted procedures not refreshed so missing from list
InitializeComponent();
FlexGridAddEvents();
_MyApproval.StatusUpdated -= new ApprovalStatusChangeEvent(_MyApproval_StatusUpdated);
_MyApproval.StatusUpdated += new ApprovalStatusChangeEvent(_MyApproval_StatusUpdated);
SetupComboBoxes();
foreach (ProcedureInfo pi in myDocVersion.Procedures)
@@ -101,6 +103,7 @@ namespace VEPROMS
//fgProcs.SetupEditor += new C1.Win.C1FlexGrid.RowColEventHandler(fgProcs_SetupEditor);
//fgProcs.StartEdit += new C1.Win.C1FlexGrid.RowColEventHandler(fgProcs_StartEdit);
//fgProcs.ValidateEdit += new C1.Win.C1FlexGrid.ValidateEditEventHandler(fgProcs_ValidateEdit);
fgProcs.ComboCloseUp -= new C1.Win.C1FlexGrid.RowColEventHandler(fgProcs_ComboCloseUp);
fgProcs.ComboCloseUp += new C1.Win.C1FlexGrid.RowColEventHandler(fgProcs_ComboCloseUp);
//fgProcs.MouseDown += new MouseEventHandler(fgProcs_MouseDown);
//fgProcs.MouseUp += new MouseEventHandler(fgProcs_MouseUp);
@@ -275,6 +278,7 @@ namespace VEPROMS
{
MyFrmVEPROMS = myFrmVEPROMS;// Save frmVEPROMS for Import to shutoff SessionPing
_MyApproval = new ApprovalInfo(myFrmVEPROMS);// Save frmVEPROMS for Import to shutoff SessionPing
this.ConsistencyPrintRequest -= new DisplayConsistencyReportEvent(dlgApproveProcedure_ConsistencyPrintRequest);
this.ConsistencyPrintRequest += new DisplayConsistencyReportEvent(dlgApproveProcedure_ConsistencyPrintRequest);
_MyDocVersion = myDocVersion;
_MyDocVersion.ResetProcedures(); // B2021-035: Pasted, modified number and deleted procedures not refreshed so missing from list
@@ -295,6 +299,7 @@ namespace VEPROMS
{
MyFrmVEPROMS = myFrmVEPROMS;// Save frmVEPROMS for Import to shutoff SessionPing
_MyApproval = new ApprovalInfo(myFrmVEPROMS);// Save frmVEPROMS for Import to shutoff SessionPing
this.ConsistencyPrintRequest -= new DisplayConsistencyReportEvent(dlgApproveProcedure_ConsistencyPrintRequest);
this.ConsistencyPrintRequest += new DisplayConsistencyReportEvent(dlgApproveProcedure_ConsistencyPrintRequest);
_MyDocVersion = myProcedure.MyDocVersion;
_MyDocVersion.ResetProcedures(); // B2021-035: Pasted, modified number and deleted procedures not refreshed so missing from list
@@ -450,6 +455,7 @@ namespace VEPROMS
int checkedCount = clbMore.CheckedItems.Count;
string oldLabel = lblMore.Text;
pbMore.Visible = true;
ItemInfoList.ConsistencyCheckUpdated -= new ItemInfoListCCEvent(ItemInfoList_ConsistencyCheckUpdated);
ItemInfoList.ConsistencyCheckUpdated += new ItemInfoListCCEvent(ItemInfoList_ConsistencyCheckUpdated);
List<ProcedureInfo> myProcs = new List<ProcedureInfo>();
// B2018-136 use the list of procedures that have checkboxes and are checked (right panel) instead of the list to be approved (left panel)

View File

@@ -40,6 +40,7 @@ namespace VEPROMS
rb.Parent = pnlGroups;
rb.Dock = DockStyle.Top;
rb.Tag = gi;
rb.CheckedChanged -= new EventHandler(rb_CheckedChanged);
rb.CheckedChanged += new EventHandler(rb_CheckedChanged);
pnlGroups.Controls.Add(rb);
rb.BringToFront();

View File

@@ -254,6 +254,7 @@ namespace VEPROMS
if (CancelStop) btnCancel.Visible = true;
Application.DoEvents();
MyPromsPrinter.StatusChanged -= new PromsPrinterStatusEvent(pp_StatusChanged);
MyPromsPrinter.StatusChanged += new PromsPrinterStatusEvent(pp_StatusChanged);
MyPromsPrinter.DocReplace = DocReplace; // used when approve generates an export with unlinked ROs and Transitions

File diff suppressed because it is too large Load Diff

View File

@@ -365,5 +365,11 @@ namespace VEPROMS
Properties.Settings.Default.cbShwRplWrdsColor = cbShwRplWrdsColor.Checked; // update setting value
Properties.Settings.Default.Save(); // save settings
}
}
private void cbShwAnnoFilter_Click(object sender, EventArgs e)
{
frmVEPROMS.tv_SelectAnnotations();
}
}
}

View File

@@ -721,7 +721,7 @@ namespace VEPROMS
this.epAnnotations.Dock = System.Windows.Forms.DockStyle.Bottom;
this.epAnnotations.Enabled = false;
this.epAnnotations.Expanded = false;
this.epAnnotations.ExpandedBounds = new System.Drawing.Rectangle(4, 544, 1187, 202);
this.epAnnotations.ExpandedBounds = new System.Drawing.Rectangle(5, 371, 1185, 202);
this.epAnnotations.ExpandOnTitleClick = true;
this.epAnnotations.Location = new System.Drawing.Point(5, 547);
this.epAnnotations.Name = "epAnnotations";
@@ -761,7 +761,7 @@ namespace VEPROMS
this.ctrlAnnotationDetails.Dock = System.Windows.Forms.DockStyle.Fill;
this.ctrlAnnotationDetails.Enabled = false;
this.ctrlAnnotationDetails.Location = new System.Drawing.Point(0, 26);
this.ctrlAnnotationDetails.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
this.ctrlAnnotationDetails.Margin = new System.Windows.Forms.Padding(2);
this.ctrlAnnotationDetails.MyUserInfo = null;
this.ctrlAnnotationDetails.Name = "ctrlAnnotationDetails";
this.ctrlAnnotationDetails.ProcItem = null;

View File

@@ -543,7 +543,6 @@ namespace VEPROMS
tv.RefreshCheckedOutProcedures += new vlnTreeViewEvent(tv_RefreshCheckedOutProcedures);
tv.ProcedureCheckedOutTo += new vlnTreeViewEvent(tv_ProcedureCheckedOutTo);
tv.ViewPDF += new vlnTreeViewPdfEvent(tv_ViewPDF);
displayApplicability.ApplicabilityViewModeChanged += new DisplayApplicability.DisplayApplicabilityEvent(displayApplicability_ApplicabilityViewModeChanged);
tv.ExportImportProcedureSets += new vlnTreeViewEvent(tv_ExportImportProcedureSets);
@@ -1296,7 +1295,11 @@ namespace VEPROMS
pi.MyDocVersion.DocVersionConfig.SelectedSlave = 0;
}
public static void tv_SelectAnnotations()
{
dlgAnnotationsSelect sannoDlg = new dlgAnnotationsSelect(VlnSettings.UserID);
sannoDlg.ShowDialog(); // RHM 20120925 - Center dialog over PROMS window
}
void tv_CreateTimeCriticalActionSummary(object sender, vlnTreeEventArgs args)
{
DialogResult dr = System.Windows.Forms.DialogResult.Yes;
@@ -3601,9 +3604,13 @@ namespace VEPROMS
if (tn == null)
return;
_ExpandingTree = true;
tn.LoadingChildrenDone -= new VETreeNodeEvent(tn_LoadingChildrenDone);
tn.LoadingChildrenDone += new VETreeNodeEvent(tn_LoadingChildrenDone);
tn.LoadingChildrenMax -= new VETreeNodeEvent(tn_LoadingChildrenMax);
tn.LoadingChildrenMax += new VETreeNodeEvent(tn_LoadingChildrenMax);
tn.LoadingChildrenValue -= new VETreeNodeEvent(tn_LoadingChildrenValue);
tn.LoadingChildrenValue += new VETreeNodeEvent(tn_LoadingChildrenValue);
tn.LoadingChildrenSQL -= new VETreeNodeEvent(tn_LoadingChildrenSQL);
tn.LoadingChildrenSQL += new VETreeNodeEvent(tn_LoadingChildrenSQL);
tn.LoadChildren(true);
}
@@ -4324,7 +4331,11 @@ namespace VEPROMS
_LastStepRTB.EditModeChanged -= new StepRTBEvent(_LastStepRTB_EditModeChanged);
_LastStepRTB = args != null && args.MyEditItem != null ? args.MyEditItem.MyStepRTB : null;
if (_LastStepRTB != null) _LastStepRTB.EditModeChanged += new StepRTBEvent(_LastStepRTB_EditModeChanged);
if (_LastStepRTB != null)
{
_LastStepRTB.EditModeChanged -= new StepRTBEvent(_LastStepRTB_EditModeChanged);
_LastStepRTB.EditModeChanged += new StepRTBEvent(_LastStepRTB_EditModeChanged);
}
lblEditView.Text = " ";
if (args == null)
@@ -4459,6 +4470,7 @@ namespace VEPROMS
displayHistory.MyEditItem = args.MyEditItem;
lblEditView.Text = args.MyEditItem.MyStepPanel.VwMode == E_ViewMode.Edit ? "Edit" : "View";
_CurrentItem.Deleted -= new ItemInfoEvent(_CurrentItem_Deleted);
_CurrentItem.Deleted += new ItemInfoEvent(_CurrentItem_Deleted);
dlgFindReplace.MyEditItem = args.MyEditItem;
SpellChecker.MyEditItem = args.MyEditItem;

View File

@@ -0,0 +1,45 @@
using System;
using System.Collections.Generic;
using System.Text;
using System.ComponentModel;
namespace VEPROMS.CSLA.Library
{
//C2025-023 - Electronic Procedures - Modifications to PROMS
//new class to handle access of tblAnnotations.Config
[Serializable]
[TypeConverter(typeof(ExpandableObjectConverter))]
public class AnnotationConfig : ConfigDynamicTypeDescriptor, INotifyPropertyChanged
{
private XMLProperties _Xp;
private XMLProperties Xp
{
get { return _Xp; }
}
public AnnotationConfig(string xml)
{
if (xml == string.Empty) xml = "<Config/>";
_Xp = new XMLProperties(xml);
}
public AnnotationConfig()
{
_Xp = new XMLProperties();
}
public override string ToString()
{
string s = _Xp.ToString();
if (s == "<Config/>" || s == "<Config></Config>") return string.Empty;
return s;
}
public string GetValue(string group, string item)
{
return _Xp[group, item];
}
public void SetValue(string group, string item, string newvalue)
{
_Xp[group, item] = newvalue;
}
}
}

View File

@@ -19,6 +19,7 @@ using System.Xml;
using System.Drawing;
using System.ComponentModel;
using System.Collections.Generic;
using Volian.Base.Library;
namespace VEPROMS.CSLA.Library
{
@@ -226,6 +227,34 @@ namespace VEPROMS.CSLA.Library
//}
}
OnFormatLoaded(null, new FormatEventArgs("Formats Updated"));
//C2025-023 - Electronic Procedures - Modifications to PROMS
//Begin section for processing Electronic Procedure (EP) Format Files
// now loop through all EP format files
string epPath = fmtPath.Replace("\\fmtall", "\\epall");
DirectoryInfo diEP = new DirectoryInfo(epPath);
if (diEP.Exists)
{
FileInfo[] fisEP = diEP.GetFiles("*.xml");
OnFormatLoaded(null, new FormatEventArgs(fisEP.Length.ToString() + " EP Formats to Load"));
foreach (FileInfo fi in fisEP)
{
string fmtname = Path.GetFileNameWithoutExtension(fi.Name);
try
{
AddEPFormatToDB(fmtname, DateTime.Now, VlnSettings.UserID, epPath);
}
catch (Exception ex)
{
Console.WriteLine("{0} - {1}", ex.GetType().Name, ex.Message);
}
}
OnFormatLoaded(null, new FormatEventArgs("EP Formats Updated"));
// update all in-use annotation types that have Electronic Procedures
EPFormatFile.UpdateAllInUseEPAnnotationTypes();
}
}
private static Dictionary<string, int> _LookupFormats;
@@ -338,8 +367,54 @@ namespace VEPROMS.CSLA.Library
}
return rec;
}
//C2025-023 - Electronic Procedures - Modifications to PROMS
//Procedure to load the EP format fiels into the DB
private static void AddEPFormatToDB(string formatname, DateTime Dts, string Userid, string epPath)
{
string fmtdata = null;
FileInfo fmtfi = null;
XmlDocument xd = null;
OnFormatLoaded(null, new FormatEventArgs("Loading Format " + formatname));
string path = Path.Combine(epPath, formatname + ".xml");
if (File.Exists(path))
{
try
{
using (StreamReader srf = new StreamReader(path))
{
fmtfi = new FileInfo(path);
xd = new XmlDocument();
xd.XmlResolver = null;
xd.Load(srf);
fmtdata = xd.OuterXml;
}
}
catch (Exception ex)
{
OnFormatLoaded(null, new FormatEventArgs("Error Loading Format " + formatname));
_MyLog.ErrorFormat($"AddEPFormatToDB('{path}')");
return;
}
}
if (string.IsNullOrEmpty(Userid)) Userid = "Migration";
try
{
EPFormatFile.UpdateEPFormat(formatname, fmtdata, Userid);
}
catch (Exception ex)
{
_MyLog.ErrorFormat($"AddFormatToDB-make format('{path}')");
}
}
}
public partial class FormatInfo : IFormatOrFormatInfo
public partial class FormatInfo : IFormatOrFormatInfo
{
//transition report stuff
private static Dictionary<int, string> _TransitionTypes;

View File

@@ -449,10 +449,9 @@ namespace VEPROMS.CSLA.Library
{
StringBuilder sret = new StringBuilder();
ItemInfo pitem = this;
while (!pitem.IsSection && !pitem.IsHigh)
{
using (StepInfo stpinfo = StepInfo.Get(pitem.ItemID))
using (StepInfo stpinfo = StepInfo.Get(pitem.ItemID))
{
string thisTab = stpinfo.MyTab.CleanText;
@@ -2112,6 +2111,56 @@ namespace VEPROMS.CSLA.Library
return (sd.Type == type);
}
// C2025-023 - Electronic Procedures - Modifications to PROMS
//return EPFields that match this step type or a parent step type
public EPFields GetValidEPFields(int AnnTypeID)
{
EPFields filtered = new EPFields();
if (ActiveFormat.PlantFormat.EPFormatFiles.Count == 0) return filtered;
if ((int)MyContent.Type < 20000) return filtered;
EPFields unfiltered = ActiveFormat.PlantFormat.EPFormatFiles.Find(x => x.AnnotationTypeID == AnnTypeID)?.FieldList;
if (unfiltered == null) return filtered;
//Build list of step type and step type of it's parents
List<string> steptypelist = new List<string>();
int stepType = ((int)MyContent.Type) % 10000;
StepDataList sdlist = ActiveFormat.PlantFormat.FormatData.StepDataList;
if (stepType > sdlist.MaxIndex)
{
Console.WriteLine("Error getting type - contentid = {0}", MyContent.ContentID);
return filtered;
}
StepData sd = sdlist[stepType];
while (sd.Index != 0)
{
steptypelist.Add(sd.Type);
sd = sdlist[sd.ParentType];
}
//if unfiltered list contains All as a step type, include it
foreach (EPField EP in unfiltered)
{
//if unfiltered list contains All as a step type, include it
if (EP.IsValidForStepType("All"))
filtered.Add(EP);
//check for intersections between unfiltered list and step type list
List<string> tmpEP = EP.validforsteptypes();
if (tmpEP.Any(steptypelist.Contains))
filtered.Add(EP);
}
return filtered;
}
// C2025-023 - Electronic Procedures - Modifications to PROMS
//return true if any EP Format files attached to the item's
public bool HasEPformat(int AnnTypeID)
{
return GetValidEPFields(AnnTypeID).Count > 0;
}
// determine if the the current step should automatically be placed on the Continuous Action Summary
// Note, this logic only checks the format setting of the step. We will check the value of the Tag's Check Box later on.
public bool IncludeOnContActSum
@@ -4655,43 +4704,50 @@ namespace VEPROMS.CSLA.Library
int localPrintLevel = PrintLevel;
StepSectionData sd = ActiveFormat.PlantFormat.FormatData.SectData.StepSectionData;
bool doMeta = false;
if (sd.StepSectionLayoutData.TieTabToLevel && ActiveFormat.PlantFormat.FormatData.SectData.UseMetaSections)
if (sd.StepSectionLayoutData.TieTabToLevel) // C2025-036 reduce un-needed processing
{
if (sd.StepSectionLayoutData.ShowSectionTitles
&& !MyDocStyle.CancelSectTitle
&& !(MyDocStyle.SpecialStepsFoldout && MyDocStyle.UseColSByLevel))
localPrintLevel = PrintLevel + (((ActiveFormat.PlantFormat.FormatData.Express && IsSequential)) ? 0 : CurrentSectionLevel());
if (!ActiveFormat.PlantFormat.FormatData.Express) doMeta = true;
}
if (sd.StepSectionLayoutData.TieTabToLevel && ActiveFormat.PlantFormat.FormatData.SectData.CountSubSectionsForLevel)
if (SectionLevel() > 1)
if (ActiveFormat.PlantFormat.FormatData.SectData.UseMetaSections)
{
if (sd.StepSectionLayoutData.ShowSectionTitles
&& !MyDocStyle.CancelSectTitle
&& !(MyDocStyle.SpecialStepsFoldout && MyDocStyle.UseColSByLevel))
localPrintLevel = PrintLevel + (((ActiveFormat.PlantFormat.FormatData.Express && IsSequential)) ? 0 : CurrentSectionLevel());
if (!ActiveFormat.PlantFormat.FormatData.Express) doMeta = true;
}
if (ActiveFormat.PlantFormat.FormatData.SectData.CountSubSectionsForLevel && (SectionLevel() > 1))
localPrintLevel += 1;
}
SeqTabFmtList seqtabs = ActiveFormat.PlantFormat.FormatData.SectData.StepSectionData.SeqTabFmtList;
// Start with basic cases of alpha/numeric/seq:
// If we have metasections AND...
// If the seqtabs for this given level does not get a section number, use the seqtab rather than
// the ident of the step:
bool useSubStepTabs = false;
if (doMeta && IsHigh
&& !seqtabs[(localPrintLevel < 0 ? 0 : localPrintLevel) % seqtabs.MaxIndex].TabToken.Contains("{numericWpar}")
&& tbformat.Contains("{")) useSubStepTabs = true;
// Check to be sure the parent tab should be included... If this sequential is within a note
// or caution or equipment list, don't use parent tab AND always start the numbering as a numeric
if (doMeta && IsSequential && (InNote() || InCaution() ||
(MyParent.IsEquipmentList && !MyParent.FormatStepData.TabData.IdentPrint.Contains("{seq}"))))
if (doMeta) // C2025-036 reduce un-needed processing
{
// if immediate parent is note, caution or equip, use numeric, otherwise use alpha.
localPrintLevel = 0;
int lv = 0;
ItemInfo ii = MyParent;
while (!ii.IsCaution && !ii.IsNote && !ii.IsEquipmentList)
if (IsHigh
&& !seqtabs[(localPrintLevel < 0 ? 0 : localPrintLevel) % seqtabs.MaxIndex].TabToken.Contains("{numericWpar}")
&& tbformat.Contains("{")) useSubStepTabs = true;
// Check to be sure the parent tab should be included... If this sequential is within a note
// or caution or equipment list, don't use parent tab AND always start the numbering as a numeric
if (IsSequential && (InNote() || InCaution() ||
(MyParent.IsEquipmentList && !MyParent.FormatStepData.TabData.IdentPrint.Contains("{seq}"))))
{
lv++;
ii = ii.MyParent;
// if immediate parent is note, caution or equip, use numeric, otherwise use alpha.
localPrintLevel = 0;
int lv = 0;
ItemInfo ii = MyParent;
while (!ii.IsCaution && !ii.IsNote && !ii.IsEquipmentList)
{
lv++;
ii = ii.MyParent;
}
lv = lv % 2;
tbformat = (lv == 0) ? "{numeric}." : "{alpha}.";
}
lv = lv % 2;
tbformat = (lv == 0) ? "{numeric}." : "{alpha}.";
}
bool trimTabStart = false;
bool dontTrimParentTabBeforeAppending = false; // B2019-011 for Barakah Alarm format
@@ -4757,7 +4813,7 @@ namespace VEPROMS.CSLA.Library
PrintLevel = 0;
// If token includes 'Wpar', the parent tab prefix's the tab.
if (localPrintLevel > 0 && (tbformat.IndexOf("{numericWpar}") > -1 || tbformat.IndexOf("{alphaWpar}") > -1 || tbformat.IndexOf("{ALPHAWpar}") > -1))
if (localPrintLevel > 0 && tbformat.Contains("Wpar}")) // C2025-036 reduce un-needed processing
{
string parentTab = null;
ItemInfo myparent = ActiveParent as ItemInfo;
@@ -4872,18 +4928,21 @@ namespace VEPROMS.CSLA.Library
}
string alpha = useLinked?LinkedTab.Trim():AlphabeticalNumbering(ordinal);
if (trimSeqValue) alpha = alpha.Trim(); // F2024-043 trim white around SEQ tab value (for sub-steps)
// B2017-211 Roman High Level steps should be followed by Uppercase alpha substeps - This is being limited to Calvert SAMG Format
if (_ActiveFormat.Name =="BGESAM1" &&MyParent != null && MyParent.IsHigh && MyParent.IsStep && MyParent.FormatStepData.TabData.IdentEdit.Contains("ROMAN"))
tbformat = tbformat.Replace("{alpha}", alpha);
else
tbformat = tbformat.Replace("{alpha}", alpha.ToLower());
tbformat = tbformat.Replace("{alphaWpar}", alpha.ToLower());
if (ActiveFormat.PlantFormat.FormatData.PrintData.SpecialCaseCalvert && tbformat.Contains("{ALPHA}") && alpha.Length > 1)
tbformat = tbformat.Replace("{ALPHA}. ", alpha + "."); // if double chars, remove one of the space for BGE
else
tbformat = tbformat.Replace("{ALPHA}", alpha);
if (tbformat.ToUpper().Contains("{ALPHA")) // C2025-036 reduce un-needed processing
{
// B2017-211 Roman High Level steps should be followed by Uppercase alpha substeps - This is being limited to Calvert SAMG Format
if (_ActiveFormat.Name == "BGESAM1" && MyParent != null && MyParent.IsHigh && MyParent.IsStep && MyParent.FormatStepData.TabData.IdentEdit.Contains("ROMAN"))
tbformat = tbformat.Replace("{alpha}", alpha);
else
tbformat = tbformat.Replace("{alpha}", alpha.ToLower());
tbformat = tbformat.Replace("{alphaWpar}", alpha.ToLower());
if (ActiveFormat.PlantFormat.FormatData.PrintData.SpecialCaseCalvert && tbformat.Contains("{ALPHA}") && alpha.Length > 1)
tbformat = tbformat.Replace("{ALPHA}. ", alpha + "."); // if double chars, remove one of the space for BGE
else
tbformat = tbformat.Replace("{ALPHA}", alpha);
tbformat = tbformat.Replace("{ALPHAWpar}", alpha);
tbformat = tbformat.Replace("{ALPHAWpar}", alpha);
}
if (tbformat.ToUpper().Contains("ROMAN"))
{
string roman = RomanNumbering(ordinal);
@@ -4891,15 +4950,18 @@ namespace VEPROMS.CSLA.Library
tbformat = tbformat.Replace("{ROMAN}", roman);
tbformat = tbformat.Substring(0, tbformat.Length - ((roman.Length - 1) > 0 ? (roman.Length - 1) : 0));
}
if (tbformat.Contains("{numeric}") && ((MyDocStyle.StructureStyle.Style & E_DocStructStyle.DSS_AddDotZeroStdHLS) == E_DocStructStyle.DSS_AddDotZeroStdHLS) && MyContent.Type == 20002)
if (tbformat.Contains("{numeric}")) // C2025-036 reduce un-needed processing
{
tbformat = tbformat.Replace("{numeric}", ordinal.ToString().PadLeft(2) + ".0");
tbformat = tbformat.Substring(0, tbformat.Length - 2);
}
if (tbformat.Contains("{numeric}") && (this.FormatStepData.AppendDotZero)) // F2018-022 Added step type flag to append a ".0" to the end of the high level step - put in for Westinghouse single column format (wst1)
{
string numtxt = ordinal.ToString().PadLeft(2) + ".0";
tbformat = tbformat.Replace("{numeric}.", numtxt).Replace("{numeric}", numtxt);
if (((MyDocStyle.StructureStyle.Style & E_DocStructStyle.DSS_AddDotZeroStdHLS) == E_DocStructStyle.DSS_AddDotZeroStdHLS) && MyContent.Type == 20002)
{
tbformat = tbformat.Replace("{numeric}", ordinal.ToString().PadLeft(2) + ".0");
tbformat = tbformat.Substring(0, tbformat.Length - 2);
}
if (this.FormatStepData.AppendDotZero) // F2018-022 Added step type flag to append a ".0" to the end of the high level step - put in for Westinghouse single column format (wst1)
{
string numtxt = ordinal.ToString().PadLeft(2) + ".0";
tbformat = tbformat.Replace("{numeric}.", numtxt).Replace("{numeric}", numtxt);
}
}
// if this is a wolf creek background, if the tbformat ends with a '.' don't add a space,
// otherwise add a space.
@@ -8263,6 +8325,7 @@ namespace VEPROMS.CSLA.Library
if (_ProcedureConfig == null)
{
_ProcedureConfig = new ProcedureConfig(this);
this.MyContent.Changed -= new ContentInfoEvent(MyContent_Changed);
this.MyContent.Changed += new ContentInfoEvent(MyContent_Changed);
}
return _ProcedureConfig;
@@ -8272,6 +8335,7 @@ namespace VEPROMS.CSLA.Library
void MyContent_Changed(object sender)
{
this.MyContent.Changed -= new ContentInfoEvent(MyContent_Changed);
this.MyContent.Changed += new ContentInfoEvent(MyContent_Changed);
}
#endregion

View File

@@ -0,0 +1,412 @@
using System;
using System.Collections.Generic;
using System.Text;
using System.ComponentModel;
using System.Xml;
using System.Linq;
using System.Data.SqlClient;
using System.Data;
using Csla.Data;
using static VEPROMS.CSLA.Library.ROFSTLookup;
namespace VEPROMS.CSLA.Library
{
//C2025-023 - Electronic Procedures - Modifications to PROMS
// class to handle storage and access of EPFormatFile and EPFormatFile details
#region EPFormatFiles
[TypeConverter(typeof(vlnListConverter<EPFormatFiles, EPFormatFile>))]
public class EPFormatFiles : vlnFormatList<EPFormatFile>
{
public EPFormatFiles(XmlNodeList xmlNodeList) : base(xmlNodeList) { }
}
#endregion
#region EPFormatFile
public class EPFormatFile : vlnFormatItem
{
#region Constructor
public EPFormatFile(XmlNode xmlNode) : base(xmlNode) { }
public EPFormatFile() : base() { }
#endregion
#region Business Fields
// Name of the EP Viewer Format File
private LazyLoad<string> _Name;
[DisplayName("Name")]
[Description("EP Viewer File Name")]
public string Name
{
get
{
return LazyLoad(ref _Name, "@Name");
}
}
// Name of the EP Viewer Format File
private LazyLoad<string> _Description;
[DisplayName("Description")]
[Description("EP Viewer Description")]
public string Description
{
get
{
return LazyLoad(ref _Description, "@Description");
}
}
// Id of Annotation Type Associated with this file
private LazyLoad<int?> _AnnotationTypeID;
[DisplayName("AnnotationTypeID")]
[Description("Id of Annotation Type Associated with this file")]
public int? AnnotationTypeID
{
get
{
return LazyLoad(ref _AnnotationTypeID, "@AnnotationTypeID");
}
}
// returns a list of fields that are defined in the EP format's structure
private EPFields _FieldList;
public EPFields FieldList
{
get
{
XmlDocument xd = GetEPFormatData(Name);
return _FieldList == null ? _FieldList = new EPFields(xd.SelectNodes("/EPFormat/EPField")) : _FieldList;
}
}
#endregion
#region Business Methods
// update all in-use annotation types that have Electronic Procedures
public static void UpdateAllInUseEPAnnotationTypes()
{
foreach (int formatid in GetAllInUseFormats())
{
PlantFormat frmt = FormatInfo.Get(formatid).PlantFormat;
foreach (EPFormatFile EP in frmt.EPFormatFiles)
{
UpdateAnnotationTypeAsEP((int) EP.AnnotationTypeID);
}
}
}
#endregion
#region Data Access
// static - Load EP Format details - save to db (insert/update)
public static void UpdateEPFormat(string name, string data, string userID)
{
using (SqlConnection cn = Database.VEPROMS_SqlConnection)
{
using (SqlCommand cm = cn.CreateCommand())
{
cm.CommandType = CommandType.StoredProcedure;
cm.CommandText = "vesp_UpdateEPFormat";
cm.Parameters.AddWithValue("@name", name);
cm.Parameters.AddWithValue("@data", data);
cm.Parameters.AddWithValue("@userID", userID);
cm.CommandTimeout = Database.DefaultTimeout;
cm.ExecuteNonQuery();
}
}
}
// load data for getting fieldlist for this EPFormat
public static XmlDocument GetEPFormatData(string name)
{
name = name.Replace(".xml", "");
using (SqlConnection cn = Database.VEPROMS_SqlConnection)
{
using (SqlCommand cm = cn.CreateCommand())
{
cm.CommandType = CommandType.Text;
cm.CommandText = "Select Data FROM EPFormats where Name = @Name";
cm.Parameters.AddWithValue("@Name", name);
cm.CommandTimeout = Database.DefaultTimeout;
using (SafeDataReader dr = new SafeDataReader(cm.ExecuteReader()))
{
if (dr.Read())
{
XmlDocument xd = new XmlDocument();
xd.XmlResolver = null;
xd.LoadXml(dr.GetString("Data"));
return xd;
}
}
}
}
return null;
}
// Get all in-use formats
public static List<int> GetAllInUseFormats()
{
using (SqlConnection cn = Database.VEPROMS_SqlConnection)
{
using (SqlCommand cm = cn.CreateCommand())
{
cm.CommandType = CommandType.Text;
cm.CommandText = @"SELECT Distinct Formats.[FormatID]
FROM
(
SELECT FormatID FROM Contents
UNION
SELECT FormatID FROM DocVersions
UNION
SELECT FormatID FROM Folders
) inuse
inner join Formats
on inuse.FormatID = Formats.FormatID";
cm.CommandTimeout = Database.DefaultTimeout;
using (DataTable dt = new DataTable())
{
using (SqlDataAdapter da = new SqlDataAdapter(cm))
{
da.Fill(dt);
return dt.AsEnumerable().Select(x => x.Field<int>("FormatID")).ToList();
}
}
}
}
}
// update an annotation type as an Electronic Procedure Annotation Type
public static void UpdateAnnotationTypeAsEP(int typeID)
{
using (SqlConnection cn = Database.VEPROMS_SqlConnection)
{
using (SqlCommand cm = cn.CreateCommand())
{
cm.CommandType = CommandType.Text;
cm.CommandText = @"Update AnnotationTypes
SET IsEPAnnotationType = 1
WHERE TypeID = @typeID";
cm.Parameters.AddWithValue("@typeID", typeID);
cm.CommandTimeout = Database.DefaultTimeout;
cm.ExecuteNonQuery();
}
}
}
// Returns true if there are any EP Annotation Types
public static bool IsEPAnnotationType()
{
try
{
using (SqlConnection cn = Database.VEPROMS_SqlConnection)
{
using (SqlCommand cm = cn.CreateCommand())
{
cm.CommandType = CommandType.Text;
cm.CommandText = @"SELECT RESULT = CASE WHEN
EXISTS(SELECT 1 FROM AnnotationTypes where IsEPAnnotationType = 1)
THEN 1 ELSE 0 END";
cm.CommandTimeout = Database.DefaultTimeout;
using (SafeDataReader dr = new SafeDataReader(cm.ExecuteReader()))
{
if (dr.Read() && dr.GetInt32("RESULT") == 1)
return true;
}
}
}
}
catch
{
// EP Support has not yet been added for this DB
// IsEPAnnotationType does not exist
// need to run PROMS Fixes
// until then will ignore EP code
// instead of crashing for a field not found
}
return false;
}
#endregion
}
public class EPFields : vlnFormatList<EPField>
{
public EPFields()
{
}
public EPFields(XmlNodeList xmlNodeList) : base(xmlNodeList) { }
}
// EP field class
public class EPField : vlnFormatItem
{
public EPField(XmlNode xmlNode) : base(xmlNode) { }
public EPField() : base() { }
private LazyLoad<string> _name;
public string name
{
get
{
return LazyLoad(ref _name, "@name");
}
}
private LazyLoad<string> _type;
public string type
{
get
{
return LazyLoad(ref _type, "@type");
}
}
private LazyLoad<string> _label;
public string label
{
get
{
string tmp = LazyLoad(ref _label, "@label");
if (string.IsNullOrEmpty(tmp))
return LazyLoad(ref _name, "@name");
else
return tmp;
}
}
private LazyLoad<string> _text;
public string text
{
get
{
return LazyLoad(ref _text, "@text");
}
}
//roid of group item that individual sub-items will be the choices for the list/combobox for ROSINGLE and ROMULTI
private LazyLoad<string> _rosource;
public string rosource
{
get
{
return LazyLoad(ref _rosource, "@rosource");
}
}
//the columns in the RO that will be included in the exports
private LazyLoad<string> _returncols;
public List<string> returncols()
{
try
{
string tmp = LazyLoad(ref _returncols, "@returncols");
if (string.IsNullOrEmpty(tmp))
return new List<string>();
else
return tmp.Split(',').Select(p => p.Trim()).ToList();
}
catch
{
throw new ArgumentException($"Error in returncols for EP file: {((EPFormatFile)MyParentFormat).Name}.xml, field: {name}");
}
}
//number of lines for a multi-line text box to span
private LazyLoad<int?> _numlines;
public int numlines
{
get
{
int? tmp = LazyLoad(ref _numlines, "@numlines");
if (tmp == null)
return 1;
return (int) tmp;
}
}
//step types that the EPForma Item is valid for (as a list of types)
private LazyLoad<string> _validforsteptypes;
public List<string> validforsteptypes()
{
try
{
string tmp = LazyLoad(ref _validforsteptypes, "@validforsteptypes");
return tmp.Split(',').Select(p => p.Trim()).ToList();
}
catch
{
throw new ArgumentException($"Error in validforsteptypes for EP file: {((EPFormatFile) MyParentFormat).Name}.xml, field: {name}");
}
}
public bool IsValidForStepType(string StepType)
{
List<string> tmp = validforsteptypes();
return tmp.Contains(StepType);
}
//return a list of items based on the ROsource specified in the EPFormat File
//will return all RO items under the Group that's roid = the rosource
public List<ROListItem> getROList(AnnotationInfo currAnn, bool includeblank)
{
if (string.IsNullOrEmpty(rosource))
return new List<ROListItem>();
try
{
DocVersionInfo MyDocVersion = currAnn.MyItem.MyDocVersion;
ROFSTLookup lookup = MyDocVersion.DocVersionAssociations[0].MyROFst.GetROFSTLookup(MyDocVersion);
string roid = FormatRoidKey(rosource, false);
rochild[] children = lookup.GetRoChildrenByRoid(roid);
List<ROListItem> mylist = children.Select(x => new ROListItem(x.title, x.roid.Substring(0, 12))).ToList();
if (includeblank)
mylist.Insert(0, new ROListItem("", ""));
return mylist;
}
catch (Exception Ex)
{
throw new ArgumentException($"Error in rosource for EP file: {((EPFormatFile)MyParentFormat).Name}.xml, field: {name}");
}
}
//return a list of values for the specified ROID
//given the EP items return columns
//will return all RO items under the Group that's roid = the rosource
public List<string> getROValuesList(AnnotationInfo currAnn, string roid)
{
if (string.IsNullOrEmpty(roid))
return new List<string>();
List<string> values = new List<string>();
DocVersionInfo MyDocVersion = currAnn.MyItem.MyDocVersion;
ROFSTLookup lookup = MyDocVersion.DocVersionAssociations[0].MyROFst.GetROFSTLookup(MyDocVersion);
rochild ro = lookup.GetRoChild(roid);
List<string> rtncols = returncols();
if (rtncols.Count == 0)
{
values.Add(ro.value);
}
else
{
foreach (string rcol in rtncols)
{
rochild ro_indiv = Array.Find(ro.children, x => x.appid.EndsWith($".{rcol}"));
if (ro_indiv.value != null) values.Add(ro_indiv.value);
}
}
return values;
}
}
#endregion
//C2025-023 - Electronic Procedures - Modifications to PROMS
// class to handle return of RO Lists
#region EPFormatFiles
public class ROListItem
{
public string Text { get; private set; }
public string Value { get; private set; }
public ROListItem(string _text, string _value)
{
Text = _text; Value = _value;
}
}
#endregion
}

View File

@@ -192,6 +192,18 @@ namespace VEPROMS.CSLA.Library
}
return (retlist);
}
//C2025-023 - Electronic Procedures - Modifications to PROMS
// EPFormatFiles contains which Electronic Procedure Format files apply to this main format file.
private EPFormatFiles _EPFormatFiles;
public EPFormatFiles EPFormatFiles
{
get
{
if (_EPFormatFiles == null) _EPFormatFiles = new EPFormatFiles(XmlDoc.SelectNodes("/PlantFormat/EPFormatFiles/EPFormatFile"));
return _EPFormatFiles;
}
}
}
#endregion
#region VE_Font

View File

@@ -57,6 +57,8 @@ namespace VEPROMS.CSLA.Library
XmlNode xn = xmlNode.SelectSingleNode(path);
if (xmlNode.Name == "Box") return xn; // if box, don't do inheritance.
if (xmlNode.Name == "DocStyle") return xn;
//C2025-023 - Electronic Procedures - Modifications to PROMS
if (xmlNode.Name == "EPField") return xn; // if Electronic Procedure Field, don't do inheritance.
if (xmlNode.Name == "StructureStyle")
{
Volian.Base.Library.DebugText.WriteLine("vlnFormatDocument:LookupSingleNode:StructureStyle - shouldn't get to this line of code.\r\nPath = {0}", path);

View File

@@ -18,6 +18,8 @@ using System.IO;
using System.ComponentModel;
using System.Collections.Generic;
using Csla.Validation;
using System.Linq;
namespace VEPROMS.CSLA.Library
{
/// <summary>
@@ -207,6 +209,27 @@ namespace VEPROMS.CSLA.Library
}
}
}
//C2025-023 - Electronic Procedures - Modifications to PROMS
// Is Annotation Type an EP Annotation?
private bool _IsEPAnnotationType = false;
public bool IsEPAnnotationType
{
[System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.NoInlining)]
get
{
return _IsEPAnnotationType;
}
[System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.NoInlining)]
set
{
if (_IsEPAnnotationType != value)
{
_IsEPAnnotationType = value;
PropertyHasChanged();
}
}
}
private byte[] _LastChanged = new byte[8];//timestamp
private int _AnnotationTypeAnnotationCount = 0;
/// <summary>
@@ -712,6 +735,8 @@ namespace VEPROMS.CSLA.Library
_UserID = dr.GetString("UserID");
dr.GetBytes("LastChanged", 0, _LastChanged, 0, 8);
_AnnotationTypeAnnotationCount = dr.GetInt32("AnnotationCount");
if (dr.GetSchemaTable().Rows.OfType<DataRow>().Any(row => row["ColumnName"].ToString() == "IsEPAnnotationType"))
_IsEPAnnotationType = (bool)dr.GetValue("IsEPAnnotationType");
MarkOld();
}
catch (Exception ex)

View File

@@ -17,6 +17,8 @@ using System.Configuration;
using System.IO;
using System.ComponentModel;
using System.Collections.Generic;
using System.Linq;
namespace VEPROMS.CSLA.Library
{
public delegate void AnnotationTypeInfoEvent(object sender);
@@ -135,6 +137,19 @@ namespace VEPROMS.CSLA.Library
return _UserID;
}
}
//C2025-023 - Electronic Procedures - Modifications to PROMS
// Is Annotation Type an EP Annotation?
private bool _IsEPAnnotationType = false;
public bool IsEPAnnotationType
{
[System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.NoInlining)]
get
{
return _IsEPAnnotationType;
}
}
private int _AnnotationTypeAnnotationCount = 0;
/// <summary>
/// Count of AnnotationTypeAnnotations for this AnnotationType
@@ -312,6 +327,8 @@ namespace VEPROMS.CSLA.Library
_DTS = dr.GetDateTime("DTS");
_UserID = dr.GetString("UserID");
_AnnotationTypeAnnotationCount = dr.GetInt32("AnnotationCount");
if (dr.GetSchemaTable().Rows.OfType<DataRow>().Any(row => row["ColumnName"].ToString() == "IsEPAnnotationType"))
_IsEPAnnotationType = (bool)dr.GetValue("IsEPAnnotationType");
}
catch (Exception ex)
{

View File

@@ -0,0 +1,175 @@
using System;
using System.Collections.Generic;
using System.Collections;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Data;
using System.Data.SqlClient;
using System.Text.RegularExpressions;
using Csla;
using Csla.Data;
using System.Configuration;
using System.IO;
using System.ComponentModel;
//namespace VEPROMS.CSLA.Library;
// C2025-027 this new file is used to support (data retrival) for selecting Annotation types to display on the Annotation screen. This is related to Annotation type filtering through V->Options.
namespace VEPROMS.CSLA.Library
{
public class AnnotationstypeSelections
{
public static DataTable Get(string UserID)
{
using (SqlConnection cn = Database.VEPROMS_SqlConnection)
{
using (SqlCommand cm = cn.CreateCommand())
{
try
{
cm.CommandType = CommandType.StoredProcedure;
cm.CommandText = "getAnnotationstypeFiltered";
cm.CommandTimeout = Database.DefaultTimeout;
cm.Parameters.AddWithValue("@UsrID", UserID);
SqlDataAdapter da = new SqlDataAdapter(cm);
SqlDataReader reader = cm.ExecuteReader();
DataTable dt = new DataTable();
dt.Load(reader);
// if the user has not created a annotation sub-set list saved to AnnotationTypeSelections table.
if (dt.Rows.Count < 1)
{
DataRow row;
int rowflg = 0;
foreach (AnnotationTypeInfo annosel in DataPortal.Fetch<AnnotationTypeInfoList>())
{
// C2025-027 need to use a datatable instead of AnnotationTypeInfoList so the global search Annotations will not be effected by the Annotation select list selections
if (rowflg == 0)
{
row = dt.NewRow();
dt.Rows.Add(row);
rowflg = 1;
}
else
{
row = dt.NewRow();
row["TypeID"] = annosel.TypeID;
row["Name"] = annosel.Name;
row["Config"] = annosel.Config;
row["DTS"] = annosel.DTS;
row["UserID"] = annosel.UserID;
row["IsEPAnnotationType"] = annosel.IsEPAnnotationType;
dt.Rows.Add(row);
}
};
}
return dt;
}
catch (Exception ex)
{
//B2025-004
//if it fails loading previously open tabs, simply treat it as if no tabs were open
//instead of crashing
return new DataTable();
}
}
}
}
public static DataTable Retrieve(string UserID)
{
using (SqlConnection cn = Database.VEPROMS_SqlConnection)
{
using (SqlCommand cm = cn.CreateCommand())
{
try
{
cm.CommandType = CommandType.StoredProcedure;
cm.CommandText = "getAnnotationstypeSelections";
cm.CommandTimeout = Database.DefaultTimeout;
cm.Parameters.AddWithValue("@UsrID", UserID);
SqlDataAdapter da = new SqlDataAdapter(cm);
SqlDataReader reader = cm.ExecuteReader();
DataTable dt = new DataTable();
dt.Load(reader);
return dt;
}
catch (Exception ex)
{
//B2025-004
//if it fails loading previously open tabs, simply treat it as if no tabs were open
//instead of crashing
return new DataTable();
}
}
}
}
public static DataTable GetAnnoTypes(string UserID)
{
using (SqlConnection cn = Database.VEPROMS_SqlConnection)
{
using (SqlCommand cm = cn.CreateCommand())
{
try
{
cm.CommandType = CommandType.StoredProcedure;
cm.CommandText = "getAnnotationSelectListTypes";
cm.CommandTimeout = Database.DefaultTimeout;
SqlDataAdapter da = new SqlDataAdapter(cm);
cm.Parameters.AddWithValue("@UserID", UserID);
SqlDataReader reader = cm.ExecuteReader();
DataTable dt = new DataTable();
dt.Load(reader);
return dt;
}
catch (Exception ex)
{
//B2025-004
//if it fails loading previously open tabs, simply treat it as if no tabs were open
//instead of crashing
return new DataTable();
}
}
}
}
public static void Update(DataTable dt, string UserID)
{
using (SqlConnection cn = Database.VEPROMS_SqlConnection)
{
using (SqlCommand cm = cn.CreateCommand())
{
try
{
cm.CommandType = CommandType.StoredProcedure;
cm.CommandText = "UpdateAnnotationstypeSelections";
cm.CommandTimeout = Database.DefaultTimeout;
//Pass table Valued parameter to Store Procedure
SqlParameter sqlParam = cm.Parameters.AddWithValue("@TempTable", dt);
sqlParam.SqlDbType = SqlDbType.Structured;
cm.Parameters.AddWithValue("@UserID", UserID);
cm.ExecuteNonQuery();
}
catch (Exception ex)
{
throw new DbCslaException("Error in UpdateAnnotationstypeSelections: update failed", ex);
}
}
}
}
}
}

View File

@@ -386,12 +386,19 @@ namespace VEPROMS.CSLA.Library
ItemInfo myItemInfo = o as ItemInfo;
if (myItemInfo != null)
{
myItemInfo.Deleted -= new ItemInfoEvent(myItemInfo_Deleted);
myItemInfo.Deleted += new ItemInfoEvent(myItemInfo_Deleted);
myItemInfo.ChildrenDeleted -= new ItemInfoEvent(myItemInfo_ChildrenDeleted);
myItemInfo.ChildrenDeleted += new ItemInfoEvent(myItemInfo_ChildrenDeleted);
myItemInfo.MyContent.Changed -= new ContentInfoEvent(NodeText_Changed);
myItemInfo.MyContent.Changed += new ContentInfoEvent(NodeText_Changed);
myItemInfo.OrdinalChanged -= new ItemInfoEvent(NodeText_Changed);
myItemInfo.OrdinalChanged += new ItemInfoEvent(NodeText_Changed);
myItemInfo.NewSiblingAfter -= new ItemInfoInsertEvent(myItemInfo_NewSiblingAfter);
myItemInfo.NewSiblingAfter += new ItemInfoInsertEvent(myItemInfo_NewSiblingAfter);
myItemInfo.NewSiblingBefore -= new ItemInfoInsertEvent(myItemInfo_NewSiblingBefore);
myItemInfo.NewSiblingBefore += new ItemInfoInsertEvent(myItemInfo_NewSiblingBefore);
myItemInfo.NewChild -= new ItemInfoInsertEvent(myItemInfo_NewChild);
myItemInfo.NewChild += new ItemInfoInsertEvent(myItemInfo_NewChild);
}
}
@@ -429,12 +436,19 @@ namespace VEPROMS.CSLA.Library
ItemInfo myItemInfo = o as ItemInfo;
if (myItemInfo != null)
{
myItemInfo.Deleted -= new ItemInfoEvent(myItemInfo_Deleted);
myItemInfo.Deleted += new ItemInfoEvent(myItemInfo_Deleted);
myItemInfo.ChildrenDeleted -= new ItemInfoEvent(myItemInfo_ChildrenDeleted);
myItemInfo.ChildrenDeleted += new ItemInfoEvent(myItemInfo_ChildrenDeleted);
myItemInfo.MyContent.Changed -= new ContentInfoEvent(NodeText_Changed);
myItemInfo.MyContent.Changed += new ContentInfoEvent(NodeText_Changed);
myItemInfo.OrdinalChanged -= new ItemInfoEvent(NodeText_Changed);
myItemInfo.OrdinalChanged += new ItemInfoEvent(NodeText_Changed);
myItemInfo.NewSiblingAfter -= new ItemInfoInsertEvent(myItemInfo_NewSiblingAfter);
myItemInfo.NewSiblingAfter += new ItemInfoInsertEvent(myItemInfo_NewSiblingAfter);
myItemInfo.NewSiblingBefore -= new ItemInfoInsertEvent(myItemInfo_NewSiblingBefore);
myItemInfo.NewSiblingBefore += new ItemInfoInsertEvent(myItemInfo_NewSiblingBefore);
myItemInfo.NewChild -= new ItemInfoInsertEvent(myItemInfo_NewChild);
myItemInfo.NewChild += new ItemInfoInsertEvent(myItemInfo_NewChild);
}
}

View File

@@ -98,6 +98,7 @@
<Reference Include="System" />
<Reference Include="System.configuration" />
<Reference Include="System.Data" />
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="System.Design" />
<Reference Include="System.Drawing" />
<Reference Include="System.Windows.Forms" />
@@ -107,6 +108,7 @@
<Compile Include="..\VEPROMS User Interface\Properties\Settings.Designer.cs">
<Link>Properties\Settings.Designer.cs</Link>
</Compile>
<Compile Include="Config\AnnotationConfig.cs" />
<Compile Include="Config\AnnotationTypeConfig.cs" />
<Compile Include="Config\AssocConfig.cs" />
<Compile Include="Config\ColorConfig.cs" />
@@ -164,6 +166,7 @@
<Compile Include="Format\Comparator.cs" />
<Compile Include="Format\DocStyles.cs" />
<Compile Include="Format\ENums.cs" />
<Compile Include="Format\EPFormatFile.cs" />
<Compile Include="Format\PageStyles.cs" />
<Compile Include="Format\PlantFormat.cs" />
<Compile Include="Format\vlnFormat.cs" />
@@ -384,6 +387,7 @@
<Compile Include="Generated\ZContentInfo.cs" />
<Compile Include="Generated\ZTransition.cs" />
<Compile Include="Generated\ZTransitionInfo.cs" />
<Compile Include="Minimal\AnnotationstypeSections.cs" />
<Compile Include="Minimal\UserSettings.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="VEObjects\VEDrillDown.cs" />

View File

@@ -38,6 +38,9 @@ EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Baseline", "..\Baseline\Baseline.csproj", "{8B29E0DE-B6C9-4041-8817-319FDE3123C4}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "RoAccessToSql", "..\RoAccessToSql\RoAccessToSql.csproj", "{1EC96BDA-01E7-4153-A95D-6A4A36FA278E}"
ProjectSection(ProjectDependencies) = postProject
{AEEE9FD1-6892-45E2-A67E-418C06D46FF9} = {AEEE9FD1-6892-45E2-A67E-418C06D46FF9}
EndProjectSection
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution

View File

@@ -28,326 +28,341 @@ namespace Volian.Controls.Library
/// </summary>
private void InitializeComponent()
{
this.components = new System.ComponentModel.Container();
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle2 = new System.Windows.Forms.DataGridViewCellStyle();
this.superTooltip1 = new DevComponents.DotNetBar.SuperTooltip();
this.rtxbComment = new System.Windows.Forms.RichTextBox();
this.btnSaveAnnotation = new DevComponents.DotNetBar.ButtonX();
this.btnCancelAnnoation = new DevComponents.DotNetBar.ButtonX();
this.cbGridAnnoType = new DevComponents.DotNetBar.Controls.ComboBoxEx();
this.btnRemoveAnnotation = new DevComponents.DotNetBar.ButtonX();
this.btnAddAnnotation = new DevComponents.DotNetBar.ButtonX();
this.pannelAnnoEdit = new DevComponents.DotNetBar.PanelEx();
this.labelX1 = new DevComponents.DotNetBar.LabelX();
this.panelAnnoEditBtns = new DevComponents.DotNetBar.PanelEx();
this.expandableSplitter4 = new DevComponents.DotNetBar.ExpandableSplitter();
this.pannelAnnoGrid = new DevComponents.DotNetBar.PanelEx();
this.dgAnnotations = new DevComponents.DotNetBar.Controls.DataGridViewX();
this.myAnnotationTypeDataGridViewTextBoxColumn = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.dTSDataGridViewTextBoxColumn = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.userIDDataGridViewTextBoxColumn = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.searchTextDataGridViewTextBoxColumn = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.itemAnnotationsBindingSource = new System.Windows.Forms.BindingSource(this.components);
this.pannelAnnoEdit.SuspendLayout();
this.panelAnnoEditBtns.SuspendLayout();
this.pannelAnnoGrid.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.dgAnnotations)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.itemAnnotationsBindingSource)).BeginInit();
this.SuspendLayout();
//
// superTooltip1
//
this.superTooltip1.DefaultTooltipSettings = new DevComponents.DotNetBar.SuperTooltipInfo("", "", "", null, null, DevComponents.DotNetBar.eTooltipColor.Gray);
this.superTooltip1.LicenseKey = "F962CEC7-CD8F-4911-A9E9-CAB39962FC1F";
//
// rtxbComment
//
this.rtxbComment.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
this.components = new System.ComponentModel.Container();
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle1 = new System.Windows.Forms.DataGridViewCellStyle();
this.superTooltip1 = new DevComponents.DotNetBar.SuperTooltip();
this.rtxbComment = new System.Windows.Forms.RichTextBox();
this.btnSaveAnnotation = new DevComponents.DotNetBar.ButtonX();
this.btnCancelAnnoation = new DevComponents.DotNetBar.ButtonX();
this.cbGridAnnoType = new DevComponents.DotNetBar.Controls.ComboBoxEx();
this.btnRemoveAnnotation = new DevComponents.DotNetBar.ButtonX();
this.btnAddAnnotation = new DevComponents.DotNetBar.ButtonX();
this.btnEPAnnotation = new DevComponents.DotNetBar.ButtonX();
this.pannelAnnoEdit = new DevComponents.DotNetBar.PanelEx();
this.labelX1 = new DevComponents.DotNetBar.LabelX();
this.panelAnnoEditBtns = new DevComponents.DotNetBar.PanelEx();
this.expandableSplitter4 = new DevComponents.DotNetBar.ExpandableSplitter();
this.pannelAnnoGrid = new DevComponents.DotNetBar.PanelEx();
this.dgAnnotations = new DevComponents.DotNetBar.Controls.DataGridViewX();
this.myAnnotationTypeDataGridViewTextBoxColumn = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.dTSDataGridViewTextBoxColumn = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.userIDDataGridViewTextBoxColumn = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.searchTextDataGridViewTextBoxColumn = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.itemAnnotationsBindingSource = new System.Windows.Forms.BindingSource(this.components);
this.pannelAnnoEdit.SuspendLayout();
this.panelAnnoEditBtns.SuspendLayout();
this.pannelAnnoGrid.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.dgAnnotations)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.itemAnnotationsBindingSource)).BeginInit();
this.SuspendLayout();
//
// superTooltip1
//
this.superTooltip1.DefaultTooltipSettings = new DevComponents.DotNetBar.SuperTooltipInfo("", "", "", null, null, DevComponents.DotNetBar.eTooltipColor.Gray);
this.superTooltip1.LicenseKey = "F962CEC7-CD8F-4911-A9E9-CAB39962FC1F";
//
// rtxbComment
//
this.rtxbComment.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
| System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.rtxbComment.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(255)))), ((int)(((byte)(255)))), ((int)(((byte)(128)))));
this.rtxbComment.Font = new System.Drawing.Font("Microsoft Sans Serif", 10F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.rtxbComment.Location = new System.Drawing.Point(87, 33);
this.rtxbComment.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
this.rtxbComment.Name = "rtxbComment";
this.rtxbComment.ScrollBars = System.Windows.Forms.RichTextBoxScrollBars.Vertical;
this.rtxbComment.Size = new System.Drawing.Size(489, 291);
this.superTooltip1.SetSuperTooltip(this.rtxbComment, new DevComponents.DotNetBar.SuperTooltipInfo("Annotation", "", "Enter the annotation information here.", null, null, DevComponents.DotNetBar.eTooltipColor.Gray));
this.rtxbComment.TabIndex = 1;
this.rtxbComment.Text = "";
this.rtxbComment.TextChanged += new System.EventHandler(this.rtxbComment_TextChanged);
//
// btnSaveAnnotation
//
this.btnSaveAnnotation.AccessibleRole = System.Windows.Forms.AccessibleRole.PushButton;
this.btnSaveAnnotation.Enabled = false;
this.btnSaveAnnotation.Location = new System.Drawing.Point(491, 4);
this.btnSaveAnnotation.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
this.btnSaveAnnotation.Name = "btnSaveAnnotation";
this.btnSaveAnnotation.Size = new System.Drawing.Size(71, 25);
this.superTooltip1.SetSuperTooltip(this.btnSaveAnnotation, new DevComponents.DotNetBar.SuperTooltipInfo("Save Changes", "", "This will save the new annotation or changes made to an existing annotation.", null, null, DevComponents.DotNetBar.eTooltipColor.Gray));
this.btnSaveAnnotation.TabIndex = 9;
this.btnSaveAnnotation.Text = "Save";
this.btnSaveAnnotation.Click += new System.EventHandler(this.btnSaveAnnotation_Click);
//
// btnCancelAnnoation
//
this.btnCancelAnnoation.AccessibleRole = System.Windows.Forms.AccessibleRole.PushButton;
this.btnCancelAnnoation.Enabled = false;
this.btnCancelAnnoation.Location = new System.Drawing.Point(401, 4);
this.btnCancelAnnoation.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
this.btnCancelAnnoation.Name = "btnCancelAnnoation";
this.btnCancelAnnoation.Size = new System.Drawing.Size(69, 25);
this.superTooltip1.SetSuperTooltip(this.btnCancelAnnoation, new DevComponents.DotNetBar.SuperTooltipInfo("Cancel", "", "This will cancel the changes made to the annotation text and type selection", null, null, DevComponents.DotNetBar.eTooltipColor.Gray, true, true, new System.Drawing.Size(145, 100)));
this.btnCancelAnnoation.TabIndex = 8;
this.btnCancelAnnoation.Text = "Cancel";
this.btnCancelAnnoation.Click += new System.EventHandler(this.btnCancelAnnoation_Click);
//
// cbGridAnnoType
//
this.cbGridAnnoType.DisplayMember = "Text";
this.cbGridAnnoType.DrawMode = System.Windows.Forms.DrawMode.OwnerDrawFixed;
this.cbGridAnnoType.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.cbGridAnnoType.FlatStyle = System.Windows.Forms.FlatStyle.Standard;
this.cbGridAnnoType.Font = new System.Drawing.Font("Microsoft Sans Serif", 7.8F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.cbGridAnnoType.ForeColor = System.Drawing.SystemColors.WindowText;
this.cbGridAnnoType.ItemHeight = 17;
this.cbGridAnnoType.Location = new System.Drawing.Point(133, 4);
this.cbGridAnnoType.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
this.cbGridAnnoType.Name = "cbGridAnnoType";
this.cbGridAnnoType.PreventEnterBeep = true;
this.cbGridAnnoType.Size = new System.Drawing.Size(244, 23);
this.superTooltip1.SetSuperTooltip(this.cbGridAnnoType, new DevComponents.DotNetBar.SuperTooltipInfo("Select Annotation Type", "", "This drop down list contains the possible annotation types.", null, null, DevComponents.DotNetBar.eTooltipColor.Gray));
this.cbGridAnnoType.TabIndex = 7;
this.cbGridAnnoType.WatermarkBehavior = DevComponents.DotNetBar.eWatermarkBehavior.HideNonEmpty;
this.cbGridAnnoType.WatermarkText = "Select Annotation Type";
this.cbGridAnnoType.SelectedValueChanged += new System.EventHandler(this.cbGridAnnoType_SelectedValueChanged);
//
// btnRemoveAnnotation
//
this.btnRemoveAnnotation.AccessibleRole = System.Windows.Forms.AccessibleRole.PushButton;
this.btnRemoveAnnotation.Location = new System.Drawing.Point(5, 34);
this.btnRemoveAnnotation.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
this.btnRemoveAnnotation.Name = "btnRemoveAnnotation";
this.btnRemoveAnnotation.Size = new System.Drawing.Size(71, 25);
this.superTooltip1.SetSuperTooltip(this.btnRemoveAnnotation, new DevComponents.DotNetBar.SuperTooltipInfo("Remove Annotation", "", "This will remove the currently selected annotation.", null, null, DevComponents.DotNetBar.eTooltipColor.Gray));
this.btnRemoveAnnotation.TabIndex = 4;
this.btnRemoveAnnotation.Text = "Remove";
this.btnRemoveAnnotation.Click += new System.EventHandler(this.btnRemoveAnnotation_Click);
//
// btnAddAnnotation
//
this.btnAddAnnotation.AccessibleRole = System.Windows.Forms.AccessibleRole.PushButton;
this.btnAddAnnotation.Location = new System.Drawing.Point(5, 4);
this.btnAddAnnotation.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
this.btnAddAnnotation.Name = "btnAddAnnotation";
this.btnAddAnnotation.Size = new System.Drawing.Size(71, 25);
this.superTooltip1.SetSuperTooltip(this.btnAddAnnotation, new DevComponents.DotNetBar.SuperTooltipInfo("Add New Annotation", "", "This button will create a new annotation.", null, null, DevComponents.DotNetBar.eTooltipColor.Gray));
this.btnAddAnnotation.TabIndex = 3;
this.btnAddAnnotation.Text = "Add";
this.btnAddAnnotation.Click += new System.EventHandler(this.btnAddAnnotation_Click);
//
// pannelAnnoEdit
//
this.pannelAnnoEdit.CanvasColor = System.Drawing.SystemColors.Control;
this.pannelAnnoEdit.Controls.Add(this.rtxbComment);
this.pannelAnnoEdit.Controls.Add(this.btnSaveAnnotation);
this.pannelAnnoEdit.Controls.Add(this.btnCancelAnnoation);
this.pannelAnnoEdit.Controls.Add(this.labelX1);
this.pannelAnnoEdit.Controls.Add(this.cbGridAnnoType);
this.pannelAnnoEdit.Controls.Add(this.panelAnnoEditBtns);
this.pannelAnnoEdit.DisabledBackColor = System.Drawing.Color.Empty;
this.pannelAnnoEdit.Dock = System.Windows.Forms.DockStyle.Fill;
this.pannelAnnoEdit.Location = new System.Drawing.Point(548, 0);
this.pannelAnnoEdit.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
this.pannelAnnoEdit.Name = "pannelAnnoEdit";
this.pannelAnnoEdit.Size = new System.Drawing.Size(576, 325);
this.pannelAnnoEdit.Style.Alignment = System.Drawing.StringAlignment.Center;
this.pannelAnnoEdit.Style.BackColor1.ColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.PanelBackground;
this.pannelAnnoEdit.Style.BackColor2.ColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.PanelBackground2;
this.pannelAnnoEdit.Style.Border = DevComponents.DotNetBar.eBorderType.SingleLine;
this.pannelAnnoEdit.Style.BorderColor.ColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.PanelBorder;
this.pannelAnnoEdit.Style.ForeColor.ColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.PanelText;
this.pannelAnnoEdit.Style.GradientAngle = 90;
this.pannelAnnoEdit.TabIndex = 16;
this.pannelAnnoEdit.Text = "panelEx2";
this.pannelAnnoEdit.ThemeAware = true;
//
// labelX1
//
this.labelX1.AutoSize = true;
//
//
//
this.labelX1.BackgroundStyle.CornerType = DevComponents.DotNetBar.eCornerType.Square;
this.labelX1.Font = new System.Drawing.Font("Microsoft Sans Serif", 7.8F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.labelX1.Location = new System.Drawing.Point(93, 7);
this.labelX1.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
this.labelX1.Name = "labelX1";
this.labelX1.Size = new System.Drawing.Size(35, 17);
this.labelX1.TabIndex = 10;
this.labelX1.Text = "Type:";
//
// panelAnnoEditBtns
//
this.panelAnnoEditBtns.CanvasColor = System.Drawing.SystemColors.Control;
this.panelAnnoEditBtns.Controls.Add(this.btnRemoveAnnotation);
this.panelAnnoEditBtns.Controls.Add(this.btnAddAnnotation);
this.panelAnnoEditBtns.DisabledBackColor = System.Drawing.Color.Empty;
this.panelAnnoEditBtns.Dock = System.Windows.Forms.DockStyle.Left;
this.panelAnnoEditBtns.Location = new System.Drawing.Point(0, 0);
this.panelAnnoEditBtns.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
this.panelAnnoEditBtns.Name = "panelAnnoEditBtns";
this.panelAnnoEditBtns.Size = new System.Drawing.Size(87, 325);
this.panelAnnoEditBtns.Style.Alignment = System.Drawing.StringAlignment.Center;
this.panelAnnoEditBtns.Style.BackColor1.ColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.PanelBackground;
this.panelAnnoEditBtns.Style.BackColor2.ColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.PanelBackground2;
this.panelAnnoEditBtns.Style.BorderColor.ColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.PanelBorder;
this.panelAnnoEditBtns.Style.ForeColor.ColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.PanelText;
this.panelAnnoEditBtns.Style.GradientAngle = 90;
this.panelAnnoEditBtns.TabIndex = 11;
this.panelAnnoEditBtns.ThemeAware = true;
//
// expandableSplitter4
//
this.expandableSplitter4.BackColor2 = System.Drawing.Color.FromArgb(((int)(((byte)(101)))), ((int)(((byte)(147)))), ((int)(((byte)(207)))));
this.expandableSplitter4.BackColor2SchemePart = DevComponents.DotNetBar.eColorSchemePart.PanelBorder;
this.expandableSplitter4.BackColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.PanelBackground;
this.expandableSplitter4.ExpandFillColor = System.Drawing.Color.FromArgb(((int)(((byte)(101)))), ((int)(((byte)(147)))), ((int)(((byte)(207)))));
this.expandableSplitter4.ExpandFillColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.PanelBorder;
this.expandableSplitter4.ExpandLineColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(0)))), ((int)(((byte)(0)))));
this.expandableSplitter4.ExpandLineColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.ItemText;
this.expandableSplitter4.GripDarkColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(0)))), ((int)(((byte)(0)))));
this.expandableSplitter4.GripDarkColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.ItemText;
this.expandableSplitter4.GripLightColor = System.Drawing.Color.FromArgb(((int)(((byte)(227)))), ((int)(((byte)(239)))), ((int)(((byte)(255)))));
this.expandableSplitter4.GripLightColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.BarBackground;
this.expandableSplitter4.HotBackColor = System.Drawing.Color.FromArgb(((int)(((byte)(252)))), ((int)(((byte)(151)))), ((int)(((byte)(61)))));
this.expandableSplitter4.HotBackColor2 = System.Drawing.Color.FromArgb(((int)(((byte)(255)))), ((int)(((byte)(184)))), ((int)(((byte)(94)))));
this.expandableSplitter4.HotBackColor2SchemePart = DevComponents.DotNetBar.eColorSchemePart.ItemPressedBackground2;
this.expandableSplitter4.HotBackColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.ItemPressedBackground;
this.expandableSplitter4.HotExpandFillColor = System.Drawing.Color.FromArgb(((int)(((byte)(101)))), ((int)(((byte)(147)))), ((int)(((byte)(207)))));
this.expandableSplitter4.HotExpandFillColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.PanelBorder;
this.expandableSplitter4.HotExpandLineColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(0)))), ((int)(((byte)(0)))));
this.expandableSplitter4.HotExpandLineColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.ItemText;
this.expandableSplitter4.HotGripDarkColor = System.Drawing.Color.FromArgb(((int)(((byte)(101)))), ((int)(((byte)(147)))), ((int)(((byte)(207)))));
this.expandableSplitter4.HotGripDarkColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.PanelBorder;
this.expandableSplitter4.HotGripLightColor = System.Drawing.Color.FromArgb(((int)(((byte)(227)))), ((int)(((byte)(239)))), ((int)(((byte)(255)))));
this.expandableSplitter4.HotGripLightColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.BarBackground;
this.expandableSplitter4.Location = new System.Drawing.Point(545, 0);
this.expandableSplitter4.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
this.expandableSplitter4.Name = "expandableSplitter4";
this.expandableSplitter4.Size = new System.Drawing.Size(3, 325);
this.expandableSplitter4.Style = DevComponents.DotNetBar.eSplitterStyle.Office2007;
this.expandableSplitter4.TabIndex = 15;
this.expandableSplitter4.TabStop = false;
//
// pannelAnnoGrid
//
this.pannelAnnoGrid.CanvasColor = System.Drawing.SystemColors.Control;
this.pannelAnnoGrid.Controls.Add(this.dgAnnotations);
this.pannelAnnoGrid.DisabledBackColor = System.Drawing.Color.Empty;
this.pannelAnnoGrid.Dock = System.Windows.Forms.DockStyle.Left;
this.pannelAnnoGrid.Location = new System.Drawing.Point(0, 0);
this.pannelAnnoGrid.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
this.pannelAnnoGrid.Name = "pannelAnnoGrid";
this.pannelAnnoGrid.Size = new System.Drawing.Size(545, 325);
this.pannelAnnoGrid.Style.Alignment = System.Drawing.StringAlignment.Center;
this.pannelAnnoGrid.Style.BackColor1.ColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.PanelBackground;
this.pannelAnnoGrid.Style.BackColor2.ColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.PanelBackground2;
this.pannelAnnoGrid.Style.Border = DevComponents.DotNetBar.eBorderType.SingleLine;
this.pannelAnnoGrid.Style.BorderColor.ColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.PanelBorder;
this.pannelAnnoGrid.Style.ForeColor.ColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.PanelText;
this.pannelAnnoGrid.Style.GradientAngle = 90;
this.pannelAnnoGrid.TabIndex = 14;
this.pannelAnnoGrid.Text = "panelEx2";
this.pannelAnnoGrid.ThemeAware = true;
//
// dgAnnotations
//
this.dgAnnotations.AutoGenerateColumns = false;
this.dgAnnotations.AutoSizeColumnsMode = System.Windows.Forms.DataGridViewAutoSizeColumnsMode.AllCells;
this.dgAnnotations.ColumnHeadersBorderStyle = System.Windows.Forms.DataGridViewHeaderBorderStyle.Single;
this.dgAnnotations.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;
this.dgAnnotations.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] {
this.rtxbComment.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(255)))), ((int)(((byte)(255)))), ((int)(((byte)(128)))));
this.rtxbComment.Font = new System.Drawing.Font("Microsoft Sans Serif", 10F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.rtxbComment.Location = new System.Drawing.Point(65, 27);
this.rtxbComment.Margin = new System.Windows.Forms.Padding(2);
this.rtxbComment.Name = "rtxbComment";
this.rtxbComment.ScrollBars = System.Windows.Forms.RichTextBoxScrollBars.Vertical;
this.rtxbComment.Size = new System.Drawing.Size(368, 237);
this.superTooltip1.SetSuperTooltip(this.rtxbComment, new DevComponents.DotNetBar.SuperTooltipInfo("Annotation", "", "Enter the annotation information here.", null, null, DevComponents.DotNetBar.eTooltipColor.Gray));
this.rtxbComment.TabIndex = 1;
this.rtxbComment.Text = "";
this.rtxbComment.TextChanged += new System.EventHandler(this.rtxbComment_TextChanged);
//
// btnSaveAnnotation
//
this.btnSaveAnnotation.AccessibleRole = System.Windows.Forms.AccessibleRole.PushButton;
this.btnSaveAnnotation.Enabled = false;
this.btnSaveAnnotation.Location = new System.Drawing.Point(368, 3);
this.btnSaveAnnotation.Margin = new System.Windows.Forms.Padding(2);
this.btnSaveAnnotation.Name = "btnSaveAnnotation";
this.btnSaveAnnotation.Size = new System.Drawing.Size(53, 20);
this.superTooltip1.SetSuperTooltip(this.btnSaveAnnotation, new DevComponents.DotNetBar.SuperTooltipInfo("Save Changes", "", "This will save the new annotation or changes made to an existing annotation.", null, null, DevComponents.DotNetBar.eTooltipColor.Gray));
this.btnSaveAnnotation.TabIndex = 9;
this.btnSaveAnnotation.Text = "Save";
this.btnSaveAnnotation.Click += new System.EventHandler(this.btnSaveAnnotation_Click);
//
// btnCancelAnnoation
//
this.btnCancelAnnoation.AccessibleRole = System.Windows.Forms.AccessibleRole.PushButton;
this.btnCancelAnnoation.Enabled = false;
this.btnCancelAnnoation.Location = new System.Drawing.Point(301, 3);
this.btnCancelAnnoation.Margin = new System.Windows.Forms.Padding(2);
this.btnCancelAnnoation.Name = "btnCancelAnnoation";
this.btnCancelAnnoation.Size = new System.Drawing.Size(52, 20);
this.superTooltip1.SetSuperTooltip(this.btnCancelAnnoation, new DevComponents.DotNetBar.SuperTooltipInfo("Cancel", "", "This will cancel the changes made to the annotation text and type selection", null, null, DevComponents.DotNetBar.eTooltipColor.Gray, true, true, new System.Drawing.Size(145, 100)));
this.btnCancelAnnoation.TabIndex = 8;
this.btnCancelAnnoation.Text = "Cancel";
this.btnCancelAnnoation.Click += new System.EventHandler(this.btnCancelAnnoation_Click);
//
// cbGridAnnoType
//
this.cbGridAnnoType.DisplayMember = "Text";
this.cbGridAnnoType.DrawMode = System.Windows.Forms.DrawMode.OwnerDrawFixed;
this.cbGridAnnoType.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.cbGridAnnoType.FlatStyle = System.Windows.Forms.FlatStyle.Standard;
this.cbGridAnnoType.Font = new System.Drawing.Font("Microsoft Sans Serif", 7.8F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.cbGridAnnoType.ForeColor = System.Drawing.SystemColors.WindowText;
this.cbGridAnnoType.ItemHeight = 17;
this.cbGridAnnoType.Location = new System.Drawing.Point(100, 3);
this.cbGridAnnoType.Margin = new System.Windows.Forms.Padding(2);
this.cbGridAnnoType.Name = "cbGridAnnoType";
this.cbGridAnnoType.PreventEnterBeep = true;
this.cbGridAnnoType.Size = new System.Drawing.Size(184, 23);
this.superTooltip1.SetSuperTooltip(this.cbGridAnnoType, new DevComponents.DotNetBar.SuperTooltipInfo("Select Annotation Type", "", "This drop down list contains the possible annotation types.", null, null, DevComponents.DotNetBar.eTooltipColor.Gray));
this.cbGridAnnoType.TabIndex = 7;
this.cbGridAnnoType.WatermarkBehavior = DevComponents.DotNetBar.eWatermarkBehavior.HideNonEmpty;
this.cbGridAnnoType.WatermarkText = "Select Annotation Type";
this.cbGridAnnoType.SelectedValueChanged += new System.EventHandler(this.cbGridAnnoType_SelectedValueChanged);
//
// btnRemoveAnnotation
//
this.btnRemoveAnnotation.AccessibleRole = System.Windows.Forms.AccessibleRole.PushButton;
this.btnRemoveAnnotation.Location = new System.Drawing.Point(4, 28);
this.btnRemoveAnnotation.Margin = new System.Windows.Forms.Padding(2);
this.btnRemoveAnnotation.Name = "btnRemoveAnnotation";
this.btnRemoveAnnotation.Size = new System.Drawing.Size(53, 20);
this.superTooltip1.SetSuperTooltip(this.btnRemoveAnnotation, new DevComponents.DotNetBar.SuperTooltipInfo("Remove Annotation", "", "This will remove the currently selected annotation.", null, null, DevComponents.DotNetBar.eTooltipColor.Gray));
this.btnRemoveAnnotation.TabIndex = 4;
this.btnRemoveAnnotation.Text = "Remove";
this.btnRemoveAnnotation.Click += new System.EventHandler(this.btnRemoveAnnotation_Click);
//
// btnAddAnnotation
//
this.btnAddAnnotation.AccessibleRole = System.Windows.Forms.AccessibleRole.PushButton;
this.btnAddAnnotation.Location = new System.Drawing.Point(4, 3);
this.btnAddAnnotation.Margin = new System.Windows.Forms.Padding(2);
this.btnAddAnnotation.Name = "btnAddAnnotation";
this.btnAddAnnotation.Size = new System.Drawing.Size(53, 20);
this.superTooltip1.SetSuperTooltip(this.btnAddAnnotation, new DevComponents.DotNetBar.SuperTooltipInfo("Add New Annotation", "", "This button will create a new annotation.", null, null, DevComponents.DotNetBar.eTooltipColor.Gray));
this.btnAddAnnotation.TabIndex = 3;
this.btnAddAnnotation.Text = "Add";
this.btnAddAnnotation.Click += new System.EventHandler(this.btnAddAnnotation_Click);
//
// btnEPAnnotation
//
this.btnEPAnnotation.AccessibleRole = System.Windows.Forms.AccessibleRole.PushButton;
this.btnEPAnnotation.Location = new System.Drawing.Point(4, 52);
this.btnEPAnnotation.Margin = new System.Windows.Forms.Padding(2);
this.btnEPAnnotation.Name = "btnEPAnnotation";
this.btnEPAnnotation.Size = new System.Drawing.Size(53, 20);
this.superTooltip1.SetSuperTooltip(this.btnEPAnnotation, new DevComponents.DotNetBar.SuperTooltipInfo("Open Annotation", "", "This will open Electronic Procedure Details for this Annotation.", null, null, DevComponents.DotNetBar.eTooltipColor.Gray));
this.btnEPAnnotation.TabIndex = 5;
this.btnEPAnnotation.Text = "Open";
this.btnEPAnnotation.Visible = false;
this.btnEPAnnotation.Click += new System.EventHandler(this.btnEPAnnotation_Click);
//
// pannelAnnoEdit
//
this.pannelAnnoEdit.CanvasColor = System.Drawing.SystemColors.Control;
this.pannelAnnoEdit.Controls.Add(this.rtxbComment);
this.pannelAnnoEdit.Controls.Add(this.btnSaveAnnotation);
this.pannelAnnoEdit.Controls.Add(this.btnCancelAnnoation);
this.pannelAnnoEdit.Controls.Add(this.labelX1);
this.pannelAnnoEdit.Controls.Add(this.cbGridAnnoType);
this.pannelAnnoEdit.Controls.Add(this.panelAnnoEditBtns);
this.pannelAnnoEdit.DisabledBackColor = System.Drawing.Color.Empty;
this.pannelAnnoEdit.Dock = System.Windows.Forms.DockStyle.Fill;
this.pannelAnnoEdit.Location = new System.Drawing.Point(411, 0);
this.pannelAnnoEdit.Margin = new System.Windows.Forms.Padding(2);
this.pannelAnnoEdit.Name = "pannelAnnoEdit";
this.pannelAnnoEdit.Size = new System.Drawing.Size(432, 264);
this.pannelAnnoEdit.Style.Alignment = System.Drawing.StringAlignment.Center;
this.pannelAnnoEdit.Style.BackColor1.ColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.PanelBackground;
this.pannelAnnoEdit.Style.BackColor2.ColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.PanelBackground2;
this.pannelAnnoEdit.Style.Border = DevComponents.DotNetBar.eBorderType.SingleLine;
this.pannelAnnoEdit.Style.BorderColor.ColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.PanelBorder;
this.pannelAnnoEdit.Style.ForeColor.ColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.PanelText;
this.pannelAnnoEdit.Style.GradientAngle = 90;
this.pannelAnnoEdit.TabIndex = 16;
this.pannelAnnoEdit.Text = "panelEx2";
this.pannelAnnoEdit.ThemeAware = true;
//
// labelX1
//
this.labelX1.AutoSize = true;
//
//
//
this.labelX1.BackgroundStyle.CornerType = DevComponents.DotNetBar.eCornerType.Square;
this.labelX1.Font = new System.Drawing.Font("Microsoft Sans Serif", 7.8F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.labelX1.Location = new System.Drawing.Point(70, 6);
this.labelX1.Margin = new System.Windows.Forms.Padding(2);
this.labelX1.Name = "labelX1";
this.labelX1.Size = new System.Drawing.Size(29, 14);
this.labelX1.TabIndex = 10;
this.labelX1.Text = "Type:";
//
// panelAnnoEditBtns
//
this.panelAnnoEditBtns.CanvasColor = System.Drawing.SystemColors.Control;
this.panelAnnoEditBtns.Controls.Add(this.btnEPAnnotation);
this.panelAnnoEditBtns.Controls.Add(this.btnRemoveAnnotation);
this.panelAnnoEditBtns.Controls.Add(this.btnAddAnnotation);
this.panelAnnoEditBtns.DisabledBackColor = System.Drawing.Color.Empty;
this.panelAnnoEditBtns.Dock = System.Windows.Forms.DockStyle.Left;
this.panelAnnoEditBtns.Location = new System.Drawing.Point(0, 0);
this.panelAnnoEditBtns.Margin = new System.Windows.Forms.Padding(2);
this.panelAnnoEditBtns.Name = "panelAnnoEditBtns";
this.panelAnnoEditBtns.Size = new System.Drawing.Size(65, 264);
this.panelAnnoEditBtns.Style.Alignment = System.Drawing.StringAlignment.Center;
this.panelAnnoEditBtns.Style.BackColor1.ColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.PanelBackground;
this.panelAnnoEditBtns.Style.BackColor2.ColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.PanelBackground2;
this.panelAnnoEditBtns.Style.BorderColor.ColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.PanelBorder;
this.panelAnnoEditBtns.Style.ForeColor.ColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.PanelText;
this.panelAnnoEditBtns.Style.GradientAngle = 90;
this.panelAnnoEditBtns.TabIndex = 11;
this.panelAnnoEditBtns.ThemeAware = true;
//
// expandableSplitter4
//
this.expandableSplitter4.BackColor2 = System.Drawing.Color.FromArgb(((int)(((byte)(101)))), ((int)(((byte)(147)))), ((int)(((byte)(207)))));
this.expandableSplitter4.BackColor2SchemePart = DevComponents.DotNetBar.eColorSchemePart.PanelBorder;
this.expandableSplitter4.BackColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.PanelBackground;
this.expandableSplitter4.ExpandFillColor = System.Drawing.Color.FromArgb(((int)(((byte)(101)))), ((int)(((byte)(147)))), ((int)(((byte)(207)))));
this.expandableSplitter4.ExpandFillColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.PanelBorder;
this.expandableSplitter4.ExpandLineColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(0)))), ((int)(((byte)(0)))));
this.expandableSplitter4.ExpandLineColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.ItemText;
this.expandableSplitter4.GripDarkColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(0)))), ((int)(((byte)(0)))));
this.expandableSplitter4.GripDarkColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.ItemText;
this.expandableSplitter4.GripLightColor = System.Drawing.Color.FromArgb(((int)(((byte)(227)))), ((int)(((byte)(239)))), ((int)(((byte)(255)))));
this.expandableSplitter4.GripLightColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.BarBackground;
this.expandableSplitter4.HotBackColor = System.Drawing.Color.FromArgb(((int)(((byte)(252)))), ((int)(((byte)(151)))), ((int)(((byte)(61)))));
this.expandableSplitter4.HotBackColor2 = System.Drawing.Color.FromArgb(((int)(((byte)(255)))), ((int)(((byte)(184)))), ((int)(((byte)(94)))));
this.expandableSplitter4.HotBackColor2SchemePart = DevComponents.DotNetBar.eColorSchemePart.ItemPressedBackground2;
this.expandableSplitter4.HotBackColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.ItemPressedBackground;
this.expandableSplitter4.HotExpandFillColor = System.Drawing.Color.FromArgb(((int)(((byte)(101)))), ((int)(((byte)(147)))), ((int)(((byte)(207)))));
this.expandableSplitter4.HotExpandFillColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.PanelBorder;
this.expandableSplitter4.HotExpandLineColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(0)))), ((int)(((byte)(0)))));
this.expandableSplitter4.HotExpandLineColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.ItemText;
this.expandableSplitter4.HotGripDarkColor = System.Drawing.Color.FromArgb(((int)(((byte)(101)))), ((int)(((byte)(147)))), ((int)(((byte)(207)))));
this.expandableSplitter4.HotGripDarkColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.PanelBorder;
this.expandableSplitter4.HotGripLightColor = System.Drawing.Color.FromArgb(((int)(((byte)(227)))), ((int)(((byte)(239)))), ((int)(((byte)(255)))));
this.expandableSplitter4.HotGripLightColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.BarBackground;
this.expandableSplitter4.Location = new System.Drawing.Point(409, 0);
this.expandableSplitter4.Margin = new System.Windows.Forms.Padding(2);
this.expandableSplitter4.Name = "expandableSplitter4";
this.expandableSplitter4.Size = new System.Drawing.Size(2, 264);
this.expandableSplitter4.Style = DevComponents.DotNetBar.eSplitterStyle.Office2007;
this.expandableSplitter4.TabIndex = 15;
this.expandableSplitter4.TabStop = false;
//
// pannelAnnoGrid
//
this.pannelAnnoGrid.CanvasColor = System.Drawing.SystemColors.Control;
this.pannelAnnoGrid.Controls.Add(this.dgAnnotations);
this.pannelAnnoGrid.DisabledBackColor = System.Drawing.Color.Empty;
this.pannelAnnoGrid.Dock = System.Windows.Forms.DockStyle.Left;
this.pannelAnnoGrid.Location = new System.Drawing.Point(0, 0);
this.pannelAnnoGrid.Margin = new System.Windows.Forms.Padding(2);
this.pannelAnnoGrid.Name = "pannelAnnoGrid";
this.pannelAnnoGrid.Size = new System.Drawing.Size(409, 264);
this.pannelAnnoGrid.Style.Alignment = System.Drawing.StringAlignment.Center;
this.pannelAnnoGrid.Style.BackColor1.ColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.PanelBackground;
this.pannelAnnoGrid.Style.BackColor2.ColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.PanelBackground2;
this.pannelAnnoGrid.Style.Border = DevComponents.DotNetBar.eBorderType.SingleLine;
this.pannelAnnoGrid.Style.BorderColor.ColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.PanelBorder;
this.pannelAnnoGrid.Style.ForeColor.ColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.PanelText;
this.pannelAnnoGrid.Style.GradientAngle = 90;
this.pannelAnnoGrid.TabIndex = 14;
this.pannelAnnoGrid.Text = "panelEx2";
this.pannelAnnoGrid.ThemeAware = true;
//
// dgAnnotations
//
this.dgAnnotations.AutoGenerateColumns = false;
this.dgAnnotations.AutoSizeColumnsMode = System.Windows.Forms.DataGridViewAutoSizeColumnsMode.AllCells;
this.dgAnnotations.ColumnHeadersBorderStyle = System.Windows.Forms.DataGridViewHeaderBorderStyle.Single;
this.dgAnnotations.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;
this.dgAnnotations.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] {
this.myAnnotationTypeDataGridViewTextBoxColumn,
this.dTSDataGridViewTextBoxColumn,
this.userIDDataGridViewTextBoxColumn,
this.searchTextDataGridViewTextBoxColumn});
this.dgAnnotations.DataSource = this.itemAnnotationsBindingSource;
dataGridViewCellStyle2.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft;
dataGridViewCellStyle2.BackColor = System.Drawing.SystemColors.Window;
dataGridViewCellStyle2.Font = new System.Drawing.Font("Microsoft Sans Serif", 7.8F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
dataGridViewCellStyle2.ForeColor = System.Drawing.SystemColors.ControlText;
dataGridViewCellStyle2.SelectionBackColor = System.Drawing.SystemColors.Highlight;
dataGridViewCellStyle2.SelectionForeColor = System.Drawing.SystemColors.ControlText;
dataGridViewCellStyle2.WrapMode = System.Windows.Forms.DataGridViewTriState.False;
this.dgAnnotations.DefaultCellStyle = dataGridViewCellStyle2;
this.dgAnnotations.Dock = System.Windows.Forms.DockStyle.Fill;
this.dgAnnotations.GridColor = System.Drawing.Color.FromArgb(((int)(((byte)(208)))), ((int)(((byte)(215)))), ((int)(((byte)(229)))));
this.dgAnnotations.HighlightSelectedColumnHeaders = false;
this.dgAnnotations.Location = new System.Drawing.Point(0, 0);
this.dgAnnotations.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
this.dgAnnotations.MultiSelect = false;
this.dgAnnotations.Name = "dgAnnotations";
this.dgAnnotations.RowHeadersVisible = false;
this.dgAnnotations.RowTemplate.Height = 24;
this.dgAnnotations.RowTemplate.ReadOnly = true;
this.dgAnnotations.RowTemplate.Resizable = System.Windows.Forms.DataGridViewTriState.True;
this.dgAnnotations.SelectAllSignVisible = false;
this.dgAnnotations.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.FullRowSelect;
this.dgAnnotations.Size = new System.Drawing.Size(545, 325);
this.dgAnnotations.TabIndex = 1;
this.dgAnnotations.CellClick += new System.Windows.Forms.DataGridViewCellEventHandler(this.dgAnnotations_CellClick);
//
// myAnnotationTypeDataGridViewTextBoxColumn
//
this.myAnnotationTypeDataGridViewTextBoxColumn.DataPropertyName = "MyAnnotationType";
this.myAnnotationTypeDataGridViewTextBoxColumn.HeaderText = "Type";
this.myAnnotationTypeDataGridViewTextBoxColumn.Name = "myAnnotationTypeDataGridViewTextBoxColumn";
this.myAnnotationTypeDataGridViewTextBoxColumn.Width = 69;
//
// dTSDataGridViewTextBoxColumn
//
this.dTSDataGridViewTextBoxColumn.DataPropertyName = "DTS";
this.dTSDataGridViewTextBoxColumn.HeaderText = "Date";
this.dTSDataGridViewTextBoxColumn.Name = "dTSDataGridViewTextBoxColumn";
this.dTSDataGridViewTextBoxColumn.Width = 67;
//
// userIDDataGridViewTextBoxColumn
//
this.userIDDataGridViewTextBoxColumn.DataPropertyName = "UserID";
this.userIDDataGridViewTextBoxColumn.HeaderText = "User";
this.userIDDataGridViewTextBoxColumn.Name = "userIDDataGridViewTextBoxColumn";
this.userIDDataGridViewTextBoxColumn.Width = 67;
//
// searchTextDataGridViewTextBoxColumn
//
this.searchTextDataGridViewTextBoxColumn.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.Fill;
this.searchTextDataGridViewTextBoxColumn.DataPropertyName = "SearchText";
this.searchTextDataGridViewTextBoxColumn.HeaderText = "Description";
this.searchTextDataGridViewTextBoxColumn.Name = "searchTextDataGridViewTextBoxColumn";
//
// itemAnnotationsBindingSource
//
this.itemAnnotationsBindingSource.DataSource = typeof(VEPROMS.CSLA.Library.ItemAnnotation);
//
// AnnotationDetails
//
this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 16F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.Controls.Add(this.pannelAnnoEdit);
this.Controls.Add(this.expandableSplitter4);
this.Controls.Add(this.pannelAnnoGrid);
this.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
this.Name = "AnnotationDetails";
this.Size = new System.Drawing.Size(1124, 325);
this.pannelAnnoEdit.ResumeLayout(false);
this.pannelAnnoEdit.PerformLayout();
this.panelAnnoEditBtns.ResumeLayout(false);
this.pannelAnnoGrid.ResumeLayout(false);
((System.ComponentModel.ISupportInitialize)(this.dgAnnotations)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.itemAnnotationsBindingSource)).EndInit();
this.ResumeLayout(false);
this.dgAnnotations.DataSource = this.itemAnnotationsBindingSource;
dataGridViewCellStyle1.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft;
dataGridViewCellStyle1.BackColor = System.Drawing.SystemColors.Window;
dataGridViewCellStyle1.Font = new System.Drawing.Font("Microsoft Sans Serif", 7.8F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
dataGridViewCellStyle1.ForeColor = System.Drawing.SystemColors.ControlText;
dataGridViewCellStyle1.SelectionBackColor = System.Drawing.SystemColors.Highlight;
dataGridViewCellStyle1.SelectionForeColor = System.Drawing.SystemColors.ControlText;
dataGridViewCellStyle1.WrapMode = System.Windows.Forms.DataGridViewTriState.False;
this.dgAnnotations.DefaultCellStyle = dataGridViewCellStyle1;
this.dgAnnotations.Dock = System.Windows.Forms.DockStyle.Fill;
this.dgAnnotations.GridColor = System.Drawing.Color.FromArgb(((int)(((byte)(208)))), ((int)(((byte)(215)))), ((int)(((byte)(229)))));
this.dgAnnotations.HighlightSelectedColumnHeaders = false;
this.dgAnnotations.Location = new System.Drawing.Point(0, 0);
this.dgAnnotations.Margin = new System.Windows.Forms.Padding(2);
this.dgAnnotations.MultiSelect = false;
this.dgAnnotations.Name = "dgAnnotations";
this.dgAnnotations.RowHeadersVisible = false;
this.dgAnnotations.RowTemplate.Height = 24;
this.dgAnnotations.RowTemplate.ReadOnly = true;
this.dgAnnotations.RowTemplate.Resizable = System.Windows.Forms.DataGridViewTriState.True;
this.dgAnnotations.SelectAllSignVisible = false;
this.dgAnnotations.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.FullRowSelect;
this.dgAnnotations.Size = new System.Drawing.Size(409, 264);
this.dgAnnotations.TabIndex = 1;
this.dgAnnotations.CellClick += new System.Windows.Forms.DataGridViewCellEventHandler(this.dgAnnotations_CellClick);
//
// myAnnotationTypeDataGridViewTextBoxColumn
//
this.myAnnotationTypeDataGridViewTextBoxColumn.DataPropertyName = "MyAnnotationType";
this.myAnnotationTypeDataGridViewTextBoxColumn.HeaderText = "Type";
this.myAnnotationTypeDataGridViewTextBoxColumn.Name = "myAnnotationTypeDataGridViewTextBoxColumn";
this.myAnnotationTypeDataGridViewTextBoxColumn.Width = 56;
//
// dTSDataGridViewTextBoxColumn
//
this.dTSDataGridViewTextBoxColumn.DataPropertyName = "DTS";
this.dTSDataGridViewTextBoxColumn.HeaderText = "Date";
this.dTSDataGridViewTextBoxColumn.Name = "dTSDataGridViewTextBoxColumn";
this.dTSDataGridViewTextBoxColumn.Width = 55;
//
// userIDDataGridViewTextBoxColumn
//
this.userIDDataGridViewTextBoxColumn.DataPropertyName = "UserID";
this.userIDDataGridViewTextBoxColumn.HeaderText = "User";
this.userIDDataGridViewTextBoxColumn.Name = "userIDDataGridViewTextBoxColumn";
this.userIDDataGridViewTextBoxColumn.Width = 54;
//
// searchTextDataGridViewTextBoxColumn
//
this.searchTextDataGridViewTextBoxColumn.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.Fill;
this.searchTextDataGridViewTextBoxColumn.DataPropertyName = "SearchText";
this.searchTextDataGridViewTextBoxColumn.HeaderText = "Description";
this.searchTextDataGridViewTextBoxColumn.Name = "searchTextDataGridViewTextBoxColumn";
//
// itemAnnotationsBindingSource
//
this.itemAnnotationsBindingSource.DataSource = typeof(VEPROMS.CSLA.Library.ItemAnnotation);
//
// AnnotationDetails
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.Controls.Add(this.pannelAnnoEdit);
this.Controls.Add(this.expandableSplitter4);
this.Controls.Add(this.pannelAnnoGrid);
this.Margin = new System.Windows.Forms.Padding(2);
this.Name = "AnnotationDetails";
this.Size = new System.Drawing.Size(843, 264);
this.pannelAnnoEdit.ResumeLayout(false);
this.pannelAnnoEdit.PerformLayout();
this.panelAnnoEditBtns.ResumeLayout(false);
this.pannelAnnoGrid.ResumeLayout(false);
((System.ComponentModel.ISupportInitialize)(this.dgAnnotations)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.itemAnnotationsBindingSource)).EndInit();
this.ResumeLayout(false);
}
@@ -371,5 +386,6 @@ namespace Volian.Controls.Library
private System.Windows.Forms.DataGridViewTextBoxColumn dTSDataGridViewTextBoxColumn;
private System.Windows.Forms.DataGridViewTextBoxColumn userIDDataGridViewTextBoxColumn;
private System.Windows.Forms.DataGridViewTextBoxColumn searchTextDataGridViewTextBoxColumn;
}
private DevComponents.DotNetBar.ButtonX btnEPAnnotation;
}
}

View File

@@ -119,8 +119,8 @@ namespace Volian.Controls.Library
if (CurrentItem.MyDocVersion != null)
if (CurrentItem.MyDocVersion.DocVersionAssociationCount > 0)
_ROPath = CurrentItem.MyDocVersion.DocVersionAssociations[0].MyROFst.MyRODb.FolderPath;
ProcItem = CurrentItem.MyProcedure;
}
}
public AnnotationInfo FirstExeAnnotation(ItemInfo ii)
{
if (ii == null) return null;
@@ -329,14 +329,22 @@ namespace Volian.Controls.Library
AnnotationDirty = true;
}
private void dgAnnotations_CellClick(object sender, DataGridViewCellEventArgs e)
//C2025-023 - Electronic Procedures - Modifications to PROMS
// Only show Open button if it is an EPAnnotationType
private void dgAnnotations_CellClick(object sender, DataGridViewCellEventArgs e)
{
if (!_LoadingGrid) // Only set the Current Annotation when not loading the grid
btnEPAnnotation.Visible = false;
if (!_LoadingGrid) // Only set the Current Annotation when not loading the grid
{
if ((_Annotations != null) && (dgAnnotations.Rows.Count > 0))
CurrentAnnotation = _Annotations[dgAnnotations.CurrentRow.Index];
else
CurrentAnnotation = null;
if ((_Annotations != null) && (dgAnnotations.Rows.Count > 0))
{
CurrentAnnotation = _Annotations[dgAnnotations.CurrentRow.Index];
if (CurrentAnnotation.MyAnnotationType.IsEPAnnotationType && CurrentItem.HasEPformat(CurrentAnnotation.MyAnnotationType.TypeID))
btnEPAnnotation.Visible = true;
}
else
CurrentAnnotation = null;
}
}
@@ -356,7 +364,11 @@ namespace Volian.Controls.Library
cbGridAnnoType.DisplayMember = "Name";
cbGridAnnoType.ValueMember = "TypeId";
cbGridAnnoType.DataSource = AnnotationTypeInfoList.Get().Clone();
//C2025 - 027 Annotation Type Filtering
cbGridAnnoType.WatermarkText = "Select Annotation Type";
cbGridAnnoType.DataSource = VEPROMS.CSLA.Library.AnnotationstypeSelections.Get(MyUserInfo.UserID);
// If there are no annotatons, then selected index is -1 (not defined), otherwise select the first.
// This was done so that it could be saved if there was text entered but user moves to another steprtb without selecting save button
// so that annotation gets saved.
@@ -600,6 +612,7 @@ namespace Volian.Controls.Library
public void UpdateAnnotationGrid(ItemInfo currentitem)
{
CurrentItem = currentitem;
btnEPAnnotation.Visible = false;
UpdateAnnotationGrid();
}
@@ -702,5 +715,12 @@ namespace Volian.Controls.Library
}
#endregion
}
//C2025-023 - Electronic Procedures - Modifications to PROMS
// Open new Dynamic Form if open button selected
private void btnEPAnnotation_Click(object sender, EventArgs e)
{
frmEPAnnotationDetails EPfrm = new frmEPAnnotationDetails(CurrentAnnotation);
DialogResult dr = EPfrm.ShowDialog(this);
}
}
}

View File

@@ -69,6 +69,7 @@ namespace Volian.Controls.Library
_AnnotationDetails = annotationDetails;
cbAnnoType.DisplayMember = "Name";
cbAnnoType.DataSource = AnnotationTypeInfoList.Get();
lbResults.MouseMove -= new MouseEventHandler(lbResults_MouseMove);
lbResults.MouseMove += new MouseEventHandler(lbResults_MouseMove);
_TabControl = tc;
}

View File

@@ -354,7 +354,10 @@ namespace Volian.Controls.Library
private void WireCheckboxes()
{
foreach (CheckBox cb in MyCheckBoxes.Values)
{
cb.CheckedChanged -= new EventHandler(cb_CheckedChanged);
cb.CheckedChanged += new EventHandler(cb_CheckedChanged);
}
}
private void UnwireCheckboxes(bool reset)
{

View File

@@ -211,7 +211,9 @@ namespace Volian.Controls.Library
}
_myRTB = value;
MyRTB.LinkChanged -= new StepRTBLinkEvent(MyRTB_LinkChanged);
MyRTB.LinkChanged += new StepRTBLinkEvent(MyRTB_LinkChanged);
MyRTB.SelectionChanged -= new EventHandler(MyRTB_SelectionChanged);
MyRTB.SelectionChanged += new EventHandler(MyRTB_SelectionChanged);
if (string.IsNullOrEmpty(MyRTB.MyLinkText))

View File

@@ -161,8 +161,11 @@ namespace Volian.Controls.Library
if (_MyROFSTLookup == null) return;
advTreeRO.BeforeExpand -= new AdvTreeNodeCancelEventHandler(advTreeRO_BeforeExpand);
advTreeRO.BeforeExpand += new AdvTreeNodeCancelEventHandler(advTreeRO_BeforeExpand);
advTreeRO.AfterExpand -= new AdvTreeNodeEventHandler(advTreeRO_AfterExpandorCollapse);
advTreeRO.AfterExpand += new AdvTreeNodeEventHandler(advTreeRO_AfterExpandorCollapse);
advTreeRO.AfterCollapse -= new AdvTreeNodeEventHandler(advTreeRO_AfterExpandorCollapse);
advTreeRO.AfterCollapse += new AdvTreeNodeEventHandler(advTreeRO_AfterExpandorCollapse);
topnode = new DevComponents.AdvTree.Node();
@@ -250,6 +253,7 @@ namespace Volian.Controls.Library
topnode.Tag = fi;
}
advTreeProcSets.BeforeExpand -= new DevComponents.AdvTree.AdvTreeNodeCancelEventHandler(advTreeProcSets_BeforeExpand);
advTreeProcSets.BeforeExpand += new DevComponents.AdvTree.AdvTreeNodeCancelEventHandler(advTreeProcSets_BeforeExpand);
// position to the procedure set in the tree if we have a procedure open

View File

@@ -468,7 +468,9 @@ namespace Volian.Controls.Library
lastLastFormatID = fv.FormatID;
}
}
cbxTranVersion.SelectedIndexChanged -= new EventHandler(cbxTranVersion_SelectedIndexChanged);
cbxTranVersion.SelectedIndexChanged += new EventHandler(cbxTranVersion_SelectedIndexChanged);
cbxTranFormat.SelectedIndexChanged -= new EventHandler(cbxTranFormat_SelectedIndexChanged);
cbxTranFormat.SelectedIndexChanged += new EventHandler(cbxTranFormat_SelectedIndexChanged);
}
this.Cursor = Cursors.Default;
@@ -892,6 +894,7 @@ namespace Volian.Controls.Library
topnode.DataKey = fi.FolderID;
}
advTreeProcSets.BeforeExpand -= new DevComponents.AdvTree.AdvTreeNodeCancelEventHandler(advTreeProcSets_BeforeExpand);
advTreeProcSets.BeforeExpand += new DevComponents.AdvTree.AdvTreeNodeCancelEventHandler(advTreeProcSets_BeforeExpand);
// position to the procedure set in the tree if we have a procedure open
@@ -986,6 +989,7 @@ namespace Volian.Controls.Library
annoTypes.Add(new AnnotationTypeSearch(ati.Name, ati.TypeID.ToString()));
cbxAnnoTypes.DisplayMember = "Name";
cbxAnnoTypes.DataSource = annoTypes;
lbSrchResults.MouseMove -= new MouseEventHandler(lbSrchResults_MouseMove);
lbSrchResults.MouseMove += new MouseEventHandler(lbSrchResults_MouseMove);
_TabControl = tc;
}

View File

@@ -378,7 +378,10 @@ namespace Volian.Controls.Library
{
_MyStepRTB = _MyEditItem.MyStepRTB;
if (_MyStepRTB != null)
{
_MyStepRTB.Disposed -= new EventHandler(_MyStepRTB_Disposed);
_MyStepRTB.Disposed += new EventHandler(_MyStepRTB_Disposed);
}
}
else
_MyStepRTB = null;
@@ -469,6 +472,7 @@ namespace Volian.Controls.Library
myBar.DockTabControl.CloseButtonPosition = DevComponents.DotNetBar.eTabCloseButtonPosition.Right;
myBar.DockTabControl.Width = ClientRectangle.Width;
}
myBar.DockTabClosing -= new DockTabClosingEventHandler(myBar_DockTabClosing);
myBar.DockTabClosing += new DockTabClosingEventHandler(myBar_DockTabClosing);
if (!myBar.Visible)
myBar.Visible = true;
@@ -667,7 +671,8 @@ namespace Volian.Controls.Library
if (EDOfficeViewerX == null || EDWordCtrl == null)
{
MessageBox.Show("Edraw needs to be installed or reinstalled on this PC. Please contact your IT Administrator to install and register Edraw that was provided with the PROMS Installation media. If additional support is needed, please contact Volian", "Error in Word section",
MessageBox.Show("Edraw needs to be installed or reinstalled on this device. " + Environment.NewLine + "" + Environment.NewLine +
"Please contact your IT Administrator to install and register Edraw that was provided with the PROMS Installation media. If additional support is needed, please contact Volian.", "Error in Word section",
MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
return null;
}

File diff suppressed because it is too large Load Diff

View File

@@ -524,7 +524,56 @@ namespace Volian.Controls.Library
ItemInfo secitm = (ItemInfo)cbTranSects.SelectedItem;
bool hasMetaSubs = secitm.IsSection && secitm.Sections != null && secitm.Sections.Count > 0;
bool editSteps = !hasMetaSubs || (secitm.MyConfig is SectionConfig && (secitm.MyConfig as SectionConfig).SubSection_Edit == "Y");
if (!editSteps) return;
if (!editSteps)
{
if (secitm.Sections != null)
{
// if the transition to point is a section or procedure, just return
if (startitm.MyContent.Type < 20000) return;
groupPanelTranstionSteps.Style.BackColor = Color.Cornsilk;
// For the tree view, use parent, unless already at HLS. If at HLS, use this level.
//ItemInfo selitm2 = startitm.MyHLS;
ItemInfo selSubSec = secitm.Sections[0];
// The commented out code below is for displaying the steps from the first sub-section B2025-035
//ItemInfo subSelStep = selSubSec.Steps[0];
//E_TransUI etm2 = (E_TransUI)_CurItemFrom.ActiveFormat.PlantFormat.FormatData.TransData.TransTypeList[listBoxTranFmt.SelectedIndex].TransUI;
//if (subSelStep.IsInRNO)
// startitm = subSelStep.FirstSibling; // if in RNO tree, start out with HLS
//else
// startitm = subSelStep != null ? subSelStep.FirstSibling : startitm.FirstSibling;
// B2025-035
ItemInfo subSelStep = secitm.Sections[0];
E_TransUI etm2 = (E_TransUI)_CurItemFrom.ActiveFormat.PlantFormat.FormatData.TransData.TransTypeList[listBoxTranFmt.SelectedIndex].TransUI;
if (subSelStep.IsInRNO)
startitm = subSelStep.FirstSibling; // if in RNO tree, start out with HLS
else
startitm = subSelStep != null ? subSelStep.FirstSibling : startitm.FirstSibling;
// B2025-035
bool setsel2 = false;
while (startitm != null)
{
VETreeNode tvn = new VETreeNode(startitm, false);
tvn.Tag = startitm;
int active = this.tvTran.Nodes.Add(tvn);
if (subSelStep != null && startitm.ItemID == subSelStep.ItemID)
{
tvTran.SelectedNode = tvTran.Nodes[active];
setsel2 = true;
}
startitm = startitm.GetNext();
}
if (!setsel2) tvTran.SelectedNode = tvTran.Nodes[0];
tvTran.BeforeExpand -= new TreeViewCancelEventHandler(tvTran_BeforeExpand);
tvTran.BeforeExpand += new TreeViewCancelEventHandler(tvTran_BeforeExpand);
// bug fix. TreeView needs the next two lines to properly display the bottom node. jsj 01/08/2010
tvTran.ItemHeight++;
tvTran.ItemHeight--;
}
return;
}
// if the transition to point is a section or procedure, just return
if (startitm.MyContent.Type < 20000) return;
@@ -551,6 +600,7 @@ namespace Volian.Controls.Library
startitm = startitm.GetNext();
}
if (!setsel) tvTran.SelectedNode = tvTran.Nodes[0];
tvTran.BeforeExpand -= new TreeViewCancelEventHandler(tvTran_BeforeExpand);
tvTran.BeforeExpand += new TreeViewCancelEventHandler(tvTran_BeforeExpand);
// bug fix. TreeView needs the next two lines to properly display the bottom node. jsj 01/08/2010
tvTran.ItemHeight++;
@@ -934,7 +984,13 @@ namespace Volian.Controls.Library
// a different section was selected, if step section, update step list, otherwise, empty
// it & disable.
ItemInfo secitm = (ItemInfo)cbTranSects.SelectedItem;
if (!secitm.IsStepSection)
//if (secitm.IsStepSection)
//{
// cbTranSects.SelectedItem.Sections[0];
//}
if (!secitm.IsStepSection)
{
tvTran.Nodes.Clear();
tvTran.Enabled = false;

View File

@@ -214,10 +214,14 @@ namespace Volian.Controls.Library
UserCheckOffChar = (char)co.UIMark;
}
// Deal with changes in content data
value.MyContent.Changed -= new ContentInfoEvent(MyContent_Changed);
value.MyContent.Changed += new ContentInfoEvent(MyContent_Changed);
value.MyProcedure.MyContent.Changed -= new ContentInfoEvent(MyContent_Changed);
value.MyProcedure.MyContent.Changed += new ContentInfoEvent(MyContent_Changed);
// Deal with change in item data
value.Changed -= new ItemInfoEvent(value_Changed);
value.Changed += new ItemInfoEvent(value_Changed);
value.OrdinalChanged -= new ItemInfoEvent(value_OrdinalChanged);
value.OrdinalChanged += new ItemInfoEvent(value_OrdinalChanged);
// do something like this to draw circle around step numbers - note got NULL reference error on NSP data
//if (value.FormatStepData != null && value.FormatStepData.TabData.IdentPrint.Contains("C0")) Circle = true;
@@ -758,7 +762,7 @@ namespace Volian.Controls.Library
// clear tabs, clears then all so that next 'get' will calculate new.
public void SetAllTabs()
{
RefreshTab();
RefreshTab();
if (_MyAfterEditItems != null) _MyAfterEditItems[0].SetAllTabs(); // B2020-043: used to loop through all, but then recursion would redo.
if (_MyNextEditItem != null) _MyNextEditItem.SetAllTabs();
@@ -1160,7 +1164,7 @@ namespace Volian.Controls.Library
{
if (myItemInfoList != null)
foreach (ItemInfo item in myItemInfoList)
AddChildBefore(item, expand);
AddChildBefore(item, expand);
}
public EditItem AddChildBefore(ItemInfoList myItemInfoList, EditItem nextEditItem)
{
@@ -3994,11 +3998,16 @@ namespace Volian.Controls.Library
// TODO: Adjust top based upon format
// TODO: Remove Label and just output ident on the paint event
TabLeft = 20;
SetupHeader(itemInfo);
if (!itemInfo.IsStep) // C2025-036 reduce un-needed processing - this will prevent duplicat calls that generate step tabs when loading a procedure
SetupHeader(itemInfo);
SetupAlarmTableView(itemInfo); // C2021-018 display alarm point table information in the step editor (if the format flag is set)
this.Paint -= new PaintEventHandler(EditItem_Paint);
this.Paint += new PaintEventHandler(EditItem_Paint);
this.BackColorChanged -= new EventHandler(EditItem_BackColorChanged);
this.BackColorChanged += new EventHandler(EditItem_BackColorChanged);
this.Move -= new EventHandler(EditItem_Move);
this.Move += new EventHandler(EditItem_Move);
this.Resize -= new EventHandler(EditItem_Resize);
this.Resize += new EventHandler(EditItem_Resize);
if (itemInfo != null)
{
@@ -4049,6 +4058,7 @@ namespace Volian.Controls.Library
SeqLevel = myParentEditItem.SeqLevel + ((myChildRelation == ChildRelation.After || myChildRelation == ChildRelation.Before) && itemInfo.IsSequential ? 1 : 0);
//// TIMING: DisplayItem.TimeIt("CSLARTB seqLevel");
MyItemInfo = itemInfo;
MyItemInfo.MyConfig.PropertyChanged -= new PropertyChangedEventHandler(MyConfig_PropertyChanged);
MyItemInfo.MyConfig.PropertyChanged += new PropertyChangedEventHandler(MyConfig_PropertyChanged);
}
//// TIMING: DisplayItem.TimeIt("CSLARTB MyItem");

View File

@@ -0,0 +1,52 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace Volian.Controls.Library
{
//Class to handle bug in Windows WinForms ListBox
// that autoselects first item when no items are selected
public partial class ListBoxMulti : ListBox
{
public ListBoxMulti()
{
Visible = true;
SelectionMode = SelectionMode.MultiSimple;
SelectedIndexChanged += lb_SelectedIndexChanged;
Disposed += ListBoxMulti_Disposed;
}
//singleselectedindex
// will help to fix bug in Winforms ListBox
// that autoselects first item when no items are selected
// -1 = multi or set to this after 1st initialization
// if this = 0 and only 1 item selected,
// that means item was autoselected, so clear all items.
public int singleselectedindex { get; set; }
private void lb_SelectedIndexChanged(object sender, EventArgs e)
{
ListBoxMulti tmp = (ListBoxMulti)sender;
if (tmp.SelectedItems.Count == 1 && tmp.singleselectedindex == 0)
{
tmp.ClearSelected();
}
else if (tmp.SelectedItems.Count == 1)
tmp.singleselectedindex = tmp.SelectedIndex;
else
tmp.singleselectedindex = -1;
}
//remove event when get rid of object
private void ListBoxMulti_Disposed(object sender, EventArgs e)
{
SelectedIndexChanged -= lb_SelectedIndexChanged;
}
}
}

View File

@@ -1284,7 +1284,7 @@ namespace Volian.Controls.Library
}
selectedRtfSB.Append(@"{\rtf1\ansi\ansicpg1252\deff0\deflang1033{\fonttbl{\f0\fnil\fcharset2 " + myFont.FontFamily.Name + @";}"); //}\f0\fs" + this.Font.SizeInPoints * 2 + @" " + myDisplayTextElement.Text + @"}}";
if (!isFixed)
selectedRtfSB.Append(@"{\f1\fnil\fcharset0 " + Volian.Base.Library.vlnFont.ProportionalSymbolFont + @";}}{\colortbl ;\red255\green0\blue0;}"); // C2017-036 get best available proportional font for symbols
selectedRtfSB.Append(@"{\f1\fnil\fcharset0 " + Volian.Base.Library.vlnFont.ProportionalSymbolFont + @";}}{\colortbl ;\red255\green0\blue0;\red0\green0\blue255;}"); // C2017-036 get best available proportional font for symbols - B2025-039 add Blue for Colored Replace Words
else
selectedRtfSB.Append(@"{\f1\fnil\fcharset0 FreeMono;}}{\colortbl ;\red255\green0\blue0;\red0\green0\blue255;}"); // FreeMono is now used for the edit screen only. VESymbFix and Consolas are used for printing
selectedRtfSB.Append("\r\n");

View File

@@ -0,0 +1,149 @@

namespace Volian.Controls.Library
{
partial class TablePropertiesControl
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Component Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.lbl_Rows = new System.Windows.Forms.Label();
this.lbl_Cols = new System.Windows.Forms.Label();
this.NumRows = new System.Windows.Forms.NumericUpDown();
this.NumCols = new System.Windows.Forms.NumericUpDown();
this.dataview = new System.Windows.Forms.DataGridView();
this.lbltitle = new System.Windows.Forms.Label();
((System.ComponentModel.ISupportInitialize)(this.NumRows)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.NumCols)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.dataview)).BeginInit();
this.SuspendLayout();
//
// lbl_Rows
//
this.lbl_Rows.AutoSize = true;
this.lbl_Rows.Location = new System.Drawing.Point(0, 34);
this.lbl_Rows.Name = "lbl_Rows";
this.lbl_Rows.Size = new System.Drawing.Size(89, 13);
this.lbl_Rows.TabIndex = 0;
this.lbl_Rows.Text = "Number of Rows:";
//
// lbl_Cols
//
this.lbl_Cols.AutoSize = true;
this.lbl_Cols.Location = new System.Drawing.Point(0, 56);
this.lbl_Cols.Name = "lbl_Cols";
this.lbl_Cols.Size = new System.Drawing.Size(102, 13);
this.lbl_Cols.TabIndex = 1;
this.lbl_Cols.Text = "Number of Columns:";
//
// NumRows
//
this.NumRows.Location = new System.Drawing.Point(114, 32);
this.NumRows.Minimum = new decimal(new int[] {
1,
0,
0,
0});
this.NumRows.Name = "NumRows";
this.NumRows.Size = new System.Drawing.Size(47, 20);
this.NumRows.TabIndex = 3;
this.NumRows.Value = new decimal(new int[] {
1,
0,
0,
0});
this.NumRows.ValueChanged += new System.EventHandler(this.NumRows_ValueChanged);
//
// NumCols
//
this.NumCols.Location = new System.Drawing.Point(114, 54);
this.NumCols.Minimum = new decimal(new int[] {
1,
0,
0,
0});
this.NumCols.Name = "NumCols";
this.NumCols.Size = new System.Drawing.Size(47, 20);
this.NumCols.TabIndex = 4;
this.NumCols.Value = new decimal(new int[] {
1,
0,
0,
0});
this.NumCols.ValueChanged += new System.EventHandler(this.NumCols_ValueChanged);
//
// dataview
//
this.dataview.AllowUserToAddRows = false;
this.dataview.AllowUserToDeleteRows = false;
this.dataview.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.dataview.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;
this.dataview.ColumnHeadersVisible = false;
this.dataview.Location = new System.Drawing.Point(3, 73);
this.dataview.Name = "dataview";
this.dataview.Size = new System.Drawing.Size(316, 150);
this.dataview.TabIndex = 5;
this.dataview.CellEndEdit += new System.Windows.Forms.DataGridViewCellEventHandler(this.dataview_CellEndEdit);
//
// lbltitle
//
this.lbltitle.AutoSize = true;
this.lbltitle.Font = new System.Drawing.Font("Microsoft Sans Serif", 10F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.lbltitle.Location = new System.Drawing.Point(3, 4);
this.lbltitle.Name = "lbltitle";
this.lbltitle.Size = new System.Drawing.Size(0, 17);
this.lbltitle.TabIndex = 6;
//
// TablePropertiesControl
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.Controls.Add(this.lbltitle);
this.Controls.Add(this.dataview);
this.Controls.Add(this.NumCols);
this.Controls.Add(this.NumRows);
this.Controls.Add(this.lbl_Cols);
this.Controls.Add(this.lbl_Rows);
this.Name = "TablePropertiesControl";
this.Size = new System.Drawing.Size(319, 252);
((System.ComponentModel.ISupportInitialize)(this.NumRows)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.NumCols)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.dataview)).EndInit();
this.ResumeLayout(false);
this.PerformLayout();
}
#endregion
private System.Windows.Forms.Label lbl_Rows;
private System.Windows.Forms.Label lbl_Cols;
private System.Windows.Forms.NumericUpDown NumRows;
private System.Windows.Forms.NumericUpDown NumCols;
private System.Windows.Forms.DataGridView dataview;
private System.Windows.Forms.Label lbltitle;
}
}

View File

@@ -0,0 +1,240 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace Volian.Controls.Library
{
//C2025-023 Electronic Procedures
//Control for designating which cells in a table require EP input
public partial class TablePropertiesControl : UserControl
{
//defines the type of possible inputs from an EP viewer
public enum EPinputtype
{
none,
textbox,
checkbox
};
private DataTable values;
private BindingSource bindingSource = null;
private int totalrows = 1;
private int totalcols = 1;
public readonly string epname;
private bool IsInitializing;
//initialization / data will be in the format:
// totalnumrows,totalnumcols;(row,col):value|(row,col):value...
public TablePropertiesControl(string name, string title, string initialvalues)
{
InitializeComponent();
IsInitializing = true;
epname = name;
lbltitle.Text = title;
initializevalues(initialvalues);
bindingSource = new BindingSource(values, "");
dataview.DataSource = bindingSource;
dataview.AutoGenerateColumns = false;
Load += new EventHandler(FormLoad_setDefaults);
}
//initialization / data will be in the format:
// totalnumrows,totalnumcols;(row,col):value|(row,col):value...
private void initializevalues(string initialvalues)
{
values = new DataTable("values");
if (!string.IsNullOrEmpty(initialvalues))
{
string[] grp = initialvalues.Split(';');
string[] total = grp[0].Split(',');
initializedt(int.Parse(total[0]), int.Parse(total[1]));
string[] ivs = grp[1].Split('|');
//pair will be of format:
//(row,col):value
foreach (string pair in ivs)
{
Match m = Regex.Match(pair, @"\(([\d]),([\d])\):([\w]+)");
if (m.Success)
{
int row = int.Parse(m.Groups[1].Value);
int col = int.Parse(m.Groups[2].Value);
string v = m.Groups[3].Value;
values.Rows[row][col] = v;
}
}
values.AcceptChanges();
}
else
{
initializedt(1, 1);
}
}
//initialize the blank datatable
private void initializedt(int numrows, int numcols)
{
totalrows = numrows;
totalcols = numcols;
for (int c = 0; c < totalcols; c++)
{
values.Columns.Add(new DataColumn($"Column{c}") { DefaultValue = "none" });
}
for (int rw = 0; rw < totalrows; rw++)
{
values.Rows.Add();
}
}
void FormLoad_setDefaults(object sender, EventArgs e)
{
BindingSource bindingSourceDropDown = new BindingSource();
bindingSourceDropDown.DataSource = Enum.GetNames(typeof(EPinputtype));
//in order to achieve a dropdown of possible values need
//to remove the auto-inserted columns
//that were auto-generated of type type text
//when values was bound to the datagrid
for (int c = 0; c < totalcols; c++)
{
dataview.Columns.RemoveAt(c);
var cName = new DataGridViewComboBoxColumn();
cName.DataSource = bindingSourceDropDown;
cName.DefaultCellStyle.NullValue = "none";
dataview.Columns.Insert(c, cName);
}
NumRows.Value = totalrows;
NumCols.Value = totalcols;
IsInitializing = false;
setDataViewtoValues();
}
//set the display cells to match the values in the datatable for initialization
//and resize of the dataviewgrid
void setDataViewtoValues()
{
if (!IsInitializing)
{
for (int c = 0; c < totalcols; c++)
{
for (int rw = 0; rw < totalrows; rw++)
{
dataview.Rows[rw].Cells[c].Value = values.Rows[rw][c];
}
}
}
}
//Get storage string for storing table values in db
// data will be returned in the format:
// totalnumrows,totalnumcols;(row,col):value|(row,col):value...
public string GetStorageValue()
{
//force any in progress editing to commit.
((BindingSource)dataview.DataSource).EndEdit();
StringBuilder bldr = new StringBuilder();
bldr.Append($"{totalrows},{totalcols}");
List<string> points = new List<string>();
for (int rw = 0; rw < values.Rows.Count; rw++)
{
for (int col = 0; col < values.Columns.Count; col++)
{
if ((string) values.Rows[rw][col] != "none")
points.Add($"({rw},{col}):{values.Rows[rw][col]}");
}
}
if (points.Count > 0)
{
bldr.Append(";");
bldr.Append(string.Join("|", points));
}
return bldr.ToString();
}
private void NumRows_ValueChanged(object sender, EventArgs e)
{
int endNumRows = (int)NumRows.Value;
int curNumRows = totalrows;
//remove rows till equal
while (curNumRows > endNumRows)
{
values.Rows.RemoveAt(curNumRows - 1);
curNumRows--;
}
//add rows till equal
while (curNumRows < endNumRows)
{
values.Rows.Add();
curNumRows++;
}
totalrows = endNumRows;
setDataViewtoValues();
}
private void NumCols_ValueChanged(object sender, EventArgs e)
{
int endNumCols = (int)NumCols.Value;
int curNumCols = totalcols;
BindingSource bindingSourceDropDown = new BindingSource();
bindingSourceDropDown.DataSource = Enum.GetNames(typeof(EPinputtype));
//remove cols till equal
while (curNumCols > endNumCols)
{
values.Columns.RemoveAt(curNumCols - 1);
dataview.Columns.RemoveAt(curNumCols - 1);
curNumCols--;
}
//add cols till equal
while (curNumCols < endNumCols)
{
values.Columns.Add(new DataColumn($"Column{curNumCols + 1}") { DefaultValue = "none"});
if (dataview.Columns.Count > curNumCols) dataview.Columns.RemoveAt(curNumCols);
var cName = new DataGridViewComboBoxColumn();
cName.DataSource = bindingSourceDropDown;
cName.DefaultCellStyle.NullValue = "none";
dataview.Columns.Add(cName);
curNumCols++;
}
totalcols = endNumCols;
setDataViewtoValues();
}
//set the datatable value to match the changed datagridview value
//for some reason despite being bound, does not automatically update
// (it may be that datatable as a bindingsource does not implement INotifyProperty
// and thus needs manually set like this)
private void dataview_CellEndEdit(object sender, DataGridViewCellEventArgs e)
{
values.Rows[e.RowIndex][e.ColumnIndex] = (string) dataview.Rows[e.RowIndex].Cells[e.ColumnIndex].Value;
}
}
}

View File

@@ -0,0 +1,120 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>

View File

@@ -243,6 +243,12 @@
<Compile Include="frmEnhanced.Designer.cs">
<DependentUpon>frmEnhanced.cs</DependentUpon>
</Compile>
<Compile Include="frmEPAnnotationDetails.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="frmEPAnnotationDetails.Designer.cs">
<DependentUpon>frmEPAnnotationDetails.cs</DependentUpon>
</Compile>
<Compile Include="frmImportWordContents.cs">
<SubType>Form</SubType>
</Compile>
@@ -274,6 +280,9 @@
<DependentUpon>ImageItem.cs</DependentUpon>
</Compile>
<Compile Include="LinkText.cs" />
<Compile Include="ListBoxMulti.cs">
<SubType>Component</SubType>
</Compile>
<Compile Include="PreviewMultiLineRO.cs">
<SubType>Form</SubType>
</Compile>
@@ -374,6 +383,12 @@
</Compile>
<Compile Include="RomanNumeral.cs" />
<Compile Include="RTBAPI.cs" />
<Compile Include="TablePropertiesControl.cs">
<SubType>UserControl</SubType>
</Compile>
<Compile Include="TablePropertiesControl.Designer.cs">
<DependentUpon>TablePropertiesControl.cs</DependentUpon>
</Compile>
<Compile Include="TransPanel.cs">
<SubType>Component</SubType>
</Compile>
@@ -474,6 +489,10 @@
<EmbeddedResource Include="frmEnhanced.resx">
<DependentUpon>frmEnhanced.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="frmEPAnnotationDetails.resx">
<DependentUpon>frmEPAnnotationDetails.cs</DependentUpon>
<SubType>Designer</SubType>
</EmbeddedResource>
<EmbeddedResource Include="frmImportWordContents.resx">
<DependentUpon>frmImportWordContents.cs</DependentUpon>
</EmbeddedResource>
@@ -515,6 +534,9 @@
<Generator>ResXFileCodeGenerator</Generator>
<LastGenOutput>Resources.Designer.cs</LastGenOutput>
</EmbeddedResource>
<EmbeddedResource Include="TablePropertiesControl.resx">
<DependentUpon>TablePropertiesControl.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="vlnExpander.resx">
<DependentUpon>vlnExpander.cs</DependentUpon>
<SubType>Designer</SubType>

View File

@@ -0,0 +1,111 @@
namespace Volian.Controls.Library
{
partial class frmEPAnnotationDetails
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.btnOk = new System.Windows.Forms.Button();
this.btnCancel = new System.Windows.Forms.Button();
this.panel_btns = new System.Windows.Forms.Panel();
this.panelEP = new System.Windows.Forms.TableLayoutPanel();
this.panel_btns.SuspendLayout();
this.SuspendLayout();
//
// btnOk
//
this.btnOk.DialogResult = System.Windows.Forms.DialogResult.OK;
this.btnOk.Location = new System.Drawing.Point(9, 7);
this.btnOk.Margin = new System.Windows.Forms.Padding(2);
this.btnOk.Name = "btnOk";
this.btnOk.Size = new System.Drawing.Size(56, 19);
this.btnOk.TabIndex = 0;
this.btnOk.Text = "OK";
this.btnOk.UseVisualStyleBackColor = true;
this.btnOk.Click += new System.EventHandler(this.btnOk_Click);
//
// btnCancel
//
this.btnCancel.Location = new System.Drawing.Point(82, 7);
this.btnCancel.Margin = new System.Windows.Forms.Padding(2);
this.btnCancel.Name = "btnCancel";
this.btnCancel.Size = new System.Drawing.Size(56, 19);
this.btnCancel.TabIndex = 1;
this.btnCancel.Text = "Cancel";
this.btnCancel.UseVisualStyleBackColor = true;
this.btnCancel.Click += new System.EventHandler(this.btnCancel_Click);
//
// panel_btns
//
this.panel_btns.Controls.Add(this.btnCancel);
this.panel_btns.Controls.Add(this.btnOk);
this.panel_btns.Dock = System.Windows.Forms.DockStyle.Bottom;
this.panel_btns.Location = new System.Drawing.Point(0, 512);
this.panel_btns.Name = "panel_btns";
this.panel_btns.Size = new System.Drawing.Size(762, 30);
this.panel_btns.TabIndex = 2;
//
// panelEP
//
this.panelEP.AutoScroll = true;
this.panelEP.ColumnCount = 2;
this.panelEP.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle());
this.panelEP.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle());
this.panelEP.Dock = System.Windows.Forms.DockStyle.Fill;
this.panelEP.Location = new System.Drawing.Point(0, 0);
this.panelEP.Name = "panelEP";
this.panelEP.RowCount = 1;
this.panelEP.RowStyles.Add(new System.Windows.Forms.RowStyle());
this.panelEP.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 512F));
this.panelEP.Size = new System.Drawing.Size(762, 512);
this.panelEP.TabIndex = 3;
//
// frmEPAnnotationDetails
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.AutoSize = true;
this.ClientSize = new System.Drawing.Size(762, 542);
this.Controls.Add(this.panelEP);
this.Controls.Add(this.panel_btns);
this.Margin = new System.Windows.Forms.Padding(2);
this.Name = "frmEPAnnotationDetails";
this.Text = "Electronic Procedure Details";
this.TopMost = true;
this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.frmEPAnnotationDetails_FormClosing);
this.panel_btns.ResumeLayout(false);
this.ResumeLayout(false);
}
#endregion
private System.Windows.Forms.Button btnOk;
private System.Windows.Forms.Button btnCancel;
private System.Windows.Forms.Panel panel_btns;
private System.Windows.Forms.TableLayoutPanel panelEP;
}
}

View File

@@ -0,0 +1,320 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using VEPROMS.CSLA.Library;
using Volian.Controls.Library;
using System.Linq;
namespace Volian.Controls.Library
{
//C2025-023 - Electronic Procedures - Modifications to PROMS
//Form for Dynamic Showing of EP detail controls and entry
public partial class frmEPAnnotationDetails : Form
{
private AnnotationInfo _CurrentAnnotation;
private EPFields myEPFields;
private AnnotationConfig MyConfig;
private StepTabRibbon _MyStepTabRibbon;
private Dictionary<string, TextBox> _DicTB;
private Dictionary<string, CheckBox> _DicCheckBox;
private Dictionary<string, ComboBox> _DicComboBox;
private Dictionary<string, ComboBox> _DicSingleRO;
private Dictionary<string, ListBoxMulti> _DicMultiRO;
private TablePropertiesControl _TablePropControl;
private string multiseparator = ",";
public frmEPAnnotationDetails(AnnotationInfo currAnn)
{
InitializeComponent();
_DicTB = new Dictionary<string, TextBox>();
_DicCheckBox = new Dictionary<string, CheckBox>();
_DicComboBox = new Dictionary<string, ComboBox>();
_DicSingleRO = new Dictionary<string, ComboBox>();
_DicMultiRO = new Dictionary<string, ListBoxMulti>();
InitializeSpecificControls(currAnn);
_MyStepTabRibbon = new StepTabRibbon();
}
private void InitializeSpecificControls(AnnotationInfo currAnn)
{
_CurrentAnnotation = currAnn;
myEPFields = _CurrentAnnotation.MyItem.GetValidEPFields(_CurrentAnnotation.TypeID);
MyConfig = new AnnotationConfig(currAnn.Config);
int MaxCharsInLabel = myEPFields.Where(y => y.type.ToLower() != "tableinput").Max(x => x.label.Length);
//font size 8 - make labels slightly bigger than largest label
panelEP.ColumnStyles[0].SizeType = SizeType.Absolute;
panelEP.ColumnStyles[0].Width = (8 * MaxCharsInLabel) + 5;
int RowCount = 0;
foreach (EPField EP in myEPFields)
{
RowCount += 1;
panelEP.RowCount = RowCount;
panelEP.Top = 20;
if (EP.type.ToLower() != "tableinput")
{
Label wlbl = new Label();
wlbl.Text = EP.label;
wlbl.Visible = true;
wlbl.TextAlign = ContentAlignment.MiddleLeft;
wlbl.Anchor = AnchorStyles.Left | AnchorStyles.Top;
wlbl.Width = (8 * MaxCharsInLabel) + 5;
panelEP.Controls.Add(wlbl, 0, panelEP.RowCount - 1);
}
if (EP.type.ToLower() == "text")
{
TextBox tb = new TextBox();
tb.Font = tb.Font = new Font("Arial", 8);
tb.BorderStyle = BorderStyle.FixedSingle;
//aligning to both left and right stretches the textbox to the width of the form
tb.Anchor = AnchorStyles.Left | AnchorStyles.Right | AnchorStyles.Top;
string val = MyConfig.GetValue("EP", EP.name).Replace("\\u8209?", "-").Replace(@"\u9586?", @"\");
tb.Text = val;
tb.Visible = true;
tb.Height = EP.numlines * tb.Font.Height + 1 + tb.Margin.Vertical;
tb.MinimumSize = new Size(0, EP.numlines * tb.Font.Height + 1 + tb.Margin.Vertical);
if (EP.numlines > 1)
{
tb.Multiline = true;
tb.ScrollBars = ScrollBars.Both;
panelEP.RowStyles.Insert(panelEP.RowCount - 1, new RowStyle(SizeType.Absolute, 50));
}
else
{
panelEP.RowStyles.Insert(panelEP.RowCount - 1, new RowStyle(SizeType.AutoSize));
}
_DicTB.Add(EP.name, tb);
panelEP.Controls.Add(tb, 1, panelEP.RowCount - 1);
}
else
{
panelEP.RowStyles.Insert(panelEP.RowCount - 1, new RowStyle(SizeType.AutoSize));
}
if (EP.type.ToLower() == "logical")
{
CheckBox cb = new CheckBox();
cb.Text = EP.text;
cb.Visible = true;
string val = MyConfig.GetValue("EP", EP.name);
cb.Checked = val != null && val != "" && val.ToUpper()[0] == 'Y';
_DicCheckBox.Add(EP.name, cb);
cb.AutoSize = true;
panelEP.Controls.Add(cb, 1, panelEP.RowCount - 1);
}
if (EP.type.ToLower() == "combo")
{
ComboBox cmb = new ComboBox();
cmb.Visible = true;
string tmp = EP.text;
string[] tmps = tmp.Split(",".ToCharArray());
foreach (string t in tmps) cmb.Items.Add(t.Trim());
string val = MyConfig.GetValue("EP", EP.name);
if (val != null && val != "") cmb.SelectedItem = val;
cmb.DropDownWidth = TextRenderer.MeasureText(tmps.OrderByDescending(x => x.Length).First(), cmb.Font).Width + SystemInformation.VerticalScrollBarWidth;
cmb.Width = cmb.DropDownWidth;
_DicComboBox.Add(EP.name, cmb);
panelEP.Controls.Add(cmb, 1, panelEP.RowCount - 1);
}
if (EP.type.ToLower() == "rosingle")
{
ComboBox cmb = new ComboBox();
cmb.Visible = true;
List<ROListItem> tmps = EP.getROList(currAnn, true);
cmb.DisplayMember = "Text";
cmb.ValueMember = "Value";
cmb.DataSource = tmps;
cmb.DropDownStyle = ComboBoxStyle.DropDownList;
cmb.DropDownWidth = TextRenderer.MeasureText(tmps.OrderByDescending(x => x.Text.Length).First().Text, cmb.Font).Width + SystemInformation.VerticalScrollBarWidth;
cmb.Width = cmb.DropDownWidth;
_DicSingleRO.Add(EP.name, cmb);
panelEP.Controls.Add(cmb, 1, panelEP.RowCount - 1);
}
if (EP.type.ToLower() == "romulti")
{
ListBoxMulti lb = new ListBoxMulti();
List<ROListItem> tmps = EP.getROList(currAnn, false);
lb.DisplayMember = "Text";
lb.ValueMember = "Value";
lb.Width = TextRenderer.MeasureText(tmps.OrderByDescending(x => x.Text.Length).First().Text, lb.Font).Width + SystemInformation.VerticalScrollBarWidth;
lb.DataSource = tmps;
_DicMultiRO.Add(EP.name, lb);
panelEP.Controls.Add(lb, 1, panelEP.RowCount - 1);
}
//note will allow only 1 tableproperties control since it is a 1:1 match with the table that is in the step
if (EP.type.ToLower() == "tableinput" && _TablePropControl == null)
{
string val = MyConfig.GetValue("EP", EP.name);
_TablePropControl = new TablePropertiesControl(EP.name, EP.label, val);
_TablePropControl.Anchor = AnchorStyles.Left | AnchorStyles.Right | AnchorStyles.Top;
panelEP.Controls.Add(_TablePropControl, 1, panelEP.RowCount - 1);
}
}
Load += new EventHandler(Form1Load_setDefaults);
}
void Form1Load_setDefaults(object sender, EventArgs e)
{
foreach (KeyValuePair<string, ComboBox> pair in _DicSingleRO)
{
string val = MyConfig.GetValue("EP", pair.Key);
if (!string.IsNullOrEmpty(val) && pair.Value.Items.OfType<ROListItem>().Any(x=> x.Value == val))
pair.Value.SelectedValue = val;
else
pair.Value.SelectedValue = "";
}
foreach (KeyValuePair<string, ListBoxMulti> pair in _DicMultiRO)
{
//clear all items at start in case items were autoselected - bug in Winforms ListBox
pair.Value.ClearSelected();
string val = MyConfig.GetValue("EP", pair.Key);
if (val != null && val != "")
{
var selectedvalues = val.Split(multiseparator.ToCharArray());
foreach (string item in selectedvalues)
{
string text = ((List<ROListItem>)pair.Value.DataSource).Find(x => x.Value == item)?.Text;
if (!string.IsNullOrEmpty(text)) pair.Value.SetSelected(pair.Value.FindString(text), true);
}
}
//set this to -1 after initial setting of values
//this will help to fix bug in Winforms ListBox
//that autoselects first item when no items are selected
pair.Value.singleselectedindex = -1;
}
}
private void FieldStepRTB_Enter(object sender, EventArgs e)
{
_MyStepTabRibbon.MyStepRTB = (StepRTB)sender;
}
private void btnOk_Click(object sender, EventArgs e)
{
// loop through all of the fields
bool isDirty = false;
foreach (EPField EP in myEPFields)
{
if (EP.type.ToLower() == "text")
{
TextBox cur = _DicTB[EP.name];
string newval = cur.Text;
string oldval = MyConfig.GetValue("EP", EP.name);
if (oldval != newval)
{
isDirty = true;
MyConfig.SetValue("EP", EP.name, newval.Replace("\\u8209?","-"));
}
}
else if (EP.type.ToLower() == "logical")
{
CheckBox cur = _DicCheckBox[EP.name];
string newval = cur.Checked ? "Y" : "N";
string oldval = MyConfig.GetValue("EP", EP.name);
if (newval != oldval)
{
isDirty = true;
MyConfig.SetValue("EP", EP.name, newval);
}
}
else if (EP.type.ToLower() == "combo")
{
ComboBox cmbcur = _DicComboBox[EP.name];
string newval = cmbcur.Text;
string oldval = MyConfig.GetValue("EP", EP.name);
if (newval != oldval)
{
isDirty = true;
MyConfig.SetValue("EP", EP.name, newval);
}
}
else if (EP.type.ToLower() == "rosingle")
{
ComboBox cmbcur = _DicSingleRO[EP.name];
string newval = cmbcur.SelectedValue.ToString();
string oldval = MyConfig.GetValue("EP", EP.name);
if (newval == "-1") newval = "";
if (newval != oldval)
{
isDirty = true;
MyConfig.SetValue("EP", EP.name, newval);
}
}
else if (EP.type.ToLower() == "romulti")
{
ListBoxMulti lbcur = _DicMultiRO[EP.name];
string newvalues = String.Join(multiseparator, lbcur.SelectedItems.OfType<ROListItem>().Select(item => item.Value));
string oldvalues = MyConfig.GetValue("EP", EP.name);
if (newvalues != oldvalues)
{
isDirty = true;
MyConfig.SetValue("EP", EP.name, newvalues);
}
}
else if (EP.type.ToLower() == "tableinput" && EP.name == _TablePropControl.epname)
{
string newvalues = _TablePropControl.GetStorageValue();
string oldvalues = MyConfig.GetValue("EP", EP.name);
if (newvalues != oldvalues)
{
isDirty = true;
MyConfig.SetValue("EP", EP.name, newvalues);
}
}
}
if (isDirty)
{
using (Annotation annotation = _CurrentAnnotation.Get())
{
if (annotation != null)
{
annotation.Config = MyConfig.ToString();
annotation.DTS = DateTime.Now;
annotation.UserID = Volian.Base.Library.VlnSettings.UserID;
annotation.Save();
}
}
}
DialogResult = DialogResult.OK;
Close();
}
private void btnCancel_Click(object sender, EventArgs e)
{
DialogResult = DialogResult.Cancel;
Close();
}
//remove events so no memory loss
private void frmEPAnnotationDetails_FormClosing(object sender, FormClosingEventArgs e)
{
foreach (ListBoxMulti lb in _DicMultiRO.Values)
{
lb.Dispose();
}
Load -= Form1Load_setDefaults;
}
}
}

View File

@@ -0,0 +1,120 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>

View File

@@ -573,11 +573,6 @@ namespace Volian.Controls.Library
{
if (ProcedureCheckedOutTo != null) ProcedureCheckedOutTo(sender, args);
}
public event vlnTreeViewEvent ExportImportProcedureSets;
private void OnExportImportProcedureSets(object sender, vlnTreeEventArgs args)
{
@@ -871,6 +866,7 @@ namespace Volian.Controls.Library
MenuItem miqp = new MenuItem("Quick Print");
//MenuItem mips = new MenuItem("Print Section");
MenuItem mia = new MenuItem("Approve");
int k = 0;
foreach (string s in pri.MyDocVersion.UnitNames)
{