From 72ca2597715d11a7e7979f407ee9af4bf7d96144 Mon Sep 17 00:00:00 2001 From: John Jenko Date: Tue, 23 Sep 2025 11:25:34 -0400 Subject: [PATCH 01/47] B2025-050 Fixed settings that required restarting PROMS and the toggle of Sync Navigation --- .../frmSysOptions.Designer.cs | 96 ++++++++----------- PROMS/VEPROMS User Interface/frmSysOptions.cs | 2 +- PROMS/VEPROMS User Interface/frmVEPROMS.cs | 3 +- .../Extension/DisplayText.cs | 4 +- .../Format/PlantFormat.cs | 2 +- PROMS/Volian.Base.Library/VlnSettings.cs | 2 +- PROMS/Volian.Controls.Library/EditItem.cs | 10 +- PROMS/Volian.Controls.Library/GridItem.cs | 6 +- PROMS/Volian.Controls.Library/ImageItem.cs | 11 ++- PROMS/Volian.Controls.Library/RTBItem.cs | 6 ++ PROMS/Volian.Controls.Library/RtfRawItem.cs | 5 + 11 files changed, 81 insertions(+), 66 deletions(-) diff --git a/PROMS/VEPROMS User Interface/frmSysOptions.Designer.cs b/PROMS/VEPROMS User Interface/frmSysOptions.Designer.cs index 077d4430..dbb0210e 100644 --- a/PROMS/VEPROMS User Interface/frmSysOptions.Designer.cs +++ b/PROMS/VEPROMS User Interface/frmSysOptions.Designer.cs @@ -30,7 +30,6 @@ namespace VEPROMS { this.components = new System.ComponentModel.Container(); System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(frmSysOptions)); - //this.btnCancel = new DevComponents.DotNetBar.ButtonX(); this.btnOK = new DevComponents.DotNetBar.ButtonX(); this.gpSystemColor = new DevComponents.DotNetBar.Controls.GroupPanel(); this.cbRibonBlack = new DevComponents.DotNetBar.Controls.CheckBoxX(); @@ -50,6 +49,7 @@ namespace VEPROMS this.gpShwRplWords = new DevComponents.DotNetBar.Controls.GroupPanel(); this.cbShwRplWrdsColor = new DevComponents.DotNetBar.Controls.CheckBoxX(); this.gpAnnoTypeFilter = new DevComponents.DotNetBar.Controls.GroupPanel(); + this.cbShwAnnoFilter = new DevComponents.DotNetBar.ButtonX(); this.gpVisioPath = new DevComponents.DotNetBar.Controls.GroupPanel(); this.txbxVisioPath = new DevComponents.DotNetBar.Controls.TextBoxX(); this.gpSeparateWindows = new DevComponents.DotNetBar.Controls.GroupPanel(); @@ -72,10 +72,10 @@ namespace VEPROMS this.cbTabbedIntrFace = new DevComponents.DotNetBar.Controls.CheckBoxX(); this.cbButtonIntrFace = new DevComponents.DotNetBar.Controls.CheckBoxX(); this.tiIntrFaceStngs = new DevComponents.DotNetBar.TabItem(this.components); - this.tabControlPanel1 = new DevComponents.DotNetBar.TabControlPanel(); - this.tiGeneral = new DevComponents.DotNetBar.TabItem(this.components); this.tabControlPanel2 = new DevComponents.DotNetBar.TabControlPanel(); this.tiStUpMsg = new DevComponents.DotNetBar.TabItem(this.components); + this.tabControlPanel1 = new DevComponents.DotNetBar.TabControlPanel(); + this.tiGeneral = new DevComponents.DotNetBar.TabItem(this.components); this.cbUCFLForSetOnly = new DevComponents.DotNetBar.Controls.CheckBoxX(); this.cbUCFLUseAll = new DevComponents.DotNetBar.Controls.CheckBoxX(); this.cbUCFLOnlyImport = new DevComponents.DotNetBar.Controls.CheckBoxX(); @@ -83,7 +83,6 @@ namespace VEPROMS this.cbUCFIgnore = new DevComponents.DotNetBar.Controls.CheckBoxX(); this.btnReset = new DevComponents.DotNetBar.ButtonX(); this.superTooltip1 = new DevComponents.DotNetBar.SuperTooltip(); - this.cbShwAnnoFilter = new DevComponents.DotNetBar.ButtonX(); this.gpSystemColor.SuspendLayout(); this.panButtons.SuspendLayout(); ((System.ComponentModel.ISupportInitialize)(this.tcSysOpts)).BeginInit(); @@ -103,18 +102,6 @@ namespace VEPROMS this.gpTransRangeColor.SuspendLayout(); this.gpPropPageStyle.SuspendLayout(); this.SuspendLayout(); - //// - //// btnCancel - //// - //this.btnCancel.AccessibleRole = System.Windows.Forms.AccessibleRole.PushButton; - //this.btnCancel.DialogResult = System.Windows.Forms.DialogResult.Cancel; - //this.btnCancel.Location = new System.Drawing.Point(616, 591); - //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 = 0; - //this.btnCancel.Text = "Cancel"; - //this.btnCancel.Click += new System.EventHandler(this.btnCancel_Click); // // btnOK // @@ -564,6 +551,18 @@ namespace VEPROMS this.gpAnnoTypeFilter.TabIndex = 13; this.gpAnnoTypeFilter.Text = "Filter Annotation Types"; // + // cbShwAnnoFilter + // + this.cbShwAnnoFilter.AccessibleRole = System.Windows.Forms.AccessibleRole.PushButton; + this.cbShwAnnoFilter.ColorTable = DevComponents.DotNetBar.eButtonColor.OrangeWithBackground; + this.cbShwAnnoFilter.Location = new System.Drawing.Point(25, 13); + this.cbShwAnnoFilter.Name = "cbShwAnnoFilter"; + this.cbShwAnnoFilter.Size = new System.Drawing.Size(91, 23); + this.cbShwAnnoFilter.Style = DevComponents.DotNetBar.eDotNetBarStyle.StyleManagerControlled; + this.cbShwAnnoFilter.TabIndex = 0; + this.cbShwAnnoFilter.Text = "Open"; + this.cbShwAnnoFilter.Click += new System.EventHandler(this.cbShwAnnoFilter_Click); + // // gpVisioPath // this.gpVisioPath.BackColor = System.Drawing.Color.Transparent; @@ -741,6 +740,7 @@ namespace VEPROMS this.cbEnhancedDocumentSync.Size = new System.Drawing.Size(99, 19); this.cbEnhancedDocumentSync.TabIndex = 9; this.cbEnhancedDocumentSync.Text = "Sync Navigation"; + this.cbEnhancedDocumentSync.CheckedChanged += new System.EventHandler(this.cbEnhancedDocumentSync_CheckedChanged); // // gpPasteSettings // @@ -1147,31 +1147,6 @@ namespace VEPROMS this.tiIntrFaceStngs.Name = "tiIntrFaceStngs"; this.tiIntrFaceStngs.Text = "My Interface Settings"; // - // tabControlPanel1 - // - this.tabControlPanel1.DisabledBackColor = System.Drawing.Color.Empty; - this.tabControlPanel1.Dock = System.Windows.Forms.DockStyle.Fill; - this.tabControlPanel1.Location = new System.Drawing.Point(0, 27); - this.tabControlPanel1.Margin = new System.Windows.Forms.Padding(2); - this.tabControlPanel1.Name = "tabControlPanel1"; - this.tabControlPanel1.Padding = new System.Windows.Forms.Padding(1); - this.tabControlPanel1.Size = new System.Drawing.Size(645, 528); - this.tabControlPanel1.Style.BackColor1.Color = System.Drawing.SystemColors.Control; - this.tabControlPanel1.Style.Border = DevComponents.DotNetBar.eBorderType.SingleLine; - this.tabControlPanel1.Style.BorderSide = ((DevComponents.DotNetBar.eBorderSide)(((DevComponents.DotNetBar.eBorderSide.Left | DevComponents.DotNetBar.eBorderSide.Right) - | DevComponents.DotNetBar.eBorderSide.Bottom))); - this.tabControlPanel1.Style.GradientAngle = 90; - this.tabControlPanel1.TabIndex = 1; - this.tabControlPanel1.TabItem = this.tiGeneral; - this.tabControlPanel1.ThemeAware = true; - // - // tiGeneral - // - this.tiGeneral.AttachedControl = this.tabControlPanel1; - this.tiGeneral.Name = "tiGeneral"; - this.tiGeneral.Text = "General"; - this.tiGeneral.Visible = false; - // // tabControlPanel2 // this.tabControlPanel2.DisabledBackColor = System.Drawing.Color.Empty; @@ -1197,6 +1172,31 @@ namespace VEPROMS this.tiStUpMsg.Text = "Startup Message"; this.tiStUpMsg.Visible = false; // + // tabControlPanel1 + // + this.tabControlPanel1.DisabledBackColor = System.Drawing.Color.Empty; + this.tabControlPanel1.Dock = System.Windows.Forms.DockStyle.Fill; + this.tabControlPanel1.Location = new System.Drawing.Point(0, 27); + this.tabControlPanel1.Margin = new System.Windows.Forms.Padding(2); + this.tabControlPanel1.Name = "tabControlPanel1"; + this.tabControlPanel1.Padding = new System.Windows.Forms.Padding(1); + this.tabControlPanel1.Size = new System.Drawing.Size(645, 528); + this.tabControlPanel1.Style.BackColor1.Color = System.Drawing.SystemColors.Control; + this.tabControlPanel1.Style.Border = DevComponents.DotNetBar.eBorderType.SingleLine; + this.tabControlPanel1.Style.BorderSide = ((DevComponents.DotNetBar.eBorderSide)(((DevComponents.DotNetBar.eBorderSide.Left | DevComponents.DotNetBar.eBorderSide.Right) + | DevComponents.DotNetBar.eBorderSide.Bottom))); + this.tabControlPanel1.Style.GradientAngle = 90; + this.tabControlPanel1.TabIndex = 1; + this.tabControlPanel1.TabItem = this.tiGeneral; + this.tabControlPanel1.ThemeAware = true; + // + // tiGeneral + // + this.tiGeneral.AttachedControl = this.tabControlPanel1; + this.tiGeneral.Name = "tiGeneral"; + this.tiGeneral.Text = "General"; + this.tiGeneral.Visible = false; + // // cbUCFLForSetOnly // this.cbUCFLForSetOnly.BackColor = System.Drawing.Color.Transparent; @@ -1291,31 +1291,17 @@ namespace VEPROMS this.superTooltip1.DefaultTooltipSettings = new DevComponents.DotNetBar.SuperTooltipInfo("", "", "", null, null, DevComponents.DotNetBar.eTooltipColor.Gray); this.superTooltip1.LicenseKey = "F962CEC7-CD8F-4911-A9E9-CAB39962FC1F"; // - // cbShwAnnoFilter - // - this.cbShwAnnoFilter.AccessibleRole = System.Windows.Forms.AccessibleRole.PushButton; - this.cbShwAnnoFilter.ColorTable = DevComponents.DotNetBar.eButtonColor.OrangeWithBackground; - this.cbShwAnnoFilter.Location = new System.Drawing.Point(25, 13); - this.cbShwAnnoFilter.Name = "cbShwAnnoFilter"; - this.cbShwAnnoFilter.Size = new System.Drawing.Size(91, 23); - this.cbShwAnnoFilter.Style = DevComponents.DotNetBar.eDotNetBarStyle.StyleManagerControlled; - this.cbShwAnnoFilter.TabIndex = 0; - this.cbShwAnnoFilter.Text = "Open"; - this.cbShwAnnoFilter.Click += new System.EventHandler(this.cbShwAnnoFilter_Click); - // // frmSysOptions // this.AcceptButton = this.btnOK; this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - //this.CancelButton = this.btnCancel; this.ClientSize = new System.Drawing.Size(699, 620); this.ControlBox = false; this.Controls.Add(this.btnReset); this.Controls.Add(this.tcSysOpts); this.Controls.Add(this.panButtons); this.Controls.Add(this.btnOK); - //this.Controls.Add(this.btnCancel); this.DoubleBuffered = true; this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); this.Margin = new System.Windows.Forms.Padding(2); diff --git a/PROMS/VEPROMS User Interface/frmSysOptions.cs b/PROMS/VEPROMS User Interface/frmSysOptions.cs index 10c695f5..7d6fd3a2 100644 --- a/PROMS/VEPROMS User Interface/frmSysOptions.cs +++ b/PROMS/VEPROMS User Interface/frmSysOptions.cs @@ -270,7 +270,7 @@ namespace VEPROMS private void cbStepTypeToolTip_CheckedChanged(object sender, EventArgs e) { Settings.Default.StepTypeToolTip = cbStepTypeToolTip.Checked; - VlnSettings.StepTypeToolType = cbStepTypeToolTip.Checked; + VlnSettings.StepTypeToolTip = cbStepTypeToolTip.Checked; } private void cbTVExpand_CheckedChanged(object sender, EventArgs e) { diff --git a/PROMS/VEPROMS User Interface/frmVEPROMS.cs b/PROMS/VEPROMS User Interface/frmVEPROMS.cs index 4e8c5079..2dc29d4b 100644 --- a/PROMS/VEPROMS User Interface/frmVEPROMS.cs +++ b/PROMS/VEPROMS User Interface/frmVEPROMS.cs @@ -524,7 +524,7 @@ namespace VEPROMS this.Activated += new EventHandler(frmVEPROMS_Activated); - VlnSettings.StepTypeToolType = Settings.Default.StepTypeToolTip; + VlnSettings.StepTypeToolTip = Settings.Default.StepTypeToolTip; VlnSettings.cbShwRplWrdsColor = Settings.Default.cbShwRplWrdsColor; displayLibDocs.PrintRequest += new DisplayLibDocEvent(displayLibDocs_PrintRequest); ContentInfo.InfoChanged += new ContentInfoEvent(RefreshDisplayHistory); @@ -2496,6 +2496,7 @@ namespace VEPROMS // Open procedure in the editor. if (_Procedure == null) continue; //skip and continue with foreach OpenItem(_Procedure); + if (tc.MyEditItem == null) continue; // skip and continue with foreach // SelectedStepTabPanel needs to be set so the print buttons on the ribbon will work. SelectedStepTabPanel = tc.MyEditItem.MyStepPanel.MyStepTabPanel; diff --git a/PROMS/VEPROMS.CSLA.Library/Extension/DisplayText.cs b/PROMS/VEPROMS.CSLA.Library/Extension/DisplayText.cs index 466f6338..36e70e49 100644 --- a/PROMS/VEPROMS.CSLA.Library/Extension/DisplayText.cs +++ b/PROMS/VEPROMS.CSLA.Library/Extension/DisplayText.cs @@ -2647,8 +2647,8 @@ namespace VEPROMS.CSLA.Library with = with.Replace(@"\ul ", ""); with = with.Replace(@"\ulnone ", ""); } - //if (Properties.Settings.Default.cbShwRplWrdsColor && !(epMode == E_EditPrintMode.Print)) - if (Properties.Settings.Default.cbShwRplWrdsColor && !(epMode == E_EditPrintMode.Print)) + // B2025-050 use VlnSettings so we don't need to restart PROMS + if (VlnSettings.cbShwRplWrdsColor && !(epMode == E_EditPrintMode.Print)) { with = $@"\cf2{with}\cf0 "; } diff --git a/PROMS/VEPROMS.CSLA.Library/Format/PlantFormat.cs b/PROMS/VEPROMS.CSLA.Library/Format/PlantFormat.cs index 88c6a841..4f02807b 100644 --- a/PROMS/VEPROMS.CSLA.Library/Format/PlantFormat.cs +++ b/PROMS/VEPROMS.CSLA.Library/Format/PlantFormat.cs @@ -37,7 +37,7 @@ namespace VEPROMS.CSLA.Library // Variables in this region are not set in the format files. They are used only in the C# code // when IgnoreUCF is true, get the original data, i.e.don't apply any UCF changes to it - private static bool _IgnoreUCF = false; + private static bool _IgnoreUCF = true; // turn off reading in UCF values when getting format information public static bool IgnoreUCF { get { return PlantFormat._IgnoreUCF; } diff --git a/PROMS/Volian.Base.Library/VlnSettings.cs b/PROMS/Volian.Base.Library/VlnSettings.cs index 2c1c430b..25d4aeaa 100644 --- a/PROMS/Volian.Base.Library/VlnSettings.cs +++ b/PROMS/Volian.Base.Library/VlnSettings.cs @@ -197,7 +197,7 @@ namespace Volian.Base.Library set { VlnSettings._UserID = value; } } private static bool _StepTypeToolTip = false; - public static bool StepTypeToolType + public static bool StepTypeToolTip { get { return VlnSettings._StepTypeToolTip; } set { VlnSettings._StepTypeToolTip = value; } diff --git a/PROMS/Volian.Controls.Library/EditItem.cs b/PROMS/Volian.Controls.Library/EditItem.cs index 8181c1c1..c0fec876 100644 --- a/PROMS/Volian.Controls.Library/EditItem.cs +++ b/PROMS/Volian.Controls.Library/EditItem.cs @@ -201,11 +201,15 @@ namespace Volian.Controls.Library /// public ItemInfo MyItemInfo { - get { return _MyItemInfo; } + get + { + ToolTipOnOff(); //B2025-050 Show the tooltip based on User Options Settings + return _MyItemInfo; + } set { _MyItemInfo = value; - if (VlnSettings.StepTypeToolType) SetToolTip(_MyItemInfo.ToolTip); + SetToolTip(_MyItemInfo.ToolTip); // B2025-050 always set tooltip text. This method will also show the tooltip based on User Options Settings ChangeBar = _MyItemInfo.HasChangeBar; CheckOff co = _MyItemInfo.GetCheckOffStep(); if (co != null && co.UIMark != null) @@ -2977,6 +2981,8 @@ namespace Volian.Controls.Library public abstract void SetText(); public abstract void SetExpandAndExpander(ItemInfo itemInfo); public abstract void SaveCurrentAndContents(); + public abstract void ToolTipOnOff(); + #endregion private int SupInfoTopOffset { diff --git a/PROMS/Volian.Controls.Library/GridItem.cs b/PROMS/Volian.Controls.Library/GridItem.cs index c26e35c3..1a2292cc 100644 --- a/PROMS/Volian.Controls.Library/GridItem.cs +++ b/PROMS/Volian.Controls.Library/GridItem.cs @@ -462,8 +462,12 @@ namespace Volian.Controls.Library DevComponents.DotNetBar.SuperTooltipInfo tpi = new DevComponents.DotNetBar.SuperTooltipInfo("", "", tip, null, null, DevComponents.DotNetBar.eTooltipColor.Lemon); _MyToolTip.MinimumTooltipSize = new Size(0, 24); _MyToolTip.TooltipDuration = 3; - //_MyToolTip.SetSuperTooltip(MyStepRTB, tpi); _MyToolTip.SetSuperTooltip(MyFlexGrid, tpi); + ToolTipOnOff(); // B2025-050 Show the tooltip based on User Options Settings + } + public override void ToolTipOnOff() + { + _MyToolTip.Enabled = VlnSettings.StepTypeToolTip; // B2025-XXX Show the tooltip based on User Options Settings } private bool DoNotRefresh = false; public override void RefreshContent() diff --git a/PROMS/Volian.Controls.Library/ImageItem.cs b/PROMS/Volian.Controls.Library/ImageItem.cs index 698fc85d..879ded63 100644 --- a/PROMS/Volian.Controls.Library/ImageItem.cs +++ b/PROMS/Volian.Controls.Library/ImageItem.cs @@ -9,6 +9,7 @@ using System.IO; using System.Text.RegularExpressions; using VEPROMS.CSLA.Library; using JR.Utils.GUI.Forms; +using Volian.Base.Library; namespace Volian.Controls.Library { @@ -78,7 +79,7 @@ namespace Volian.Controls.Library /// /// Left edge of the PictureBox /// - public override int ContentLeft + override public int ContentLeft { get { return Left + _MyPictureBox.Left; } } @@ -95,8 +96,14 @@ namespace Volian.Controls.Library _MyToolTip.MinimumTooltipSize = new Size(0, 24); _MyToolTip.TooltipDuration = 3; _MyToolTip.SetSuperTooltip(MyPictureBox, tpi); + ToolTipOnOff(); // B2025-050 Show the tooltip based on User Options Settings } - public override void RefreshContent() + public override void ToolTipOnOff() + { + _MyToolTip.Enabled = VlnSettings.StepTypeToolTip; // B2025-XXX Show the tooltip based on User Options Settings + } + + override public void RefreshContent() { IdentifyMe(false); RefreshDisplay(false); diff --git a/PROMS/Volian.Controls.Library/RTBItem.cs b/PROMS/Volian.Controls.Library/RTBItem.cs index 1b09a902..68ef343e 100644 --- a/PROMS/Volian.Controls.Library/RTBItem.cs +++ b/PROMS/Volian.Controls.Library/RTBItem.cs @@ -7,6 +7,7 @@ using System.Text; using System.Text.RegularExpressions; using System.Windows.Forms; using VEPROMS.CSLA.Library; +using Volian.Base.Library; namespace Volian.Controls.Library { @@ -133,6 +134,11 @@ namespace Volian.Controls.Library _MyToolTip.MinimumTooltipSize = new Size(0, 24); _MyToolTip.TooltipDuration = 3; _MyToolTip.SetSuperTooltip(MyStepRTB, tpi); + ToolTipOnOff(); // B2025-050 Show the tooltip based on User Options Settings + } + public override void ToolTipOnOff() + { + _MyToolTip.Enabled = VlnSettings.StepTypeToolTip; // B2025-XXX Show the tooltip based on User Options Settings } public override void RefreshContent() { diff --git a/PROMS/Volian.Controls.Library/RtfRawItem.cs b/PROMS/Volian.Controls.Library/RtfRawItem.cs index d2e5e41e..f7664f98 100644 --- a/PROMS/Volian.Controls.Library/RtfRawItem.cs +++ b/PROMS/Volian.Controls.Library/RtfRawItem.cs @@ -97,6 +97,11 @@ namespace Volian.Controls.Library _MyToolTip.MinimumTooltipSize = new Size(0, 24); _MyToolTip.TooltipDuration = 3; _MyToolTip.SetSuperTooltip(MyStepRTB, tpi); + ToolTipOnOff(); // B2025-050 Show the tooltip based on User Options Settings + } + public override void ToolTipOnOff() + { + _MyToolTip.Enabled = VlnSettings.StepTypeToolTip; // B2025-XXX Show the tooltip based on User Options Settings } public override void RefreshContent() { From 9130604fa6acacd08b7d33527f1fa5de710365bf Mon Sep 17 00:00:00 2001 From: mschill Date: Thu, 25 Sep 2025 08:01:19 -0400 Subject: [PATCH 02/47] C2015-028 Add Editorial Mode to PROMS Step Editor --- .../VEPROMS.CSLA.Library/Config/StepConfig.cs | 27 ++++++++++ .../VEPROMS.CSLA.Library/Extension/ItemExt.cs | 23 ++++++--- .../Generated/ItemInfo.cs | 14 ++++-- .../DisplayTabControl.cs | 46 +++++++++++++----- PROMS/Volian.Controls.Library/RTBItem.cs | 28 ++++++++--- PROMS/Volian.Controls.Library/StepPanel.cs | 9 +++- PROMS/Volian.Controls.Library/StepRTB.cs | 7 ++- PROMS/Volian.Controls.Library/StepTabPanel.cs | 2 +- .../Volian.Controls.Library/StepTabRibbon.cs | 43 +++++++++++++--- .../StepTabRibbon.designer.cs | Bin 575428 -> 577962 bytes 10 files changed, 161 insertions(+), 38 deletions(-) diff --git a/PROMS/VEPROMS.CSLA.Library/Config/StepConfig.cs b/PROMS/VEPROMS.CSLA.Library/Config/StepConfig.cs index 106e79a2..692a8db3 100644 --- a/PROMS/VEPROMS.CSLA.Library/Config/StepConfig.cs +++ b/PROMS/VEPROMS.CSLA.Library/Config/StepConfig.cs @@ -394,6 +394,33 @@ namespace VEPROMS.CSLA.Library OnPropertyChanged("Step_ChangeID"); } } + + // C2015-028 Add Editorial Mode to PROMS Step Editor + // was last change made in editorial mode and thus change bars should be disabled? + // will contain userid of user that made last change if it was in Editorial Mode + // if there was not a previous change that would have caused change bars + // will be blank/empty by default + // will get overwritten every time a change is made + public string Step_ChangeIDEditorialMode + { + get + { + string s = _Xp["Step", "ChangeIDEMode"]; + + if (s == string.Empty) return null; + return s; + } + set + { + string s = _Xp["Step", "ChangeIDEMode"]; + + if (value != null && value.ToString() == s) return; + if (value == null && s != null) _Xp["Step", "ChangeIDEMode"] = null; + else _Xp["Step", "ChangeIDEMode"] = value.ToString(); + OnPropertyChanged("Step_ChangeIDEMode"); + } + } + public string Step_Responsibility { get diff --git a/PROMS/VEPROMS.CSLA.Library/Extension/ItemExt.cs b/PROMS/VEPROMS.CSLA.Library/Extension/ItemExt.cs index cc68f7d5..62e5ca4a 100644 --- a/PROMS/VEPROMS.CSLA.Library/Extension/ItemExt.cs +++ b/PROMS/VEPROMS.CSLA.Library/Extension/ItemExt.cs @@ -3933,9 +3933,7 @@ namespace VEPROMS.CSLA.Library get { bool chg = HasChanges; - StepInfo si = this as StepInfo; - if (si == null) return false; - StepConfig sc = si.MyConfig as StepConfig; + StepConfig sc = this.MyConfig as StepConfig; if (sc == null) return false; // if there is no override & return whether there was a change to the text. if (chg && ActiveFormat.PlantFormat.FormatData.ProcData.ChangeBarData.ChangeIds && @@ -3943,6 +3941,21 @@ namespace VEPROMS.CSLA.Library return false; // No Change ID - No Change Bar if ((sc.Step_SpellCheckerChangedText ?? "") == "NoChangeBar") return false; // Spell Checker, in editorial mode (format flag EditoralSpellCheck) , made the change and there was no change bar prior to that change B2015-024 + // C2015-028 Add Editorial Mode to PROMS Step Editor + // last change was in editorial mode, so ignore it + if (!string.IsNullOrEmpty(sc.Step_ChangeIDEditorialMode)) + return false; + // C2015-028 Add Editorial Mode to PROMS Step Editor + // Add Check for enhanced docs + // If enhanced docs, need to check the step_config for the master + if (sc.MyEnhancedDocuments != null && sc.MyEnhancedDocuments.Count == 1 && sc.MyEnhancedDocuments[0].Type == 0) + { + ItemInfo ii = ItemInfo.Get(sc.MyEnhancedDocuments[0].ItemID, true); + if (ii == null) return false; // when deleting a source step, this was causing a crash (null ii) + return ii.HasChangeBar; + } + + if (sc.Step_CBOverride == null) return chg; return (sc.Step_CBOverride == "On"); @@ -3953,9 +3966,7 @@ namespace VEPROMS.CSLA.Library get { if (this.IsAccPages || this.IsProcedure || this.IsSection) return false; - StepInfo si = this as StepInfo; - if (si == null) return false; - StepConfig sc = si.MyConfig as StepConfig; + StepConfig sc = this.MyConfig as StepConfig; if (sc == null) return false; // go back to source & see what date it has: if (sc.MyEnhancedDocuments != null && sc.MyEnhancedDocuments.Count == 1 && sc.MyEnhancedDocuments[0].Type == 0) diff --git a/PROMS/VEPROMS.CSLA.Library/Generated/ItemInfo.cs b/PROMS/VEPROMS.CSLA.Library/Generated/ItemInfo.cs index 9dd0926b..ba31fad0 100644 --- a/PROMS/VEPROMS.CSLA.Library/Generated/ItemInfo.cs +++ b/PROMS/VEPROMS.CSLA.Library/Generated/ItemInfo.cs @@ -606,12 +606,20 @@ namespace VEPROMS.CSLA.Library _ItemInfoExtension.Refresh(this); OnChange();// raise an event } - public static ItemInfo Get(int itemID) + public static ItemInfo Get(int itemID, bool forcerefresh = false) { - //if (!CanGetObject()) - // throw new System.Security.SecurityException("User not authorized to view a Item"); + try { + // C2015-028 Add Editorial Mode to PROMS Step Editor + // fixes caching issue + // item.myconfig was cached not containing the bypass changebar info + // so this forces a refresh of the cache + if (forcerefresh) + { + _CacheByPrimaryKey.Remove(itemID.ToString()); + } + ItemInfo tmp = GetCachedByPrimaryKey(itemID); if (tmp == null) { diff --git a/PROMS/Volian.Controls.Library/DisplayTabControl.cs b/PROMS/Volian.Controls.Library/DisplayTabControl.cs index c516993f..0b301aaf 100644 --- a/PROMS/Volian.Controls.Library/DisplayTabControl.cs +++ b/PROMS/Volian.Controls.Library/DisplayTabControl.cs @@ -11,6 +11,7 @@ using DevComponents.DotNetBar; using JR.Utils.GUI.Forms; using Volian.Base.Library; using Microsoft.Win32; +using System.Linq; namespace Volian.Controls.Library { @@ -261,24 +262,45 @@ namespace Volian.Controls.Library get { return _ChgId; } set { _ChgId = value; } } + + // C2015-028 Add Editorial Mode to PROMS Step Editor public bool EditorialChange { get { if (_ChgId == null) return true; if (_ChgId == "") return true; - if (_ChgId.ToUpper() == "EC") return true; - return false; - } - } - #endregion - #region Events - /// - /// This event is raised when a the "Tab" of a DisplayItem is clicked with a mouse. - /// So far this has just been used for demo purposes. It could be used to select a - /// step and it's children for the purpose of copying. - /// - public event StepPanelEvent ItemClick; + if (_ChgId.ToUpper() == "EC") { return true;} + + return IsInEditorialMode; + } + } + + // C2015-028 Add Editorial Mode to PROMS Step Editor + // property to hold if button in ribbon is toggled on or off + public bool IsInEditorialMode { get; set; } = false; + + // C2015-028 Add Editorial Mode to PROMS Step Editor + // This is used when button in the ribbon is toggled on/off + // It iterates through all previously opened tabs + // and updates the "Editorial Mode" button + // and background color to match those of the current tab + public void SetEdititorialModeForAllTabs(bool mode) + { + foreach (DisplayTabItem tabItem in _MyDisplayTabItems.Values.Where(tabItem => tabItem.MyStepTabPanel != null)) + { + tabItem.MyStepTabPanel.MyStepTabRibbon.SetEditorialMode(mode); + } + } + + #endregion + #region Events + /// + /// This event is raised when a the "Tab" of a DisplayItem is clicked with a mouse. + /// So far this has just been used for demo purposes. It could be used to select a + /// step and it's children for the purpose of copying. + /// + public event StepPanelEvent ItemClick; /// /// Checks to see if the ItemClick event is handled and launches it /// diff --git a/PROMS/Volian.Controls.Library/RTBItem.cs b/PROMS/Volian.Controls.Library/RTBItem.cs index 68ef343e..cb52e865 100644 --- a/PROMS/Volian.Controls.Library/RTBItem.cs +++ b/PROMS/Volian.Controls.Library/RTBItem.cs @@ -799,27 +799,41 @@ namespace Volian.Controls.Library // if the plant has the change id option, the change id was entered when the program started. // this should be saved for every piece of edited data. Note that the set of config // item Step_MultipleChangeID has the save built in to it. + if (sc == null) sc = new StepConfig(); if (MyStepRTB.MyItemInfo.IsStep && MyStepRTB.MyItemInfo.ActiveFormat.PlantFormat.FormatData.ProcData.ChangeBarData.ChangeIds && !this.MyStepPanel.MyStepTabPanel.MyDisplayTabControl.EditorialChange) { - //StepConfig sc = MyStepRTB.MyItemInfo.MyConfig as StepConfig; - if (sc == null) sc = new StepConfig(); sc.Step_ChangeID = this.MyStepPanel.MyStepTabPanel.MyDisplayTabControl.ChgId; - //if (MyStepRTB.MyItemInfo.MyConfig == null) itm.MyContent.Config = sc.ToString(); + } + // C2015-028 Add Editorial Mode to PROMS Step Editor + // if in Editorial Mode, treat it the same as if the ChangeIds are set in the Format file + if (MyStepPanel.MyStepTabPanel.MyDisplayTabControl.IsInEditorialMode && !existingChangeBar) + { + sc.Step_ChangeIDEditorialMode = Volian.Base.Library.VlnSettings.UserID; + } + else + { + sc.Step_ChangeIDEditorialMode = null; } // B2020-017: If making an editorial change, clear the Change id. Having the change id on // was adding/printing a change bar. + // C2015-028 Add Editorial Mode to PROMS Step Editor + // if in Editorial Mode, treat it the same as if the ChangeIds are set in the Format file if (MyStepRTB.MyItemInfo.IsStep && - MyStepRTB.MyItemInfo.ActiveFormat.PlantFormat.FormatData.ProcData.ChangeBarData.ChangeIds - && this.MyStepPanel.MyStepTabPanel.MyDisplayTabControl.EditorialChange - && hasChangeBar == false) + (MyStepRTB.MyItemInfo.ActiveFormat.PlantFormat.FormatData.ProcData.ChangeBarData.ChangeIds + || MyStepPanel.MyStepTabPanel.MyDisplayTabControl.IsInEditorialMode + ) + && MyStepPanel.MyStepTabPanel.MyDisplayTabControl.EditorialChange + && !hasChangeBar) { if (sc == null) sc = new StepConfig(); sc.Step_ChangeID = null; } // B2015-024 Have Spell Checker text changes be an editorial change (not assign a change bar but keep existing change bar) - if (MyItemInfo.ActiveFormat.PlantFormat.FormatData.EditData.EditoralSpellCheck) + // C2015-028 Add Editorial Mode to PROMS Step Editor + // if in Editorial Mode, treat it the same as if the Rditorial SprllCheck flag is set in the Format file + if (MyItemInfo.ActiveFormat.PlantFormat.FormatData.EditData.EditoralSpellCheck || this.MyStepPanel.MyStepTabPanel.MyDisplayTabControl.IsInEditorialMode) { if (StepRTB.DidEditorialSpellCheck) { diff --git a/PROMS/Volian.Controls.Library/StepPanel.cs b/PROMS/Volian.Controls.Library/StepPanel.cs index 728ad353..8f509a33 100644 --- a/PROMS/Volian.Controls.Library/StepPanel.cs +++ b/PROMS/Volian.Controls.Library/StepPanel.cs @@ -650,8 +650,13 @@ namespace Volian.Controls.Library /// public Color ActiveColor { - get { return _ActiveColor; } - set { _ActiveColor = value; } + get { + // C2015-028 Add Editorial Mode to PROMS Step Editor + // if in Editorial Mode, use LightGreen background + _ActiveColor = MyStepTabPanel != null && MyStepTabPanel.MyDisplayTabControl.IsInEditorialMode ? Color.LightGreen : Color.SkyBlue; + return _ActiveColor; + } + set { _ActiveColor = value; } } /// /// Gets or Sets the Annotation backcolor for StepRTBs in the Panel diff --git a/PROMS/Volian.Controls.Library/StepRTB.cs b/PROMS/Volian.Controls.Library/StepRTB.cs index dcd59514..cc20f092 100644 --- a/PROMS/Volian.Controls.Library/StepRTB.cs +++ b/PROMS/Volian.Controls.Library/StepRTB.cs @@ -3760,7 +3760,12 @@ namespace Volian.Controls.Library public bool SpellCheckNext() { int nBad = C1SpellChecker2.CheckControl(this, false, MySpellCheckDlg); - if (MyItemInfo.ActiveFormat.PlantFormat.FormatData.EditData.EditoralSpellCheck) + + // C2015-028 Add Editorial Mode to PROMS Step Editor + // if in Editorial Mode, treat it the same as if the EditorialSpellCheck flag is set in the Format file + bool editorialmode = (this.Parent.Parent.Parent as StepTabPanel).MyDisplayTabControl.IsInEditorialMode; + + if (MyItemInfo.ActiveFormat.PlantFormat.FormatData.EditData.EditoralSpellCheck || editorialmode) DidEditorialSpellCheck = MySpellCheckDlg.DidCorrectSpelling; // B2015-024 spell checker in editoral mode return (nBad >= 0); // nBad = -1 means user pressed Cancel button } diff --git a/PROMS/Volian.Controls.Library/StepTabPanel.cs b/PROMS/Volian.Controls.Library/StepTabPanel.cs index c895ed09..a6d501d0 100644 --- a/PROMS/Volian.Controls.Library/StepTabPanel.cs +++ b/PROMS/Volian.Controls.Library/StepTabPanel.cs @@ -120,7 +120,7 @@ namespace Volian.Controls.Library /// private void SetupStepTabRibbon() { - _MyStepTabRibbon = new StepTabRibbon(); + _MyStepTabRibbon = new StepTabRibbon(_MyDisplayTabControl.IsInEditorialMode); _MyStepTabRibbon.Dock = System.Windows.Forms.DockStyle.Top; _MyStepTabRibbon.Location = new System.Drawing.Point(0, 0); _MyStepTabRibbon.Name = "displayTabRibbon1"; diff --git a/PROMS/Volian.Controls.Library/StepTabRibbon.cs b/PROMS/Volian.Controls.Library/StepTabRibbon.cs index 37b57301..8a4a5f47 100644 --- a/PROMS/Volian.Controls.Library/StepTabRibbon.cs +++ b/PROMS/Volian.Controls.Library/StepTabRibbon.cs @@ -995,7 +995,7 @@ namespace Volian.Controls.Library // SetButtonAndMenuEnabling(true); //} #region Constructor - public StepTabRibbon() + public StepTabRibbon(bool? IsInEditorialMode = false) { InitializeComponent(); this.btnInsSupInfo.Tag = string.Format("{0} {1}", (int)E_FromTypes.SupInfos, 1040); // Make type of rno (40) & special case 1000 @@ -1021,8 +1021,16 @@ namespace Volian.Controls.Library // hide the import from Word file if not running in Debug mode if (!VlnSettings.DebugMode) rbnImpWrd.Visible = false; - } - void _RibbonControl_SizeChanged(object sender, EventArgs e) + + // C2015-028 Add Editorial Mode to PROMS Step Editor + // default Editorial Mode to what is set in the DisplayTabControl + SetEditorialMode(IsInEditorialMode != null && (bool) IsInEditorialMode); + + } + + public void SetEditorialMode(bool mode) => btnEditorialMode.Checked = btnCMEditorialMode.Checked = mode; + + void _RibbonControl_SizeChanged(object sender, EventArgs e) { this.Size = _RibbonControl.Size; } @@ -3125,7 +3133,7 @@ namespace Volian.Controls.Library btnCMRedo.Enabled = btnRedo.Enabled = _MyStepRTB.CanRedo; btnCMUndo.Enabled = btnUndo.Enabled = _MyStepRTB.CanUndo; } - private void btnGoTo_Click(object sender, EventArgs e) + private void btnGoTo_Click(object sender, EventArgs e) { // if on a transition, go to the selected transition 'to'. If on // a referenced object, bring up ReferencedObject Editor (for now, just put up a message box. @@ -3211,7 +3219,29 @@ namespace Volian.Controls.Library System.Diagnostics.Process.Start(roapp, args); } } - private void btnChgTyp_Click(object sender, EventArgs e) + + // C2015-028 Add Editorial Mode to PROMS Step Editor + private void btnEditorialMode_Click(object sender, EventArgs e) + { + //toggle button is selected + SetEditorialMode(!btnEditorialMode.Checked); + + //set the overall flag in the displaytabcontrol + StepTabPanel tmp = Parent as StepTabPanel; + tmp.MyDisplayTabControl.IsInEditorialMode = btnEditorialMode.Checked; + + //refresh the current item so the background color changes (LightGreen=Editorial Mode, SkyBlue=Normal Selected) + if (MyEditItem != null) + { + _MyEditItem.RefreshContent(); + Application.DoEvents(); + } + + //set other preciously opened tabs to match the state of Editorial Mode in the current tab + tmp.MyDisplayTabControl.SetEdititorialModeForAllTabs(btnEditorialMode.Checked); + } + + private void btnChgTyp_Click(object sender, EventArgs e) { StepPanelTabDisplayEventArgs args = new StepPanelTabDisplayEventArgs("Change Step Type"); MyEditItem.MyStepPanel.OnTabDisplay(sender, args); @@ -3279,7 +3309,8 @@ namespace Volian.Controls.Library rtabInsert.Visible = false; rtabAdmin.Visible = false; rtabReview.Select(); - btnCMEditMode1.Enabled = btnEditMode.Enabled = false; // don't allow reviewer toggle out of view mode + btnCMEditMode1.Enabled = btnEditMode.Enabled = btnCMEditorialMode.Enabled = false; // don't allow reviewer toggle out of view mode + btnCMEditorialMode.Visible = false; } } public void SetupROEditorMode() diff --git a/PROMS/Volian.Controls.Library/StepTabRibbon.designer.cs b/PROMS/Volian.Controls.Library/StepTabRibbon.designer.cs index 33fc65fe5b524d2adb6f050cb1c1792c6312116d..f374745296d67545dc0e0e3210589c9c65294b12 100644 GIT binary patch delta 944 zcmX@oue@rp@&-TU>Cf00HKspkXXW6}XDDLGWJqMlVenNDswC;-J|RlzKV zB!&`(JO)>W6rfW}fX+m5GD9jzB}C8khir_xSUon~(3?e37N-#mN?=FGG6OA~e!iVm z5)Fx3Av1H1np3tzGgLJ7HblZE)yfslgq4(+htvicY^{$HbuscNs$rFt}oX!KVO(;5Y^bIxb)E_p-)fcUhtn zqd02ZOuvxGB!?oT4oWp*?J7x3K+FupEZbF*SnphzE*8qBB#dwo%oRG*1w+~7!6|3E zi7{K9@ANmuY#c~|y0)Fwcv3$Pk_aT2>)C{m#3r_~ickOG$tHp|aU#Nm8{q8P5J zOv4=njz1YKr%woDW0|f4bY}am2Da_H8rV-P28Mya^dNqY7-@`1g9kV$g^Pj|B}|V2 e=AiBGR5G)>2~6ISRWRM4l!<5aJe8cH=>k@49FwPU< z4IA6^5Bh9e%^EYdYs_HGS~6Y2icM;IfjyJRb}3sXE4AqkwyX-%>lm3hrmxEb5-fSl z8X#kZ+8<;v0WmWWvuuBm!FuPybT4jpmFWu%*f_QWEot*@ujyplUen2bVexbc367NM a3#2*Nw)^REOwgQOA;`qHy&!_asuBQ Date: Fri, 26 Sep 2025 09:33:23 -0400 Subject: [PATCH 03/47] B2022-126 F2025-013 F2025-020 F2025-021 F2025-022 Vogtle 3_4 Two Column Format --- PROMS/Formats/fmtall/VEGP2all.xml | Bin 227664 -> 227704 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/PROMS/Formats/fmtall/VEGP2all.xml b/PROMS/Formats/fmtall/VEGP2all.xml index b1b34c182e24e4f31d77cdaae517d7d231a5578f..07d9a30624a1f151453fa46940cd5196785ff3b1 100644 GIT binary patch delta 213 zcmccciTB4R-VH1|vOx@f4E_w^44Dim3?&R1430oLi@}ybiNTn`qWQn}_W#<9_FdBx z@|YE-Kj>!EnSNk5%tuD4Y5$m9wojPH)FQ@g$zV8LP?Y)m z^ap`VEYlsHGfkSdhiTRHhA<|T=?h*U@us~(;!IC?jm$gnhAD5`9;QQ6r%S{#^KJi@ p%Djhh`hnSuLem#`FfZBe5W+0M#%cs~qUm(OP-e~TO;OC}?r~qw{V^U#ufoMmoXIs`L{5(0<@c#8gK(vx9~y(asjulQv=Qh Om*8y!Dz~ay1I`|mK`apf From e7f7f28ff1da9bdda4379454e20180cbae9ba42d Mon Sep 17 00:00:00 2001 From: mschill Date: Fri, 26 Sep 2025 09:58:35 -0400 Subject: [PATCH 04/47] B2025-048 Problem with Printing CAS Steps --- PROMS/VEPROMS User Interface/frmPDFStatusForm.cs | 9 +++++++++ PROMS/Volian.Print.Library/PromsPrinter.cs | 16 +++++++++++++++- PROMS/Volian.Print.Library/vlnParagraph.cs | 5 ++++- 3 files changed, 28 insertions(+), 2 deletions(-) diff --git a/PROMS/VEPROMS User Interface/frmPDFStatusForm.cs b/PROMS/VEPROMS User Interface/frmPDFStatusForm.cs index 9b024af5..14ddb2ab 100644 --- a/PROMS/VEPROMS User Interface/frmPDFStatusForm.cs +++ b/PROMS/VEPROMS User Interface/frmPDFStatusForm.cs @@ -284,6 +284,15 @@ namespace VEPROMS cachePartInfo = PartInfo.CacheList; } + //B2025-048 Problem with Printing CAS Steps + // skip doing section titles if printing CAS or CTAS + // - was causing it to + // skip/overwrite data + if (OnlyShowContinuousActionSummary) + { MyPromsPrinter.PromsPrinterPrintType = PromsPrinterPrintType.CAS_Only; } + if (OnlyShowTimeCriticalActionSummary) + { MyPromsPrinter.PromsPrinterPrintType = PromsPrinterPrintType.TCAS_only; } + _PdfFile = MyPromsPrinter.Print(PDFPath, MakePlaceKeeper, MakeContinuousActionSummary, MakeTimeCriticalActionSummary, PrtSectID); ProfileTimer.Pop(profileDepth); diff --git a/PROMS/Volian.Print.Library/PromsPrinter.cs b/PROMS/Volian.Print.Library/PromsPrinter.cs index 90103d95..e1105806 100644 --- a/PROMS/Volian.Print.Library/PromsPrinter.cs +++ b/PROMS/Volian.Print.Library/PromsPrinter.cs @@ -85,6 +85,14 @@ namespace Volian.Print.Library ProgressSetup, LoadVlnParagraph } + + //B2025-048 Problem with Printing CAS Steps + public enum PromsPrinterPrintType + { + Normal, + CAS_Only, + TCAS_only + } public class PromsPrinter { public bool NeedSupInfoBreak = false; @@ -331,6 +339,12 @@ namespace Volian.Print.Library get { return _MergedPdf; } set { _MergedPdf = value; } } + + //B2025-048 Problem with Printing CAS Steps + // default to Normal + // will skip certain logic if CAS Only or CTS Only + public PromsPrinterPrintType PromsPrinterPrintType { get; set; } = PromsPrinterPrintType.Normal; + public PromsPrinter(ItemInfo myItem, string rev, string watermark, bool debugOutput, bool origPgBrk, string backgroundFolder, bool openPDF, bool overWrite, ChangeBarDefinition cbd, String pdfFile, bool insertBlankPages, bool batchPrint, string prefix, bool saveLinks, int removeTrailngHardReturnsAndManualPageBreaks, string blankPageText, bool didAll, MergedPdf mergedPdf, string watermarkColor, int PrtSectID = -1) { @@ -1266,7 +1280,7 @@ namespace Volian.Print.Library set { _MyTimeCriticalActSummary = value; } } - public void CreateWordDocPdf(PdfContentByte cb, SectionInfo mySection) + public void CreateWordDocPdf(PdfContentByte cb, SectionInfo mySection) { if (mySection.PageNumber == -1) // If page num transition goes to a section, need the pagenumber of section. { diff --git a/PROMS/Volian.Print.Library/vlnParagraph.cs b/PROMS/Volian.Print.Library/vlnParagraph.cs index afacd8a5..4f0885d1 100644 --- a/PROMS/Volian.Print.Library/vlnParagraph.cs +++ b/PROMS/Volian.Print.Library/vlnParagraph.cs @@ -2159,7 +2159,10 @@ namespace Volian.Print.Library } // If "doSectionTitleContinued" is true then print the section title with "(Continued)" appended to it // format must have ContinueSectinHeader format flag set to true - if (doSectionTitleContinued) + //B2025-048 Problem with Printing CAS Steps + // skip this if printing CAS or CTAS - was causing it to + // skip/overwrite data + if (doSectionTitleContinued && MyPromsPrinter.PromsPrinterPrintType == PromsPrinterPrintType.Normal) { vlnParagraph sectContPara; string contMsg = (MyItemInfo.ActiveSection != null) ? MyItemInfo.ActiveSection.MyDocStyle.Continue.SectionTitle.AppendToTitle : ""; // C2018-003 fixed use of getting the active section From 1ef6a1d0e4e7912e4da19de44ccdfe5ebe0fbd90 Mon Sep 17 00:00:00 2001 From: mschill Date: Fri, 26 Sep 2025 10:37:30 -0400 Subject: [PATCH 05/47] B2025-051 - Quick Print Section is not automatically working unless the sections have applicability --- PROMS/VEPROMS User Interface/frmVEPROMS.cs | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/PROMS/VEPROMS User Interface/frmVEPROMS.cs b/PROMS/VEPROMS User Interface/frmVEPROMS.cs index 2dc29d4b..5278e3e8 100644 --- a/PROMS/VEPROMS User Interface/frmVEPROMS.cs +++ b/PROMS/VEPROMS User Interface/frmVEPROMS.cs @@ -1325,12 +1325,17 @@ namespace VEPROMS prnDlg.SetupForProcedure(); // Setup filename if (quickprint) + { + prnDlg.OverwritePDF = false; // turn off overwriting of PDFs B2025-051 prnDlg.QPCreatePDF(); // Create Print report - else - prnDlg.ShowDialog(this); // Create Print report + } + else + { + prnDlg.ShowDialog(this); // Create Print report + } - //B2025-032 Fix Section not Printing Applicability Properly - si2.MyDocVersion.DocVersionConfig.SelectedSlave = 0; + //B2025-032 Fix Section not Printing Applicability Properly + si2.MyDocVersion.DocVersionConfig.SelectedSlave = 0; si2.MyProcedure.MyDocVersion.DocVersionConfig.SelectedSlave = 0; } } From 808a1ba0ea54e57178909b47d35034f49cd15734 Mon Sep 17 00:00:00 2001 From: John Jenko Date: Mon, 29 Sep 2025 14:01:17 -0400 Subject: [PATCH 06/47] F2025-014 Enabled Parent/Child logic of PSI items on the Cover Page section, as a only once Cover Page style is needed. --- PROMS/Formats/fmtall/VEGP2all.xml | Bin 227704 -> 228334 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/PROMS/Formats/fmtall/VEGP2all.xml b/PROMS/Formats/fmtall/VEGP2all.xml index 07d9a30624a1f151453fa46940cd5196785ff3b1..6625b2bb13598d8a06718105077d0c74f00f7a5f 100644 GIT binary patch delta 999 zcmaiyJ!n%=6vxj!r^M76Y?3CWNuw`CgNCL_+N9B915HuvV2oO%idfQG@S{y4v0qXV zKL$4o4?HSGa8h(pJKV)V9g2fP2EoBas6!V+ErPm;H!rCj+EgC*ao@fF^Lyui&iS=s zDgLy)SlO+cJGZ^^`Ekop$iOH}vv(ftb^VZq9Grj=7-s8z;ov_BGR=qfv}|W>08M=L zny9Zm07sPI3Z(VBk)WfpF9)g93ks28>o?&L8V7pGO&t)`-`YG?lwN_W%Kb_SEud9c zNf?JQNGV=kQ7dHVfpc&Xx|J>fVF*F26ro$AjgE~pq0Rn0BO1A_mt3nEHf`ud<%c~n_7iogMZZVoljYko6`E`7#o=J**r-ndR_6sBET+weJ6<17!L z!I`QS&fkaelbmhGCHxjpv!e$Ka?H~(lDV`$yXYN)O$po8F%b`igvl9 z2Ma=KJ1JqlXTw9BO3*&}FpFK6WZ@kaYNYu$7D>)7VoM)uHuUjO5nJ7p5LBGJ8kQk7 z68X~Xt_};|$fARj<79fG>TBU<2mM$ZWG)niOXe2QC5*0=zcY_;qLvq$$tmBr(rt^; zBAM%=kK`#ES#M*_1ZU=iiI=kERNWUj%F5*g`B9p>DK4aP^tF?QRQ t`B;QJA|e&+0a6UY{PGm_urEnxIdz&^<(DyP7Mwas30~-+20lDZp}#91`PTpd delta 411 zcmaF&o%hEl-VL8rr>8t*6xgJu!L&I^LxX>EfUCuAenlM}*MHHTSm53^=8xh1H; zpv$1Z5Xz9pkjYR2WEoF?Sj;56eU2#8H0kLAK1}DP7kDwTZLcwAy23O~p6SZ=c@|7B zz^v&&F_GnI`c}_TUqk_K8tyyNL=@ z95akJJwcU;W&0U*CIcpz&~_s&rde#0xukd|*9dYk=>VI&up>XESSkEd;66 Date: Tue, 30 Sep 2025 08:31:40 -0400 Subject: [PATCH 07/47] =?UTF-8?q?B2025-046=20/=20B2025-043=20/=20B2024-082?= =?UTF-8?q?=20=E2=80=93=20Remember=20Tabs=20Changes?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- PROMS/VEPROMS User Interface/frmVEPROMS.cs | 14 ++++++++------ PROMS/Volian.Controls.Library/DisplayTabControl.cs | 3 ++- 2 files changed, 10 insertions(+), 7 deletions(-) diff --git a/PROMS/VEPROMS User Interface/frmVEPROMS.cs b/PROMS/VEPROMS User Interface/frmVEPROMS.cs index 5278e3e8..e52c6b21 100644 --- a/PROMS/VEPROMS User Interface/frmVEPROMS.cs +++ b/PROMS/VEPROMS User Interface/frmVEPROMS.cs @@ -1807,14 +1807,15 @@ namespace VEPROMS // Deactivate previous procedure tab state by user VEPROMS.CSLA.Library.Item.DeactivateStateDisplayTabTmp(MySessionInfo.UserID); // Save current procedure tab state - foreach (KeyValuePair pgTab in tc._MyDisplayTabItems) + + //B2024-082 Remember Tabs Not opening in correct order + foreach (DisplayTabItem dti in tc.MyBar.Items) { cnt++; - DisplayTabID = pgTab.Key; - TabItemID = Int32.Parse(DisplayTabID.Substring(DisplayTabID.IndexOf("Item - ") + 7)); - DisplayTabName = pgTab.Value.ToString(); - //tc.SelectedDisplayTabItem.MyStepTabPanel.ToString() - VEPROMS.CSLA.Library.Item.AddDisplayTabsState(TabItemID, DisplayTabID, DisplayTabName, MySessionInfo.UserID, cnt); + DisplayTabID = dti.MyKey; + TabItemID = dti.MyItemInfo.ItemID; + DisplayTabName = dti.ToString(); + Item.AddDisplayTabsState(TabItemID, DisplayTabID, DisplayTabName, MySessionInfo.UserID, cnt); } } @@ -2513,6 +2514,7 @@ namespace VEPROMS { SelectedStepTabPanel.Select(); dlgFindReplace.MyEditItem = tc.MyEditItem; + SpellChecker.MyEditItem = tc.MyEditItem; //B2025-043 Remember Tabs is not setting the EditItem for the active window causing a PROMS crash when Spell Check } } } diff --git a/PROMS/Volian.Controls.Library/DisplayTabControl.cs b/PROMS/Volian.Controls.Library/DisplayTabControl.cs index 0b301aaf..bda8b089 100644 --- a/PROMS/Volian.Controls.Library/DisplayTabControl.cs +++ b/PROMS/Volian.Controls.Library/DisplayTabControl.cs @@ -603,7 +603,8 @@ namespace Volian.Controls.Library { ItemInfo myItemInfo = myItemInfo2; - if (myItemInfo.MyDocVersion == null) // bug fix: B2016-108 disconnected data will not have a MyDocVersion + //B2025-046 Remember Tabs failing when swapping versions of PROMS + if (myItemInfo?.MyDocVersion == null) // bug fix: B2016-108 disconnected data will not have a MyDocVersion { FlexibleMessageBox.Show(this, "Possible disconnected item", "Item Not Found"); return null; From abcf035143fabaa9e71da17b3b31de39109f3c3a Mon Sep 17 00:00:00 2001 From: John Jenko Date: Tue, 30 Sep 2025 16:00:36 -0400 Subject: [PATCH 08/47] =?UTF-8?q?F2025-023=20Fixed=20a=20typo=20in=20the?= =?UTF-8?q?=20ReplaceWords=20list=20in=20the=20Vogtle=20formats.=20Lowerca?= =?UTF-8?q?sed=20=E2=80=9Cassemble=E2=80=9D=20was=20misspelled=20as=20?= =?UTF-8?q?=E2=80=9Cbssemble=E2=80=9D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- PROMS/Formats/fmtall/VEGP1all.xml | Bin 183638 -> 183638 bytes PROMS/Formats/fmtall/VEGP2all.xml | Bin 228334 -> 228334 bytes PROMS/Formats/fmtall/VEGPAlrall.xml | Bin 209292 -> 209292 bytes 3 files changed, 0 insertions(+), 0 deletions(-) diff --git a/PROMS/Formats/fmtall/VEGP1all.xml b/PROMS/Formats/fmtall/VEGP1all.xml index 29750164de5b19d3a76e3d143e64bde616ce349b..4432611c947151611bd217d1b41bcef76d890f65 100644 GIT binary patch delta 28 kcmcaMi~HIv?hVJ{7!xP&jWurm71#bNj&b|1IHs690L$JDqW}N^ delta 28 kcmcaMi~HIv?hVJ{7?URNjWurm71#bNj&b|1IHs690L$5`3(vH diff --git a/PROMS/Formats/fmtall/VEGPAlrall.xml b/PROMS/Formats/fmtall/VEGPAlrall.xml index fa17a95ceec7f600c21481742eacdfd60a74e2f9..49932a6bf0c09c05a64983905e3084f4eb54ed3b 100644 GIT binary patch delta 28 jcmeBq%+vFjX9J5DW8!2+Pvd3_uXYPB#_bkfOd-z!m&*z4 delta 28 jcmeBq%+vFjX9J5DW71?sPvd3_uXYPB#_bkfOd-z!m)!~N From dd5c709709814924dfc6fb70518d9382e8abc79a Mon Sep 17 00:00:00 2001 From: John Jenko Date: Wed, 1 Oct 2025 10:58:23 -0400 Subject: [PATCH 09/47] =?UTF-8?q?F2025-024=20Turned=20off=20the=20automati?= =?UTF-8?q?c=20bolding=20of=20RNOs=20in=20Vogtle=E2=80=99s=20Two=20Column?= =?UTF-8?q?=20Format?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- PROMS/Formats/fmtall/VEGP2all.xml | Bin 228334 -> 228334 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/PROMS/Formats/fmtall/VEGP2all.xml b/PROMS/Formats/fmtall/VEGP2all.xml index 94272c36e3135a2a6b8540f1c9226650b591db2f..b433d29fb0c1bc302d7e07848cb943f30d918468 100644 GIT binary patch delta 36 scmaF&o%h{$-i9rV6LwC&aFtPQdcZUwA#jj!PJ6{J#_bimn92?U09EV}O8@`> delta 36 rcmaF&o%h{$-i9rV6LwBFn82tuJzyG;5ID# Date: Thu, 2 Oct 2025 08:02:33 -0400 Subject: [PATCH 10/47] =?UTF-8?q?C2025-037=20=E2=80=93=20Spell=20Check=20C?= =?UTF-8?q?loses=20after=20one=20section?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Volian.Controls.Library/VlnSpellCheck.cs | 24 +++++++++++++++---- 1 file changed, 20 insertions(+), 4 deletions(-) diff --git a/PROMS/Volian.Controls.Library/VlnSpellCheck.cs b/PROMS/Volian.Controls.Library/VlnSpellCheck.cs index 00261916..e9a71054 100644 --- a/PROMS/Volian.Controls.Library/VlnSpellCheck.cs +++ b/PROMS/Volian.Controls.Library/VlnSpellCheck.cs @@ -27,10 +27,26 @@ namespace Volian.Controls.Library while (MyEditItem.SpellCheckNext()) { ItemInfo next = MyEditItem.MyItemInfo.SearchNext; - if (next == null || !next.IsStep) // B2016-063 check if next is not a step type instead of specifically a section - return; // spell check only current section - MyEditItem.MyStepPanel.MyStepTabPanel.MyDisplayTabControl.OpenItem(next); - } + //C2025-037 Evaluate the way that Spell Check (in step editor sections) is currently closing after one section. + + if (next == null || next.IsProcedure) // B2016-063 check if next is not a step type instead of specifically a section + { + return; // spell check only current procedure + } + + //If it is a word document, find the next non-word document + while (next.HasWordContent) + { + next = next.SearchNext; + + if (next == null || next.IsProcedure) // B2016-063 check if next is not a step type instead of specifically a section + { + return; // spell check only current procedure + } + } + + MyEditItem.MyStepPanel.MyStepTabPanel.MyDisplayTabControl.OpenItem(next); + } MyEditItem.SetFocus(); } From 50977b367fe3d1631a316eb3e968249983f294f2 Mon Sep 17 00:00:00 2001 From: John Jenko Date: Thu, 2 Oct 2025 14:05:04 -0400 Subject: [PATCH 11/47] =?UTF-8?q?F2025-025=20Added=20the=20=E2=80=9CAttach?= =?UTF-8?q?ment=20-=20Single=20Column=20Step=20Editor=E2=80=9D=20section?= =?UTF-8?q?=20type=20to=20the=20Vogtle=20Two=20Column=20format?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- PROMS/Formats/fmtall/VEGP2all.xml | Bin 228334 -> 229308 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/PROMS/Formats/fmtall/VEGP2all.xml b/PROMS/Formats/fmtall/VEGP2all.xml index b433d29fb0c1bc302d7e07848cb943f30d918468..91f4a886b779542957f6bf9d3de8010eb6a332bf 100644 GIT binary patch delta 416 zcmaF&op;ZF-VL*urz>bPb4=&RVdismW5{PHVhCnPWhh`s1hNttN`UMDAf3*T$&d%; zX9CsaG57;Yx76sc+DiVeVGT75Z5+t z<_gwr!Av$Uu&bIrZ$2a2^dC9QVvNSq4Re{xr;BMbi)?prU{+(CzAu!SXZov0j3Uz~ z{9vq`uAs=oF+InNxsBPB!F2k;FlNW;1y0Oy)6c~)Yk*XQO)uzWl-jQ2!|cPfJ;9zi Tk7Ig^7PAP7qrSN_|1bssB^7y| delta 660 zcmdn;Z13a!tT#V!z0xrL}f>C&SLOmnPbSDpHDMsVzg3-* Date: Mon, 6 Oct 2025 14:02:22 -0400 Subject: [PATCH 12/47] C2025-053 Upgrade Ro-Editor / Compare Report / Ro To SQL to 64 bits --- .../Exe/RefObj/CmpRpt/CmpRpt.csproj | 7 +- .../Exe/RefObj/ROEditor/AssemblyInfo.cs | 8 +- .../Exe/RefObj/ROEditor/ROEditor.csproj | 7 +- .../DBEncapsulation/DBEncapsulation.csproj | 6 +- .../Org.Mentalis.Files.csproj | 6 +- .../LibSource/RODBInterface/RODBInterface.cs | 2 +- .../RODBInterface/RODBInterface.csproj | 17 +- .../LibSource/ROFST/ROFST.csproj | 6 +- .../LibSource/ROField/ROFields.csproj | 6 +- .../LibSource/Utils/Utils.csproj | 6 +- .../LibSource/VlnProfiler/VlnProfiler.csproj | 6 +- .../LibSource/VlnStatus/VlnStatus.csproj | 6 +- .../ctlXMLEditLib/ctlXMLEditLib.csproj | 6 +- PROMS/RoAccessToSql/RoAccessToSql.cs | 2 +- PROMS/RoAccessToSql/RoAccessToSql.csproj | 11 + PROMS/VEPROMS/VEPROMS.sln | 66 ++--- PROMS/VEPROMS/VlnStatus64/StatusBarFrm.cs | 232 ------------------ PROMS/VEPROMS/VlnStatus64/StatusBarFrm.resx | 157 ------------ PROMS/VEPROMS/VlnStatus64/StatusMessageFrm.cs | 140 ----------- .../VEPROMS/VlnStatus64/StatusMessageFrm.resx | 139 ----------- PROMS/VEPROMS/VlnStatus64/VlnStatus64.csproj | 58 ----- PROMS/VEPROMS/VlnStatus64/VlnStatusBar.cs | 148 ----------- PROMS/VEPROMS/VlnStatus64/VlnStatusMessage.cs | 79 ------ .../Volian.Print.Library.csproj | 4 +- 24 files changed, 109 insertions(+), 1016 deletions(-) delete mode 100644 PROMS/VEPROMS/VlnStatus64/StatusBarFrm.cs delete mode 100644 PROMS/VEPROMS/VlnStatus64/StatusBarFrm.resx delete mode 100644 PROMS/VEPROMS/VlnStatus64/StatusMessageFrm.cs delete mode 100644 PROMS/VEPROMS/VlnStatus64/StatusMessageFrm.resx delete mode 100644 PROMS/VEPROMS/VlnStatus64/VlnStatus64.csproj delete mode 100644 PROMS/VEPROMS/VlnStatus64/VlnStatusBar.cs delete mode 100644 PROMS/VEPROMS/VlnStatus64/VlnStatusMessage.cs diff --git a/PROMS/ReferencedObjects/Exe/RefObj/CmpRpt/CmpRpt.csproj b/PROMS/ReferencedObjects/Exe/RefObj/CmpRpt/CmpRpt.csproj index 46a1ce81..69547b19 100644 --- a/PROMS/ReferencedObjects/Exe/RefObj/CmpRpt/CmpRpt.csproj +++ b/PROMS/ReferencedObjects/Exe/RefObj/CmpRpt/CmpRpt.csproj @@ -59,7 +59,7 @@ 4 full prompt - x86 + x64 false @@ -85,6 +85,7 @@ none prompt false + x64 true @@ -92,7 +93,7 @@ DEBUG;TRACE 285212672 full - x86 + x64 prompt false @@ -103,7 +104,7 @@ true - x86 + x64 prompt false diff --git a/PROMS/ReferencedObjects/Exe/RefObj/ROEditor/AssemblyInfo.cs b/PROMS/ReferencedObjects/Exe/RefObj/ROEditor/AssemblyInfo.cs index 893433cd..51591879 100644 --- a/PROMS/ReferencedObjects/Exe/RefObj/ROEditor/AssemblyInfo.cs +++ b/PROMS/ReferencedObjects/Exe/RefObj/ROEditor/AssemblyInfo.cs @@ -23,8 +23,8 @@ using System.Runtime.CompilerServices; // Build YYMM (two digit year, two digit month) // Revision DHH (day - no leading zero, two digit hour - military time // -[assembly: AssemblyVersion("2.3.2410.907")] -[assembly: AssemblyFileVersion("2.3.2410.907")] +[assembly: AssemblyVersion("2.3.2510.208")] +[assembly: AssemblyFileVersion("2.3.2510.208")] // // In order to sign your assembly you must specify a key to use. Refer to the @@ -91,6 +91,10 @@ using System.Runtime.CompilerServices; + + + + diff --git a/PROMS/ReferencedObjects/Exe/RefObj/ROEditor/ROEditor.csproj b/PROMS/ReferencedObjects/Exe/RefObj/ROEditor/ROEditor.csproj index 69260b95..37501190 100644 --- a/PROMS/ReferencedObjects/Exe/RefObj/ROEditor/ROEditor.csproj +++ b/PROMS/ReferencedObjects/Exe/RefObj/ROEditor/ROEditor.csproj @@ -7,7 +7,7 @@ true - x86 + x64 prompt false @@ -71,7 +71,7 @@ full prompt false - x86 + x64 bin\Release\ @@ -96,6 +96,7 @@ none prompt false + x64 true @@ -103,7 +104,7 @@ DEBUG;TRACE 285212672 full - x86 + x64 prompt false diff --git a/PROMS/ReferencedObjects/LibSource/DBEncapsulation/DBEncapsulation.csproj b/PROMS/ReferencedObjects/LibSource/DBEncapsulation/DBEncapsulation.csproj index 24c52712..6aeabba3 100644 --- a/PROMS/ReferencedObjects/LibSource/DBEncapsulation/DBEncapsulation.csproj +++ b/PROMS/ReferencedObjects/LibSource/DBEncapsulation/DBEncapsulation.csproj @@ -62,6 +62,7 @@ full prompt false + x64 bin\Release\ @@ -86,6 +87,7 @@ none prompt false + x64 true @@ -93,7 +95,7 @@ DEBUG;TRACE 285212672 full - x86 + x64 prompt false @@ -104,7 +106,7 @@ true - x86 + x64 prompt false diff --git a/PROMS/ReferencedObjects/LibSource/Org.Mentalis.Files/Org.Mentalis.Files.csproj b/PROMS/ReferencedObjects/LibSource/Org.Mentalis.Files/Org.Mentalis.Files.csproj index d214040b..5f3e659f 100644 --- a/PROMS/ReferencedObjects/LibSource/Org.Mentalis.Files/Org.Mentalis.Files.csproj +++ b/PROMS/ReferencedObjects/LibSource/Org.Mentalis.Files/Org.Mentalis.Files.csproj @@ -35,6 +35,7 @@ prompt 4 false + x64 pdbonly @@ -44,13 +45,14 @@ prompt 4 false + x64 true bin\Debug\ DEBUG;TRACE full - x86 + x64 prompt false @@ -59,7 +61,7 @@ TRACE true pdbonly - x86 + x64 prompt false diff --git a/PROMS/ReferencedObjects/LibSource/RODBInterface/RODBInterface.cs b/PROMS/ReferencedObjects/LibSource/RODBInterface/RODBInterface.cs index 2a5d8c8b..e90ede1e 100644 --- a/PROMS/ReferencedObjects/LibSource/RODBInterface/RODBInterface.cs +++ b/PROMS/ReferencedObjects/LibSource/RODBInterface/RODBInterface.cs @@ -409,7 +409,7 @@ namespace RODBInterface GetDbServerInfo(ropath); if (!dbProviderType.Equals((int)DB_PROVIDER.SQL_SERVER)) { - strDatabaseConnectionCommand = "Provider=Microsoft.Jet.OLEDB.4.0;Password=\"\";User ID=Admin;Data Source=" + DataConnectionPath + "\\ROMaster.mdb;Mode=Share Deny None;Extended Properties=\"\";Jet OLEDB:System database=\"\";Jet OLEDB:Registry Path=\"\";Jet OLEDB:Database Password=\"\";Jet OLEDB:Engine Type=5;Jet OLEDB:Database Locking Mode=1;Jet OLEDB:Global Partial Bulk Ops=2;Jet OLEDB:Global Bulk Transactions=1;Jet OLEDB:New Database Password=\"\";Jet OLEDB:Create System Database=False;Jet OLEDB:Encrypt Database=False;Jet OLEDB:Don't Copy Locale on Compact=False;Jet OLEDB:Compact Without Replica Repair=False;Jet OLEDB:SFP=False"; + strDatabaseConnectionCommand = "Provider=Microsoft.ACE.OLEDB.12.0;Password=\"\";User ID=Admin;Data Source=" + DataConnectionPath + "\\ROMaster.mdb;Mode=Share Deny None;Extended Properties=\"\";Jet OLEDB:System database=\"\";Jet OLEDB:Registry Path=\"\";Jet OLEDB:Database Password=\"\";Jet OLEDB:Engine Type=5;Jet OLEDB:Database Locking Mode=1;Jet OLEDB:Global Partial Bulk Ops=2;Jet OLEDB:Global Bulk Transactions=1;Jet OLEDB:New Database Password=\"\";Jet OLEDB:Create System Database=False;Jet OLEDB:Encrypt Database=False;Jet OLEDB:Don't Copy Locale on Compact=False;Jet OLEDB:Compact Without Replica Repair=False;Jet OLEDB:SFP=False"; } } #endregion diff --git a/PROMS/ReferencedObjects/LibSource/RODBInterface/RODBInterface.csproj b/PROMS/ReferencedObjects/LibSource/RODBInterface/RODBInterface.csproj index 12e54462..13f15e3f 100644 --- a/PROMS/ReferencedObjects/LibSource/RODBInterface/RODBInterface.csproj +++ b/PROMS/ReferencedObjects/LibSource/RODBInterface/RODBInterface.csproj @@ -62,6 +62,7 @@ full prompt false + x64 bin\Release\ @@ -86,6 +87,7 @@ none prompt false + x64 true @@ -93,7 +95,7 @@ DEBUG;TRACE 285212672 full - x86 + x64 prompt false @@ -104,7 +106,7 @@ true - x86 + x64 prompt false @@ -171,6 +173,17 @@ VlnStatus + + + {4AC9E1DA-5BAD-4AC7-86E3-24F4CDCECA28} + 12 + 0 + 0 + primary + False + True + + diff --git a/PROMS/ReferencedObjects/LibSource/ROFST/ROFST.csproj b/PROMS/ReferencedObjects/LibSource/ROFST/ROFST.csproj index 75a2ba87..48570cc2 100644 --- a/PROMS/ReferencedObjects/LibSource/ROFST/ROFST.csproj +++ b/PROMS/ReferencedObjects/LibSource/ROFST/ROFST.csproj @@ -62,6 +62,7 @@ full prompt false + x64 bin\Release\ @@ -86,6 +87,7 @@ none prompt false + x64 true @@ -93,7 +95,7 @@ DEBUG;TRACE;Upgrade2005; 285212672 full - x86 + x64 prompt false @@ -104,7 +106,7 @@ true - x86 + x64 prompt false diff --git a/PROMS/ReferencedObjects/LibSource/ROField/ROFields.csproj b/PROMS/ReferencedObjects/LibSource/ROField/ROFields.csproj index 16950805..a4f28cc5 100644 --- a/PROMS/ReferencedObjects/LibSource/ROField/ROFields.csproj +++ b/PROMS/ReferencedObjects/LibSource/ROField/ROFields.csproj @@ -62,6 +62,7 @@ full prompt false + x64 bin\Release\ @@ -86,6 +87,7 @@ none prompt false + x64 true @@ -93,7 +95,7 @@ DEBUG;TRACE 285212672 full - x86 + x64 prompt false @@ -104,7 +106,7 @@ true - x86 + x64 prompt false diff --git a/PROMS/ReferencedObjects/LibSource/Utils/Utils.csproj b/PROMS/ReferencedObjects/LibSource/Utils/Utils.csproj index fee231fd..fc072007 100644 --- a/PROMS/ReferencedObjects/LibSource/Utils/Utils.csproj +++ b/PROMS/ReferencedObjects/LibSource/Utils/Utils.csproj @@ -77,6 +77,7 @@ full prompt false + x64 bin\Release\ @@ -101,6 +102,7 @@ none prompt false + x64 true @@ -108,7 +110,7 @@ DEBUG;TRACE 285212672 full - x86 + x64 prompt false @@ -119,7 +121,7 @@ true - x86 + x64 prompt false diff --git a/PROMS/ReferencedObjects/LibSource/VlnProfiler/VlnProfiler.csproj b/PROMS/ReferencedObjects/LibSource/VlnProfiler/VlnProfiler.csproj index 5c482323..df4f647e 100644 --- a/PROMS/ReferencedObjects/LibSource/VlnProfiler/VlnProfiler.csproj +++ b/PROMS/ReferencedObjects/LibSource/VlnProfiler/VlnProfiler.csproj @@ -7,7 +7,7 @@ true - x86 + x64 prompt false @@ -73,6 +73,7 @@ full prompt false + x64 bin\Release\ @@ -97,6 +98,7 @@ none prompt false + x64 true @@ -104,7 +106,7 @@ DEBUG;TRACE 285212672 full - x86 + x64 prompt false diff --git a/PROMS/ReferencedObjects/LibSource/VlnStatus/VlnStatus.csproj b/PROMS/ReferencedObjects/LibSource/VlnStatus/VlnStatus.csproj index 1b9f33a0..90978560 100644 --- a/PROMS/ReferencedObjects/LibSource/VlnStatus/VlnStatus.csproj +++ b/PROMS/ReferencedObjects/LibSource/VlnStatus/VlnStatus.csproj @@ -62,6 +62,7 @@ full prompt false + x64 bin\Release\ @@ -86,6 +87,7 @@ none prompt false + x64 true @@ -93,7 +95,7 @@ DEBUG;TRACE 285212672 full - x86 + x64 prompt false @@ -104,7 +106,7 @@ true - x86 + x64 prompt false diff --git a/PROMS/ReferencedObjects/LibSource/ctlXMLEditLib/ctlXMLEditLib.csproj b/PROMS/ReferencedObjects/LibSource/ctlXMLEditLib/ctlXMLEditLib.csproj index e5629e60..2c914674 100644 --- a/PROMS/ReferencedObjects/LibSource/ctlXMLEditLib/ctlXMLEditLib.csproj +++ b/PROMS/ReferencedObjects/LibSource/ctlXMLEditLib/ctlXMLEditLib.csproj @@ -62,6 +62,7 @@ full prompt false + x64 bin\Release\ @@ -86,6 +87,7 @@ none prompt false + x64 true @@ -93,7 +95,7 @@ DEBUG;TRACE 285212672 full - x86 + x64 prompt false @@ -104,7 +106,7 @@ true - x86 + x64 prompt false diff --git a/PROMS/RoAccessToSql/RoAccessToSql.cs b/PROMS/RoAccessToSql/RoAccessToSql.cs index 9c2a23e4..afe5a3ae 100644 --- a/PROMS/RoAccessToSql/RoAccessToSql.cs +++ b/PROMS/RoAccessToSql/RoAccessToSql.cs @@ -229,7 +229,7 @@ namespace RoAccessToSql if (sqlConnection.State == ConnectionState.Open) { // now try to open access db: - string strDatabaseConnectionCommand = "Provider=Microsoft.Jet.OLEDB.4.0;Password=\"\";User ID=Admin;Data Source=" + MSAccessPath + "\\ROMaster.mdb;Mode=Share Deny None;Extended Properties=\"\";Jet OLEDB:System database=\"\";Jet OLEDB:Registry Path=\"\";Jet OLEDB:Database Password=\"\";Jet OLEDB:Engine Type=5;Jet OLEDB:Database Locking Mode=1;Jet OLEDB:Global Partial Bulk Ops=2;Jet OLEDB:Global Bulk Transactions=1;Jet OLEDB:New Database Password=\"\";Jet OLEDB:Create System Database=False;Jet OLEDB:Encrypt Database=False;Jet OLEDB:Don't Copy Locale on Compact=False;Jet OLEDB:Compact Without Replica Repair=False;Jet OLEDB:SFP=False"; + string strDatabaseConnectionCommand = "Provider=Microsoft.ACE.OLEDB.12.0;Password=\"\";User ID=Admin;Data Source=" + MSAccessPath + "\\ROMaster.mdb;Mode=Share Deny None;Extended Properties=\"\";Jet OLEDB:System database=\"\";Jet OLEDB:Registry Path=\"\";Jet OLEDB:Database Password=\"\";Jet OLEDB:Engine Type=5;Jet OLEDB:Database Locking Mode=1;Jet OLEDB:Global Partial Bulk Ops=2;Jet OLEDB:Global Bulk Transactions=1;Jet OLEDB:New Database Password=\"\";Jet OLEDB:Create System Database=False;Jet OLEDB:Encrypt Database=False;Jet OLEDB:Don't Copy Locale on Compact=False;Jet OLEDB:Compact Without Replica Repair=False;Jet OLEDB:SFP=False"; using (OleDbConnection accessConnection = new OleDbConnection(strDatabaseConnectionCommand)) { try diff --git a/PROMS/RoAccessToSql/RoAccessToSql.csproj b/PROMS/RoAccessToSql/RoAccessToSql.csproj index 87f2089f..d956be8a 100644 --- a/PROMS/RoAccessToSql/RoAccessToSql.csproj +++ b/PROMS/RoAccessToSql/RoAccessToSql.csproj @@ -100,6 +100,17 @@ + + + {4AC9E1DA-5BAD-4AC7-86E3-24F4CDCECA28} + 12 + 0 + 0 + primary + False + True + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 1.3 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - False - - - Private - - - Private - - - False - - - Private - - - Private - - - False - - - Private - - - Private - - - False - - - (Default) - - - False - - - False - - - 8, 8 - - - True - - - 80 - - - StatusBarFrm - - - True - - - Private - - \ No newline at end of file diff --git a/PROMS/VEPROMS/VlnStatus64/StatusMessageFrm.cs b/PROMS/VEPROMS/VlnStatus64/StatusMessageFrm.cs deleted file mode 100644 index 386d145c..00000000 --- a/PROMS/VEPROMS/VlnStatus64/StatusMessageFrm.cs +++ /dev/null @@ -1,140 +0,0 @@ -/********************************************************************************************* - * Copyright 2002 - Volian Enterprises, Inc. All rights reserved. - * Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - * ------------------------------------------------------------------------------ - * $Workfile: StatusMessageFrm.cs $ $Revision: 3 $ - * $Author: Jsj $ $Date: 5/11/04 9:30a $ - * - * $History: StatusMessageFrm.cs $ - * - * ***************** Version 3 ***************** - * User: Jsj Date: 5/11/04 Time: 9:30a - * Updated in $/LibSource/VlnStatus - * - * ***************** Version 2 ***************** - * User: Jsj Date: 11/26/02 Time: 3:38p - * Updated in $/LibSource/VlnStatus - * Added overbounds check - *********************************************************************************************/ - -using System; -using System.Drawing; -using System.Collections; -using System.ComponentModel; -using System.Windows.Forms; - -namespace VlnStatus -{ - /// - /// Create status message window. - /// - public class StatusMessageFrm : System.Windows.Forms.Form - { - private System.Windows.Forms.Label lblStatMsg; - /// - /// Required designer variable. - /// - private System.ComponentModel.Container components = null; - - public StatusMessageFrm() - { - // - // Required for Windows Form Designer support - // - InitializeComponent(); - } - - public StatusMessageFrm(string StatTitle) - { - // - // Required for Windows Form Designer support - // - InitializeComponent(); - - Text = StatTitle; - } - - /// - /// Clean up any resources being used. - /// - protected override void Dispose( bool disposing ) - { - if( disposing ) - { - if(components != null) - { - components.Dispose(); - } - } - base.Dispose( disposing ); - } - - #region Windows Form Designer generated code - /// - /// Required method for Designer support - do not modify - /// the contents of this method with the code editor. - /// - private void InitializeComponent() - { - this.lblStatMsg = new System.Windows.Forms.Label(); - this.SuspendLayout(); - // - // lblStatMsg - // - this.lblStatMsg.Location = new System.Drawing.Point(19, 20); - this.lblStatMsg.Name = "lblStatMsg"; - this.lblStatMsg.Size = new System.Drawing.Size(420, 81); - this.lblStatMsg.TabIndex = 0; - this.lblStatMsg.Text = "Put Status Message Here"; - this.lblStatMsg.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; - // - // StatusMessageFrm - // - this.AutoScaleBaseSize = new System.Drawing.Size(7, 19); - this.ClientSize = new System.Drawing.Size(457, 117); - this.ControlBox = false; - this.Controls.Add(this.lblStatMsg); - this.Font = new System.Drawing.Font("Tahoma", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((System.Byte)(0))); - this.MaximizeBox = false; - this.MinimizeBox = false; - this.Name = "StatusMessageFrm"; - this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; - this.Text = "Status"; - this.TopMost = true; - this.Load += new System.EventHandler(this.StatusMessageFrm_Load); - this.ResumeLayout(false); - - } - #endregion - - private void StatusMessageFrm_Load(object sender, System.EventArgs e) - { - - } - - public string StatusMessage - { - get - { - return lblStatMsg.Text; - } - set - { - lblStatMsg.Text = value; - lblStatMsg.Refresh(); - } - } - - public string StatusBoxTitle - { - get - { - return Text; - } - set - { - Text = value; - } - } - } -} diff --git a/PROMS/VEPROMS/VlnStatus64/StatusMessageFrm.resx b/PROMS/VEPROMS/VlnStatus64/StatusMessageFrm.resx deleted file mode 100644 index 7edd5b3c..00000000 --- a/PROMS/VEPROMS/VlnStatus64/StatusMessageFrm.resx +++ /dev/null @@ -1,139 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 1.3 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - False - - - Private - - - Private - - - False - - - (Default) - - - False - - - False - - - 8, 8 - - - StatusMessageFrm - - - True - - - 80 - - - True - - - Private - - \ No newline at end of file diff --git a/PROMS/VEPROMS/VlnStatus64/VlnStatus64.csproj b/PROMS/VEPROMS/VlnStatus64/VlnStatus64.csproj deleted file mode 100644 index b0ea1627..00000000 --- a/PROMS/VEPROMS/VlnStatus64/VlnStatus64.csproj +++ /dev/null @@ -1,58 +0,0 @@ - - - - - Debug - AnyCPU - {797DE52C-278C-41D4-8B65-B9CFC02DDCD9} - Library - Properties - VlnStatus64 - VlnStatus64 - v4.8.1 - 512 - true - - - true - full - false - bin\Debug\ - DEBUG;TRACE - prompt - 4 - x64 - - - pdbonly - true - bin\Release\ - TRACE - prompt - 4 - x64 - - - - - - - - - - - - Form - - - Form - - - - - - - - - - \ No newline at end of file diff --git a/PROMS/VEPROMS/VlnStatus64/VlnStatusBar.cs b/PROMS/VEPROMS/VlnStatus64/VlnStatusBar.cs deleted file mode 100644 index a7a4e2cd..00000000 --- a/PROMS/VEPROMS/VlnStatus64/VlnStatusBar.cs +++ /dev/null @@ -1,148 +0,0 @@ -/********************************************************************************************* - * Copyright 2002 - Volian Enterprises, Inc. All rights reserved. - * Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - * ------------------------------------------------------------------------------ - * $Workfile: VlnStatusBar.cs $ $Revision: 4 $ - * $Author: Jsj $ $Date: 11/26/02 4:25p $ - * - * $History: VlnStatusBar.cs $ - * - * ***************** Version 4 ***************** - * User: Jsj Date: 11/26/02 Time: 4:25p - * Updated in $/LibSource/VlnStatus - * fixed problem with counter - * - * ***************** Version 3 ***************** - * User: Jsj Date: 11/26/02 Time: 3:38p - * Updated in $/LibSource/VlnStatus - * Added overbounds check - *********************************************************************************************/ -using System; - -namespace VlnStatus -{ - /// - /// Creates a Status Window with a progression bar control. - /// - /// This class has two constructors. One allows you to pass in the title - /// of the Status Box. The Other provides a default title of "Status". - /// The Status Box Title can also be set/changed via the StatusBoxTitle - /// property. - /// - /// - /// - public class VlnStatusBar - { - StatusBarFrm StatBar; - private int Cnt; - - // Create a status window with the default title of "Status" - public VlnStatusBar() - { - StatBar = new StatusBarFrm(); - StatBar.Show(); - } - - // Create a status window with the passed in title - public VlnStatusBar(string Title) - { - StatBar = new StatusBarFrm(Title); - StatBar.Show(); - } - - // Increament the the status bar by the passed in value. - public void PerformStep(int val) - { -// StatBar.Value = val; -// Cnt = val; - BarValue = val; - StatBar.PerformStep(); - } - - // Increament the the status bar by one - public void PerformStep() - { -// StatBar.Value = StatBar.Value + 1; - Cnt++; - BarValue = Cnt; - StatBar.PerformStep(); - } - - // This property gets or sets the current status bar value. - public int BarValue - { - get - { - return StatBar.Value; - } - set - { - StatBar.Value = value; - Cnt = value; - } - } - - // This property sets or gets the maximum value that the - // BarValue property can be. i.e. when BarValue reaches this - // number, the status bar is completely displayed. - public int BarMax - { - get - { - return StatBar.Maximum; - } - set - { - StatBar.Maximum = value; - } - } - - // This property sets or gets the increamenting value used to - // move the status bar. For example, if set to 5, each tick of - // the status bar represents a value of 5. - public int BarStepValue - { - get - { - return StatBar.Step; - } - set - { - StatBar.Step = value; - } - } - - // This property sets or gets the message above the status bar. - public string StatMsg - { - get - { - return StatBar.StatusMessage; - } - set - { - StatBar.StatusMessage = value; - } - } - - // This property sets or gets the Status Window Title - public string StatusBoxTitle - { - get - { - return StatBar.StatusBoxTitle; - } - set - { - StatBar.StatusBoxTitle = value; - } - } - - public void Dispose() - { - StatBar.Dispose(); - } - - } -} - diff --git a/PROMS/VEPROMS/VlnStatus64/VlnStatusMessage.cs b/PROMS/VEPROMS/VlnStatus64/VlnStatusMessage.cs deleted file mode 100644 index e0221ee8..00000000 --- a/PROMS/VEPROMS/VlnStatus64/VlnStatusMessage.cs +++ /dev/null @@ -1,79 +0,0 @@ -/********************************************************************************************* - * Copyright 2002 - Volian Enterprises, Inc. All rights reserved. - * Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - * ------------------------------------------------------------------------------ - * $Workfile: VlnStatusMessage.cs $ $Revision: 3 $ - * $Author: Jsj $ $Date: 11/26/02 3:38p $ - * - * $History: VlnStatusMessage.cs $ - * - * ***************** Version 3 ***************** - * User: Jsj Date: 11/26/02 Time: 3:38p - * Updated in $/LibSource/VlnStatus - * Added overbounds check - *********************************************************************************************/ - -using System; - -namespace VlnStatus -{ - /// - /// Creates a Status Window to display a status message. - /// - /// This class has two constructors. One allows you to pass in the title - /// of the Status Box. The Other provides a default title of "Status". - /// The Status Box Title can also be set/changed via the StatusBoxTitle - /// property. - /// - /// - public class VlnStatusMessage - { - StatusMessageFrm StatusMessageBox; - - // Create a status window with the default title of "Status" - public VlnStatusMessage() - { - StatusMessageBox = new StatusMessageFrm(); - StatusMessageBox.Show(); - } - - // Create a status window with the passed in title. - public VlnStatusMessage(string StatusBoxTitle) - { - StatusMessageBox = new StatusMessageFrm(StatusBoxTitle); - StatusMessageBox.Show(); - } - - // This property gets or sets the current status message - public string StatusMessage - { - get - { - return StatusMessageBox.StatusMessage; - } - set - { - StatusMessageBox.StatusMessage = value; - } - } - - // This property gets or sets the status box title - public string StatusBoxTitle - { - get - { - return StatusMessageBox.StatusBoxTitle; - } - set - { - StatusMessageBox.StatusBoxTitle = value; - } - } - - public void Dispose() - { - StatusMessageBox.Dispose(); - } - - } -} diff --git a/PROMS/Volian.Print.Library/Volian.Print.Library.csproj b/PROMS/Volian.Print.Library/Volian.Print.Library.csproj index 2f0665a3..d4694ccd 100644 --- a/PROMS/Volian.Print.Library/Volian.Print.Library.csproj +++ b/PROMS/Volian.Print.Library/Volian.Print.Library.csproj @@ -99,8 +99,8 @@ - - ..\VEPROMS\VlnStatus64\bin\Debug\VlnStatus64.dll + + ..\ReferencedObjects\LibSource\VlnStatus\bin\Debug\VlnStatus.dll From 1c766e568c276859518f8e466b0ac0d27b5345c5 Mon Sep 17 00:00:00 2001 From: mschill Date: Mon, 6 Oct 2025 16:01:59 -0400 Subject: [PATCH 13/47] C2025-053 Upgrade RO Editor to 64 bit Adjust build revision and revert AssembloInfo to as-is --- PROMS/AdjustBuildRevision/Program.cs | 4 ++-- .../Exe/RefObj/ROEditor/AssemblyInfo.cs | 10 +++------- 2 files changed, 5 insertions(+), 9 deletions(-) diff --git a/PROMS/AdjustBuildRevision/Program.cs b/PROMS/AdjustBuildRevision/Program.cs index 46f93fe3..73fe118c 100644 --- a/PROMS/AdjustBuildRevision/Program.cs +++ b/PROMS/AdjustBuildRevision/Program.cs @@ -32,9 +32,9 @@ namespace AdjustBuildRevision { // Allow for setting build revision on either proms or the roeditor: if (Directory.GetCurrentDirectory().ToUpper().Contains("REFOBJ")) - outline = Regex.Replace(line, @"([0-9]*)\.([0-9]*)\.([0-9]*)\.([0-9]*)""\)", DateTime.Now.ToString("2.3.yyMM.dHH") + "\")"); + outline = Regex.Replace(line, @"([0-9]*)\.([0-9]*)\.([0-9]*)\.([0-9]*)""\)", DateTime.Now.ToString("2.4.yyMM.dHH") + "\")"); else - outline = Regex.Replace(line, @"([0-9]*)\.([0-9]*)\.([0-9]*)\.([0-9]*)""\)", DateTime.Now.ToString("2.3.yyMM.dHH") + "\")"); + outline = Regex.Replace(line, @"([0-9]*)\.([0-9]*)\.([0-9]*)\.([0-9]*)""\)", DateTime.Now.ToString("2.4.yyMM.dHH") + "\")"); // if (outline != line) // { // Console.WriteLine("Before: '{0}'", line); diff --git a/PROMS/ReferencedObjects/Exe/RefObj/ROEditor/AssemblyInfo.cs b/PROMS/ReferencedObjects/Exe/RefObj/ROEditor/AssemblyInfo.cs index 51591879..f2e65ff6 100644 --- a/PROMS/ReferencedObjects/Exe/RefObj/ROEditor/AssemblyInfo.cs +++ b/PROMS/ReferencedObjects/Exe/RefObj/ROEditor/AssemblyInfo.cs @@ -13,7 +13,7 @@ using System.Runtime.CompilerServices; [assembly: AssemblyProduct("Referenced Objects Editor")] [assembly: AssemblyCopyright("2013")] [assembly: AssemblyTrademark("")] -[assembly: AssemblyCulture("")] +[assembly: AssemblyCulture("")] // // Version information for an assembly consists of the following four values: @@ -23,8 +23,8 @@ using System.Runtime.CompilerServices; // Build YYMM (two digit year, two digit month) // Revision DHH (day - no leading zero, two digit hour - military time // -[assembly: AssemblyVersion("2.3.2510.208")] -[assembly: AssemblyFileVersion("2.3.2510.208")] +[assembly: AssemblyVersion("2.3.2410.907")] +[assembly: AssemblyFileVersion("2.3.2410.907")] // // In order to sign your assembly you must specify a key to use. Refer to the @@ -91,10 +91,6 @@ using System.Runtime.CompilerServices; - - - - From 3f618bc970fb198921955a4ea23d64b2f086eeab Mon Sep 17 00:00:00 2001 From: mschill Date: Mon, 6 Oct 2025 16:07:19 -0400 Subject: [PATCH 14/47] C2025-053 Upgrade RO Editor to 64 bit Remove AssemblyInfo changes --- PROMS/ReferencedObjects/Exe/RefObj/ROEditor/AssemblyInfo.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/PROMS/ReferencedObjects/Exe/RefObj/ROEditor/AssemblyInfo.cs b/PROMS/ReferencedObjects/Exe/RefObj/ROEditor/AssemblyInfo.cs index f2e65ff6..893433cd 100644 --- a/PROMS/ReferencedObjects/Exe/RefObj/ROEditor/AssemblyInfo.cs +++ b/PROMS/ReferencedObjects/Exe/RefObj/ROEditor/AssemblyInfo.cs @@ -13,7 +13,7 @@ using System.Runtime.CompilerServices; [assembly: AssemblyProduct("Referenced Objects Editor")] [assembly: AssemblyCopyright("2013")] [assembly: AssemblyTrademark("")] -[assembly: AssemblyCulture("")] +[assembly: AssemblyCulture("")] // // Version information for an assembly consists of the following four values: From f6e3c72e9c21023c5ba3682fdb221e8488fca753 Mon Sep 17 00:00:00 2001 From: mschill Date: Mon, 6 Oct 2025 16:17:27 -0400 Subject: [PATCH 15/47] C2025-053 Upgrade RO Editor to 64 bit Adjust Build Revision --- PROMS/AdjustBuildRevision/Program.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/PROMS/AdjustBuildRevision/Program.cs b/PROMS/AdjustBuildRevision/Program.cs index 73fe118c..773f3aaf 100644 --- a/PROMS/AdjustBuildRevision/Program.cs +++ b/PROMS/AdjustBuildRevision/Program.cs @@ -34,7 +34,7 @@ namespace AdjustBuildRevision if (Directory.GetCurrentDirectory().ToUpper().Contains("REFOBJ")) outline = Regex.Replace(line, @"([0-9]*)\.([0-9]*)\.([0-9]*)\.([0-9]*)""\)", DateTime.Now.ToString("2.4.yyMM.dHH") + "\")"); else - outline = Regex.Replace(line, @"([0-9]*)\.([0-9]*)\.([0-9]*)\.([0-9]*)""\)", DateTime.Now.ToString("2.4.yyMM.dHH") + "\")"); + outline = Regex.Replace(line, @"([0-9]*)\.([0-9]*)\.([0-9]*)\.([0-9]*)""\)", DateTime.Now.ToString("2.3.yyMM.dHH") + "\")"); // if (outline != line) // { // Console.WriteLine("Before: '{0}'", line); From 091c56ec34a987bd75beaf266310c60fc89f301b Mon Sep 17 00:00:00 2001 From: John Jenko Date: Wed, 8 Oct 2025 13:58:05 -0400 Subject: [PATCH 16/47] F2025-0926 Got Vogtle 3&4 Background formats ready for use. --- PROMS/Formats/fmtall/VEGPBckStpsall.xml | Bin 52936 -> 52778 bytes PROMS/Formats/fmtall/VEGPBckall.xml | Bin 94402 -> 88838 bytes PROMS/Formats/genmacall/VEGPBck.svg | Bin 10888 -> 10828 bytes PROMS/Formats/genmacall/VEGPBckStps.svg | Bin 9628 -> 9568 bytes 4 files changed, 0 insertions(+), 0 deletions(-) diff --git a/PROMS/Formats/fmtall/VEGPBckStpsall.xml b/PROMS/Formats/fmtall/VEGPBckStpsall.xml index 68630929027e3657b7d951baf46cd3b2841a2ede..a6dfb8ef121ddcf4f98af6c5104540337da2c3fc 100644 GIT binary patch delta 452 zcmYk0K}cG09LN9fJ++ec7_LcsNkufxDDgSn+RW;C>LB&X5eROSP#yB%!PAKFu#3=X z-%W&EcuCZMbM*K_by2ab-0Popf)muoj@9$w)NBoK7;IADO}gjalX(oU8?o&*L409FEILzsx8Okb zdxn$Y`%y=^Xu)9amEdABE#>NMXqL=vDqCW!Y#I6UXS7@VZA6wNTKV$L0KRCZk<%J4 zxS1P&DwBE-d#PPV7kv~tleqh9%Afz@^)hoZr$#E;!ga?Xa^`^Jk@#Us2dNrEwAzhq Gb?7hPZm|pi delta 393 zcmZ{d%_{_P7{`Azv%A(dySDYxc*$E^h#g}yShkRZ5}|M)IS?0zIcRH<9GsBUSCUvO z%4^8u;1577JKWSBHcGilayG+R&*7=3&*$?TZV0!V!r3h+Ot3M!=Q^`-vFd@Q+3}HS zq59l2CmzCf)TqUjQ8vdzR8}BY=;$kv5SEd?SR`llU8?B!vmVc8(E@G)dTTQGx8g6F@K5$?fDpo`WU^94gYr|}kx%ZyT} zTQn~#B=zS1y$N-Hl05MBm%kib%!7Nu3vF@|`p67vQ+=|vi20Zgue;?)9?Wqnh7aH2 z@k&T;5e_l00J2^>Qv^?eKBqx_O zUj5`%T)dNmgWOjBtZ|Z--aCp-JL&DYe0%ynpT2z`?ZvWjW>H3w4US+5pTS`-b$>f) zchgS(78^0Ij|PdrT9`XT>F*pQ-{gPsz0^l{Wn zk$+uB#0m*IVFqSFhDqp$6GnaSy_DaGqyBOhOI;qwjs#N>fn`{N@n8M7^RTOW ztfX{n0j*Dq>xMW+<`RbV&54ZB2GawC7=0+BKb3|iuz$cc;9}d|~Hn`|FdEVhElQWKrY<4@s z!??NQScTB^0%OKAljl8^*&KKK0Mq0NFV0OqaGY&(&Vv_V&gKPA7jR9tabpz0u*n2$ zQ-K@HBw5^Ms@%067^J2LJ#7 delta 76 zcmX>T(h<7h8}H;U9=^$!_%tR*2#HNj;8mF%!&d|qy8@TH#J>j2ZW6cw6_cA>Be)I3 K-fSi$CIJA3u^h_) diff --git a/PROMS/Formats/genmacall/VEGPBckStps.svg b/PROMS/Formats/genmacall/VEGPBckStps.svg index f81f5b071bff3ddbcfc3dc7d622048e7a2e67a63..b5638d3bc16290e4eda6f8c8da422cad75b5c258 100644 GIT binary patch delta 48 xcmbQ^{lII(H{QvQ_;e=g@T~#TH^A%<{2;c@ Date: Thu, 9 Oct 2025 10:06:50 -0400 Subject: [PATCH 17/47] B2025-054 Wrong Page Numbers in CAS Summary --- PROMS/Volian.Print.Library/PromsPrinter.cs | 6 +++++ PROMS/Volian.Print.Library/vlnParagraph.cs | 26 +++++++++++++++++----- 2 files changed, 26 insertions(+), 6 deletions(-) diff --git a/PROMS/Volian.Print.Library/PromsPrinter.cs b/PROMS/Volian.Print.Library/PromsPrinter.cs index e1105806..de678a4b 100644 --- a/PROMS/Volian.Print.Library/PromsPrinter.cs +++ b/PROMS/Volian.Print.Library/PromsPrinter.cs @@ -345,6 +345,12 @@ namespace Volian.Print.Library // will skip certain logic if CAS Only or CTS Only public PromsPrinterPrintType PromsPrinterPrintType { get; set; } = PromsPrinterPrintType.Normal; + //B2025-054 Wrong Page Numbers in CAS Summary + // when section title continued and CAS + // Flag for when should build the CAS_CTAS + //to avoid overwriting data + public bool ShouldPrint_CAS_CTAS { get; set; } = true; + public PromsPrinter(ItemInfo myItem, string rev, string watermark, bool debugOutput, bool origPgBrk, string backgroundFolder, bool openPDF, bool overWrite, ChangeBarDefinition cbd, String pdfFile, bool insertBlankPages, bool batchPrint, string prefix, bool saveLinks, int removeTrailngHardReturnsAndManualPageBreaks, string blankPageText, bool didAll, MergedPdf mergedPdf, string watermarkColor, int PrtSectID = -1) { diff --git a/PROMS/Volian.Print.Library/vlnParagraph.cs b/PROMS/Volian.Print.Library/vlnParagraph.cs index 4f0885d1..2f307726 100644 --- a/PROMS/Volian.Print.Library/vlnParagraph.cs +++ b/PROMS/Volian.Print.Library/vlnParagraph.cs @@ -2162,12 +2162,12 @@ namespace Volian.Print.Library //B2025-048 Problem with Printing CAS Steps // skip this if printing CAS or CTAS - was causing it to // skip/overwrite data - if (doSectionTitleContinued && MyPromsPrinter.PromsPrinterPrintType == PromsPrinterPrintType.Normal) + if (doSectionTitleContinued) { vlnParagraph sectContPara; string contMsg = (MyItemInfo.ActiveSection != null) ? MyItemInfo.ActiveSection.MyDocStyle.Continue.SectionTitle.AppendToTitle : ""; // C2018-003 fixed use of getting the active section - // For Calvert, the xoffset will be the highest level sections xoffset (there are metasections, - // don't use their xoffset or the continue message is indented too much) + // For Calvert, the xoffset will be the highest level sections xoffset (there are metasections, + // don't use their xoffset or the continue message is indented too much) if (MyItemInfo.ActiveFormat.PlantFormat.FormatData.PrintData.SpecialCaseCalvert) { float secContinueTabXoff = (float)MyItemInfo.MyDocStyle.Layout.LeftMargin; @@ -2187,6 +2187,12 @@ namespace Volian.Print.Library // get to the correct section for the message, i.e. if on a section, the message should be the parent // section (not the activesection which is myself); if on a step, the message should be the active section ItemInfo sectForCont = MyItemInfo.IsSection && MyItemInfo.MyParent.IsSection ? MyItemInfo.MyParent : MyItemInfo.ActiveSection; + //B2025-054 Wrong Page Numbers in CAS Summary + // when section title continued and CAS + //to avoid overwriting data + // - this will be built at a different call to vlnParagraph + if (MyPromsPrinter.PromsPrinterPrintType != PromsPrinterPrintType.Normal) + MyPromsPrinter.ShouldPrint_CAS_CTAS = false; sectContPara = new vlnParagraph(MyParent.MyParent, cb, sectForCont, MyParent.XOffset, 0, 0, 0, MyParent.MyItemInfo.ActiveFormat, null, (contMsg == null || contMsg == "") ? " (Continued)" : contMsg, 0, false, MyPromsPrinter); if (sectContPara.PartsLeft.Count > 0) { @@ -2197,7 +2203,7 @@ namespace Volian.Print.Library vt.XOffset = secContinueTabXoff; vt.Width = secContinueXoff - secContinueTabXoff; sectContPara.XOffset = secContinueXoff; - if ((wd + 12) > secContinueXoff - secContinueTabXoff) // 12 is 2 characters + if ((wd + 12) > secContinueXoff - secContinueTabXoff) // 12 is 2 characters { float dif = wd + 12 - (secContinueXoff - secContinueTabXoff); vt.Width += dif; @@ -2212,12 +2218,20 @@ namespace Volian.Print.Library } else { + //B2025-054 Wrong Step Numbers + // when section title continued and CAS + //to avoid overwriting data + // - this will be built at a different call to vlnParagraph + if (MyPromsPrinter.PromsPrinterPrintType != PromsPrinterPrintType.Normal) + MyPromsPrinter.ShouldPrint_CAS_CTAS = false; sectContPara = new vlnParagraph(MyParent.MyParent, cb, MyItemInfo.ActiveSection, MyParent.XOffset, 0, 0, 0, MyParent.MyItemInfo.ActiveFormat, null, (contMsg == null || contMsg == "") ? " (Continued)" : contMsg, 0, false, MyPromsPrinter); float mytmpfloat = sectContPara.ParagraphToPdf(cb, yTopMargin, yTopMargin, yBottomMargin); if (sectContPara.SectionContinuePrinted) yPageStart -= sectContPara.Height + SixLinesPerInch; } } + //out of section title section - reset this back to true (default) + MyPromsPrinter.ShouldPrint_CAS_CTAS = true; // see if this hls has footnotes, add to the footnote datastructure for processing at end of page. if (MyItemInfo.IsHigh && MyPageHelper.NotesToFootNotesHLS.ContainsKey(MyItemInfo.ItemID)) AddFootNote(cb); @@ -3596,11 +3610,11 @@ namespace Volian.Print.Library BuildPlacekeeper(parent, itemInfo); // Save step text information to be used to create a Continuous Action Summary - BuildContinuousActionSummary(parent, itemInfo); + if (MyPromsPrinter.ShouldPrint_CAS_CTAS) BuildContinuousActionSummary(parent, itemInfo); // F2022-024 Time Critical Step // Save step text information to be used to create a Time Critical Action Summary - BuildTimeCriticalActionSummary(parent, itemInfo); + if (MyPromsPrinter.ShouldPrint_CAS_CTAS) BuildTimeCriticalActionSummary(parent, itemInfo); if (itemInfo.ActiveFormat.MyStepSectionLayoutData.BoxLeftAdj != null) _MyBoxLeftAdj = float.Parse(itemInfo.ActiveFormat.MyStepSectionLayoutData.BoxLeftAdj); From 3bcaeb214e26c0fe2ec6990c20f8d5c57c6eb318 Mon Sep 17 00:00:00 2001 From: John Jenko Date: Mon, 13 Oct 2025 09:47:29 -0400 Subject: [PATCH 18/47] B2025-055 Corrected the format so that the Unit 4 Effective Date will print on the cover page --- PROMS/Formats/fmtall/VEGPAlrall.xml | Bin 209292 -> 209292 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/PROMS/Formats/fmtall/VEGPAlrall.xml b/PROMS/Formats/fmtall/VEGPAlrall.xml index 49932a6bf0c09c05a64983905e3084f4eb54ed3b..97ce9393af999036eed4c8050bbd414da914b786 100644 GIT binary patch delta 29 lcmeBq%+vFjr=f*$3zJ^#`gG40r$l delta 29 lcmeBq%+vFjr=f*$3zJ^#`c^3}pZS From d2ffcc903ae3bd8087cb15dd043f3f964ec294bd Mon Sep 17 00:00:00 2001 From: mschill Date: Mon, 13 Oct 2025 14:51:51 -0400 Subject: [PATCH 19/47] B2025-057 Issue Copy-Pasting Enhanced Procedures --- PROMS/VEPROMS.CSLA.Library/Extension/ItemInsertExt.cs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/PROMS/VEPROMS.CSLA.Library/Extension/ItemInsertExt.cs b/PROMS/VEPROMS.CSLA.Library/Extension/ItemInsertExt.cs index 5d39a5e0..602b5422 100644 --- a/PROMS/VEPROMS.CSLA.Library/Extension/ItemInsertExt.cs +++ b/PROMS/VEPROMS.CSLA.Library/Extension/ItemInsertExt.cs @@ -1638,7 +1638,7 @@ namespace VEPROMS.CSLA.Library // get the first enhanced section, there may be non-linked sections before first linked section: SectionConfig firstEnhSectionConfig = pastedEnhancedProc.Sections == null ? null : pastedEnhancedProc.Sections[0].MyConfig as SectionConfig; ItemInfo pastedEnhancedCurrentSection = null; - if (firstEnhSectionConfig.MyEnhancedDocuments.Count > 0) pastedEnhancedCurrentSection = pastedEnhancedProc.Sections[0]; + if (firstEnhSectionConfig?.MyEnhancedDocuments.Count > 0) pastedEnhancedCurrentSection = pastedEnhancedProc.Sections[0]; else pastedEnhancedCurrentSection = GetNextEnhancedSection(pastedEnhancedProc.Sections[0]); // newly pasted procedure has sections/steps, need to adjust 'MyEnhancedDocuments' config items to point to correct @@ -1647,7 +1647,7 @@ namespace VEPROMS.CSLA.Library foreach (ItemInfo sourceSect in Sections) { SectionConfig srcCfg = sourceSect.MyConfig as SectionConfig; - if (srcCfg != null && (srcCfg.Section_LnkEnh=="Y" || srcCfg.Section_LnkEnh=="T") && srcCfg.MyEnhancedDocuments != null && srcCfg.MyEnhancedDocuments.Count > 0) + if (srcCfg != null && (srcCfg.Section_LnkEnh != "N") && srcCfg.MyEnhancedDocuments != null && srcCfg.MyEnhancedDocuments.Count > 0) { // use pastedEnhancedCurrentSection to link to: foreach (EnhancedDocument ed in srcCfg.MyEnhancedDocuments) @@ -1664,7 +1664,7 @@ namespace VEPROMS.CSLA.Library enhSectCfg.MyEnhancedDocuments[0].ItemID = sourceSect.ItemID; enhSectCfg.SaveEnhancedDocuments(); pastedEnhancedCurrentSection.SaveConfig(enhSectCfg.ToString()); - if (srcCfg.Section_LnkEnh == "Y") EnhancedSetStepLinks(sourceSect, enhProc.Type); //if steps, do them for this type + if (srcCfg.Section_LnkEnh != "T") EnhancedSetStepLinks(sourceSect, enhProc.Type); //if steps, do them for this type pastedEnhancedCurrentSection = GetNextEnhancedSection(pastedEnhancedCurrentSection); } } From 779c6247cd46fa38e6402fd19990e6d4681f6275 Mon Sep 17 00:00:00 2001 From: John Jenko Date: Thu, 16 Oct 2025 10:59:09 -0400 Subject: [PATCH 20/47] F2025-027 Added cover page PSI information to Vogtle 3&4 background format used to for the linked background steps (VEGPBckStp) --- PROMS/Formats/fmtall/VEGPBckStpsall.xml | Bin 52778 -> 59160 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/PROMS/Formats/fmtall/VEGPBckStpsall.xml b/PROMS/Formats/fmtall/VEGPBckStpsall.xml index a6dfb8ef121ddcf4f98af6c5104540337da2c3fc..8fdafbe29d32a902b5922934c62809adcb61c5d6 100644 GIT binary patch delta 3654 zcmeHKO;1xn6uqQMgg*L8Abd5DigBT&LO*OJK?G?v1S1HoQFjP_G(jM=C>R4<7p}Y; z7ly>8u1s9HaH%mN`V)*Ae}H1*j_A454|v1FK25b7(scUXbmrc3?wmRE-m}N9NAF$F zH)>pAit+cFr~ENc&1%)7;dTJW<~10 zAmZAIDn=o`VEXv;-8SwwT275atP?bbI0>|akW)dpjs(q5-Zt<`eKqg%Hn#7UGe}qf zWIbFE@@jx8`dO`Pda5*kug;&V%p>&{wztv+fY&{rnZoE6uLPaJCxH_+iPg!i$X|04lh_r5#-!3)WX~cr zhZc)4t&)uLx*^ASDT9cVFo+nPu-T-VD2oOWDXT%)=Pqp!_VYB%MT6Lm`Cl1?JtA#e zl{AQ6CuUtVhzP8q{03o1dzxSn|BSM6S!rwecthhpWAoaONIQLf7 z!S~%Ws&CyG&i6gg?mIYIH*4wpTDLVO|1QWMJXfmZouUxAh1bk`=vg;LUQB!6y!r+6 CWMJF? delta 168 zcmbPnj(OD_<_(`X8BHdCh7FZ*qZ#)MPc)60G8EYS_h}VG$P)mY94*J&Ms_vZ973(6$*s) Date: Mon, 20 Oct 2025 13:48:02 -0400 Subject: [PATCH 21/47] C2024-047 Redesign PROMS Security Dialog --- .../dlgManageSecurity.Designer.cs | 759 ++++++++------- .../dlgManageSecurity.cs | 909 +++++++++--------- .../dlgManageSecurity.resx | 22 +- .../Generated/MembershipInfo.cs | 18 + .../ToolStripMenuItemwithValue.cs | 16 + .../Volian.Controls.Library.csproj | 3 + 6 files changed, 944 insertions(+), 783 deletions(-) create mode 100644 PROMS/Volian.Controls.Library/ToolStripMenuItemwithValue.cs diff --git a/PROMS/VEPROMS User Interface/dlgManageSecurity.Designer.cs b/PROMS/VEPROMS User Interface/dlgManageSecurity.Designer.cs index 73cb37bc..3ad446f4 100644 --- a/PROMS/VEPROMS User Interface/dlgManageSecurity.Designer.cs +++ b/PROMS/VEPROMS User Interface/dlgManageSecurity.Designer.cs @@ -28,328 +28,416 @@ namespace VEPROMS /// private void InitializeComponent() { - this.components = new System.ComponentModel.Container(); - this.tcSecurity = new System.Windows.Forms.TabControl(); - this.tpGroupUsers = new System.Windows.Forms.TabPage(); - this.pnlMembers = new System.Windows.Forms.Panel(); - this.lstMembers = new System.Windows.Forms.ListBox(); - this.lblMembers = new System.Windows.Forms.Label(); - this.label6 = new System.Windows.Forms.Label(); - this.tvFolders = new System.Windows.Forms.TreeView(); - this.cmFolders = new System.Windows.Forms.ContextMenuStrip(this.components); - this.createSetAdministratorGroupToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.createWriterGroupToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.createROEToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.createReviewerGroupToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.lstUsers = new System.Windows.Forms.ListBox(); - this.label5 = new System.Windows.Forms.Label(); - this.label3 = new System.Windows.Forms.Label(); - this.lstGroups = new System.Windows.Forms.ListBox(); - this.tpDefault = new System.Windows.Forms.TabPage(); - this.label8 = new System.Windows.Forms.Label(); - this.pnlGroups = new System.Windows.Forms.Panel(); - this.cmMembers = new System.Windows.Forms.ContextMenuStrip(this.components); - this.removeMemberToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.cmUsers = new System.Windows.Forms.ContextMenuStrip(this.components); - this.addUserToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.editUserToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.deleteUserToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.addMemberToolStripMenuItemUser = new System.Windows.Forms.ToolStripMenuItem(); - this.cmGroups = new System.Windows.Forms.ContextMenuStrip(this.components); - this.deleteGroupToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.addMemberToolStripMenuItemGroup = new System.Windows.Forms.ToolStripMenuItem(); - this.tcSecurity.SuspendLayout(); - this.tpGroupUsers.SuspendLayout(); - this.pnlMembers.SuspendLayout(); - this.cmFolders.SuspendLayout(); - this.tpDefault.SuspendLayout(); - this.cmMembers.SuspendLayout(); - this.cmUsers.SuspendLayout(); - this.cmGroups.SuspendLayout(); - this.SuspendLayout(); - // - // tcSecurity - // - this.tcSecurity.Controls.Add(this.tpGroupUsers); - this.tcSecurity.Controls.Add(this.tpDefault); - this.tcSecurity.Dock = System.Windows.Forms.DockStyle.Fill; - this.tcSecurity.Location = new System.Drawing.Point(0, 0); - this.tcSecurity.Name = "tcSecurity"; - this.tcSecurity.SelectedIndex = 0; - this.tcSecurity.Size = new System.Drawing.Size(784, 564); - this.tcSecurity.TabIndex = 0; - // - // tpGroupUsers - // - this.tpGroupUsers.BackColor = System.Drawing.SystemColors.ButtonFace; - this.tpGroupUsers.Controls.Add(this.pnlMembers); - this.tpGroupUsers.Controls.Add(this.label6); - this.tpGroupUsers.Controls.Add(this.tvFolders); - this.tpGroupUsers.Controls.Add(this.lstUsers); - this.tpGroupUsers.Controls.Add(this.label5); - this.tpGroupUsers.Controls.Add(this.label3); - this.tpGroupUsers.Controls.Add(this.lstGroups); - this.tpGroupUsers.Location = new System.Drawing.Point(4, 22); - this.tpGroupUsers.Name = "tpGroupUsers"; - this.tpGroupUsers.Padding = new System.Windows.Forms.Padding(3); - this.tpGroupUsers.Size = new System.Drawing.Size(776, 538); - this.tpGroupUsers.TabIndex = 2; - this.tpGroupUsers.Text = "Folders, Groups and Users"; - // - // pnlMembers - // - this.pnlMembers.Controls.Add(this.lstMembers); - this.pnlMembers.Controls.Add(this.lblMembers); - this.pnlMembers.Location = new System.Drawing.Point(384, 304); - this.pnlMembers.Name = "pnlMembers"; - this.pnlMembers.Size = new System.Drawing.Size(386, 232); - this.pnlMembers.TabIndex = 12; - // - // lstMembers - // - this.lstMembers.Dock = System.Windows.Forms.DockStyle.Fill; - this.lstMembers.FormattingEnabled = true; - this.lstMembers.Location = new System.Drawing.Point(0, 19); - this.lstMembers.Name = "lstMembers"; - this.lstMembers.SelectionMode = System.Windows.Forms.SelectionMode.MultiExtended; - this.lstMembers.Size = new System.Drawing.Size(386, 212); - this.lstMembers.TabIndex = 10; - this.lstMembers.MouseUp += new System.Windows.Forms.MouseEventHandler(this.lstMembers_MouseUp); - // - // lblMembers - // - this.lblMembers.Dock = System.Windows.Forms.DockStyle.Top; - this.lblMembers.Location = new System.Drawing.Point(0, 0); - this.lblMembers.Name = "lblMembers"; - this.lblMembers.Size = new System.Drawing.Size(386, 19); - this.lblMembers.TabIndex = 2; - this.lblMembers.Text = "Members"; - // - // label6 - // - this.label6.AutoSize = true; - this.label6.Location = new System.Drawing.Point(8, 5); - this.label6.Name = "label6"; - this.label6.Size = new System.Drawing.Size(41, 13); - this.label6.TabIndex = 7; - this.label6.Text = "Folders"; - // - // tvFolders - // - this.tvFolders.ContextMenuStrip = this.cmFolders; - this.tvFolders.HideSelection = false; - this.tvFolders.Location = new System.Drawing.Point(8, 21); - this.tvFolders.Name = "tvFolders"; - this.tvFolders.Size = new System.Drawing.Size(370, 511); - this.tvFolders.TabIndex = 6; - this.tvFolders.NodeMouseClick += new System.Windows.Forms.TreeNodeMouseClickEventHandler(this.tvFolders_NodeMouseClick); - // - // cmFolders - // - this.cmFolders.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.components = new System.ComponentModel.Container(); + this.tcSecurity = new System.Windows.Forms.TabControl(); + this.tpManageFolders = new System.Windows.Forms.TabPage(); + this.label6 = new System.Windows.Forms.Label(); + this.tvFolders = new System.Windows.Forms.TreeView(); + this.cmFolders = new System.Windows.Forms.ContextMenuStrip(this.components); + this.createSetAdministratorGroupToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.createWriterGroupToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.createROEToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.createReviewerGroupToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.tpManageGroups = new System.Windows.Forms.TabPage(); + this.btnAddMember = new System.Windows.Forms.Button(); + this.btnRemoveMember = new System.Windows.Forms.Button(); + this.label1 = new System.Windows.Forms.Label(); + this.lbNonMembers = new System.Windows.Forms.Label(); + this.btnDeleteGroup = new System.Windows.Forms.Button(); + this.cbGroupSelection = new System.Windows.Forms.ComboBox(); + this.lstNonMembers = new System.Windows.Forms.ListBox(); + this.pnlMembers = new System.Windows.Forms.Panel(); + this.lstMembers = new System.Windows.Forms.ListBox(); + this.lblMembers = new System.Windows.Forms.Label(); + this.label3 = new System.Windows.Forms.Label(); + this.tpManageUsers = new System.Windows.Forms.TabPage(); + this.lblUserGroups = new System.Windows.Forms.Label(); + this.lstGroups = new System.Windows.Forms.ListBox(); + this.lstUsers = new System.Windows.Forms.ListBox(); + this.lblUsers = new System.Windows.Forms.Label(); + this.tpDefault = new System.Windows.Forms.TabPage(); + this.label8 = new System.Windows.Forms.Label(); + this.pnlGroups = new System.Windows.Forms.Panel(); + this.cmMembers = new System.Windows.Forms.ContextMenuStrip(this.components); + this.removeMemberToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.cmUsers = new System.Windows.Forms.ContextMenuStrip(this.components); + this.addUserToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.editUserToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.deleteUserToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.tt = new System.Windows.Forms.ToolTip(this.components); + this.tcSecurity.SuspendLayout(); + this.tpManageFolders.SuspendLayout(); + this.cmFolders.SuspendLayout(); + this.tpManageGroups.SuspendLayout(); + this.pnlMembers.SuspendLayout(); + this.tpManageUsers.SuspendLayout(); + this.tpDefault.SuspendLayout(); + this.cmUsers.SuspendLayout(); + this.SuspendLayout(); + // + // tcSecurity + // + this.tcSecurity.Controls.Add(this.tpManageFolders); + this.tcSecurity.Controls.Add(this.tpManageGroups); + this.tcSecurity.Controls.Add(this.tpManageUsers); + this.tcSecurity.Controls.Add(this.tpDefault); + this.tcSecurity.Dock = System.Windows.Forms.DockStyle.Fill; + this.tcSecurity.Location = new System.Drawing.Point(0, 0); + this.tcSecurity.Name = "tcSecurity"; + this.tcSecurity.SelectedIndex = 0; + this.tcSecurity.Size = new System.Drawing.Size(784, 564); + this.tcSecurity.TabIndex = 0; + this.tcSecurity.SelectedIndexChanged += new System.EventHandler(this.changedTab); + // + // tpManageFolders + // + this.tpManageFolders.BackColor = System.Drawing.SystemColors.ButtonFace; + this.tpManageFolders.Controls.Add(this.label6); + this.tpManageFolders.Controls.Add(this.tvFolders); + this.tpManageFolders.Location = new System.Drawing.Point(4, 22); + this.tpManageFolders.Name = "tpManageFolders"; + this.tpManageFolders.Padding = new System.Windows.Forms.Padding(3); + this.tpManageFolders.Size = new System.Drawing.Size(776, 538); + this.tpManageFolders.TabIndex = 2; + this.tpManageFolders.Text = "Manage Folders / Add Groups"; + // + // label6 + // + this.label6.AutoSize = true; + this.label6.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.75F, ((System.Drawing.FontStyle)((System.Drawing.FontStyle.Bold | System.Drawing.FontStyle.Underline))), System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label6.Location = new System.Drawing.Point(8, 5); + this.label6.Name = "label6"; + this.label6.Size = new System.Drawing.Size(55, 15); + this.label6.TabIndex = 7; + this.label6.Text = "Folders"; + // + // tvFolders + // + this.tvFolders.ContextMenuStrip = this.cmFolders; + this.tvFolders.Dock = System.Windows.Forms.DockStyle.Bottom; + this.tvFolders.HideSelection = false; + this.tvFolders.Location = new System.Drawing.Point(3, 32); + this.tvFolders.Name = "tvFolders"; + this.tvFolders.Size = new System.Drawing.Size(770, 503); + this.tvFolders.TabIndex = 6; + this.tvFolders.NodeMouseClick += new System.Windows.Forms.TreeNodeMouseClickEventHandler(this.tvFolders_NodeMouseClick); + // + // cmFolders + // + this.cmFolders.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { this.createSetAdministratorGroupToolStripMenuItem, this.createWriterGroupToolStripMenuItem, this.createROEToolStripMenuItem, this.createReviewerGroupToolStripMenuItem}); - this.cmFolders.Name = "cmFolders"; - this.cmFolders.Size = new System.Drawing.Size(249, 92); - // - // createSetAdministratorGroupToolStripMenuItem - // - this.createSetAdministratorGroupToolStripMenuItem.Name = "createSetAdministratorGroupToolStripMenuItem"; - this.createSetAdministratorGroupToolStripMenuItem.Size = new System.Drawing.Size(248, 22); - this.createSetAdministratorGroupToolStripMenuItem.Text = "Create a Set Administrator Group"; - this.createSetAdministratorGroupToolStripMenuItem.Click += new System.EventHandler(this.createGroupMenuItem); - // - // createWriterGroupToolStripMenuItem - // - this.createWriterGroupToolStripMenuItem.Name = "createWriterGroupToolStripMenuItem"; - this.createWriterGroupToolStripMenuItem.Size = new System.Drawing.Size(248, 22); - this.createWriterGroupToolStripMenuItem.Text = "Create a Writer Group"; - this.createWriterGroupToolStripMenuItem.Click += new System.EventHandler(this.createGroupMenuItem); - // - // createROEToolStripMenuItem - // - this.createROEToolStripMenuItem.Name = "createROEToolStripMenuItem"; - this.createROEToolStripMenuItem.Size = new System.Drawing.Size(248, 22); - this.createROEToolStripMenuItem.Text = "Create a RO Editor Group"; - this.createROEToolStripMenuItem.Click += new System.EventHandler(this.createGroupMenuItem); - // - // createReviewerGroupToolStripMenuItem - // - this.createReviewerGroupToolStripMenuItem.Name = "createReviewerGroupToolStripMenuItem"; - this.createReviewerGroupToolStripMenuItem.Size = new System.Drawing.Size(248, 22); - this.createReviewerGroupToolStripMenuItem.Text = "Create a Reviewer Group"; - this.createReviewerGroupToolStripMenuItem.Click += new System.EventHandler(this.createGroupMenuItem); - // - // lstUsers - // - this.lstUsers.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) - | System.Windows.Forms.AnchorStyles.Left))); - this.lstUsers.FormattingEnabled = true; - this.lstUsers.Location = new System.Drawing.Point(630, 21); - this.lstUsers.Name = "lstUsers"; - this.lstUsers.SelectionMode = System.Windows.Forms.SelectionMode.MultiExtended; - this.lstUsers.Size = new System.Drawing.Size(140, 277); - this.lstUsers.TabIndex = 5; - this.lstUsers.MouseUp += new System.Windows.Forms.MouseEventHandler(this.lstUsers_MouseUp); - this.lstUsers.SelectedIndexChanged += new System.EventHandler(this.lstUsers_SelectedIndexChanged); - // - // label5 - // - this.label5.AutoSize = true; - this.label5.Location = new System.Drawing.Point(630, 6); - this.label5.Name = "label5"; - this.label5.Size = new System.Drawing.Size(34, 13); - this.label5.TabIndex = 4; - this.label5.Text = "Users"; - // - // label3 - // - this.label3.AutoSize = true; - this.label3.Location = new System.Drawing.Point(381, 6); - this.label3.Name = "label3"; - this.label3.Size = new System.Drawing.Size(41, 13); - this.label3.TabIndex = 1; - this.label3.Text = "Groups"; - // - // lstGroups - // - this.lstGroups.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) - | System.Windows.Forms.AnchorStyles.Left))); - this.lstGroups.FormattingEnabled = true; - this.lstGroups.Location = new System.Drawing.Point(384, 21); - this.lstGroups.Name = "lstGroups"; - this.lstGroups.SelectionMode = System.Windows.Forms.SelectionMode.MultiExtended; - this.lstGroups.Size = new System.Drawing.Size(240, 277); - this.lstGroups.TabIndex = 0; - this.lstGroups.MouseUp += new System.Windows.Forms.MouseEventHandler(this.lstGroups_MouseUp); - this.lstGroups.SelectedIndexChanged += new System.EventHandler(this.lstGroups_SelectedIndexChanged); - // - // tpDefault - // - this.tpDefault.BackColor = System.Drawing.SystemColors.ButtonFace; - this.tpDefault.Controls.Add(this.label8); - this.tpDefault.Controls.Add(this.pnlGroups); - this.tpDefault.Location = new System.Drawing.Point(4, 22); - this.tpDefault.Name = "tpDefault"; - this.tpDefault.Padding = new System.Windows.Forms.Padding(3); - this.tpDefault.Size = new System.Drawing.Size(776, 538); - this.tpDefault.TabIndex = 0; - this.tpDefault.Text = "Default Group"; - // - // label8 - // - this.label8.Location = new System.Drawing.Point(308, 6); - this.label8.Name = "label8"; - this.label8.Size = new System.Drawing.Size(460, 172); - this.label8.TabIndex = 5; - this.label8.Text = "label8"; - // - // pnlGroups - // - this.pnlGroups.AutoScroll = true; - this.pnlGroups.Location = new System.Drawing.Point(3, 6); - this.pnlGroups.Name = "pnlGroups"; - this.pnlGroups.Size = new System.Drawing.Size(299, 526); - this.pnlGroups.TabIndex = 4; - // - // cmMembers - // - this.cmMembers.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { - this.removeMemberToolStripMenuItem}); - this.cmMembers.Name = "cmGroupMembers"; - this.cmMembers.Size = new System.Drawing.Size(166, 26); - // - // removeMemberToolStripMenuItem - // - this.removeMemberToolStripMenuItem.Name = "removeMemberToolStripMenuItem"; - this.removeMemberToolStripMenuItem.Size = new System.Drawing.Size(165, 22); - this.removeMemberToolStripMenuItem.Text = "Remove Member"; - this.removeMemberToolStripMenuItem.Click += new System.EventHandler(this.removeMemberToolStripMenuItem_Click); - // - // cmUsers - // - this.cmUsers.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.cmFolders.Name = "cmFolders"; + this.cmFolders.Size = new System.Drawing.Size(249, 92); + // + // createSetAdministratorGroupToolStripMenuItem + // + this.createSetAdministratorGroupToolStripMenuItem.Name = "createSetAdministratorGroupToolStripMenuItem"; + this.createSetAdministratorGroupToolStripMenuItem.Size = new System.Drawing.Size(248, 22); + this.createSetAdministratorGroupToolStripMenuItem.Text = "Create a Set Administrator Group"; + this.createSetAdministratorGroupToolStripMenuItem.Click += new System.EventHandler(this.createGroupMenuItem); + // + // createWriterGroupToolStripMenuItem + // + this.createWriterGroupToolStripMenuItem.Name = "createWriterGroupToolStripMenuItem"; + this.createWriterGroupToolStripMenuItem.Size = new System.Drawing.Size(248, 22); + this.createWriterGroupToolStripMenuItem.Text = "Create a Writer Group"; + this.createWriterGroupToolStripMenuItem.Click += new System.EventHandler(this.createGroupMenuItem); + // + // createROEToolStripMenuItem + // + this.createROEToolStripMenuItem.Name = "createROEToolStripMenuItem"; + this.createROEToolStripMenuItem.Size = new System.Drawing.Size(248, 22); + this.createROEToolStripMenuItem.Text = "Create a RO Editor Group"; + this.createROEToolStripMenuItem.Click += new System.EventHandler(this.createGroupMenuItem); + // + // createReviewerGroupToolStripMenuItem + // + this.createReviewerGroupToolStripMenuItem.Name = "createReviewerGroupToolStripMenuItem"; + this.createReviewerGroupToolStripMenuItem.Size = new System.Drawing.Size(248, 22); + this.createReviewerGroupToolStripMenuItem.Text = "Create a Reviewer Group"; + this.createReviewerGroupToolStripMenuItem.Click += new System.EventHandler(this.createGroupMenuItem); + // + // tpManageGroups + // + this.tpManageGroups.Controls.Add(this.btnAddMember); + this.tpManageGroups.Controls.Add(this.btnRemoveMember); + this.tpManageGroups.Controls.Add(this.label1); + this.tpManageGroups.Controls.Add(this.lbNonMembers); + this.tpManageGroups.Controls.Add(this.btnDeleteGroup); + this.tpManageGroups.Controls.Add(this.cbGroupSelection); + this.tpManageGroups.Controls.Add(this.lstNonMembers); + this.tpManageGroups.Controls.Add(this.pnlMembers); + this.tpManageGroups.Controls.Add(this.label3); + this.tpManageGroups.Location = new System.Drawing.Point(4, 22); + this.tpManageGroups.Name = "tpManageGroups"; + this.tpManageGroups.Padding = new System.Windows.Forms.Padding(3); + this.tpManageGroups.Size = new System.Drawing.Size(776, 538); + this.tpManageGroups.TabIndex = 3; + this.tpManageGroups.Text = "Manage Groups"; + this.tpManageGroups.UseVisualStyleBackColor = true; + // + // btnAddMember + // + this.btnAddMember.Location = new System.Drawing.Point(337, 190); + this.btnAddMember.Name = "btnAddMember"; + this.btnAddMember.Size = new System.Drawing.Size(36, 29); + this.btnAddMember.TabIndex = 19; + this.btnAddMember.Text = "<<"; + this.tt.SetToolTip(this.btnAddMember, "Add User as Members of Group"); + this.btnAddMember.UseVisualStyleBackColor = true; + this.btnAddMember.Click += new System.EventHandler(this.addMember_Click); + // + // btnRemoveMember + // + this.btnRemoveMember.Location = new System.Drawing.Point(337, 254); + this.btnRemoveMember.Name = "btnRemoveMember"; + this.btnRemoveMember.Size = new System.Drawing.Size(36, 29); + this.btnRemoveMember.TabIndex = 18; + this.btnRemoveMember.Text = ">>"; + this.tt.SetToolTip(this.btnRemoveMember, "Remove User From Group"); + this.btnRemoveMember.UseVisualStyleBackColor = true; + this.btnRemoveMember.Click += new System.EventHandler(this.removeMember_Click); + // + // label1 + // + this.label1.AutoSize = true; + this.label1.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.75F, ((System.Drawing.FontStyle)((System.Drawing.FontStyle.Bold | System.Drawing.FontStyle.Underline))), System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label1.Location = new System.Drawing.Point(386, 42); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(97, 15); + this.label1.TabIndex = 17; + this.label1.Text = "Non Members"; + // + // lbNonMembers + // + this.lbNonMembers.AutoSize = true; + this.lbNonMembers.Location = new System.Drawing.Point(386, 42); + this.lbNonMembers.Name = "lbNonMembers"; + this.lbNonMembers.Size = new System.Drawing.Size(73, 13); + this.lbNonMembers.TabIndex = 17; + this.lbNonMembers.Text = "Non Members"; + // + // btnDeleteGroup + // + this.btnDeleteGroup.ForeColor = System.Drawing.Color.Red; + this.btnDeleteGroup.Location = new System.Drawing.Point(668, 12); + this.btnDeleteGroup.Name = "btnDeleteGroup"; + this.btnDeleteGroup.Size = new System.Drawing.Size(89, 23); + this.btnDeleteGroup.TabIndex = 16; + this.btnDeleteGroup.Text = "Delete Group"; + this.btnDeleteGroup.UseVisualStyleBackColor = true; + this.btnDeleteGroup.Click += new System.EventHandler(this.deleteGroup_Click); + // + // cbGroupSelection + // + this.cbGroupSelection.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + this.cbGroupSelection.FormattingEnabled = true; + this.cbGroupSelection.Location = new System.Drawing.Point(50, 9); + this.cbGroupSelection.Name = "cbGroupSelection"; + this.cbGroupSelection.Size = new System.Drawing.Size(272, 21); + this.cbGroupSelection.TabIndex = 15; + this.cbGroupSelection.SelectedIndexChanged += new System.EventHandler(this.cbGroupSelection_SelectedIndexChanged); + // + // lstNonMembers + // + this.lstNonMembers.FormattingEnabled = true; + this.lstNonMembers.Location = new System.Drawing.Point(389, 61); + this.lstNonMembers.Name = "lstNonMembers"; + this.lstNonMembers.Size = new System.Drawing.Size(316, 472); + this.lstNonMembers.TabIndex = 14; + // + // pnlMembers + // + this.pnlMembers.Controls.Add(this.lstMembers); + this.pnlMembers.Controls.Add(this.lblMembers); + this.pnlMembers.Location = new System.Drawing.Point(6, 42); + this.pnlMembers.Name = "pnlMembers"; + this.pnlMembers.Size = new System.Drawing.Size(316, 493); + this.pnlMembers.TabIndex = 13; + // + // lstMembers + // + this.lstMembers.Dock = System.Windows.Forms.DockStyle.Fill; + this.lstMembers.FormattingEnabled = true; + this.lstMembers.Location = new System.Drawing.Point(0, 19); + this.lstMembers.Name = "lstMembers"; + this.lstMembers.Size = new System.Drawing.Size(316, 474); + this.lstMembers.TabIndex = 10; + // + // lblMembers + // + this.lblMembers.Dock = System.Windows.Forms.DockStyle.Top; + this.lblMembers.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.75F, ((System.Drawing.FontStyle)((System.Drawing.FontStyle.Bold | System.Drawing.FontStyle.Underline))), System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.lblMembers.Location = new System.Drawing.Point(0, 0); + this.lblMembers.Name = "lblMembers"; + this.lblMembers.Size = new System.Drawing.Size(316, 19); + this.lblMembers.TabIndex = 2; + this.lblMembers.Text = "Selected Group Users"; + // + // label3 + // + this.label3.AutoSize = true; + this.label3.Location = new System.Drawing.Point(3, 12); + this.label3.Name = "label3"; + this.label3.Size = new System.Drawing.Size(39, 13); + this.label3.TabIndex = 3; + this.label3.Text = "Group:"; + // + // tpManageUsers + // + this.tpManageUsers.Controls.Add(this.lblUserGroups); + this.tpManageUsers.Controls.Add(this.lstGroups); + this.tpManageUsers.Controls.Add(this.lstUsers); + this.tpManageUsers.Controls.Add(this.lblUsers); + this.tpManageUsers.Location = new System.Drawing.Point(4, 22); + this.tpManageUsers.Name = "tpManageUsers"; + this.tpManageUsers.Size = new System.Drawing.Size(776, 538); + this.tpManageUsers.TabIndex = 4; + this.tpManageUsers.Text = "Manage Users"; + this.tpManageUsers.UseVisualStyleBackColor = true; + // + // lblUserGroups + // + this.lblUserGroups.AutoSize = true; + this.lblUserGroups.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.75F, ((System.Drawing.FontStyle)((System.Drawing.FontStyle.Bold | System.Drawing.FontStyle.Underline))), System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.lblUserGroups.Location = new System.Drawing.Point(268, 11); + this.lblUserGroups.Name = "lblUserGroups"; + this.lblUserGroups.Size = new System.Drawing.Size(225, 15); + this.lblUserGroups.TabIndex = 9; + this.lblUserGroups.Text = "Groups That User Is a Member Of:"; + // + // lstGroups + // + this.lstGroups.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left))); + this.lstGroups.FormattingEnabled = true; + this.lstGroups.Location = new System.Drawing.Point(271, 36); + this.lstGroups.Name = "lstGroups"; + this.lstGroups.SelectionMode = System.Windows.Forms.SelectionMode.MultiExtended; + this.lstGroups.Size = new System.Drawing.Size(502, 498); + this.lstGroups.TabIndex = 8; + this.lstGroups.MouseUp += new System.Windows.Forms.MouseEventHandler(this.lstGroups_MouseUp); + // + // lstUsers + // + this.lstUsers.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left))); + this.lstUsers.FormattingEnabled = true; + this.lstUsers.Location = new System.Drawing.Point(8, 36); + this.lstUsers.Name = "lstUsers"; + this.lstUsers.SelectionMode = System.Windows.Forms.SelectionMode.MultiExtended; + this.lstUsers.Size = new System.Drawing.Size(217, 498); + this.lstUsers.TabIndex = 7; + this.lstUsers.SelectedIndexChanged += new System.EventHandler(this.lstUsers_SelectedIndexChanged); + this.lstUsers.MouseUp += new System.Windows.Forms.MouseEventHandler(this.lstUsers_MouseUp); + // + // lblUsers + // + this.lblUsers.AutoSize = true; + this.lblUsers.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.75F, ((System.Drawing.FontStyle)((System.Drawing.FontStyle.Bold | System.Drawing.FontStyle.Underline))), System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.lblUsers.Location = new System.Drawing.Point(8, 11); + this.lblUsers.Name = "lblUsers"; + this.lblUsers.Size = new System.Drawing.Size(44, 15); + this.lblUsers.TabIndex = 6; + this.lblUsers.Text = "Users"; + // + // tpDefault + // + this.tpDefault.BackColor = System.Drawing.SystemColors.ButtonFace; + this.tpDefault.Controls.Add(this.label8); + this.tpDefault.Controls.Add(this.pnlGroups); + this.tpDefault.Location = new System.Drawing.Point(4, 22); + this.tpDefault.Name = "tpDefault"; + this.tpDefault.Padding = new System.Windows.Forms.Padding(3); + this.tpDefault.Size = new System.Drawing.Size(776, 538); + this.tpDefault.TabIndex = 0; + this.tpDefault.Text = "Default Group"; + // + // label8 + // + this.label8.Location = new System.Drawing.Point(308, 6); + this.label8.Name = "label8"; + this.label8.Size = new System.Drawing.Size(460, 172); + this.label8.TabIndex = 5; + this.label8.Text = "label8"; + // + // pnlGroups + // + this.pnlGroups.AutoScroll = true; + this.pnlGroups.Location = new System.Drawing.Point(3, 6); + this.pnlGroups.Name = "pnlGroups"; + this.pnlGroups.Size = new System.Drawing.Size(299, 526); + this.pnlGroups.TabIndex = 4; + // + // cmMembers + // + this.cmMembers.Name = "cmGroupMembers"; + this.cmMembers.Size = new System.Drawing.Size(61, 4); + // + // removeMemberToolStripMenuItem + // + this.removeMemberToolStripMenuItem.Name = "removeMemberToolStripMenuItem"; + this.removeMemberToolStripMenuItem.Size = new System.Drawing.Size(165, 22); + this.removeMemberToolStripMenuItem.Text = "Remove Member"; + this.removeMemberToolStripMenuItem.Click += new System.EventHandler(this.removeMemberToolStripMenuItem_Click); + // + // cmUsers + // + this.cmUsers.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { this.addUserToolStripMenuItem, this.editUserToolStripMenuItem, - this.deleteUserToolStripMenuItem, - this.addMemberToolStripMenuItemUser}); - this.cmUsers.Name = "cmUsers"; - this.cmUsers.Size = new System.Drawing.Size(153, 114); - // - // addUserToolStripMenuItem - // - this.addUserToolStripMenuItem.Name = "addUserToolStripMenuItem"; - this.addUserToolStripMenuItem.Size = new System.Drawing.Size(152, 22); - this.addUserToolStripMenuItem.Text = "Add User"; - this.addUserToolStripMenuItem.Click += new System.EventHandler(this.addUserToolStripMenuItem_Click); - // - // editUserToolStripMenuItem - // - this.editUserToolStripMenuItem.Name = "editUserToolStripMenuItem"; - this.editUserToolStripMenuItem.Size = new System.Drawing.Size(152, 22); - this.editUserToolStripMenuItem.Text = "Edit User"; - this.editUserToolStripMenuItem.Click += new System.EventHandler(this.editUserToolStripMenuItem_Click); - // - // deleteUserToolStripMenuItem - // - this.deleteUserToolStripMenuItem.Name = "deleteUserToolStripMenuItem"; - this.deleteUserToolStripMenuItem.Size = new System.Drawing.Size(152, 22); - this.deleteUserToolStripMenuItem.Text = "Delete User"; - this.deleteUserToolStripMenuItem.Click += new System.EventHandler(this.deleteUserToolStripMenuItem_Click); - // - // addMemberToolStripMenuItemUser - // - this.addMemberToolStripMenuItemUser.Name = "addMemberToolStripMenuItemUser"; - this.addMemberToolStripMenuItemUser.Size = new System.Drawing.Size(152, 22); - this.addMemberToolStripMenuItemUser.Text = "Add Member"; - this.addMemberToolStripMenuItemUser.Click += new System.EventHandler(this.addMemberToolStripMenuItem_Click); - // - // cmGroups - // - this.cmGroups.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { - this.deleteGroupToolStripMenuItem, - this.addMemberToolStripMenuItemGroup}); - this.cmGroups.Name = "cmGroups"; - this.cmGroups.Size = new System.Drawing.Size(145, 48); - // - // deleteGroupToolStripMenuItem - // - this.deleteGroupToolStripMenuItem.Name = "deleteGroupToolStripMenuItem"; - this.deleteGroupToolStripMenuItem.Size = new System.Drawing.Size(144, 22); - this.deleteGroupToolStripMenuItem.Text = "Delete Group"; - this.deleteGroupToolStripMenuItem.Click += new System.EventHandler(this.deleteGroupToolStripMenuItem_Click); - // - // addMemberToolStripMenuItemGroup - // - this.addMemberToolStripMenuItemGroup.Name = "addMemberToolStripMenuItemGroup"; - this.addMemberToolStripMenuItemGroup.Size = new System.Drawing.Size(144, 22); - this.addMemberToolStripMenuItemGroup.Text = "Add Member"; - this.addMemberToolStripMenuItemGroup.Click += new System.EventHandler(this.addMemberToolStripMenuItem_Click); - // - // dlgManageSecurity - // - this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None; - this.ClientSize = new System.Drawing.Size(784, 564); - this.Controls.Add(this.tcSecurity); - this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog; - this.MaximizeBox = false; - this.MinimizeBox = false; - this.Name = "dlgManageSecurity"; - this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent; - this.Text = "Manage Security"; - this.Load += new System.EventHandler(this.dlgManageSecurity_Load); - this.tcSecurity.ResumeLayout(false); - this.tpGroupUsers.ResumeLayout(false); - this.tpGroupUsers.PerformLayout(); - this.pnlMembers.ResumeLayout(false); - this.cmFolders.ResumeLayout(false); - this.tpDefault.ResumeLayout(false); - this.cmMembers.ResumeLayout(false); - this.cmUsers.ResumeLayout(false); - this.cmGroups.ResumeLayout(false); - this.ResumeLayout(false); + this.deleteUserToolStripMenuItem}); + this.cmUsers.Name = "cmUsers"; + this.cmUsers.Size = new System.Drawing.Size(145, 92); + // + // addUserToolStripMenuItem + // + this.addUserToolStripMenuItem.Name = "addUserToolStripMenuItem"; + this.addUserToolStripMenuItem.Size = new System.Drawing.Size(144, 22); + this.addUserToolStripMenuItem.Text = "Add User"; + this.addUserToolStripMenuItem.Click += new System.EventHandler(this.addUserToolStripMenuItem_Click); + // + // editUserToolStripMenuItem + // + this.editUserToolStripMenuItem.Name = "editUserToolStripMenuItem"; + this.editUserToolStripMenuItem.Size = new System.Drawing.Size(144, 22); + this.editUserToolStripMenuItem.Text = "Edit User"; + this.editUserToolStripMenuItem.Click += new System.EventHandler(this.editUserToolStripMenuItem_Click); + // + // deleteUserToolStripMenuItem + // + this.deleteUserToolStripMenuItem.Name = "deleteUserToolStripMenuItem"; + this.deleteUserToolStripMenuItem.Size = new System.Drawing.Size(144, 22); + this.deleteUserToolStripMenuItem.Text = "Delete User"; + this.deleteUserToolStripMenuItem.Click += new System.EventHandler(this.deleteUserToolStripMenuItem_Click); + // + // dlgManageSecurity + // + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None; + this.ClientSize = new System.Drawing.Size(784, 564); + this.Controls.Add(this.tcSecurity); + this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog; + this.MaximizeBox = false; + this.MinimizeBox = false; + this.Name = "dlgManageSecurity"; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent; + this.Text = "Manage Security"; + this.Load += new System.EventHandler(this.dlgManageSecurity_Load); + this.tcSecurity.ResumeLayout(false); + this.tpManageFolders.ResumeLayout(false); + this.tpManageFolders.PerformLayout(); + this.cmFolders.ResumeLayout(false); + this.tpManageGroups.ResumeLayout(false); + this.tpManageGroups.PerformLayout(); + this.pnlMembers.ResumeLayout(false); + this.tpManageUsers.ResumeLayout(false); + this.tpManageUsers.PerformLayout(); + this.tpDefault.ResumeLayout(false); + this.cmUsers.ResumeLayout(false); + this.ResumeLayout(false); } @@ -357,20 +445,14 @@ namespace VEPROMS private System.Windows.Forms.TabControl tcSecurity; private System.Windows.Forms.TabPage tpDefault; - private System.Windows.Forms.TabPage tpGroupUsers; - private System.Windows.Forms.ListBox lstGroups; - private System.Windows.Forms.Label lblMembers; - private System.Windows.Forms.Label label3; - private System.Windows.Forms.ContextMenuStrip cmGroups; - private System.Windows.Forms.ListBox lstUsers; - private System.Windows.Forms.Label label5; + private System.Windows.Forms.TabPage tpManageFolders; private System.Windows.Forms.ContextMenuStrip cmUsers; private System.Windows.Forms.ToolStripMenuItem addUserToolStripMenuItem; private System.Windows.Forms.ToolStripMenuItem editUserToolStripMenuItem; private System.Windows.Forms.ToolStripMenuItem deleteUserToolStripMenuItem; - private System.Windows.Forms.ContextMenuStrip cmMembers; - private System.Windows.Forms.ToolStripMenuItem removeMemberToolStripMenuItem; - private System.Windows.Forms.Label label6; + private System.Windows.Forms.ContextMenuStrip cmMembers; + private System.Windows.Forms.ToolStripMenuItem removeMemberToolStripMenuItem; + private System.Windows.Forms.Label label6; private System.Windows.Forms.TreeView tvFolders; private System.Windows.Forms.ContextMenuStrip cmFolders; private System.Windows.Forms.ToolStripMenuItem createSetAdministratorGroupToolStripMenuItem; @@ -379,10 +461,23 @@ namespace VEPROMS private System.Windows.Forms.ToolStripMenuItem createReviewerGroupToolStripMenuItem; private System.Windows.Forms.Panel pnlGroups; private System.Windows.Forms.Label label8; - private System.Windows.Forms.ToolStripMenuItem deleteGroupToolStripMenuItem; - private System.Windows.Forms.Panel pnlMembers; - private System.Windows.Forms.ListBox lstMembers; - private System.Windows.Forms.ToolStripMenuItem addMemberToolStripMenuItemUser; - private System.Windows.Forms.ToolStripMenuItem addMemberToolStripMenuItemGroup; - } + private System.Windows.Forms.TabPage tpManageGroups; + private System.Windows.Forms.TabPage tpManageUsers; + private System.Windows.Forms.Panel pnlMembers; + private System.Windows.Forms.ListBox lstMembers; + private System.Windows.Forms.Label lblMembers; + private System.Windows.Forms.ListBox lstUsers; + private System.Windows.Forms.Label lblUsers; + private System.Windows.Forms.Label label3; + private System.Windows.Forms.ComboBox cbGroupSelection; + private System.Windows.Forms.ListBox lstNonMembers; + private System.Windows.Forms.Button btnDeleteGroup; + private System.Windows.Forms.Label lbNonMembers; + private System.Windows.Forms.ListBox lstGroups; + private System.Windows.Forms.Button btnAddMember; + private System.Windows.Forms.Button btnRemoveMember; + private System.Windows.Forms.ToolTip tt; + private System.Windows.Forms.Label label1; + private System.Windows.Forms.Label lblUserGroups; + } } \ No newline at end of file diff --git a/PROMS/VEPROMS User Interface/dlgManageSecurity.cs b/PROMS/VEPROMS User Interface/dlgManageSecurity.cs index defb3a4d..e8fce203 100644 --- a/PROMS/VEPROMS User Interface/dlgManageSecurity.cs +++ b/PROMS/VEPROMS User Interface/dlgManageSecurity.cs @@ -7,30 +7,491 @@ using System.Text; using System.Windows.Forms; using VEPROMS.CSLA.Library; using Volian.Base.Library; +using Volian.Controls.Library; +using System.Linq; namespace VEPROMS { + //C2024-047 Redesign PROMS Security Dialog public partial class dlgManageSecurity : Form { #region Log4Net private static readonly log4net.ILog _MyLog = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); #endregion + + #region Main Form / Shared Code private GroupInfoList myGroupInfoList; private UserInfoList myUserInfoList; private List myMembershipInfoList; private Folder myFolder; + public dlgManageSecurity() { InitializeComponent(); } private void dlgManageSecurity_Load(object sender, EventArgs e) { + //load all folders myFolder = Folder.Get(1); - SetupSecurity(); - SetupGroups(); + + //Default to Users Tab + tcSecurity.SelectedIndex = 2; } + + //This is called when the Index Changes for main tab Control + //it loads info for the current tab + private void changedTab(object sender, EventArgs e) + { + LoadRefreshGroupUsers(); + + switch (tcSecurity.SelectedIndex) + { + //Manage Folders + case 0: + SetupFolderOptions(); + break; + //Manage Groups + case 1: + SetupGroups(); + break; + //Manage Users (note that this is the default) + case 2: + SetupUserOptions(); + break; + //Default Options tab + case 3: + SetupDefaultGroupOptions(); + break; + } + } + //Loads a refreshed list of Groups and Users + private void LoadRefreshGroupUsers() + { + GroupInfoList.Reset(); + myGroupInfoList = GroupInfoList.Get(); + UserInfoList.Reset(); + myUserInfoList = UserInfoList.Get(); + } + #endregion + + #region Manage Folders + //Sets up Folders + private void SetupFolderOptions() + { + if (tvFolders.Nodes.Count == 0) + { + FolderInfo fi = FolderInfo.Get(1); + LoadChildFolders(fi, null); + } + } + //loads child folders in tree view + private void LoadChildFolders(FolderInfo fi, TreeNode tn) + { + if (tn == null) + { + tn = tvFolders.Nodes.Add(fi.Name); + tn.Tag = fi; + } + else + { + tn = tn.Nodes.Add(fi.Name); + tn.Tag = fi; + } + if (fi.ChildFolderCount > 0) + { + foreach (FolderInfo fic in fi.SortedChildFolders) + { + LoadChildFolders(fic, tn); + } + } + } + //Handles Creating a New Group + private void createGroupMenuItem(object sender, EventArgs e) + { + try + { + ToolStripDropDownItem tsddi = sender as ToolStripDropDownItem; + TreeNode tn = tvFolders.SelectedNode; + FolderInfo fi = tn.Tag as FolderInfo; + AddNewGroup(tsddi.Text, fi); + } + catch (Exception ex) + { + _MyLog.Warn("createGroupMenuItem", ex); + } + } + private void AddNewGroup(string txt, FolderInfo fi) + { + txt = txt.Replace("Create", "").Replace(" a ", "").Replace("Group", "").Trim(); + RoleInfoList ril = RoleInfoList.Get(); + // B2022-080: cannot add a new group in Proms security. if the sql database's 'Roles' table was not initialized with the default roles, such as Set Administrator, + // Writer, Reviewer, RO Editor, the Adding of new groups won't work. Databases should have this loaded by default. + // Promsfixes has queries that insert these, but only gets run if there are no assignments (see commands under --define Roles) + if (ril == null || ril.Count < 2) + { + MessageBox.Show("Roles table is missing entries.\r\nPlease contact Volian to create other groups.", "Cannot create groups", MessageBoxButtons.OK, MessageBoxIcon.Warning); + return; + } + + foreach (var ri in ril.Where(ri => ri.Name == txt)) + { + string gin = string.Format("{0}s - {1}", ri.Name, fi.Name); + if (!myGroupInfoList.Any(gi => gi.GroupName == gin)) + { + Group group = Group.MakeGroup(gin, null, null); + Assignment.MakeAssignment(group, Role.Get(ri.RID), Folder.Get(fi.FolderID), null); + } + } + + LoadRefreshGroupUsers(); + } + private void tvFolders_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e) + { + tvFolders.SelectedNode = e.Node; + } + + #endregion + + #region Manage Groups + //Sets up Group Options private void SetupGroups() + { + cbGroupSelection.Items.Clear(); + foreach (GroupInfo gi in myGroupInfoList) + cbGroupSelection.Items.Add(gi.GroupName); + cbGroupSelection.SelectedIndex = 0; + } + + private void cbGroupSelection_SelectedIndexChanged(object sender, EventArgs e) => updateMembershipLists(); + + //Updates the lists of members / nonMembers + private void updateMembershipLists() + { + myMembershipInfoList = new List(); + if (cbGroupSelection.SelectedIndex > -1) + { + GroupInfo gi = myGroupInfoList[cbGroupSelection.SelectedIndex]; + gi.RefreshGroupMemberships(); + if (gi.GroupMembershipCount > 0) + myMembershipInfoList.AddRange(gi.GroupMemberships.Where(mi => mi.EndDate == null || mi.EndDate == string.Empty).OrderBy(x => x.MyUserUserID)); + } + lstMembers.DataSource = myMembershipInfoList; + lstMembers.ValueMember = "UID"; + lstMembers.DisplayMember = "MyUserUserID"; + + //set NonMembers to Users that are not in Members + lstNonMembers.DataSource = myUserInfoList.Select(x => x.UserID).Except(myMembershipInfoList.Select(x => x.MyUser.UserID)).ToList(); + } + + //Add a Member to a Group + private void addMember_Click(object sender, EventArgs e) + { + int groupIndex = cbGroupSelection.SelectedIndex; + 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, ""); + updateMembershipLists(); + lstNonMembers.SelectedIndex = -1; + + int index = lstMembers.FindString(selectedUserID); + lstMembers.SetSelected(index, true); + } + + //Remove a Member From a Group + private void removeMember_Click(object sender, EventArgs e) + { + if (lstMembers.SelectedIndex > -1) + { + MembershipInfo mi = (MembershipInfo)lstMembers.SelectedItem; + string selectedUserID = mi.MyUserUserID; + string msg = "Are you sure you want to remove this Group Member?"; + if (MessageBox.Show(this, msg, "Confirm Group Member Removal", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question) == DialogResult.Yes) + { + if (mi.MyGroup.GroupName == "Administrators" && mi.MyGroup.GroupMemberships.Count(mm => mm.EndDate == null || mm.EndDate == string.Empty) == 1) + { + MessageBox.Show("You must have at least 1 user assigned to the Administrators group", "One Administrator Required", MessageBoxButtons.OK, MessageBoxIcon.Warning); + return; + } + Membership m = Membership.Get(mi.UGID); + m.EndDate = DateTime.Now.ToShortDateString(); + m.Save(); + updateMembershipLists(); + lstMembers.SelectedIndex = -1; + lstNonMembers.SelectedItem = selectedUserID; + } + } + } + + //Deletes the Currently Selected Group + private void deleteGroup_Click(object sender, EventArgs e) + { + if (cbGroupSelection.SelectedIndex < 0) + { + MessageBox.Show("You must select a group to delete", "No Group Selected", MessageBoxButtons.OK, MessageBoxIcon.Warning); + return; + } + GroupInfo gi = myGroupInfoList[cbGroupSelection.SelectedIndex]; + if(myFolder.FolderConfig.Security_Group == gi.GID) + { + MessageBox.Show("Cannot Delete Default Group", "Attempt to Delete Default", MessageBoxButtons.OK, MessageBoxIcon.Warning); + return; + } + bool deleteOK = true; + if (gi.GroupMembershipCount > 0 && gi.GroupMemberships.Any(mi => mi.EndDate == null || mi.EndDate == string.Empty)) + deleteOK = false; + if (!deleteOK) + { + MessageBox.Show("There are still users who are members of this group. You need to delete all members in order to delete this group.", "Group Has Members", MessageBoxButtons.OK, MessageBoxIcon.Warning); + return; + } + if (MessageBox.Show("Are you sure you want to delete this group?", "Confirm Deleting Group", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question) == DialogResult.Yes) + { + Group.Delete(gi.GID); + LoadRefreshGroupUsers(); + SetupGroups(); + } + } + + #endregion + + #region Manage Users + + //Sets up UserOptions + private void SetupUserOptions() + { + lstUsers.Items.Clear(); + foreach (UserInfo ui in myUserInfoList) + lstUsers.Items.Add(ui.UserID); + lstUsers.SelectedIndex = -1; + lstGroups.DataSource = null; + } + + #region Manage Users - User Options + + //Build Membership list based on selected user + private void lstUsers_SelectedIndexChanged(object sender, EventArgs e) + { + myMembershipInfoList = new List(); + if (lstUsers.SelectedIndex > -1) + { + UserInfo ui = myUserInfoList[lstUsers.SelectedIndex]; + if (ui.UserMembershipCount > 0) + { + myMembershipInfoList.AddRange(ui.UserMemberships.Where(mi => mi.EndDate == null || mi.EndDate == string.Empty)); + } + } + + lstGroups.DataSource = myMembershipInfoList; + lstGroups.ValueMember = "UGID"; + lstGroups.DisplayMember = "MyGroupName"; + } + + //Select User and set up Mouse Click Menus based on + //where click in User Box + private void lstUsers_MouseUp(object sender, MouseEventArgs e) + { + if (e.Button == MouseButtons.Right) + { + int k = lstUsers.IndexFromPoint(e.Location); + if (k >= 0) + { + lstUsers.SelectedIndex = k; + editUserToolStripMenuItem.Visible = deleteUserToolStripMenuItem.Visible = true; + } + else + { + addUserToolStripMenuItem.Visible = true; + editUserToolStripMenuItem.Visible = deleteUserToolStripMenuItem.Visible = false; + } + + cmUsers.Show(lstUsers, e.Location); + } + else if (e.Button == MouseButtons.Left) + { + int k = lstUsers.IndexFromPoint(e.Location); + if (k >= 0) + { + lstUsers.SelectedIndex = k; + } + } + } + + //Adds a new User + private void addUserToolStripMenuItem_Click(object sender, EventArgs e) + { + User u = User.MakeUser("[Enter New UserID]", "", "", "", "", "", "", "", "", "", "", DateTime.Now, ""); + frmManageUser frm = new frmManageUser("add"); + frm.MyUser = u; + if (frm.ShowDialog(this) == DialogResult.OK) + { + u = frm.MyUser; + u.Save(); + Membership.MakeMembership(u, Group.Get(myFolder.FolderConfig.Security_Group), "", ""); + + //Update the User list to reflect the added user + LoadRefreshGroupUsers(); + SetupUserOptions(); + lstUsers.SelectedItem = u.UserID; + } + else + { + u.Delete(); + } + } + + //Edit a User's details + private void editUserToolStripMenuItem_Click(object sender, EventArgs e) + { + if (lstUsers.SelectedIndex == -1) + { + MessageBox.Show("You must select a user to edit", "No User Selected", MessageBoxButtons.OK, MessageBoxIcon.Warning); + return; + } + UserInfo ui = myUserInfoList[lstUsers.SelectedIndex]; + using (User u = User.Get(ui.UID)) + { + frmManageUser frm = new frmManageUser("edit"); + frm.MyUser = u; + if (frm.ShowDialog(this) == DialogResult.OK) + { + frm.MyUser.Save(); + + //Update the User list to reflect the edited user + //this is done in case the UserID is updated so the list updates to reflect that + LoadRefreshGroupUsers(); + SetupUserOptions(); + lstUsers.SelectedItem = u.UserID; + } + } + } + + //Delete a User + private void deleteUserToolStripMenuItem_Click(object sender, EventArgs e) + { + if (lstUsers.SelectedIndex == -1) + { + MessageBox.Show("You must select a user to delete", "No User Selected", MessageBoxButtons.OK, MessageBoxIcon.Warning); + return; + } + UserInfo ui = myUserInfoList[lstUsers.SelectedIndex]; + SessionInfoList sil = SessionInfoList.Get(); + foreach (SessionInfo si in sil) + { + if (si.UserID == ui.UserID && (si.DTSEnd == null)) + { + MessageBox.Show("The user selected has an active session. You may not delete the user at this time.", "User Active Session", MessageBoxButtons.OK, MessageBoxIcon.Warning); + return; + } + } + int nummemberships = ui.UserMemberships.Count(mi => mi.EndDate == null || mi.EndDate == string.Empty); + string mem_text = nummemberships > 0 ? "\r\nNote that this will remove all memberships that this user has." : ""; + if (MessageBox.Show($"Are you sure you want to delete this user?{mem_text}", "Confirm Deleting User", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question) == DialogResult.Yes) + { + foreach (MembershipInfo minfo in ui.UserMemberships.Where(mi => mi.EndDate == null || mi.EndDate == string.Empty)) + { + Membership m = Membership.Get(minfo.UGID); + m.EndDate = DateTime.Now.ToShortDateString(); + m.Save(); + } + + User.Delete(ui.UID); + + //Update the User list to reflect the deleted user + LoadRefreshGroupUsers(); + SetupUserOptions(); + lstUsers.SelectedIndex = -1; + lstGroups.DataSource = null; + } + } + + #endregion + + #region Manage Users - Member Options + + //Adds Context Menu for when a Group is selected + private void lstGroups_MouseUp(object sender, MouseEventArgs e) + { + cmMembers.Items.Clear(); + lstGroups.SelectedIndex = -1; + + if (e.Button == MouseButtons.Right) + { + int k = lstGroups.IndexFromPoint(e.Location); + if (k >= 0) + { + lstGroups.SelectedIndex = k; + cmMembers.Items.Add(this.removeMemberToolStripMenuItem); + + } + + var groupsCanAddTo = myGroupInfoList.Select(x => new { x.GroupName, x.GID }).Except(myMembershipInfoList.Select(x => new { x.MyGroup.GroupName, x.GID })); + foreach (var possiblegroup in groupsCanAddTo) + { + ToolStripMenuItemwithValue AddToMenuItem = new ToolStripMenuItemwithValue($"Add as Member to Group: {possiblegroup.GroupName}", possiblegroup.GID); + AddToMenuItem.Click += addMemberToolStripMenuItem_Click; + cmMembers.Items.Add(AddToMenuItem); + } + + cmMembers.Show(lstGroups, e.Location); + + } + else if (e.Button == MouseButtons.Left) + { + int k = lstGroups.IndexFromPoint(e.Location); + if (k >= 0) + { + lstGroups.SelectedIndex = k; + } + } + } + + //Adds a User to a Group + private void addMemberToolStripMenuItem_Click(object sender, EventArgs e) + { + ToolStripMenuItemwithValue item = (ToolStripMenuItemwithValue)sender; + int userIndex = lstUsers.SelectedIndex; + UserInfo ui = myUserInfoList[userIndex]; + + Membership.MakeMembership(User.Get(ui.UID), Group.Get((int) item.Value), null, ""); + + //Update the Group list to reflect the added group + LoadRefreshGroupUsers(); + lstUsers_SelectedIndexChanged(sender, e); + } + + //Removes a User from a Group + private void removeMemberToolStripMenuItem_Click(object sender, EventArgs e) + { + MembershipInfo mi = (MembershipInfo)lstGroups.SelectedItem; + string msg = "Are you sure you want to remove this Group Member?"; + if (MessageBox.Show(this, msg, "Confirm Group Member Removal", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question) == DialogResult.Yes) + { + if (mi.MyGroup.GroupName == "Administrators" && mi.MyGroup.GroupMemberships.Count(mm => mm.EndDate == null || mm.EndDate == string.Empty) == 1) + { + MessageBox.Show("You must have at least 1 user assigned to the Administrators group", "One Administrator Required", MessageBoxButtons.OK, MessageBoxIcon.Warning); + return; + } + Membership m = Membership.Get(mi.UGID); + m.EndDate = DateTime.Now.ToShortDateString(); + m.Save(); + + //Update the Group list to reflect the removed group + LoadRefreshGroupUsers(); + lstUsers_SelectedIndexChanged(sender, e); + } + } + + #endregion + + #endregion + + #region Default Options + //Sets up Default Group options for Default Tab + private void SetupDefaultGroupOptions() { pnlGroups.Controls.Clear(); foreach (GroupInfo gi in myGroupInfoList) @@ -56,6 +517,7 @@ namespace VEPROMS } } } + //Handles changing the default group private void rb_CheckedChanged(object sender, EventArgs e) { RadioButton rb = sender as RadioButton; @@ -64,446 +526,7 @@ namespace VEPROMS myFolder.FolderConfig.Security_Group = gi.GID; myFolder.Save(); } - private void SetupSecurity() - { - if (tvFolders.Nodes.Count == 0) - { - FolderInfo fi = FolderInfo.Get(1); - LoadChildFolders(fi, null); - } - lstMembers.Items.Clear(); - lstUsers.Items.Clear(); - lstGroups.Items.Clear(); - GroupInfoList.Reset(); - UserInfoList.Reset(); - myGroupInfoList = GroupInfoList.Get(); - myUserInfoList = UserInfoList.Get(); - foreach (GroupInfo gi in myGroupInfoList) - lstGroups.Items.Add(gi.GroupName); - lstGroups.SelectedIndex = 0; - foreach (UserInfo ui in myUserInfoList) - lstUsers.Items.Add(ui.UserID); - lstGroups.SelectedIndex = -1; - lstUsers.SelectedIndex = -1; - } - private void LoadChildFolders(FolderInfo fi, TreeNode tn) - { - if (tn == null) - { - tn = tvFolders.Nodes.Add(fi.Name); - tn.Tag = fi; - } - else - { - tn = tn.Nodes.Add(fi.Name); - tn.Tag = fi; - } - if (fi.ChildFolderCount > 0) - { - foreach (FolderInfo fic in fi.SortedChildFolders) - { - LoadChildFolders(fic, tn); - } - } - } - private void lstGroups_SelectedIndexChanged(object sender, EventArgs e) - { - lblMembers.Text = "Selected Group Users"; - myMembershipInfoList = new List(); - lstMembers.Items.Clear(); - if (lstGroups.SelectedIndex > -1) - { - GroupInfo gi = myGroupInfoList[lstGroups.SelectedIndex]; - if (gi.GroupMembershipCount > 0) - foreach (MembershipInfo mi in gi.GroupMemberships) - { - if (mi.EndDate == null || mi.EndDate == string.Empty) - { - myMembershipInfoList.Add(mi); - lstMembers.Items.Add(mi.MyUser.UserID); - } - } - } - } - private void addMemberToolStripMenuItem_Click(object sender, EventArgs e) - { - int groupIndex = lstGroups.SelectedIndex; - int userIndex = lstUsers.SelectedIndex; - GroupInfo gi = myGroupInfoList[groupIndex]; - UserInfo ui = myUserInfoList[userIndex]; - Membership.MakeMembership(User.Get(ui.UID), Group.Get(gi.GID), null, ""); - SetupSecurity(); - if ((sender as ToolStripMenuItem).Name.EndsWith("Group")) - { - lstUsers.SelectedIndex = userIndex; - lstGroups.SelectedIndex = groupIndex; - } - else - { - lstGroups.SelectedIndex = groupIndex; - lstUsers.SelectedIndex = userIndex; - } - } - private void removeMemberToolStripMenuItem_Click(object sender, EventArgs e) - { - MembershipInfo mi = myMembershipInfoList[lstMembers.SelectedIndex]; - string msg = "Are you sure you want to remove this Group Member?"; - if (MessageBox.Show(this, msg, "Confirm Group Member Removal", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question) == DialogResult.Yes) - { - int groupIndex = lstGroups.SelectedIndex; - int userIndex = lstUsers.SelectedIndex; - if (mi.MyGroup.GroupName == "Administrators") - { - int k = 0; - foreach(MembershipInfo mm in mi.MyGroup.GroupMemberships) - if(mm.EndDate == null || mm.EndDate == string.Empty) - k++; - if (k == 1) - { - MessageBox.Show("You must have at least 1 user assigned to the Adminstrators group", "One Administrator Required", MessageBoxButtons.OK, MessageBoxIcon.Warning); - return; - } - } - Membership m = Membership.Get(mi.UGID); - m.EndDate = DateTime.Now.ToShortDateString(); - m.Save(); - SetupSecurity(); - lstGroups.SelectedIndex = groupIndex; - lstUsers.SelectedIndex = userIndex; - } - // foreach (int gg in lstGroups.SelectedIndices) - // { - // GroupInfo gi = myGroupInfoList[gg]; - // if (gi.GroupName == "Administrators" && gi.GroupMembershipCount == 1) - // { - // MessageBox.Show("You must have at least 1 user assigned to the Adminstrators group", "Can Not Delete User", MessageBoxButtons.OK, MessageBoxIcon.Warning); - // return; - // } - // foreach (MembershipInfo mi in gi.GroupMemberships) - // { - // foreach (int mm in lstGroupUsers.SelectedIndices) - // { - // MembershipInfo mig = myMembershipInfoList[mm]; - // if (mi.MyUser.UID == mig.MyUser.UID) - // { - // Membership m = Membership.Get(mi.UGID); - // m.EndDate = DateTime.Now.ToShortDateString(); - // m.Save(); - // } - // } - // } - // } - // SetupSecurity(); - //} - } - private void addUserToolStripMenuItem_Click(object sender, EventArgs e) - { - User u = User.MakeUser("[Enter New UserID]","", "", "", "", "", "", "", "", "", "",DateTime.Now,""); - frmManageUser frm = new frmManageUser("add"); - frm.MyUser = u; - if (frm.ShowDialog(this) == DialogResult.OK) - { - u = frm.MyUser; - u.Save(); - Membership.MakeMembership(u, Group.Get(myFolder.FolderConfig.Security_Group), "", ""); - SetupSecurity(); - } - else - { - u.Delete(); - } - } - private void editUserToolStripMenuItem_Click(object sender, EventArgs e) - { - if (lstUsers.SelectedIndex == -1) - { - MessageBox.Show("You must select a user to edit", "No User Selected", MessageBoxButtons.OK, MessageBoxIcon.Warning); - return; - } - UserInfo ui = myUserInfoList[lstUsers.SelectedIndex]; - using (User u = User.Get(ui.UID)) - { - frmManageUser frm = new frmManageUser("edit"); - frm.MyUser = u; - if (frm.ShowDialog(this) == DialogResult.OK) - { - frm.MyUser.Save(); - SetupSecurity(); - } - } - } - private void deleteUserToolStripMenuItem_Click(object sender, EventArgs e) - { - if (lstUsers.SelectedIndex == -1) - { - MessageBox.Show("You must select a user to delete", "No User Selected", MessageBoxButtons.OK, MessageBoxIcon.Warning); - return; - } - UserInfo ui = myUserInfoList[lstUsers.SelectedIndex]; - SessionInfoList sil = SessionInfoList.Get(); - foreach (SessionInfo si in sil) - { - if (si.UserID == ui.UserID && (si.DTSEnd == null)) - { - MessageBox.Show("The user selected has an active session. You may not delete the user at this time.", "User Active Session", MessageBoxButtons.OK, MessageBoxIcon.Warning); - return; - } - } - int k = 0; - if (ui.UserMembershipCount > 0) - { - foreach (MembershipInfo mi in ui.UserMemberships) - { - if (mi.EndDate == null || mi.EndDate == string.Empty) - k++; - } - } - if (k > 0) - { - MessageBox.Show("You must remove user from all groups that user is a member of in order to delete user", "User Has Memberships", MessageBoxButtons.OK, MessageBoxIcon.Warning); - return; - } - if (MessageBox.Show("Are you sure you want to delete this user?", "Confirm Deleting User", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question) == DialogResult.Yes) - { - User.Delete(ui.UID); - SetupSecurity(); - } - //to do delete user - //end date user memberships - //delete user - } - private void createGroupMenuItem(object sender, EventArgs e) - { - try - { - ToolStripDropDownItem tsddi = sender as ToolStripDropDownItem; - TreeNode tn = tvFolders.SelectedNode; - FolderInfo fi = tn.Tag as FolderInfo; - AddNewGroup(tsddi.Text, fi); - SetupSecurity(); - } - catch (Exception ex) - { - _MyLog.Warn("createGroupMenuItem", ex); - } - } - private void AddNewGroup(string txt, FolderInfo fi) - { - txt = txt.Replace("Create", "").Replace(" a ", "").Replace("Group", "").Trim(); - RoleInfoList ril = RoleInfoList.Get(); - // B2022-080: cannot add a new group in Proms security. if the sql database's 'Roles' table was not initialized with the default roles, such as Set Administrator, - // Writer, Reviewer, RO Editor, the Adding of new groups won't work. Databases should have this loaded by default. - // Promsfixes has queries that insert these, but only gets run if there are no assignments (see commands under --define Roles) - if (ril == null || ril.Count < 2) - { - MessageBox.Show("Roles table is missing entries.\r\nPlease contact Volian to create other groups.", "Cannot create groups", MessageBoxButtons.OK, MessageBoxIcon.Warning); - return; - } - foreach(RoleInfo ri in ril) - { - if (ri.Name == txt) - { - string gin = string.Format("{0}s - {1}", ri.Name, fi.Name); - bool addOK = true; - foreach (GroupInfo gi in myGroupInfoList) - { - if (gin == gi.GroupName) - { - addOK = false; - break; - } - } - if (addOK) - { - Group group = Group.MakeGroup(gin, null, null); - Assignment.MakeAssignment(group, Role.Get(ri.RID), Folder.Get(fi.FolderID), null); - } - } - } - GroupInfoList.Reset(); - myGroupInfoList = GroupInfoList.Get(); - SetupGroups(); - } - private void lstUsers_SelectedIndexChanged(object sender, EventArgs e) - { - lblMembers.Text = "Selected User Groups"; - myMembershipInfoList = new List(); - lstMembers.Items.Clear(); - if (lstUsers.SelectedIndex > -1) - { - UserInfo ui = myUserInfoList[lstUsers.SelectedIndex]; - if (ui.UserMembershipCount > 0) - { - foreach (MembershipInfo mi in ui.UserMemberships) - { - if (mi.EndDate == null || mi.EndDate == string.Empty) - { - myMembershipInfoList.Add(mi); - lstMembers.Items.Add(mi.MyGroup.GroupName); - } - } - } - } - } - private void tvFolders_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e) - { - tvFolders.SelectedNode = e.Node; - } - private void deleteGroupToolStripMenuItem_Click(object sender, EventArgs e) - { - if (lstGroups.SelectedIndex < 0) - { - MessageBox.Show("You must select a group to delete", "No Group Selected", MessageBoxButtons.OK, MessageBoxIcon.Warning); - return; - } - GroupInfo gi = myGroupInfoList[lstGroups.SelectedIndex]; - if(myFolder.FolderConfig.Security_Group == gi.GID) - { - MessageBox.Show("Cannot Delete Default Group", "Attempt to Delete Default", MessageBoxButtons.OK, MessageBoxIcon.Warning); - return; - } - bool deleteOK = true; - if(gi.GroupMembershipCount > 0) - { - foreach (MembershipInfo mi in gi.GroupMemberships) - { - if (mi.EndDate == null || mi.EndDate == string.Empty) - { - deleteOK = false; - break; - } - } - } - if (!deleteOK) - { - MessageBox.Show("There are still users who are members of this group. You need to delete all members in order to delete this group.", "Group Has Members", MessageBoxButtons.OK, MessageBoxIcon.Warning); - return; - } - if (MessageBox.Show("Are you sure you want to delete this group?", "Confirm Deleting Group", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question) == DialogResult.Yes) - { - Group.Delete(gi.GID); - GroupInfoList.Reset(); - myGroupInfoList = GroupInfoList.Get(); - SetupGroups(); - SetupSecurity(); - } - } - private void lstGroups_MouseUp(object sender, MouseEventArgs e) - { - lstGroups.SelectedIndex = -1; - if (e.Button == MouseButtons.Right) - { - int k = lstGroups.IndexFromPoint(e.Location); - if (k >= 0) - { - lstGroups.SelectedIndex = k; - if (lstUsers.SelectedIndex >= 0) - { - GroupInfo gi = myGroupInfoList[k]; - if (gi.GroupMembershipCount > 0) - { - addMemberToolStripMenuItemGroup.Visible = true; - UserInfo ui = myUserInfoList[lstUsers.SelectedIndex]; - foreach (MembershipInfo mi in gi.GroupMemberships) - { - if (mi.MyUser.UserID == ui.UserID && (mi.EndDate == null || mi.EndDate == string.Empty)) - { - addMemberToolStripMenuItemGroup.Visible = false; - break; - } - } - } - } - else - addMemberToolStripMenuItemGroup.Visible = false; - cmGroups.Show(lstGroups, e.Location); - } - } - else if (e.Button == MouseButtons.Left) - { - int k = lstGroups.IndexFromPoint(e.Location); - if (k >= 0) - { - lstGroups.SelectedIndex = k; - } - } - } - private void lstUsers_MouseUp(object sender, MouseEventArgs e) - { - lstUsers.SelectedIndex = -1; - if (e.Button == MouseButtons.Right) - { - int k = lstUsers.IndexFromPoint(e.Location); - if (k >= 0) - { - lstUsers.SelectedIndex = k; - //addUserToolStripMenuItem.Visible = false; - editUserToolStripMenuItem.Visible = deleteUserToolStripMenuItem.Visible = true; - if (lstGroups.SelectedIndex >= 0) - { - UserInfo ui = myUserInfoList[k]; - if(ui.UserMembershipCount > 0) - { - addMemberToolStripMenuItemUser.Visible = true; - GroupInfo gi = myGroupInfoList[lstGroups.SelectedIndex]; - foreach(MembershipInfo mi in ui.UserMemberships) - { - if (mi.MyGroup.GroupName == gi.GroupName && (mi.EndDate == null || mi.EndDate == string.Empty)) - { - addMemberToolStripMenuItemUser.Visible = false; - break; - } - } - } - } - else - addMemberToolStripMenuItemUser.Visible = false; - cmUsers.Show(lstUsers, e.Location); - } - else - { - addUserToolStripMenuItem.Visible = true; - editUserToolStripMenuItem.Visible = deleteUserToolStripMenuItem.Visible = addMemberToolStripMenuItemUser.Visible = false; - cmUsers.Show(lstUsers, e.Location); - } - } - else if (e.Button == MouseButtons.Left) - { - int k = lstUsers.IndexFromPoint(e.Location); - if (k >= 0) - { - lstUsers.SelectedIndex = k; - } - } - } - private void lstMembers_MouseUp(object sender, MouseEventArgs e) - { - lstMembers.SelectedIndex = -1; - if (e.Button == MouseButtons.Right) - { - int k = lstMembers.IndexFromPoint(e.Location); - if (k >= 0) - { - lstMembers.SelectedIndex = k; - addMemberToolStripMenuItemUser.Visible = false; - removeMemberToolStripMenuItem.Visible = true; - cmMembers.Show(lstMembers, e.Location); - } - else - { - addMemberToolStripMenuItemUser.Visible = true; - removeMemberToolStripMenuItem.Visible = false; - cmMembers.Show(lstMembers, e.Location); - } - } - else if (e.Button == MouseButtons.Left) - { - int k = lstMembers.IndexFromPoint(e.Location); - if (k >= 0) - { - lstMembers.SelectedIndex = k; - } - } - } + #endregion + } } \ No newline at end of file diff --git a/PROMS/VEPROMS User Interface/dlgManageSecurity.resx b/PROMS/VEPROMS User Interface/dlgManageSecurity.resx index 8f093cb7..b66bee43 100644 --- a/PROMS/VEPROMS User Interface/dlgManageSecurity.resx +++ b/PROMS/VEPROMS User Interface/dlgManageSecurity.resx @@ -112,21 +112,27 @@ 2.0 - System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - + + 234, 17 + + 341, 17 - + 17, 17 - - 243, 17 - - + 136, 17 + + 341, 17 + + + 58 + \ No newline at end of file diff --git a/PROMS/VEPROMS.CSLA.Library/Generated/MembershipInfo.cs b/PROMS/VEPROMS.CSLA.Library/Generated/MembershipInfo.cs index afbc060c..c70b7b85 100644 --- a/PROMS/VEPROMS.CSLA.Library/Generated/MembershipInfo.cs +++ b/PROMS/VEPROMS.CSLA.Library/Generated/MembershipInfo.cs @@ -119,6 +119,15 @@ namespace VEPROMS.CSLA.Library return _MyUser; } } + public string MyUserUserID + { + [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.NoInlining)] + get + { + if (_MyUser == null && _UID != 0) _MyUser = UserInfo.Get(_UID); + return _MyUser?.UserID; + } + } private int _GID; public int GID { @@ -139,6 +148,15 @@ namespace VEPROMS.CSLA.Library return _MyGroup; } } + public string MyGroupName + { + [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.NoInlining)] + get + { + if (_MyGroup == null && _GID != 0) _MyGroup = GroupInfo.Get(_GID); + return _MyGroup?.GroupName; + } + } private string _StartDate = string.Empty; public string StartDate { diff --git a/PROMS/Volian.Controls.Library/ToolStripMenuItemwithValue.cs b/PROMS/Volian.Controls.Library/ToolStripMenuItemwithValue.cs new file mode 100644 index 00000000..16f35ab1 --- /dev/null +++ b/PROMS/Volian.Controls.Library/ToolStripMenuItemwithValue.cs @@ -0,0 +1,16 @@ +using System.Windows.Forms; + +namespace Volian.Controls.Library +{ + //ToolStripMenuItem with Added Value Property + public class ToolStripMenuItemwithValue : ToolStripMenuItem + { + public readonly object Value; + + public ToolStripMenuItemwithValue(string text, object value) + { + Value = value; + Text = text; + } + } +} diff --git a/PROMS/Volian.Controls.Library/Volian.Controls.Library.csproj b/PROMS/Volian.Controls.Library/Volian.Controls.Library.csproj index 42a8db20..21fb8341 100644 --- a/PROMS/Volian.Controls.Library/Volian.Controls.Library.csproj +++ b/PROMS/Volian.Controls.Library/Volian.Controls.Library.csproj @@ -384,6 +384,9 @@ TablePropertiesControl.cs + + Component + Component From ca38ecb1cf1521a0c9afa8a68489e4393a27e8ed Mon Sep 17 00:00:00 2001 From: John Jenko Date: Tue, 21 Oct 2025 10:41:13 -0400 Subject: [PATCH 22/47] =?UTF-8?q?F2025-028=20Turned=20on=20flag=20to=20bol?= =?UTF-8?q?d=20only=20the=20high=20level=20RNO,=20only=20when=20it?= =?UTF-8?q?=E2=80=99s=20off=20of=20a=20high=20level=20step=20in=20the=20Vo?= =?UTF-8?q?gtle=20Units=203=20&=204=20Two=20Column=20format?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- PROMS/Formats/fmtall/VEGP2all.xml | Bin 229308 -> 229350 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/PROMS/Formats/fmtall/VEGP2all.xml b/PROMS/Formats/fmtall/VEGP2all.xml index 91f4a886b779542957f6bf9d3de8010eb6a332bf..e77b626314cd1dec277ddb368e8869ff583283a0 100644 GIT binary patch delta 63 zcmdn delta 36 ucmV+<0NelO{|&tV4S=)(1hto3gaKBUV1@xEm*BbqoQFoX0k=lB0-(t|ln{#m From 410b7d3dd6def45223ca83479bf0893caa006aa4 Mon Sep 17 00:00:00 2001 From: mschill Date: Tue, 21 Oct 2025 14:47:30 -0400 Subject: [PATCH 23/47] =?UTF-8?q?C2024-047=20Security=20Dialog=20shouldn?= =?UTF-8?q?=E2=80=99t=20be=20bringing=20up=20a=20menu=20in=20the=20Group?= =?UTF-8?q?=20box=20unless=20a=20user=20is=201st=20selected=20in=20the=20U?= =?UTF-8?q?sers=20box.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- PROMS/VEPROMS User Interface/dlgManageSecurity.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/PROMS/VEPROMS User Interface/dlgManageSecurity.cs b/PROMS/VEPROMS User Interface/dlgManageSecurity.cs index e8fce203..c398fc40 100644 --- a/PROMS/VEPROMS User Interface/dlgManageSecurity.cs +++ b/PROMS/VEPROMS User Interface/dlgManageSecurity.cs @@ -418,7 +418,7 @@ namespace VEPROMS cmMembers.Items.Clear(); lstGroups.SelectedIndex = -1; - if (e.Button == MouseButtons.Right) + if (e.Button == MouseButtons.Right && lstUsers.SelectedIndex > -1) { int k = lstGroups.IndexFromPoint(e.Location); if (k >= 0) From d3ec749848db773bb6f6a0979758e17a78cc624e Mon Sep 17 00:00:00 2001 From: mschill Date: Tue, 21 Oct 2025 14:48:06 -0400 Subject: [PATCH 24/47] =?UTF-8?q?C2024-047=20Security=20Dialog=20shouldn?= =?UTF-8?q?=E2=80=99t=20be=20bringing=20up=20a=20menu=20in=20the=20Group?= =?UTF-8?q?=20box=20unless=20a=20user=20is=201st=20selected=20in=20the=20U?= =?UTF-8?q?sers=20box.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- PROMS/VEPROMS User Interface/dlgManageSecurity.cs | 1 + 1 file changed, 1 insertion(+) diff --git a/PROMS/VEPROMS User Interface/dlgManageSecurity.cs b/PROMS/VEPROMS User Interface/dlgManageSecurity.cs index c398fc40..5da9d00c 100644 --- a/PROMS/VEPROMS User Interface/dlgManageSecurity.cs +++ b/PROMS/VEPROMS User Interface/dlgManageSecurity.cs @@ -418,6 +418,7 @@ namespace VEPROMS cmMembers.Items.Clear(); lstGroups.SelectedIndex = -1; + //shouldn’t be bringing up a menu in the Group box unless a user is 1st selected in the Users box. if (e.Button == MouseButtons.Right && lstUsers.SelectedIndex > -1) { int k = lstGroups.IndexFromPoint(e.Location); From de69fe6b6fc42c17aa64b25c30f77067553903f3 Mon Sep 17 00:00:00 2001 From: mschill Date: Wed, 22 Oct 2025 14:20:46 -0400 Subject: [PATCH 25/47] B2025-056 Incoming Transitions Go To Procedure --- .../Volian.Controls.Library/DisplaySearch.Designer.cs | 10 ++++++++-- PROMS/Volian.Controls.Library/DisplaySearch.cs | 11 ++++++----- 2 files changed, 14 insertions(+), 7 deletions(-) diff --git a/PROMS/Volian.Controls.Library/DisplaySearch.Designer.cs b/PROMS/Volian.Controls.Library/DisplaySearch.Designer.cs index 1ee963a9..5c2552de 100644 --- a/PROMS/Volian.Controls.Library/DisplaySearch.Designer.cs +++ b/PROMS/Volian.Controls.Library/DisplaySearch.Designer.cs @@ -188,7 +188,6 @@ namespace Volian.Controls.Library this.tabSearchTypes.Controls.Add(this.tabControlPanel5); this.tabSearchTypes.Controls.Add(this.tabControlPanel2); this.tabSearchTypes.Controls.Add(this.tabControlPanel3); - this.tabSearchTypes.Controls.Add(this.tabControlPanel1); this.tabSearchTypes.Controls.Add(this.contextMenuBar1); this.tabSearchTypes.Dock = System.Windows.Forms.DockStyle.Top; this.tabSearchTypes.Location = new System.Drawing.Point(0, 0); @@ -983,7 +982,6 @@ namespace Volian.Controls.Library this.tabControlPanel1.Controls.Add(this.lblSrchIncTran); this.tabControlPanel1.Controls.Add(this.groupBox1); this.tabControlPanel1.DisabledBackColor = System.Drawing.Color.Empty; - this.tabControlPanel1.Dock = System.Windows.Forms.DockStyle.Fill; this.tabControlPanel1.Location = new System.Drawing.Point(0, 34); this.tabControlPanel1.Name = "tabControlPanel1"; this.tabControlPanel1.Padding = new System.Windows.Forms.Padding(1); @@ -997,6 +995,8 @@ namespace Volian.Controls.Library this.tabControlPanel1.Style.GradientAngle = 90; this.tabControlPanel1.TabIndex = 17; this.tabControlPanel1.TabItem = this.tabIncTrans; + this.tabControlPanel1.Anchor = ((System.Windows.Forms.AnchorStyles)(( System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right))); + this.tabControlPanel1.RightToLeft = System.Windows.Forms.RightToLeft.No; // // btnTranCvtSelToTxt // @@ -1732,6 +1732,12 @@ namespace Volian.Controls.Library this.Controls.Add(this.xpStepTypes); this.Controls.Add(this.xpSetToSearch); this.Controls.Add(this.tabSearchTypes); + this.Controls.Add(this.tabControlPanel1); + //B2025-056 Click on Incoming Transitions + // This needs to be part of overall control + // since if it is part of tabSearchTypes, + // then when that is disabled, buttons on + // this will be also this.Margin = new System.Windows.Forms.Padding(2); this.Name = "DisplaySearch"; this.RightToLeft = System.Windows.Forms.RightToLeft.Yes; diff --git a/PROMS/Volian.Controls.Library/DisplaySearch.cs b/PROMS/Volian.Controls.Library/DisplaySearch.cs index dbca6c18..81c7511a 100644 --- a/PROMS/Volian.Controls.Library/DisplaySearch.cs +++ b/PROMS/Volian.Controls.Library/DisplaySearch.cs @@ -1857,14 +1857,15 @@ namespace Volian.Controls.Library lbSrchResultsIncTrans.Enabled = false; lbSrchResultsIncTrans.UseWaitCursor = true; } - ListBox mylb = sender as ListBox; + //B2025-056 Click on Incoming Transitions + // Clicking on Incoming Transitions + // will now open that item + ListBox mylb_lbSrchResults = sender as ListBox; + ListBoxAdv mylb_lbSrchResultsIncTrans = sender as ListBoxAdv; // If the list is being refreshed, then set the selection index to -1 (no selection) // B2022-044: don't set selection to top of list (commented out/changed if) - //if (mylb != null && _SearchResults.RefreshingList && mylb.SelectedIndex != -1) - // //mylb.SelectedIndex = -1; - //else - if (mylb != null && !_SearchResults.RefreshingList) + if ((mylb_lbSrchResults != null || mylb_lbSrchResultsIncTrans != null) && !_SearchResults.RefreshingList) { _ItemInfo = (tabSearchTypes.SelectedTab == tabSearchTypes.Tabs[4]) ? lbSrchResultsIncTrans.SelectedValue as ItemInfo : lbSrchResults.SelectedValue as ItemInfo; if ((tabSearchTypes.SelectedTab == tabSearchTypes.Tabs[1]) && (_ItemInfo != null)) From 327aae687a068a290ca0eea7c307da7edef84d9f Mon Sep 17 00:00:00 2001 From: mschill Date: Fri, 24 Oct 2025 11:12:39 -0400 Subject: [PATCH 26/47] B2025-053 Printing from Ribbon while Edits in progress --- PROMS/Volian.Controls.Library/StepTabRibbon.cs | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/PROMS/Volian.Controls.Library/StepTabRibbon.cs b/PROMS/Volian.Controls.Library/StepTabRibbon.cs index 8a4a5f47..6e31dae5 100644 --- a/PROMS/Volian.Controls.Library/StepTabRibbon.cs +++ b/PROMS/Volian.Controls.Library/StepTabRibbon.cs @@ -4190,15 +4190,19 @@ namespace Volian.Controls.Library if (oring == eEventSource.Keyboard) _OringFlg = 1; + int selectedSlave = MyItemInfo.MyProcedure.ProcedureConfig.SelectedSlave; if (MyItemInfo == null) return; // if creating a pdf before rtb exists, return; if (MyEditItem != null) MyEditItem.SaveCurrentAndContents(); + MyItemInfo.MyProcedure.ProcedureConfig.SelectedSlave = selectedSlave; OnPrintRequest(new StepTabRibbonEventArgs(MyItemInfo.MyProcedure, _OringFlg), 0); } private void btnPdfQuickCreate_Click(object sender, EventArgs e) { + int selectedSlave = MyItemInfo.MyProcedure.ProcedureConfig.SelectedSlave; if (MyItemInfo == null) return; // if creating a pdf before rtb exists, return; if (MyEditItem != null) MyEditItem.SaveCurrentAndContents(); + MyItemInfo.MyProcedure.ProcedureConfig.SelectedSlave = selectedSlave; OnPrintRequest(new StepTabRibbonEventArgs(MyItemInfo.MyProcedure, _OringFlg), 1); } From c9516d90e9db2460f4fe23b09dabd3930981fd97 Mon Sep 17 00:00:00 2001 From: mschill Date: Fri, 24 Oct 2025 14:55:13 -0400 Subject: [PATCH 27/47] B2021-092 The "Custom Change Bar Text" option does not output any change bar text in the PDF output when information is added to Line one and/or Line two off the print dialog. --- PROMS/VEPROMS User Interface/DlgPrintProcedure.cs | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/PROMS/VEPROMS User Interface/DlgPrintProcedure.cs b/PROMS/VEPROMS User Interface/DlgPrintProcedure.cs index ee32e49b..a4f04f9b 100644 --- a/PROMS/VEPROMS User Interface/DlgPrintProcedure.cs +++ b/PROMS/VEPROMS User Interface/DlgPrintProcedure.cs @@ -1099,7 +1099,9 @@ namespace VEPROMS (int)changeBarData.FixedChangeColumn : System.Convert.ToInt32(changeBarData.DefaultCBLoc.Split(" ,".ToCharArray())[System.Convert.ToInt32(cbd.MyChangeBarLoc)]); //cbd.MyChangeBarColumn = (int)changeBarData.FixedChangeColumn; - if (cbd.MyChangeBarText == PrintChangeBarText.UserDef) + if (cbd.MyChangeBarText == PrintChangeBarText.UserDef && !string.IsNullOrEmpty(ppTxbxChangeBarUserMsgOne.Text)) + cbd.MyChangeBarMessage = ppTxbxChangeBarUserMsgOne.Text + @"\n" + ppTxbxChangeBarUserMsgTwo.Text; + else if (cbd.MyChangeBarText == PrintChangeBarText.UserDef) cbd.MyChangeBarMessage = _DocVersionConfig.Print_UserCBMess1 + @"\n" + _DocVersionConfig.Print_UserCBMess2; } From 4fc37c54c549b4e0396e8705b609e4ee2e342a9b Mon Sep 17 00:00:00 2001 From: John Jenko Date: Thu, 30 Oct 2025 11:15:30 -0400 Subject: [PATCH 28/47] F2025-029 Added the Westinghouse Proprietary statement to all of the section styles in the Vogtle Units 3 & 4 formats --- PROMS/Formats/fmtall/VEGP1all.xml | Bin 183638 -> 190546 bytes PROMS/Formats/fmtall/VEGP2all.xml | Bin 229350 -> 237970 bytes PROMS/Formats/fmtall/VEGPAlrall.xml | Bin 209292 -> 211014 bytes 3 files changed, 0 insertions(+), 0 deletions(-) diff --git a/PROMS/Formats/fmtall/VEGP1all.xml b/PROMS/Formats/fmtall/VEGP1all.xml index 4432611c947151611bd217d1b41bcef76d890f65..848c83e09ef2cd46f02c5167f4c383d1a998915b 100644 GIT binary patch delta 96 zcmcaMi~G_A?uHh|Elg<{(>K^K>1@BJ!nB2L`h-R%jqU3)m=19wiEf`z#Po!3dV?~P h3PjmzJ?aYEldxBr#pl*DNRqXWop@eFPSNZZM#|sQ;q_<=yV4cCYkMDN|>rF sFr*sNn3JX#^fIz+ms-aZ$Biz(ecw)|S>foS(-W$gb+(@pWR}ST0Llw9TmS$7 delta 98 zcmbPqnD5zt-i8*&EldxBr*9}=a-04xh1p`eR5X)`0+_!&powXk1w_hkJ(JP&xDIB6 t=>@%vEZhAKF~xCD-|&`c()0&C%p%+Qt}_y7O^ delta 40 ycmV+@0N4M<@C=OO41k0Iv;u;(ml7HSTDRJ?0^U29km3OZm(U9W9JiGB0 Date: Thu, 30 Oct 2025 16:27:52 -0400 Subject: [PATCH 29/47] F2025-030 Un-bold the section End messages in the Vogtle Units 3&4 Single and Two Column formats --- PROMS/Formats/fmtall/VEGP1all.xml | Bin 190546 -> 184172 bytes PROMS/Formats/fmtall/VEGP2all.xml | Bin 237970 -> 237970 bytes 2 files changed, 0 insertions(+), 0 deletions(-) diff --git a/PROMS/Formats/fmtall/VEGP1all.xml b/PROMS/Formats/fmtall/VEGP1all.xml index 848c83e09ef2cd46f02c5167f4c383d1a998915b..fa8f544801be90f790703241f35dd9cdc2e31b16 100644 GIT binary patch delta 582 zcmca~f&0xo?uIRlA%CZHO=A+8d_aR`d(B_QJZW(S24{v0hD?SWh7<-rhEj%H23rOt z2E*weiXVhWl*!Gr11^b7J#EYlTMGbv49(844%y&;zA%5(!mCKnLbW%`CS zOb@1SXk~Jn{y~E2*z^abOl1((g?6SKkStIviKzm@0vg4({hkWbJ+|p{PBU3-FNk7t z$(UYnol#->gFlQc)AepL#Z9+6&crc&!96Cq>3mU4T+{1L16dA#8AV{x!Z!WdX(qAl zHx4uHV8-r+=|C@tPd{@UsBzmWMiKTBpzlfaTecef>7=DDM+kuw8U_tN^ gj@S-#L<*V=&-57`jC|8h0|N)uiQ8{IW~yKT07HzuU;qFB delta 405 zcmaDekNeUE?uIRlA%6uG7<3sF7(yBH7%~}3fGp$biv3K&lMiUHY|r}3m?u45Ac|?( z^Z->Rr|EoROhVf|q?y(+fdu`g8z?a~OgH$?$Tt0#C{QL$f$18$%=S7}rdeFm9sV+k zVAx~=wrRVA0n-J>?PmWOZ6v3klVnQ6VxbEYNQP(n3|Xc)Tvlf=O_q|DnQo`T6ojS( z>V|Ebm@KyUI5N3pOh3Q^H0;+3Mv>_sRx%yIa2PxY*tVZp#dMAtpYx{!ozF7;*g7V; n?JVn=6a-PtPTIcg08r8l4At`MKXLN diff --git a/PROMS/Formats/fmtall/VEGP2all.xml b/PROMS/Formats/fmtall/VEGP2all.xml index d895d7bae66d7997ee6811fe1495b5bf360cb779..7acbf048ba7ff18f61c936fb16cae9118f232661 100644 GIT binary patch delta 223 zcmbPqm~YZyzJ?aY7N#xCJi*fqq?vf83*2B7nZBWddDrw8{~3Lzr<5>DZC9vgmSCA~ z5X9^@eN_bWBs7KF#iE%1a3TpN6f^JH{w{?%hz}vS9VlqPio^$6p@zfV72HT}hZMxW^^CCpOW73!HKSf(2UF}qD) z6~R0Sp=P^S6!RZW2tT2idC&HDDa=89VE%R>-+&du1RAFXVS-KGzM+n}M+mMfWc!AR l%py>EpsuLxcGH=opr!(~PMbc#hnZ#is|;p==}8Nj4FFpkL7@Nu From 37f53368063a5a3c1d680bb88ec33c386e101f39 Mon Sep 17 00:00:00 2001 From: mschill Date: Fri, 31 Oct 2025 09:44:01 -0400 Subject: [PATCH 30/47] C2021-035 Add Refresh Tree Option at highest level --- PROMS/VEPROMS User Interface/frmVEPROMS.cs | 13 ++++++ .../Extension/DocVersionExt.cs | 13 ++++++ .../Extension/FormatExt.cs | 15 +++++- .../Extension/PropertyDescriptors.cs | 6 +++ .../Generated/FolderInfo.cs | 9 ++++ .../VEPROMS.CSLA.Library/Generated/Format.cs | 8 ++++ .../Generated/FormatInfo.cs | 7 +++ PROMS/Volian.Controls.Library/vlnTreeView.cs | 46 +++++++++++++++++++ 8 files changed, 116 insertions(+), 1 deletion(-) diff --git a/PROMS/VEPROMS User Interface/frmVEPROMS.cs b/PROMS/VEPROMS User Interface/frmVEPROMS.cs index e52c6b21..8f09424b 100644 --- a/PROMS/VEPROMS User Interface/frmVEPROMS.cs +++ b/PROMS/VEPROMS User Interface/frmVEPROMS.cs @@ -554,10 +554,23 @@ namespace VEPROMS tv.CreateContinuousActionSummary += new vlnTreeViewEvent(tv_CreateContinuousActionSummary); tv.SelectDateToStartChangeBars += tv_SelectDateToStartChangeBars; tv.CreateTimeCriticalActionSummary += new vlnTreeViewEvent(tv_CreateTimeCriticalActionSummary); + tv.RefreshFormats += new vlnTreeViewStatusEvent(RefreshFormats); displayBookMarks.ResetBookMarksInPROMSWindows += displayBookMarks_ResetBookMarksInPROMSWindows; } + //C2021-035 Add Refresh Tree Option at highest level + void RefreshFormats(object sender, vlnTreeStatusEventArgs args) + { + Format.ClearFormatCache(); + FormatInfo.ClearFormatInfoCache(); + FormatInfo.Reset(); + FormatInfoList.Reset(); + Format.Reset(); + FormatList.Reset(); + displaySearch1.SetupContextMenu(); + } + // Part of Separate Windows upgrade C2015-022 // Extend Changes to BookMark information to all of the child windows void displayBookMarks_ResetBookMarksInPROMSWindows(object sender, EventArgs args) diff --git a/PROMS/VEPROMS.CSLA.Library/Extension/DocVersionExt.cs b/PROMS/VEPROMS.CSLA.Library/Extension/DocVersionExt.cs index af4fe9a2..f633bae7 100644 --- a/PROMS/VEPROMS.CSLA.Library/Extension/DocVersionExt.cs +++ b/PROMS/VEPROMS.CSLA.Library/Extension/DocVersionExt.cs @@ -765,6 +765,19 @@ namespace VEPROMS.CSLA.Library foreach (DocVersionInfo dvi in _CacheByPrimaryKey[key]) dvi.ResetProcedures(); } + + //C2021-035 Add Refresh Tree Option at highest level + public static void ResetAllProcedures() + { + foreach (string key in _CacheByPrimaryKey.Keys) + { + foreach (DocVersionInfo dvi in _CacheByPrimaryKey[key]) + dvi.ResetProcedures(); + } + + foreach (DocVersionInfo dvi in _CacheList) + dvi.ResetProcedures(); + } #region IVEReadOnlyItem public System.Collections.IList GetChildren() { diff --git a/PROMS/VEPROMS.CSLA.Library/Extension/FormatExt.cs b/PROMS/VEPROMS.CSLA.Library/Extension/FormatExt.cs index 28ba06bc..44176423 100644 --- a/PROMS/VEPROMS.CSLA.Library/Extension/FormatExt.cs +++ b/PROMS/VEPROMS.CSLA.Library/Extension/FormatExt.cs @@ -275,6 +275,14 @@ namespace VEPROMS.CSLA.Library } } + //C2021-035 Add Refresh Tree Option at highest level + public static void Reset() + { + _LookupFormats?.Clear(); + _LookupFormats = null; + _ = LookupFormats; + } + private static Format AddFormatToDB(Format parent, string format, bool issub, DateTime Dts, string Userid, string fmtPath, string genmacPath) { string fmtdata = null; @@ -509,7 +517,12 @@ public partial class FormatInfo : IFormatOrFormatInfo return _PROMSBaseFormat; } } - public static FormatInfo Get(string name) + public static void Reset() + { + _PROMSBaseFormat = null; + } + + public static FormatInfo Get(string name) { try { diff --git a/PROMS/VEPROMS.CSLA.Library/Extension/PropertyDescriptors.cs b/PROMS/VEPROMS.CSLA.Library/Extension/PropertyDescriptors.cs index fe164caa..a4293a5c 100644 --- a/PROMS/VEPROMS.CSLA.Library/Extension/PropertyDescriptors.cs +++ b/PROMS/VEPROMS.CSLA.Library/Extension/PropertyDescriptors.cs @@ -97,6 +97,12 @@ namespace VEPROMS.CSLA.Library if (formatInfo != null && formatInfo.ToString() == formatName) return formatInfo.Get(); return null; } + //C2021-035 Add Refresh Tree Option at highest level + public static void Reset() + { + _MyFormatInfoList?.Clear(); + _MyFormatInfoList = null; + } } public class DocStyleListConverter : System.ComponentModel.StringConverter { diff --git a/PROMS/VEPROMS.CSLA.Library/Generated/FolderInfo.cs b/PROMS/VEPROMS.CSLA.Library/Generated/FolderInfo.cs index f05c9869..e7de686d 100644 --- a/PROMS/VEPROMS.CSLA.Library/Generated/FolderInfo.cs +++ b/PROMS/VEPROMS.CSLA.Library/Generated/FolderInfo.cs @@ -502,6 +502,15 @@ namespace VEPROMS.CSLA.Library _FolderInfoExtension.Refresh(this); OnChange();// raise an event } + + //C2021-035 Add Refresh Tree Option at highest level + public static void ClearFolderInfoCache() + { + _CacheByPrimaryKey.Clear(); + while (_CacheList.Count > 0) + { _CacheList[0].Dispose(); } + } + public static FolderInfo Get(int folderID) { //if (!CanGetObject()) diff --git a/PROMS/VEPROMS.CSLA.Library/Generated/Format.cs b/PROMS/VEPROMS.CSLA.Library/Generated/Format.cs index db2c8869..c06509bf 100644 --- a/PROMS/VEPROMS.CSLA.Library/Generated/Format.cs +++ b/PROMS/VEPROMS.CSLA.Library/Generated/Format.cs @@ -143,6 +143,14 @@ namespace VEPROMS.CSLA.Library if (_CacheByParentID_Name.ContainsKey(key)) return _CacheByParentID_Name[key][0]; return null; } + + //C2021-035 Add Refresh Tree Option at highest level + public static void ClearFormatCache() + { + _CacheByPrimaryKey.Clear(); + while (_CacheList.Count > 0) + { _CacheList[0].Dispose(); } + } #endregion #region Business Methods private string _ErrorMessage = string.Empty; diff --git a/PROMS/VEPROMS.CSLA.Library/Generated/FormatInfo.cs b/PROMS/VEPROMS.CSLA.Library/Generated/FormatInfo.cs index cb47915c..decc8dab 100644 --- a/PROMS/VEPROMS.CSLA.Library/Generated/FormatInfo.cs +++ b/PROMS/VEPROMS.CSLA.Library/Generated/FormatInfo.cs @@ -71,6 +71,13 @@ namespace VEPROMS.CSLA.Library if (_CacheByPrimaryKey.ContainsKey(key)) return _CacheByPrimaryKey[key][0]; return null; } + //C2021-035 Add Refresh Tree Option at highest level + public static void ClearFormatInfoCache() + { + _CacheByPrimaryKey.Clear(); + while (_CacheList.Count > 0) + { _CacheList[0].Dispose(); } + } #endregion #region Business Methods private string _ErrorMessage = string.Empty; diff --git a/PROMS/Volian.Controls.Library/vlnTreeView.cs b/PROMS/Volian.Controls.Library/vlnTreeView.cs index 5c1d3608..73889378 100644 --- a/PROMS/Volian.Controls.Library/vlnTreeView.cs +++ b/PROMS/Volian.Controls.Library/vlnTreeView.cs @@ -1269,6 +1269,11 @@ namespace Volian.Controls.Library if (ok) if (pia == null && tn.VEObject as StepInfo == null) cm.MenuItems.Add("Properties...", new EventHandler(mi_Click)); #endregion + #region Refresh_Tree + //C2021-035 Add Refresh Tree Option at highest level + if (tn == (VETreeNode)Nodes[0]) + cm.MenuItems.Add("Refresh Tree", new EventHandler(mi_Click)); + #endregion //_MyLog.WarnFormat("Context Menu 7 - {0}", GC.GetTotalMemory(true)); if (fi != null && fi.HasWorkingDraft) @@ -2352,6 +2357,10 @@ namespace Volian.Controls.Library case "Print All Approved Procedures": //C2025-017 print all approved procedures OnPrintAllApprovedProcedures(this, new vlnTreeEventArgs(SelectedNode as VETreeNode, null, 0)); break; + //C2021-035 Add Refresh Tree Option at highest level + case "Refresh Tree": + RefreshTree(); + break; default: if (mi.Text.StartsWith("Showing Change Bars Starting")) OnSelectDateToStartChangeBars(this, new vlnTreeEventArgs(SelectedNode as VETreeNode, null, 0)); @@ -3926,6 +3935,13 @@ namespace Volian.Controls.Library if (Processing != null) Processing(this, new vlnTreeStatusEventArgs(status, message)); } + //C2021-035 Add Refresh Tree Option at highest level + public event vlnTreeViewStatusEvent RefreshFormats; + private void OnRefreshFormats(bool status, string message) + { + if (RefreshFormats != null) + RefreshFormats(this, new vlnTreeStatusEventArgs(status, message)); + } #endregion #region SetLastValuesAndSaveIfChangedStuff private void SetLastValues(VETreeNode node) @@ -4648,6 +4664,36 @@ namespace Volian.Controls.Library if (myFolder.FolderID == ((FolderInfo)obj2).FolderID) return true; return false; } + + //C2021-035 Add Refresh Tree Option at highest level + public void RefreshTree() + { + //reload the base node + VETreeNode tbase = (VETreeNode) Nodes[0]; + tbase.ChildrenLoaded = false; + + //Refresh the formats + OnRefreshFormats(true, "Refreshing Formats"); + + //reset the procedure lists so db is re-queried in case they changed + //also clear other caches in case added steps / sections / etc... + PartInfo.ClearPartInfoCache(); + ItemInfo.ClearItemInfoCache(); + DocVersionInfo.ResetAllProcedures(); + FolderInfo.ClearFolderInfoCache(); + + //Refresh the base VEPROMS object + var fldr = tbase.VEObject as FolderInfo; + if (fldr != null) + { + Invoke((Action)(() => { tbase.VEObject = FolderInfo.Get(fldr.FolderID); })); + } + + //refresh the tree + Invoke((Action)(() => { tbase.RefreshNode(); })); + this.Invoke((Action)(() => { this.Update(); })); + } + } #region DragHelper public class DragHelper From a08d92ea410095f4ca173bfc551f544018059379 Mon Sep 17 00:00:00 2001 From: John Jenko Date: Mon, 3 Nov 2025 12:21:32 -0500 Subject: [PATCH 31/47] =?UTF-8?q?F2025-031Corrected=20=E2=80=9CReturn=20To?= =?UTF-8?q?=E2=80=9D=20in=20ReplaceWords=20list=20so=20that=20lower=20case?= =?UTF-8?q?d=20=E2=80=9Creturn=20to=E2=80=9D=20will=20remain=20lowercased?= =?UTF-8?q?=20and=20still=20be=20bolded.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- PROMS/Formats/fmtall/VEGP1all.xml | Bin 184172 -> 184418 bytes PROMS/Formats/fmtall/VEGP2all.xml | Bin 237970 -> 238216 bytes PROMS/Formats/fmtall/VEGPAlrall.xml | Bin 211014 -> 211260 bytes 3 files changed, 0 insertions(+), 0 deletions(-) diff --git a/PROMS/Formats/fmtall/VEGP1all.xml b/PROMS/Formats/fmtall/VEGP1all.xml index fa8f544801be90f790703241f35dd9cdc2e31b16..275fd0b6df786d8e8bf241676836054a2821442e 100644 GIT binary patch delta 79 zcmaDekNeRA?uIRln*t|q2$Y*X!Gn=y`H`-A&`-eaXOIXnf@z;QDyo84@Q=Dg%HN=3L#8RH2}wx B5jOw; diff --git a/PROMS/Formats/fmtall/VEGP2all.xml b/PROMS/Formats/fmtall/VEGP2all.xml index 7acbf048ba7ff18f61c936fb16cae9118f232661..930514bda28a2e7cb18603c609b11158a0b41de8 100644 GIT binary patch delta 64 zcmbPqn6Kj~U&9v0WlobU<)$~7GqP-d;KazqIQ@+aBM++rLkUCv^odrCn$s0r89A7N S{B}iWMj&R|uIS8M7zY5bDiX&4 delta 36 qcmeA;$~WmSU&9v0Wlqx_%oweVt&AGk2Dhy?%&athudh YVQwVh>HqZ^&$gS{GHy4sWfJ%e0M)=3vH$=8 delta 51 zcmdnB%nu D7BCW( From f8b93807aeb92e21ff1d46580eace57bee321293 Mon Sep 17 00:00:00 2001 From: John Jenko Date: Tue, 4 Nov 2025 16:01:00 -0500 Subject: [PATCH 32/47] B2025-058 and B2025-061 Removed the Continuous Action Step indicator from the sub-step number when being referenced in a transition. --- PROMS/VEPROMS.CSLA.Library/Extension/TransitionExt.cs | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/PROMS/VEPROMS.CSLA.Library/Extension/TransitionExt.cs b/PROMS/VEPROMS.CSLA.Library/Extension/TransitionExt.cs index 2b47b89f..194d8b6f 100644 --- a/PROMS/VEPROMS.CSLA.Library/Extension/TransitionExt.cs +++ b/PROMS/VEPROMS.CSLA.Library/Extension/TransitionExt.cs @@ -1145,8 +1145,12 @@ namespace VEPROMS.CSLA.Library { //string thisTab = StepInfo.Get(pitem.ItemID).MyTab.CleanText; string thisTab = pitem.MyTab.CleanText;// StepInfo.Get(pitem.ItemID).MyTab.CleanText; + //B2025-058 remove continuous action indicator + string medittag = pitem.FormatStepData.TabData.MacroEditTag; + if (medittag != null && thisTab.StartsWith(medittag)) + thisTab = thisTab.Substring(medittag.Length); // remove delimiters of '.' and ')' in tab. - if (!hasDelim) + if (!hasDelim) { // get list of delimiters to remove from the format: foreach (string rmvDelim in DelimList) thisTab = thisTab.Replace(rmvDelim, ""); From d731125a14a3cc4c75231ab6cddc8ff967837b02 Mon Sep 17 00:00:00 2001 From: John Jenko Date: Wed, 5 Nov 2025 11:51:19 -0500 Subject: [PATCH 33/47] =?UTF-8?q?F2025-033=20Removed=20the=20hard=20coded?= =?UTF-8?q?=20text=20=E2=80=9COPERATOR=20ACTIONS=E2=80=9D=20from=20the=20T?= =?UTF-8?q?wo=20Column=20Attachment=20section=20style=20in=20=20Vogtle=20T?= =?UTF-8?q?wo=20Column=20format?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- PROMS/Formats/fmtall/VEGP2all.xml | Bin 238216 -> 236926 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/PROMS/Formats/fmtall/VEGP2all.xml b/PROMS/Formats/fmtall/VEGP2all.xml index 930514bda28a2e7cb18603c609b11158a0b41de8..402c540a8d9130a6c56105d221b24d22c95504c1 100644 GIT binary patch delta 199 zcmeA;%J**`INj?BlgRdW zKNwH3Z*TKuW^n*pG#zM>$n;me%qrWb`7swUu^KZNF&IuyOk#GNexZ;#ZhPEBW)H^c Y3*wm5pza7pbBACkv*`Ao$;^NF0P%G}VgLXD delta 442 zcmeyji?8D-UqcJy7N#Xv75y0s7*ZLE7!nyu81jL%0)rz%GLW4K}0mz z{^%-`1fRS=LjZ#-Ll96&2!lV61}Sz1vOR%3KZfAxiGP`tr=L5^^lAEniA*lj4( zY&ZDB|cb%k-oc<_zLAA_qf5AM-yx0N2xat^fc4 From 441917b6709fcf8dd1bd2758a27fddc50ece6952 Mon Sep 17 00:00:00 2001 From: John Jenko Date: Thu, 6 Nov 2025 15:13:50 -0500 Subject: [PATCH 34/47] F2025-034 Updated Transition format to turn off putting parenthesis around section title and turn off the attempt of title-casing the procedure title. --- PROMS/Formats/fmtall/VEGP1all.xml | Bin 184418 -> 184426 bytes PROMS/Formats/fmtall/VEGP2all.xml | Bin 236926 -> 236934 bytes PROMS/Formats/fmtall/VEGPAlrall.xml | Bin 211260 -> 211268 bytes PROMS/Formats/fmtall/VEGPBckStpsall.xml | Bin 59160 -> 59168 bytes PROMS/Formats/fmtall/VEGPBckall.xml | Bin 88838 -> 88846 bytes 5 files changed, 0 insertions(+), 0 deletions(-) diff --git a/PROMS/Formats/fmtall/VEGP1all.xml b/PROMS/Formats/fmtall/VEGP1all.xml index 275fd0b6df786d8e8bf241676836054a2821442e..a3f49af9957c776641d8bcccd5bd6f697f3f23c1 100644 GIT binary patch delta 65 zcmaE~fcw<~?uIRlB~PZSEn^gz9`b}yX8OD*j6$efzUgO{GYL#KGvb@h@|4kJvJVU2 Kc9*A&a<2h<5gB;^ delta 59 zcmaF0fcwz`?uIRlB~K>18SqVSdBUg%V`xo(^Mp}g@)I+G>3(Y%*`|v;Wz?E}<2WPF KcAuw=a<2gbOBnM2 diff --git a/PROMS/Formats/fmtall/VEGP2all.xml b/PROMS/Formats/fmtall/VEGP2all.xml index 402c540a8d9130a6c56105d221b24d22c95504c1..cea4fc161d86f6364de9f6fc8abf74be2bf8ead9 100644 GIT binary patch delta 70 zcmeyji?3}rU&9v0j(gK1?lJ02e|L|OZ~B3Ij4adJE(2L<_Za0sVsa3!RW&2mbfx=@ UT9bFN@U=(WXWSlfpGj>W0A!XO-2eap delta 62 zcmZqM&G&B?U&9v0j(gKJS{Zq!PrJuxz#76(#85iD{~n|9wEK(#(^D2QicQzJ&!`2F PXpg+lxIOYdlkPqM2f!DU diff --git a/PROMS/Formats/fmtall/VEGPAlrall.xml b/PROMS/Formats/fmtall/VEGPAlrall.xml index dbcba104540e0f4704bff3e6522bf7115505a316..286b1781c5469c2932b19f62f1111479489aa515 100644 GIT binary patch delta 89 zcmdnTiFbbh^`6mBS=9w0+>_2ejJbh diff --git a/PROMS/Formats/fmtall/VEGPBckStpsall.xml b/PROMS/Formats/fmtall/VEGPBckStpsall.xml index 8fdafbe29d32a902b5922934c62809adcb61c5d6..49b0a79432028fb88721e3d101027977c9a195ba 100644 GIT binary patch delta 54 zcmbPnj(Nd3<_-7OO@3y?H+j!Gxyc;sg^<{MldW`kCbw-9nw+=ZWO7)f!sY|(Bg_H4 CEErG# delta 50 zcmZ2*j(Ns8<_-7OO|CHJnLL4$ZStpeT9aEig@Cl$WGfw>$-i8sCfBXknryX%XY;o8 GS>^ytxE726 diff --git a/PROMS/Formats/fmtall/VEGPBckall.xml b/PROMS/Formats/fmtall/VEGPBckall.xml index 69d71ae8a0bcad927158cdbf2e4323e7f0b92d54..286597449549f46bfd24f1d03d8a93e1d66baadd 100644 GIT binary patch delta 88 zcmZqM#@e@yb;E@Plf{_%Ca+r{H~H5BAtW~6bSoD|0kA;ALX*h`EPT_~g)p*B-ZO<~ ja@Jyz$?uknO`fn!Z*qV?$7H=l9Fr$3)!Xc`Xx|P1G{+=5 delta 58 zcmeC%#@e=xb;E@PtRW0V45gE=FEEF*j3;{;@=QKv!Z-N?Bg^EBg+`OxSQI9|TPU>o I+(L()0J1O`KmY&$ From 6f089482e6b1b28678a1da26094af80bb5c17275 Mon Sep 17 00:00:00 2001 From: John Jenko Date: Thu, 6 Nov 2025 15:58:30 -0500 Subject: [PATCH 35/47] F2025-035 Change the open/closed parenthesis on the 2nd and 3rd sub-step levelsl to just the close parenthesis --- PROMS/Formats/fmtall/VEGP1all.xml | Bin 184426 -> 184042 bytes PROMS/Formats/fmtall/VEGP2all.xml | Bin 236934 -> 236530 bytes PROMS/Formats/fmtall/VEGPAlrall.xml | Bin 211268 -> 210864 bytes PROMS/Formats/fmtall/VEGPBckall.xml | Bin 88846 -> 88462 bytes 4 files changed, 0 insertions(+), 0 deletions(-) diff --git a/PROMS/Formats/fmtall/VEGP1all.xml b/PROMS/Formats/fmtall/VEGP1all.xml index a3f49af9957c776641d8bcccd5bd6f697f3f23c1..92a8e7abe5bd18c6708b840499417954c397364c 100644 GIT binary patch delta 62 zcmaF0fcw>4?hP9DlkeGbOnY3>+VFY5P?b}S4 HFJu4!BY6~z delta 88 zcmeygov&>---b9NMvcje#)d#L&{%u&2Sbg?4~(49#ilnzF|ka3Vk9wng@MUr9peCy a!s!hu%xulijM|?WF#<8u_Gd=SJedG-mmk^y diff --git a/PROMS/Formats/fmtall/VEGPAlrall.xml b/PROMS/Formats/fmtall/VEGPAlrall.xml index 286b1781c5469c2932b19f62f1111479489aa515..f2fc06cc56736b974f36b2a094138da7d76bc9ba 100644 GIT binary patch delta 62 zcmX@|iD$!mo(&W9Ch2lbo};G$p*SY%8A?q4pqGUz+N@{Tu4l*y#7x`u44K6^0QZ3u A;Q#;t delta 95 zcmdn+p6AFXo(&W97&Rsz)DxcUp`!q1O-17ePj{$iAP5x)6GWmla f$K*Uam&pkZ9Fwc;ohDDPWNWT-*k0$rC?E*{>P#I= From 1c87585570e88f8495b4b0d9759c788955fbf524 Mon Sep 17 00:00:00 2001 From: John Jenko Date: Fri, 7 Nov 2025 09:51:18 -0500 Subject: [PATCH 36/47] =?UTF-8?q?F2025-036=20Removed=20the=20Two=20Column?= =?UTF-8?q?=20Attachment=20section=20style=20that=20is=20no=20longer=20nee?= =?UTF-8?q?ded=20because=20it=E2=80=99s=20identical=20to=20the=20=E2=80=9C?= =?UTF-8?q?Attachment=20-=20Two=20Column=20Step=20Editor=E2=80=9D=20sectio?= =?UTF-8?q?n=20style?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- PROMS/Formats/fmtall/VEGP2all.xml | Bin 236530 -> 233130 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/PROMS/Formats/fmtall/VEGP2all.xml b/PROMS/Formats/fmtall/VEGP2all.xml index 4b2a2e2a818c741829d2aeb98b037610b28b20e6..eced26724521ddb1c9a1396f3aed646d3ce168ec 100644 GIT binary patch delta 85 zcmeygop04#zJ?aYEld(url09y*4iF+g~^C(d%+LJM{L`<-Y~^L+0%I@F-L57U|~*c j2CJKHFo}_E`m1(kx#`PRGm322>t(KE+FsSgTp)0V_ delta 114 zcmZ2Am+#YdzJ?aYEld(ure`TJYfTs8VHVl$bcM-?Yr8=Y(<$cZ4jN2y+iw{#mvC-3 vc*@j-DLfr0thRm1H>Q2f2qUH&Ok!l4ek_Msg3)06!A|CKrtL Date: Mon, 10 Nov 2025 09:25:26 -0500 Subject: [PATCH 37/47] B2025-060 Fixes the printing a sub-section top continue message when the section is forced to start on the next page, either by PROMS print logic or when that sub-section is set to separate pagination. --- PROMS/Formats/fmtall/VEGP1all.xml | Bin 184042 -> 184072 bytes PROMS/Formats/fmtall/VEGP2all.xml | Bin 233130 -> 233142 bytes PROMS/Volian.Print.Library/vlnParagraph.cs | 5 ++++- 3 files changed, 4 insertions(+), 1 deletion(-) diff --git a/PROMS/Formats/fmtall/VEGP1all.xml b/PROMS/Formats/fmtall/VEGP1all.xml index 92a8e7abe5bd18c6708b840499417954c397364c..11cbc389376d5b67f36a913c1e98b8e18f3f3f79 100644 GIT binary patch delta 60 zcmaDgm%C#gcS8%~7N#SG(;KEU8L|5^xH5z=I8L{n#Uu^q#Li+;oNiXc;0Lo+QN7kQo4-O4SJX)w!iCR OikXjHRlXjxbpik%i5yY@ delta 69 zcmdlsmv7ZvzJ?aYElgeh+c$_aAK{w5D~Q=_c}EnJF^C_;xcy!qQ^|Y~yNPl7g=I`4 W)A?AKe{7eTz*NS$J<5tXCIkSuNg3?` diff --git a/PROMS/Volian.Print.Library/vlnParagraph.cs b/PROMS/Volian.Print.Library/vlnParagraph.cs index 2f307726..d2fd1df4 100644 --- a/PROMS/Volian.Print.Library/vlnParagraph.cs +++ b/PROMS/Volian.Print.Library/vlnParagraph.cs @@ -1855,7 +1855,10 @@ namespace Volian.Print.Library if (doSectionContinue) DoTopContinueMsg(cb, ref yPageStart, yTopMargin, docstyle, null); // If "ContinueSectionHeader" (format flag) is true then print the section title with "(Continued)" appended to it // B2020-164 added check for SpecialCaseCalvert to bypass IsSeparateSubsection STP O-67B-2 step 6.5 - if ((!MyItemInfo.IsSection || MyItemInfo.IsSubsection) && + // B2025-060 no section continue message if previous was not in same section or sub-section + // fixes Vogtle units 3&4 3-AOP-116 Attachments 2 & 3 + if ((!MyItemInfo.IsSection || MyItemInfo.IsSubsection) && + (MyItemInfo.ActiveSection == MyItemInfo.MyPrevious.ActiveSection) && MyItemInfo.ActiveFormat.PlantFormat.FormatData.SectData.StepSectionData.ContinueSectionHeader && (!MyItemInfo.IsSection || (MyItemInfo.IsSeparateSubsection || MyItemInfo.ActiveFormat.PlantFormat.FormatData.PrintData.SpecialCaseCalvert))) { From 875a8f101a9dde94c87eca37126af95a4c2b369f Mon Sep 17 00:00:00 2001 From: John Jenko Date: Fri, 14 Nov 2025 11:36:23 -0500 Subject: [PATCH 38/47] B2025-062 Fixed a null reference bug in the printing of Vogtle Units 3 & 4 AOP-204 --- PROMS/Volian.Print.Library/vlnParagraph.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/PROMS/Volian.Print.Library/vlnParagraph.cs b/PROMS/Volian.Print.Library/vlnParagraph.cs index d2fd1df4..591ed771 100644 --- a/PROMS/Volian.Print.Library/vlnParagraph.cs +++ b/PROMS/Volian.Print.Library/vlnParagraph.cs @@ -1858,7 +1858,7 @@ namespace Volian.Print.Library // B2025-060 no section continue message if previous was not in same section or sub-section // fixes Vogtle units 3&4 3-AOP-116 Attachments 2 & 3 if ((!MyItemInfo.IsSection || MyItemInfo.IsSubsection) && - (MyItemInfo.ActiveSection == MyItemInfo.MyPrevious.ActiveSection) && + (MyItemInfo.MyPrevious != null && MyItemInfo.ActiveSection == MyItemInfo.MyPrevious.ActiveSection) && MyItemInfo.ActiveFormat.PlantFormat.FormatData.SectData.StepSectionData.ContinueSectionHeader && (!MyItemInfo.IsSection || (MyItemInfo.IsSeparateSubsection || MyItemInfo.ActiveFormat.PlantFormat.FormatData.PrintData.SpecialCaseCalvert))) { From bd89af5e8c674a4aa88618e21fda76775f2584b9 Mon Sep 17 00:00:00 2001 From: mschill Date: Mon, 17 Nov 2025 07:05:52 -0500 Subject: [PATCH 39/47] C2019-036 View Only mode work with Checked Out Procedures --- PROMS/VEPROMS User Interface/frmVEPROMS.cs | 43 +++++-- .../VEPROMS.CSLA.Library/Extension/ItemExt.cs | 10 +- .../Extension/MultiUserExt.cs | 2 +- .../VEPROMS.CSLA.Library/Generated/Content.cs | 11 +- .../DisplayTabControl.cs | 15 ++- .../Volian.Controls.Library/DisplayTabItem.cs | 26 +++-- PROMS/Volian.Controls.Library/StepPanel.cs | 21 ++++ .../Volian.Controls.Library/StepTabRibbon.cs | 107 +++++++++++++++++- .../StepTabRibbon.designer.cs | Bin 577962 -> 583236 bytes 9 files changed, 208 insertions(+), 27 deletions(-) diff --git a/PROMS/VEPROMS User Interface/frmVEPROMS.cs b/PROMS/VEPROMS User Interface/frmVEPROMS.cs index 8f09424b..1fded9ad 100644 --- a/PROMS/VEPROMS User Interface/frmVEPROMS.cs +++ b/PROMS/VEPROMS User Interface/frmVEPROMS.cs @@ -98,6 +98,8 @@ namespace VEPROMS _SelectedStepTabPanel.MyStepTabRibbon.ContActionSummaryRequest += MyStepTabRibbon_ContActionSummaryRequest; _SelectedStepTabPanel.MyStepTabRibbon.AddProcToDVInTree -= new StepTabRibbonEvent(MyStepTabRibbon_AddProcToDocVersionInTree); _SelectedStepTabPanel.MyStepTabRibbon.AddProcToDVInTree += new StepTabRibbonEvent(MyStepTabRibbon_AddProcToDocVersionInTree); + _SelectedStepTabPanel.MyStepTabRibbon.EnableDisableStepProperties -= EnableDisableStepProperties; + _SelectedStepTabPanel.MyStepTabRibbon.EnableDisableStepProperties += new StepTabRibbonEvent(EnableDisableStepProperties); // F2022-024 Time Critical Action Summary _SelectedStepTabPanel.MyStepTabRibbon.TimeCriticalActionSummaryRequest -= MyStepTabRibbon_TimeCriticalActionSummaryRequest; _SelectedStepTabPanel.MyStepTabRibbon.TimeCriticalActionSummaryRequest += MyStepTabRibbon_TimeCriticalActionSummaryRequest; @@ -119,7 +121,7 @@ namespace VEPROMS //added by jcb 20130718 to support create pdf button when multi-unit and user selects a unit pi.MyDocVersion.DocVersionConfig.SelectedSlave = pi.ProcedureConfig.SelectedSlave; - + DlgPrintProcedure prnDlg = new DlgPrintProcedure(pi); //added by jcb 20130718 to support create pdf button when multi-unit and user selects a unit @@ -372,12 +374,12 @@ namespace VEPROMS cmbFont.SelectedIndex = -1; string[] parameters = System.Environment.CommandLine.Split(" ".ToCharArray()); string db = Volian.Base.Library.VlnSettings.GetDB(); - + if (db != null) Database.SelectedDatabase = db; //B2018-129 Most Recently Used list was being cleared. Needed to remove a (string) type case in the IF statement - if (!string.IsNullOrEmpty((string)Properties.Settings.Default["DefaultDB"])) + if (!string.IsNullOrEmpty((string)Properties.Settings.Default["DefaultDB"])) Database.LastDatabase = Properties.Settings.Default.DefaultDB; // Setup the Context menu for DisplaySearch including the symbols @@ -416,7 +418,7 @@ namespace VEPROMS // B2019-107 Error Log message for inconsistent PromsFixes _MyLog.InfoFormat("\r\nSession Beginning\r\n<===={0}[SQL:{1:yyMM.ddHH}]====== User: {2}/{3} Started {4} ===============>{5}" , Application.ProductVersion, Database.RevDate, Environment.UserDomainName, Environment.UserName, DateTime.Now.ToString("dddd MMMM d, yyyy h:mm:ss tt"), FormatInfo.Failed ?? ""); - + // C2022-030 Notify the user if the stored procedure in the database are not update to date // with those in the PROMSFixes.sql delivered with the PROMS executable string pfVersion = ExeInfo.GetAssocicatedPROMSFixesVersion(); @@ -546,7 +548,7 @@ namespace VEPROMS 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); tv.PrintTransitionReport += new vlnTreeViewEvent(tv_PrintTransitionReport); tv.ProcessingComplete += tv_ProcessingComplete; @@ -587,7 +589,7 @@ namespace VEPROMS } } - void tv_SelectDateToStartChangeBars(object sender, vlnTreeEventArgs args) + void tv_SelectDateToStartChangeBars(object sender, vlnTreeEventArgs args) { ProcedureInfo pi = (args.Node as VETreeNode).VEObject as ProcedureInfo; if (pi == null) return; @@ -1196,6 +1198,7 @@ namespace VEPROMS if (!MySessionInfo.CanCheckOutItem(pi.ItemID, CheckOutType.Procedure, ref message)) { + message = message.Replace("\r\nWould You like to open the procedure in View Only Mode?", ""); MessageBox.Show(this, message, "Procedure Already Checked Out", MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } @@ -2085,7 +2088,10 @@ namespace VEPROMS { foreach (DisplayTabItem dti in tc.MyBar.Items) { - if (!myList.Contains(dti.OwnerID)) + //C2019-036 View Only mode work with Checked Out Procedures + // View Only Mode is no longer checked out, so no longer has an OwnerID + // This will keep those tabs from auto-closing based on the timer + if (!myList.Contains(dti.OwnerID) && dti.MyStepTabPanel.MyStepPanel.VwMode != E_ViewMode.View) { MyCloseTabList.PushDTI(dti); } @@ -3926,6 +3932,7 @@ namespace VEPROMS string message = string.Empty; if (!MySessionInfo.CanCheckOutItem(args.ProcedureConfig.MyProcedure.ItemID, CheckOutType.Procedure, ref message)) { + message = message.Replace("\r\nWould You like to open the procedure in View Only Mode?", ""); MessageBox.Show(this, message, "Procedure Already Checked Out", MessageBoxButtons.OK, MessageBoxIcon.Warning); this.Cursor = Cursors.Default; return DialogResult.None; @@ -3949,6 +3956,7 @@ namespace VEPROMS string message = string.Empty; if (!MySessionInfo.CanCheckOutItem(args.SectionConfig.MySection.MySectionInfo.MyProcedure.ItemID, CheckOutType.Procedure, ref message)) { + message = message.Replace("\r\nWould You like to open the procedure in View Only Mode?", ""); MessageBox.Show(this, message, "Procedure Already Checked Out", MessageBoxButtons.OK, MessageBoxIcon.Warning); this.Cursor = Cursors.Default; return DialogResult.None; @@ -4749,6 +4757,11 @@ namespace VEPROMS // B2022-026 RO Memory reduction coding (Jakes Merge) displayRO.SetFindDocROButton(false); displayRO.LoadTree(); + + //C2019-036 View Only mode work with Checked Out Procedures + //In View Only Mode - Step Properties should be disabled + EnableDisableStepProperties(sender, new StepTabRibbonEventArgs(args.MyEditItem.MyItemInfo, 0, args.MyEditItem.MyStepPanel.VwMode)); + } else { @@ -4780,6 +4793,22 @@ namespace VEPROMS } + //C2019-036 View Only mode work with Checked Out Procedures + //In View Only Mode - Step Properties should be disabled + public void EnableDisableStepProperties(object sender, StepTabRibbonEventArgs args) + { + if (args.ViewMode == E_ViewMode.View && (infoTabs.Enabled || infoTabs.SelectedTab != infotabTags)) + { + infoTabs.Enabled = true; + infoTabs.SelectedTab = infotabTags; + infoTabs.Enabled = false; + } + else if (args.ViewMode != E_ViewMode.View && !infoTabs.Enabled) + { + infoTabs.Enabled = true; + } + } + void _LastStepRTB_EditModeChanged(object sender, EventArgs args) { if (_LastStepRTB.EditMode) // going into edit mode in a cell of the grid. diff --git a/PROMS/VEPROMS.CSLA.Library/Extension/ItemExt.cs b/PROMS/VEPROMS.CSLA.Library/Extension/ItemExt.cs index 62e5ca4a..532d3585 100644 --- a/PROMS/VEPROMS.CSLA.Library/Extension/ItemExt.cs +++ b/PROMS/VEPROMS.CSLA.Library/Extension/ItemExt.cs @@ -7984,12 +7984,20 @@ namespace VEPROMS.CSLA.Library public ProcedureInfo(SafeDataReader dr) : base(dr) { } #endif private ProcedureInfo() : base() { ;} - public new static ProcedureInfo Get(int itemID) + public new static ProcedureInfo Get(int itemID, bool forcerefresh = false) { //if (!CanGetObject()) // throw new System.Security.SecurityException("User not authorized to view a Item"); try { + //C2019-036 View Only mode work with Checked Out Procedures + // fixes caching issue + // so this forces a refresh of the cache + if (forcerefresh) + { + _CacheByPrimaryKey.Remove(itemID.ToString()); + } + ProcedureInfo tmp = GetCachedByPrimaryKey(itemID); if (tmp == null) { diff --git a/PROMS/VEPROMS.CSLA.Library/Extension/MultiUserExt.cs b/PROMS/VEPROMS.CSLA.Library/Extension/MultiUserExt.cs index ae52c60e..7c8f36c5 100644 --- a/PROMS/VEPROMS.CSLA.Library/Extension/MultiUserExt.cs +++ b/PROMS/VEPROMS.CSLA.Library/Extension/MultiUserExt.cs @@ -186,7 +186,7 @@ namespace VEPROMS.CSLA.Library if (string.IsNullOrEmpty(name)) { name = tmpproc.DisplayText; } - message = string.Format("The procedure {0} is already checked out to {1}", name, si.UserID); + message = string.Format("The procedure {0} is already checked out to {1}.\r\nWould You like to open the procedure in View Only Mode?", name, si.UserID); rv = rv && false; } else if (si.ProcessID != this.ProcessID && objectType == CheckOutType.Document) diff --git a/PROMS/VEPROMS.CSLA.Library/Generated/Content.cs b/PROMS/VEPROMS.CSLA.Library/Generated/Content.cs index 743a7fdd..a2bc7db8 100644 --- a/PROMS/VEPROMS.CSLA.Library/Generated/Content.cs +++ b/PROMS/VEPROMS.CSLA.Library/Generated/Content.cs @@ -990,12 +990,21 @@ namespace VEPROMS.CSLA.Library } return tmp; } - public static Content Get(int contentID) + public static Content Get(int contentID, bool forcerefresh = false) { if (!CanGetObject()) throw new System.Security.SecurityException("User not authorized to view a Content"); try { + //C2019-036 View Only mode work with Checked Out Procedures + // fixes caching issue + // this forces a refresh of the cache for a case when need to do a hard refresh + if (forcerefresh) + { + ConvertListToDictionary(); + _CacheByPrimaryKey.Remove(contentID.ToString()); + } + Content tmp = GetCachedByPrimaryKey(contentID); if (tmp == null) { diff --git a/PROMS/Volian.Controls.Library/DisplayTabControl.cs b/PROMS/Volian.Controls.Library/DisplayTabControl.cs index bda8b089..f58db41c 100644 --- a/PROMS/Volian.Controls.Library/DisplayTabControl.cs +++ b/PROMS/Volian.Controls.Library/DisplayTabControl.cs @@ -603,6 +603,8 @@ namespace Volian.Controls.Library { ItemInfo myItemInfo = myItemInfo2; + bool viewonlymode = false; + //B2025-046 Remember Tabs failing when swapping versions of PROMS if (myItemInfo?.MyDocVersion == null) // bug fix: B2016-108 disconnected data will not have a MyDocVersion { @@ -620,8 +622,11 @@ namespace Volian.Controls.Library { if (!MySessionInfo.CanCheckOutItem(myItemInfo.MyProcedure.ItemID, CheckOutType.Procedure, ref message)) { - FlexibleMessageBox.Show(this, message, "Procedure Already Checked Out", MessageBoxButtons.OK, MessageBoxIcon.Warning); - return null; + //C2019-036 View Only mode work with Checked Out Procedures + if (MessageBox.Show(this, message, "Procedure Already Checked Out", MessageBoxButtons.YesNo, MessageBoxIcon.Warning) == DialogResult.Yes) + viewonlymode = true; + else + return null; } } else @@ -682,7 +687,7 @@ namespace Volian.Controls.Library // C2023-016 if a Word section and doing Find/Replace don't open Word section, position to section title in step editor instead if (myItemInfo.MyContent.MyEntry == null || doingFindReplace) // If it is not a Word document open in step editor { - return OpenStepTabPage(myItemInfo, setFocus); + return OpenStepTabPage(myItemInfo, setFocus, viewonlymode); } else // Otherwise open it in the Word editor { @@ -1178,7 +1183,7 @@ namespace Volian.Controls.Library //} //public Dictionary dicEnhancedDocuments = new Dictionary(); - private DisplayTabItem OpenStepTabPage(ItemInfo myItemInfo, bool setFocus) + private DisplayTabItem OpenStepTabPage(ItemInfo myItemInfo, bool setFocus, bool viewonlymode = false) { ItemInfo proc = myItemInfo.MyProcedure; // Find procedure Item string key = "Item - " + proc.ItemID.ToString(); @@ -1197,7 +1202,7 @@ namespace Volian.Controls.Library } else // If not already open, create a new Page { - pg = new DisplayTabItem(this.components, this, proc, key); // Open a new Procedure Tab + pg = new DisplayTabItem(this.components, this, proc, key, viewonlymode); // Open a new Procedure Tab _MyDisplayTabItems.Add(key, pg); if (setFocus) { diff --git a/PROMS/Volian.Controls.Library/DisplayTabItem.cs b/PROMS/Volian.Controls.Library/DisplayTabItem.cs index cf7db754..dbddc13d 100644 --- a/PROMS/Volian.Controls.Library/DisplayTabItem.cs +++ b/PROMS/Volian.Controls.Library/DisplayTabItem.cs @@ -98,13 +98,18 @@ namespace Volian.Controls.Library } #endregion #region Constructors - public DisplayTabItem(IContainer container, DisplayTabControl myDisplayTabControl, ItemInfo myItemInfo, string myKey) + public DisplayTabItem(IContainer container, DisplayTabControl myDisplayTabControl, ItemInfo myItemInfo, string myKey, bool viewonlymode = false) { _MyItemInfo = myItemInfo; - if (MyItemInfo.MyContent.MyEntry == null) - OwnerID = myDisplayTabControl.MySessionInfo.CheckOutItem(myItemInfo.MyProcedure.ItemID, CheckOutType.Procedure); - else - OwnerID = myDisplayTabControl.MySessionInfo.CheckOutItem(myItemInfo.MyContent.MyEntry.DocID, CheckOutType.Document); + //C2019-036 View Only mode work with Checked Out Procedures + //don't want to check out if opening in View Only Mode Due to someone else having it checked out + if (!viewonlymode) + { + if (MyItemInfo.MyContent.MyEntry == null) + OwnerID = myDisplayTabControl.MySessionInfo.CheckOutItem(myItemInfo.MyProcedure.ItemID, CheckOutType.Procedure); + else + OwnerID = myDisplayTabControl.MySessionInfo.CheckOutItem(myItemInfo.MyContent.MyEntry.DocID, CheckOutType.Document); + } //Console.WriteLine("DisplayTabItem"); _MyKey = myKey; _MyDisplayTabControl = myDisplayTabControl; @@ -112,7 +117,7 @@ namespace Volian.Controls.Library InitializeComponent(); this.Click += new EventHandler(DisplayTabItem_Click); if (myItemInfo.MyContent.MyEntry == null) - SetupStepTabPanel(); + SetupStepTabPanel(viewonlymode); else SetupDSOTabPanel(); SetupSecurity(myItemInfo); @@ -128,6 +133,11 @@ namespace Volian.Controls.Library private bool MesssageShown = false; public void SetupSecurity(ItemInfo myItem) { + //C2019-036 View Only mode work with Checked Out Procedures + //is in View Only Mode, so do not set up the Security + if (OwnerID == 0) + return; + UserInfo ui = UserInfo.GetByUserID(OwnerInfo.Get(OwnerID).SessionUserID); if (ui == null) @@ -246,7 +256,7 @@ namespace Volian.Controls.Library /// /// Creates and sets-up a StepTabPanel /// - private void SetupStepTabPanel() + private void SetupStepTabPanel(bool viewonlymode = false) { ((System.ComponentModel.ISupportInitialize)(_MyDisplayTabControl.MyBar)).BeginInit(); _MyDisplayTabControl.MyBar.SuspendLayout(); @@ -276,7 +286,7 @@ namespace Volian.Controls.Library _MyDisplayTabControl.MyBar.ResumeLayout(false); DocVersionInfo dvi = _MyItemInfo.MyProcedure.ActiveParent as DocVersionInfo; //MyRTBItem.MyItemInfo.MyProcedure.ActiveParent as DocVersionInfo; if (dvi == null) return; - if (dvi.VersionType > 127) + if (dvi.VersionType > 127 || viewonlymode) MyStepTabPanel.MyStepPanel.VwMode = E_ViewMode.View; // C2021 - 027: Procedure level PC/PC - add _MyIteminfo to argument list if (dvi.MultiUnitCount > 1) diff --git a/PROMS/Volian.Controls.Library/StepPanel.cs b/PROMS/Volian.Controls.Library/StepPanel.cs index 8f509a33..9b47a403 100644 --- a/PROMS/Volian.Controls.Library/StepPanel.cs +++ b/PROMS/Volian.Controls.Library/StepPanel.cs @@ -9,6 +9,7 @@ using System.Drawing; using System.Text.RegularExpressions; using Volian.Base.Library; using JR.Utils.GUI.Forms; +using System.Linq; namespace Volian.Controls.Library { @@ -386,6 +387,26 @@ namespace Volian.Controls.Library // The following line expands the items needed to display SelectedItemInfo ExpandAsNeeded(myItemInfo); } + + //C2019-036 View Only mode work with Checked Out Procedures + public void ResetAll() + { + List itemIDs = Controls.OfType().Where(t => t?.MyItemInfo?.ActiveParent != null && t.MyItemInfo.ActiveParent.GetType() == typeof(ItemInfo)).Select(x => (x.MyItemInfo.ActiveParent as ItemInfo).ItemID).Distinct().ToList(); + + foreach (int itemID in itemIDs) + { + ItemInfo.ResetParts(itemID); + } + + // The following line actually reloads the procedure item + MyProcedureItemInfo = ItemInfo.Get(MyProcedureItemInfo.ItemID, true); + MyProcedureItemInfo.RefreshConfig(); + ContentInfo.Refresh(Content.Get(MyProcedureItemInfo.MyContent.ContentID, true)); + + // The following line expands the items needed to display SelectedItemInfo + ExpandAsNeeded(SelectedItemInfo); + } + /// /// Currently selected StepRTB /// diff --git a/PROMS/Volian.Controls.Library/StepTabRibbon.cs b/PROMS/Volian.Controls.Library/StepTabRibbon.cs index 6e31dae5..87ce1980 100644 --- a/PROMS/Volian.Controls.Library/StepTabRibbon.cs +++ b/PROMS/Volian.Controls.Library/StepTabRibbon.cs @@ -16,6 +16,8 @@ using DevComponents.DotNetBar; using Microsoft.Win32; using System.Diagnostics; using JR.Utils.GUI.Forms; +using System.Collections.Concurrent; +using System.Threading.Tasks; namespace Volian.Controls.Library { @@ -906,6 +908,11 @@ namespace Volian.Controls.Library // //SetButtonAndMenuEnabling(false); //} private Bitmap createTextBitmap(char ch) + { + return createTextBitmap(ch, new Font("FreeMono", 18, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Pixel)); + } + + private Bitmap createTextBitmap(char ch, Font objFont) { string txt = string.Format("{0}", ch); Bitmap objBmpImage = new Bitmap(1, 1); @@ -916,8 +923,6 @@ namespace Volian.Controls.Library // Create the Font object for the image text drawing. // later on, we could add logic to use either FreeMono or Arial Unicode MS based on the format being used // but for now, we are going to use FreeMono to create the symbol list - Font objFont = new Font("FreeMono", 18, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Pixel); - //Font objFont = new Font("Arial Unicode MS", 18, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Pixel); // Create a graphics object to measure the text's width and height. Graphics objGraphics = Graphics.FromImage(objBmpImage); @@ -937,7 +942,6 @@ namespace Volian.Controls.Library objGraphics.SmoothingMode = SmoothingMode.AntiAlias; objGraphics.TextContrast = 0; objGraphics.TextRenderingHint = TextRenderingHint.AntiAlias; - //objGraphics.DrawString(txt, objFont, new SolidBrush(Color.FromArgb(102, 102, 102)), 0, 0); objGraphics.DrawString(txt, objFont, new SolidBrush(Color.Black),0,0); objGraphics.Flush(); return (objBmpImage); @@ -2067,6 +2071,9 @@ namespace Volian.Controls.Library rtabHome.Select(); rtabTableGridTools.Visible = false; SetButtonMenuEnabledDisabledOnStepType(false); + //C2019-036 View Only mode work with Checked Out Procedures + //Is in View Only Mode so show button as selected + btnEditMode.Checked = btnCMEditMode1.Checked = true; this.Refresh(); return; } @@ -3338,10 +3345,43 @@ namespace Volian.Controls.Library public void SetupAdminMode() { } + + //C2019-036 View Only mode work with Checked Out Procedures + public event StepTabRibbonEvent EnableDisableStepProperties; + private void OnEnableDisableStepProperties(StepTabRibbonEventArgs args) + { + if (EnableDisableStepProperties != null) + EnableDisableStepProperties(this, args); + } private void btnToggleEditView_Click(object sender, EventArgs e) { if (MyEditItem == null) return; + + //C2019-036 View Only mode work with Checked Out Procedures + string message = string.Empty; + if (MyEditItem.MyStepPanel.VwMode == E_ViewMode.View && !MySessionInfo.CanCheckOutItem(MyEditItem.MyItemInfo.MyProcedure.ItemID, CheckOutType.Procedure, ref message)) + { + //someone else has the procedure checked out so cannot swap out of view only mode + message = message.Replace("\r\nWould You like to open the procedure in View Only Mode?", "\r\n\r\nYou will be unable to turn off View Only Mode for this procedure until it is checked in by the user specified above."); + MessageBox.Show(this, message, "Procedure Already Checked Out", MessageBoxButtons.OK, MessageBoxIcon.Warning); + return; + } + else if (MyEditItem.MyStepPanel.VwMode == E_ViewMode.View) + { + //swapping into edit mode, so check out procedure and Setup Security + (this.Parent as StepTabPanel).MyDisplayTabItem.OwnerID = MySessionInfo.CheckOutItem(MyEditItem.MyItemInfo.MyProcedure.ItemID, 0); + (this.Parent as StepTabPanel).MyDisplayTabItem.SetupSecurity(MyItemInfo); + } + else + { + //swapping into View Only mode, so check in procedure + OwnerInfo oi = OwnerInfo.GetByItemID(MyEditItem.MyItemInfo.MyProcedure.ItemID, CheckOutType.Procedure); + MySessionInfo.CheckInItem(oi.OwnerID); + } + MyEditItem.MyStepPanel.VwMode = MyEditItem.MyStepPanel.VwMode == E_ViewMode.Edit ? E_ViewMode.View : E_ViewMode.Edit; + //enable / disable the Step Properties Panel based on the ViewMode + OnEnableDisableStepProperties(new StepTabRibbonEventArgs(MyEditItem.MyItemInfo, 0, MyEditItem.MyStepPanel.VwMode)); MyEditItem.ToggleEditView(MyEditItem.MyStepPanel.VwMode); SetButtonAndMenuEnabling(true); SetStepButtonAndMenuEnabling(true); @@ -3355,7 +3395,62 @@ namespace Volian.Controls.Library // btnEnhancedDocSync.Checked = !btnEnhancedDocSync.Checked; //} + //C2019-036 View Only mode work with Checked Out Procedures + // using a blocking collection to make it thread safe in case someone + // spams hitting the refresh button + private BlockingCollection blockingRefreshProcedure = new BlockingCollection(); + //C2019-036 View Only mode work with Checked Out Procedures + private void btnRefreshProcedure_Click(object sender, EventArgs e) + { + //Consumer + Task.Run(() => + { + //Blocks until a newRefresh Procedure Run is available + while (!blockingRefreshProcedure.IsCompleted) + { + _ = blockingRefreshProcedure.Take(); + RefreshProcedure(); + } + }); + + //Producer + Task.Run(() => { blockingRefreshProcedure.Add(true); }); + } + + public void RefreshProcedure() + { + StepTabPanel stab_Panel = Parent as StepTabPanel; + + if (MyEditItem != null) + { + if (!MyEditItem.MyStepPanel.ContainsFocus) + this.Invoke((Action)(() => { MyEditItem.MyStepPanel.Focus(); })); + + E_ViewMode mode = MyEditItem.MyStepPanel.VwMode; + Application.DoEvents(); + this.Invoke((Action)(() => {MyEditItem.MyStepPanel.ResetAll();})); + Application.DoEvents(); + this.Invoke((Action)(() => {MyEditItem.MyStepPanel.Refresh();})); + Application.DoEvents(); + MyEditItem.MyStepPanel.VwMode = mode; + Application.DoEvents(); + } + else if (stab_Panel != null) + { + if (!stab_Panel.MyStepPanel.ContainsFocus) + this.Invoke((Action)(() => {stab_Panel.MyStepPanel.Focus();})); + + E_ViewMode mode = stab_Panel.MyStepPanel.VwMode; + Application.DoEvents(); + this.Invoke((Action)(() => {stab_Panel.MyStepPanel.ResetAll();})); + Application.DoEvents(); + this.Invoke((Action)(() => {stab_Panel.MyStepPanel.Refresh();})); + Application.DoEvents(); + stab_Panel.MyStepPanel.VwMode = mode; + Application.DoEvents(); + } + } private void btnROEdit_Click(object sender, EventArgs e) { if (VlnSettings.ReleaseMode.Equals("DEMO")) @@ -4865,10 +4960,11 @@ namespace Volian.Controls.Library public class StepTabRibbonEventArgs : EventArgs { public StepTabRibbonEventArgs() { ; } - public StepTabRibbonEventArgs(ItemInfo proc, int oringFlg = 0) + public StepTabRibbonEventArgs(ItemInfo proc, int oringFlg = 0, E_ViewMode viewMode = E_ViewMode.Edit) { _Proc = proc; OringFlg = oringFlg; + ViewMode = viewMode; } private ItemInfo _Proc; @@ -4884,6 +4980,9 @@ namespace Volian.Controls.Library get { return _OringFlg; } set { _OringFlg = value; } } + + //C2019-036 View Only mode work with Checked Out Procedures + public E_ViewMode ViewMode { get; set; } } public delegate void StepTabRibbonEvent(object sender, StepTabRibbonEventArgs args); diff --git a/PROMS/Volian.Controls.Library/StepTabRibbon.designer.cs b/PROMS/Volian.Controls.Library/StepTabRibbon.designer.cs index f374745296d67545dc0e0e3210589c9c65294b12..a7dc72adfbba1bbe8e7d7e701a8cb3030c1cf760 100644 GIT binary patch delta 1054 zcmZuwT}YE*6h3F)&pyMfY}wz)Z$A!OVmiSjqD%w-s9abgRyyZwvT4iTG9f|8i-^?O z&P5Sg;)OTbjcd8^#=9geZ-OAaiMr_`i1Mx9UszVxEQ`;5 zG;$T?;NrgOU|^Rc^a^Et4|t##ymWR*+8eyz=pUW-jZOQIMaLq9r+wn^7S+3@d@8z* zVnzpOC&EA6lFv@-O{mbo0v3jvQQ3}?vluIBvkJ3Pj?tcGyh}?99QbIFzQv=OX_e+Q zGs@A>vaTcbtV`70iu?3h8#G~)>XJO+?=~qH6Ze$9DMnEzfl6 zMpG-AGO&*9E0Qh41Al8e?NSq|B+0b6A{9_(1dq_j5Q=mvg0|S5l=GSk&$WrCNqL|V zm+*z!aD1Djp!4@ZdN&{#6YUm6(MXP2UXq!niBG!V|F{g#Jd`$M8uxR_z6C5z8z@cL z#i!|B^E_skxZ{I#K_5SW2A12bRX``NUEqQMSMh+KOuI2}n}+z?BkKlE zrnhQ6!*rBKurPUgt6t$*dUB{nY^Abg%rYe!F>4K(;S!hq_i|b9B~y{^Fs*+@LyHQR z`45Q2`?*^c1{t)6!Kq9{%+tpZ1H60K(;v_5;Zo`711^erykWJ++vP>7EJiOWnT9W||e32W{0nS#UgIeF9JT^QfvB=@!Dg9cM vHf_oQ`ruFuv{j{ess53q&^d$Bu`>yGf@j+`rFL?E4vpt2JHnrx%G$j@Ri7lI delta 103 zcmX?dMtRj@XaNZ^&T;VkRJF-o7D+rRvA_u2fbBt?3sYF|tiRF`HFj`iy2) zmB|g;ryTS_gGkc~xIC7{=Z%E|`nj|i^Jui*p GT0H Date: Wed, 19 Nov 2025 06:34:52 -0500 Subject: [PATCH 40/47] C2019-036 View Only Mode --- shouldn't prompt for View Only Mode if already open in another tab in View Only Mode --- PROMS/Volian.Controls.Library/DisplayTabControl.cs | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/PROMS/Volian.Controls.Library/DisplayTabControl.cs b/PROMS/Volian.Controls.Library/DisplayTabControl.cs index f58db41c..4f43164c 100644 --- a/PROMS/Volian.Controls.Library/DisplayTabControl.cs +++ b/PROMS/Volian.Controls.Library/DisplayTabControl.cs @@ -622,8 +622,15 @@ namespace Volian.Controls.Library { if (!MySessionInfo.CanCheckOutItem(myItemInfo.MyProcedure.ItemID, CheckOutType.Procedure, ref message)) { + DisplayTabItem dti = MyBar?.Items?.OfType().FirstOrDefault(x => x.MyItemInfo?.ItemID == myItemInfo.MyProcedure.ItemID); + //C2019-036 View Only mode work with Checked Out Procedures - if (MessageBox.Show(this, message, "Procedure Already Checked Out", MessageBoxButtons.YesNo, MessageBoxIcon.Warning) == DialogResult.Yes) + //shouldn't prompt - should just auto put in view only if already in open tab + //in view only + if ( + (dti != null && dti.MyStepTabPanel.MyStepPanel.VwMode == E_ViewMode.View) + || + MessageBox.Show(this, message, "Procedure Already Checked Out", MessageBoxButtons.YesNo, MessageBoxIcon.Warning) == DialogResult.Yes) viewonlymode = true; else return null; From 261f5a526cfa0aa3e2ec376579b1c1ad2c6f36fc Mon Sep 17 00:00:00 2001 From: mschill Date: Wed, 19 Nov 2025 08:42:09 -0500 Subject: [PATCH 41/47] C2019-036 View Only Mode - Handle special case where item is opened in a separate window and tabs are remembered --- PROMS/Volian.Controls.Library/DisplayTabControl.cs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/PROMS/Volian.Controls.Library/DisplayTabControl.cs b/PROMS/Volian.Controls.Library/DisplayTabControl.cs index 4f43164c..d919f1be 100644 --- a/PROMS/Volian.Controls.Library/DisplayTabControl.cs +++ b/PROMS/Volian.Controls.Library/DisplayTabControl.cs @@ -630,6 +630,8 @@ namespace Volian.Controls.Library if ( (dti != null && dti.MyStepTabPanel.MyStepPanel.VwMode == E_ViewMode.View) || + (SeparateWindows && (VersionID == 0 || VersionID != myItemInfo.MyDocVersion.VersionID)) + || //to handle special case where item will be opened in a separate window MessageBox.Show(this, message, "Procedure Already Checked Out", MessageBoxButtons.YesNo, MessageBoxIcon.Warning) == DialogResult.Yes) viewonlymode = true; else From 9002fb3828af33b56c69727f6b41e07e8f196fce Mon Sep 17 00:00:00 2001 From: mschill Date: Wed, 19 Nov 2025 08:54:00 -0500 Subject: [PATCH 42/47] C2019-036 View Mode - Avoid double prompt when Remembering Tabs & Open in Separate Window --- PROMS/Volian.Controls.Library/DisplayTabControl.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/PROMS/Volian.Controls.Library/DisplayTabControl.cs b/PROMS/Volian.Controls.Library/DisplayTabControl.cs index d919f1be..720fa1a8 100644 --- a/PROMS/Volian.Controls.Library/DisplayTabControl.cs +++ b/PROMS/Volian.Controls.Library/DisplayTabControl.cs @@ -630,7 +630,7 @@ namespace Volian.Controls.Library if ( (dti != null && dti.MyStepTabPanel.MyStepPanel.VwMode == E_ViewMode.View) || - (SeparateWindows && (VersionID == 0 || VersionID != myItemInfo.MyDocVersion.VersionID)) + (SeparateWindows && (VersionID == 0 || VersionID == myItemInfo.MyDocVersion.VersionID)) || //to handle special case where item will be opened in a separate window MessageBox.Show(this, message, "Procedure Already Checked Out", MessageBoxButtons.YesNo, MessageBoxIcon.Warning) == DialogResult.Yes) viewonlymode = true; From 7d87477d6839dd9695c94c9f5acdf9ab8837d4bd Mon Sep 17 00:00:00 2001 From: mschill Date: Wed, 19 Nov 2025 09:01:16 -0500 Subject: [PATCH 43/47] C2019-036 View Only - handle case when Separate Windows and Remember Tabs --- PROMS/Volian.Controls.Library/DisplayTabControl.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/PROMS/Volian.Controls.Library/DisplayTabControl.cs b/PROMS/Volian.Controls.Library/DisplayTabControl.cs index 720fa1a8..f54f0ea4 100644 --- a/PROMS/Volian.Controls.Library/DisplayTabControl.cs +++ b/PROMS/Volian.Controls.Library/DisplayTabControl.cs @@ -630,7 +630,7 @@ namespace Volian.Controls.Library if ( (dti != null && dti.MyStepTabPanel.MyStepPanel.VwMode == E_ViewMode.View) || - (SeparateWindows && (VersionID == 0 || VersionID == myItemInfo.MyDocVersion.VersionID)) + (SeparateWindows && VersionID == myItemInfo.MyDocVersion.VersionID) || //to handle special case where item will be opened in a separate window MessageBox.Show(this, message, "Procedure Already Checked Out", MessageBoxButtons.YesNo, MessageBoxIcon.Warning) == DialogResult.Yes) viewonlymode = true; From fa8b0bd6a174bd20d90f6dca34611ffe0e1e0be1 Mon Sep 17 00:00:00 2001 From: mschill Date: Thu, 20 Nov 2025 07:06:43 -0500 Subject: [PATCH 44/47] B2025-063 Show User in View Mode --- .../Volian.Controls.Library/DisplayTabItem.cs | 29 +++++++++++++++++-- 1 file changed, 27 insertions(+), 2 deletions(-) diff --git a/PROMS/Volian.Controls.Library/DisplayTabItem.cs b/PROMS/Volian.Controls.Library/DisplayTabItem.cs index dbddc13d..8206bf3c 100644 --- a/PROMS/Volian.Controls.Library/DisplayTabItem.cs +++ b/PROMS/Volian.Controls.Library/DisplayTabItem.cs @@ -136,9 +136,34 @@ namespace Volian.Controls.Library //C2019-036 View Only mode work with Checked Out Procedures //is in View Only Mode, so do not set up the Security if (OwnerID == 0) - return; + { - UserInfo ui = UserInfo.GetByUserID(OwnerInfo.Get(OwnerID).SessionUserID); + UserInfo uiViewOnly = UserInfo.GetByUserID(Base.Library.VlnSettings.UserID); + if (uiViewOnly.IsAdministrator()) + { + MyUserRole = $"{Base.Library.VlnSettings.UserID} - Administrator"; + } + else if (uiViewOnly.IsSetAdministrator(myItem.MyDocVersion)) + { + MyUserRole = $"{Base.Library.VlnSettings.UserID} - Set Administrator"; + } + else if (uiViewOnly.IsWriter(myItem.MyDocVersion)) + { + MyUserRole = $"{Base.Library.VlnSettings.UserID} - Writer"; + } + else if (uiViewOnly.IsROEditor(myItem.MyDocVersion)) + { + MyUserRole = $"{Base.Library.VlnSettings.UserID} - RO Editor"; + } + else + { + MyUserRole = $"{Base.Library.VlnSettings.UserID} - Reviewer"; + } + + return; + } + + UserInfo ui = UserInfo.GetByUserID(OwnerInfo.Get(OwnerID).SessionUserID); if (ui == null) { From 7eb94d75750f0c11db4189a8a67c7cea8c63d0bc Mon Sep 17 00:00:00 2001 From: mschill Date: Thu, 20 Nov 2025 07:23:23 -0500 Subject: [PATCH 45/47] C2025-063 If Separate Windows is set, should not open Remember Tabs. --- PROMS/VEPROMS User Interface/frmVEPROMS.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/PROMS/VEPROMS User Interface/frmVEPROMS.cs b/PROMS/VEPROMS User Interface/frmVEPROMS.cs index 1fded9ad..288f5d18 100644 --- a/PROMS/VEPROMS User Interface/frmVEPROMS.cs +++ b/PROMS/VEPROMS User Interface/frmVEPROMS.cs @@ -2497,7 +2497,7 @@ namespace VEPROMS //and set checkboxes based on what they are set to UserSettings usersettings = new UserSettings(VlnSettings.UserID); - if (DisPlayTabState.Rows.Count > 0 && (usersettings.UserSetting_OpenTabs_AutoOpen || !usersettings.UserSetting_OpenTabs_Remember)) + if (!Settings.Default.SeparateWindows && DisPlayTabState.Rows.Count > 0 && (usersettings.UserSetting_OpenTabs_AutoOpen || !usersettings.UserSetting_OpenTabs_Remember)) { //will open tabs by default / ask by default DialogResult result = DialogResult.Yes; From 23f4b672b29b2b5bef38f36396c66221438871f6 Mon Sep 17 00:00:00 2001 From: John Jenko Date: Fri, 21 Nov 2025 09:46:09 -0500 Subject: [PATCH 46/47] =?UTF-8?q?F2025-037=20Added=20=E2=80=9C/open?= =?UTF-8?q?=E2=80=9D=20and=20=E2=80=9C/reset=E2=80=9D=20to=20the=20replace?= =?UTF-8?q?words=20list=20and=20replace=20them=20as=20is=20so=20that=20the?= =?UTF-8?q?=20=E2=80=9Copen=E2=80=9D=20and=20=E2=80=9Creset=E2=80=9D=20are?= =?UTF-8?q?=20not=20bolded=20when=20preceded=20by=20a=20forward=20slash.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- PROMS/Formats/fmtall/VEGP1all.xml | Bin 184072 -> 185040 bytes PROMS/Formats/fmtall/VEGP2all.xml | Bin 233142 -> 234110 bytes PROMS/Formats/fmtall/VEGPAlrall.xml | Bin 210864 -> 211832 bytes 3 files changed, 0 insertions(+), 0 deletions(-) diff --git a/PROMS/Formats/fmtall/VEGP1all.xml b/PROMS/Formats/fmtall/VEGP1all.xml index 11cbc389376d5b67f36a913c1e98b8e18f3f3f79..0c7bf1cdfd44093489b02c6e86b471676768c563 100644 GIT binary patch delta 120 zcmeB}$9-Wbcf%IOb*hZ|)7Ppps&ncy_%jqRq%!19Zj9Q`tj~}?eZ4B9Do{8dA-o-^ yya=R2-kVXATc05asJ?e3KY&q2yX`} wFH!~S_;1aq$*s>21XN!P#3fKYMbjB=7}bFiMKFnWM{7nPX4>v(&0HD`053fu8UO$Q delta 36 rcmeyjgm2qizJ@J~ePY}5Bp8cSr(dvSWNANR&j`d!+t1iDZwdkc6nqX< diff --git a/PROMS/Formats/fmtall/VEGPAlrall.xml b/PROMS/Formats/fmtall/VEGPAlrall.xml index f2fc06cc56736b974f36b2a094138da7d76bc9ba..12c460fbb4a3d201b4e4165e1581bbbbbd3b594a 100644 GIT binary patch delta 140 zcmdn+p6ACmo`x-q*Z7(B8T_YT6kt^41Tq*37*ZMXCNo;^XVjm5UVu>@D435BoPLgv zkz@Nke#R`2>L8%nVusYog4-0i;XH;CkZz!C5sEC72a#>}Fl7W{rtKc4%o$7oDaj@? delta 36 rcmezIjc3Dqo`x-q*Z8NO<74F5zE6-bOSN6Vk`aiRwhLG?XD|T(8(Iuv From 37e727202cc50c4946f909b49932e6a7c5adc6b1 Mon Sep 17 00:00:00 2001 From: John Jenko Date: Mon, 1 Dec 2025 14:24:31 -0500 Subject: [PATCH 47/47] =?UTF-8?q?F2025-039=20Added=20=E2=80=9CDeselect?= =?UTF-8?q?=E2=80=9D,=20=E2=80=9Cdeselect=E2=80=9D,=20=E2=80=9CRefill?= =?UTF-8?q?=E2=80=9D,=20=E2=80=9Crefill=E2=80=9D=20to=20the=20replace=20wo?= =?UTF-8?q?rds=20list=20to=20the=20Vogtle=20Units=203&4=20formats?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- PROMS/Formats/fmtall/VEGP1all.xml | Bin 185040 -> 186088 bytes PROMS/Formats/fmtall/VEGP2all.xml | Bin 234110 -> 235158 bytes PROMS/Formats/fmtall/VEGPAlrall.xml | Bin 211832 -> 212880 bytes 3 files changed, 0 insertions(+), 0 deletions(-) diff --git a/PROMS/Formats/fmtall/VEGP1all.xml b/PROMS/Formats/fmtall/VEGP1all.xml index 0c7bf1cdfd44093489b02c6e86b471676768c563..09565922260b6aadb7c8ff92536d65e897168d71 100644 GIT binary patch delta 120 zcmcbxl>5b6?hSSGSc@4_8FD5!Hfm4aFpmYwySVu5WQW->-onMY?5PY8br%<(-&`}V zWX0qM=X9nkcrvoErZHp!^(%ItWG-SzoqYeCE+>#?fQwH5;K9h!{=toL`v*6s2i*WS Cb1yak delta 24 gcmaE{mixj|?hSSGHcwhmw4$BEn{hjbH`9Y|0GhoEJ^%m! diff --git a/PROMS/Formats/fmtall/VEGP2all.xml b/PROMS/Formats/fmtall/VEGP2all.xml index 37dcb82cb062f9577c6584e8812b8fec8882ba14..1a9b1c3fecc3d589ac63bbcc93648d39e8ef3836 100644 GIT binary patch delta 123 zcmeyjgm2nfz728xti=qe3^|h%i?kFFQz7+F9<3i^yJ%xMe|K>wRuBV&5CvdQ$`?W+HPRVoWKPDCVLL7