Compare commits

...

14 Commits

Author SHA1 Message Date
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
2e68218cfe B2025-034-Add-error-message-documents 2025-06-10 16:34:22 -04:00
80f3568dbd Merge pull request 'F2025-015 Shearon Harris add sub-steps in Notes and Cautions and to add an Open Bullet sub-step type in both the EOP and AOP formats.' (#566) from F2025-015_SharonHarris into Development
Reviewed-on: #566
2025-06-03 11:43:26 -04:00
5fd0ff9e71 F2025-015 Shearon Harris add sub-steps in Notes and Cautions and to add an Open Bullet sub-step type in both the EOP and AOP formats. 2025-06-03 10:46:41 -04:00
4dcfa05157 Merge pull request 'B2025-024-Document-Unit-Print' (#564) from B2025-024-Document-Unit-Print into Development
good for testing phase
2025-05-29 10:14:00 -04:00
42648f31a5 Merge pull request 'C2025-021 Add logic to PROMS to support a special High Level Step type that is not printed.' (#563) from C2025-021 into Development
Good for testing phase
2025-05-29 10:06:34 -04:00
e0b628dce9 B2025-024-Document-Unit-Print 2025-05-28 18:19:24 -04:00
6e9c7e28e6 C2025-021 Add logic to PROMS to support a special High Level Step type that is not printed.
Make Inactive by Default
2025-05-28 14:37:14 -04:00
ac091a7d26 C2025-021 Add logic to PROMS to support a special High Level Step type that is not printed. 2025-05-28 14:15:21 -04:00
612e7955cf Merge pull request 'F2024-089 - Barakah requested a newly formatted Cover page section style to make room for new Corporate Logo.' (#561) from F2024-089_BNPP_LOGO into Development
Looks good.
Ready for QA.
2025-05-23 09:08:51 -04:00
ce92031ff7 F2024-089 - Barakah requested a newly formatted Cover page section style to make room for new Corporate Logo. 2025-05-22 15:05:27 -04:00
22 changed files with 400 additions and 319 deletions

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

@ -449,10 +449,9 @@ namespace VEPROMS.CSLA.Library
{ {
StringBuilder sret = new StringBuilder(); StringBuilder sret = new StringBuilder();
ItemInfo pitem = this; ItemInfo pitem = this;
while (!pitem.IsSection && !pitem.IsHigh) while (!pitem.IsSection && !pitem.IsHigh)
{ {
using (StepInfo stpinfo = StepInfo.Get(pitem.ItemID)) using (StepInfo stpinfo = StepInfo.Get(pitem.ItemID))
{ {
string thisTab = stpinfo.MyTab.CleanText; string thisTab = stpinfo.MyTab.CleanText;
@ -4655,43 +4654,50 @@ namespace VEPROMS.CSLA.Library
int localPrintLevel = PrintLevel; int localPrintLevel = PrintLevel;
StepSectionData sd = ActiveFormat.PlantFormat.FormatData.SectData.StepSectionData; StepSectionData sd = ActiveFormat.PlantFormat.FormatData.SectData.StepSectionData;
bool doMeta = false; 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 if (ActiveFormat.PlantFormat.FormatData.SectData.UseMetaSections)
&& !MyDocStyle.CancelSectTitle {
&& !(MyDocStyle.SpecialStepsFoldout && MyDocStyle.UseColSByLevel)) if (sd.StepSectionLayoutData.ShowSectionTitles
localPrintLevel = PrintLevel + (((ActiveFormat.PlantFormat.FormatData.Express && IsSequential)) ? 0 : CurrentSectionLevel()); && !MyDocStyle.CancelSectTitle
if (!ActiveFormat.PlantFormat.FormatData.Express) doMeta = true; && !(MyDocStyle.SpecialStepsFoldout && MyDocStyle.UseColSByLevel))
} localPrintLevel = PrintLevel + (((ActiveFormat.PlantFormat.FormatData.Express && IsSequential)) ? 0 : CurrentSectionLevel());
if (sd.StepSectionLayoutData.TieTabToLevel && ActiveFormat.PlantFormat.FormatData.SectData.CountSubSectionsForLevel) if (!ActiveFormat.PlantFormat.FormatData.Express) doMeta = true;
if (SectionLevel() > 1) }
if (ActiveFormat.PlantFormat.FormatData.SectData.CountSubSectionsForLevel && (SectionLevel() > 1))
localPrintLevel += 1; localPrintLevel += 1;
}
SeqTabFmtList seqtabs = ActiveFormat.PlantFormat.FormatData.SectData.StepSectionData.SeqTabFmtList; SeqTabFmtList seqtabs = ActiveFormat.PlantFormat.FormatData.SectData.StepSectionData.SeqTabFmtList;
// Start with basic cases of alpha/numeric/seq: // Start with basic cases of alpha/numeric/seq:
// If we have metasections AND... // If we have metasections AND...
// If the seqtabs for this given level does not get a section number, use the seqtab rather than // If the seqtabs for this given level does not get a section number, use the seqtab rather than
// the ident of the step: // the ident of the step:
bool useSubStepTabs = false; bool useSubStepTabs = false;
if (doMeta && IsHigh if (doMeta) // C2025-036 reduce un-needed processing
&& !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 immediate parent is note, caution or equip, use numeric, otherwise use alpha. if (IsHigh
localPrintLevel = 0; && !seqtabs[(localPrintLevel < 0 ? 0 : localPrintLevel) % seqtabs.MaxIndex].TabToken.Contains("{numericWpar}")
int lv = 0; && tbformat.Contains("{")) useSubStepTabs = true;
ItemInfo ii = MyParent;
while (!ii.IsCaution && !ii.IsNote && !ii.IsEquipmentList) // 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++; // if immediate parent is note, caution or equip, use numeric, otherwise use alpha.
ii = ii.MyParent; 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 trimTabStart = false;
bool dontTrimParentTabBeforeAppending = false; // B2019-011 for Barakah Alarm format bool dontTrimParentTabBeforeAppending = false; // B2019-011 for Barakah Alarm format
@ -4757,7 +4763,7 @@ namespace VEPROMS.CSLA.Library
PrintLevel = 0; PrintLevel = 0;
// If token includes 'Wpar', the parent tab prefix's the tab. // 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; string parentTab = null;
ItemInfo myparent = ActiveParent as ItemInfo; ItemInfo myparent = ActiveParent as ItemInfo;
@ -4872,18 +4878,21 @@ namespace VEPROMS.CSLA.Library
} }
string alpha = useLinked?LinkedTab.Trim():AlphabeticalNumbering(ordinal); string alpha = useLinked?LinkedTab.Trim():AlphabeticalNumbering(ordinal);
if (trimSeqValue) alpha = alpha.Trim(); // F2024-043 trim white around SEQ tab value (for sub-steps) 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 (tbformat.ToUpper().Contains("{ALPHA")) // C2025-036 reduce un-needed processing
if (_ActiveFormat.Name =="BGESAM1" &&MyParent != null && MyParent.IsHigh && MyParent.IsStep && MyParent.FormatStepData.TabData.IdentEdit.Contains("ROMAN")) {
tbformat = tbformat.Replace("{alpha}", alpha); // B2017-211 Roman High Level steps should be followed by Uppercase alpha substeps - This is being limited to Calvert SAMG Format
else if (_ActiveFormat.Name == "BGESAM1" && MyParent != null && MyParent.IsHigh && MyParent.IsStep && MyParent.FormatStepData.TabData.IdentEdit.Contains("ROMAN"))
tbformat = tbformat.Replace("{alpha}", alpha.ToLower()); tbformat = tbformat.Replace("{alpha}", alpha);
tbformat = tbformat.Replace("{alphaWpar}", alpha.ToLower()); else
if (ActiveFormat.PlantFormat.FormatData.PrintData.SpecialCaseCalvert && tbformat.Contains("{ALPHA}") && alpha.Length > 1) tbformat = tbformat.Replace("{alpha}", alpha.ToLower());
tbformat = tbformat.Replace("{ALPHA}. ", alpha + "."); // if double chars, remove one of the space for BGE tbformat = tbformat.Replace("{alphaWpar}", alpha.ToLower());
else if (ActiveFormat.PlantFormat.FormatData.PrintData.SpecialCaseCalvert && tbformat.Contains("{ALPHA}") && alpha.Length > 1)
tbformat = tbformat.Replace("{ALPHA}", alpha); 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")) if (tbformat.ToUpper().Contains("ROMAN"))
{ {
string roman = RomanNumbering(ordinal); string roman = RomanNumbering(ordinal);
@ -4891,15 +4900,18 @@ namespace VEPROMS.CSLA.Library
tbformat = tbformat.Replace("{ROMAN}", roman); tbformat = tbformat.Replace("{ROMAN}", roman);
tbformat = tbformat.Substring(0, tbformat.Length - ((roman.Length - 1) > 0 ? (roman.Length - 1) : 0)); 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"); if (((MyDocStyle.StructureStyle.Style & E_DocStructStyle.DSS_AddDotZeroStdHLS) == E_DocStructStyle.DSS_AddDotZeroStdHLS) && MyContent.Type == 20002)
tbformat = tbformat.Substring(0, tbformat.Length - 2); {
} tbformat = tbformat.Replace("{numeric}", ordinal.ToString().PadLeft(2) + ".0");
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) tbformat = tbformat.Substring(0, tbformat.Length - 2);
{ }
string numtxt = ordinal.ToString().PadLeft(2) + ".0"; 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)
tbformat = tbformat.Replace("{numeric}.", numtxt).Replace("{numeric}", numtxt); {
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, // if this is a wolf creek background, if the tbformat ends with a '.' don't add a space,
// otherwise add a space. // otherwise add a space.
@ -6097,9 +6109,10 @@ namespace VEPROMS.CSLA.Library
} }
private bool IsLowestLevelStep private bool IsLowestLevelStep
{ {
//F2025-015 added check for IsInCautionOrNote for sub-step inside Notes and Cautions
get get
{ {
return (!(IsCaution || IsNote || IsTable || IsFigure || Steps != null || MyParent.IsCaution || MyParent.IsNote)); return (!(IsCaution || IsNote || IsInCautionOrNote || IsTable || IsFigure || Steps != null || MyParent.IsCaution || MyParent.IsNote));
} }
} }
private bool RNOsHighHasCheckOff() private bool RNOsHighHasCheckOff()

View File

@ -10,6 +10,7 @@ using Volian.Controls.Library;
using DevComponents.DotNetBar; using DevComponents.DotNetBar;
using JR.Utils.GUI.Forms; using JR.Utils.GUI.Forms;
using Volian.Base.Library; using Volian.Base.Library;
using Microsoft.Win32;
namespace Volian.Controls.Library namespace Volian.Controls.Library
{ {
@ -658,11 +659,35 @@ namespace Volian.Controls.Library
} }
else // Otherwise open it in the Word editor else // Otherwise open it in the Word editor
{ {
Document.ConvertWordSectionToDOCX(myItemInfo); // B2023-093 Convert a Word section to the DOCX Word format if needed before opening it for edit // B2025-034 Check to make sure that EDWord is installed in PROMS. If not return NULL.
return OpenDSOTabPage(myItemInfo); object EDOfficeViewerX = GetValue<object>(@"HKEY_CLASSES_ROOT\EDOfficeViewerX.Connect\CLSID\", @"", null);
}
}
object EDWordCtrl = GetValue<object>(@"HKEY_CLASSES_ROOT\EDWORD.EDWordCtrl.1\CLSID\", @"", null);
if (EDOfficeViewerX == null || EDWordCtrl == null)
{
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;
}
else
{
Document.ConvertWordSectionToDOCX(myItemInfo); // B2023-093 Convert a Word section to the DOCX Word format if needed before opening it for edit
return OpenDSOTabPage(myItemInfo);
}
}
}
public T GetValue<T>(string registryKeyPath, string value, T defaultValue = default(T))
{
T retVal = default(T);
retVal = (T)Registry.GetValue(registryKeyPath, value, defaultValue);
return retVal;
}
public bool PasteRTBItem(ItemInfo myItemInfo, int copyStartID, ItemInfo.EAddpingPart pasteType, int type) public bool PasteRTBItem(ItemInfo myItemInfo, int copyStartID, ItemInfo.EAddpingPart pasteType, int type)
{ {
CleanUpClosedItems(); CleanUpClosedItems();

View File

@ -758,7 +758,7 @@ namespace Volian.Controls.Library
// clear tabs, clears then all so that next 'get' will calculate new. // clear tabs, clears then all so that next 'get' will calculate new.
public void SetAllTabs() public void SetAllTabs()
{ {
RefreshTab(); RefreshTab();
if (_MyAfterEditItems != null) _MyAfterEditItems[0].SetAllTabs(); // B2020-043: used to loop through all, but then recursion would redo. if (_MyAfterEditItems != null) _MyAfterEditItems[0].SetAllTabs(); // B2020-043: used to loop through all, but then recursion would redo.
if (_MyNextEditItem != null) _MyNextEditItem.SetAllTabs(); if (_MyNextEditItem != null) _MyNextEditItem.SetAllTabs();
@ -1160,7 +1160,7 @@ namespace Volian.Controls.Library
{ {
if (myItemInfoList != null) if (myItemInfoList != null)
foreach (ItemInfo item in myItemInfoList) foreach (ItemInfo item in myItemInfoList)
AddChildBefore(item, expand); AddChildBefore(item, expand);
} }
public EditItem AddChildBefore(ItemInfoList myItemInfoList, EditItem nextEditItem) public EditItem AddChildBefore(ItemInfoList myItemInfoList, EditItem nextEditItem)
{ {
@ -3994,7 +3994,8 @@ namespace Volian.Controls.Library
// TODO: Adjust top based upon format // TODO: Adjust top based upon format
// TODO: Remove Label and just output ident on the paint event // TODO: Remove Label and just output ident on the paint event
TabLeft = 20; 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) 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);

File diff suppressed because it is too large Load Diff

View File

@ -4390,7 +4390,8 @@ namespace Volian.Print.Library
SectionConfig sch = MyItemInfo.MyConfig as SectionConfig; SectionConfig sch = MyItemInfo.MyConfig as SectionConfig;
if (sch != null && sch.Section_PrintHdr != "Y") doprint = false; if (sch != null && sch.Section_PrintHdr != "Y") doprint = false;
} }
if (doprint && !UseTemplateKeepOnCurLine(itemInfo)) //C2025-021 Add logic to PROMS to support a special High Level Step type that is not printed.
if (doprint && !UseTemplateKeepOnCurLine(itemInfo) && !itemInfo.IsType("InvisibleHigh"))
{ {
float tyoff = yoff; float tyoff = yoff;
if (itemInfo.Steps != null) if (itemInfo.Steps != null)
@ -5751,9 +5752,21 @@ namespace Volian.Print.Library
private StringBuilder _RtfSB = null; private StringBuilder _RtfSB = null;
public string GetRtf(ItemInfo itemInfo, string prefix, string suffix) public string GetRtf(ItemInfo itemInfo, string prefix, string suffix)
{ {
int profileDepth = ProfileTimer.Push(">>>> GetRtf"); int profileDepth = ProfileTimer.Push(">>>> GetRtf");
_RtfSB = new StringBuilder(); _RtfSB = new StringBuilder();
DisplayText vlntxt = new DisplayText(itemInfo, E_EditPrintMode.Print, E_ViewMode.View, true, E_FieldToEdit.StepText, false, prefix, suffix, MyPageHelper.MyPromsPrinter.RemoveTrailingHardReturnsAndSpaces != null); DisplayText vlntxt = new DisplayText(itemInfo, E_EditPrintMode.Print, E_ViewMode.View, true, E_FieldToEdit.StepText, false, prefix, suffix, MyPageHelper.MyPromsPrinter.RemoveTrailingHardReturnsAndSpaces != null);
//C2025-021 Add logic to PROMS to support a special High Level Step type that is not printed.
if (itemInfo.IsType("InvisibleHigh"))
{
System.Drawing.Font myHighFont = vlntxt.TextFont.WindowsFont;
_RtfSB.Append(AddFontTable(myHighFont));
_RtfSB.Append("}");
string rtfHigh = _RtfSB.ToString();
ProfileTimer.Pop(profileDepth);
return rtfHigh;
}
// C2021-010: Remove trailing returns/spaces & manual page breaks & allow save. // C2021-010: Remove trailing returns/spaces & manual page breaks & allow save.
if (DisplayText.RemoveTrailingBlankID > 0 && !MyPageHelper.MyPromsPrinter.RemoveTrailingHardReturnsAndSpaces.Contains(itemInfo.ItemID)) MyPageHelper.MyPromsPrinter.RemoveTrailingHardReturnsAndSpaces.Add(DisplayText.RemoveTrailingBlankID); if (DisplayText.RemoveTrailingBlankID > 0 && !MyPageHelper.MyPromsPrinter.RemoveTrailingHardReturnsAndSpaces.Contains(itemInfo.ItemID)) MyPageHelper.MyPromsPrinter.RemoveTrailingHardReturnsAndSpaces.Add(DisplayText.RemoveTrailingBlankID);
System.Drawing.Font myFont = vlntxt.TextFont.WindowsFont; System.Drawing.Font myFont = vlntxt.TextFont.WindowsFont;

View File

@ -69,7 +69,7 @@ namespace Volian.Print.Library
private string symblsStr = "\u25CF\u0394"; // string of possible symbol character in a tab private string symblsStr = "\u25CF\u0394"; // string of possible symbol character in a tab
// add symbol characters as needed // add symbol characters as needed
// "\u25CF" - solid bullet // "\u25CF" - solid bullet
// \x0394 - delta // \u0394 - delta
private System.Drawing.FontStyle GetSysFontStyle(VE_Font f) private System.Drawing.FontStyle GetSysFontStyle(VE_Font f)
{ {
@ -267,7 +267,8 @@ namespace Volian.Print.Library
} }
} }
Rtf = GetRtf(origTab, vFont); Rtf = GetRtf(origTab, vFont);
Rtf = Rtf.Replace("\u0394", @"\f1\u916?\f0 "); // delta 0x0394 Rtf = Rtf.Replace("\u0394", @"\f1\u916?\f0 "); // delta 0x0394
Rtf = Rtf.Replace("\u03BF", @"\f1\u959?\f0 "); // F2025-015 lowercase omicron check with hex value replace with RTF string
if (ScriptCaution) if (ScriptCaution)
{ {
Rtf = GetRtf("\u25CFCaution ", vFont); Rtf = GetRtf("\u25CFCaution ", vFont);