From 8eb8a328d1ac9f7671e544e5115fe4f24d4346e0 Mon Sep 17 00:00:00 2001 From: mschill Date: Tue, 19 Aug 2025 13:32:23 -0400 Subject: [PATCH 1/5] C2025-035 RO Performance Improvement Add some code to rebuild specific indexes (like [IX_RofstID_DbiID_ParentID] ON [dbo].[RofstChild]) after a new RO.FST is imported. --- PROMS/VEPROMS User Interface/PROMSFixes.Sql | 18 ++++++++++++------ .../VEPROMS.CSLA.Library/Config/ROFSTLookup.cs | 2 +- 2 files changed, 13 insertions(+), 7 deletions(-) diff --git a/PROMS/VEPROMS User Interface/PROMSFixes.Sql b/PROMS/VEPROMS User Interface/PROMSFixes.Sql index 1bbc54ab..1b594eaa 100644 --- a/PROMS/VEPROMS User Interface/PROMSFixes.Sql +++ b/PROMS/VEPROMS User Interface/PROMSFixes.Sql @@ -18917,9 +18917,10 @@ GO Copyright 2020 - Volian Enterprises, Inc. All rights reserved. *****************************************************************************/ /* - ========================================================================================================== - Author: Jake Ropar + ========================================================================================================== + Author: Jake Ropar / Matthew Schill Create Date: 06/23/2022 + Modify Date: 08/18/2025 Description: Finalizes Rofst Header Record / Updates LoadedDate if Success ========================================================================================================== */ @@ -18936,13 +18937,18 @@ GO Set LoadedDate = GetDate() Where RofstID = @RofstID; + + --always rebuild the rofst child and default indexes + DBCC DBREINDEX ('RofstChild'); + DBCC DBREINDEX ('RofstDefaultValue'); + -- Rebuild/Reorganize Indexes Exec [dbo].[vesp_UtilityCheckIndexes] 20.0, 5.0, 0, 1; - + Return; End - Go + GO IF (@@Error = 0) PRINT 'Procedure Creation: [vesp_RofstHeaderFinalizeLoad] Succeeded' ELSE PRINT 'Procedure Creation: [vesp_RofstHeaderFinalizeLoad] Error on Creation' @@ -24377,8 +24383,8 @@ BEGIN TRY -- Try Block DECLARE @RevDate varchar(255) DECLARE @RevDescription varchar(255) - set @RevDate = '08/13/2025 8:07 AM' - set @RevDescription = 'Improve Performance loading procedures with Alarms' + set @RevDate = '08/18/2025 2:07 PM' + set @RevDescription = 'Updated Index maintenance that occurs after RO FST Load to improve RO Performance' Select cast(@RevDate as datetime) RevDate, @RevDescription RevDescription PRINT 'SQL Code Revision ' + @RevDate + ' - ' + @RevDescription diff --git a/PROMS/VEPROMS.CSLA.Library/Config/ROFSTLookup.cs b/PROMS/VEPROMS.CSLA.Library/Config/ROFSTLookup.cs index 79bcf3bf..087b1c5d 100644 --- a/PROMS/VEPROMS.CSLA.Library/Config/ROFSTLookup.cs +++ b/PROMS/VEPROMS.CSLA.Library/Config/ROFSTLookup.cs @@ -839,7 +839,7 @@ namespace VEPROMS.CSLA.Library { using (SqlCommand cmd = cn.CreateCommand()) { - cmd.CommandTimeout = Database.DefaultTimeout; + cmd.CommandTimeout = 0; cmd.CommandType = CommandType.StoredProcedure; cmd.CommandText = "vesp_RofstHeaderFinalizeLoad"; From 8f154ebf482b09438877c24c740743a6c7c5cfc1 Mon Sep 17 00:00:00 2001 From: mschill Date: Thu, 21 Aug 2025 14:25:53 -0400 Subject: [PATCH 2/5] C2025-001 Replace 3rd party Ionic.zip component --- .../VEPROMS User Interface/VEPROMS_UI.csproj | 6 +- .../VEPROMS User Interface/dlgExportImport.cs | 427 +++++++++--------- 2 files changed, 223 insertions(+), 210 deletions(-) diff --git a/PROMS/VEPROMS User Interface/VEPROMS_UI.csproj b/PROMS/VEPROMS User Interface/VEPROMS_UI.csproj index 593c1005..e6a0cace 100644 --- a/PROMS/VEPROMS User Interface/VEPROMS_UI.csproj +++ b/PROMS/VEPROMS User Interface/VEPROMS_UI.csproj @@ -111,10 +111,6 @@ False ..\..\..\..\3rdPartyLibraries\DotNetBar\DotNetBar4.6Build\DevComponents.DotNetBar2.dll - - False - ..\..\..\..\3rdPartyLibraries\Ionic\Ionic.Zip.dll - ..\..\..\..\3rdPartyLibraries\RtfConverter\bin\Debug\Itenso.Rtf.Interpreter.dll @@ -133,6 +129,8 @@ + + diff --git a/PROMS/VEPROMS User Interface/dlgExportImport.cs b/PROMS/VEPROMS User Interface/dlgExportImport.cs index df2e4acb..da772d9d 100644 --- a/PROMS/VEPROMS User Interface/dlgExportImport.cs +++ b/PROMS/VEPROMS User Interface/dlgExportImport.cs @@ -7,7 +7,7 @@ using Volian.Controls.Library; using Volian.Base.Library; using System.Xml; using System.IO; -using Ionic.Zip; +using System.IO.Compression; using System.Text.RegularExpressions; using JR.Utils.GUI.Forms; using System.Linq; @@ -188,14 +188,13 @@ namespace VEPROMS if (MyFolder != null) { sfd.FileName = string.Format("{0}-{1}.expx", Database.ActiveDatabase, MyFolder.Name); - if (sfd.ShowDialog(this) == DialogResult.OK && sfd.FileName != string.Empty) - { - txtExport.Text = sfd.FileName; - if (File.Exists(txtExport.Text)) - File.Delete(txtExport.Text); - MyExpxZipFile = new ZipFile(txtExport.Text, Encoding.UTF8); - MyExpxZipFile.Save(); - } + if (sfd.ShowDialog(this) == DialogResult.OK && sfd.FileName != string.Empty) + { + txtExport.Text = sfd.FileName; + if (File.Exists(txtExport.Text)) + File.Delete(txtExport.Text); + MyExpZipFileName = txtExport.Text; + } } else if (MyProcedure != null) { @@ -211,8 +210,8 @@ namespace VEPROMS else lblExportStatus.Text = "Awaiting Export File Name:"; } - private ZipFile MyExpxZipFile = null; - private ZipFile MyImpxZipFile = null; + private string MyExpZipFileName = null; + private string MyImpZipFileName = null; private DateTime MyStart; private bool successfullExport = true; @@ -892,84 +891,94 @@ namespace VEPROMS } private bool LoadImportDataDocument() { - floatFoldout = new Dictionary(); - ZipEntry ze = MyExpxZipFile[0]; - string fn = PEIPath + @"\" + ze.FileName; - ze.Extract(PEIPath, ExtractExistingFileAction.OverwriteSilently); - XmlDocument xd = new XmlDocument(); - xd.Load(fn); - bool didImp = LoadFormats(xd, "folder/formats/format"); - if (!didImp) + using (FileStream zipToOpen = new FileStream(MyExpZipFileName, FileMode.OpenOrCreate)) { - this.Cursor = Cursors.Default; - this.btnImport.Enabled = true; // allow user to select a different export file to import - this.btnDoImport.Enabled = true; // allow user to change mind and perform the import - return false; // Return False to Indicate that the Import did not succeed - } - string name = xd.DocumentElement.Attributes.GetNamedItem("name").InnerText; - Folder ff = AddFolder(Folder.Get(MyFolder.FolderID), xd, name); - if (ff == null) - { - // C2020-032: Import Procedure set when existing name exists, allow user to import with 'Copy (#) of'. - // This is similar functionality to the import of a procedure without the overwrite part. - string msg = string.Format("The procedure set you are importing, {0}, already exists.\n\nDo you want to import {0} as a COPY of the existing set?\n\nThis will prefix the name with \"Copy (#) of\"", name); - DialogResult dr = MessageBox.Show(this, msg, "Create Copy Of Existing Procedure Set", MessageBoxButtons.OKCancel, MessageBoxIcon.Stop); - if (dr == DialogResult.OK) + using (ZipArchive MyExpxZipFile = new ZipArchive(zipToOpen, ZipArchiveMode.Update)) { - string number = ""; - int max = -1; - // get maximum number of existing copies. - foreach (FolderInfo fi in MyFolder.ChildFolders) + floatFoldout = new Dictionary(); + ZipArchiveEntry ze = MyExpxZipFile.Entries[0]; + if (!Directory.Exists(Path.Combine(PEIPath, "folder"))) + Directory.CreateDirectory(Path.Combine(PEIPath, "folder")); + string fn = Path.Combine(PEIPath, "folder", ze.Name); + ze.ExtractToFile(fn, true); + XmlDocument xd = new XmlDocument(); + xd.Load(fn); + bool didImp = LoadFormats(xd, "folder/formats/format"); + if (!didImp) { - int indx = fi.Name.IndexOf("Copy ("); - if (indx > -1) - { - int indxend = fi.Name.IndexOf(")", indx); - if (indxend > indx) - { - string tmp = fi.Name.Substring(indx + 6, indxend - (indx + 6)); - int ii = Convert.ToInt32(tmp); - if (ii > max) max = ii; - } - } + this.Cursor = Cursors.Default; + this.btnImport.Enabled = true; // allow user to select a different export file to import + this.btnDoImport.Enabled = true; // allow user to change mind and perform the import + return false; // Return False to Indicate that the Import did not succeed } - number = max > -1 ? (max + 1).ToString() : "1"; - name = string.Format("Copy ({0}) of {1}", number, name); + string name = xd.DocumentElement.Attributes.GetNamedItem("name").InnerText; + Folder ff = AddFolder(Folder.Get(MyFolder.FolderID), xd, name); + if (ff == null) + { + // C2020-032: Import Procedure set when existing name exists, allow user to import with 'Copy (#) of'. + // This is similar functionality to the import of a procedure without the overwrite part. + string msg = string.Format("The procedure set you are importing, {0}, already exists.\n\nDo you want to import {0} as a COPY of the existing set?\n\nThis will prefix the name with \"Copy (#) of\"", name); + DialogResult dr = MessageBox.Show(this, msg, "Create Copy Of Existing Procedure Set", MessageBoxButtons.OKCancel, MessageBoxIcon.Stop); + if (dr == DialogResult.OK) + { + string number = ""; + int max = -1; + // get maximum number of existing copies. + foreach (FolderInfo fi in MyFolder.ChildFolders) + { + int indx = fi.Name.IndexOf("Copy ("); + if (indx > -1) + { + int indxend = fi.Name.IndexOf(")", indx); + if (indxend > indx) + { + string tmp = fi.Name.Substring(indx + 6, indxend - (indx + 6)); + int ii = Convert.ToInt32(tmp); + if (ii > max) max = ii; + } + } + } + number = max > -1 ? (max + 1).ToString() : "1"; + name = string.Format("Copy ({0}) of {1}", number, name); - ff = AddFolder(Folder.Get(MyFolder.FolderID), xd, name); + ff = AddFolder(Folder.Get(MyFolder.FolderID), xd, name); + } + else + return false; + } + _MyNewFolder = FolderInfo.Get(ff.FolderID); + AddAnnotationTypes(xd); + DocVersionInfo dvi = AddDocVersion(ff, xd); + MyDocVersion = dvi; + xd = null; + lblImportStatus.Text = "Creating Procedures..."; + Application.DoEvents(); + ProcedureInfo pi = null; + pbImportProcedure.Value = 0; + pbImportProcedure.Maximum = MyExpxZipFile.Entries.Count - 1; + if (!Directory.Exists(Path.Combine(PEIPath, "procedures"))) + Directory.CreateDirectory(Path.Combine(PEIPath, "procedures")); + for (int i = 1; i < MyExpxZipFile.Entries.Count; i++) + { + ze = MyExpxZipFile.Entries[i]; + fn = Path.Combine(PEIPath, "procedures", ze.Name); + ze.ExtractToFile(fn, true); + xd = new XmlDocument(); + xd.Load(fn); + pi = AddProcedure(xd.DocumentElement, dvi, pi); + GC.Collect(); // need to cleanup memory after importing each procedure due to use of Regular Expressions in processing RO and Transition links + } + DirectoryInfo di = new DirectoryInfo(PEIPath); + DirectoryInfo[] dis = di.GetDirectories(); + for (int d = 0; d < dis.Length; d++) + dis[d].Delete(true); + lblImportStatus.Text = "Updating Transitions"; + AddTransitions(); + FixFloatingFoldouts(); + SaveTransitionAndItemContentIDs(); + return true; } - else - return false; } - _MyNewFolder = FolderInfo.Get(ff.FolderID); - AddAnnotationTypes(xd); - DocVersionInfo dvi = AddDocVersion(ff, xd); - MyDocVersion = dvi; - xd = null; - lblImportStatus.Text = "Creating Procedures..."; - Application.DoEvents(); - ProcedureInfo pi = null; - pbImportProcedure.Value = 0; - pbImportProcedure.Maximum = MyExpxZipFile.Entries.Count - 1; - for (int i = 1; i < MyExpxZipFile.Entries.Count; i++) - { - ze = MyExpxZipFile[i]; - fn = PEIPath + @"\" + ze.FileName; - ze.Extract(PEIPath, ExtractExistingFileAction.OverwriteSilently); - xd = new XmlDocument(); - xd.Load(fn); - pi = AddProcedure(xd.DocumentElement, dvi, pi); - GC.Collect(); // need to cleanup memory after importing each procedure due to use of Regular Expressions in processing RO and Transition links - } - DirectoryInfo di = new DirectoryInfo(PEIPath); - DirectoryInfo[] dis = di.GetDirectories(); - for (int d = 0; d < dis.Length; d++) - dis[d].Delete(true); - lblImportStatus.Text = "Updating Transitions"; - AddTransitions(); - FixFloatingFoldouts(); - SaveTransitionAndItemContentIDs(); - return true; } private void FixSectionStart(ProcedureInfo pi) { @@ -1254,85 +1263,85 @@ namespace VEPROMS // the xml files are then added (or replaced) in the .impx file. private void SaveTransitionAndItemContentIDs() { - XmlDocument xd = new XmlDocument(); - XmlElement xe = xd.CreateElement("items"); - xd.AppendChild(xe); - string fn = PEIPath + @"\items.xml"; - foreach (int key in Old2NewItem.Keys) + using (FileStream zipToOpen = new FileStream(MyImpZipFileName, FileMode.OpenOrCreate)) { - xe = xd.CreateElement("item"); - xe.Attributes.SetNamedItem(AddAttribute(xd, "old", key.ToString())); - xe.Attributes.SetNamedItem(AddAttribute(xd, "new", Old2NewItem[key].ToString())); - xd.DocumentElement.AppendChild(xe); - } - xd.Save(fn); - ZipEntry ze = MyImpxZipFile["items.xml"]; - MyImpxZipFile.RemoveEntry(ze); - MyImpxZipFile.Save(); - MyImpxZipFile.AddFile(fn, ""); - MyImpxZipFile.Save(); - File.Delete(fn); - xd = new XmlDocument(); - xe = xd.CreateElement("contents"); - xd.AppendChild(xe); - fn = PEIPath + @"\contents.xml"; - foreach (int key in Old2NewContent.Keys) - { - xe = xd.CreateElement("content"); - xe.Attributes.SetNamedItem(AddAttribute(xd, "old", key.ToString())); - xe.Attributes.SetNamedItem(AddAttribute(xd, "new", Old2NewContent[key].ToString())); - xd.DocumentElement.AppendChild(xe); - } - xd.Save(fn); - ze = MyImpxZipFile["contents.xml"]; - MyImpxZipFile.RemoveEntry(ze); - MyImpxZipFile.Save(); - MyImpxZipFile.AddFile(fn, ""); - MyImpxZipFile.Save(); - File.Delete(fn); - xd = new XmlDocument(); - xe = xd.CreateElement("transitions"); - xd.AppendChild(xe); - fn = PEIPath + @"\transitions.xml"; - if (PendingTransitions != null && PendingTransitions.DocumentElement.HasChildNodes) - { - foreach (XmlNode nd in PendingTransitions.DocumentElement.ChildNodes) + using (ZipArchive MyImpxZipFile = new ZipArchive(zipToOpen, ZipArchiveMode.Update)) { - if (nd.InnerText == "") - xd.DocumentElement.AppendChild(xd.ImportNode(nd, true)); + XmlDocument xd = new XmlDocument(); + XmlElement xe = xd.CreateElement("items"); + xd.AppendChild(xe); + string fn = PEIPath + @"\items.xml"; + foreach (int key in Old2NewItem.Keys) + { + xe = xd.CreateElement("item"); + xe.Attributes.SetNamedItem(AddAttribute(xd, "old", key.ToString())); + xe.Attributes.SetNamedItem(AddAttribute(xd, "new", Old2NewItem[key].ToString())); + xd.DocumentElement.AppendChild(xe); + } + xd.Save(fn); + ZipArchiveEntry ze = MyImpxZipFile.GetEntry("items.xml"); + ze.Delete(); + _ = MyImpxZipFile.CreateEntryFromFile(fn, Path.GetFileName(fn)); + File.Delete(fn); + xd = new XmlDocument(); + xe = xd.CreateElement("contents"); + xd.AppendChild(xe); + fn = PEIPath + @"\contents.xml"; + foreach (int key in Old2NewContent.Keys) + { + xe = xd.CreateElement("content"); + xe.Attributes.SetNamedItem(AddAttribute(xd, "old", key.ToString())); + xe.Attributes.SetNamedItem(AddAttribute(xd, "new", Old2NewContent[key].ToString())); + xd.DocumentElement.AppendChild(xe); + } + xd.Save(fn); + ze = MyImpxZipFile.GetEntry("contents.xml"); + ze.Delete(); + _ = MyImpxZipFile.CreateEntryFromFile(fn, Path.GetFileName(fn)); + File.Delete(fn); + xd = new XmlDocument(); + xe = xd.CreateElement("transitions"); + xd.AppendChild(xe); + fn = PEIPath + @"\transitions.xml"; + if (PendingTransitions != null && PendingTransitions.DocumentElement.HasChildNodes) + { + foreach (XmlNode nd in PendingTransitions.DocumentElement.ChildNodes) + { + if (nd.InnerText == "") + xd.DocumentElement.AppendChild(xd.ImportNode(nd, true)); + } + } + xd.Save(fn); + ze = MyImpxZipFile.GetEntry("transitions.xml"); + ze.Delete(); + _ = MyImpxZipFile.CreateEntryFromFile(fn, Path.GetFileName(fn)); + File.Delete(fn); } } - xd.Save(fn); - ze = MyImpxZipFile["transitions.xml"]; - MyImpxZipFile.RemoveEntry(ze); - MyImpxZipFile.Save(); - MyImpxZipFile.AddFile(fn, ""); - MyImpxZipFile.Save(); - File.Delete(fn); } // This is called only when we are importing an entire folder and there is a .impx file (a zip file) // the name of the .impx file is based on the folder name containing the export file being imported // This will read in the saved ItemIDs (old and new), ContentIDs (old andnew), library document IDs (old and new), and pending transitions - private void ReadTransitionAndItemContentIDs() + private void ReadTransitionAndItemContentIDs(ZipArchive MyImpxZipFile) { - ZipEntry ze = MyImpxZipFile["items.xml"]; - ze.Extract(PEIPath, ExtractExistingFileAction.OverwriteSilently); + ZipArchiveEntry ze = MyImpxZipFile.GetEntry("items.xml"); string fn = PEIPath + @"\items.xml"; + ze.ExtractToFile(fn, true); XmlDocument xd = new XmlDocument(); xd.Load(fn); // B2016-176, B2016-197 Transitions were no always properly resolved - don't load in the old item ids File.Delete(fn); - ze = MyImpxZipFile["contents.xml"]; - ze.Extract(PEIPath, ExtractExistingFileAction.OverwriteSilently); + ze = MyImpxZipFile.GetEntry("contents.xml"); fn = PEIPath + @"\contents.xml"; + ze.ExtractToFile(fn, true); xd = new XmlDocument(); xd.Load(fn); // B2016-176, B2016-197 Transitions were no always properly resolved - don't load in the old content ids File.Delete(fn); - ze = MyImpxZipFile["libdocs.xml"]; - ze.Extract(PEIPath, ExtractExistingFileAction.OverwriteSilently); + ze = MyImpxZipFile.GetEntry("libdocs.xml"); fn = PEIPath + @"\libdocs.xml"; + ze.ExtractToFile(fn, true); xd = new XmlDocument(); xd.Load(fn); XmlNodeList nl = xd.SelectNodes("//libdoc"); @@ -1344,9 +1353,9 @@ namespace VEPROMS Old2NewLibDoc.Add(oldid, newid); } File.Delete(fn); - ze = MyImpxZipFile["transitions.xml"]; - ze.Extract(PEIPath, ExtractExistingFileAction.OverwriteSilently); + ze = MyImpxZipFile.GetEntry("transitions.xml"); fn = PEIPath + @"\transitions.xml"; + ze.ExtractToFile(fn, true); PendingTransitions.Load(fn); File.Delete(fn); } @@ -1374,53 +1383,53 @@ namespace VEPROMS else dn = fi.Name.Substring(0, fi.Name.IndexOf(".")); txtImport.Text = ofd.FileName; - ReadOptions ro = new ReadOptions(); - ro.Encoding = Encoding.UTF8; - MyExpxZipFile = ZipFile.Read(txtImport.Text, ro); - string fn = string.Format(@"{0}\{1}.impx", PEIPath, dn); - if (File.Exists(fn)) + MyExpZipFileName = txtImport.Text; + string fn = string.Format(@"{0}\{1}.impx", PEIPath, dn); + MyImpZipFileName = fn; + if (File.Exists(fn)) { - MyImpxZipFile = ZipFile.Read(fn, ro); - ReadTransitionAndItemContentIDs(); + using (ZipArchive MyImpxZipFile = ZipFile.OpenRead(fn)) + ReadTransitionAndItemContentIDs(MyImpxZipFile); } else { - MyImpxZipFile = new ZipFile(fn, Encoding.UTF8); - //transitions - XmlElement xe = PendingTransitions.CreateElement("transitions"); - PendingTransitions.AppendChild(xe); - fn = PEIPath + @"\transitions.xml"; - PendingTransitions.Save(fn); - MyImpxZipFile.AddFile(fn, ""); - MyImpxZipFile.Save(); - File.Delete(fn); - //itemids - XmlDocument xd = new XmlDocument(); - xe = xd.CreateElement("items"); - xd.AppendChild(xe); - fn = PEIPath + @"\items.xml"; - xd.Save(fn); - MyImpxZipFile.AddFile(fn, ""); - MyImpxZipFile.Save(); - File.Delete(fn); - //contentids - xd = new XmlDocument(); - xe = xd.CreateElement("contents"); - xd.AppendChild(xe); - fn = PEIPath + @"\contents.xml"; - xd.Save(fn); - MyImpxZipFile.AddFile(fn, ""); - MyImpxZipFile.Save(); - File.Delete(fn); - //libdocids - xd = new XmlDocument(); - xe = xd.CreateElement("libdocs"); - xd.AppendChild(xe); - fn = PEIPath + @"\libdocs.xml"; - xd.Save(fn); - MyImpxZipFile.AddFile(fn, ""); - MyImpxZipFile.Save(); - File.Delete(fn); + using (FileStream zipToOpen = new FileStream(fn, FileMode.OpenOrCreate)) + { + using (ZipArchive MyImpxZipFile = new ZipArchive(zipToOpen, ZipArchiveMode.Update)) + { + //transitions + XmlElement xe = PendingTransitions.CreateElement("transitions"); + PendingTransitions.AppendChild(xe); + fn = PEIPath + @"\transitions.xml"; + PendingTransitions.Save(fn); + _ = MyImpxZipFile.CreateEntryFromFile(fn, Path.GetFileName(fn)); + File.Delete(fn); + //itemids + XmlDocument xd = new XmlDocument(); + xe = xd.CreateElement("items"); + xd.AppendChild(xe); + fn = PEIPath + @"\items.xml"; + xd.Save(fn); + _ = MyImpxZipFile.CreateEntryFromFile(fn, Path.GetFileName(fn)); + File.Delete(fn); + //contentids + xd = new XmlDocument(); + xe = xd.CreateElement("contents"); + xd.AppendChild(xe); + fn = PEIPath + @"\contents.xml"; + xd.Save(fn); + _ = MyImpxZipFile.CreateEntryFromFile(fn, Path.GetFileName(fn)); + File.Delete(fn); + //libdocids + xd = new XmlDocument(); + xe = xd.CreateElement("libdocs"); + xd.AppendChild(xe); + fn = PEIPath + @"\libdocs.xml"; + xd.Save(fn); + _ = MyImpxZipFile.CreateEntryFromFile(fn, Path.GetFileName(fn)); + File.Delete(fn); + } + } } } if (MyDocVersion != null) @@ -1595,27 +1604,31 @@ namespace VEPROMS ExportAssociation(xe, ai, "association"); string fn = PEIPath + @"\folder.xml"; xn.OwnerDocument.Save(fn); - MyExpxZipFile.AddFile(fn, "folder"); - MyExpxZipFile.Save(); - File.Delete(fn); - //here - lblExportStatus.Text = "Exporting Procedures..."; - Application.DoEvents(); - if (dvi.Procedures.Count > 0) + using (FileStream zipToOpen = new FileStream(MyExpZipFileName, FileMode.OpenOrCreate)) { - pbExportProcedure.Value = 0; - pbExportProcedure.Maximum = dvi.Procedures.Count; - lblExportProcedure.Text = pbExportProcedure.Maximum.ToString() + " Procedures"; - foreach (ItemInfo ii in dvi.Procedures) - { - XmlDocument xd = new XmlDocument(); - ExportItem(xd, ii, "procedure"); - fn = string.Format(@"{0}\proc{1}.xml", PEIPath, pbExportProcedure.Value.ToString().PadLeft(4, '0')); - xd.Save(fn); - MyExpxZipFile.AddFile(fn, "procedures"); - MyExpxZipFile.Save(); + using (ZipArchive MyExpxZipFile = new ZipArchive(zipToOpen, ZipArchiveMode.Update)) + { + _ = MyExpxZipFile.CreateEntryFromFile(fn, $"folder/{Path.GetFileName(fn)}"); File.Delete(fn); - xd = null; + //here + lblExportStatus.Text = "Exporting Procedures..."; + Application.DoEvents(); + if (dvi.Procedures.Count > 0) + { + pbExportProcedure.Value = 0; + pbExportProcedure.Maximum = dvi.Procedures.Count; + lblExportProcedure.Text = pbExportProcedure.Maximum.ToString() + " Procedures"; + foreach (ItemInfo ii in dvi.Procedures) + { + XmlDocument xd = new XmlDocument(); + ExportItem(xd, ii, "procedure"); + fn = string.Format(@"{0}\proc{1}.xml", PEIPath, pbExportProcedure.Value.ToString().PadLeft(4, '0')); + xd.Save(fn); + _ = MyExpxZipFile.CreateEntryFromFile(fn, $"procedures/{Path.GetFileName(fn)}"); + File.Delete(fn); + xd = null; + } + } } } } @@ -1839,12 +1852,14 @@ namespace VEPROMS //and handled/overridden in dlgExportEP.cs } - protected virtual void SetROLocation(ref XmlElement xindivid, ROFSTLookup.rochild roc, RODbInfo rodb, bool isMulti) + protected virtual void SetEPEnhancedDocLinks(ref XmlElement xe, ItemInfo ii) { //do nothing - this will be for Electronic procedures only //and handled/overridden in dlgExportEP.cs } - protected virtual void SetEPEnhancedDocLinks(ref XmlElement xe, ItemInfo ii) + + + protected virtual void SetROLocation(ref XmlElement xindivid, ROFSTLookup.rochild roc, RODbInfo rodb, bool isMulti) { //do nothing - this will be for Electronic procedures only //and handled/overridden in dlgExportEP.cs From 3ea4307716f8c9e1df5b0ef6fd6a255dd514f001 Mon Sep 17 00:00:00 2001 From: mschill Date: Tue, 26 Aug 2025 06:57:57 -0400 Subject: [PATCH 3/5] C2025-051 Add a "General Tools" option to the V->Proms Menu. --- .../Properties/Resources.Designer.cs | 10 + .../Properties/Resources.resx | 1562 ++++++++--------- .../Resources/toolbox.png | Bin 0 -> 3353 bytes .../VEPROMS User Interface/VEPROMS_UI.csproj | 10 + .../frmBatchRefresh.Designer.cs | 256 +-- .../VEPROMS User Interface/frmBatchRefresh.cs | 333 +--- .../frmBatchRefresh.resx | 315 ++-- PROMS/VEPROMS User Interface/frmGenTools.cs | 436 +++++ .../frmGenTools.designer.cs | 853 +++++++++ PROMS/VEPROMS User Interface/frmGenTools.resx | 192 ++ PROMS/VEPROMS User Interface/frmVEPROMS.cs | 19 + 11 files changed, 2440 insertions(+), 1546 deletions(-) create mode 100644 PROMS/VEPROMS User Interface/Resources/toolbox.png create mode 100644 PROMS/VEPROMS User Interface/frmGenTools.cs create mode 100644 PROMS/VEPROMS User Interface/frmGenTools.designer.cs create mode 100644 PROMS/VEPROMS User Interface/frmGenTools.resx diff --git a/PROMS/VEPROMS User Interface/Properties/Resources.Designer.cs b/PROMS/VEPROMS User Interface/Properties/Resources.Designer.cs index 4b979a37..527927c9 100644 --- a/PROMS/VEPROMS User Interface/Properties/Resources.Designer.cs +++ b/PROMS/VEPROMS User Interface/Properties/Resources.Designer.cs @@ -250,6 +250,16 @@ namespace VEPROMS.Properties { } } + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap toolbox { + get { + object obj = ResourceManager.GetObject("toolbox", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + /// /// Looks up a localized resource of type System.Drawing.Bitmap. /// diff --git a/PROMS/VEPROMS User Interface/Properties/Resources.resx b/PROMS/VEPROMS User Interface/Properties/Resources.resx index 79126e6a..403a8ef4 100644 --- a/PROMS/VEPROMS User Interface/Properties/Resources.resx +++ b/PROMS/VEPROMS User Interface/Properties/Resources.resx @@ -112,403 +112,399 @@ 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 - + - 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 + SUVORK5CYII= - iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 - YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAAlwSFlzAAALEgAA - CxIB0t1+/AAAAhxJREFUOE+lkutLk2EYxutP6Wt/QYZDp/M03cHDZofZ1DUFXZZuAw9g5dIOloKuyKzc - LM1lZQyzk5aKIaFghxGV5ZeKoD40orLyw689j7aX6aygB64vD+/1u+7ree+NwIb/OgKwWn0XX+P3v+RM - 13O8nSGOtz7C0zRLQ/00TucUjopxdlmGIrZIeDyAMN8bg86O7+Kj6Pm6uMThY89wuXopNAfWAv6U7HY/ - oHrvJHZbEJc7iNk0sBawXvK3xZ+c61mgpsaH0XAeR9UkebkXFMDfOlc57lNiHcZaPCABJfY7GPRnFcB6 - yZ+//KDY9hC1ej+mggH27JtCr+vGbAmizfIqgO7Ia9++tURL88fogwnzwrswxp0TWIr6yTX2UFo2Srb2 - FLr8QdLTWhWAtyNEMLiIy/lCAqT5bZiZ0HsSDDdkZ5FcWDRMZkY7mux+UtQeBSD+8+XBME73EzmycccE - WyLGTakBNmdekZ1Fsr7gKprUI6g0PlSJ9QrgkGcWf+8HTne94UT7PE3NIWobZnBUT1FaPio7LydfQp18 - kK0JLqnoIokNE+a29lck64qjSs/fjZDovJzsjyb/XkC5iWI921aSBcBiq6Dv2gjTc4/JNJXLzurkAzHJ - MYDKynE8LU/Jsd4lMSOP2sYW5kLzDI3cRJWStdK5To68WvKizD5m377t+qeIMJkCGI0+crQnSdMcJSmp - MW5yzATxyP969wsj3Z5bZZr4EQAAAABJRU5ErkJggg== + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6 + JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAACXBIWXMAAAsSAAALEgHS3X78AAACDUlE + QVQ4T6WR609ScQCG/Vf62l+QTSYo3lAuXkAtDJTQTclSYDPdrCTpYsmm1CIrwdIgKx1Tu2mpw7mmm11Y + syy/VGurD7FWUfnhaedonDHCL57tPR/Ozvs8v/ecDCBjJ0l5IGT4xjsCgTdc9q3i7Y9yrucZrq5lOtoX + sdsj2BpnOWAcIy1AKD+egf6+X8JLietHfINTZ1/hcAxRaQilArYzO50LtByex2oJ43CGMeiDqYB05p/x + P1wdXKe11Y9Oew1b8zxlpdclwHZmYXOz7Qm1pglM5qAIqLU+RKu5IgHSmb99/43Z8hSF4hj6iiCHjkTQ + qAcwGMOoirwSYMC3yoP7G7i7vySV1z/G0O2fw1gzQqlukLr6aYpVF1GXj5Kf1yMBvH1RwuE4Dvtrqfwh + xlL0E5naSXGzYK6smaCwwIOyeIQchUsCCJtvjcawO1+IR9btm2OPdpJduSF2F94WNwtmTcUdlLmnkSn9 + yLLaJcBJ1zKBoc9c8r3nvGeNru4obR1L2Foi1DVMi5s3zTdRyE+wN9MhJgEQvrZQ7vW8Ra42J5JfflCM + sHnTHEiY/0W8Cb+qd8ssFI2WRobvTrG48pxCfYO4WSE/nmROAjQ1zeJyv6TE9IisgjLaOt2sRNcYm7qH + LKdoa/PRpGISoN46Y62uGv9aXTWOXh9Cp/NTorpAnvIM2dmd/zUnAXaSv09Hyy0dwKNkAAAAAElFTkSu + QmCC - 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 - fvLwiCIAAAAASUVORK5CYII= + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6 + JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAACXBIWXMAAAsSAAALEgHS3X78AAABxElE + QVQ4T6WS3WtScRzGRS+UilLZCHKs9FgMfFk7TlZESYQE4sWu+g+ErvcHLOmyXXRRuxm7KcgSFBx5Udh6 + JW9601DGxraL0UXsBR2VMDzHT3wFg+04kvmD53dx4Pn8vuf7PCbA1I/aVzKZ5CjaB+jlaDo09lrsNlr4 + xybk0+GAbDZLPB4nFosRjUZRQ+MEg6Nt8/e1rf8DyuUyiUQCr9eLzWbDbLYwMOhic1fnU7UHgK7rpFIp + FMWD2WLBaj3OWbePH9s670rbjATUwwGappHJZFBDKnaHkzND53ArAc77LrH6U6PwpYbngr87QMyVSoVr + kQin7A6uXL3Ow/lnTN66jS98k+qGzkKxjmtY6Q6o1WpMT9/B4XQyejFMNv+hPfbTfImpu4/4uq6Tfl9n + 4LSrO2Dx9RvG1BBuj0Jq4VXbLGPLy2IuLms8XvzFSfugESA5L62sEwiqRG7E2NhsGsxvKxpzL35z7IR9 + P6BTknqjRTpXIHw5QuHjksH8stRk9nkXQKdhkrOM/W1lh5kHTwzm/Ocm93N/jIBOw6QkkrNEJduWhck/ + y9jyspjv5RpGgDSrIymJ5CxRybZlYWI4qH+AfvQXV+bjUFtgSEoAAAAASUVORK5CYII= - iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 - YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAAlwSFlzAAASdAAA - EnQB3mYfeAAAAldJREFUOE+Nk91PUnEYx4E27/sDuu2q7rrpos3mWv0BratWa2urluuiLaerC6cXsbHZ - elHUWavmC9qAlR6zDA0wA6NA3gSBhMjMgyIICJ63b88PFhtCW2d7dn5n5/l+ns/vd3bUAFTs0k7EKosD - l1qjUUmlkupQU5NKo5JVbReOqmtaGIDV/fEo3QBRAUoiUBAUZEsK0nsKtnIy2Pu2SZ61lPv/VnXBGkQZ - KFI4v0/hooLtgoIUhTeyMlpGi+VqfhSvgdQAigKQo6kZNjWv4KMnBaM1CUc4C1cA5ZqYLKC1fbwKqQHs - MmWaavfyOH5+DIdPDVbrbCsHV2wP/l8S3jvzjQHbBRl8TqmGr3bbMGZJ4kqXtQw6c5OD56cEy9dcYwBP - +51z8zh52YhjZBBNSQhvyghuyFWTLwkycP0DsJ5RkEjLWNuSEUnJCFE4QMod/e4yoOUGh89rIt46d+sN - ul8GEKdwjIV5CSu/JfgofKmzon/k3HMMWzdhj4ngHA0AnUNuxEh5lWfKlXC7vjL5xEUjzEs7sEVFzEcE - vP6UrTe41+tAiKYyZe+6hG9JiZSnygCtIQJrVMBcWMRsSIDZnqkHdDywwU+Tl+mUWXiJDmuElJ+8SYBb - LuDDqoB3KyKmAyJeWRsA7mhn4aaw64cEZ1zE4ncRp69XDHrMCcwEBXAB0vcJMMzv1Bvc7uLAPpGDwgsU - ZvttvlYB6EwJTPkp7N2HySNgxJKuB9y6a8JTYxiDhiD6R33QD3sx8MIF/TMn+oYW0TuwgMd9VugeTkPX - M1MPOPiX/e/zH+FgAbUYRYuJAAAAAElFTkSuQmCC + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6 + JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAACXBIWXMAABJ0AAASdAHeZh94AAACP0lE + QVQ4T53R30tTYRzHcf+F/oD+g7rrpovAkKg/wMsogqAk6SIoFLsQDTIEox/+xKIf/kymmB4zTe2o2War + 6XTT6aZb/tyZTuec03Oec95xznAgW130wAeeA8/39XwOTw6QY+Zxu59sqehY4tF7r7V/0u7j+Pxx0hvz + gLk0Aw41SKgGsUOD6IHBVly3gAc9yr8BTYekBvtHBrGkwXbCIBLX2Yjp5LUkreQ+D55ATgBJFeKHBrvm + rfsGX6ci2OQV7L4YTg9WPvQkKCxqTyMngD2zcsJgzK1wNr+VUxca0rlcKOEMHDC7Lhhw7GcHthM6StxI + D98sH6V1aIUbZbL1femOxNSqYOhnPDugxHWGXQrnr9s4k9+KPyLwhXW8G3q6yY+QYMD5F2Bt1yAU1Vne + 0lmM6MyHdTzrguI6lzWcVyDxfVnjk2MvEyh/5yEY1QmYw4pgblMwsy64Vpqqf/rKG5rkMGMBDcmeBSht + dBGICBYUs3JquKg2dfO5qza6JncY9WuMLKp0f4tlAg+r7cxvCquye03wa0WQV9BrARVti8h+lWGfxuC8 + StfYbiZQ/HSU2Q3B9GpqeDIkaJbDvPwYQppO8GVB5fOcRp9Ho0POAtyvGMS1KnD+FjiCGhNLGhdvpxpU + dYXo96pIHpXuGZW2kZ1M4F6ZZD2RPagxvqRZ/5t7KwVUdobonVXpdh/ROaXSPBTNBO6WdPLK5qOhzUtd + ywy1TW7q3zqpfe2gpnGC6vpxXtTIVD7ro7KqPxP43/wBY1onCIyPcuwAAAAASUVORK5CYII= - iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 - YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAAlwSFlzAAALEgAA - CxIB0t1+/AAAAlRJREFUOE+lk+lLVFEYxuu/6UOE5IfKFkiJkJSiXMjEUUtN0solxTLJrflghq1TaWbj - mg4hOeNuw7iUe+bMuIVEYpBNaoy51Dj315wbqXeSCLrwfjmc5/c8z8u5W4Et//UJwMYZGTBFfZgwM2Hu - 5W1PG10tz2nQFVFTnBfgflc233ho6TPGTFr7WZodx2m3Is33INlamB0t5UnBZQrzkg+7QxSAsaEuFm0W - pqyN3MiIJTdFRVbiKaa7c5jpyyAnKcSlVyZWAAY7DEhfe8lMCCElym+XuHzptK9n2cPrSONppMUc/Tug - XV8KtkaSI0TSdafyB2qk0UQSVD6bAzr0Wg9j7WOan92jvqKAOm0+tdo8dIVqqotyqdRkUXb/GtrbVykp - uCLG47eBXKG1RsPCVBPMmeSRvhhxfm5l9VMTjo8GnDPNa+fTw9XcyY5fSyIDGipv/RKPJuE0x+MYjGal - O4zF9kCWX7kWN5aM03IBx5uzvHsRQPq540pAnfYmzJpYHY7jx8AZll+H0l3uiyp4Oy+rI9fEK70qxnR+ - pEb7KwGir2Rr43tfJEtdJ1kwHiMscBuR4Xtds092FuLFjiBGKnxIDF9fslxBV6SW+y51BmNv82e+3keG - uYvtrX6YS7w4H+qtTFClycYxrcfecoQ5/UG+mU5QdTeAiLA9FKoPyc5CPG/wZujRTuJCDigB5ZpMpvq1 - DBfvxvJ0P++bI5hsCJUXJjqL2MJZiA25O4gN8voD4JmfHoM6VSVPjuv5Zl4MlrctFiY6i9jCWYhdo3wH - m/1l/3r2Ey4iunsWz150AAAAAElFTkSuQmCC + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6 + JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAACXBIWXMAAAsSAAALEgHS3X78AAACQklE + QVQ4T6WS20vTYRjH/XO6iJC8qOwAKRGSUpQHmuJ0pSZp5TTFMslTuzDDjqs0s3lMR0huzmNjmqXzkG3z + GBKJQbbUmHmoud8n3l8wmYY3Xnyfi4f3+3m+z8PrB/jtRFsaY0OWhC9TdqbsVj72d9Hb8QqTvpzGiuLw + zW+3ABwD5qTp0UFW5ifxuEaRFvuRnB3Mj1fxvPQaZcUZx7cFTIz0sux0MDPayu3cZIoyleSro5ntK2Ru + IJfCdAXbAoZ7jEg/reSlKchMCN0nelfPhQRUP7mFNJlNdtLJ7QHdhipwtpIRL5Ju9Gsea5DG1aQpg/8P + 6DHo/M1Nz2h/+ZCW2lKadSU06YrRl2loKC+iTptP9aOb6O7doLL0upC/D6CzUcvSTBssWGRJP8x4vney + /q0N91cjnrl2b3/W1sD9glRvErmY6u7+M4+n47Gn4h5OZK0vluXuCFbfKWAiA4/jMu4PF/j0Opyci6d9 + Ac26OzBvYd2Wwp+h86y+j6GvJgRl1G7eNKi85jWrkgl9KFmJYb4Asa/k7OL3gIqV3rMsmU8RG7ELVdxB + VHGHvOblnkjGaoNRx20cWS76co2878rbKFxdYSy2BMuwzWZXZyj2ykAuxQT5Auq1BbhnDbg6TrBgOMov + yxnqH4QTH3uAMs0xr3nRGMTI072kKI74Amq0ecwM6rBV7Mfx4jCf2+OZNsXIBxM7i9hisjAbi/aQHBm4 + BRBQkpOEJkspq1AdTd6VKPna4mBiZxFbTBbm5MhA33+wE/0FWYznTcEG5+wAAAAASUVORK5CYII= - iVBORw0KGgoAAAANSUhEUgAAACAAAAAeCAYAAABNChwpAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 - YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAAlwSFlzAAASdAAA - EnQB3mYfeAAAC/hJREFUWEeFlwlUU1cax6/nTDvTOXM6Z9pObTva0dpNxa2bdavWuiGLKKsGwhoSIJAE - JFT2BAIoO7IICMgiIBVCWMIWthAWUauyigtY2UUUhEYDyH9u0anTY3vmnfPLffe+d9793e+7976XRU80 - DyY6K4Je/ctravLK35cRgnlCf8iiRYvIjGaG/DzaS5au3yB6c+mK46+8svj5dXrLbw7Q2lPKEnp90e9c - e4WQRe8uPPel42KxcKb/WiyAcspZSvZzcmh5HhODMvwQZdQx1p+cOTd7IXNO0/g7qGhbXSae9mcCozsp - 5AUj9PweBXRslKfzv4F0VrE1mJdjZjITc1PBmJs+scDsdBjmHoUDGiUmRwrR0xSEzuY4dC0Q+5xn9e6W - WFyrD8PVhtN4MKziPRyuJw+HqsnDwQoyNVJOem9eIV0d/c8kfiuwiFxXemnwKB7zIyLMjwZQ8RfMjwZi - blSC2YnzmJm6gpnp5uc00lL1P/UWzD25jAv5thDb/pNz3GExCeJvIUHHGEToYEgYDAk5YhpOoiOznkn8 - FypDOhtcNXgYjvkBIeb7+Zi76Yy5W04UR3r+C86Y7XHGzA0eZnr4L3PDhbbxMHvLHcq0AwjiLDF/OFpN - zuXkEzbbmRgYupLDFhHExSGJ7NxpSfbusSBVFSoyOTG1IEK6VE4ajARgpksAdbcYMyPJmL2XjLkxykJ5 - Gk/vJ2F+PBEYT6EkY57W5+4lYnY0ETOjCQvXcT8Z93uioZmWVwIj3KLCMuLkwCGmZjzCYEYQZyqgrc0i - X288SA7qO5Jj7ifI2L1xGgGlnQb93lBf4EI9lE+lOhZ4/KQJs3MXadmMsfuV6B8sxq1eKXr7CnBvrAIz - s830vouUaxh/oMDkpAoTo3KMDRfRtn6UFFX02lrbLj1kyCPmli8Etmw2JEyGkNjbeBKhIISQ7nqmBrdd - MdHqCDyuRrlMiOJCb5zL8URShBOK8oNxsekHVMuzkZYRhYyUSFSVpqKxLh6qRn8US72QGHcM/n4iSHyO - IibUDYXnY2k9Aro6Lm9/vdmZMK3Df43ALwIWR9wJl+NHHFk+hLQpGJr5LjamLwmgqEpDQnwYKsqL0Xv7 - Ovp6uuDsaI+MtBRUlZdDVliIyooy1NZUoqG+CtXVRTgu8UFkaDSCg7MQEpSO/LxiRISFwVCfCTvb+Bv7 - 9vt0WLNiOti2cR3bt5vv+WzD/uVHTPjLeY6+y10c/KlA1SHN1CUbTP3oh9SUUEildN2fl+Lixct4NDGN - 0qJyOLCdcDI6FjKZDGXyCjQ2taC2th5JiSm0wwLEx5yGRBSP9AwFpAXluHrlGuLjUlAk7UBl5R3k5V1F - wskqiPwS4SoIA58XDYZZAOwsfZJJe7WOZkhlQ2d5LE6d9IZcXor29k6oVE04/0Mxwuno9u7eh+SkJChV - dbh6tZ1GQInQsAicTkrBje5bqFXUwMGWRdvioaDnfb23UFWloOmpR3/vzxi+q8HoAPDTnXlcvjKNlDPt - OGiQiO2bmSBdin2a2zUWeHI9EI2lLNQoajE3C/RcH0bCaRUMjexw8IAx6hTV6Om+iUutFxEWGo4GJY1C - ZRWdcMCDsXE0NjbTtDSh7WoHxsce0IHI0XGtE3Ma+qzOQZRKb0IS1AsHzmXwOJ30ubnYqLVbTXoqdmna - 5YfwuD8Ej/v8Ic9xR8m5QIT4WuN7Z2NUZDERG8hAiEgEAc8ViYmJNDotGLg7jrzcAgwODqHtWhvy86UL - tLb+iJrqJgSIY2mahhAddQUu3AbYWleDbaeCI6sBLuwaGB5KxcY1u9TkytkvNB0yPTzp9QXufA91XzAe - XA/DeHcMpm7FQNMbAq7FZ6irbaITNBX2LBf8eLkbD+4/ph3fQPqZHGRkZqO5uQXl5WXw9hbTdOXRNN1A - oWwIR93q4OLUCmeHWrBtSiBwLoMbvwRGhqexce13anI1eb3mtkwfs93ueNrnhvk+F6CXB9yi3OGhTeGH - 7dvWQRiUDCs7Lxgc4CAyPA1Tj55gaGASw4PTyM2WQamsR1NTA5JPZeBy6x2aon4UFw1BeLQcbNtC+AuL - 6GqpRlLSBYRHKWFmloqv1nyrJqroFZoHdQzMd/GB6w7P6KZ7QrcTlXBEu4wHCxcP6MbewxusLhzkZCEy - 6jweTaoxMPAQt1o6EOYZhBSajuPRp8C3ohEqaUVDwwCKiwfg4VGIIIkSp9Poyoi5gJhwFSJC68FkZOBL - LSpQ4vcXPKrRA7pox+02FDugjZZtVlTCEnfkNnDx8YJZ9gxe5/din10momNkmJ58gpHRx1BERCJw62rE - 6a3E99+8B8tlb0AZlQxV0whKS+/Cy0tG94h6BAaU0XTkQSySI+x4NSzMc2gEdqpJtvufO9OPfYgsn5XI - 9FmFDO9VyPPTgjRgDaSBq5DgtgZWAlcwcqfxV0EPdF3y4S1Kx8+PZjFybxZ1Yh9UHtTC06DNeCq1QaXN - t2iWREDZOAx52V34+hdDIqlBaFA1PI9J4e5+DkGBZWBann2WggS3FW+bmZpzTAy0OSYH9TlmhtoUXY7J - IT2O0SFdjqH2Dl8z/nFYZ4/gTeEN7HDMhZMwHpqfn2JobBbKAH/UGK0Gjn8KXDiMHLPP0eAdA2XTEF2K - dyEKkEMkVkDoWoBgUTmSEi4hMloFFicFX2l9oyan3JYT5hEzYmG0l1gY6xCm6V5iabqfmBtTTHUJz4G9 - 2Dk4G9aZw3jHuxfbuLmw4sVhbEiN0QkNVEEiKPQ/AbzfB0oNkWO4DvX+0VSARqC8D4GSUoSE1NLJdwmp - Z9qQnt5B54ASbIckugy3/r4A00SbStDOuVziwed/Yi2MBiv1Nt7zvo1N7DwYWIZCVtCMMkUfKrx9UHOA - jt59CZCvg1z91VD5RaG+eZguy16EBJfiRIgCqaltiItTQRJYjGCJHI4OdBVo/YGApfEecpTLJsdcBcSL - 77jMzjV41Cm1C0uowDpmHpx9CzA6PAV51RgKBULU6XwEOLwNpG5Fge5KXKARqKMCFVQgOFAGsa8UYnEJ - xH4FkIgLIfYvgJlJJN0Htr8cAWuT74gJg0FMnETEjMLg+pF9LJGby5krWBHQj5UWMjDdMuj2O4r7U7O4 - JPZF3Q4afu5iIP4LFGmvwEX/cCowiIrKm3QnLIMk4DyOn8iHh3se3QnTIHQ5B2tmwssCVnTkh8xMyWdM - CVnHDCHrLILJWsqaIyJP4dk2rAsYxErbYmwzCYecpuD2sBqtgSFQbF0OmP4NCF2Joj0foojth4zsmyjI - v46wEwrwnXPAYZ+iEzENQSdTkFSZiqPCdHy5etOLCFgZ76KfT4fJ1+YB5GuLALLJXPwrX5r5ePrltmNT - +D18YleKFdtdYaRjJxN4RiLF2BzSj14H9v8J8Hkfsh1L0ewbDWnRT0hIqIeTUxy8PNPp67wEZ1IUSMrK - QVmbHEKPDHy+auMzAWuGCdHR0yGf7nEiq/Zwyeo9jr/h4x22niHn2vFtwjg+sivHWj0vHNDW3mxgZL9B - +PHaWtlH/6ACrwIe76Nw67u4FBCNhpZhFJfepK/eSmRmF+NsVjHOZVciPbMAfsHB0N7nip1b9oGkHn2X - HDC1IUu2WZB/bTOn5css/srIU5x7GfszJrGCUwstfTH09363uywlg6iiIuRRH1CB714DzN9C1qp30BJy - Gq2XxugXVidyc8soBcjKkcLPNwN6Oq74ZosJGMaHB5ycuDHEns0iepZeRJeib+VF9H4HHXOhODClBsZJ - A/jCJhMbdrOxaf3K3edTk375tF7fkp76KHTNvxHwyWJYan0BLsOdbr2F9GXUjnN5KvouSIPRIQF2bDWA - sYH5Q0tzAdfD1eMDtj2HEGtBFGG5hRF7t/A/hOMeqW9w2GVWS+97LN1giC07DWF5xGS/j4eQTAwN/CKx - rjwqOjNkv16mL+topr1dQKbefn4f47A7jA252LXLFLr72H32VryTLEtrYsMUEDcXN7IgYOca9n+xdY0g - 7nyBHuuIsdpEX0ftxuOV+Hr7v+XsLCBtSuXCH4za6CgSqatLRHauhMOSEJa1cJm5mQPHhslVWzAYHFsb - /jI7Jp/YWlgTa4sXAv8BgbJAolzyFWAAAAAASUVORK5CYII= + iVBORw0KGgoAAAANSUhEUgAAACAAAAAeCAYAAABNChwpAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6 + JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAACXBIWXMAABJ0AAASdAHeZh94AAAL90lE + QVRYR4XXd1DVV6LA8fNm3rw2b3Zm9+2Lu/tMXlw3m9iTbKKxRWOMjWKhKk2aXHqTS5TeUepFBQFBAQUk + 0uXSLv1S1ahUQQQjSBG75Oqlfd+oeZvN0513Zj5z5vx+f5zvnN8/vyNeqB8+vlJ0UNVVaafqazuq6msN + V/W1hqlutoWruhoCVW0X9qtG+2WeU+qLgrlLgtnWt2gRzDYKZn8QzNz5P14+GxHMIpide4O4VCydGrp+ + HCgDzgGZP8kCLvD4biHfxep2TgwlZ8xMt2bMqBvfQpkxo67NYHYoA8Y3wbj42ZiAewIQzL0ZIboqbdTM + yZl6ksHMszBmJo++Mj0ZyczTKFDX82SsgN6mULqaT9D9yvGfvF73tBznel0k1xpO8XBU6fxotE48GqkS + j+6Wi2djZWLg5lXR3Tn0OuKXAf8gbtR7qXkaz9xYAHPjQfA35saDmRkPYfrxBaaeXWVqsvknjUxNKv9m + 3cLMiyu05loSaPmfkiO280Soy1oReshISG11hJFRiNhnECVkMWdfR/yvVyfQ4KbmURRzw1LmhlyYuenI + TL89M/12zNx8yZHpXkem+pyZ6nV5U58TU73OTPd7UH96J6GS+caPxqvE+axcYWPjKHbpuIm9JtHCyTZJ + bNpkJrZuMRGV5Urx5PGzVxGiW2mvZiyIqW5XVD2BTI0lM30vmZmJZGZezaeYvZ/E3INEeJACD5KZu5/E + zL1EpscTmRpPePWe+8nc75WhnpRXwJhDUUGpsLeVCANDZ2FkGi0cbZPE9u3W4otVu8VubTtxyOOomLj3 + QIiueis1Q96oWh1QjeQCna88f9HE9Mwlnr9oZuJ+BUN3i+kfyGdgMI97E+VMTTcDl4DrPHio4MkTJY/H + 5UyMFgFDXCwqH7A0t3x3j46zMDb7OWDtGh1haiQVBywOC6lruBA9daZqbrnxuM0OnldRViiluMCb81mH + SYq2pyg3jEtN31Elz+R0eizpKTFUlqTSWBuPstGf4nwvEk8cwt8vgBCfg8RFuFNw4Tj+ftFoaji988Ua + R2FqHvWLAJN9HsJB4ifsrH2EaFcYqee6bZi87Iqi8jQJ8ZGUlxUzcOsGg73dONodIP10CpVlZRQWFFBR + XkpNdQUNdZVUVRVxJMSHmAgZYWFnCQ9NIzenmOjISHS0TbGyjO/btsOn09w6rtPG8kTnhg3GWz79ZMeC + ffouC5ztfBc42foL0V65R/3ssgXPvvcjNSWC/PxCvruQz6VLV3j6eJKSojJsbew5JjtOYWEhpfJyGpta + qKmpIykxhdycPOLjThESEE9auoL8vDKuXb1O/IkUivI7qai4TU7ONRKOVRLgl4ibayQuzjKMDIOwMvNJ + Fh1VGuoRpQVTfcc5ecwbubyEjo4ulMomLnxXTFSEjK3fbCM5KYl6ZS3XrnVQU11PRGQ0p5JS6Ovpp0ZR + ja2lNRGR8SgU1QwO9FNZqaA4v46hgR8ZvaNmfBh+uD3HlauTpJzpYPeuRDasMUV0K7apb1Wb8OJGMI0l + 1lQrapiZht4boyScUqKja8XunXrUKqro7bnJ5bZLREZE0VDfQk1FJS/Hw4kHNDY201DXRPu1Th5MPEQu + l9N5vYsZNfR23aUk/yYhoQPYSq7gLOlCRzebVUu/UYne8s3qDvkeng+F83zQH3mWBxfPBxPua863jnqU + nzXleLAR4QEBuDq7kZiYiFLZwvCdB+Rk53H37gjt19vJzc1/pa3te6qrmggKPE5NzQiy2Ks4OTRgaV6F + jZUSO+sGnGyq0dmTyqplm1Xi6rnP1J2FWrwY8IXb36IaDOPhjUge9MTxrD8O9UA4DiafUlvTREJ8Kges + nfj+Sg8P7z+n/XofaWeySM/IpLm5hbKyUry9A0lOyqGmuo+CwhEOutfiZN+Go20NNhYXcXUsxd3lIro6 + p1i1/GuVuJb8sfpWoTbTPR7MDrozN+gEA87Q7wy3nWlX+LFh/Qqkocnst/Ji104JMVGnefb0BSPDTxi9 + O0l2ZiH19XU0NTWQfDKdK223aagforhoBOnBMmwsC/CXFhETUUVSUitRsfUYGqayctlXKqGULVQ/rDVi + rtsFbti+1mMHPfbQb0dHoTMmTp5oHr/Hb6y72S05S0zsBZ4+UTE8/Ij+lk4iD4eSkp3HEdlJXPY78f3F + NhoahikuHsbTs4DQkHpOnb5OfFwrcVFKoiPqMDVK5/OlX6nERb9/4Wm1FnTbQocFdFhBuwW074ceM27L + LXDy8cIwc4pfuQywzSoDWVwhk09eMDb+HEV0DMHrlnBCaxHffvkHzN7/DfWxySibxigpuYOXVyFhYXUE + B5Vy0D2HwAA5kUeqMDHOYuWyTSqR6fHPXWmH/sRZn0Vk+Cwm3XsxOX5LyQ9aRn7wYhLcl7Hf1Q2j7En+ + zbUXTadcvAPS+PHpNGP3pqkN9KFi91JmQ9cwm29BhcVXNIdEU984irz0Dr7+xYSEVBMRWsXhQ/l4eJwn + NLgUU7Nzrz9BgvvCdwwNjCX6u7ZL9HdrSwx1tksMdTQl+nu0JLp7NCU62zf6GrocwTxzjP+Q9rHRLht7 + aTzqH2cZmZimPsifat0lcOQjaN1LluFfaPCOo75pBLn8DgFBcgICFUjd8ggLKCMp4TIxMiXWkhRWLv1S + JU66LxCm+wyFie5WYaKnIUwNtgozgx3CWG+HMDbQFM62NvMcwzIxzxjld94DrHfIZr/zCSZGVIw/VqMM + DUCh/SF4vwclOmTprKDOX0Z90yjyskGCQ0oID68hKekyqWfaSUvrJDqiHhvbJFYtW/f2AFP97cLs5eYO + DsLTxeVDc6kM69Rb/MH7FqttcthlFkFhXjOlikHKvX2o3vkReMyHXA2ytZeg9IulrnmUsrIBwsNKOBqu + IDW1nRMnlIQEFxMWIsfONpWVS/9OgJneFnHQwUYccnMVXi5271u5hY3bp3Yz3/sWK0xzcPTNY3z0GfLK + CQpcpdRqfAC270DqOvI0F9HqL6O2eZTysgHCggsJ9M0nMPAigX55hAQWEOifh6F+DKuWb3gzwFz/a6Fv + ZCT07QOEoX2AMHLwE9usA9ydzlxlYdAQi0wKMXVP5+HEOPefTXM50Jfaje+BwzyI/4yi7Qu55B9FbfNd + yituIostJSToAkeO5uLpkYOd9WmkTucxN014M2C/3haxx9BAfGoaIlaYhosVJmFiuUmYWLYv4LD0XDsr + gu6yyLKY9fpRyPOauTWqoi04HMW6BWDw7xCxiKItf6LIxo/0zJvk5d4g8qgCF8csJDYnkbqdJvRYCkkV + qRyUpvH5ktU/B+zX2ywMDPeKL4yDxBcmQWK1ceBffW7oc9gvu4PVUff40KqEhRvc0NWwKnQ9HEOKnjH5 + H/wKdvwj+LxH4cZ3afaVkV/0AwkJddjbn8DrcBrHZBc5k6Ig6WwWpe1ypJ7p/GXxqtcB5kb6QkNLQ3y0 + xV4s3uIglmyx+4U/b7Q8HH6+g68SHvCBVRnLtbzYuX37ml26Bz6R/nl5TeEHv4Yd/wSe71Gw7vdcDpLR + 0DJKcclNUs5UkJFZzLmzxZzPrCAtIw+/sDC2b3Nj09ptiNSDvxc7DSzE/PUm4r/WG4v5bzFvpe7hwOwr + 7Eh/wkJJDUu1A9He+vU3pSnpQhkbLY/946/h638F499ydvHvaAk/RdvlCRSVXWRnl5KdncfZrHz8fNPR + 0nDjy7X6GOntHba3d4gTB2yshZaZl9A08xLa+72E1ltoGEsDg1Oq0Usa5jOLDD75xobVHy/65kJq0stf + 649b0lKfRiz7b4I+nIfZ0s9wMPIgOKiA4qIOzucoCQ05je4eVzau24XeLuNHZsauDp5unn+0OSARwtw1 + Vli7R4oD7lF/l8QjRnvXXqfppVrf8u4nOqzdpIPZPv0dPp5S8Xhk+GXEirJYWUb4Dq0MX+uDGQesgjK0 + drgMGu31QE/Hgc2bDdDcZjN4YL/zMWszc2Fh6ircndzFqwArt8j/l6VbtPBwcdWy3qen0tfWULk7O1/0 + 9fb/raOjq2ivr391waiRxYoYTU0RYOUmJNYhwtpc+r6xoa3EwtRBZWJkJLG0cHnfytRFWJqYC3OTnwP+ + B9/khTZ5N2qnAAAAAElFTkSuQmCC - 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 - Gb8AAAAASUVORK5CYII= + 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 + SUVORK5CYII= - iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 - YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAghJREFUOE+lk9tL - k2Ecx+u/6SJC6qbsACkRkUKUB7KxuVGapB1M8iKLlo1dlGHHQVrYykPmheTmYW2NuSydx3awZUg0DKql - i9mmNbdPe15h8XaAjV743rw8n+/v9/3yPGuBNf/1CYN0ND3uOPJ+xsOMx8WrEVsSWeXSgr2j9vJZ3xjR - +TfEwz4SoZHMDPxTQ0SCXgK+fq6cr0B3RpWZwYTTTOKrC+2pkhSYUYRB0wMI9lOj3v13A6fJmGXvvovl - 0S162xrpMTbQbbxMV5OezmYd7YaLPLx9AeP1c7Q0nhXKkm1gfWxgMTAACw5JiS924p+trHwcIPbBTPyT - JfV/zt3JjfoqeQd97ddW4deniXuqiE2UsTysJDJYyNKLZG5/DXHvCWKTR3n7pIC6Y/vlBj3GqzDvYMVd - yY/xwyy9VDDcugdV8XqedWpS8LJLhb8rj9qyfLmByJsI2vg+qiE6dJBF+z6UhevQlG5Naps0WcARZxHT - bblUl/4qU7pIXc16KW/0eTFhWz6h3lzJ7Hc4bM3D05LNcUWOfIMOQz2xORPhp3tZMO3km+MAHTcLUCu3 - 0KTfJU0WcMicw9SdjVSW7JAbtBq0BMaMuO9txnt/O+8samb7FFJhIrNYW0wWsFm3gYqi7D8MNjXUlaOv - VUm6VH0I7cliqW1RmMgs1haTBZyU/B6k8xr/deYna7rBU0DWSCIAAAAASUVORK5CYII= + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6 + JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAB/ElEQVQ4T6WS20vTcRjG/XO6iJC6qXWA + lIhIIUo3WmMnShtpB5O8yKJlYxdl2HGQFrby0NqF5OZhbY25LJ2HbAdbhkTDoFq6mG1ac/vE7xcsflkX + w4vne/HC83nf5+FbBBStRasG/9P0hO/Ih5kQM6EAr0c9FAQIj3mrZyPjpOffkk1GyCVGCwNEp4ZJxcPE + IgNcOW/AdEZTGGDS7yT3LYDxlDJvLAgw5HgA8QHqdbv/DfA7rMXenru4Ht2ir7OFXmszPdbL2FvN2NpM + dFku8vD2BazXz9HeclZQsQTgfmxhMTYICz5Rua9esl/crHwaJPPRSfazKz+fC9q40VQr7aC/69pv85vT + ZEO1ZCarWB5RkxqqZOmFEqL1ZMMnyLw6yrsnFTQe2y8F9FqvwryPlWANPycOs/RSxUjHHjSK9Tyz6fPm + 5YCGqL2MhqpyKUDIm4t7+DGmJz18kEXvPtSV69Brt6LXbsubU345052l1Gn/lCk+9jazmDf9XEHSU06i + r1SE/W1OussItcs4riqRArotTWTmHCSf7mXBsZPvvgN036xAp95Cq3lX3pxwljB1ZyM1yh1SQIfFSGzc + SvDeZsL3t/PepWO2XyUWJmQWzhY2C2anaQMGuWwVYFNzYzXmBo2oS3WHMJ5UiG0LhQmZhbOFzYLZIJdJ + /8Fa9AuXJO4lyEa/vAAAAABJRU5ErkJggg== - iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 - YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAAlwSFlzAAALEgAA - CxIB0t1+/AAAATBJREFUOE9j/P//PwNFAGQAOgYaCDIVKAw2HM7GqhabIEwMZgheNVQzIDo6Otff33+X - t7f3THd3dwGY82EWWFhYlAPxfyguh7sSxPD19e338fF57OHhccrV1fW/tbX1I2QDgJrSQBqRDAMZ5AJW - AyKANtbDJIGGvLW0tIQHIEgcqPgMFgM64AaAGEFBQX1AfNXLy+sbTDEsEBMSEmBOh9NZWVkQS4CahEJD - Q/+HhITcA7IF7O3tb5mbm6O74C7U72BnI2OQ/ysCAgL+u7m5LXZ2duYHav5mZmaGbgAsAFcBDRIEYqXV - q1dD1ACdLGBjY/MfpAmIb5uYmLwzNjZGMQAaDh1Aje9AGGQhSizY2dkJAwPOFMN50NRIVkKCJWFCqREj - H6AEELkuoFpmwud3mBwAxyxA1dGzKyUAAAAASUVORK5CYII= + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6 + JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAACXBIWXMAAAsSAAALEgHS3X78AAABMElE + QVQ4T6WSsU6EMBjHeQNR38BXAMvXQGA4oU2BQBqYWJgcSJzPzfUmnZ3d5A18BOPqotFBZ2+8taZ3lHDt + JZfT4deQP/1+/GlqCSGs/2AE69Cy5CL0510YgS7SMx0j+LOgaZqroiie0jS9J4TYugAA5gAgBuZbgjzP + 77Is+6aUPsdxLHzf/5oKAOBSDk5kUnIxCgghN+olpfQHYzwe4DDwskOwGAUSzvkt5/yVMbZSm5WgbVtV + faTrus0ezvlJXdeiqqpPzrkdRdGb53l6g49p7Sny/6/LshRJkjzMZrMjz/NWCCFdoA7wEQCOAeCs7/vN + HsaYHQSBkEMIoXfXdZeO42wJBskCAJYS+cGxgVzCMDzFGJ8b9Q65BzrqCu+TGIEu0TMdI1CDanhfCyM4 + lF/ylm2nCccnxwAAAABJRU5ErkJggg== - iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 - YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAAlwSFlzAAALEwAA - CxMBAJqcGAAAAjNJREFUOE+lk01rE1EUhvUf5CfkJxQFF66ydDloA1lGcNGFSnAhQRCHghAMakSKBktn - rIqNpDqb2hitHdFWi0gHazW2YZKWqGkzTa9OlX5oXs+5k8407cKFFw733Mt5n/Mxd/YD2PdfiwG7bWLG - xZ3iMlJ3K+gdmENfvoyRV18obG9sh/i9vY7ceBNacQnVxia+r21BuJvkb+ByroSUZqH4erED5ANY/MBc - hfOzBdMC1CFASXnGvmkJ2KstXOibxMiLsg/xAZx55VcLuglEkoBeAMQ6xwFVASRu8p1AhSBn0s86ARMf - 1vB4uikzs5iDeRlvgHjG2xkWSQryBbTCR2RzbyVEVnDvaQNfxW9ZaiThlZ0xgC7ywz0CiQyVQEtRBeIp - C3O2i+PnhgNA+v6iHJiieqKuHs/CZHESc3azJBBWTIRjJuqOi0PR6wHg4m2bpr0ly/eEFBwXVImX2TDp - TMKQYtBuoN74gQPK1QCQfVjBgrNBvXvCcKwqLTPkAUKKReYBlKSJUrmG7lN6ABid/IaC5cgBsTAUY4FF - LVVpLnRm8RFDml6oYrgwi0u3xgIADzI9OIN55w9lbQtIxL6soC1WdQuflx0cO6l1fkYGjE3V0Judgt2k - t0BZFNWSfbOxz3fztRVEqfSBPH3X9rPueMqjLys4e2Uc+pNPmJ5dwBJNu95wZc9cdjdl1naI/XewTdve - +/PvcOL8IxyO3cDBo9cQPT2IdP9zP+vO+D1/4m7Yv85/AYwH2NXcJ7xZAAAAAElFTkSuQmCC + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6 + JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAACXBIWXMAAAsTAAALEwEAmpwYAAACG0lE + QVQ4T6WQX0sUURiH/Qj7EeYjSEEXXe1ll4dS2MsNutgLjaWLkCAahGBJqo2QXBJ3siKNNefG2ixzojQl + wiGzNpXdUazUHfXUWPin9olzJt22hSAa+DGHl/d53vecBqDhf1JXUBmbDrg5vErqVon2nlk6c/MMPf/A + n311gtfFLfpH18kOr+CVd/i8uYsMdvDK21zsL5DKugy/WKwR1cB3nQ38rxUcF8w+EKkw6uy4kuJGhXOd + 4ww9nd+X7AvU5LVvFSwHom1g5UFuqT7wJCS7VE1S2qhwquNxrWDszSb3p9b1ZAWrZvXZExBPh38li7ZJ + 7AlJNv+WTP9LLdGC24/KfJTf9arRZLh22obGJBgJSTIttVCYknjKZbYYcPzMQFXQcWdRP5gwQ6gxEcZI + qA2knu4UJIZwMGIOy37AoearVcH5G0VksKvXD0GJEZeIVDjZdqQGI8LGiNksl79wQFyuCjL3Siz42yS7 + QtCIeTrpvlAQES4REQpEm0NhfommVqsqeDD+ibzr6wdSYCSmABdheph9XggfsXWsvMdAfoYL10eqAv0O + vdPM+T9I7wHC0We9wS/YtFzer/oca8lquEYwMrlEe2aS4npFTxGmq++tos6qNre0RnOrRU9uol6gr/Ks + xOlLo1gP3zE1s8CKH7BcDvSd1dpNLVmyv8F1gr10515x4uwgh2PXOHj0Cs0ne+noflID/lXwL/kJt3EF + thF+kyUAAAAASUVORK5CYII= - iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 - YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAAlwSFlzAAALEgAA - CxIB0t1+/AAAAMJJREFUOE9j/P//PwNFAGQACFfVd/yvaegE40ogzinr/K9naAqUwi8H1gzCNQ0dIMX/ - f/3++//z9z9gbGphDzYAnxySAZ1Azf/+BzR9/W+Yevb/3Te//2vqGEENwC0HNwDkbJCtlkWP/usnnfh/ - 4vrT/9JyymAD8MnBDQD5GWQAyGaQ5m1HL/8XEpEAG4BPDm6AuaXdf2sHj//6Rpb/5ZU1/ouIS4OiB2wA - Pjm4AbDAJJWGGzAajfijaohEI6nxD1MPAH/FmTUmtOWCAAAAAElFTkSuQmCC + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6 + JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAACXBIWXMAAAsSAAALEgHS3X78AAAA3klE + QVQ4T6WRMQrCQBREcwYJKAS0SKMghgSCBkEtLT2DYGdlIUQCBqvshbyBkMbKwspGsLMTERJ1ZBf5BCRf + jMXAsm947DIaAO2f0GGxjBCEQsUPBaZzgZbt4hsjQRBG8gJJ+sDldldxO31V4lhGIJCkT4xWV9iTLQ7n + FI2m8xbkMxLIp0mzNzvCGseI9ycYVVOVOEYC+S9ZknZZWG92KOkVVeIYCdpeD93BEJbjoWbWoZcNaArz + jARFQwduKo6RgJuKYxlB/lQcIwE3FcdIwE3FMRJwU3GMBEXzcfFrXqsvxgcoH5ClAAAAAElFTkSuQmCC - iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 - YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAAlwSFlzAAALEgAA - CxIB0t1+/AAAAlRJREFUOE+lk+lLVFEYxuu/6UOE5IfKFkiJkJSiXMjEUUtN0solxTLJrflghq1TaWbj - mg4hOeNuw7iUe+bMuIVEYpBNaoy51Dj315wbqXeSCLrwfjmc5/c8z8u5W4Et//UJwMYZGTBFfZgwM2Hu - 5W1PG10tz2nQFVFTnBfgflc233ho6TPGTFr7WZodx2m3Is33INlamB0t5UnBZQrzkg+7QxSAsaEuFm0W - pqyN3MiIJTdFRVbiKaa7c5jpyyAnKcSlVyZWAAY7DEhfe8lMCCElym+XuHzptK9n2cPrSONppMUc/Tug - XV8KtkaSI0TSdafyB2qk0UQSVD6bAzr0Wg9j7WOan92jvqKAOm0+tdo8dIVqqotyqdRkUXb/GtrbVykp - uCLG47eBXKG1RsPCVBPMmeSRvhhxfm5l9VMTjo8GnDPNa+fTw9XcyY5fSyIDGipv/RKPJuE0x+MYjGal - O4zF9kCWX7kWN5aM03IBx5uzvHsRQPq540pAnfYmzJpYHY7jx8AZll+H0l3uiyp4Oy+rI9fEK70qxnR+ - pEb7KwGir2Rr43tfJEtdJ1kwHiMscBuR4Xtds092FuLFjiBGKnxIDF9fslxBV6SW+y51BmNv82e+3keG - uYvtrX6YS7w4H+qtTFClycYxrcfecoQ5/UG+mU5QdTeAiLA9FKoPyc5CPG/wZujRTuJCDigB5ZpMpvq1 - DBfvxvJ0P++bI5hsCJUXJjqL2MJZiA25O4gN8voD4JmfHoM6VSVPjuv5Zl4MlrctFiY6i9jCWYhdo3wH - m/1l/3r2Ey4iunsWz150AAAAAElFTkSuQmCC + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6 + JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAACXBIWXMAAAsSAAALEgHS3X78AAACQklE + QVQ4T6WS20vTYRjH/XO6iJC8qOwAKRGSUpQHmuJ0pSZp5TTFMslTuzDDjqs0s3lMR0huzmNjmqXzkG3z + GBKJQbbUmHmoud8n3l8wmYY3Xnyfi4f3+3m+z8PrB/jtRFsaY0OWhC9TdqbsVj72d9Hb8QqTvpzGiuLw + zW+3ABwD5qTp0UFW5ifxuEaRFvuRnB3Mj1fxvPQaZcUZx7cFTIz0sux0MDPayu3cZIoyleSro5ntK2Ru + IJfCdAXbAoZ7jEg/reSlKchMCN0nelfPhQRUP7mFNJlNdtLJ7QHdhipwtpIRL5Ju9Gsea5DG1aQpg/8P + 6DHo/M1Nz2h/+ZCW2lKadSU06YrRl2loKC+iTptP9aOb6O7doLL0upC/D6CzUcvSTBssWGRJP8x4vney + /q0N91cjnrl2b3/W1sD9glRvErmY6u7+M4+n47Gn4h5OZK0vluXuCFbfKWAiA4/jMu4PF/j0Opyci6d9 + Ac26OzBvYd2Wwp+h86y+j6GvJgRl1G7eNKi85jWrkgl9KFmJYb4Asa/k7OL3gIqV3rMsmU8RG7ELVdxB + VHGHvOblnkjGaoNRx20cWS76co2878rbKFxdYSy2BMuwzWZXZyj2ykAuxQT5Auq1BbhnDbg6TrBgOMov + yxnqH4QTH3uAMs0xr3nRGMTI072kKI74Amq0ecwM6rBV7Mfx4jCf2+OZNsXIBxM7i9hisjAbi/aQHBm4 + BRBQkpOEJkspq1AdTd6VKPna4mBiZxFbTBbm5MhA33+wE/0FWYznTcEG5+wAAAAASUVORK5CYII= - iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 - YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAAlwSFlzAAASdAAA - EnQB3mYfeAAAASlJREFUOE9j/P//PwNFAGQAJZgizWDXU2L7IDEgq7Dyf0Z+5f/0vIr/KTll/5OyS/8n - ZpT8j0sv+h+TUvg/Min/f3hC3v+QuJz/QTHZ/wOiMv/7RmT89wlP/+8ZmgqMAQohhdqBsZBRAHF+am75 - /2SQ8zNL/sdnFP2PTS36H5Vc8D8sseh/aHze/+BYkPOz/vtFQpzvFZr23zM4BbcHKmc/+B9Rdfi/f9Fu - UFLDCXFKtCx79X/hvu//HVPXk2aAQ9Kq/5ndF/+DDJi5/ct/38Id/81jV/xX9ZiA1SAMF1y7++a/pv+c - /80L7/5vXPrqf0TTjf9GofP/n7v2lDgDQL69cf/tf7OoRf89iw7/1/ab8X//ybs4vYEzDG7cf/NfzrHr - //x1Z/CGAQCjS0wEhVWp7QAAAABJRU5ErkJggg== + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6 + JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAACXBIWXMAABJ0AAASdAHeZh94AAABLElE + QVQ4T6WQu0tCYRyGz1/S1hBtDbXm1onUyE5e8JKXk8dLXg52sa3LVItjUSAGRTTUWBDU4BRE0CIuYkuL + 2BY0PvEhEvQp9CEP7/LA7+XlpwHaKJGEaiShGkmoRhKqkYRqtHSxjJUvk8xtk8huEstsELVKhJM2wUQR + fyyPdzXHcjjLUjDDYiCF02ex4E2iGybaqEhCFc0q9Oab61vExfxUiYhlEzJtAvECK1EbI5LDExLz07j8 + vfnzxhq6J/G375fy6Tu+nTpu+0G8ayiS6HNw2aH2+I3DvFUrmI1dkzp6QxSc3H3hLN4zE7pifK4ysEgS + jVaXCfcZ+7UWuxcdfHtNpowqr42P/xUImu1PpgPn6HadSdcxT8+tgccCSfRptruMOQ6p3rwMPRb8AM61 + eNYtKznlAAAAAElFTkSuQmCC - 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 + 3+322v8OK0dV96Fprs4AAAAASUVORK5CYII= - iVBORw0KGgoAAAANSUhEUgAAAAUAAAAwCAYAAADZ2LD7AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 - YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAACpJREFUOE9j+P// - PwMIMzMzc8LYYAGooPio4H+G0QCBpJDRxAAMhyGdGACLokPRWdHt7QAAAABJRU5ErkJggg== + iVBORw0KGgoAAAANSUhEUgAAAAUAAAAwCAYAAADZ2LD7AAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6 + JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAAIUlEQVQ4T2P4//8/AwgzMzNzwthgAioo + Pio4KjgqOFwEAYuiQ9FuQcdhAAAAAElFTkSuQmCC @@ -535,485 +531,457 @@ - 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 + K30AAAAASUVORK5CYII= - iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 - YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAAlwSFlzAAASdAAA - EnQB3mYfeAAAAo1JREFUOE+lke1LU2EYxu2v6D8IgkKIIMIg8kMtlRQjskkGc03NN1j2YpYFMYmpuTXn - 0rItU8wyQ2TqamjpUGwYCr5sJtN0tXd1O9vZjjvr6rzk9ODHbngOz/1cz/27r+c+BwCk/FewgL2rotWB - mjdreNjtxW2DF1LVEm7UT6C6ycRcE97lmu8clmrtkOtX0DjggmWZxJKLwqqXhsNF4sv0GpR6Cy5WGiC5 - /1YA4gAy1TzkLx3omfSDZuV/sRWhsRmJc1kwHEP34DRyytogrjIkIRygRDOHZwNre0oBV4DEyfJJHJd9 - hm+DSGrtvePIkGmRJ2/nIClS5TfcaZthrG4KANvxBBQd81AYZhGjeBd8xCCteY3MYi0PKKwbQ32HVVDM - Jr+9JGZ++OD0hZLaNkUx+yhMo1bGRTMPyKvuR3PPfsDHrytIvWpCdpUZngD/BDpOg44RsC3YkVvawgMu - Vxuhe/99nwOrzY0T4jGclgxh3bfB6YkEjWgkCOeqA5cqn/OA/AfDaOy0MuIfAWRm2YtT+WaIioxwbwY5 - LU7TIIJ+2GyLyC3T8YAK5TAetYyAHdreWPgZQFquCVlSIwiK5KQQQYAMeTBstuCcVMMDlPpxVDUYYbLY - BYCJOS8OHnuHQ+ldWA/wgwz4PCCDTpTU6ncBLEVeb8Q91SCCkWgS0jVkw+HsLhzJ6cAH8yIzQeYZUTe6 - +z4h/VoTM4MXvAP2w65yRR+etA7B6XYz6TYSFIEwtYFw2A8i4AYVcqLfOAKRVI3z1/lfKACwyZWbr1Bw - V49aVS+mpmcRJX5hy7+K0bEJ3KrrhKhQjcyi3eJ9APYgq1iHDKZDmrgBRy88RmqOAmcKniJTpsFZiTrZ - ecfBX3S4BezexVqUAAAAAElFTkSuQmCC + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6 + JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAACXBIWXMAABJ0AAASdAHeZh94AAAChUlE + QVQ4T6WR+0uTURzG3/+i/yAICiGCCIPIH8pUUgzJlAx0Ts0bmF3MsiAm4SU1b2nZzBSzzBCZuhItFaXE + UPAyTabpanNz6nx1c+5dn3i30E1/7AvPl3Oec54P5yIAwv/ogJFRoyf39SIPms3cqjejKJ3leuEQOSVa + 9u/1A6RWzpClnqe4w8jgnJ1Zo5MFs4TeaOfz6CIF6kEuZdYTf++NH8jTlKWTZL3Q0zK8giQv/6v1LYm1 + LZdnbNvcprlzlIi0WmKy63chnpZSPsHTjkWfKBitdk6lD3NC+QnLqrjr17UOEKKsJDqrTp4KgqLgG7dr + x9Ab13zz7LjcqBomUdWPs+30nsJb2yhyXxGaXClPBCEhv5/ChhGfDd76bbYz9sOCwbKx6+04nYADbd8I + IcoK2RKE6Jx2KloOAj58mSfgqpbw7B6Wrd4rSC4JaVtENzVDZGqVbAnC5RwN1e++788zojNxMqafM/Fd + LFlWPZ7bLeHYsmFY0BOV+Uy2BCH2fjfFjSO43X/8AGNzZk7H9hCcpMG0ZvN4LklCtK2g000TmVbtBWQU + dPOwqtfzaL419dNKYKSWMIUG0Wn3eBuiiH1jme6eQc4ryr2AAvUA2UUatIMzfoChCTOHjr/lcFATS1bv + Q1oty9htBlLy1HsAuWUVarhb2olty7ELaOrScSS8iaMRDbzvmQbJBg4TzW0fCbpWQlTm8z2ArHRVG49r + ujCYTPKH4XaKbDpX2dxcQbSacG4YaNf0Eqwo40Ki9wv9ALKu3HhJ3B01eaWtfB0dxyH+Yn1lgb7+IW7m + NxKcUEZo0l74AEBWWHI1IYkVBMYUceziIwIiVJyNe0Kospxz8WV+YVl/AaAiMr7CG6U7AAAAAElFTkSu + QmCC - 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 + OiSK99IAAAAASUVORK5CYII= @@ -1038,4 +1006,8 @@ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== + + + ..\resources\toolbox.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + \ No newline at end of file diff --git a/PROMS/VEPROMS User Interface/Resources/toolbox.png b/PROMS/VEPROMS User Interface/Resources/toolbox.png new file mode 100644 index 0000000000000000000000000000000000000000..f645121b9a3098ab1aa277edccd2f08136b50e1d GIT binary patch literal 3353 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 literal 0 HcmV?d00001 diff --git a/PROMS/VEPROMS User Interface/VEPROMS_UI.csproj b/PROMS/VEPROMS User Interface/VEPROMS_UI.csproj index e6a0cace..a6e13435 100644 --- a/PROMS/VEPROMS User Interface/VEPROMS_UI.csproj +++ b/PROMS/VEPROMS User Interface/VEPROMS_UI.csproj @@ -266,6 +266,12 @@ frmBatchRefreshCheckedOut.cs + + Form + + + frmGenTools.cs + Form @@ -378,6 +384,9 @@ frmAnnotationsCleanup.cs + + frmGenTools.cs + frmPDFStatusForm.cs Designer @@ -503,6 +512,7 @@ PreserveNewest + PreserveNewest diff --git a/PROMS/VEPROMS User Interface/frmBatchRefresh.Designer.cs b/PROMS/VEPROMS User Interface/frmBatchRefresh.Designer.cs index 6e6b2213..a4e39c42 100644 --- a/PROMS/VEPROMS User Interface/frmBatchRefresh.Designer.cs +++ b/PROMS/VEPROMS User Interface/frmBatchRefresh.Designer.cs @@ -70,17 +70,6 @@ this.labelX6 = new DevComponents.DotNetBar.LabelX(); this.warningBox1 = new DevComponents.DotNetBar.Controls.WarningBox(); this.btnFixLinks = new DevComponents.DotNetBar.ButtonX(); - this.sideNavPanel1 = new DevComponents.DotNetBar.Controls.SideNavPanel(); - this.warningBox3 = new DevComponents.DotNetBar.Controls.WarningBox(); - this.labelX7 = new DevComponents.DotNetBar.LabelX(); - this.line1 = new DevComponents.DotNetBar.Controls.Line(); - this.swCkObsoleteROData = new DevComponents.DotNetBar.Controls.SwitchButton(); - this.swHiddenDataLocs = new DevComponents.DotNetBar.Controls.SwitchButton(); - this.labelX3 = new DevComponents.DotNetBar.LabelX(); - this.labelX2 = new DevComponents.DotNetBar.LabelX(); - this.swCkOrphanDataRecs = new DevComponents.DotNetBar.Controls.SwitchButton(); - this.labelX1 = new DevComponents.DotNetBar.LabelX(); - this.btnRunCheck = new DevComponents.DotNetBar.ButtonX(); this.sideNavPanel2 = new DevComponents.DotNetBar.Controls.SideNavPanel(); this.swRefreshTblsForSrch = new DevComponents.DotNetBar.Controls.SwitchButton(); this.lblRefreshTblForSrch = new DevComponents.DotNetBar.LabelX(); @@ -97,14 +86,10 @@ this.labelX8 = new DevComponents.DotNetBar.LabelX(); this.line2 = new DevComponents.DotNetBar.Controls.Line(); this.btnRunRepair = new DevComponents.DotNetBar.ButtonX(); - this.sideNavPanel5 = new DevComponents.DotNetBar.Controls.SideNavPanel(); - this.btn_ShowUsers = new DevComponents.DotNetBar.ButtonX(); this.sideNavItem1 = new DevComponents.DotNetBar.Controls.SideNavItem(); this.separator1 = new DevComponents.DotNetBar.Separator(); - this.sideNavItmCheck = new DevComponents.DotNetBar.Controls.SideNavItem(); this.sideNavItmRepair = new DevComponents.DotNetBar.Controls.SideNavItem(); this.sideNavItmLinks = new DevComponents.DotNetBar.Controls.SideNavItem(); - this.sideNavItmUsers = new DevComponents.DotNetBar.Controls.SideNavItem(); this.sideNavItmDelete = new DevComponents.DotNetBar.Controls.SideNavItem(); this.sideNavItmExit = new DevComponents.DotNetBar.Controls.SideNavItem(); this.panelEx4 = new DevComponents.DotNetBar.PanelEx(); @@ -129,9 +114,7 @@ this.sideNav1.SuspendLayout(); this.sideNavPanel4.SuspendLayout(); this.sideNavPanel3.SuspendLayout(); - this.sideNavPanel1.SuspendLayout(); this.sideNavPanel2.SuspendLayout(); - this.sideNavPanel5.SuspendLayout(); this.panelEx4.SuspendLayout(); this.SuspendLayout(); // @@ -467,21 +450,17 @@ // sideNav1 // this.sideNav1.BackColor = System.Drawing.SystemColors.Control; + this.sideNav1.Controls.Add(this.sideNavPanel2); this.sideNav1.Controls.Add(this.sideNavPanel4); this.sideNav1.Controls.Add(this.sideNavPanel3); - this.sideNav1.Controls.Add(this.sideNavPanel1); - this.sideNav1.Controls.Add(this.sideNavPanel2); - this.sideNav1.Controls.Add(this.sideNavPanel5); this.sideNav1.Dock = System.Windows.Forms.DockStyle.Fill; this.sideNav1.EnableClose = false; this.sideNav1.EnableMaximize = false; this.sideNav1.Items.AddRange(new DevComponents.DotNetBar.BaseItem[] { this.sideNavItem1, this.separator1, - this.sideNavItmCheck, this.sideNavItmRepair, this.sideNavItmLinks, - this.sideNavItmUsers, this.sideNavItmDelete, this.sideNavItmExit}); this.sideNav1.Location = new System.Drawing.Point(0, 0); @@ -505,6 +484,7 @@ this.sideNavPanel4.Name = "sideNavPanel4"; this.sideNavPanel4.Size = new System.Drawing.Size(299, 493); this.sideNavPanel4.TabIndex = 27; + this.sideNavPanel4.Visible = false; // // swDeleteFolder // @@ -759,173 +739,6 @@ this.btnFixLinks.Text = "Process Links"; this.btnFixLinks.Click += new System.EventHandler(this.btnFixLinks_Click); // - // sideNavPanel1 - // - this.sideNavPanel1.Controls.Add(this.warningBox3); - this.sideNavPanel1.Controls.Add(this.labelX7); - this.sideNavPanel1.Controls.Add(this.line1); - this.sideNavPanel1.Controls.Add(this.swCkObsoleteROData); - this.sideNavPanel1.Controls.Add(this.swHiddenDataLocs); - this.sideNavPanel1.Controls.Add(this.labelX3); - this.sideNavPanel1.Controls.Add(this.labelX2); - this.sideNavPanel1.Controls.Add(this.swCkOrphanDataRecs); - this.sideNavPanel1.Controls.Add(this.labelX1); - this.sideNavPanel1.Controls.Add(this.btnRunCheck); - this.sideNavPanel1.Dock = System.Windows.Forms.DockStyle.Fill; - this.sideNavPanel1.Location = new System.Drawing.Point(89, 31); - this.sideNavPanel1.Name = "sideNavPanel1"; - this.sideNavPanel1.Size = new System.Drawing.Size(291, 494); - this.sideNavPanel1.TabIndex = 2; - this.sideNavPanel1.Visible = false; - // - // warningBox3 - // - this.warningBox3.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(196)))), ((int)(((byte)(219)))), ((int)(((byte)(249))))); - this.warningBox3.CloseButtonVisible = false; - this.warningBox3.Image = ((System.Drawing.Image)(resources.GetObject("warningBox3.Image"))); - this.warningBox3.Location = new System.Drawing.Point(17, 207); - this.warningBox3.Margin = new System.Windows.Forms.Padding(4); - this.warningBox3.Name = "warningBox3"; - this.warningBox3.OptionsButtonVisible = false; - this.warningBox3.Size = new System.Drawing.Size(264, 32); - this.warningBox3.TabIndex = 29; - this.warningBox3.Text = "NOTE These tools can take a long time to run"; - // - // labelX7 - // - this.labelX7.BackColor = System.Drawing.Color.Transparent; - // - // - // - this.labelX7.BackgroundStyle.CornerType = DevComponents.DotNetBar.eCornerType.Square; - this.labelX7.Font = new System.Drawing.Font("Microsoft Sans Serif", 11.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.labelX7.Location = new System.Drawing.Point(5, 3); - this.labelX7.Name = "labelX7"; - this.labelX7.Size = new System.Drawing.Size(251, 22); - this.labelX7.TabIndex = 19; - this.labelX7.Text = "Check for these Data Issues:"; - // - // line1 - // - this.line1.BackColor = System.Drawing.Color.Transparent; - this.line1.Location = new System.Drawing.Point(8, 179); - this.line1.Name = "line1"; - this.line1.Size = new System.Drawing.Size(285, 12); - this.line1.TabIndex = 18; - this.line1.Text = "line1"; - // - // swCkObsoleteROData - // - // - // - // - this.swCkObsoleteROData.BackgroundStyle.CornerType = DevComponents.DotNetBar.eCornerType.Square; - this.swCkObsoleteROData.Location = new System.Drawing.Point(10, 99); - this.swCkObsoleteROData.Name = "swCkObsoleteROData"; - this.swCkObsoleteROData.Size = new System.Drawing.Size(91, 22); - this.swCkObsoleteROData.Style = DevComponents.DotNetBar.eDotNetBarStyle.StyleManagerControlled; - this.superTooltip1.SetSuperTooltip(this.swCkObsoleteROData, new DevComponents.DotNetBar.SuperTooltipInfo("Obsolete RO Data", "", resources.GetString("swCkObsoleteROData.SuperTooltip"), null, null, DevComponents.DotNetBar.eTooltipColor.Gray, true, true, new System.Drawing.Size(250, 135))); - this.swCkObsoleteROData.SwitchClickTogglesValue = true; - this.swCkObsoleteROData.TabIndex = 14; - this.swCkObsoleteROData.Value = true; - this.swCkObsoleteROData.ValueObject = "Y"; - this.swCkObsoleteROData.ValueChanged += new System.EventHandler(this.swCk_ValueChanged); - // - // swHiddenDataLocs - // - // - // - // - this.swHiddenDataLocs.BackgroundStyle.CornerType = DevComponents.DotNetBar.eCornerType.Square; - this.swHiddenDataLocs.Location = new System.Drawing.Point(10, 71); - this.swHiddenDataLocs.Name = "swHiddenDataLocs"; - this.swHiddenDataLocs.Size = new System.Drawing.Size(91, 22); - this.swHiddenDataLocs.Style = DevComponents.DotNetBar.eDotNetBarStyle.StyleManagerControlled; - this.superTooltip1.SetSuperTooltip(this.swHiddenDataLocs, new DevComponents.DotNetBar.SuperTooltipInfo("Hidden Data Locations", "", resources.GetString("swHiddenDataLocs.SuperTooltip"), null, null, DevComponents.DotNetBar.eTooltipColor.Gray)); - this.swHiddenDataLocs.SwitchClickTogglesValue = true; - this.swHiddenDataLocs.TabIndex = 15; - this.swHiddenDataLocs.Value = true; - this.swHiddenDataLocs.ValueObject = "Y"; - this.swHiddenDataLocs.ValueChanged += new System.EventHandler(this.swCk_ValueChanged); - // - // labelX3 - // - this.labelX3.BackColor = System.Drawing.Color.Transparent; - // - // - // - this.labelX3.BackgroundStyle.CornerType = DevComponents.DotNetBar.eCornerType.Square; - this.labelX3.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.labelX3.Location = new System.Drawing.Point(107, 99); - this.labelX3.Name = "labelX3"; - this.labelX3.Size = new System.Drawing.Size(154, 22); - this.superTooltip1.SetSuperTooltip(this.labelX3, new DevComponents.DotNetBar.SuperTooltipInfo("Obsolete RO Data", "", resources.GetString("labelX3.SuperTooltip"), null, null, DevComponents.DotNetBar.eTooltipColor.Gray, true, true, new System.Drawing.Size(250, 135))); - this.labelX3.TabIndex = 11; - this.labelX3.Text = "Obsolete RO Data"; - // - // labelX2 - // - this.labelX2.BackColor = System.Drawing.Color.Transparent; - // - // - // - this.labelX2.BackgroundStyle.CornerType = DevComponents.DotNetBar.eCornerType.Square; - this.labelX2.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.labelX2.Location = new System.Drawing.Point(107, 71); - this.labelX2.Name = "labelX2"; - this.labelX2.Size = new System.Drawing.Size(140, 22); - this.superTooltip1.SetSuperTooltip(this.labelX2, new DevComponents.DotNetBar.SuperTooltipInfo("Hidden Data Locations", "", resources.GetString("labelX2.SuperTooltip"), null, null, DevComponents.DotNetBar.eTooltipColor.Gray)); - this.labelX2.TabIndex = 12; - this.labelX2.Text = "Hidden Data Locations"; - // - // swCkOrphanDataRecs - // - // - // - // - this.swCkOrphanDataRecs.BackgroundStyle.CornerType = DevComponents.DotNetBar.eCornerType.Square; - this.swCkOrphanDataRecs.Location = new System.Drawing.Point(10, 43); - this.swCkOrphanDataRecs.Name = "swCkOrphanDataRecs"; - this.swCkOrphanDataRecs.Size = new System.Drawing.Size(91, 22); - this.swCkOrphanDataRecs.Style = DevComponents.DotNetBar.eDotNetBarStyle.StyleManagerControlled; - this.superTooltip1.SetSuperTooltip(this.swCkOrphanDataRecs, new DevComponents.DotNetBar.SuperTooltipInfo("Orphan Data Records", "", resources.GetString("swCkOrphanDataRecs.SuperTooltip"), null, null, DevComponents.DotNetBar.eTooltipColor.Gray, true, true, new System.Drawing.Size(275, 193))); - this.swCkOrphanDataRecs.SwitchClickTogglesValue = true; - this.swCkOrphanDataRecs.TabIndex = 9; - this.swCkOrphanDataRecs.Value = true; - this.swCkOrphanDataRecs.ValueObject = "Y"; - this.swCkOrphanDataRecs.ValueChanged += new System.EventHandler(this.swCk_ValueChanged); - // - // labelX1 - // - this.labelX1.BackColor = System.Drawing.Color.Transparent; - // - // - // - this.labelX1.BackgroundStyle.CornerType = DevComponents.DotNetBar.eCornerType.Square; - this.labelX1.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.labelX1.Location = new System.Drawing.Point(107, 43); - this.labelX1.Name = "labelX1"; - this.labelX1.Size = new System.Drawing.Size(172, 22); - this.superTooltip1.SetSuperTooltip(this.labelX1, new DevComponents.DotNetBar.SuperTooltipInfo("Orphan Data Records", "", resources.GetString("labelX1.SuperTooltip"), null, null, DevComponents.DotNetBar.eTooltipColor.Gray, true, true, new System.Drawing.Size(275, 190))); - this.labelX1.TabIndex = 8; - this.labelX1.Text = "Orphan Data Records"; - // - // btnRunCheck - // - this.btnRunCheck.AccessibleRole = System.Windows.Forms.AccessibleRole.PushButton; - this.btnRunCheck.Checked = true; - this.btnRunCheck.ColorTable = DevComponents.DotNetBar.eButtonColor.OrangeWithBackground; - this.btnRunCheck.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.btnRunCheck.Location = new System.Drawing.Point(5, 150); - this.btnRunCheck.Name = "btnRunCheck"; - this.btnRunCheck.Size = new System.Drawing.Size(286, 23); - this.btnRunCheck.Style = DevComponents.DotNetBar.eDotNetBarStyle.StyleManagerControlled; - this.superTooltip1.SetSuperTooltip(this.btnRunCheck, new DevComponents.DotNetBar.SuperTooltipInfo("Run Check", "", "This will run the database check tools selected.\r\n\r\nClick on the on/off switches " + - "to turn on/off each tool.", null, null, DevComponents.DotNetBar.eTooltipColor.Gray, true, true, new System.Drawing.Size(200, 100))); - this.btnRunCheck.TabIndex = 7; - this.btnRunCheck.Text = "Run Check"; - this.btnRunCheck.Click += new System.EventHandler(this.btnRunCheck_Click); - // // sideNavPanel2 // this.sideNavPanel2.Controls.Add(this.swRefreshTblsForSrch); @@ -944,11 +757,10 @@ this.sideNavPanel2.Controls.Add(this.line2); this.sideNavPanel2.Controls.Add(this.btnRunRepair); this.sideNavPanel2.Dock = System.Windows.Forms.DockStyle.Fill; - this.sideNavPanel2.Location = new System.Drawing.Point(89, 31); + this.sideNavPanel2.Location = new System.Drawing.Point(81, 31); this.sideNavPanel2.Name = "sideNavPanel2"; - this.sideNavPanel2.Size = new System.Drawing.Size(291, 494); + this.sideNavPanel2.Size = new System.Drawing.Size(299, 493); this.sideNavPanel2.TabIndex = 6; - this.sideNavPanel2.Visible = false; // // swRefreshTblsForSrch // @@ -1176,31 +988,6 @@ this.btnRunRepair.Text = "Run Repair"; this.btnRunRepair.Click += new System.EventHandler(this.btnRunRepair_Click); // - // sideNavPanel5 - // - this.sideNavPanel5.Controls.Add(this.btn_ShowUsers); - this.sideNavPanel5.Dock = System.Windows.Forms.DockStyle.Fill; - this.sideNavPanel5.Location = new System.Drawing.Point(81, 31); - this.sideNavPanel5.Name = "sideNavPanel5"; - this.sideNavPanel5.Size = new System.Drawing.Size(299, 494); - this.sideNavPanel5.TabIndex = 14; - this.sideNavPanel5.Visible = false; - // - // btn_ShowUsers - // - this.btn_ShowUsers.AccessibleRole = System.Windows.Forms.AccessibleRole.PushButton; - this.btn_ShowUsers.Checked = true; - this.btn_ShowUsers.ColorTable = DevComponents.DotNetBar.eButtonColor.OrangeWithBackground; - this.btn_ShowUsers.Location = new System.Drawing.Point(57, 37); - this.btn_ShowUsers.Name = "btn_ShowUsers"; - this.btn_ShowUsers.Size = new System.Drawing.Size(171, 23); - this.btn_ShowUsers.Style = DevComponents.DotNetBar.eDotNetBarStyle.StyleManagerControlled; - this.superTooltip1.SetSuperTooltip(this.btn_ShowUsers, new DevComponents.DotNetBar.SuperTooltipInfo("Show Users", "", "This will return all of the users currently with open sessions in the database an" + - "d the details of any items they have checked out.", null, null, DevComponents.DotNetBar.eTooltipColor.Gray, true, true, new System.Drawing.Size(200, 80))); - this.btn_ShowUsers.TabIndex = 0; - this.btn_ShowUsers.Text = "Show Users"; - this.btn_ShowUsers.Click += new System.EventHandler(this.btn_ShowUsers_Click); - // // sideNavItem1 // this.sideNavItem1.IsSystemMenu = true; @@ -1218,16 +1005,9 @@ this.separator1.Padding.Top = 2; this.separator1.SeparatorOrientation = DevComponents.DotNetBar.eDesignMarkerOrientation.Vertical; // - // sideNavItmCheck - // - this.sideNavItmCheck.Name = "sideNavItmCheck"; - this.sideNavItmCheck.Panel = this.sideNavPanel1; - this.sideNavItmCheck.Symbol = ""; - this.sideNavItmCheck.Text = "Check"; - this.sideNavItmCheck.Click += new System.EventHandler(this.sideNavItmCheck_Click); - // // sideNavItmRepair // + this.sideNavItmRepair.Checked = true; this.sideNavItmRepair.Name = "sideNavItmRepair"; this.sideNavItmRepair.Panel = this.sideNavPanel2; this.sideNavItmRepair.Symbol = ""; @@ -1242,17 +1022,8 @@ this.sideNavItmLinks.Text = "Links"; this.sideNavItmLinks.Click += new System.EventHandler(this.sideNavItmLinks_Click); // - // sideNavItmUsers - // - this.sideNavItmUsers.Name = "sideNavItmUsers"; - this.sideNavItmUsers.Panel = this.sideNavPanel5; - this.sideNavItmUsers.Symbol = ""; - this.sideNavItmUsers.Text = "Users"; - this.sideNavItmUsers.Click += new System.EventHandler(this.sideNavItmUsers_Click); - // // sideNavItmDelete // - this.sideNavItmDelete.Checked = true; this.sideNavItmDelete.Name = "sideNavItmDelete"; this.sideNavItmDelete.Panel = this.sideNavPanel4; this.sideNavItmDelete.Symbol = ""; @@ -1392,9 +1163,7 @@ this.sideNav1.PerformLayout(); this.sideNavPanel4.ResumeLayout(false); this.sideNavPanel3.ResumeLayout(false); - this.sideNavPanel1.ResumeLayout(false); this.sideNavPanel2.ResumeLayout(false); - this.sideNavPanel5.ResumeLayout(false); this.panelEx4.ResumeLayout(false); this.ResumeLayout(false); @@ -1422,16 +1191,6 @@ private System.Windows.Forms.CheckBox chkLater; private System.Windows.Forms.Label label4; private DevComponents.DotNetBar.Controls.SideNav sideNav1; - private DevComponents.DotNetBar.Controls.SideNavPanel sideNavPanel1; - private DevComponents.DotNetBar.LabelX labelX7; - private DevComponents.DotNetBar.Controls.Line line1; - private DevComponents.DotNetBar.Controls.SwitchButton swCkObsoleteROData; - private DevComponents.DotNetBar.Controls.SwitchButton swHiddenDataLocs; - private DevComponents.DotNetBar.LabelX labelX3; - private DevComponents.DotNetBar.LabelX labelX2; - private DevComponents.DotNetBar.Controls.SwitchButton swCkOrphanDataRecs; - private DevComponents.DotNetBar.LabelX labelX1; - private DevComponents.DotNetBar.ButtonX btnRunCheck; private DevComponents.DotNetBar.Controls.SideNavPanel sideNavPanel2; private DevComponents.DotNetBar.Controls.SwitchButton swRmObsoleteROData; private DevComponents.DotNetBar.Controls.SwitchButton swRefreshWordAttmts; @@ -1444,16 +1203,12 @@ private DevComponents.DotNetBar.LabelX labelX8; private DevComponents.DotNetBar.Controls.Line line2; private DevComponents.DotNetBar.ButtonX btnRunRepair; - private DevComponents.DotNetBar.Controls.SideNavPanel sideNavPanel5; - private DevComponents.DotNetBar.ButtonX btn_ShowUsers; private DevComponents.DotNetBar.Controls.SideNavPanel sideNavPanel3; private DevComponents.DotNetBar.ButtonX btnFixLinks; private DevComponents.DotNetBar.Controls.SideNavItem sideNavItem1; private DevComponents.DotNetBar.Separator separator1; - private DevComponents.DotNetBar.Controls.SideNavItem sideNavItmCheck; private DevComponents.DotNetBar.Controls.SideNavItem sideNavItmRepair; private DevComponents.DotNetBar.Controls.SideNavItem sideNavItmLinks; - private DevComponents.DotNetBar.Controls.SideNavItem sideNavItmUsers; private DevComponents.DotNetBar.Controls.SideNavItem sideNavItmExit; private DevComponents.DotNetBar.LabelX lblAdmToolProgressType; private DevComponents.DotNetBar.ProgressSteps progressSteps1; @@ -1473,7 +1228,6 @@ private DevComponents.DotNetBar.LabelX labelX6; private DevComponents.DotNetBar.Controls.WarningBox warningBox5; private DevComponents.DotNetBar.Controls.Line line3; - private DevComponents.DotNetBar.Controls.WarningBox warningBox3; private DevComponents.DotNetBar.Controls.WarningBox warningBox4; private DevComponents.DotNetBar.Controls.WarningBox warningBox2; private DevComponents.DotNetBar.Controls.SwitchButton swRefreshTblsForSrch; diff --git a/PROMS/VEPROMS User Interface/frmBatchRefresh.cs b/PROMS/VEPROMS User Interface/frmBatchRefresh.cs index 27f501a4..2e616419 100644 --- a/PROMS/VEPROMS User Interface/frmBatchRefresh.cs +++ b/PROMS/VEPROMS User Interface/frmBatchRefresh.cs @@ -34,8 +34,8 @@ namespace VEPROMS _veProms = veProms; - // When opening Admin tools Check tab will be default. - this.sideNavItmCheck.Checked = true; + // When opening Admin tools Repair tab will be default. + this.sideNavItmRepair.Checked = true; if (sideNavItmDelete.Checked) { @@ -95,7 +95,6 @@ namespace VEPROMS int affectedRows = ESP_FixHyphens.Execute("vesp_FixHyphens") / 2;// Two results for each change txtProcess.AppendText(string.Format("Fixed {0} Hyphens", affectedRows)); txtProcess.AppendText(Environment.NewLine); - //txtProcess.AppendText(Environment.NewLine); txtResults.AppendText(string.Format("{0} Hyphens were Fixed.", affectedRows)); txtResults.AppendText(Environment.NewLine); txtResults.AppendText(Environment.NewLine); @@ -143,16 +142,10 @@ namespace VEPROMS return false; } - private List myTreeNodePath; - private void ResetTV() - { - ResetTV(false); - } - private void ResetTV(bool noProcs) + private void ResetTV(bool noProcs) { btnFixLinks.Enabled = false; this.Cursor = Cursors.WaitCursor; - //myTreeNodePath = new List(); myTV.Nodes.Clear(); myDocVersions.Clear(); myFolders.Clear(); @@ -165,10 +158,6 @@ namespace VEPROMS myTV.SelectedNode.Expand(); this.Cursor = Cursors.Default; } - private void ResetDelTV() - { - ResetDelTV(false); - } private void ResetDelTV(bool noProcs) { btnFixLinks.Enabled = false; @@ -208,13 +197,10 @@ namespace VEPROMS TreeNode tnc = tn.Nodes.Add(fic.Name); tnc.Tag = fic; - if (fic.ChildFolderCount > 0) - { - if (LoadChildFolders(fic, tnc, noProcs)) - loadedChildWorkingDraft = true; - } + if (fic.ChildFolderCount > 0 && LoadChildFolders(fic, tnc, noProcs)) + loadedChildWorkingDraft = true; - if (fic.FolderDocVersionCount > 0) + if (fic.FolderDocVersionCount > 0) { if (!LoadDocVersions(fic, tnc, noProcs)) tnc.Remove(); @@ -252,12 +238,9 @@ namespace VEPROMS { tnc.Tag = dvi; myDocVersions.Add(tnc, dvi); - if (!noProcs) - { - if (dvi.Procedures.Count > 0) - LoadProcedures(dvi, tnc); - } - rtnval = true; + if (!noProcs && dvi.Procedures.Count > 0) + LoadProcedures(dvi, tnc); + rtnval = true; } else { @@ -273,7 +256,7 @@ namespace VEPROMS } private void LoadProcedures(DocVersionInfo dvi, TreeNode tnc) { - foreach (ProcedureInfo pi in dvi.Procedures) + foreach (ProcedureInfo pi in dvi.Procedures.OfType()) { TreeNode tn = tnc.Nodes.Add(string.Format("{0} {1}", pi.DisplayNumber, pi.DisplayText)); myProcedures.Add(tn, pi); @@ -327,7 +310,7 @@ namespace VEPROMS // C2023-002: Loop through the docversion's procedures to determine which cannot be open and add to // list. The frmBatchRefreshCheckedOut dialog operates on procedures, not docversions. string msgp = string.Empty; - foreach (ProcedureInfo pi in dq.Procedures) + foreach (ProcedureInfo pi in dq.Procedures.OfType()) { if (!MySessionInfo.CanCheckOutItem(pi.ItemID, CheckOutType.Procedure, ref msgp)) pil.Add(pi); } @@ -520,7 +503,6 @@ namespace VEPROMS foreach (TreeNode tn in myProcedures.Keys) if (tn.Checked) pil.Add(myProcedures[tn]); - //PopulateTransitionInfoLists(pil); DateTime pStart = DateTime.Now; txtProcess.AppendText("Refresh Transitions"); txtProcess.AppendText(Environment.NewLine); @@ -710,7 +692,7 @@ namespace VEPROMS cc.Save(); } } - catch (Exception ex) + catch { this.Cursor = Cursors.Default; return -cntfix; @@ -722,42 +704,6 @@ namespace VEPROMS } return cntfix; } - // C2017-030 - new Admin Tools user interface - // tool renamed to Identify Orphan Items - private void IdentifyDisconnectedItems() - { - this.Cursor = Cursors.WaitCursor; - DateTime pStart = DateTime.Now; - txtProcess.AppendText("Identifing Orphan Items"); - txtProcess.AppendText(Environment.NewLine); - txtProcess.AppendText(string.Format("Started: {0}", pStart.ToString("MM/dd/yyyy @ HH:mm"))); - txtProcess.AppendText(Environment.NewLine); - Application.DoEvents(); - int rowCount = ESP_IdentifyDisconnectedItems.Execute("vesp_GetDisconnectedItemsCount"); - txtProcess.AppendText(string.Format("Orphan Items Count: {0}", rowCount)); - txtProcess.AppendText(Environment.NewLine); - if (rowCount > 0) - { - txtResults.AppendText(string.Format("The database contains {0} Orphan items.", rowCount)); - txtResults.AppendText(Environment.NewLine); - txtResults.AppendText("These can be removed via the Remove Orphan Data Records in the Repair tools"); - txtResults.AppendText(Environment.NewLine); - txtResults.AppendText(Environment.NewLine); - } - else - { - txtResults.AppendText("No Orphan Records Found");// B2017-108 Always output results even if there isn't any - txtResults.AppendText(Environment.NewLine); - txtResults.AppendText(Environment.NewLine); - } - DateTime pEnd = DateTime.Now; - txtProcess.AppendText(string.Format("Completed: {0}", pEnd.ToString("MM/dd/yyyy @ HH:mm"))); - txtProcess.AppendText(Environment.NewLine); - txtProcess.AppendText(Environment.NewLine); - Application.DoEvents(); - this.Cursor = Cursors.Default; - //MessageBox.Show(string.Format("{0} Completed", "Orphan Items Check"), "Orphan Items"); - } // C2017-030 - new Admin Tools user interface // tool renamed to Remove Orphan Items @@ -777,8 +723,6 @@ namespace VEPROMS int rowCount2 = ESP_IdentifyDisconnectedItems.Execute("vesp_GetDisconnectedItemsCount"); txtProcess.AppendText(string.Format("Orphan Items Purged: {0}", rowCount)); txtProcess.AppendText(Environment.NewLine); - //txtProcess.AppendText(Environment.NewLine); - //txtResults.Clear(); txtResults.AppendText(string.Format("The database contained {0} Orphan items.", rowCount)); txtResults.AppendText(Environment.NewLine); txtResults.AppendText(Environment.NewLine); @@ -795,11 +739,10 @@ namespace VEPROMS } else { - //txtResults.Clear(); txtResults.AppendText(string.Format("The database contained {0} Orphan items.", rowCount)); txtResults.AppendText(Environment.NewLine); txtResults.AppendText(Environment.NewLine); - txtResults.AppendText(string.Format("No Orpan Items to Purge!")); + txtResults.AppendText("No Orpan Items to Purge!"); txtResults.AppendText(Environment.NewLine); txtResults.AppendText(Environment.NewLine); } @@ -811,45 +754,6 @@ namespace VEPROMS this.Cursor = Cursors.Default; } - // C2017-030 - new Admin Tools user interface - // is one of two tools run from Check Obsolete RO Data - private void IdentifyUnusedRoFstsAndFigures() - { - this.Cursor = Cursors.WaitCursor; - DateTime pStart = DateTime.Now; - txtProcess.AppendText("Identifing Unused RoFsts and Figures"); - txtProcess.AppendText(Environment.NewLine); - txtProcess.AppendText(string.Format("Started: {0}", pStart.ToString("MM/dd/yyyy @ HH:mm"))); - txtProcess.AppendText(Environment.NewLine); - Application.DoEvents(); - int rowCountRoFst = ESP_GetUnusedRoFsts.Execute("vesp_GetUnusedRoFstsCount"); - int rowCountFigures = ESP_GetUnusedFigures.Execute("vesp_GetUnusedFiguresCount"); - txtProcess.AppendText(string.Format("Unused RoFsts Count: {0}, Unused Figures Count: {1}", rowCountRoFst, rowCountFigures)); - txtProcess.AppendText(Environment.NewLine); - if (rowCountRoFst > 0 || rowCountFigures > 0) - { - txtResults.AppendText(string.Format("The database contains {0} unused RoFsts.", rowCountRoFst)); - txtResults.AppendText(Environment.NewLine); - txtResults.AppendText(string.Format("The database contains {0} unused Figures items.", rowCountFigures)); - txtResults.AppendText(Environment.NewLine); - txtResults.AppendText(Environment.NewLine); - } - else - { - txtResults.AppendText("No Unused RoFsts or Figures Found"); // B2017-108 Always output results even if there isn't any - txtResults.AppendText(Environment.NewLine); - txtResults.AppendText(Environment.NewLine); - } - - DateTime pEnd = DateTime.Now; - txtProcess.AppendText(string.Format("Completed: {0}", pEnd.ToString("MM/dd/yyyy @ HH:mm"))); - txtProcess.AppendText(Environment.NewLine); - txtProcess.AppendText(string.Format("Started: {0}", pStart.ToString("MM/dd/yyyy @ HH:mm"))); - txtProcess.AppendText(Environment.NewLine); - Application.DoEvents(); - this.Cursor = Cursors.Default; - } - // C2017-030 - new Admin Tools user interface is one of two tools run from Remove Obsolete RO Data private void RemoveUnusedRoFstsAndFigures() { @@ -893,41 +797,7 @@ namespace VEPROMS { txtProcess.AppendText(string.Format("The database contained {0} unused RoFSTs or Figures.", rowCountRoFst + rowCountFigures)); txtProcess.AppendText(Environment.NewLine); - txtResults.AppendText(string.Format("No Unused ROFSTs To Remove.")); - txtResults.AppendText(Environment.NewLine); - txtResults.AppendText(Environment.NewLine); - } - DateTime pEnd = DateTime.Now; - txtProcess.AppendText(string.Format("Completed: {0}", pEnd.ToString("MM/dd/yyyy @ HH:mm"))); - txtProcess.AppendText(Environment.NewLine); - txtProcess.AppendText(Environment.NewLine); - Application.DoEvents(); - this.Cursor = Cursors.Default; - } - - // C2017-030 - new Admin Tools user interface - // is one of two tools run from Check Obsolete RO Data - private void IdentifyROAssociations() - { - this.Cursor = Cursors.WaitCursor; - DateTime pStart = DateTime.Now; - txtProcess.AppendText("Identifing Unused RO Associations"); - txtProcess.AppendText(Environment.NewLine); - txtProcess.AppendText(string.Format("Started: {0}", pStart.ToString("MM/dd/yyyy @ HH:mm"))); - txtProcess.AppendText(Environment.NewLine); - Application.DoEvents(); - int rowCount = ESP_GetROAssoc.Execute("vesp_GetUnusedROAssociationsCount"); - txtProcess.AppendText(string.Format("Unused RO Associations Count: {0}", rowCount)); - txtProcess.AppendText(Environment.NewLine); - if (rowCount > 0) - { - txtResults.AppendText(string.Format("The database contains {0} unused RO Associations.", rowCount)); - txtResults.AppendText(Environment.NewLine); - txtResults.AppendText(Environment.NewLine); - } - else - { - txtResults.AppendText("No unused RO Associations Found");// B2017-108 Always output results even if there isn't any + txtResults.AppendText("No Unused ROFSTs To Remove."); txtResults.AppendText(Environment.NewLine); txtResults.AppendText(Environment.NewLine); } @@ -976,7 +846,7 @@ namespace VEPROMS txtResults.AppendText(string.Format("The database contained {0} Unused RO Associations.", rowCount)); txtResults.AppendText(Environment.NewLine); txtResults.AppendText(Environment.NewLine); - txtResults.AppendText(string.Format("No Unused RO Associations to Purge.")); + txtResults.AppendText("No Unused RO Associations to Purge."); txtResults.AppendText(Environment.NewLine); txtResults.AppendText(Environment.NewLine); } @@ -988,49 +858,6 @@ namespace VEPROMS this.Cursor = Cursors.Default; } - // C2017-030 - new Admin Tools user interface - // tool was renamed to Hidden Data Locations (on Check list) - private void IdentifyNonEditableItems() - { - this.Cursor = Cursors.WaitCursor; - DateTime pStart = DateTime.Now; - txtProcess.AppendText("Identifing Hidden Item Locations"); - txtProcess.AppendText(Environment.NewLine); - txtProcess.AppendText(string.Format("Started: {0}", pStart.ToString("MM/dd/yyyy @ HH:mm"))); - txtProcess.AppendText(Environment.NewLine); - Application.DoEvents(); - List myItems = ESP_IdentifyNonEditableItems.Execute("vesp_GetNonEditableItems"); - txtProcess.AppendText(string.Format("Hidden Items Count: {0}", myItems.Count)); - txtProcess.AppendText(Environment.NewLine); - if (myItems.Count > 0) - { - txtResults.AppendText("The following items are hidden (non-editable)..."); - txtResults.AppendText(Environment.NewLine); - txtResults.AppendText(Environment.NewLine); - foreach (ItemInfo ii in myItems) - { - txtResults.AppendText(ii.Path); - txtResults.AppendText(Environment.NewLine); - } - txtResults.AppendText(Environment.NewLine); - } - else - { - txtResults.AppendText("No Hidden Data Found");// B2017-108 Always output results even if there isn't any - txtResults.AppendText(Environment.NewLine); - txtResults.AppendText(Environment.NewLine); - } - //C2025-011 RO Update Admin Tool Memory Enhancements - //clear the list since no longer using it - myItems.Clear(); - DateTime pEnd = DateTime.Now; - txtProcess.AppendText(string.Format("Completed: {0}", pEnd.ToString("MM/dd/yyyy @ HH:mm"))); - txtProcess.AppendText(Environment.NewLine); - txtProcess.AppendText(Environment.NewLine); - Application.DoEvents(); - this.Cursor = Cursors.Default; - } - // C2017-030 - new Admin Tools user interface // tool was renamed to Show Users private void GetDatabaseSessions() @@ -1095,7 +922,6 @@ namespace VEPROMS return; } - //FileInfo fiRofst = new FileInfo(rofstPath); Cursor = Cursors.WaitCursor; using (DocVersion dv = DocVersion.Get(dq.VersionID)) @@ -1109,7 +935,6 @@ namespace VEPROMS } roFstInfo.ROTableUpdate += new ROFstInfoROTableUpdateEvent(roFstInfo_ROTableUpdate); ROFst newrofst = ROFstInfo.RefreshROFst(dv, roFstInfo, DoProgressBarRefresh, txtProcess); - //ROFst newrofst = ROFstInfo.RefreshROFst(dv, roFstInfo, DoProgressBarRefresh, null); roFstInfo.ROTableUpdate -= new ROFstInfoROTableUpdateEvent(roFstInfo_ROTableUpdate); } @@ -1122,14 +947,13 @@ namespace VEPROMS txtResults.AppendText(Environment.NewLine); txtResults.AppendText(Environment.NewLine); - return; } private void RefreshProcedureTransitions(ProcedureInfo pq) { DateTime start = DateTime.Now; ProcedureInfo.ResetTranCounters(); - ProcedureInfo.RefreshTransitions(pq);//, transitionsToDisconnected, transitionsToNonEditable); + ProcedureInfo.RefreshTransitions(pq); TimeSpan ts = DateTime.Now - start; // B2018-002 - Invalid Transitions - Display Transition Refresh Statistics txtProcess.AppendText(string.Format("Procedure: {1}{0}Checked {2} Transitions{0}Fixed {3} Transitions{0}Converted to Text {4} Transitions{0}Cant Fix (Annotation: Bad Transition Link) {5} Transitions{0}Elapsed Seconds:{6}{0}{0}", Environment.NewLine, pq.DisplayNumber, ProcedureInfo.TranCheckCount, ProcedureInfo.TranFixCount, ProcedureInfo.TranConvertCount, ProcedureInfo.TranCantFixCount, ts.TotalSeconds)); @@ -1145,42 +969,7 @@ namespace VEPROMS return VlnFlexGrid.ROTableUpdate(sender, args); } - private void PopulateTransitionInfoLists(List pil) - { - Dictionary dic = new Dictionary(); - StringBuilder sb = new StringBuilder(); - foreach (ProcedureInfo pi in pil) - if (!dic.ContainsKey(pi.MyDocVersion.VersionID)) - { - dic.Add(pi.MyDocVersion.VersionID, pi.MyDocVersion.VersionID); - sb.Append(sb.Length == 0 ? pi.MyDocVersion.VersionID.ToString() : "," + pi.MyDocVersion.VersionID.ToString()); - } - txtProcess.AppendText("Preparing to process..."); - txtProcess.AppendText(Environment.NewLine); - Application.DoEvents(); - //transitionsToDisconnected = TransitionInfoList.GetTransitionsToDisconnected(sb.ToString()); - //transitionsToNonEditable = TransitionInfoList.GetTransitionsToNonEditable(sb.ToString()); - } - - private void ProgressBarShowText() - { - pbProcess.Refresh(); - int percent = (int)(((double)(pbProcess.Value - pbProcess.Minimum) / - (double)(pbProcess.Maximum - pbProcess.Minimum)) * 100); - using (Graphics gr = pbProcess.CreateGraphics()) - { - gr.DrawString(percent.ToString() + "%", - SystemFonts.DefaultFont, - Brushes.Black, - new PointF(pbProcess.Width / 2 - (gr.MeasureString(percent.ToString() + "%", - SystemFonts.DefaultFont).Width / 2.0F), - pbProcess.Height / 2 - (gr.MeasureString(percent.ToString() + "%", - SystemFonts.DefaultFont).Height / 2.0F))); - } - Application.DoEvents(); - } - - StringBuilder myFixes; + StringBuilder myFixes; int myFixesCount = 0; int myConvertCount = 0; // show the changes made in the Results pannel, include the ItemId of the step element @@ -1199,7 +988,6 @@ namespace VEPROMS { txtResults.AppendText(string.Format("Fixed Referenced Object for {1}({4}){0}Old Text: {2}{0}New Text: {3}{0}{0}", Environment.NewLine, (sender as ItemInfo).ShortPath, args.OldValue, args.NewValue, (sender as ItemInfo).ItemID)); Application.DoEvents(); - //myFixes.AppendLine(string.Format("Fixed Referenced Object for {1}{0}Old Text: {2}{0}New Text: {3}{0}", Environment.NewLine, (sender as ItemInfo).ShortPath, args.OldValue, args.NewValue)); } else // B2018-002 - Invalid Transitions - Display Transition Cconversion Statistics { @@ -1354,14 +1142,6 @@ namespace VEPROMS pnlLater.Enabled = chkLater.Checked; } - // C2017-030 new Admin Tools user interface - private void sideNavItmCheck_Click(object sender, EventArgs e) - { - AdminToolType = E_AdminToolType.Check; - lblAdmToolProgressType.Text = "Checking:"; - setupProgessSteps1(); - } - // C2017-030 new Admin Tools user interface private void sideNavItmRepair_Click(object sender, EventArgs e) { @@ -1387,13 +1167,6 @@ namespace VEPROMS ResetTV(false); } - // C2017-030 new Admin Tools user interface - private void sideNavItmUsers_Click(object sender, EventArgs e) - { - AdminToolType = E_AdminToolType.Users; - setupProgessSteps1(); - } - // C2017-030 new Admin Tools user interface private void sideNavItmExit_Click(object sender, EventArgs e) { @@ -1413,27 +1186,18 @@ namespace VEPROMS ResetDelTV(false); } - // new Admin Tools user interface for deletes - //private void sideNavItmDelete_Click_1(object sender, EventArgs e) - //{ - - //} - #region On/Off Swiches // C2017-030 new Admin Tools user interface private enum E_AdminToolType : int { - Check = 0, Repair = 1, Links = 2, - Users = 3, Delete = 4 }; private E_AdminToolType AdminToolType = 0; DevComponents.DotNetBar.StepItem siOrphDatRecs = new DevComponents.DotNetBar.StepItem("siOrphDatRecs", "Orphan Data Records"); - DevComponents.DotNetBar.StepItem siHiddenDataLocs = new DevComponents.DotNetBar.StepItem("siHiddenDataLocs", "Hidden Data"); DevComponents.DotNetBar.StepItem siObsoleteROData = new DevComponents.DotNetBar.StepItem("siObsoleteROData", "Obsolete RO Data"); DevComponents.DotNetBar.StepItem siStandardHyphens = new DevComponents.DotNetBar.StepItem("siStandardHyphens", "Standardize Hyphens"); DevComponents.DotNetBar.StepItem siRefreshAttmts = new DevComponents.DotNetBar.StepItem("siRefreshAttmts", "Refresh Word Attachments"); @@ -1446,18 +1210,6 @@ namespace VEPROMS switch (AdminToolType) { - case E_AdminToolType.Check: - if (swCkOrphanDataRecs.Value) - progressSteps1.Items.Add(siOrphDatRecs); - if (swHiddenDataLocs.Value) - progressSteps1.Items.Add(siHiddenDataLocs); - if (swCkObsoleteROData.Value) - progressSteps1.Items.Add(siObsoleteROData); - splitContainer3.Panel2Collapsed = false; - progressSteps1.Visible = true; - progressSteps1.Refresh(); - break; - case E_AdminToolType.Repair: if (swRmOrphanDataRecs.Value) progressSteps1.Items.Add(siOrphDatRecs); @@ -1475,7 +1227,6 @@ namespace VEPROMS break; case E_AdminToolType.Links: - case E_AdminToolType.Users: splitContainer3.Panel2Collapsed = true; progressSteps1.Visible = false; break; @@ -1532,7 +1283,6 @@ namespace VEPROMS private void StepProgress(int prgStpIdx, int val) { ((DevComponents.DotNetBar.StepItem)progressSteps1.Items[prgStpIdx]).Value = val; - return; } private void ClearStepProgress() @@ -1595,42 +1345,6 @@ namespace VEPROMS CheckROLinks(); // C2022-028 check for Bad RO Links } - private void btnRunCheck_Click(object sender, EventArgs e) - { - if (!CheckProcessLater()) return; // delay processing if set//B2017-221 Allow the batch dialog to close when waiting to process. - - int prgStpIdx = -1; - txtResults.Clear(); - txtProcess.Clear(); - - if (swCkOrphanDataRecs.Value) - { - StepProgress(++prgStpIdx, 50); - IdentifyDisconnectedItems(); // orphan items - StepProgress(prgStpIdx, 100); - } - - if (swHiddenDataLocs.Value) - { - StepProgress(++prgStpIdx, 50); - IdentifyNonEditableItems(); // hidden items - StepProgress(prgStpIdx, 100); - } - - if (swCkObsoleteROData.Value) - { - StepProgress(++prgStpIdx, 25); - IdentifyROAssociations(); - StepProgress(prgStpIdx, 50); - IdentifyUnusedRoFstsAndFigures(); - StepProgress(prgStpIdx, 100); - } - - MessageBox.Show("Check Functions Completed", "Check"); - - ClearStepProgress(); - } - private void btnRunRepair_Click(object sender, EventArgs e) { if (!CheckProcessLater()) return; // delay processing if set//B2017-221 Allow the batch dialog to close when waiting to process. @@ -1755,12 +1469,12 @@ namespace VEPROMS if (!MySessionInfo.CanCheckOutItem(dq.VersionID, CheckOutType.DocVersion, ref msg)) { string msgp = string.Empty; - foreach (ProcedureInfo pi in dq.Procedures) + foreach (ProcedureInfo pi in dq.Procedures.OfType()) { if (!MySessionInfo.CanCheckOutItem(pi.ItemID, CheckOutType.Procedure, ref msgp)) { FolderInfo fi = (FolderInfo)dq.ActiveParent; - int itemID = (int)fi.FolderID; + int itemID = fi.FolderID; string folderName = fi.Name; if (swDeleteFolder.Value) @@ -1853,7 +1567,7 @@ namespace VEPROMS { //Gather folder information FolderInfo fi = (FolderInfo)kvp.ActiveParent; - int itemID = (int)fi.FolderID; + int itemID = fi.FolderID; string folderName = fi.Name; // Perform the deletion operation @@ -1877,8 +1591,8 @@ namespace VEPROMS foreach (var kvp in emptyFoldersToDelete) { //Gather folder information - FolderInfo fi = (FolderInfo)kvp; - int itemID = (int)fi.FolderID; + FolderInfo fi = kvp; + int itemID = fi.FolderID; string folderName = fi.Name; // Perform the deletion operation @@ -1929,9 +1643,8 @@ namespace VEPROMS return true; } - catch (Exception ex) + catch { - string err = ex.ToString(); return false; } } diff --git a/PROMS/VEPROMS User Interface/frmBatchRefresh.resx b/PROMS/VEPROMS User Interface/frmBatchRefresh.resx index bb1f3d20..55a3e983 100644 --- a/PROMS/VEPROMS User Interface/frmBatchRefresh.resx +++ b/PROMS/VEPROMS User Interface/frmBatchRefresh.resx @@ -120,196 +120,6 @@ 17, 17 - - This allows the user to remove folders and sub folders as well as their contents. - -Be sure a current backup of the database exists prior performing this function. - -It is recommended that this be done during off hours. - - - - - This allows the user to remove folders and sub folders as well as their contents. - -Be sure a current backup of the database exists prior performing this function. - -It is recommended that this be done during off hours. - - - - - This function will allow the user to remove annotations from the selected working drafts. - -Be sure a current backup of the database exists prior to running this function. - -If more than one working draft is selected, it is recommended that this be performed during off hours. - - - This function will allow the user to remove annotations from the selected working drafts. - -Be sure a current backup of the database exists prior to running this function. - -If more than one working draft is selected, it is recommended that this be performed during off hours. - - - This will allow for the deletion of groups of annotations and allow for deleting entire folders within PROMS. Use the tree nodes to select which items to delete. - -Click on the on/off switches to turn on/off each tool. - -Note that only one of these tools can be run at a time. - - - This allows the user to check referenced objects links in procedure step data for multiple working drafts in a batch mode. - -Bad referenced bject links will be identified with an Bad RO Link annotation. Use the PROMS Search tool to list all of the steps that have this annotation. - -Be sure a current backup of the database exists prior performing this function. - -It is recommended that this be done during off hours. - - - - - This allows the user to check referenced objects links in procedure step data for multiple working drafts in a batch mode. - -Bad referenced bject links will be identified with an Bad RO Link annotation. Use the PROMS Search tool to list all of the steps that have this annotation. - -Be sure a current backup of the database exists prior performing this function. - -It is recommended that this be done during off hours. - - - - - - iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAp5JREFUOE+F - k11Ik1Ecxv9zouJ2E4TWnR8V5tAppJmYsLnNlaLTxAoiKIQiibpYSmEEmSSa0IVGISMUw7rpE+yiQiuk - /IhROssPyjanpL4udeq29z3nCdcH+Wb1g+fq/zzP+R8Oh+gvPK4kNWujp1IrPek8S5Hy+X9hbXSN9aVC - eq1FwEYN8vk/mWqiDPZwI+NOHbhLj8CdDaK7npLlvnWpO0AKqZV62YgO/GMquDMN0rAevkbqlHvXZdlG - h6Rn8eATu4GJncB0Fvh8HnwPYuGpJ4vcvwZbGYWJrcpPzGXG8ngGtsZFQJOggrS0B9J0MbwNIR9uHqRQ - ee4XPhuVSy814IIB/lk9QkIIanUomFgIzkux0qHB/CUqk+eCtB2jCLEl1M1mLcBSLthKHlQqJaKjw8FZ - Mbi/ENKXEizUKD/f2k9h8jz5mumk2K0F9xUAUgE4K0JUVDji4yLBvflgMyYwlxFL9zSYq6ITa8I3DlNY - wKZ0soVSgFkAXgwuFSEmJhJJiWqwCR3YSCbY2x0QB4zwnFc6W4p+22KxiY4EXiQF74kf6/L5vdi+TYV0 - rRpsMB2sPxWsRwvpTTq87QmYOUNHg+HqQlL4ryscbK4UPGD5vu60CWw8G7evbkN7bSykXm0w/FMBew6E - CsXQFQMpaLKezP6OLeDL+8AFM5hLBzaciennKcFXUCgI7o7ENQWSfRcWmmPgPEW5tNJIj8QxM9hkDthY - FthAGlh/SvAPXC7fjOrjmyC+Sl5TsCpfdzYEK92llUbllDiaD3HEDPG9CaLDCGnI9IdEhwnioBHiOwMC - dj38fYbVglHy1FGJt57uL9ZS10IN9cxfJPvXCzTgqSKH5xwNzVXSkFBBDsFKA4KV7IKVegQrda2e7j5N - ud8AKwnMnBpmYFAAAAAASUVORK5CYII= - - - - This allows the user to update referenced objects values for multiple working drafts in a batch mode. - -Be sure a current backup of the database exists prior performing this function. - -It is recommended that this be done during off hours. - - - - This function will refresh transitions in all procedures selected below, whether they were selected individually or as a group via a procedure set. - -Be sure a current backup of the database exists prior to running this function. - -If more than one procedure is selected, it is recommended that this be performed during off hours. - - - This allows the user to update referenced objects values for multiple working drafts in a batch mode. - -Be sure a current backup of the database exists prior performing this function. - -It is recommended that this be done during off hours. - - - - This function will refresh transitions in all procedures selected below, whether they were selected individually or as a group via a procedure set. - -Be sure a current backup of the database exists prior to running this function. - -If more than one procedure is selected, it is recommended that this be performed during off hours. - - - - iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAp5JREFUOE+F - k11Ik1Ecxv9zouJ2E4TWnR8V5tAppJmYsLnNlaLTxAoiKIQiibpYSmEEmSSa0IVGISMUw7rpE+yiQiuk - /IhROssPyjanpL4udeq29z3nCdcH+Wb1g+fq/zzP+R8Oh+gvPK4kNWujp1IrPek8S5Hy+X9hbXSN9aVC - eq1FwEYN8vk/mWqiDPZwI+NOHbhLj8CdDaK7npLlvnWpO0AKqZV62YgO/GMquDMN0rAevkbqlHvXZdlG - h6Rn8eATu4GJncB0Fvh8HnwPYuGpJ4vcvwZbGYWJrcpPzGXG8ngGtsZFQJOggrS0B9J0MbwNIR9uHqRQ - ee4XPhuVSy814IIB/lk9QkIIanUomFgIzkux0qHB/CUqk+eCtB2jCLEl1M1mLcBSLthKHlQqJaKjw8FZ - Mbi/ENKXEizUKD/f2k9h8jz5mumk2K0F9xUAUgE4K0JUVDji4yLBvflgMyYwlxFL9zSYq6ITa8I3DlNY - wKZ0soVSgFkAXgwuFSEmJhJJiWqwCR3YSCbY2x0QB4zwnFc6W4p+22KxiY4EXiQF74kf6/L5vdi+TYV0 - rRpsMB2sPxWsRwvpTTq87QmYOUNHg+HqQlL4ryscbK4UPGD5vu60CWw8G7evbkN7bSykXm0w/FMBew6E - CsXQFQMpaLKezP6OLeDL+8AFM5hLBzaciennKcFXUCgI7o7ENQWSfRcWmmPgPEW5tNJIj8QxM9hkDthY - FthAGlh/SvAPXC7fjOrjmyC+Sl5TsCpfdzYEK92llUbllDiaD3HEDPG9CaLDCGnI9IdEhwnioBHiOwMC - dj38fYbVglHy1FGJt57uL9ZS10IN9cxfJPvXCzTgqSKH5xwNzVXSkFBBDsFKA4KV7IKVegQrda2e7j5N - ud8AKwnMnBpmYFAAAAAASUVORK5CYII= - - - - - iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAp5JREFUOE+F - k11Ik1Ecxv9zouJ2E4TWnR8V5tAppJmYsLnNlaLTxAoiKIQiibpYSmEEmSSa0IVGISMUw7rpE+yiQiuk - /IhROssPyjanpL4udeq29z3nCdcH+Wb1g+fq/zzP+R8Oh+gvPK4kNWujp1IrPek8S5Hy+X9hbXSN9aVC - eq1FwEYN8vk/mWqiDPZwI+NOHbhLj8CdDaK7npLlvnWpO0AKqZV62YgO/GMquDMN0rAevkbqlHvXZdlG - h6Rn8eATu4GJncB0Fvh8HnwPYuGpJ4vcvwZbGYWJrcpPzGXG8ngGtsZFQJOggrS0B9J0MbwNIR9uHqRQ - ee4XPhuVSy814IIB/lk9QkIIanUomFgIzkux0qHB/CUqk+eCtB2jCLEl1M1mLcBSLthKHlQqJaKjw8FZ - Mbi/ENKXEizUKD/f2k9h8jz5mumk2K0F9xUAUgE4K0JUVDji4yLBvflgMyYwlxFL9zSYq6ITa8I3DlNY - wKZ0soVSgFkAXgwuFSEmJhJJiWqwCR3YSCbY2x0QB4zwnFc6W4p+22KxiY4EXiQF74kf6/L5vdi+TYV0 - rRpsMB2sPxWsRwvpTTq87QmYOUNHg+HqQlL4ryscbK4UPGD5vu60CWw8G7evbkN7bSykXm0w/FMBew6E - CsXQFQMpaLKezP6OLeDL+8AFM5hLBzaciennKcFXUCgI7o7ENQWSfRcWmmPgPEW5tNJIj8QxM9hkDthY - FthAGlh/SvAPXC7fjOrjmyC+Sl5TsCpfdzYEK92llUbllDiaD3HEDPG9CaLDCGnI9IdEhwnioBHiOwMC - dj38fYbVglHy1FGJt57uL9ZS10IN9cxfJPvXCzTgqSKH5xwNzVXSkFBBDsFKA4KV7IKVegQrda2e7j5N - ud8AKwnMnBpmYFAAAAAASUVORK5CYII= - - - - Referenced Objects databases are associated with a procedure set (such as Working Draft). - -RO paths, ROFST versions, and the contents of RO figures are stored in the database when referenced. This tool will identify stored RO Paths, ROFST versions, and Figures that are no longer used. - - - - Typically, a section in PROMS only has sub-sections or steps. When and existing section is divided into sub-sections, the resulting main section might have both. - -When this occurs, the step data in the main section can be marked as non-editable. The user can no longer get to these steps and they can become forgotten as PROMS will ignore these non-editable steps when the procedure is printed. - -This tool will identify if the database has non-editable steps and provide a listing of these steps. The use can then go to these main sections, make them editable via the property page, and delete or move these steps. - -This tool may take an extended period of time to execute. - - - - Referenced Objects databases are associated with a procedure set (such as Working Draft). - -RO paths, ROFST versions, and the contents of RO figures are stored in the database when referenced. This tool will identify stored RO Paths, ROFST versions, and Figures that are no longer used. - - - - Typically, a section in PROMS only has sub-sections or steps. When and existing section is divided into sub-sections, the resulting main section might have both. - -When this occurs, the step data in the main section can be marked as non-editable. The user can no longer get to these steps and they can become forgotten as PROMS will ignore these non-editable steps when the procedure is printed. - -This tool will identify if the database has non-editable steps and provide a listing of these steps. The use can then go to these main sections, make them editable via the property page, and delete or move these steps. - -This tool may take an extended period of time to execute. - - - - Everything in PROMS is inter-related. A working draft knows what is its first procedure and a procedure knows what is its first step. Likewise, a procedure knows what procedure is before it and after it. - -Should an item become orphaned (disconnected) from the rest of the data, it will no longer be accessible. This tool detects any orphaned items in the database. - -This tool may take an extended period of time to execute. - - - - Everything in PROMS is inter-related. A working draft knows what is its first procedure and a procedure knows what is its first step. Likewise, a procedure knows what procedure is before it and after it. - -Should an item become orphaned (disconnected) from the rest of the data, it will no longer be accessible. This tool detects any orphaned items in the database. - -This tool may take an extended period of time to execute. - - When Word attachments are modified and saved, PROMS will create a PDF of the attachment contents and save it in the database. When this is done, all the of the RO references are resolved as well as pagination of the attachment. This speeds up the overall printing of the procedure in that PROMS simply inserts the attachment contents. @@ -322,6 +132,7 @@ This function will remove all of the saved attachment PDFS stored in the databas This function will remove all of the saved attachment PDFS stored in the database (not the PDFs of the entire procedure that you had previous printed). This will force PROMS to regenerate (and save) the word attachment PDFs the next time the procedure is printed. + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAp5JREFUOE+F @@ -404,6 +215,130 @@ Should an item become orphaned (disconnected) from the rest of the data, it will Everything in PROMS is inter-related. A working draft knows what is its first procedure and a procedure knows what is its first step. Likewise, a procedure knows what procedure is before it and after it. Should an item become orphaned (disconnected) from the rest of the data, it will no longer be accessible. This tool removes any orphaned items from the database. + + + + This allows the user to remove folders and sub folders as well as their contents. + +Be sure a current backup of the database exists prior performing this function. + +It is recommended that this be done during off hours. + + + + + This allows the user to remove folders and sub folders as well as their contents. + +Be sure a current backup of the database exists prior performing this function. + +It is recommended that this be done during off hours. + + + + + This function will allow the user to remove annotations from the selected working drafts. + +Be sure a current backup of the database exists prior to running this function. + +If more than one working draft is selected, it is recommended that this be performed during off hours. + + + This function will allow the user to remove annotations from the selected working drafts. + +Be sure a current backup of the database exists prior to running this function. + +If more than one working draft is selected, it is recommended that this be performed during off hours. + + + This will allow for the deletion of groups of annotations and allow for deleting entire folders within PROMS. Use the tree nodes to select which items to delete. + +Click on the on/off switches to turn on/off each tool. + +Note that only one of these tools can be run at a time. + + + This allows the user to check referenced objects links in procedure step data for multiple working drafts in a batch mode. + +Bad referenced bject links will be identified with an Bad RO Link annotation. Use the PROMS Search tool to list all of the steps that have this annotation. + +Be sure a current backup of the database exists prior performing this function. + +It is recommended that this be done during off hours. + + + + + This allows the user to check referenced objects links in procedure step data for multiple working drafts in a batch mode. + +Bad referenced bject links will be identified with an Bad RO Link annotation. Use the PROMS Search tool to list all of the steps that have this annotation. + +Be sure a current backup of the database exists prior performing this function. + +It is recommended that this be done during off hours. + + + + + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAp5JREFUOE+F + k11Ik1Ecxv9zouJ2E4TWnR8V5tAppJmYsLnNlaLTxAoiKIQiibpYSmEEmSSa0IVGISMUw7rpE+yiQiuk + /IhROssPyjanpL4udeq29z3nCdcH+Wb1g+fq/zzP+R8Oh+gvPK4kNWujp1IrPek8S5Hy+X9hbXSN9aVC + eq1FwEYN8vk/mWqiDPZwI+NOHbhLj8CdDaK7npLlvnWpO0AKqZV62YgO/GMquDMN0rAevkbqlHvXZdlG + h6Rn8eATu4GJncB0Fvh8HnwPYuGpJ4vcvwZbGYWJrcpPzGXG8ngGtsZFQJOggrS0B9J0MbwNIR9uHqRQ + ee4XPhuVSy814IIB/lk9QkIIanUomFgIzkux0qHB/CUqk+eCtB2jCLEl1M1mLcBSLthKHlQqJaKjw8FZ + Mbi/ENKXEizUKD/f2k9h8jz5mumk2K0F9xUAUgE4K0JUVDji4yLBvflgMyYwlxFL9zSYq6ITa8I3DlNY + wKZ0soVSgFkAXgwuFSEmJhJJiWqwCR3YSCbY2x0QB4zwnFc6W4p+22KxiY4EXiQF74kf6/L5vdi+TYV0 + rRpsMB2sPxWsRwvpTTq87QmYOUNHg+HqQlL4ryscbK4UPGD5vu60CWw8G7evbkN7bSykXm0w/FMBew6E + CsXQFQMpaLKezP6OLeDL+8AFM5hLBzaciennKcFXUCgI7o7ENQWSfRcWmmPgPEW5tNJIj8QxM9hkDthY + FthAGlh/SvAPXC7fjOrjmyC+Sl5TsCpfdzYEK92llUbllDiaD3HEDPG9CaLDCGnI9IdEhwnioBHiOwMC + dj38fYbVglHy1FGJt57uL9ZS10IN9cxfJPvXCzTgqSKH5xwNzVXSkFBBDsFKA4KV7IKVegQrda2e7j5N + ud8AKwnMnBpmYFAAAAAASUVORK5CYII= + + + + This allows the user to update referenced objects values for multiple working drafts in a batch mode. + +Be sure a current backup of the database exists prior performing this function. + +It is recommended that this be done during off hours. + + + + This function will refresh transitions in all procedures selected below, whether they were selected individually or as a group via a procedure set. + +Be sure a current backup of the database exists prior to running this function. + +If more than one procedure is selected, it is recommended that this be performed during off hours. + + + This allows the user to update referenced objects values for multiple working drafts in a batch mode. + +Be sure a current backup of the database exists prior performing this function. + +It is recommended that this be done during off hours. + + + + This function will refresh transitions in all procedures selected below, whether they were selected individually or as a group via a procedure set. + +Be sure a current backup of the database exists prior to running this function. + +If more than one procedure is selected, it is recommended that this be performed during off hours. + + + + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAp5JREFUOE+F + k11Ik1Ecxv9zouJ2E4TWnR8V5tAppJmYsLnNlaLTxAoiKIQiibpYSmEEmSSa0IVGISMUw7rpE+yiQiuk + /IhROssPyjanpL4udeq29z3nCdcH+Wb1g+fq/zzP+R8Oh+gvPK4kNWujp1IrPek8S5Hy+X9hbXSN9aVC + eq1FwEYN8vk/mWqiDPZwI+NOHbhLj8CdDaK7npLlvnWpO0AKqZV62YgO/GMquDMN0rAevkbqlHvXZdlG + h6Rn8eATu4GJncB0Fvh8HnwPYuGpJ4vcvwZbGYWJrcpPzGXG8ngGtsZFQJOggrS0B9J0MbwNIR9uHqRQ + ee4XPhuVSy814IIB/lk9QkIIanUomFgIzkux0qHB/CUqk+eCtB2jCLEl1M1mLcBSLthKHlQqJaKjw8FZ + Mbi/ENKXEizUKD/f2k9h8jz5mumk2K0F9xUAUgE4K0JUVDji4yLBvflgMyYwlxFL9zSYq6ITa8I3DlNY + wKZ0soVSgFkAXgwuFSEmJhJJiWqwCR3YSCbY2x0QB4zwnFc6W4p+22KxiY4EXiQF74kf6/L5vdi+TYV0 + rRpsMB2sPxWsRwvpTTq87QmYOUNHg+HqQlL4ryscbK4UPGD5vu60CWw8G7evbkN7bSykXm0w/FMBew6E + CsXQFQMpaLKezP6OLeDL+8AFM5hLBzaciennKcFXUCgI7o7ENQWSfRcWmmPgPEW5tNJIj8QxM9hkDthY + FthAGlh/SvAPXC7fjOrjmyC+Sl5TsCpfdzYEK92llUbllDiaD3HEDPG9CaLDCGnI9IdEhwnioBHiOwMC + dj38fYbVglHy1FGJt57uL9ZS10IN9cxfJPvXCzTgqSKH5xwNzVXSkFBBDsFKA4KV7IKVegQrda2e7j5N + ud8AKwnMnBpmYFAAAAAASUVORK5CYII= diff --git a/PROMS/VEPROMS User Interface/frmGenTools.cs b/PROMS/VEPROMS User Interface/frmGenTools.cs new file mode 100644 index 00000000..238519b6 --- /dev/null +++ b/PROMS/VEPROMS User Interface/frmGenTools.cs @@ -0,0 +1,436 @@ +using System; +using System.Collections.Generic; +using System.Drawing; +using System.Text; +using System.Windows.Forms; +using VEPROMS.CSLA.Library; +using System.IO; +using Volian.Controls.Library; +using DevComponents.DotNetBar; +using JR.Utils.GUI.Forms; +using System.Linq; + +namespace VEPROMS +{ + public partial class frmGenTools : Form + { + private SessionInfo _MySessionInfo; + public SessionInfo MySessionInfo + { + get { return _MySessionInfo; } + set { _MySessionInfo = value; } + } + + public frmGenTools(SessionInfo sessionInfo, frmVEPROMS veProms) + { + InitializeComponent(); + _MySessionInfo = sessionInfo; + + // When opening General tools Check tab will be default. + this.sideNavItmCheck.Checked = true; + + setupProgessSteps1(); // C2017-030 - new Tools user interface + + } + + private void frmGenTools_Load(object sender, EventArgs e) + { + IsClosing = false;//B2017-221 Allow the batch dialog to close when waiting to process. + } + private bool IsClosing = false;//B2017-221 Allow the batch dialog to close when waiting to process. + private void frmGenTools_FormClosing(object sender, EventArgs e) + { + IsClosing = true;//B2017-221 Allow the batch dialog to close when waiting to process. + } + + // C2017-030 - new Tools user interface + // tool renamed to Identify Orphan Items + private void IdentifyDisconnectedItems() + { + this.Cursor = Cursors.WaitCursor; + DateTime pStart = DateTime.Now; + txtProcess.AppendText("Identifing Orphan Items"); + txtProcess.AppendText(Environment.NewLine); + txtProcess.AppendText(string.Format("Started: {0}", pStart.ToString("MM/dd/yyyy @ HH:mm"))); + txtProcess.AppendText(Environment.NewLine); + Application.DoEvents(); + int rowCount = ESP_IdentifyDisconnectedItems.Execute("vesp_GetDisconnectedItemsCount"); + txtProcess.AppendText(string.Format("Orphan Items Count: {0}", rowCount)); + txtProcess.AppendText(Environment.NewLine); + if (rowCount > 0) + { + txtResults.AppendText(string.Format("The database contains {0} Orphan items.", rowCount)); + txtResults.AppendText(Environment.NewLine); + txtResults.AppendText("These can be removed via the Remove Orphan Data Records in the Repair tools"); + txtResults.AppendText(Environment.NewLine); + txtResults.AppendText(Environment.NewLine); + } + else + { + txtResults.AppendText("No Orphan Records Found");// B2017-108 Always output results even if there isn't any + txtResults.AppendText(Environment.NewLine); + txtResults.AppendText(Environment.NewLine); + } + DateTime pEnd = DateTime.Now; + txtProcess.AppendText(string.Format("Completed: {0}", pEnd.ToString("MM/dd/yyyy @ HH:mm"))); + txtProcess.AppendText(Environment.NewLine); + txtProcess.AppendText(Environment.NewLine); + Application.DoEvents(); + this.Cursor = Cursors.Default; + } + + // C2017-030 - new Tools user interface + // is one of two tools run from Check Obsolete RO Data + private void IdentifyUnusedRoFstsAndFigures() + { + this.Cursor = Cursors.WaitCursor; + DateTime pStart = DateTime.Now; + txtProcess.AppendText("Identifing Unused RoFsts and Figures"); + txtProcess.AppendText(Environment.NewLine); + txtProcess.AppendText(string.Format("Started: {0}", pStart.ToString("MM/dd/yyyy @ HH:mm"))); + txtProcess.AppendText(Environment.NewLine); + Application.DoEvents(); + int rowCountRoFst = ESP_GetUnusedRoFsts.Execute("vesp_GetUnusedRoFstsCount"); + int rowCountFigures = ESP_GetUnusedFigures.Execute("vesp_GetUnusedFiguresCount"); + txtProcess.AppendText(string.Format("Unused RoFsts Count: {0}, Unused Figures Count: {1}", rowCountRoFst, rowCountFigures)); + txtProcess.AppendText(Environment.NewLine); + if (rowCountRoFst > 0 || rowCountFigures > 0) + { + txtResults.AppendText(string.Format("The database contains {0} unused RoFsts.", rowCountRoFst)); + txtResults.AppendText(Environment.NewLine); + txtResults.AppendText(string.Format("The database contains {0} unused Figures items.", rowCountFigures)); + txtResults.AppendText(Environment.NewLine); + txtResults.AppendText(Environment.NewLine); + } + else + { + txtResults.AppendText("No Unused RoFsts or Figures Found"); // B2017-108 Always output results even if there isn't any + txtResults.AppendText(Environment.NewLine); + txtResults.AppendText(Environment.NewLine); + } + + DateTime pEnd = DateTime.Now; + txtProcess.AppendText(string.Format("Completed: {0}", pEnd.ToString("MM/dd/yyyy @ HH:mm"))); + txtProcess.AppendText(Environment.NewLine); + txtProcess.AppendText(string.Format("Started: {0}", pStart.ToString("MM/dd/yyyy @ HH:mm"))); + txtProcess.AppendText(Environment.NewLine); + Application.DoEvents(); + this.Cursor = Cursors.Default; + } + + // C2017-030 - new Tools user interface + // is one of two tools run from Check Obsolete RO Data + private void IdentifyROAssociations() + { + this.Cursor = Cursors.WaitCursor; + DateTime pStart = DateTime.Now; + txtProcess.AppendText("Identifing Unused RO Associations"); + txtProcess.AppendText(Environment.NewLine); + txtProcess.AppendText(string.Format("Started: {0}", pStart.ToString("MM/dd/yyyy @ HH:mm"))); + txtProcess.AppendText(Environment.NewLine); + Application.DoEvents(); + int rowCount = ESP_GetROAssoc.Execute("vesp_GetUnusedROAssociationsCount"); + txtProcess.AppendText(string.Format("Unused RO Associations Count: {0}", rowCount)); + txtProcess.AppendText(Environment.NewLine); + if (rowCount > 0) + { + txtResults.AppendText(string.Format("The database contains {0} unused RO Associations.", rowCount)); + txtResults.AppendText(Environment.NewLine); + txtResults.AppendText(Environment.NewLine); + } + else + { + txtResults.AppendText("No unused RO Associations Found");// B2017-108 Always output results even if there isn't any + txtResults.AppendText(Environment.NewLine); + txtResults.AppendText(Environment.NewLine); + } + DateTime pEnd = DateTime.Now; + txtProcess.AppendText(string.Format("Completed: {0}", pEnd.ToString("MM/dd/yyyy @ HH:mm"))); + txtProcess.AppendText(Environment.NewLine); + txtProcess.AppendText(Environment.NewLine); + Application.DoEvents(); + this.Cursor = Cursors.Default; + } + + // C2017-030 - new Tools user interface + // tool was renamed to Hidden Data Locations (on Check list) + private void IdentifyNonEditableItems() + { + this.Cursor = Cursors.WaitCursor; + DateTime pStart = DateTime.Now; + txtProcess.AppendText("Identifing Hidden Item Locations"); + txtProcess.AppendText(Environment.NewLine); + txtProcess.AppendText(string.Format("Started: {0}", pStart.ToString("MM/dd/yyyy @ HH:mm"))); + txtProcess.AppendText(Environment.NewLine); + Application.DoEvents(); + List myItems = ESP_IdentifyNonEditableItems.Execute("vesp_GetNonEditableItems"); + txtProcess.AppendText(string.Format("Hidden Items Count: {0}", myItems.Count)); + txtProcess.AppendText(Environment.NewLine); + if (myItems.Count > 0) + { + txtResults.AppendText("The following items are hidden (non-editable)..."); + txtResults.AppendText(Environment.NewLine); + txtResults.AppendText(Environment.NewLine); + foreach (ItemInfo ii in myItems) + { + txtResults.AppendText(ii.Path); + txtResults.AppendText(Environment.NewLine); + } + txtResults.AppendText(Environment.NewLine); + } + else + { + txtResults.AppendText("No Hidden Data Found");// B2017-108 Always output results even if there isn't any + txtResults.AppendText(Environment.NewLine); + txtResults.AppendText(Environment.NewLine); + } + //C2025-011 RO Update Tool Memory Enhancements + //clear the list since no longer using it + myItems.Clear(); + DateTime pEnd = DateTime.Now; + txtProcess.AppendText(string.Format("Completed: {0}", pEnd.ToString("MM/dd/yyyy @ HH:mm"))); + txtProcess.AppendText(Environment.NewLine); + txtProcess.AppendText(Environment.NewLine); + Application.DoEvents(); + this.Cursor = Cursors.Default; + } + + // C2017-030 - new Tools user interface + // tool was renamed to Show Users + private void GetDatabaseSessions() + { + this.Cursor = Cursors.WaitCursor; + DateTime pStart = DateTime.Now; + txtProcess.AppendText("Show Users in PROMS"); + txtProcess.AppendText(Environment.NewLine); + txtProcess.AppendText(string.Format("Started: {0}", pStart.ToString("MM/dd/yyyy @ HH:mm"))); + txtProcess.AppendText(Environment.NewLine); + Application.DoEvents(); + txtResults.Clear(); + txtResults.AppendText(ESP_GetDatabaseSessions.Execute("vesp_GetDatabaseSessions")); + DateTime pEnd = DateTime.Now; + txtProcess.AppendText(string.Format("Completed: {0}", pEnd.ToString("MM/dd/yyyy @ HH:mm"))); + Application.DoEvents(); + this.Cursor = Cursors.Default; + MessageBox.Show("Show Users Completed", "Show Users"); + } + + public List roFstInfo_ROTableUpdate(object sender, ROFstInfoROTableUpdateEventArgs args) + { + return VlnFlexGrid.ROTableUpdate(sender, args); + } + + private void btnClear_Click(object sender, EventArgs e) + { + txtResults.Clear(); + } + + private void btnSave_Click(object sender, EventArgs e) + { + SaveFileDialog sfd = new SaveFileDialog(); + sfd.DefaultExt = "txt"; + sfd.AddExtension = true; + sfd.Filter = "Text Files (*.txt)|*.txt"; + sfd.FileName = string.Format("BatchRefreshResults_{0}", DateTime.Now.ToString("yyyyMMdd_HHmm")); + sfd.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) + @"\VEPROMS"; + DialogResult dr = sfd.ShowDialog(); + + if (dr == DialogResult.OK) + { + System.IO.StreamWriter sw = new System.IO.StreamWriter(sfd.FileName); + sw.Write(txtResults.Text); + sw.Close(); + } + } + + private ProgressBarItem _ProgressBar = null; + + public ProgressBarItem ProgressBar + { + get { return _ProgressBar; } + set + { + _ProgressBar = value; + _ProgressBar.TextVisible = true; + } + } + + private void chkLater_CheckedChanged(object sender, EventArgs e) + { + pnlLater.Enabled = chkLater.Checked; + } + + // C2017-030 new Tools user interface + private void sideNavItmCheck_Click(object sender, EventArgs e) + { + GenToolType = E_GenToolType.Check; + lblAdmToolProgressType.Text = "Checking:"; + setupProgessSteps1(); + } + + // C2017-030 new Tools user interface + private void sideNavItmUsers_Click(object sender, EventArgs e) + { + GenToolType = E_GenToolType.Users; + setupProgessSteps1(); + } + + // C2017-030 new Tools user interface + private void sideNavItmExit_Click(object sender, EventArgs e) + { + this.Close(); + } + + #region On/Off Swiches + + // C2017-030 new Tools user interface + private enum E_GenToolType : int + { + Check = 0, + Users = 3 + }; + private E_GenToolType GenToolType = 0; + + DevComponents.DotNetBar.StepItem siOrphDatRecs = new DevComponents.DotNetBar.StepItem("siOrphDatRecs", "Orphan Data Records"); + DevComponents.DotNetBar.StepItem siHiddenDataLocs = new DevComponents.DotNetBar.StepItem("siHiddenDataLocs", "Hidden Data"); + DevComponents.DotNetBar.StepItem siObsoleteROData = new DevComponents.DotNetBar.StepItem("siObsoleteROData", "Obsolete RO Data"); + + // this will update/rebuild the progress bar in the bottom panel of Tools + private void setupProgessSteps1() + { + progressSteps1.Visible = false; + progressSteps1.Items.Clear(); + + switch (GenToolType) + { + case E_GenToolType.Check: + if (swCkOrphanDataRecs.Value) + progressSteps1.Items.Add(siOrphDatRecs); + if (swHiddenDataLocs.Value) + progressSteps1.Items.Add(siHiddenDataLocs); + if (swCkObsoleteROData.Value) + progressSteps1.Items.Add(siObsoleteROData); + splitContainer3.Panel2Collapsed = false; + progressSteps1.Visible = true; + progressSteps1.Refresh(); + break; + + case E_GenToolType.Users: + splitContainer3.Panel2Collapsed = true; + progressSteps1.Visible = false; + break; + } + } + + // used for all of the Switch buttons (ON/OFF buttons) + private void swCk_ValueChanged(object sender, EventArgs e) + { + setupProgessSteps1(); + } + + #endregion + + // C2017-030 New Tools user interface + // functions to handle the progress bar in the bottom panel of Tools + private void StepProgress(int prgStpIdx, int val) + { + ((DevComponents.DotNetBar.StepItem)progressSteps1.Items[prgStpIdx]).Value = val; + } + + private void ClearStepProgress() + { + for (int i = 0; i < progressSteps1.Items.Count; i++) + { + ((DevComponents.DotNetBar.StepItem)progressSteps1.Items[i]).Value = 0; + } + } + + // C2017-030 New Tools user interface + // button clicks for processing selected tools + //B2017-221 Allow the batch dialog to close when waiting to process. + private bool CheckProcessLater() // see if we should delay processing until later + { + if (chkLater.Checked) + { + long later = long.Parse(dtpDate.Value.ToString("yyyyMMdd") + dtpTime.Value.ToString("HHmm")); + long now = long.Parse(DateTime.Now.ToString("yyyyMMddHHmm")); + + while (now < later) + { + txtProcess.Clear(); + txtProcess.AppendText("Waiting..."); + System.Threading.Thread.Sleep(1000);//Check each second + if (IsClosing) return false;//B2017-221 Allow the batch dialog to close when waiting to process. + Application.DoEvents();// Allow user interface to react + now = long.Parse(DateTime.Now.ToString("yyyyMMddHHmm")); + } + } + + return true;// Close after complete + } + + // C2017-030 new Tools user interface + private void btn_ShowUsers_Click(object sender, EventArgs e) + { + if (!CheckProcessLater()) return; // delay processing if set//B2017-221 Allow the batch dialog to close when waiting to process. + + txtProcess.Clear(); + txtResults.Clear(); + + GetDatabaseSessions(); + } + + private void btnRunCheck_Click(object sender, EventArgs e) + { + if (!CheckProcessLater()) return; // delay processing if set//B2017-221 Allow the batch dialog to close when waiting to process. + + int prgStpIdx = -1; + txtResults.Clear(); + txtProcess.Clear(); + + if (swCkOrphanDataRecs.Value) + { + StepProgress(++prgStpIdx, 50); + IdentifyDisconnectedItems(); // orphan items + StepProgress(prgStpIdx, 100); + } + + if (swHiddenDataLocs.Value) + { + StepProgress(++prgStpIdx, 50); + IdentifyNonEditableItems(); // hidden items + StepProgress(prgStpIdx, 100); + } + + if (swCkObsoleteROData.Value) + { + StepProgress(++prgStpIdx, 25); + IdentifyROAssociations(); + StepProgress(prgStpIdx, 50); + IdentifyUnusedRoFstsAndFigures(); + StepProgress(prgStpIdx, 100); + } + + MessageBox.Show("Check Functions Completed", "Check"); + + ClearStepProgress(); + } + + //C2025-011 RO Update Tool Memory Enhancements + private void txtProcess_TextChanged(object sender, EventArgs e) + { + //clears the stack to help with memory - should never need to undo text changes to this. + txtProcess.ClearUndo(); + } + + private void txtResults_TextChanged(object sender, EventArgs e) + { + //clears the stack to help with memory - should never need to undo text changes to this. + txtResults.ClearUndo(); + } + } +} + + + + diff --git a/PROMS/VEPROMS User Interface/frmGenTools.designer.cs b/PROMS/VEPROMS User Interface/frmGenTools.designer.cs new file mode 100644 index 00000000..482713c9 --- /dev/null +++ b/PROMS/VEPROMS User Interface/frmGenTools.designer.cs @@ -0,0 +1,853 @@ +namespace VEPROMS +{ + partial class frmGenTools + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (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() + { + System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(frmGenTools)); + this.splitContainer3 = new System.Windows.Forms.SplitContainer(); + this.panelEx3 = new DevComponents.DotNetBar.PanelEx(); + this.txtResults = new System.Windows.Forms.TextBox(); + this.panel1 = new System.Windows.Forms.Panel(); + this.btnSave = new System.Windows.Forms.Button(); + this.btnClear = new System.Windows.Forms.Button(); + this.label3 = new System.Windows.Forms.Label(); + this.expandableSplitter2 = new DevComponents.DotNetBar.ExpandableSplitter(); + this.panelEx2 = new DevComponents.DotNetBar.PanelEx(); + this.txtProcess = new System.Windows.Forms.TextBox(); + this.pbProcess = new System.Windows.Forms.ProgressBar(); + this.label6 = new System.Windows.Forms.Label(); + this.panel3 = new System.Windows.Forms.Panel(); + this.pnlLater = new System.Windows.Forms.Panel(); + this.label5 = new System.Windows.Forms.Label(); + this.dtpTime = new System.Windows.Forms.DateTimePicker(); + this.dtpDate = new System.Windows.Forms.DateTimePicker(); + this.chkLater = new System.Windows.Forms.CheckBox(); + this.label4 = new System.Windows.Forms.Label(); + this.expandableSplitter1 = new DevComponents.DotNetBar.ExpandableSplitter(); + this.panelEx1 = new DevComponents.DotNetBar.PanelEx(); + this.sideNav1 = new DevComponents.DotNetBar.Controls.SideNav(); + this.sideNavPanel1 = new DevComponents.DotNetBar.Controls.SideNavPanel(); + this.warningBox3 = new DevComponents.DotNetBar.Controls.WarningBox(); + this.labelX7 = new DevComponents.DotNetBar.LabelX(); + this.line1 = new DevComponents.DotNetBar.Controls.Line(); + this.swCkObsoleteROData = new DevComponents.DotNetBar.Controls.SwitchButton(); + this.swHiddenDataLocs = new DevComponents.DotNetBar.Controls.SwitchButton(); + this.labelX3 = new DevComponents.DotNetBar.LabelX(); + this.labelX2 = new DevComponents.DotNetBar.LabelX(); + this.swCkOrphanDataRecs = new DevComponents.DotNetBar.Controls.SwitchButton(); + this.labelX1 = new DevComponents.DotNetBar.LabelX(); + this.btnRunCheck = new DevComponents.DotNetBar.ButtonX(); + this.sideNavPanel5 = new DevComponents.DotNetBar.Controls.SideNavPanel(); + this.btn_ShowUsers = new DevComponents.DotNetBar.ButtonX(); + this.sideNavItem1 = new DevComponents.DotNetBar.Controls.SideNavItem(); + this.separator1 = new DevComponents.DotNetBar.Separator(); + this.sideNavItmCheck = new DevComponents.DotNetBar.Controls.SideNavItem(); + this.sideNavItmUsers = new DevComponents.DotNetBar.Controls.SideNavItem(); + this.sideNavItmExit = new DevComponents.DotNetBar.Controls.SideNavItem(); + this.panelEx4 = new DevComponents.DotNetBar.PanelEx(); + this.progressSteps1 = new DevComponents.DotNetBar.ProgressSteps(); + this.stepItem1 = new DevComponents.DotNetBar.StepItem(); + this.stepItem2 = new DevComponents.DotNetBar.StepItem(); + this.stepItem3 = new DevComponents.DotNetBar.StepItem(); + this.stepItem4 = new DevComponents.DotNetBar.StepItem(); + this.lblAdmToolProgressType = new DevComponents.DotNetBar.LabelX(); + this.buttonItem1 = new DevComponents.DotNetBar.ButtonItem(); + this.superTooltip1 = new DevComponents.DotNetBar.SuperTooltip(); + ((System.ComponentModel.ISupportInitialize)(this.splitContainer3)).BeginInit(); + this.splitContainer3.Panel1.SuspendLayout(); + this.splitContainer3.Panel2.SuspendLayout(); + this.splitContainer3.SuspendLayout(); + this.panelEx3.SuspendLayout(); + this.panel1.SuspendLayout(); + this.panelEx2.SuspendLayout(); + this.panel3.SuspendLayout(); + this.pnlLater.SuspendLayout(); + this.panelEx1.SuspendLayout(); + this.sideNav1.SuspendLayout(); + this.sideNavPanel1.SuspendLayout(); + this.sideNavPanel5.SuspendLayout(); + this.panelEx4.SuspendLayout(); + this.SuspendLayout(); + // + // splitContainer3 + // + this.splitContainer3.Dock = System.Windows.Forms.DockStyle.Fill; + this.splitContainer3.Location = new System.Drawing.Point(0, 0); + this.splitContainer3.Name = "splitContainer3"; + this.splitContainer3.Orientation = System.Windows.Forms.Orientation.Horizontal; + // + // splitContainer3.Panel1 + // + this.splitContainer3.Panel1.Controls.Add(this.panelEx3); + this.splitContainer3.Panel1.Controls.Add(this.expandableSplitter2); + this.splitContainer3.Panel1.Controls.Add(this.panelEx2); + this.splitContainer3.Panel1.Controls.Add(this.expandableSplitter1); + this.splitContainer3.Panel1.Controls.Add(this.panelEx1); + // + // splitContainer3.Panel2 + // + this.splitContainer3.Panel2.BackColor = System.Drawing.SystemColors.Control; + this.splitContainer3.Panel2.Controls.Add(this.panelEx4); + this.splitContainer3.Size = new System.Drawing.Size(1177, 586); + this.splitContainer3.SplitterDistance = 525; + this.splitContainer3.TabIndex = 2; + // + // panelEx3 + // + this.panelEx3.CanvasColor = System.Drawing.SystemColors.Control; + this.panelEx3.ColorSchemeStyle = DevComponents.DotNetBar.eDotNetBarStyle.StyleManagerControlled; + this.panelEx3.Controls.Add(this.txtResults); + this.panelEx3.Controls.Add(this.panel1); + this.panelEx3.Controls.Add(this.label3); + this.panelEx3.DisabledBackColor = System.Drawing.Color.Empty; + this.panelEx3.Dock = System.Windows.Forms.DockStyle.Fill; + this.panelEx3.Location = new System.Drawing.Point(688, 0); + this.panelEx3.Name = "panelEx3"; + this.panelEx3.Size = new System.Drawing.Size(489, 525); + this.panelEx3.Style.Alignment = System.Drawing.StringAlignment.Center; + this.panelEx3.Style.BackColor1.ColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.PanelBackground; + this.panelEx3.Style.BackColor2.ColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.PanelBackground2; + this.panelEx3.Style.Border = DevComponents.DotNetBar.eBorderType.SingleLine; + this.panelEx3.Style.BorderColor.ColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.PanelBorder; + this.panelEx3.Style.ForeColor.ColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.PanelText; + this.panelEx3.Style.GradientAngle = 90; + this.panelEx3.TabIndex = 31; + this.panelEx3.Text = "panelEx3"; + // + // txtResults + // + this.txtResults.Dock = System.Windows.Forms.DockStyle.Fill; + this.txtResults.Font = new System.Drawing.Font("Consolas", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.txtResults.Location = new System.Drawing.Point(0, 52); + this.txtResults.Multiline = true; + this.txtResults.Name = "txtResults"; + this.txtResults.ScrollBars = System.Windows.Forms.ScrollBars.Both; + this.txtResults.Size = new System.Drawing.Size(489, 473); + this.txtResults.TabIndex = 4; + this.txtResults.TextChanged += new System.EventHandler(this.txtResults_TextChanged); + // + // panel1 + // + this.panel1.Controls.Add(this.btnSave); + this.panel1.Controls.Add(this.btnClear); + this.panel1.Dock = System.Windows.Forms.DockStyle.Top; + this.panel1.Location = new System.Drawing.Point(0, 23); + this.panel1.Name = "panel1"; + this.panel1.Size = new System.Drawing.Size(489, 29); + this.panel1.TabIndex = 3; + // + // btnSave + // + this.btnSave.Dock = System.Windows.Forms.DockStyle.Left; + this.btnSave.Location = new System.Drawing.Point(95, 0); + this.btnSave.Name = "btnSave"; + this.btnSave.Size = new System.Drawing.Size(95, 29); + this.btnSave.TabIndex = 3; + this.btnSave.Text = "Save Results"; + this.btnSave.UseVisualStyleBackColor = true; + this.btnSave.Click += new System.EventHandler(this.btnSave_Click); + // + // btnClear + // + this.btnClear.Dock = System.Windows.Forms.DockStyle.Left; + this.btnClear.Location = new System.Drawing.Point(0, 0); + this.btnClear.Name = "btnClear"; + this.btnClear.Size = new System.Drawing.Size(95, 29); + this.btnClear.TabIndex = 2; + this.btnClear.Text = "Clear Results"; + this.btnClear.UseVisualStyleBackColor = true; + this.btnClear.Click += new System.EventHandler(this.btnClear_Click); + // + // label3 + // + this.label3.BackColor = System.Drawing.SystemColors.ActiveCaption; + this.label3.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.label3.Dock = System.Windows.Forms.DockStyle.Top; + this.label3.Location = new System.Drawing.Point(0, 0); + this.label3.Name = "label3"; + this.label3.Size = new System.Drawing.Size(489, 23); + this.label3.TabIndex = 2; + this.label3.Text = "Results"; + this.label3.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // expandableSplitter2 + // + this.expandableSplitter2.BackColor2 = System.Drawing.Color.FromArgb(((int)(((byte)(101)))), ((int)(((byte)(147)))), ((int)(((byte)(207))))); + this.expandableSplitter2.BackColor2SchemePart = DevComponents.DotNetBar.eColorSchemePart.PanelBorder; + this.expandableSplitter2.BackColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.PanelBackground; + this.expandableSplitter2.ExpandFillColor = System.Drawing.Color.FromArgb(((int)(((byte)(101)))), ((int)(((byte)(147)))), ((int)(((byte)(207))))); + this.expandableSplitter2.ExpandFillColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.PanelBorder; + this.expandableSplitter2.ExpandLineColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(0)))), ((int)(((byte)(0))))); + this.expandableSplitter2.ExpandLineColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.ItemText; + this.expandableSplitter2.GripDarkColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(0)))), ((int)(((byte)(0))))); + this.expandableSplitter2.GripDarkColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.ItemText; + this.expandableSplitter2.GripLightColor = System.Drawing.Color.FromArgb(((int)(((byte)(227)))), ((int)(((byte)(239)))), ((int)(((byte)(255))))); + this.expandableSplitter2.GripLightColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.BarBackground; + this.expandableSplitter2.HotBackColor = System.Drawing.Color.FromArgb(((int)(((byte)(252)))), ((int)(((byte)(151)))), ((int)(((byte)(61))))); + this.expandableSplitter2.HotBackColor2 = System.Drawing.Color.FromArgb(((int)(((byte)(255)))), ((int)(((byte)(184)))), ((int)(((byte)(94))))); + this.expandableSplitter2.HotBackColor2SchemePart = DevComponents.DotNetBar.eColorSchemePart.ItemPressedBackground2; + this.expandableSplitter2.HotBackColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.ItemPressedBackground; + this.expandableSplitter2.HotExpandFillColor = System.Drawing.Color.FromArgb(((int)(((byte)(101)))), ((int)(((byte)(147)))), ((int)(((byte)(207))))); + this.expandableSplitter2.HotExpandFillColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.PanelBorder; + this.expandableSplitter2.HotExpandLineColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(0)))), ((int)(((byte)(0))))); + this.expandableSplitter2.HotExpandLineColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.ItemText; + this.expandableSplitter2.HotGripDarkColor = System.Drawing.Color.FromArgb(((int)(((byte)(101)))), ((int)(((byte)(147)))), ((int)(((byte)(207))))); + this.expandableSplitter2.HotGripDarkColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.PanelBorder; + this.expandableSplitter2.HotGripLightColor = System.Drawing.Color.FromArgb(((int)(((byte)(227)))), ((int)(((byte)(239)))), ((int)(((byte)(255))))); + this.expandableSplitter2.HotGripLightColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.BarBackground; + this.expandableSplitter2.Location = new System.Drawing.Point(682, 0); + this.expandableSplitter2.Name = "expandableSplitter2"; + this.expandableSplitter2.Size = new System.Drawing.Size(6, 525); + this.expandableSplitter2.Style = DevComponents.DotNetBar.eSplitterStyle.Office2007; + this.expandableSplitter2.TabIndex = 38; + this.expandableSplitter2.TabStop = false; + // + // panelEx2 + // + this.panelEx2.CanvasColor = System.Drawing.SystemColors.Control; + this.panelEx2.ColorSchemeStyle = DevComponents.DotNetBar.eDotNetBarStyle.StyleManagerControlled; + this.panelEx2.Controls.Add(this.txtProcess); + this.panelEx2.Controls.Add(this.pbProcess); + this.panelEx2.Controls.Add(this.label6); + this.panelEx2.Controls.Add(this.panel3); + this.panelEx2.Controls.Add(this.label4); + this.panelEx2.DisabledBackColor = System.Drawing.Color.Empty; + this.panelEx2.Dock = System.Windows.Forms.DockStyle.Left; + this.panelEx2.Location = new System.Drawing.Point(391, 0); + this.panelEx2.Name = "panelEx2"; + this.panelEx2.Size = new System.Drawing.Size(291, 525); + this.panelEx2.Style.Alignment = System.Drawing.StringAlignment.Center; + this.panelEx2.Style.BackColor1.ColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.PanelBackground; + this.panelEx2.Style.BackColor2.ColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.PanelBackground2; + this.panelEx2.Style.Border = DevComponents.DotNetBar.eBorderType.SingleLine; + this.panelEx2.Style.BorderColor.ColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.PanelBorder; + this.panelEx2.Style.ForeColor.ColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.PanelText; + this.panelEx2.Style.GradientAngle = 90; + this.panelEx2.TabIndex = 22; + this.panelEx2.Text = "panelEx2"; + // + // txtProcess + // + this.txtProcess.AcceptsReturn = true; + this.txtProcess.Dock = System.Windows.Forms.DockStyle.Fill; + this.txtProcess.Font = new System.Drawing.Font("Consolas", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.txtProcess.Location = new System.Drawing.Point(0, 150); + this.txtProcess.Multiline = true; + this.txtProcess.Name = "txtProcess"; + this.txtProcess.ScrollBars = System.Windows.Forms.ScrollBars.Both; + this.txtProcess.Size = new System.Drawing.Size(291, 375); + this.txtProcess.TabIndex = 5; + this.txtProcess.TextChanged += new System.EventHandler(this.txtProcess_TextChanged); + // + // pbProcess + // + this.pbProcess.Dock = System.Windows.Forms.DockStyle.Top; + this.pbProcess.Location = new System.Drawing.Point(0, 125); + this.pbProcess.Name = "pbProcess"; + this.pbProcess.Size = new System.Drawing.Size(291, 25); + this.pbProcess.TabIndex = 6; + // + // label6 + // + this.label6.BackColor = System.Drawing.SystemColors.ActiveCaption; + this.label6.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.label6.Dock = System.Windows.Forms.DockStyle.Top; + this.label6.Location = new System.Drawing.Point(0, 102); + this.label6.Name = "label6"; + this.label6.Size = new System.Drawing.Size(291, 23); + this.label6.TabIndex = 3; + this.label6.Text = "Process Status"; + this.label6.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // panel3 + // + this.panel3.Controls.Add(this.pnlLater); + this.panel3.Controls.Add(this.chkLater); + this.panel3.Dock = System.Windows.Forms.DockStyle.Top; + this.panel3.Location = new System.Drawing.Point(0, 23); + this.panel3.Name = "panel3"; + this.panel3.Padding = new System.Windows.Forms.Padding(6); + this.panel3.Size = new System.Drawing.Size(291, 79); + this.panel3.TabIndex = 2; + // + // pnlLater + // + this.pnlLater.Controls.Add(this.label5); + this.pnlLater.Controls.Add(this.dtpTime); + this.pnlLater.Controls.Add(this.dtpDate); + this.pnlLater.Dock = System.Windows.Forms.DockStyle.Top; + this.pnlLater.Enabled = false; + this.pnlLater.Location = new System.Drawing.Point(6, 23); + this.pnlLater.Name = "pnlLater"; + this.pnlLater.Padding = new System.Windows.Forms.Padding(6); + this.pnlLater.Size = new System.Drawing.Size(279, 37); + this.pnlLater.TabIndex = 3; + // + // label5 + // + this.label5.AutoSize = true; + this.label5.Location = new System.Drawing.Point(105, 15); + this.label5.Name = "label5"; + this.label5.Size = new System.Drawing.Size(18, 13); + this.label5.TabIndex = 5; + this.label5.Text = "@"; + // + // dtpTime + // + this.dtpTime.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.dtpTime.CustomFormat = "HH:mm"; + this.dtpTime.Format = System.Windows.Forms.DateTimePickerFormat.Custom; + this.dtpTime.Location = new System.Drawing.Point(129, 9); + this.dtpTime.Name = "dtpTime"; + this.dtpTime.ShowUpDown = true; + this.dtpTime.Size = new System.Drawing.Size(133, 20); + this.dtpTime.TabIndex = 4; + // + // dtpDate + // + this.dtpDate.Format = System.Windows.Forms.DateTimePickerFormat.Short; + this.dtpDate.Location = new System.Drawing.Point(9, 9); + this.dtpDate.Name = "dtpDate"; + this.dtpDate.Size = new System.Drawing.Size(90, 20); + this.dtpDate.TabIndex = 3; + // + // chkLater + // + this.chkLater.AutoSize = true; + this.chkLater.Dock = System.Windows.Forms.DockStyle.Top; + this.chkLater.Location = new System.Drawing.Point(6, 6); + this.chkLater.Name = "chkLater"; + this.chkLater.Size = new System.Drawing.Size(279, 17); + this.chkLater.TabIndex = 4; + this.chkLater.Text = "Process Later"; + this.chkLater.UseVisualStyleBackColor = true; + this.chkLater.CheckedChanged += new System.EventHandler(this.chkLater_CheckedChanged); + // + // label4 + // + this.label4.BackColor = System.Drawing.SystemColors.ActiveCaption; + this.label4.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.label4.Dock = System.Windows.Forms.DockStyle.Top; + this.label4.Location = new System.Drawing.Point(0, 0); + this.label4.Name = "label4"; + this.label4.Size = new System.Drawing.Size(291, 23); + this.label4.TabIndex = 3; + this.label4.Text = "Process"; + this.label4.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // expandableSplitter1 + // + this.expandableSplitter1.BackColor2 = System.Drawing.Color.FromArgb(((int)(((byte)(101)))), ((int)(((byte)(147)))), ((int)(((byte)(207))))); + this.expandableSplitter1.BackColor2SchemePart = DevComponents.DotNetBar.eColorSchemePart.PanelBorder; + this.expandableSplitter1.BackColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.PanelBackground; + this.expandableSplitter1.ExpandFillColor = System.Drawing.Color.FromArgb(((int)(((byte)(101)))), ((int)(((byte)(147)))), ((int)(((byte)(207))))); + this.expandableSplitter1.ExpandFillColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.PanelBorder; + this.expandableSplitter1.ExpandLineColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(0)))), ((int)(((byte)(0))))); + this.expandableSplitter1.ExpandLineColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.ItemText; + this.expandableSplitter1.GripDarkColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(0)))), ((int)(((byte)(0))))); + this.expandableSplitter1.GripDarkColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.ItemText; + this.expandableSplitter1.GripLightColor = System.Drawing.Color.FromArgb(((int)(((byte)(227)))), ((int)(((byte)(239)))), ((int)(((byte)(255))))); + this.expandableSplitter1.GripLightColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.BarBackground; + this.expandableSplitter1.HotBackColor = System.Drawing.Color.FromArgb(((int)(((byte)(252)))), ((int)(((byte)(151)))), ((int)(((byte)(61))))); + this.expandableSplitter1.HotBackColor2 = System.Drawing.Color.FromArgb(((int)(((byte)(255)))), ((int)(((byte)(184)))), ((int)(((byte)(94))))); + this.expandableSplitter1.HotBackColor2SchemePart = DevComponents.DotNetBar.eColorSchemePart.ItemPressedBackground2; + this.expandableSplitter1.HotBackColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.ItemPressedBackground; + this.expandableSplitter1.HotExpandFillColor = System.Drawing.Color.FromArgb(((int)(((byte)(101)))), ((int)(((byte)(147)))), ((int)(((byte)(207))))); + this.expandableSplitter1.HotExpandFillColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.PanelBorder; + this.expandableSplitter1.HotExpandLineColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(0)))), ((int)(((byte)(0))))); + this.expandableSplitter1.HotExpandLineColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.ItemText; + this.expandableSplitter1.HotGripDarkColor = System.Drawing.Color.FromArgb(((int)(((byte)(101)))), ((int)(((byte)(147)))), ((int)(((byte)(207))))); + this.expandableSplitter1.HotGripDarkColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.PanelBorder; + this.expandableSplitter1.HotGripLightColor = System.Drawing.Color.FromArgb(((int)(((byte)(227)))), ((int)(((byte)(239)))), ((int)(((byte)(255))))); + this.expandableSplitter1.HotGripLightColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.BarBackground; + this.expandableSplitter1.Location = new System.Drawing.Point(385, 0); + this.expandableSplitter1.Name = "expandableSplitter1"; + this.expandableSplitter1.Size = new System.Drawing.Size(6, 525); + this.expandableSplitter1.Style = DevComponents.DotNetBar.eSplitterStyle.Office2007; + this.expandableSplitter1.TabIndex = 4; + this.expandableSplitter1.TabStop = false; + // + // panelEx1 + // + this.panelEx1.CanvasColor = System.Drawing.SystemColors.Control; + this.panelEx1.ColorSchemeStyle = DevComponents.DotNetBar.eDotNetBarStyle.StyleManagerControlled; + this.panelEx1.Controls.Add(this.sideNav1); + this.panelEx1.DisabledBackColor = System.Drawing.Color.Empty; + this.panelEx1.Dock = System.Windows.Forms.DockStyle.Left; + this.panelEx1.Location = new System.Drawing.Point(0, 0); + this.panelEx1.Name = "panelEx1"; + this.panelEx1.Size = new System.Drawing.Size(385, 525); + this.panelEx1.Style.Alignment = System.Drawing.StringAlignment.Center; + this.panelEx1.Style.BackColor1.ColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.PanelBackground; + this.panelEx1.Style.BackColor2.ColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.PanelBackground2; + this.panelEx1.Style.Border = DevComponents.DotNetBar.eBorderType.SingleLine; + this.panelEx1.Style.BorderColor.ColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.PanelBorder; + this.panelEx1.Style.ForeColor.ColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.PanelText; + this.panelEx1.Style.GradientAngle = 90; + this.panelEx1.TabIndex = 0; + this.panelEx1.Text = "panelEx1"; + // + // sideNav1 + // + this.sideNav1.BackColor = System.Drawing.SystemColors.Control; + this.sideNav1.Controls.Add(this.sideNavPanel1); + this.sideNav1.Controls.Add(this.sideNavPanel5); + this.sideNav1.Dock = System.Windows.Forms.DockStyle.Fill; + this.sideNav1.EnableClose = false; + this.sideNav1.EnableMaximize = false; + this.sideNav1.Items.AddRange(new DevComponents.DotNetBar.BaseItem[] { + this.sideNavItem1, + this.separator1, + this.sideNavItmCheck, + this.sideNavItmUsers, + this.sideNavItmExit}); + this.sideNav1.Location = new System.Drawing.Point(0, 0); + this.sideNav1.Name = "sideNav1"; + this.sideNav1.Padding = new System.Windows.Forms.Padding(1); + this.sideNav1.Size = new System.Drawing.Size(385, 525); + this.sideNav1.TabIndex = 3; + this.sideNav1.Text = "sideNav1"; + // + // sideNavPanel1 + // + this.sideNavPanel1.Controls.Add(this.warningBox3); + this.sideNavPanel1.Controls.Add(this.labelX7); + this.sideNavPanel1.Controls.Add(this.line1); + this.sideNavPanel1.Controls.Add(this.swCkObsoleteROData); + this.sideNavPanel1.Controls.Add(this.swHiddenDataLocs); + this.sideNavPanel1.Controls.Add(this.labelX3); + this.sideNavPanel1.Controls.Add(this.labelX2); + this.sideNavPanel1.Controls.Add(this.swCkOrphanDataRecs); + this.sideNavPanel1.Controls.Add(this.labelX1); + this.sideNavPanel1.Controls.Add(this.btnRunCheck); + this.sideNavPanel1.Dock = System.Windows.Forms.DockStyle.Fill; + this.sideNavPanel1.Location = new System.Drawing.Point(88, 31); + this.sideNavPanel1.Name = "sideNavPanel1"; + this.sideNavPanel1.Size = new System.Drawing.Size(292, 493); + this.sideNavPanel1.TabIndex = 2; + // + // warningBox3 + // + this.warningBox3.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(196)))), ((int)(((byte)(219)))), ((int)(((byte)(249))))); + this.warningBox3.CloseButtonVisible = false; + this.warningBox3.Image = ((System.Drawing.Image)(resources.GetObject("warningBox3.Image"))); + this.warningBox3.Location = new System.Drawing.Point(17, 207); + this.warningBox3.Margin = new System.Windows.Forms.Padding(4); + this.warningBox3.Name = "warningBox3"; + this.warningBox3.OptionsButtonVisible = false; + this.warningBox3.Size = new System.Drawing.Size(264, 32); + this.warningBox3.TabIndex = 29; + this.warningBox3.Text = "NOTE These tools can take a long time to run"; + // + // labelX7 + // + this.labelX7.BackColor = System.Drawing.Color.Transparent; + // + // + // + this.labelX7.BackgroundStyle.CornerType = DevComponents.DotNetBar.eCornerType.Square; + this.labelX7.Font = new System.Drawing.Font("Microsoft Sans Serif", 11.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.labelX7.Location = new System.Drawing.Point(5, 3); + this.labelX7.Name = "labelX7"; + this.labelX7.Size = new System.Drawing.Size(251, 22); + this.labelX7.TabIndex = 19; + this.labelX7.Text = "Check for these Data Issues:"; + // + // line1 + // + this.line1.BackColor = System.Drawing.Color.Transparent; + this.line1.Location = new System.Drawing.Point(8, 179); + this.line1.Name = "line1"; + this.line1.Size = new System.Drawing.Size(285, 12); + this.line1.TabIndex = 18; + this.line1.Text = "line1"; + // + // swCkObsoleteROData + // + // + // + // + this.swCkObsoleteROData.BackgroundStyle.CornerType = DevComponents.DotNetBar.eCornerType.Square; + this.swCkObsoleteROData.Location = new System.Drawing.Point(10, 99); + this.swCkObsoleteROData.Name = "swCkObsoleteROData"; + this.swCkObsoleteROData.Size = new System.Drawing.Size(91, 22); + this.swCkObsoleteROData.Style = DevComponents.DotNetBar.eDotNetBarStyle.StyleManagerControlled; + this.superTooltip1.SetSuperTooltip(this.swCkObsoleteROData, new DevComponents.DotNetBar.SuperTooltipInfo("Obsolete RO Data", "", resources.GetString("swCkObsoleteROData.SuperTooltip"), null, null, DevComponents.DotNetBar.eTooltipColor.Gray, true, true, new System.Drawing.Size(250, 135))); + this.swCkObsoleteROData.SwitchClickTogglesValue = true; + this.swCkObsoleteROData.TabIndex = 14; + this.swCkObsoleteROData.Value = true; + this.swCkObsoleteROData.ValueObject = "Y"; + this.swCkObsoleteROData.ValueChanged += new System.EventHandler(this.swCk_ValueChanged); + // + // swHiddenDataLocs + // + // + // + // + this.swHiddenDataLocs.BackgroundStyle.CornerType = DevComponents.DotNetBar.eCornerType.Square; + this.swHiddenDataLocs.Location = new System.Drawing.Point(10, 71); + this.swHiddenDataLocs.Name = "swHiddenDataLocs"; + this.swHiddenDataLocs.Size = new System.Drawing.Size(91, 22); + this.swHiddenDataLocs.Style = DevComponents.DotNetBar.eDotNetBarStyle.StyleManagerControlled; + this.superTooltip1.SetSuperTooltip(this.swHiddenDataLocs, new DevComponents.DotNetBar.SuperTooltipInfo("Hidden Data Locations", "", resources.GetString("swHiddenDataLocs.SuperTooltip"), null, null, DevComponents.DotNetBar.eTooltipColor.Gray)); + this.swHiddenDataLocs.SwitchClickTogglesValue = true; + this.swHiddenDataLocs.TabIndex = 15; + this.swHiddenDataLocs.Value = true; + this.swHiddenDataLocs.ValueObject = "Y"; + this.swHiddenDataLocs.ValueChanged += new System.EventHandler(this.swCk_ValueChanged); + // + // labelX3 + // + this.labelX3.BackColor = System.Drawing.Color.Transparent; + // + // + // + this.labelX3.BackgroundStyle.CornerType = DevComponents.DotNetBar.eCornerType.Square; + this.labelX3.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.labelX3.Location = new System.Drawing.Point(107, 99); + this.labelX3.Name = "labelX3"; + this.labelX3.Size = new System.Drawing.Size(154, 22); + this.superTooltip1.SetSuperTooltip(this.labelX3, new DevComponents.DotNetBar.SuperTooltipInfo("Obsolete RO Data", "", resources.GetString("labelX3.SuperTooltip"), null, null, DevComponents.DotNetBar.eTooltipColor.Gray, true, true, new System.Drawing.Size(250, 135))); + this.labelX3.TabIndex = 11; + this.labelX3.Text = "Obsolete RO Data"; + // + // labelX2 + // + this.labelX2.BackColor = System.Drawing.Color.Transparent; + // + // + // + this.labelX2.BackgroundStyle.CornerType = DevComponents.DotNetBar.eCornerType.Square; + this.labelX2.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.labelX2.Location = new System.Drawing.Point(107, 71); + this.labelX2.Name = "labelX2"; + this.labelX2.Size = new System.Drawing.Size(140, 22); + this.superTooltip1.SetSuperTooltip(this.labelX2, new DevComponents.DotNetBar.SuperTooltipInfo("Hidden Data Locations", "", resources.GetString("labelX2.SuperTooltip"), null, null, DevComponents.DotNetBar.eTooltipColor.Gray)); + this.labelX2.TabIndex = 12; + this.labelX2.Text = "Hidden Data Locations"; + // + // swCkOrphanDataRecs + // + // + // + // + this.swCkOrphanDataRecs.BackgroundStyle.CornerType = DevComponents.DotNetBar.eCornerType.Square; + this.swCkOrphanDataRecs.Location = new System.Drawing.Point(10, 43); + this.swCkOrphanDataRecs.Name = "swCkOrphanDataRecs"; + this.swCkOrphanDataRecs.Size = new System.Drawing.Size(91, 22); + this.swCkOrphanDataRecs.Style = DevComponents.DotNetBar.eDotNetBarStyle.StyleManagerControlled; + this.superTooltip1.SetSuperTooltip(this.swCkOrphanDataRecs, new DevComponents.DotNetBar.SuperTooltipInfo("Orphan Data Records", "", resources.GetString("swCkOrphanDataRecs.SuperTooltip"), null, null, DevComponents.DotNetBar.eTooltipColor.Gray, true, true, new System.Drawing.Size(275, 193))); + this.swCkOrphanDataRecs.SwitchClickTogglesValue = true; + this.swCkOrphanDataRecs.TabIndex = 9; + this.swCkOrphanDataRecs.Value = true; + this.swCkOrphanDataRecs.ValueObject = "Y"; + this.swCkOrphanDataRecs.ValueChanged += new System.EventHandler(this.swCk_ValueChanged); + // + // labelX1 + // + this.labelX1.BackColor = System.Drawing.Color.Transparent; + // + // + // + this.labelX1.BackgroundStyle.CornerType = DevComponents.DotNetBar.eCornerType.Square; + this.labelX1.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.labelX1.Location = new System.Drawing.Point(107, 43); + this.labelX1.Name = "labelX1"; + this.labelX1.Size = new System.Drawing.Size(172, 22); + this.superTooltip1.SetSuperTooltip(this.labelX1, new DevComponents.DotNetBar.SuperTooltipInfo("Orphan Data Records", "", resources.GetString("labelX1.SuperTooltip"), null, null, DevComponents.DotNetBar.eTooltipColor.Gray, true, true, new System.Drawing.Size(275, 190))); + this.labelX1.TabIndex = 8; + this.labelX1.Text = "Orphan Data Records"; + // + // btnRunCheck + // + this.btnRunCheck.AccessibleRole = System.Windows.Forms.AccessibleRole.PushButton; + this.btnRunCheck.Checked = true; + this.btnRunCheck.ColorTable = DevComponents.DotNetBar.eButtonColor.OrangeWithBackground; + this.btnRunCheck.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.btnRunCheck.Location = new System.Drawing.Point(5, 150); + this.btnRunCheck.Name = "btnRunCheck"; + this.btnRunCheck.Size = new System.Drawing.Size(286, 23); + this.btnRunCheck.Style = DevComponents.DotNetBar.eDotNetBarStyle.StyleManagerControlled; + this.superTooltip1.SetSuperTooltip(this.btnRunCheck, new DevComponents.DotNetBar.SuperTooltipInfo("Run Check", "", "This will run the database check tools selected.\r\n\r\nClick on the on/off switches " + + "to turn on/off each tool.", null, null, DevComponents.DotNetBar.eTooltipColor.Gray, true, true, new System.Drawing.Size(200, 100))); + this.btnRunCheck.TabIndex = 7; + this.btnRunCheck.Text = "Run Check"; + this.btnRunCheck.Click += new System.EventHandler(this.btnRunCheck_Click); + // + // sideNavPanel5 + // + this.sideNavPanel5.Controls.Add(this.btn_ShowUsers); + this.sideNavPanel5.Dock = System.Windows.Forms.DockStyle.Fill; + this.sideNavPanel5.Location = new System.Drawing.Point(88, 31); + this.sideNavPanel5.Name = "sideNavPanel5"; + this.sideNavPanel5.Size = new System.Drawing.Size(292, 493); + this.sideNavPanel5.TabIndex = 14; + this.sideNavPanel5.Visible = false; + // + // btn_ShowUsers + // + this.btn_ShowUsers.AccessibleRole = System.Windows.Forms.AccessibleRole.PushButton; + this.btn_ShowUsers.Checked = true; + this.btn_ShowUsers.ColorTable = DevComponents.DotNetBar.eButtonColor.OrangeWithBackground; + this.btn_ShowUsers.Location = new System.Drawing.Point(57, 37); + this.btn_ShowUsers.Name = "btn_ShowUsers"; + this.btn_ShowUsers.Size = new System.Drawing.Size(171, 23); + this.btn_ShowUsers.Style = DevComponents.DotNetBar.eDotNetBarStyle.StyleManagerControlled; + this.superTooltip1.SetSuperTooltip(this.btn_ShowUsers, new DevComponents.DotNetBar.SuperTooltipInfo("Show Users", "", "This will return all of the users currently with open sessions in the database an" + + "d the details of any items they have checked out.", null, null, DevComponents.DotNetBar.eTooltipColor.Gray, true, true, new System.Drawing.Size(200, 80))); + this.btn_ShowUsers.TabIndex = 0; + this.btn_ShowUsers.Text = "Show Users"; + this.btn_ShowUsers.Click += new System.EventHandler(this.btn_ShowUsers_Click); + // + // sideNavItem1 + // + this.sideNavItem1.IsSystemMenu = true; + this.sideNavItem1.Name = "sideNavItem1"; + this.sideNavItem1.Symbol = ""; + this.sideNavItem1.Text = "General\r\nTools"; + // + // separator1 + // + this.separator1.FixedSize = new System.Drawing.Size(3, 1); + this.separator1.Name = "separator1"; + this.separator1.Padding.Bottom = 2; + this.separator1.Padding.Left = 6; + this.separator1.Padding.Right = 6; + this.separator1.Padding.Top = 2; + this.separator1.SeparatorOrientation = DevComponents.DotNetBar.eDesignMarkerOrientation.Vertical; + // + // sideNavItmCheck + // + this.sideNavItmCheck.Checked = true; + this.sideNavItmCheck.Name = "sideNavItmCheck"; + this.sideNavItmCheck.Panel = this.sideNavPanel1; + this.sideNavItmCheck.Symbol = ""; + this.sideNavItmCheck.Text = "Check"; + this.sideNavItmCheck.Click += new System.EventHandler(this.sideNavItmCheck_Click); + // + // sideNavItmUsers + // + this.sideNavItmUsers.Name = "sideNavItmUsers"; + this.sideNavItmUsers.Panel = this.sideNavPanel5; + this.sideNavItmUsers.Symbol = ""; + this.sideNavItmUsers.Text = "Users"; + this.sideNavItmUsers.Click += new System.EventHandler(this.sideNavItmUsers_Click); + // + // sideNavItmExit + // + this.sideNavItmExit.Name = "sideNavItmExit"; + this.sideNavItmExit.Symbol = ""; + this.sideNavItmExit.Text = "Exit"; + this.sideNavItmExit.Click += new System.EventHandler(this.sideNavItmExit_Click); + // + // panelEx4 + // + this.panelEx4.CanvasColor = System.Drawing.SystemColors.Control; + this.panelEx4.ColorSchemeStyle = DevComponents.DotNetBar.eDotNetBarStyle.StyleManagerControlled; + this.panelEx4.Controls.Add(this.progressSteps1); + this.panelEx4.Controls.Add(this.lblAdmToolProgressType); + this.panelEx4.DialogResult = System.Windows.Forms.DialogResult.OK; + this.panelEx4.DisabledBackColor = System.Drawing.Color.Empty; + this.panelEx4.Dock = System.Windows.Forms.DockStyle.Fill; + this.panelEx4.Location = new System.Drawing.Point(0, 0); + this.panelEx4.Name = "panelEx4"; + this.panelEx4.Size = new System.Drawing.Size(1177, 57); + this.panelEx4.Style.Alignment = System.Drawing.StringAlignment.Center; + this.panelEx4.Style.BackColor1.ColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.PanelBackground; + this.panelEx4.Style.BackColor2.ColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.PanelBackground2; + this.panelEx4.Style.Border = DevComponents.DotNetBar.eBorderType.SingleLine; + this.panelEx4.Style.BorderColor.ColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.PanelBorder; + this.panelEx4.Style.ForeColor.ColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.PanelText; + this.panelEx4.Style.GradientAngle = 90; + this.panelEx4.TabIndex = 20; + // + // progressSteps1 + // + this.progressSteps1.BackColor = System.Drawing.Color.Transparent; + // + // + // + this.progressSteps1.BackgroundStyle.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(240)))), ((int)(((byte)(240)))), ((int)(((byte)(240))))); + this.progressSteps1.BackgroundStyle.Class = "ProgressSteps"; + this.progressSteps1.BackgroundStyle.CornerType = DevComponents.DotNetBar.eCornerType.Square; + this.progressSteps1.ContainerControlProcessDialogKey = true; + this.progressSteps1.Font = new System.Drawing.Font("Microsoft Sans Serif", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.progressSteps1.Items.AddRange(new DevComponents.DotNetBar.BaseItem[] { + this.stepItem1, + this.stepItem2, + this.stepItem3, + this.stepItem4}); + this.progressSteps1.LicenseKey = "F962CEC7-CD8F-4911-A9E9-CAB39962FC1F"; + this.progressSteps1.Location = new System.Drawing.Point(123, 18); + this.progressSteps1.Name = "progressSteps1"; + this.progressSteps1.Size = new System.Drawing.Size(1032, 26); + this.progressSteps1.TabIndex = 18; + // + // stepItem1 + // + this.stepItem1.Maximum = 10; + this.stepItem1.Name = "stepItem1"; + this.stepItem1.SymbolSize = 13F; + this.stepItem1.Text = "Discon"; + // + // stepItem2 + // + this.stepItem2.Maximum = 10; + this.stepItem2.Name = "stepItem2"; + this.stepItem2.SymbolSize = 13F; + this.stepItem2.Text = "Non-Edit"; + // + // stepItem3 + // + this.stepItem3.Maximum = 10; + this.stepItem3.Name = "stepItem3"; + this.stepItem3.SymbolSize = 13F; + this.stepItem3.Text = "RO Assoc"; + // + // stepItem4 + // + this.stepItem4.Maximum = 10; + this.stepItem4.Name = "stepItem4"; + this.stepItem4.SymbolSize = 13F; + this.stepItem4.Text = "FST+Figs"; + // + // lblAdmToolProgressType + // + this.lblAdmToolProgressType.BackColor = System.Drawing.Color.Transparent; + // + // + // + this.lblAdmToolProgressType.BackgroundStyle.CornerType = DevComponents.DotNetBar.eCornerType.Square; + this.lblAdmToolProgressType.Font = new System.Drawing.Font("Microsoft Sans Serif", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.lblAdmToolProgressType.Location = new System.Drawing.Point(19, 10); + this.lblAdmToolProgressType.Name = "lblAdmToolProgressType"; + this.lblAdmToolProgressType.Size = new System.Drawing.Size(98, 34); + this.lblAdmToolProgressType.TabIndex = 19; + this.lblAdmToolProgressType.Text = "Checking:"; + // + // buttonItem1 + // + this.buttonItem1.Name = "buttonItem1"; + this.buttonItem1.Text = "buttonItem1"; + // + // superTooltip1 + // + this.superTooltip1.DefaultTooltipSettings = new DevComponents.DotNetBar.SuperTooltipInfo("", "", "", null, null, DevComponents.DotNetBar.eTooltipColor.Gray); + this.superTooltip1.LicenseKey = "F962CEC7-CD8F-4911-A9E9-CAB39962FC1F"; + // + // frmGenTools + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(1177, 586); + this.Controls.Add(this.splitContainer3); + this.MaximizeBox = false; + this.MinimizeBox = false; + this.Name = "frmGenTools"; + this.ShowIcon = false; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent; + this.Text = "General Tools"; + this.Load += new System.EventHandler(this.frmGenTools_Load); + this.splitContainer3.Panel1.ResumeLayout(false); + this.splitContainer3.Panel2.ResumeLayout(false); + ((System.ComponentModel.ISupportInitialize)(this.splitContainer3)).EndInit(); + this.splitContainer3.ResumeLayout(false); + this.panelEx3.ResumeLayout(false); + this.panelEx3.PerformLayout(); + this.panel1.ResumeLayout(false); + this.panelEx2.ResumeLayout(false); + this.panelEx2.PerformLayout(); + this.panel3.ResumeLayout(false); + this.panel3.PerformLayout(); + this.pnlLater.ResumeLayout(false); + this.pnlLater.PerformLayout(); + this.panelEx1.ResumeLayout(false); + this.sideNav1.ResumeLayout(false); + this.sideNav1.PerformLayout(); + this.sideNavPanel1.ResumeLayout(false); + this.sideNavPanel5.ResumeLayout(false); + this.panelEx4.ResumeLayout(false); + this.ResumeLayout(false); + + } + + #endregion + private System.Windows.Forms.SplitContainer splitContainer3; + private DevComponents.DotNetBar.PanelEx panelEx3; + private System.Windows.Forms.TextBox txtResults; + private System.Windows.Forms.Panel panel1; + private System.Windows.Forms.Button btnSave; + private System.Windows.Forms.Button btnClear; + private System.Windows.Forms.Label label3; + private DevComponents.DotNetBar.PanelEx panelEx2; + private System.Windows.Forms.TextBox txtProcess; + private System.Windows.Forms.ProgressBar pbProcess; + private System.Windows.Forms.Label label6; + private System.Windows.Forms.Panel panel3; + private System.Windows.Forms.Panel pnlLater; + private System.Windows.Forms.Label label5; + private System.Windows.Forms.DateTimePicker dtpTime; + private System.Windows.Forms.DateTimePicker dtpDate; + private System.Windows.Forms.CheckBox chkLater; + private System.Windows.Forms.Label label4; + private DevComponents.DotNetBar.Controls.SideNav sideNav1; + private DevComponents.DotNetBar.Controls.SideNavPanel sideNavPanel1; + private DevComponents.DotNetBar.LabelX labelX7; + private DevComponents.DotNetBar.Controls.Line line1; + private DevComponents.DotNetBar.Controls.SwitchButton swCkObsoleteROData; + private DevComponents.DotNetBar.Controls.SwitchButton swHiddenDataLocs; + private DevComponents.DotNetBar.LabelX labelX3; + private DevComponents.DotNetBar.LabelX labelX2; + private DevComponents.DotNetBar.Controls.SwitchButton swCkOrphanDataRecs; + private DevComponents.DotNetBar.LabelX labelX1; + private DevComponents.DotNetBar.ButtonX btnRunCheck; + private DevComponents.DotNetBar.Controls.SideNavPanel sideNavPanel5; + private DevComponents.DotNetBar.ButtonX btn_ShowUsers; + private DevComponents.DotNetBar.Controls.SideNavItem sideNavItem1; + private DevComponents.DotNetBar.Separator separator1; + private DevComponents.DotNetBar.Controls.SideNavItem sideNavItmCheck; + private DevComponents.DotNetBar.Controls.SideNavItem sideNavItmUsers; + private DevComponents.DotNetBar.Controls.SideNavItem sideNavItmExit; + private DevComponents.DotNetBar.LabelX lblAdmToolProgressType; + private DevComponents.DotNetBar.ProgressSteps progressSteps1; + private DevComponents.DotNetBar.StepItem stepItem1; + private DevComponents.DotNetBar.StepItem stepItem2; + private DevComponents.DotNetBar.StepItem stepItem3; + private DevComponents.DotNetBar.StepItem stepItem4; + private DevComponents.DotNetBar.SuperTooltip superTooltip1; + private DevComponents.DotNetBar.ExpandableSplitter expandableSplitter2; + private DevComponents.DotNetBar.ExpandableSplitter expandableSplitter1; + private DevComponents.DotNetBar.PanelEx panelEx1; + private DevComponents.DotNetBar.PanelEx panelEx4; + private DevComponents.DotNetBar.Controls.WarningBox warningBox3; + private DevComponents.DotNetBar.ButtonItem buttonItem1; + } +} + + diff --git a/PROMS/VEPROMS User Interface/frmGenTools.resx b/PROMS/VEPROMS User Interface/frmGenTools.resx new file mode 100644 index 00000000..12f79aef --- /dev/null +++ b/PROMS/VEPROMS User Interface/frmGenTools.resx @@ -0,0 +1,192 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + + + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAp5JREFUOE+F + k11Ik1Ecxv9zouJ2E4TWnR8V5tAppJmYsLnNlaLTxAoiKIQiibpYSmEEmSSa0IVGISMUw7rpE+yiQiuk + /IhROssPyjanpL4udeq29z3nCdcH+Wb1g+fq/zzP+R8Oh+gvPK4kNWujp1IrPek8S5Hy+X9hbXSN9aVC + eq1FwEYN8vk/mWqiDPZwI+NOHbhLj8CdDaK7npLlvnWpO0AKqZV62YgO/GMquDMN0rAevkbqlHvXZdlG + h6Rn8eATu4GJncB0Fvh8HnwPYuGpJ4vcvwZbGYWJrcpPzGXG8ngGtsZFQJOggrS0B9J0MbwNIR9uHqRQ + ee4XPhuVSy814IIB/lk9QkIIanUomFgIzkux0qHB/CUqk+eCtB2jCLEl1M1mLcBSLthKHlQqJaKjw8FZ + Mbi/ENKXEizUKD/f2k9h8jz5mumk2K0F9xUAUgE4K0JUVDji4yLBvflgMyYwlxFL9zSYq6ITa8I3DlNY + wKZ0soVSgFkAXgwuFSEmJhJJiWqwCR3YSCbY2x0QB4zwnFc6W4p+22KxiY4EXiQF74kf6/L5vdi+TYV0 + rRpsMB2sPxWsRwvpTTq87QmYOUNHg+HqQlL4ryscbK4UPGD5vu60CWw8G7evbkN7bSykXm0w/FMBew6E + CsXQFQMpaLKezP6OLeDL+8AFM5hLBzaciennKcFXUCgI7o7ENQWSfRcWmmPgPEW5tNJIj8QxM9hkDthY + FthAGlh/SvAPXC7fjOrjmyC+Sl5TsCpfdzYEK92llUbllDiaD3HEDPG9CaLDCGnI9IdEhwnioBHiOwMC + dj38fYbVglHy1FGJt57uL9ZS10IN9cxfJPvXCzTgqSKH5xwNzVXSkFBBDsFKA4KV7IKVegQrda2e7j5N + ud8AKwnMnBpmYFAAAAAASUVORK5CYII= + + + + 17, 17 + + + Referenced Objects databases are associated with a procedure set (such as Working Draft). + +RO paths, ROFST versions, and the contents of RO figures are stored in the database when referenced. This tool will identify stored RO Paths, ROFST versions, and Figures that are no longer used. + + + + Typically, a section in PROMS only has sub-sections or steps. When and existing section is divided into sub-sections, the resulting main section might have both. + +When this occurs, the step data in the main section can be marked as non-editable. The user can no longer get to these steps and they can become forgotten as PROMS will ignore these non-editable steps when the procedure is printed. + +This tool will identify if the database has non-editable steps and provide a listing of these steps. The use can then go to these main sections, make them editable via the property page, and delete or move these steps. + +This tool may take an extended period of time to execute. + + + + Referenced Objects databases are associated with a procedure set (such as Working Draft). + +RO paths, ROFST versions, and the contents of RO figures are stored in the database when referenced. This tool will identify stored RO Paths, ROFST versions, and Figures that are no longer used. + + + + Typically, a section in PROMS only has sub-sections or steps. When and existing section is divided into sub-sections, the resulting main section might have both. + +When this occurs, the step data in the main section can be marked as non-editable. The user can no longer get to these steps and they can become forgotten as PROMS will ignore these non-editable steps when the procedure is printed. + +This tool will identify if the database has non-editable steps and provide a listing of these steps. The use can then go to these main sections, make them editable via the property page, and delete or move these steps. + +This tool may take an extended period of time to execute. + + + + Everything in PROMS is inter-related. A working draft knows what is its first procedure and a procedure knows what is its first step. Likewise, a procedure knows what procedure is before it and after it. + +Should an item become orphaned (disconnected) from the rest of the data, it will no longer be accessible. This tool detects any orphaned items in the database. + +This tool may take an extended period of time to execute. + + + + Everything in PROMS is inter-related. A working draft knows what is its first procedure and a procedure knows what is its first step. Likewise, a procedure knows what procedure is before it and after it. + +Should an item become orphaned (disconnected) from the rest of the data, it will no longer be accessible. This tool detects any orphaned items in the database. + +This tool may take an extended period of time to execute. + + + + 46 + + \ No newline at end of file diff --git a/PROMS/VEPROMS User Interface/frmVEPROMS.cs b/PROMS/VEPROMS User Interface/frmVEPROMS.cs index 74e4ae41..7f515749 100644 --- a/PROMS/VEPROMS User Interface/frmVEPROMS.cs +++ b/PROMS/VEPROMS User Interface/frmVEPROMS.cs @@ -2013,6 +2013,7 @@ namespace VEPROMS private DevComponents.DotNetBar.ButtonItem btnUserControlOfFormats; private DevComponents.DotNetBar.ButtonItem btnUserControlOfFormatsExport; private DevComponents.DotNetBar.ButtonItem btnUserControlOfFormatsImport; + private DevComponents.DotNetBar.ButtonItem btnGeneralTools; private TabItemsToClose _MyCloseTabList = new TabItemsToClose(); public TabItemsToClose MyCloseTabList @@ -2251,6 +2252,16 @@ namespace VEPROMS btnAdministrativeTools.Click += new EventHandler(btnAdministrativeTools_Click); btnAdmin.SubItems.Add(btnAdministrativeTools); + //general Tools + btnGeneralTools = new ButtonItem("btnGeneralTools", "General Tools"); + btnGeneralTools.Visible = btnGeneralTools.Enabled = true; + btnGeneralTools.ButtonStyle = DevComponents.DotNetBar.eButtonStyle.ImageAndText; + btnGeneralTools.CanCustomize = false; + btnGeneralTools.Image = global::VEPROMS.Properties.Resources.toolbox; + btnGeneralTools.Click += new EventHandler(btnGeneralTools_Click); + itemContainer3.SubItems.Add(btnGeneralTools); + + // C2025-031 added tool tip messages this.superTooltip1.SetSuperTooltip(btnManageSecurity, new SuperTooltipInfo("Manage Security", "", "Add, Modify, and Delete PROMS User Access", null, null, eTooltipColor.Gray)); // remove commented out line below when User Control of Formats code is deleted @@ -2258,6 +2269,7 @@ namespace VEPROMS this.superTooltip1.SetSuperTooltip(btnResetSecurity, new SuperTooltipInfo("Reset Security", "", "WARNING this will \nREMOVE ALL PROMS USERS and Reset to the\nOriginal Volian Defaults", null, null, eTooltipColor.Gray)); this.superTooltip1.SetSuperTooltip(btnAdministrativeTools, new SuperTooltipInfo("Administrative Tools", "", "Open the PROMS Adminstration Tools Window", null, null, eTooltipColor.Gray)); this.superTooltip1.SetSuperTooltip(btnUpdateFormats, new SuperTooltipInfo("Update Formats", "", "Install New Formats \n or Re-Install Formats", null, null, eTooltipColor.Gray)); + this.superTooltip1.SetSuperTooltip(btnGeneralTools, new SuperTooltipInfo("General Tools", "", "Open the PROMS General Tools Window", null, null, eTooltipColor.Gray)); try { @@ -2954,6 +2966,13 @@ namespace VEPROMS frm.ShowDialog(this); } + void btnGeneralTools_Click(object sender, EventArgs e) + { + frmGenTools frm = new frmGenTools(MySessionInfo, this); + frm.ProgressBar = bottomProgBar; + frm.ShowDialog(this); + } + private static VolianTimer _TimeActivity1 = new VolianTimer("frmVEPROMS.cs tmrCloseTabItems_Tick", 2108); void tmrCloseTabItems_Tick(object sender, EventArgs e) From 69cc71ab3bb113c0ad226c556de0abc24ce6915b Mon Sep 17 00:00:00 2001 From: mschill Date: Wed, 27 Aug 2025 07:01:39 -0400 Subject: [PATCH 4/5] C2025-051 Missed one default when removing Check and Users Tabs from Admin Tool --- PROMS/VEPROMS User Interface/frmBatchRefresh.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/PROMS/VEPROMS User Interface/frmBatchRefresh.cs b/PROMS/VEPROMS User Interface/frmBatchRefresh.cs index 2e616419..dc19aa61 100644 --- a/PROMS/VEPROMS User Interface/frmBatchRefresh.cs +++ b/PROMS/VEPROMS User Interface/frmBatchRefresh.cs @@ -969,7 +969,7 @@ namespace VEPROMS return VlnFlexGrid.ROTableUpdate(sender, args); } - StringBuilder myFixes; + StringBuilder myFixes; int myFixesCount = 0; int myConvertCount = 0; // show the changes made in the Results pannel, include the ItemId of the step element @@ -1195,7 +1195,7 @@ namespace VEPROMS Links = 2, Delete = 4 }; - private E_AdminToolType AdminToolType = 0; + private E_AdminToolType AdminToolType = E_AdminToolType.Repair; DevComponents.DotNetBar.StepItem siOrphDatRecs = new DevComponents.DotNetBar.StepItem("siOrphDatRecs", "Orphan Data Records"); DevComponents.DotNetBar.StepItem siObsoleteROData = new DevComponents.DotNetBar.StepItem("siObsoleteROData", "Obsolete RO Data"); From e37928bf89bf9a4bf1c701ef7d81410e10a01164 Mon Sep 17 00:00:00 2001 From: mschill Date: Thu, 28 Aug 2025 07:53:54 -0400 Subject: [PATCH 5/5] B2025-044 Intermittent caching refresh issue with importing procedure sets. --- PROMS/VEPROMS User Interface/dlgExportImport.cs | 1 + 1 file changed, 1 insertion(+) diff --git a/PROMS/VEPROMS User Interface/dlgExportImport.cs b/PROMS/VEPROMS User Interface/dlgExportImport.cs index da772d9d..2b089bb0 100644 --- a/PROMS/VEPROMS User Interface/dlgExportImport.cs +++ b/PROMS/VEPROMS User Interface/dlgExportImport.cs @@ -923,6 +923,7 @@ namespace VEPROMS { string number = ""; int max = -1; + MyFolder.RefreshChildFolders(); // get maximum number of existing copies. foreach (FolderInfo fi in MyFolder.ChildFolders) {