Compare commits

..

18 Commits

Author SHA1 Message Date
1c56aa2eb1 B2026-011 Improve the resolution of unit numbers in multi-unit background documents when printing.
Multi-Unit Background documents --- Found this while looking at background Documents for Vogtle 3/4 --- particularly AOP-101 -> Operator Actions -> Step 2: Note 2.

When there is a unit designator (like <U-NAME>-AOP-101. ) in the note's text, PROMS renders the text and pulls it over as text only to the background document.

This causes printing the background document to print as if both units instead of resolving if a specific unit is being printed.
2026-02-03 13:30:30 -05:00
f38aa4595f Merge pull request 'C2026-062 When Search clicked - Load the Incoming transitions for the Active Procedure' (#699) from C2026-062 into Development
good for testing
2026-02-02 15:54:50 -05:00
aa0b906a9f C2026-062 When Search clicked - Load the Incoming transitions for the Active Procedure 2026-02-02 15:27:23 -05:00
f43d1e5f47 Merge pull request 'B2026-009 For Vogtle Units 3&4, fixed bug where a double asterisk was place next to a continuous action RNO on the edit screen and printed with the CAS box shifted to the left.' (#697) from B2026-009_VogtleCAS into Development
Looks Good. Ready for QA!
2026-01-28 13:37:26 -05:00
63a74e1aef B2026-009 For Vogtle Units 3&4, fixed bug where a double asterisk was place next to a continuous action RNO on the edit screen and printed with the CAS box shifted to the left. 2026-01-28 12:08:19 -05:00
69e45e9ae8 Merge pull request 'F2026-003 Adjustments to the Vogtle Units 3&4 background step format that were needed for Jeff’s procedure importer tool' (#696) from F2026-003_VogtleBckGndChanges into Development
format only change.
2026-01-27 13:17:22 -05:00
53cf35014c F2026-003 Adjustments to the Vogtle Units 3&4 background step format that were needed for Jeff’s procedure importer tool 2026-01-27 13:17:42 -05:00
d6e4239573 Merge pull request 'C2026-006 Change Title bar on Add/Edit User' (#695) from C2026-006 into Development
good for testing phase
2026-01-27 08:15:11 -05:00
c76808e11e C2026-006 Change Title bar on Add/Edit User 2026-01-27 07:34:04 -05:00
b2428a4211 Merge pull request 'B2026-007 PROMS Security - don't error when add a user to a group but no group selected/C2026-004 – Add a messagebox when create group' (#694) from B2026-007_C2026-004 into Development
good for testing
2026-01-26 14:41:40 -05:00
aa0e919713 B2026-007 PROMS Security - don't error when add a user to a group but no group selected/C2026-004 – Add a messagebox when create group 2026-01-26 14:37:48 -05:00
7e2a41b6cb Merge pull request 'B2026-003 Imported memory handling in the FlexGrid (table) code for when we are replacing many RO values in table cells' (#693) from B2026-003_crash_fixing_ROs_in_table into Development
Looks Good. Ready for QA.
2026-01-23 16:07:16 -05:00
258b1d2d1f B2026-003 Imported memory handling in the FlexGrid (table) code for when we are replacing many RO values in table cells 2026-01-23 15:55:36 -05:00
a4ea200e38 Merge pull request 'B2026-006 Try to force designer update' (#692) from B2026-006 into Development
good for testing
2026-01-23 10:17:43 -05:00
43a27c16a6 B2026-006 Try to force designer update
It looks like when pulled into development -- changes to DisplayHistory.designer were not pulling down locally / compiling in when not on the computer they were originally made on. Made an update that hopefully should force this file to recompile.
2026-01-23 10:10:08 -05:00
3c693baab0 Merge pull request 'B2026-006 – Summary of Changes report generation enhancements' (#691) from B2026-006 into Development
good for testing
2026-01-23 08:30:48 -05:00
d186e2702c B2026-006 – Summary of Changes report generation enhancements 2026-01-23 06:20:49 -05:00
aee478114b Merge pull request 'C2026-003 For Vogtle Units 3&4, added format variable to allow a high level RNO step be “tagged” as a Continuous Action Step, when the parent AER step is not a continuous action step' (#689) from C2026-003_Vogtle_RNO_ContActionStep into Development
Looks Good. Ready for QA.
2026-01-21 14:37:19 -05:00
14 changed files with 469 additions and 64 deletions

View File

@@ -145,6 +145,9 @@ namespace VEPROMS
} }
LoadRefreshGroupUsers(); LoadRefreshGroupUsers();
// C2026-004 - messagebox when create group
MessageBox.Show($"{txt} group successfully created.", "Create group", MessageBoxButtons.OK, MessageBoxIcon.Information);
} }
private void tvFolders_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e) private void tvFolders_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e)
{ {
@@ -187,18 +190,22 @@ namespace VEPROMS
//Add a Member to a Group //Add a Member to a Group
private void addMember_Click(object sender, EventArgs e) private void addMember_Click(object sender, EventArgs e)
{ {
int groupIndex = cbGroupSelection.SelectedIndex; // B2026-007 PROMS Security - don't error when add a user to a group but no group selected
string selectedUserID = lstNonMembers.SelectedValue.ToString(); if (lstNonMembers.SelectedValue != null)
int selectedUID = UserInfo.GetByUserID(selectedUserID).UID; {
GroupInfo gi = myGroupInfoList[groupIndex]; int groupIndex = cbGroupSelection.SelectedIndex;
User selectedUser = User.Get(selectedUID); string selectedUserID = lstNonMembers.SelectedValue.ToString();
int selectedUID = UserInfo.GetByUserID(selectedUserID).UID;
GroupInfo gi = myGroupInfoList[groupIndex];
User selectedUser = User.Get(selectedUID);
Membership.MakeMembership(selectedUser, Group.Get(gi.GID), null, ""); Membership.MakeMembership(selectedUser, Group.Get(gi.GID), null, "");
updateMembershipLists(); updateMembershipLists();
lstNonMembers.SelectedIndex = -1; lstNonMembers.SelectedIndex = -1;
int index = lstMembers.FindString(selectedUserID); int index = lstMembers.FindString(selectedUserID);
lstMembers.SetSelected(index, true); lstMembers.SetSelected(index, true);
}
} }
//Remove a Member From a Group //Remove a Member From a Group
@@ -326,6 +333,7 @@ namespace VEPROMS
User u = User.MakeUser("[Enter New UserID]", "", "", "", "", "", "", "", "", "", "", DateTime.Now, ""); User u = User.MakeUser("[Enter New UserID]", "", "", "", "", "", "", "", "", "", "", DateTime.Now, "");
frmManageUser frm = new frmManageUser("add"); frmManageUser frm = new frmManageUser("add");
frm.MyUser = u; frm.MyUser = u;
frm.Text = "Enter New UserID"; //C2026-002 Change Title bar on Add/Edit User
if (frm.ShowDialog(this) == DialogResult.OK) if (frm.ShowDialog(this) == DialogResult.OK)
{ {
u = frm.MyUser; u = frm.MyUser;

View File

@@ -20,7 +20,27 @@ namespace VEPROMS
_MyUser = value; _MyUser = value;
SimpleUser su = new SimpleUser(_MyUser); SimpleUser su = new SimpleUser(_MyUser);
pgUser.SelectedObject = su; pgUser.SelectedObject = su;
this.Text = string.Format("{0} ({1} {2}) Information",su.UserID,su.FirstName,su.LastName);
//C2026-002 Change Title bar on Add/Edit User
string tmp;
if (!string.IsNullOrEmpty(su.FirstName) && !string.IsNullOrEmpty(su.LastName))
{
tmp = $"{su.UserID} ({su.FirstName} {su.LastName}) Information";
}
else if (!string.IsNullOrEmpty(su.LastName))
{
tmp = $"{su.UserID} ({su.LastName}) Information";
}
else if (!string.IsNullOrEmpty(su.FirstName))
{
tmp = $"{su.UserID} ({su.FirstName}) Information";
}
else
{
tmp = $"{su.UserID} Information";
}
this.Text = tmp;
} }
} }
private string _Mode; private string _Mode;

View File

@@ -3312,7 +3312,26 @@ namespace VEPROMS.CSLA.Library
return retval; return retval;
} }
} }
public string DisplayNumber
//B2026-011 Improve the resolution of unit numbers in multi-unit background documents when printing.
// for enhanced documents, when copying content, need to not resolve the
//unit designators until print time
public string DisplayTextKeepSpecialCharsKeepUnitSpecific
{
get
{
string str = MyContent.Text;
foreach (string key in SpecialCharacters.Keys)
str = str.Replace(key, SpecialCharacters[key]);
string retval = ConvertToDisplayText(str);
foreach (string key in SpecialCharacters.Keys)
retval = retval.Replace(SpecialCharacters[key], key);
return retval;
}
}
public string DisplayNumber
{ {
get get
{ {
@@ -4749,13 +4768,20 @@ namespace VEPROMS.CSLA.Library
if (ActiveFormat.MyStepSectionLayoutData.AddContActTagToHighLevelRNOWhenIncludedOnCAS && if (ActiveFormat.MyStepSectionLayoutData.AddContActTagToHighLevelRNOWhenIncludedOnCAS &&
IsInRNO && !MyParent.IsInRNO && FormatStepData.TabData.CASPrintMacro != null) IsInRNO && !MyParent.IsInRNO && FormatStepData.TabData.CASPrintMacro != null)
{ {
StepConfig sc = MyConfig as StepConfig; // B2026-009 needed to make sure parent wasn't a continuous action step type
if (sc != null && sc.Step_CAS == "True") // the ExcludeFromContActSum is set to False for continuous action
// step types and True for all others
StepConfig psc = MyParent.MyConfig as StepConfig;
if (MyParent.FormatStepData.ExcludeFromContActSum && psc != null && psc.Step_CAS != "True")
{ {
if (FormatStepData.TabData.CASPrintMacro != null) StepConfig sc = MyConfig as StepConfig;
_MyTab.Text = FormatStepData.TabData.CASPrintMacro + _MyTab.Text; if (sc != null && sc.Step_CAS == "True")
if (FormatStepData.TabData.CASEditTag != null) {
_MyTab.CleanText = FormatStepData.TabData.CASEditTag + _MyTab.CleanText; if (FormatStepData.TabData.CASPrintMacro != null)
_MyTab.Text = FormatStepData.TabData.CASPrintMacro + _MyTab.Text;
if (FormatStepData.TabData.CASEditTag != null)
_MyTab.CleanText = FormatStepData.TabData.CASEditTag + _MyTab.CleanText;
}
} }
} }
_MyTab.RNOTabWidthAdjust = ((ItemInfo)ActiveParent).FormatStepData.TabData.RNOAdjustTabSize ?? 0; _MyTab.RNOTabWidthAdjust = ((ItemInfo)ActiveParent).FormatStepData.TabData.RNOAdjustTabSize ?? 0;
@@ -8350,8 +8376,11 @@ namespace VEPROMS.CSLA.Library
if (seds != null && seds.Count != 0) if (seds != null && seds.Count != 0)
{ {
ItemInfo srcItem = ItemInfo.Get(seds[0].ItemID); ItemInfo srcItem = ItemInfo.Get(seds[0].ItemID);
// B2022-049: Copy/paste of enhanced procedure and bad links between source and enhanced. Null reference check // B2022-049: Copy/paste of enhanced procedure and bad links between source and enhanced. Null reference check
if (srcItem != null && srcItem.DisplayTextKeepSpecialChars != ii.DisplayTextKeepSpecialChars) //B2026-011 Improve the resolution of unit numbers in multi-unit background documents when printing.
// for enhanced documents, when copying content, need to not resolve the
//unit designators until print time
if (srcItem != null && srcItem.DisplayTextKeepSpecialCharsKeepUnitSpecific != ii.DisplayTextKeepSpecialCharsKeepUnitSpecific)
{ {
if (retiil == null) retiil = new ItemInfoList(ii); if (retiil == null) retiil = new ItemInfoList(ii);
else retiil.AddItem(ii); else retiil.AddItem(ii);
@@ -8377,7 +8406,10 @@ namespace VEPROMS.CSLA.Library
ItemInfo srcItem = ItemInfo.Get(seds[0].ItemID); ItemInfo srcItem = ItemInfo.Get(seds[0].ItemID);
using (Item enhItem = Item.Get(ii.ItemID)) using (Item enhItem = Item.Get(ii.ItemID))
{ {
enhItem.MyContent.Text = srcItem.DisplayTextKeepSpecialChars; //B2026-011 Improve the resolution of unit numbers in multi-unit background documents when printing.
// for enhanced documents, when copying content, need to not resolve the
//unit designators until print time
enhItem.MyContent.Text = srcItem.DisplayTextKeepSpecialCharsKeepUnitSpecific;
enhItem.Save(); enhItem.Save();
} }
} }

View File

@@ -0,0 +1,89 @@
namespace Volian.Controls.Library
{
partial class CustomMessageBox
{
/// <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.btn1 = new System.Windows.Forms.Button();
this.btn2 = new System.Windows.Forms.Button();
this.lblMessage = new System.Windows.Forms.Label();
this.SuspendLayout();
//
// btn1
//
this.btn1.AutoSize = true;
this.btn1.Location = new System.Drawing.Point(12, 99);
this.btn1.Name = "btn1";
this.btn1.Size = new System.Drawing.Size(75, 23);
this.btn1.TabIndex = 0;
this.btn1.UseVisualStyleBackColor = true;
this.btn1.Click += new System.EventHandler(this.Btn1_Click);
//
// btn2
//
this.btn2.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
this.btn2.AutoSize = true;
this.btn2.Location = new System.Drawing.Point(322, 99);
this.btn2.Name = "btn2";
this.btn2.Size = new System.Drawing.Size(75, 23);
this.btn2.TabIndex = 1;
this.btn2.UseVisualStyleBackColor = true;
this.btn2.Click += new System.EventHandler(this.Btn2_Click);
//
// lblMessage
//
this.lblMessage.AutoSize = true;
this.lblMessage.Location = new System.Drawing.Point(33, 41);
this.lblMessage.Name = "lblMessage";
this.lblMessage.Size = new System.Drawing.Size(0, 13);
this.lblMessage.TabIndex = 2;
this.lblMessage.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
//
// CustomMessageBox
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.AutoSize = true;
this.ClientSize = new System.Drawing.Size(419, 130);
this.Controls.Add(this.lblMessage);
this.Controls.Add(this.btn2);
this.Controls.Add(this.btn1);
this.Name = "CustomMessageBox";
this.ShowIcon = false;
this.Text = "CustomMessageBox";
this.ResumeLayout(false);
this.PerformLayout();
}
#endregion
private System.Windows.Forms.Button btn1;
private System.Windows.Forms.Button btn2;
private System.Windows.Forms.Label lblMessage;
}
}

View File

@@ -0,0 +1,58 @@
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;
namespace Volian.Controls.Library
{
public partial class CustomMessageBox : Form
{
//Custome Message Box Class to allow renaming of buttons
// originally devleoped for use with
// C2025-062 When Search clicked - Load the Incoming transitions for the Active Procedure
// in order to allow the user to decide if they wanted to search on the selected step or the selected procedure
public CustomMessageBox(string message, string title, string button1Text = "OK", string button2Text = "")
{
InitializeComponent();
this.Text = title;
lblMessage.Text = message;
btn1.Text = button1Text;
if (!string.IsNullOrEmpty(button2Text))
{
btn2.Text = button2Text;
btn2.Visible = true;
}
else
{
btn2.Visible = false;
}
}
private void Btn1_Click(object sender, EventArgs e)
{
DialogResult = DialogResult.Yes;
Close();
}
private void Btn2_Click(object sender, EventArgs e)
{
DialogResult = DialogResult.No;
Close();
}
//static method for calling custommessagebox directly
public static DialogResult Show(string message, string title, string button1Text = "OK", string button2Text = "")
{
using (var messageBox = new CustomMessageBox(message, title, button1Text, button2Text))
{
return messageBox.ShowDialog();
}
}
}
}

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

@@ -11,7 +11,7 @@ using System.Text.RegularExpressions;
using JR.Utils.GUI.Forms; using JR.Utils.GUI.Forms;
using Volian.Base.Library; using Volian.Base.Library;
using System.Linq; using System.Linq;
namespace Volian.Controls.Library namespace Volian.Controls.Library
{ {
public partial class DisplayHistory : UserControl public partial class DisplayHistory : UserControl

View File

@@ -112,13 +112,13 @@
<value>2.0</value> <value>2.0</value>
</resheader> </resheader>
<resheader name="reader"> <resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader> </resheader>
<resheader name="writer"> <resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader> </resheader>
<data name="myVFG.MyBorderDetailString" xml:space="preserve"> <data name="myVFG.MyBorderDetailString" xml:space="preserve">
<value>&lt;?xml version="1.0" encoding="utf-8"?&gt; <value>&lt;?xml version="1.0" encoding="utf-16"?&gt;
&lt;VlnBorders Rows="4" Columns="3"&gt; &lt;VlnBorders Rows="4" Columns="3"&gt;
&lt;VerticalLines Rows="4" Columns="4"&gt; &lt;VerticalLines Rows="4" Columns="4"&gt;
&lt;Lines&gt; &lt;Lines&gt;
@@ -161,7 +161,31 @@
&lt;/HorizontalLines&gt; &lt;/HorizontalLines&gt;
&lt;/VlnBorders&gt;</value> &lt;/VlnBorders&gt;</value>
</data> </data>
<data name="myVFG.StyleInfo" xml:space="preserve"> <data name="myVFG.MyShadingDetailString" xml:space="preserve">
<value>Normal{Font:Microsoft Sans Serif, 8.25pt;BackColor:White;TextAlign:LeftTop;Border:Flat,1,Black,Both;} Alternate{BackColor:White;} Fixed{BackColor:Control;ForeColor:ControlText;Border:Flat,1,ControlDark,Both;BackgroundImageLayout:Hide;} Highlight{BackColor:LightCyan;ForeColor:Black;} Focus{BackColor:LightCyan;} Editor{} Search{BackColor:Highlight;ForeColor:HighlightText;} Frozen{BackColor:Beige;} NewRow{ForeColor:GrayText;} EmptyArea{BackColor:Transparent;Border:None,1,Black,Both;} SelectedColumnHeader{} SelectedRowHeader{} GrandTotal{BackColor:Black;ForeColor:White;} Subtotal0{BackColor:ControlDarkDark;ForeColor:White;} Subtotal1{BackColor:ControlDarkDark;ForeColor:White;} Subtotal2{BackColor:ControlDarkDark;ForeColor:White;} Subtotal3{BackColor:ControlDarkDark;ForeColor:White;} Subtotal4{BackColor:ControlDarkDark;ForeColor:White;} Subtotal5{BackColor:ControlDarkDark;ForeColor:White;} FilterEditor{} FirstCustomStyle{} </value> <value>&lt;?xml version="1.0" encoding="utf-16"?&gt;
&lt;VlnGridCellShading Rows="4" Columns="3"&gt;
&lt;TableShadingInfo Rows="4" Columns="3"&gt;
&lt;CellShadingColor&gt;
&lt;string&gt;[A=255, R=255, G=255, B=255]&lt;/string&gt;
&lt;string&gt;[A=255, R=255, G=255, B=255]&lt;/string&gt;
&lt;string&gt;[A=255, R=255, G=255, B=255]&lt;/string&gt;
&lt;string&gt;[A=255, R=255, G=255, B=255]&lt;/string&gt;
&lt;string&gt;[A=255, R=255, G=255, B=255]&lt;/string&gt;
&lt;string&gt;[A=255, R=255, G=255, B=255]&lt;/string&gt;
&lt;string&gt;[A=255, R=255, G=255, B=255]&lt;/string&gt;
&lt;string&gt;[A=255, R=255, G=255, B=255]&lt;/string&gt;
&lt;string&gt;[A=255, R=255, G=255, B=255]&lt;/string&gt;
&lt;string&gt;[A=255, R=255, G=255, B=255]&lt;/string&gt;
&lt;string&gt;[A=255, R=255, G=255, B=255]&lt;/string&gt;
&lt;string&gt;[A=255, R=255, G=255, B=255]&lt;/string&gt;
&lt;/CellShadingColor&gt;
&lt;/TableShadingInfo&gt;
&lt;/VlnGridCellShading&gt;</value>
</data> </data>
<data name="myVFG.StyleInfo" xml:space="preserve">
<value>Normal{Font:Microsoft Sans Serif, 8.25pt;BackColor:White;TextAlign:LeftTop;Border:Flat,1,Black,Both;} Alternate{BackColor:White;} Fixed{BackColor:Control;ForeColor:ControlText;Border:Flat,1,ControlDark,Both;BackgroundImageLayout:Hide;} Highlight{BackColor:LightCyan;ForeColor:Black;} Focus{BackColor:LightCyan;} Editor{} Search{BackColor:Highlight;ForeColor:HighlightText;} Frozen{BackColor:Beige;} FrozenAlternate{} NewRow{ForeColor:GrayText;} EmptyArea{BackColor:Transparent;Border:None,1,Black,Both;} SelectedColumnHeader{} SelectedRowHeader{} GrandTotal{BackColor:Black;ForeColor:White;} Subtotal0{BackColor:ControlDarkDark;ForeColor:White;} Subtotal1{BackColor:ControlDarkDark;ForeColor:White;} Subtotal2{BackColor:ControlDarkDark;ForeColor:White;} Subtotal3{BackColor:ControlDarkDark;ForeColor:White;} Subtotal4{BackColor:ControlDarkDark;ForeColor:White;} Subtotal5{BackColor:ControlDarkDark;ForeColor:White;} FilterEditor{} FirstCustomStyle{} </value>
</data>
<metadata name="myTimer.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>17, 17</value>
</metadata>
</root> </root>

View File

@@ -414,6 +414,15 @@ namespace Volian.Controls.Library
lbSrchResults.Visible = true; lbSrchResults.Visible = true;
lbSrchResultsIncTrans.Visible = false; lbSrchResultsIncTrans.Visible = false;
cbxRnoOnly.Visible = true; cbxRnoOnly.Visible = true;
// C2025-062 When Search clicked - Load the Incoming transitions for the Active Procedure
//don't allow changing the Style for Incoming Transitions
//but allow them to change it if there are search results and it is another tab
if (_SearchResults != null && _SearchResults.Count > 0)
{
cmbResultsStyle.Enabled = true;
}
if (e.NewTab == tabIncTrans) // C2020-033: Incoming transitions if (e.NewTab == tabIncTrans) // C2020-033: Incoming transitions
{ {
xpSetToSearch.Enabled = false; xpSetToSearch.Enabled = false;
@@ -422,7 +431,7 @@ namespace Volian.Controls.Library
lbSrchResultsIncTrans.Visible = true; lbSrchResultsIncTrans.Visible = true;
lbSrchResultsIncTrans.CheckBoxesVisible = true; lbSrchResultsIncTrans.CheckBoxesVisible = true;
lbSrchResultsIncTrans.AutoScroll = true; lbSrchResultsIncTrans.AutoScroll = true;
btnSearch.Enabled = false; // C2021 - 002: disable search button - no functionality for Incoming Transitions cmbResultsStyle.Enabled = false;
cbxRnoOnly.Visible = false; cbxRnoOnly.Visible = false;
} }
else if (e.NewTab == tabROSearch) else if (e.NewTab == tabROSearch)
@@ -648,7 +657,6 @@ namespace Volian.Controls.Library
} }
btnTranCvtAllToTxt.Enabled = IncTransCvtAllToTextPerm(); btnTranCvtAllToTxt.Enabled = IncTransCvtAllToTextPerm();
btnTranCvtSelToTxt.Enabled = false; btnTranCvtSelToTxt.Enabled = false;
btnSearch.Enabled = false; // C2021 - 002: disable search button - no functionality for Incoming Transitions
} }
public bool IncTranCvtPerm() public bool IncTranCvtPerm()
@@ -1765,7 +1773,8 @@ namespace Volian.Controls.Library
btnClearSearchResults.Enabled = true; btnClearSearchResults.Enabled = true;
btnCopySearchResults.Enabled = true; btnCopySearchResults.Enabled = true;
btnSaveSearchResults.Enabled = true; btnSaveSearchResults.Enabled = true;
cmbResultsStyle.Enabled = true; if (tabSearchTypes.SelectedTab != tabIncTrans)
cmbResultsStyle.Enabled = true;
} }
else else
{ {
@@ -2188,21 +2197,39 @@ namespace Volian.Controls.Library
// C2019-001: Search in RNO steps only // C2019-001: Search in RNO steps only
if (cbxRnoOnlyTrans.Checked) GetInRNOResults(); if (cbxRnoOnlyTrans.Checked) GetInRNOResults();
} }
else if (tabSearchTypes.SelectedTab == tabSearchTypes.Tabs[4]) else if (tabSearchTypes.SelectedTab == tabIncTrans)
{ {
// C2020-033: Incoming Transitions: Make an iteminfolist from the list returned from // C2025-062 When Search clicked - Load the Incoming transitions for the Active Procedure
// GetExternalTransitionsToChildren (also gets transitions to the item itself)
// B2021-010: Use IncomingTranGetMergedTranList to get a complete list of incoming transitions (transitions to procedure if (_TabControl?.MyEditItem?.MyItemInfo?.MyProcedure != null)
// were only included if there were NO transitions to items within procedure)
ReportTitle = string.Format("Search For Incoming Transitions to {0}: ", SearchIncTransII.Path);
SearchResults = IncomingTranGetMergedTranList();
cmbResultsStyleIndex = 1; //display step locations in results
if (SearchResults == null || SearchResults.Count == 0)
{ {
FlexibleMessageBox.Show("No Matches Found.", "Search");
if (_TabControl?.MyEditItem?.MyItemInfo?.MyProcedure.ItemID == _TabControl?.MyEditItem?.MyItemInfo?.ItemID)
{
_ = _TabControl.OnSearchIncTrans(this, new vlnTreeItemInfoEventArgs(_TabControl?.MyEditItem?.MyItemInfo?.MyProcedure));
}
else
{
//if on a step, check if the user wants to load incoming transitions for that step or the entire procedure
switch (CustomMessageBox.Show("Would you like to load incoming transitions for this procedure or this step?", "Load Incoming Transitions", "This Procedure", "This Step"))
{
case DialogResult.Yes:
_ = _TabControl.OnSearchIncTrans(this, new vlnTreeItemInfoEventArgs(_TabControl?.MyEditItem?.MyItemInfo?.MyProcedure));
break;
case DialogResult.No:
_ = _TabControl.OnSearchIncTrans(this, new vlnTreeItemInfoEventArgs(_TabControl?.MyEditItem?.MyItemInfo));
break;
default: //Cancel was pressed
break;
}
}
}
else
{
FlexibleMessageBox.Show("Please open a procedure before selecting this option to load incoming transitions for that procedure.", "Search");
} }
} }
if (SearchResults != null) if (SearchResults != null && tabSearchTypes.SelectedTab != tabIncTrans)
{ {
AddMessageForEmptyAnnotations(); AddMessageForEmptyAnnotations();
if (cmbResultsStyleIndex == 3 && cmbResultsStyle.Items.Count == 3) cmbResultsStyleIndex--; if (cmbResultsStyleIndex == 3 && cmbResultsStyle.Items.Count == 3) cmbResultsStyleIndex--;
@@ -2303,7 +2330,18 @@ namespace Volian.Controls.Library
cmbResultsStyle.Items.Add(comboItem2); cmbResultsStyle.Items.Add(comboItem2);
if (hasAnnot) cmbResultsStyle.Items.Add(comboItem3); if (hasAnnot) cmbResultsStyle.Items.Add(comboItem3);
cmbResultsStyle.Items.Add(comboItem4); cmbResultsStyle.Items.Add(comboItem4);
}
// C2025-062 When Search clicked - Load the Incoming transitions for the Active Procedure
if (tabSearchTypes.SelectedTab == tabIncTrans)
{
cmbResultsStyle.SelectedIndex = -1;
cmbResultsStyle.Enabled = false;
}
else
{
cmbResultsStyle.Enabled = true;
}
}
private void cbxTextSearchText_Leave(object sender, EventArgs e) private void cbxTextSearchText_Leave(object sender, EventArgs e)
{ {

View File

@@ -537,6 +537,10 @@ namespace Volian.Controls.Library
// if it is a modify and there will be no usages if it is new (the usage gets created on the save) // if it is a modify and there will be no usages if it is new (the usage gets created on the save)
if (!MyFlexGrid.IsRoTable) if (!MyFlexGrid.IsRoTable)
{ {
// B2026-003 we where using a string.format on this inside the while loop - allocating memory each time
// so I move it outside the while loop and did a simple assigment of text
string lookForLinks = @"<START\](\\[^v \\]+)*\\v0(\\[^v '?{{}}~\\]+)*( |\\u[0-9]{{1,4}}?|\\'[0-9a-fA-F]{{2}}|\\[{{}}~])(.*?)(\\[^v '?{{}}~\\]+)*\\v(\\[^v \\]+)* #Link:(ReferencedObject|Transition[^:]*?):.*?\[END>";
while (r < h) while (r < h)
{ {
CellRange cr = MyFlexGrid.GetMergedRange(r, c); CellRange cr = MyFlexGrid.GetMergedRange(r, c);
@@ -546,8 +550,7 @@ namespace Volian.Controls.Library
{ {
// see if there are any links and save these so that any deleted ROs or transitions in the // see if there are any links and save these so that any deleted ROs or transitions in the
// steprtb can have associated usages/transitions records removed from the database. // steprtb can have associated usages/transitions records removed from the database.
string lookFor = string.Format(@"<START\](\\[^v \\]+)*\\v0(\\[^v '?{{}}~\\]+)*( |\\u[0-9]{{1,4}}?|\\'[0-9a-fA-F]{{2}}|\\[{{}}~])(.*?)(\\[^v '?{{}}~\\]+)*\\v(\\[^v \\]+)* #Link:(ReferencedObject|Transition[^:]*?):.*?\[END>"); MatchCollection matches = Regex.Matches((string)MyFlexGrid[r, c], lookForLinks);
MatchCollection matches = Regex.Matches((string)MyFlexGrid[r, c], lookFor);
for (int i = matches.Count - 1; i >= 0; i--) for (int i = matches.Count - 1; i >= 0; i--)
{ {
Match m = matches[i]; Match m = matches[i];
@@ -569,15 +572,15 @@ namespace Volian.Controls.Library
{ {
int tid = int.Parse(myMatch.Groups[2].Value); int tid = int.Parse(myMatch.Groups[2].Value);
RtfTransList.Add(tid); RtfTransList.Add(tid);
int myIndex = m.Groups[4].Index; int myIndex = m.Groups[4].Index;
int myLength = m.Groups[4].Length; int myLength = m.Groups[4].Length;
if (m.Groups[3].Value != " ") if (m.Groups[3].Value != " ")
{ {
myIndex = m.Groups[3].Index; myIndex = m.Groups[3].Index;
myLength += m.Groups[3].Length; myLength += m.Groups[3].Length;
} }
string gg = ((string)MyFlexGrid[r, c]).Substring(myIndex, myLength); string gg = ((string)MyFlexGrid[r, c]).Substring(myIndex, myLength);
if (gg.ToUpper().Contains("(PAGE ~)")) RtfTransPageNumList.Add(tid); // B2020-089, check for upper case Page ~ in case step was upper cased if (gg.ToUpper().Contains("(PAGE ~)")) RtfTransPageNumList.Add(tid); // B2020-089, check for upper case Page ~ in case step was upper cased
} }
} }
} }

View File

@@ -272,21 +272,24 @@ namespace Volian.Controls.Library
for (int i = 0; i < rows * cols; i++) for (int i = 0; i < rows * cols; i++)
datum.Add("|"); datum.Add("|");
XmlNodeList nl = xd.SelectNodes("C1FlexGrid/Cells/Cell/Data"); XmlNodeList nl = xd.SelectNodes("C1FlexGrid/Cells/Cell/Data");
string data = string.Empty; // B2026-003 use StringBuilder a "using" statement around the RichTextBox for better mememory management
StringBuilder data = new StringBuilder();
foreach (XmlNode xn in nl) foreach (XmlNode xn in nl)
{ {
RichTextBox rtb = new RichTextBox(); using (RichTextBox rtb = new RichTextBox())
rtb.Rtf = xn.InnerText; {
XmlAttribute xa = xn.ParentNode.Attributes.GetNamedItem("index") as XmlAttribute; rtb.Rtf = xn.InnerText;
string[] rc = xa.InnerText.Split(','); XmlAttribute xa = xn.ParentNode.Attributes.GetNamedItem("index") as XmlAttribute;
int r = int.Parse(rc[0]); string[] rc = xa.InnerText.Split(',');
int c = int.Parse(rc[1]); int r = int.Parse(rc[0]);
int index = r * cols + c; int c = int.Parse(rc[1]);
datum[index] = "|" + (rtb.Text == "" ? "" : rtb.Text); int index = r * cols + c;
datum[index] = "|" + (rtb.Text == "" ? "" : rtb.Text);
}
} }
foreach (string s in datum) foreach (string s in datum)
data += s; data.Append(s);
return data; return data.ToString();
} }
private string GetCellFormatString(XmlDocument xd) private string GetCellFormatString(XmlDocument xd)
{ {

View File

@@ -154,6 +154,12 @@
<Compile Include="ConvertTable.cs"> <Compile Include="ConvertTable.cs">
<SubType>Form</SubType> <SubType>Form</SubType>
</Compile> </Compile>
<Compile Include="CustomMessageBox.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="CustomMessageBox.Designer.cs">
<DependentUpon>CustomMessageBox.cs</DependentUpon>
</Compile>
<Compile Include="DisplayApplicability.cs"> <Compile Include="DisplayApplicability.cs">
<SubType>UserControl</SubType> <SubType>UserControl</SubType>
</Compile> </Compile>
@@ -454,12 +460,16 @@
<DependentUpon>AnnotationSearch.cs</DependentUpon> <DependentUpon>AnnotationSearch.cs</DependentUpon>
<SubType>Designer</SubType> <SubType>Designer</SubType>
</EmbeddedResource> </EmbeddedResource>
<EmbeddedResource Include="CustomMessageBox.resx">
<DependentUpon>CustomMessageBox.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="DisplayBookMarks.resx"> <EmbeddedResource Include="DisplayBookMarks.resx">
<DependentUpon>DisplayBookMarks.cs</DependentUpon> <DependentUpon>DisplayBookMarks.cs</DependentUpon>
<SubType>Designer</SubType> <SubType>Designer</SubType>
</EmbeddedResource> </EmbeddedResource>
<EmbeddedResource Include="DisplayHistory.resx"> <EmbeddedResource Include="DisplayHistory.resx">
<DependentUpon>DisplayHistory.cs</DependentUpon> <DependentUpon>DisplayHistory.cs</DependentUpon>
<SubType>Designer</SubType>
</EmbeddedResource> </EmbeddedResource>
<EmbeddedResource Include="DisplayLibDocs.resx"> <EmbeddedResource Include="DisplayLibDocs.resx">
<DependentUpon>DisplayLibDocs.cs</DependentUpon> <DependentUpon>DisplayLibDocs.cs</DependentUpon>