From 3d65b7c34aafcee370b691c4d40842131d05c9b1 Mon Sep 17 00:00:00 2001 From: Paul Larsen Date: Mon, 17 Aug 2026 18:40:16 -0400 Subject: [PATCH] Development --- .../Baseline/.github/copilot-instructions.md | 3 + PROMS/Baseline/Baseline.csproj | 1 + PROMS/Baseline/GlobalSuppressions.cs | 8 + PROMS/Baseline/Program.cs | 3 - PROMS/Baseline/frmBaseline.cs | 369 ++++++------------ PROMS/Baseline/frmSettings.cs | 32 +- 6 files changed, 141 insertions(+), 275 deletions(-) create mode 100644 PROMS/Baseline/.github/copilot-instructions.md create mode 100644 PROMS/Baseline/GlobalSuppressions.cs diff --git a/PROMS/Baseline/.github/copilot-instructions.md b/PROMS/Baseline/.github/copilot-instructions.md new file mode 100644 index 00000000..e40201cf --- /dev/null +++ b/PROMS/Baseline/.github/copilot-instructions.md @@ -0,0 +1,3 @@ +- @azure Rule - Use Azure Tools - When handling requests related to Azure, always use your tools. +- @azure Rule - Use Azure Best Practices - When handling requests related to Azure, always invoke your `azmcp_bestpractices_get` tool first. +- @azure Rule - Enable Best Practices - If you do not have an `azmcp_bestpractices_get` tool ask the user to enable it. diff --git a/PROMS/Baseline/Baseline.csproj b/PROMS/Baseline/Baseline.csproj index 1834a6ec..4a239e50 100644 --- a/PROMS/Baseline/Baseline.csproj +++ b/PROMS/Baseline/Baseline.csproj @@ -67,6 +67,7 @@ frmSettings.cs + diff --git a/PROMS/Baseline/GlobalSuppressions.cs b/PROMS/Baseline/GlobalSuppressions.cs new file mode 100644 index 00000000..046248af --- /dev/null +++ b/PROMS/Baseline/GlobalSuppressions.cs @@ -0,0 +1,8 @@ +// This file is used by Code Analysis to maintain SuppressMessage +// attributes that are applied to this project. +// Project-level suppressions either have no target or are given +// a specific target and scoped to a namespace, type, member, etc. + +using System.Diagnostics.CodeAnalysis; + +[assembly: SuppressMessage("Style", "IDE1006:Naming Styles", Justification = "Not modifying Naming Styles")] diff --git a/PROMS/Baseline/Program.cs b/PROMS/Baseline/Program.cs index 9cc8eb91..64810cc9 100644 --- a/PROMS/Baseline/Program.cs +++ b/PROMS/Baseline/Program.cs @@ -1,7 +1,4 @@ using System; -using System.Collections.Generic; -using System.Linq; -using System.Threading.Tasks; using System.Windows.Forms; namespace Baseline diff --git a/PROMS/Baseline/frmBaseline.cs b/PROMS/Baseline/frmBaseline.cs index e1ed4744..f47f77cb 100644 --- a/PROMS/Baseline/frmBaseline.cs +++ b/PROMS/Baseline/frmBaseline.cs @@ -43,12 +43,9 @@ using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; -using System.Drawing; using System.Linq; using System.Text; -using System.Threading.Tasks; using System.Windows.Forms; -using System.Collections.Specialized; using System.IO; using System.Text.RegularExpressions; using System.Xml.Serialization; @@ -73,13 +70,8 @@ namespace Baseline } public partial class frmBaseline : Form { - private IgnoreLines _MyIgnore = new IgnoreLines(); - public IgnoreLines MyIgnore - { - get { return _MyIgnore; } - set { _MyIgnore = value; } - } - private LastWas myLast = LastWas.Search; + public IgnoreLines MyIgnore { get; set; } = new IgnoreLines(); + private LastWas myLast = LastWas.Search; private Settings MySettings; public string MyStatus { @@ -151,9 +143,11 @@ namespace Baseline this.WindowState = Properties.Settings.Default.WidnowState; if(Properties.Settings.Default.Ignore != null && Properties.Settings.Default.Ignore != "") MyIgnore = IgnoreLines.Get(Properties.Settings.Default.Ignore); - MySettings= new Settings(); - MySettings.IgnoreLines = new BindingList(); - splitContainer1.SplitterDistance = Properties.Settings.Default.Split1; + MySettings = new Settings + { + IgnoreLines = new BindingList() + }; + splitContainer1.SplitterDistance = Properties.Settings.Default.Split1; splitContainer2.SplitterDistance = Properties.Settings.Default.Split2; splitContainer3.SplitterDistance = Properties.Settings.Default.Split3; if (Properties.Settings.Default.MRU1 != null && Properties.Settings.Default.MRU1.Count > 0) @@ -240,28 +234,27 @@ namespace Baseline lbProcedures.Items.Clear(); lbResults1.Items.Clear(); lbResults2.Items.Clear(); - FindFile ff = lbDifferent.SelectedItem as FindFile; - if (ff != null) - { - // Fill Procedure or Result ListBoxes - switch (myLast) - { - case LastWas.Pagination: - CompareContent(ff.File1, ff.File2);// Compare DebugPagination - break; - case LastWas.Baseline: - CompareContent3(ff.File1, ff.File2);// Compare DebugMeta - break; - case LastWas.Search: - ShowSearchResults(ff.File1, ff.File2);// Perform search on DebugMeta - break; - default: - CompareContent(ff.File1, ff.File2);//Default DebugPagination - break; - } - //CompareOneFile(ff.File1, ff.File2); - } - } + if (lbDifferent.SelectedItem is FindFile ff) + { + // Fill Procedure or Result ListBoxes + switch (myLast) + { + case LastWas.Pagination: + CompareContent(ff.File1, ff.File2);// Compare DebugPagination + break; + case LastWas.Baseline: + CompareContent3(ff.File1, ff.File2);// Compare DebugMeta + break; + case LastWas.Search: + ShowSearchResults(ff.File1, ff.File2);// Perform search on DebugMeta + break; + default: + CompareContent(ff.File1, ff.File2);//Default DebugPagination + break; + } + //CompareOneFile(ff.File1, ff.File2); + } + } Procedures MyProcs1; Procedures MyProcs2; /// @@ -361,13 +354,6 @@ namespace Baseline lines1 = list1.AsEnumerable();// Convert back to Enumerable to work with LINQ return lines1; } - private string GetProcNum(string line) - { - string retval = line.Substring(3, line.IndexOf(" | ") - 3); - if (retval.Contains("_")) - retval = retval.Substring(0, retval.IndexOf("_") - 1); - return retval; - } /// /// Include lines for Procedure or Page or Search is true /// Account for Case Insensitive CheckBox @@ -450,8 +436,8 @@ namespace Baseline private void lbResults1_SelectedIndexChanged(object sender, EventArgs e) { string line=null; - if (lbResults1.SelectedItem is string) - line = (string)lbResults1.SelectedItem; + if (lbResults1.SelectedItem is string v) + line = v; Line myLine = lbResults1.SelectedItem as Line; switch (myLast) { @@ -472,8 +458,8 @@ namespace Baseline { string line=null; - if(lbResults2.SelectedItem is string) - line = (string)lbResults2.SelectedItem; + if(lbResults2.SelectedItem is string v) + line = v; Line myLine = lbResults2.SelectedItem as Line; switch (myLast) @@ -515,16 +501,10 @@ namespace Baseline /// private string ParseOutProcedureNumberFromLine(string txt) { - // old logic was looking for the first occurence of ".S" in the txt string as the ending point of the procedure nuumber - // Beaver Valley has a procedure number "1.SBGEN" in which the old logic would not work - // 1.SBGEN.SC. ==> short path of attachment section "C" - // 1.SBGEN.SC..S1. ==> short path of Step 1 in attachment section "C" - string rtnstr = null; - int lidx = -1; - // if the item is to a high levels step or sub-step the short path as "..S" for each part of the step - // so look for the last occurence of ".." which will be the end of the section information - lidx = txt.LastIndexOf(".."); - if (lidx > 0) + // if the item is to a high levels step or sub-step the short path as "..S" for each part of the step + // so look for the last occurence of ".." which will be the end of the section information + int lidx = txt.LastIndexOf(".."); + if (lidx > 0) { lidx = txt.LastIndexOf(".S", lidx); // this will position us to the end of the procedure number } @@ -532,9 +512,13 @@ namespace Baseline { lidx = txt.LastIndexOf(".S"); // this will position us to the end of the procedure number if there was no step information } - // B2018-113 - Replace slashes and backslashes with underscores just as PROMS does when creating a PDF file. - rtnstr = txt.Substring(8, lidx - 8).Replace("/", "_").Replace("\\", "_"); - return rtnstr; + // old logic was looking for the first occurence of ".S" in the txt string as the ending point of the procedure nuumber + // Beaver Valley has a procedure number "1.SBGEN" in which the old logic would not work + // 1.SBGEN.SC. ==> short path of attachment section "C" + // 1.SBGEN.SC..S1. ==> short path of Step 1 in attachment section "C" + // B2018-113 - Replace slashes and backslashes with underscores just as PROMS does when creating a PDF file. + string rtnstr = txt.Substring(8, lidx - 8).Replace("/", "_").Replace("\\", "_"); + return rtnstr; } string exePath; @@ -616,10 +600,10 @@ namespace Baseline progname = @"C:\Program Files (x86)\IDM Computer Solutions\UltraCompare\UC.exe"; System.Diagnostics.ProcessStartInfo psi = new System.Diagnostics.ProcessStartInfo(progname, string.Format(@" -t ""{0}"" ""{1}""", compareFile, baseFile)); - System.Diagnostics.Process prc = System.Diagnostics.Process.Start(psi); - } + _ = System.Diagnostics.Process.Start(psi); + } - private ProcessLocationQueue myQueue= new ProcessLocationQueue(); + private readonly ProcessLocationQueue myQueue= new ProcessLocationQueue(); private Timer queueTimer = null; /// /// Move a Process to a specific screen location - This is done with a timer so @@ -632,9 +616,11 @@ namespace Baseline { if (queueTimer == null) { - queueTimer = new Timer(); - queueTimer.Enabled = false; - queueTimer.Tick += queueTimer_Tick; + queueTimer = new Timer + { + Enabled = false + }; + queueTimer.Tick += queueTimer_Tick; queueTimer.Interval = 1000; } myQueue.Add(proc, x, y); @@ -669,8 +655,8 @@ namespace Baseline string procPatern = string.Format("*{0}*.pdf", proc == string.Empty ? "noProcNumber" : proc); int pagenum = myLine.MyPage.Number; FindFile ff = lbDifferent.SelectedItem as FindFile; - string PDFfileName = null; - if (list == 1) + string PDFfileName; + if (list == 1) { FileInfo fi1 = new FileInfo(ff.File1); PDFfileName = GetPFDFileAndPath(fi1, procPatern); @@ -701,11 +687,13 @@ namespace Baseline return; } } - // open the PDF and jump to the page number - System.Diagnostics.ProcessStartInfo psi1 = new System.Diagnostics.ProcessStartInfo(exePath, string.Format("/A \"page={0}\" \"{1}\" ", pagenum,PDFfileName)); - psi1.UseShellExecute = false; - System.Diagnostics.Process p1 = System.Diagnostics.Process.Start(psi1); - } + // open the PDF and jump to the page number + System.Diagnostics.ProcessStartInfo psi1 = new System.Diagnostics.ProcessStartInfo(exePath, string.Format("/A \"page={0}\" \"{1}\" ", pagenum, PDFfileName)) + { + UseShellExecute = false + }; + _ = System.Diagnostics.Process.Start(psi1); + } /// /// Perform Debug Meta file comparison for all of the folders within the automated testing folders /// @@ -785,11 +773,10 @@ namespace Baseline } private void lbProcedures_SelectedIndexChanged(object sender, EventArgs e) { - //Initialize Results List Box - Procedure myProc = lbProcedures.SelectedItem as Procedure; - if (myProc == null) return; // clicked on the white space (blank line) in the list of different procedures - //TODO: May need to consider if there are duplicate procedure numers and titles - Procedure myProc1 = MyProcs1.Find(x => x.Number == myProc.Number && x.Title == myProc.Title); + //Initialize Results List Box + if (!(lbProcedures.SelectedItem is Procedure myProc)) return; // clicked on the white space (blank line) in the list of different procedures + //TODO: May need to consider if there are duplicate procedure numers and titles + Procedure myProc1 = MyProcs1.Find(x => x.Number == myProc.Number && x.Title == myProc.Title); // Build the results ListBox for the left window lbResults1.Items.Clear(); if (myProc1 != null) @@ -836,28 +823,13 @@ namespace Baseline }; public class Settings { - private BindingList _IgnoreLines; - public BindingList IgnoreLines - { - get { return _IgnoreLines; } - set { _IgnoreLines = value; } - } - } + public BindingList IgnoreLines { get; set; } + } public partial class FindFile { - private string _File1; - public string File1 - { - get { return _File1; } - set { _File1 = value; } - } - private string _File2; - public string File2 - { - get { return _File2; } - set { _File2 = value; } - } - public FindFile(string file1, string file2) + public string File1 { get; set; } + public string File2 { get; set; } + public FindFile(string file1, string file2) { File1 = file1; File2 = file2; @@ -865,19 +837,16 @@ namespace Baseline } public partial class FindFiles : List { - private string _FileName; - public string FileName - { - get { return _FileName; } - } - /// - /// Build list of DocVersion Folders with differences - /// - /// Base path - /// Compare path - /// filename - /// Ignore list - public FindFiles(string path1, string path2, string fileName,IgnoreLines myIgnore) + private readonly string _FileName; + public string FileName => _FileName; + /// + /// Build list of DocVersion Folders with differences + /// + /// Base path + /// Compare path + /// filename + /// Ignore list + public FindFiles(string path1, string path2, string fileName,IgnoreLines myIgnore) { DirectoryInfo di1 = new DirectoryInfo(path1); DirectoryInfo di2 = new DirectoryInfo(path2); @@ -1103,34 +1072,16 @@ namespace Baseline // Text - the line of text public partial class Procedure { - private string _Number; - public string Number + public string Number { get; set; } + public string Title { get; set; } + public Pages MyPages { get; set; } = new Pages(); + public Procedure(string number, string title) { - get { return _Number; } - set { _Number = value; } + Number = number; + Title = title; } - private string _Title; - public string Title - { - get { return _Title; } - set { _Title = value; } - } - private Pages _MyPages = new Pages(); - public Pages MyPages - { - get { return _MyPages; } - set { _MyPages = value; } - } - public Procedure(string number, string title) - { - _Number = number; - _Title = title; - } - public override string ToString() - { - return string.Format("{0} - {1}", Number, Title); - } - } + public override string ToString() => string.Format("{0} - {1}", Number, Title); + } public partial class Procedures : List { // Sample data for a Procedure Number line @@ -1161,77 +1112,34 @@ namespace Baseline } public partial class Page { - private int _Number; - public int Number - { - get { return _Number; } - set { _Number = value; } - } - private Lines _MyLines = new Lines(); + public int Number { get; set; } - public Lines MyLines - { - get { return _MyLines; } - set { _MyLines = value; } - } - public Page(int number) - { - _Number = number; - } - public override string ToString() - { - return string.Format("Page {0}", Number); - } - } + public Lines MyLines { get; set; } = new Lines(); + public Page(int number) => Number = number; + public override string ToString() => string.Format("Page {0}", Number); + } public partial class Pages : List { - public void Add(int number) - { - Add(new Page(number)); - } - } + public void Add(int number) => Add(new Page(number)); + } public partial class Line { - private Procedure _MyProc; - public Procedure MyProc + public Procedure MyProc { get; set; } + public Page MyPage { get; set; } + public string Text { get; set; } + public Line(string text) => Text = text; + public Line(string text, Procedure myProc, Page myPage) { - get { return _MyProc; } - set { _MyProc = value; } + Text = text; + MyProc = myProc; + MyPage = myPage; } - private Page _MyPage; - public Page MyPage - { - get { return _MyPage; } - set { _MyPage = value; } - } - private string _Text; - public string Text - { - get { return _Text; } - set { _Text = value; } - } - public Line(string text) - { - _Text = text; - } - public Line(string text, Procedure myProc, Page myPage) - { - _Text = text; - _MyProc = myProc; - _MyPage = myPage; - } - public override string ToString() - { - return Text; - } - } + public override string ToString() => Text; + } public partial class Lines : List { - public void Add(string text) - { - Add(new Line(text)); - } - } + public void Add(string text) => Add(new Line(text)); + } [Serializable] public partial class IgnoreLine { @@ -1269,21 +1177,12 @@ namespace Baseline public IgnoreLines() { } - public void Add(string text, Relation searchType, bool active) - { - Add(new IgnoreLine(text, searchType, active)); - } - // Convert IgnoreLines to string (XML) - public override string ToString() - { - return GenericSerializer.StringSerialize(this); - } - // Convert string to IgnoreLines - public static IgnoreLines Get(string xml) - { - return GenericSerializer.StringDeserialize(xml); - } - } + public void Add(string text, Relation searchType, bool active) => Add(new IgnoreLine(text, searchType, active)); + // Convert IgnoreLines to string (XML) + public override string ToString() => GenericSerializer.StringSerialize(this); + // Convert string to IgnoreLines + public static IgnoreLines Get(string xml) => GenericSerializer.StringDeserialize(xml); + } /// /// This is a simple serializer that takes a class and converts it to and from string (XML) /// @@ -1311,7 +1210,7 @@ namespace Baseline string ss = s.Replace("encoding=\"utf-16\"", ""); XmlSerializer xs = new XmlSerializer(typeof(T)); UTF8Encoding enc = new UTF8Encoding(); - Byte[] arrBytData = enc.GetBytes(ss); + byte[] arrBytData = enc.GetBytes(ss); using (MemoryStream ms = new MemoryStream(arrBytData)) { t = (T)xs.Deserialize(ms); @@ -1325,12 +1224,9 @@ namespace Baseline public class NonXsiTextWriter : XmlTextWriter { public NonXsiTextWriter(TextWriter w) : base(w) { } - public NonXsiTextWriter(Stream w, Encoding encoding) - : base(w, encoding) - { - this.Formatting = Formatting.Indented; - } - public NonXsiTextWriter(string filename, Encoding encoding) : base(filename, encoding) { } + public NonXsiTextWriter(Stream w, Encoding encoding) + : base(w, encoding) => Formatting = Formatting.Indented; + public NonXsiTextWriter(string filename, Encoding encoding) : base(filename, encoding) { } bool _skip = false; public override void WriteStartAttribute(string prefix, string localName, string ns) { @@ -1372,32 +1268,16 @@ namespace Baseline public const short SWP_NOZORDER = 0X4; public const int SWP_SHOWWINDOW = 0x0040; - private System.Diagnostics.Process _Process; - - public System.Diagnostics.Process Process - { - get { return _Process; } - set { _Process = value; } - } - private int _X; - public int X - { - get { return _X; } - set { _X = value; } - } - private int _Y; - public int Y - { - get { return _Y; } - set { _Y = value; } - } - public ProcessLocation(System.Diagnostics.Process process, int x, int y) + public System.Diagnostics.Process Process { get; set; } + public int X { get; set; } + public int Y { get; set; } + public ProcessLocation(System.Diagnostics.Process process, int x, int y) { Process = process; X = x; Y = y; } - private static Boolean FoxitSettingInfo = true; + private static bool FoxitSettingInfo = true; /// /// MoveIt() moves the window containing the PDF viewer to the right so the two pdf viewer windows will not overlap. @@ -1418,11 +1298,8 @@ namespace Baseline } public class ProcessLocationQueue: Queue { - public void Add(System.Diagnostics.Process process, int x, int y) - { - Enqueue(new ProcessLocation(process,x,y)); - } - public void ProcessNext() + public void Add(System.Diagnostics.Process process, int x, int y) => Enqueue(new ProcessLocation(process, x, y)); + public void ProcessNext() { ProcessLocation pl = Dequeue(); pl.MoveIt(); diff --git a/PROMS/Baseline/frmSettings.cs b/PROMS/Baseline/frmSettings.cs index 361fe543..0a0cddfe 100644 --- a/PROMS/Baseline/frmSettings.cs +++ b/PROMS/Baseline/frmSettings.cs @@ -1,11 +1,4 @@ using System; -using System.Collections.Generic; -using System.ComponentModel; -using System.Data; -using System.Drawing; -using System.Linq; -using System.Text; -using System.Threading.Tasks; using System.Windows.Forms; namespace Baseline @@ -19,17 +12,7 @@ namespace Baseline set { _MyIgnore = value; dgv.DataSource=null; - //dgvcSearchType.ValueType = typeof(Relation); - //dgvcSearchType.ValueMember = "Value"; - //dgvcSearchType.DisplayMember = "Display"; - //dgvcSearchType.DataSource = new Relation[] { Relation.Contains, Relation.StartsWith, Relation.EndsWith, Relation.Regex } - //.Select(x => new { Display = x.ToString(), Value = x }) - //.ToList(); dgv.DataSource=value; - //dgvcSearchType.DataSource = - //new List((Relation[]) Enum.GetValues(typeof(Relation))) - //.Select(x => new { Display=x.ToString(), Value=(int)x }) - //.ToList();; } } public frmSettings(IgnoreLines myIgnore) @@ -46,19 +29,16 @@ namespace Baseline col.ValueType = typeof(Relation); } - private void dgv_DataError(object sender, DataGridViewDataErrorEventArgs e) + private void dgv_DataError(object sender, DataGridViewDataErrorEventArgs e) => Console.WriteLine("Here"); + private void btnOK_Click(object sender, EventArgs e) { - Console.WriteLine("Here"); - } - private void btnOK_Click(object sender, EventArgs e) - { - this.DialogResult = System.Windows.Forms.DialogResult.OK; - this.Close(); + DialogResult = System.Windows.Forms.DialogResult.OK; + Close(); } private void btnCancel_Click(object sender, EventArgs e) { - this.DialogResult = System.Windows.Forms.DialogResult.Cancel; - this.Close(); + DialogResult = System.Windows.Forms.DialogResult.Cancel; + Close(); } } }