Compare commits
358
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
23a296df86 | ||
|
|
dbea4abafb | ||
|
|
57622931a5 | ||
|
|
75368c2fe0 | ||
|
|
5e071bd35a | ||
|
|
77639318c6 | ||
|
|
1a890b11cb | ||
|
|
f2e01803bc | ||
|
|
752d30ba8f | ||
|
|
795f21f04b | ||
|
|
b1427f4997 | ||
|
|
c95e86c2a6 | ||
|
|
18d2aa3b51 | ||
|
|
7ba3ea8b13 | ||
|
|
30b34c3a50 | ||
|
|
6a42800d2c | ||
|
|
70f132540f | ||
|
|
cd9eaaaba1 | ||
|
|
70aa1f4024 | ||
|
|
1d634d96fe | ||
|
|
6d7d127b63 | ||
|
|
6f0fcdded2 | ||
|
|
4eb5254d96 | ||
|
|
6c2eee0cbc | ||
|
|
3c5265cecf | ||
|
|
9c97394f5e | ||
|
|
478d35890d | ||
|
|
1b9b63412c | ||
|
|
3bb8fff3a1 | ||
|
|
694bc0ead4 | ||
|
|
cfc324d31e | ||
|
|
43b63e2843 | ||
|
|
f2ec510a70 | ||
|
|
453edbb28e | ||
|
|
e492f12602 | ||
|
|
bc9407f52f | ||
|
|
954cc5918f | ||
|
|
4ef16e7856 | ||
|
|
1eb3c3e725 | ||
|
|
a89c2d3d22 | ||
|
|
914837a5a2 | ||
|
|
9643a71ba5 | ||
|
|
aa7e0528f8 | ||
|
|
57bd8d569e | ||
|
|
b49d8871a2 | ||
|
|
b90d419bc5 | ||
|
|
1f48d498e1 | ||
|
|
da6139c932 | ||
|
|
be744b40a3 | ||
|
|
780ce657ca | ||
|
|
464be0f803 | ||
|
|
58a6cb9a24 | ||
|
|
9bf7b2ffde | ||
|
|
cde1f28215 | ||
|
|
db198cb7d0 | ||
|
|
99fe567e78 | ||
|
|
f67d37801a | ||
|
|
2261c8f0f5 | ||
|
|
f93b16fc52 | ||
|
|
7c3a43749c | ||
|
|
ecec7b9f1a | ||
|
|
1aca7335f7 | ||
|
|
ba5aee6640 | ||
|
|
06c3136566 | ||
|
|
abaf55e9b1 | ||
|
|
3a2dd0b0aa | ||
|
|
9486b37300 | ||
|
|
0fed1acfd8 | ||
|
|
d7c2300021 | ||
|
|
fca333299d | ||
|
|
a13b03a136 | ||
|
|
48054f5bf1 | ||
|
|
51f2897a33 | ||
|
|
7a3a07b0da | ||
|
|
7c3cfca86c | ||
|
|
352af15984 | ||
|
|
2c42933d58 | ||
|
|
2e68362836 | ||
|
|
c6736db7ea | ||
|
|
c005f03af8 | ||
|
|
459aabcc86 | ||
|
|
ad33097d5e | ||
|
|
8d7735735e | ||
|
|
25bbc46925 | ||
|
|
5a26b0ee35 | ||
|
|
09a397bed2 | ||
|
|
a33039bcae | ||
|
|
0ebd125266 | ||
|
|
fd16a6b6c3 | ||
|
|
cf19f764c7 | ||
|
|
88850d6c25 | ||
|
|
b173c61575 | ||
|
|
3b866f0952 | ||
|
|
94db524a11 | ||
|
|
f27616ce1f | ||
|
|
7f75af7119 | ||
|
|
05ab48cdc5 | ||
|
|
38e42723af | ||
|
|
f4ec60c9e0 | ||
|
|
fd51c209a3 | ||
|
|
01394b1978 | ||
|
|
9b7db08fcf | ||
|
|
6d7cdef223 | ||
|
|
d9c35fe02a | ||
|
|
250b3fa406 | ||
|
|
a5a3f16177 | ||
|
|
ffa7e21c18 | ||
|
|
4608c05df0 | ||
|
|
56ff5a0213 | ||
|
|
014fde301c | ||
|
|
0080a42423 | ||
|
|
2035a4c855 | ||
|
|
4dc6a190fa | ||
|
|
e0db322262 | ||
|
|
8f1bb45e42 | ||
|
|
f39aefd28f | ||
|
|
2cfc43dbfd | ||
|
|
f4168b5202 | ||
|
|
2d93b652e8 | ||
|
|
70782cd655 | ||
|
|
768fcc4f05 | ||
|
|
727491f99b | ||
|
|
c5f1c3a340 | ||
|
|
a78311104a | ||
|
|
4b5b06210c | ||
|
|
333645b044 | ||
|
|
23173074aa | ||
|
|
be8bb9c4e1 | ||
|
|
d07e132216 | ||
|
|
401fa12851 | ||
|
|
194ca84d38 | ||
|
|
7bbf62d735 | ||
|
|
3924e2fca5 | ||
|
|
2e39102e7c | ||
|
|
2a0849fae5 | ||
|
|
9f4e8f6eef | ||
|
|
d0fe36f86e | ||
|
|
10da22cd77 | ||
|
|
6dacc2d515 | ||
|
|
7baa9628d6 | ||
|
|
ec5229101f | ||
|
|
a0e0b1e788 | ||
|
|
f1e04396de | ||
|
|
d0cae8c2fc | ||
|
|
90c215d4c1 | ||
|
|
1b1dc78548 | ||
|
|
a112163f85 | ||
|
|
2a9f2e188d | ||
|
|
652e0cb06f | ||
|
|
123b1b08c2 | ||
|
|
b321bc354b | ||
|
|
03d7397242 | ||
|
|
45e78ef184 | ||
|
|
fe7c5893bb | ||
|
|
2b57c552d1 | ||
|
|
7f0d39b684 | ||
|
|
7273a8b13b | ||
|
|
a544a5cd4f | ||
|
|
ff9ade75d4 | ||
|
|
cfd5498521 | ||
|
|
9b7c30e1cd | ||
|
|
670e5d7fa9 | ||
|
|
8258235611 | ||
|
|
4d97f29943 | ||
|
|
ab8d59eb2d | ||
|
|
c324fa69b2 | ||
|
|
1cdb9b4cc2 | ||
|
|
f47fa49b80 | ||
|
|
6ade96c7ef | ||
|
|
61d31a3c67 | ||
|
|
014509ea30 | ||
|
|
1ce1a45ca6 | ||
|
|
b6da13a653 | ||
|
|
604b4d1751 | ||
|
|
874aaf2857 | ||
|
|
17a28def4e | ||
|
|
e72a1aa9e7 | ||
|
|
7b96ef1b4c | ||
|
|
ea048e6d82 | ||
|
|
109abfb4ad | ||
|
|
3f662ab19d | ||
|
|
b0de38909a | ||
|
|
267de44103 | ||
|
|
b7b0e55d94 | ||
|
|
c0d12f5721 | ||
|
|
27a945485f | ||
|
|
d76c81a9d8 | ||
|
|
143a3622dd | ||
|
|
75992293c6 | ||
|
|
0e004828b3 | ||
|
|
714751f404 | ||
|
|
27576e946e | ||
|
|
e548dddcbd | ||
|
|
8cbc8c497e | ||
|
|
c328140441 | ||
|
|
a10798c983 | ||
|
|
06909e260f | ||
|
|
5eca8a5150 | ||
|
|
88a13f9864 | ||
|
|
e03ae6195a | ||
|
|
c3cacaf407 | ||
|
|
4b479b3ceb | ||
|
|
c78cb805fb | ||
|
|
d17688fc9d | ||
|
|
fd59b9d5f0 | ||
|
|
0e71c9f5f5 | ||
|
|
bc3c14589e | ||
|
|
4331f49f6f | ||
|
|
294d19e9d1 | ||
|
|
ed615dbb31 | ||
|
|
e9ad57f588 | ||
|
|
7fee639b53 | ||
|
|
c2a5a8ec7d | ||
|
|
ec823cab97 | ||
|
|
83f88b6df3 | ||
|
|
7636fe7686 | ||
|
|
1e12c82be4 | ||
|
|
9879a80569 | ||
|
|
13b03f4f89 | ||
|
|
331de6ecfe | ||
|
|
7b649c4a62 | ||
|
|
9ccdaef354 | ||
|
|
fa114f4467 | ||
|
|
33cc650871 | ||
|
|
95737d05e1 | ||
|
|
955ffc48d3 | ||
|
|
d79dd908f6 | ||
|
|
4656ec30af | ||
|
|
a0be60a1b9 | ||
|
|
d296d6f000 | ||
|
|
8df4bd2537 | ||
|
|
cc5cdb88ff | ||
|
|
f66c6a93c5 | ||
|
|
a7b5ee33e2 | ||
|
|
fe90af5aa4 | ||
|
|
7e672d91e9 | ||
|
|
09f472bee2 | ||
|
|
30da0c5105 | ||
|
|
d2082cdbea | ||
|
|
c42596811e | ||
|
|
d095a19187 | ||
|
|
8089e2c898 | ||
|
|
a657d03fb0 | ||
|
|
4e829200f5 | ||
|
|
bef9be5cbe | ||
|
|
56f14323d1 | ||
|
|
4fcd22ca68 | ||
|
|
21890e74fe | ||
|
|
ef32564fba | ||
|
|
d95505726f | ||
|
|
bb7b892f7c | ||
|
|
836cdaf087 | ||
|
|
6f5c41abb8 | ||
|
|
6379321785 | ||
|
|
e4c6e4393e | ||
|
|
3e6bb81e39 | ||
|
|
ded6f18dd5 | ||
|
|
81643e2aef | ||
|
|
8a186f9f0c | ||
|
|
14aa39976a | ||
|
|
c077e0ddc2 | ||
|
|
d198a7b63a | ||
|
|
7f36a33dea | ||
|
|
db3d9fc65f | ||
|
|
f9738451db | ||
|
|
ec73b5cbea | ||
|
|
f3bd6b6469 | ||
|
|
fd50993fb9 | ||
|
|
079381dbb0 | ||
|
|
85bdc35342 | ||
|
|
2aaaa55e42 | ||
|
|
e999bea228 | ||
|
|
287c06383b | ||
|
|
202409c140 | ||
|
|
34886beccb | ||
|
|
3d200cc34e | ||
|
|
b13883530a | ||
|
|
032e04bc50 | ||
|
|
625b715832 | ||
|
|
e1ac360271 | ||
|
|
7eda88bdbe | ||
|
|
90fdb94e95 | ||
|
|
15979203ce | ||
|
|
53360a03af | ||
|
|
9f6f7c23f6 | ||
|
|
7419f4e886 | ||
|
|
f90a80c366 | ||
|
|
d9ec756e22 | ||
|
|
9f7c24c540 | ||
|
|
fe2833395d | ||
|
|
a181cf3815 | ||
|
|
dfce44a47a | ||
|
|
22280bf1e3 | ||
|
|
30aedb6eec | ||
|
|
12f175740f | ||
|
|
5c0f11aea1 | ||
|
|
879518c4a9 | ||
|
|
7afca6a254 | ||
|
|
1c56aa2eb1 | ||
|
|
ecaf00c5b3 | ||
|
|
bfdc77da97 | ||
|
|
f38aa4595f | ||
|
|
aa0b906a9f | ||
|
|
9e64e5a60e | ||
|
|
35eb05432b | ||
|
|
77c6298067 | ||
|
|
f43d1e5f47 | ||
|
|
63a74e1aef | ||
|
|
69e45e9ae8 | ||
|
|
53cf35014c | ||
|
|
d6e4239573 | ||
|
|
c76808e11e | ||
|
|
b2428a4211 | ||
|
|
aa0e919713 | ||
|
|
7e2a41b6cb | ||
|
|
258b1d2d1f | ||
|
|
a4ea200e38 | ||
|
|
43a27c16a6 | ||
|
|
3c693baab0 | ||
|
|
d186e2702c | ||
|
|
aee478114b | ||
|
|
6220530855 | ||
|
|
69ae37021c | ||
|
|
e2382a403b | ||
|
|
0ae45eb918 | ||
|
|
d8882f8d0c | ||
|
|
00c64411c5 | ||
|
|
c0f35a7d84 | ||
|
|
12cf05bb87 | ||
|
|
325c17647e | ||
|
|
c6eeb2107a | ||
|
|
70fd037161 | ||
|
|
ed4469bd5f | ||
|
|
4273d72b9d | ||
|
|
30f56d1f9b | ||
|
|
9bb13f6d88 | ||
|
|
52dbd8afec | ||
|
|
31a0f04710 | ||
|
|
ac88add40b | ||
|
|
862cf67375 | ||
|
|
dae850616d | ||
|
|
149e114359 | ||
|
|
7d63e7e417 | ||
|
|
d12e5d19c9 | ||
|
|
7a6b3b7a86 | ||
|
|
97fc02b601 | ||
|
|
9485403712 | ||
|
|
caeead0bc0 | ||
|
|
f93204e37e | ||
|
|
e6af91c6ab | ||
|
|
c89428eed8 | ||
|
|
b4f2b89139 | ||
|
|
aab7cdcf77 | ||
|
|
47cdedefd4 | ||
|
|
710145a32d | ||
|
|
2783d2cc77 | ||
|
|
a7a5df1991 | ||
|
|
62a296f909 |
+2
-1
@@ -401,4 +401,5 @@ FodyWeavers.xsd
|
||||
|
||||
/fmtall
|
||||
/genmacall
|
||||
*AssemblyInfo.cs
|
||||
*AssemblyInfo.cs
|
||||
/PROMS/Baseline/Baseline.sln
|
||||
|
||||
@@ -1,6 +1,4 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
using System.IO;
|
||||
using System.Text.RegularExpressions;
|
||||
using System.Windows.Forms;
|
||||
@@ -35,31 +33,7 @@ namespace AdjustBuildRevision
|
||||
outline = Regex.Replace(line, @"([0-9]*)\.([0-9]*)\.([0-9]*)\.([0-9]*)""\)", DateTime.Now.ToString("2.4.yyMM.dHH") + "\")");
|
||||
else
|
||||
outline = Regex.Replace(line, @"([0-9]*)\.([0-9]*)\.([0-9]*)\.([0-9]*)""\)", DateTime.Now.ToString("2.3.yyMM.dHH") + "\")");
|
||||
// if (outline != line)
|
||||
// {
|
||||
// Console.WriteLine("Before: '{0}'", line);
|
||||
// Console.WriteLine("After: '{0}'", outline);
|
||||
// lines[i] = outline;
|
||||
// changed = true;
|
||||
// }
|
||||
// else
|
||||
// {
|
||||
// Console.WriteLine("No change: '{0}'", line);
|
||||
// }
|
||||
// }
|
||||
//}
|
||||
//if (changed)
|
||||
//{
|
||||
// if (!fi.IsReadOnly) fi.IsReadOnly = false;
|
||||
// StreamWriter sw = fi.CreateText();
|
||||
// foreach (string line in lines)
|
||||
// sw.WriteLine(line);
|
||||
// sw.Close();
|
||||
// string line = lines[i];
|
||||
// string outline = line;
|
||||
// if (line.Contains("AssemblyVersion") || line.Contains("AssemblyFileVersion"))
|
||||
// {
|
||||
//outline = Regex.Replace(line, @"([0-9]*)\.([0-9]*)\.([0-9]*)\.([0-9]*)""\)", DateTime.Now.ToString("1.1.yyMM.dHH") + "\")");
|
||||
|
||||
if (outline != line)
|
||||
{
|
||||
Console.WriteLine("Before: '{0}'", line);
|
||||
@@ -84,7 +58,7 @@ namespace AdjustBuildRevision
|
||||
}
|
||||
else
|
||||
{
|
||||
MessageBox.Show("File " + fi.FullName + " does not exist");
|
||||
MessageBox.Show($"File {fi.FullName} does not exist");
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
@@ -93,10 +67,6 @@ namespace AdjustBuildRevision
|
||||
}
|
||||
}
|
||||
|
||||
//private static DateTime GetLatestDateTime(string path)
|
||||
//{
|
||||
// return GetLatestDateTime(new DirectoryInfo(path));
|
||||
//}
|
||||
private static DateTime GetLatestDateTime(DirectoryInfo di, DateTime dtCheck)
|
||||
{
|
||||
DateTime dtMax = dtCheck;
|
||||
@@ -104,24 +74,14 @@ namespace AdjustBuildRevision
|
||||
foreach(FileInfo myFile in myFiles)
|
||||
{
|
||||
DateTime dt = myFile.LastWriteTime;
|
||||
//if (dt > dtCheck)
|
||||
//{
|
||||
//Console.WriteLine("\"File\"\t\"{0}\"\t\"{1}\"\t{2}\t{3}",myFile.FullName,dt.ToString("1.1.yyMM.dHH"),dt,dtCheck);
|
||||
if(dtMax < dt) dtMax = dt;
|
||||
//}
|
||||
if(dtMax < dt) dtMax = dt;
|
||||
}
|
||||
DirectoryInfo[] myFolders = di.GetDirectories();
|
||||
foreach (DirectoryInfo diChild in myFolders)
|
||||
{
|
||||
DateTime dtChild = GetLatestDateTime(diChild,dtCheck);
|
||||
//if (dtChild > dtCheck)
|
||||
//{
|
||||
//Console.WriteLine("\"SubFolder\"\t\"{0}\"\t\"{1}\"\t{2}\t{3}", diChild.FullName, dtChild.ToString("1.1.yyMM.dHH"),dtChild,dtCheck);
|
||||
if(dtChild > dtMax) dtMax = dtChild;
|
||||
//}
|
||||
if(dtChild > dtMax) dtMax = dtChild;
|
||||
}
|
||||
//if(dtMax > dtCheck)
|
||||
// Console.WriteLine("\"Folder\"\t\"{0}\"\t\"{1}\"", di.FullName, dtMax.ToString("1.1.yyMM.dHH"));
|
||||
return dtMax;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -67,6 +67,7 @@
|
||||
<Compile Include="frmSettings.Designer.cs">
|
||||
<DependentUpon>frmSettings.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="GlobalSuppressions.cs" />
|
||||
<Compile Include="Program.cs" />
|
||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||
<EmbeddedResource Include="frmBaseline.resx">
|
||||
|
||||
@@ -0,0 +1,8 @@
|
||||
// This file is used by Code Analysis to maintain SuppressMessage
|
||||
// attributes that are applied to this project.
|
||||
// Project-level suppressions either have no target or are given
|
||||
// a specific target and scoped to a namespace, type, member, etc.
|
||||
|
||||
using System.Diagnostics.CodeAnalysis;
|
||||
|
||||
[assembly: SuppressMessage("Style", "IDE1006:Naming Styles", Justification = "Not modifying Naming Styles")]
|
||||
@@ -1,7 +1,4 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace Baseline
|
||||
|
||||
+221
-266
@@ -43,12 +43,9 @@ using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Data;
|
||||
using System.Drawing;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
using System.Collections.Specialized;
|
||||
using System.IO;
|
||||
using System.Text.RegularExpressions;
|
||||
using System.Xml.Serialization;
|
||||
@@ -73,13 +70,8 @@ namespace Baseline
|
||||
}
|
||||
public partial class frmBaseline : Form
|
||||
{
|
||||
private IgnoreLines _MyIgnore = new IgnoreLines();
|
||||
public IgnoreLines MyIgnore
|
||||
{
|
||||
get { return _MyIgnore; }
|
||||
set { _MyIgnore = value; }
|
||||
}
|
||||
private LastWas myLast = LastWas.Search;
|
||||
public IgnoreLines MyIgnore { get; set; } = new IgnoreLines();
|
||||
private LastWas myLast = LastWas.Search;
|
||||
private Settings MySettings;
|
||||
public string MyStatus
|
||||
{
|
||||
@@ -151,9 +143,11 @@ namespace Baseline
|
||||
this.WindowState = Properties.Settings.Default.WidnowState;
|
||||
if(Properties.Settings.Default.Ignore != null && Properties.Settings.Default.Ignore != "")
|
||||
MyIgnore = IgnoreLines.Get(Properties.Settings.Default.Ignore);
|
||||
MySettings= new Settings();
|
||||
MySettings.IgnoreLines = new BindingList<string>();
|
||||
splitContainer1.SplitterDistance = Properties.Settings.Default.Split1;
|
||||
MySettings = new Settings
|
||||
{
|
||||
IgnoreLines = new BindingList<string>()
|
||||
};
|
||||
splitContainer1.SplitterDistance = Properties.Settings.Default.Split1;
|
||||
splitContainer2.SplitterDistance = Properties.Settings.Default.Split2;
|
||||
splitContainer3.SplitterDistance = Properties.Settings.Default.Split3;
|
||||
if (Properties.Settings.Default.MRU1 != null && Properties.Settings.Default.MRU1.Count > 0)
|
||||
@@ -240,28 +234,27 @@ namespace Baseline
|
||||
lbProcedures.Items.Clear();
|
||||
lbResults1.Items.Clear();
|
||||
lbResults2.Items.Clear();
|
||||
FindFile ff = lbDifferent.SelectedItem as FindFile;
|
||||
if (ff != null)
|
||||
{
|
||||
// Fill Procedure or Result ListBoxes
|
||||
switch (myLast)
|
||||
{
|
||||
case LastWas.Pagination:
|
||||
CompareContent(ff.File1, ff.File2);// Compare DebugPagination
|
||||
break;
|
||||
case LastWas.Baseline:
|
||||
CompareContent3(ff.File1, ff.File2);// Compare DebugMeta
|
||||
break;
|
||||
case LastWas.Search:
|
||||
ShowSearchResults(ff.File1, ff.File2);// Perform search on DebugMeta
|
||||
break;
|
||||
default:
|
||||
CompareContent(ff.File1, ff.File2);//Default DebugPagination
|
||||
break;
|
||||
}
|
||||
//CompareOneFile(ff.File1, ff.File2);
|
||||
}
|
||||
}
|
||||
if (lbDifferent.SelectedItem is FindFile ff)
|
||||
{
|
||||
// Fill Procedure or Result ListBoxes
|
||||
switch (myLast)
|
||||
{
|
||||
case LastWas.Pagination:
|
||||
CompareContent(ff.File1, ff.File2);// Compare DebugPagination
|
||||
break;
|
||||
case LastWas.Baseline:
|
||||
CompareContent3(ff.File1, ff.File2);// Compare DebugMeta
|
||||
break;
|
||||
case LastWas.Search:
|
||||
ShowSearchResults(ff.File1, ff.File2);// Perform search on DebugMeta
|
||||
break;
|
||||
default:
|
||||
CompareContent(ff.File1, ff.File2);//Default DebugPagination
|
||||
break;
|
||||
}
|
||||
//CompareOneFile(ff.File1, ff.File2);
|
||||
}
|
||||
}
|
||||
Procedures MyProcs1;
|
||||
Procedures MyProcs2;
|
||||
/// <summary>
|
||||
@@ -361,13 +354,6 @@ namespace Baseline
|
||||
lines1 = list1.AsEnumerable<string>();// Convert back to Enumerable to work with LINQ
|
||||
return lines1;
|
||||
}
|
||||
private string GetProcNum(string line)
|
||||
{
|
||||
string retval = line.Substring(3, line.IndexOf(" | ") - 3);
|
||||
if (retval.Contains("_"))
|
||||
retval = retval.Substring(0, retval.IndexOf("_") - 1);
|
||||
return retval;
|
||||
}
|
||||
/// <summary>
|
||||
/// Include lines for Procedure or Page or Search is true
|
||||
/// Account for Case Insensitive CheckBox
|
||||
@@ -450,13 +436,13 @@ namespace Baseline
|
||||
private void lbResults1_SelectedIndexChanged(object sender, EventArgs e)
|
||||
{
|
||||
string line=null;
|
||||
if (lbResults1.SelectedItem is string)
|
||||
line = (string)lbResults1.SelectedItem;
|
||||
if (lbResults1.SelectedItem is string v)
|
||||
line = v;
|
||||
Line myLine = lbResults1.SelectedItem as Line;
|
||||
switch (myLast)
|
||||
{
|
||||
case LastWas.Pagination:
|
||||
line = OpenPDF(line);
|
||||
OpenPDF(line);
|
||||
break;
|
||||
case LastWas.Baseline: // TODO: Need to add code here to open matching file
|
||||
OpenOnePDF(myLine,1);
|
||||
@@ -472,14 +458,14 @@ namespace Baseline
|
||||
{
|
||||
|
||||
string line=null;
|
||||
if(lbResults2.SelectedItem is string)
|
||||
line = (string)lbResults2.SelectedItem;
|
||||
if(lbResults2.SelectedItem is string v)
|
||||
line = v;
|
||||
Line myLine = lbResults2.SelectedItem as Line;
|
||||
|
||||
switch (myLast)
|
||||
{
|
||||
case LastWas.Pagination:
|
||||
line = OpenPDF(line);
|
||||
OpenPDF(line);
|
||||
break;
|
||||
case LastWas.Baseline: // TODO: Need to add code here to open matching file
|
||||
OpenOnePDF(myLine,2);
|
||||
@@ -491,34 +477,97 @@ namespace Baseline
|
||||
break;
|
||||
}
|
||||
}
|
||||
string exePath;
|
||||
private string OpenPDF(string line)
|
||||
|
||||
/// <summary>
|
||||
/// This will return the full path to the PDF file
|
||||
/// </summary>
|
||||
/// <param name="fi"></param>
|
||||
/// <param name="patern"></param>
|
||||
/// <returns></returns>
|
||||
private string GetPFDFileAndPath(FileInfo fi, string patern)
|
||||
{
|
||||
int page = int.Parse(line.Substring(0, 6));
|
||||
string[] fileList = Directory.GetFiles(fi.DirectoryName, patern);
|
||||
// sort the list of file list
|
||||
Array.Sort((string[])fileList);
|
||||
return fileList.FirstOrDefault(); // the PDF file that we what should be top of the list then.
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// This will parse out the procedure number for the PROMS ShortPath representation of a procedure section or step part
|
||||
/// In the PROMS ShortPath, ".S" is used to delimit the procedure number, section then uses "..S" for the step parts
|
||||
/// This method was written to handle cases where ".S" is used as part of the procedure number
|
||||
/// </summary>
|
||||
/// <param name="txt"></param>
|
||||
/// <returns></returns>
|
||||
private string ParseOutProcedureNumberFromLine(string txt)
|
||||
{
|
||||
// if the item is to a high levels step or sub-step the short path as "..S" for each part of the step
|
||||
// so look for the last occurence of ".." which will be the end of the section information
|
||||
int lidx = txt.LastIndexOf("..");
|
||||
if (lidx > 0)
|
||||
{
|
||||
lidx = txt.LastIndexOf(".S", lidx); // this will position us to the end of the procedure number
|
||||
}
|
||||
else
|
||||
{
|
||||
lidx = txt.LastIndexOf(".S"); // this will position us to the end of the procedure number if there was no step information
|
||||
}
|
||||
// old logic was looking for the first occurence of ".S" in the txt string as the ending point of the procedure nuumber
|
||||
// Beaver Valley has a procedure number "1.SBGEN" in which the old logic would not work
|
||||
// 1.SBGEN.SC. ==> short path of attachment section "C"
|
||||
// 1.SBGEN.SC..S1. ==> short path of Step 1 in attachment section "C"
|
||||
// B2018-113 - Replace slashes and backslashes with underscores just as PROMS does when creating a PDF file.
|
||||
string rtnstr = txt.Substring(8, lidx - 8).Replace("/", "_").Replace("\\", "_");
|
||||
return rtnstr;
|
||||
}
|
||||
|
||||
string exePath;
|
||||
private void OpenPDF(string line)
|
||||
{
|
||||
int pageNum = int.Parse(line.Substring(0, 6));
|
||||
// B2018-113 - Replace slashes and backslashes with underscores just as PROMS does when creating a PDF file.
|
||||
line = line.Substring(8, line.IndexOf(".S") - 8).Replace("/", "_").Replace("\\", "_");
|
||||
string ProcNum = ParseOutProcedureNumberFromLine(line);
|
||||
string procPatern = string.Format("*{0}*.pdf", string.IsNullOrEmpty(line) ? "noProcNumber" : ProcNum);
|
||||
|
||||
FindFile ff = lbDifferent.SelectedItem as FindFile;
|
||||
FileInfo fi1 = new FileInfo(ff.File1);
|
||||
FileInfo fi2 = new FileInfo(ff.File2);
|
||||
string PDFfileName1 = GetPFDFileAndPath(fi1,procPatern);
|
||||
string PDFfileName2 = GetPFDFileAndPath(fi2,procPatern);
|
||||
if (string.IsNullOrEmpty(PDFfileName1) || string.IsNullOrEmpty(PDFfileName2)) return;
|
||||
|
||||
// If you don't know where the Reader executable is for PDFs Open a PDF and Check to see where the path points
|
||||
if (exePath == null)
|
||||
{
|
||||
System.Diagnostics.Process p = System.Diagnostics.Process.Start(fi1.DirectoryName + "\\" + line + ".pdf");
|
||||
exePath = TryToGetPath(p);
|
||||
p.Kill(); // No need to keep it open
|
||||
try
|
||||
{
|
||||
System.Diagnostics.Process p = System.Diagnostics.Process.Start(PDFfileName1);
|
||||
exePath = TryToGetPath(p);
|
||||
p.Kill(); // No need to keep it open
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Application.DoEvents();
|
||||
string msg = string.Format("{0} - {1}", ex.GetType().Name, ex.Message);
|
||||
Console.WriteLine(msg);
|
||||
MessageBox.Show(msg, "Error opening default PDF Viewer");
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
// Open the first PDF on a Specific Page
|
||||
System.Diagnostics.ProcessStartInfo psi1 = new System.Diagnostics.ProcessStartInfo(exePath, string.Format("/A page={0} ", page) + fi1.DirectoryName + "\\" + line + ".pdf ");
|
||||
System.Diagnostics.ProcessStartInfo psi1 = new System.Diagnostics.ProcessStartInfo(exePath, string.Format(" /A \"page={0}\" \"{1}\" ", pageNum,PDFfileName1));
|
||||
System.Diagnostics.Process p1 = System.Diagnostics.Process.Start(psi1);
|
||||
// Move the PDF Reader window to 0,0
|
||||
MoveProcess(p1, 0, 0);
|
||||
// Open the first PDF on a Specific Page
|
||||
System.Diagnostics.ProcessStartInfo psi2 = new System.Diagnostics.ProcessStartInfo(exePath, string.Format("/A page={0} ", page) + fi2.DirectoryName + "\\" + line + ".pdf ");
|
||||
|
||||
// Open the second PDF on a Specific Page
|
||||
System.Diagnostics.ProcessStartInfo psi2 = new System.Diagnostics.ProcessStartInfo(exePath, string.Format(" /A \"page={0}\" \"{1}\" ", pageNum, PDFfileName2));
|
||||
System.Diagnostics.Process p2 = System.Diagnostics.Process.Start(psi2);
|
||||
// Move the PDF Reader window to 960,0
|
||||
// TODO: This Offset could be a Setting
|
||||
MoveProcess(p2, 960, 0);
|
||||
return line;
|
||||
return;
|
||||
}
|
||||
/// <summary>
|
||||
/// Try to get the location of the PDF Reader executable
|
||||
@@ -530,7 +579,7 @@ namespace Baseline
|
||||
p.WaitForInputIdle();
|
||||
while (p.MainModule == null)
|
||||
{
|
||||
Console.WriteLine("{0} - {1}", p.MainWindowTitle,p.ProcessName);
|
||||
Console.WriteLine("{0} - {1}", p.MainWindowTitle, p.ProcessName);
|
||||
p.WaitForInputIdle();
|
||||
Application.DoEvents();
|
||||
}
|
||||
@@ -551,10 +600,10 @@ namespace Baseline
|
||||
progname = @"C:\Program Files (x86)\IDM Computer Solutions\UltraCompare\UC.exe";
|
||||
System.Diagnostics.ProcessStartInfo psi =
|
||||
new System.Diagnostics.ProcessStartInfo(progname, string.Format(@" -t ""{0}"" ""{1}""", compareFile, baseFile));
|
||||
System.Diagnostics.Process prc = System.Diagnostics.Process.Start(psi);
|
||||
}
|
||||
_ = System.Diagnostics.Process.Start(psi);
|
||||
}
|
||||
|
||||
private ProcessLocationQueue myQueue= new ProcessLocationQueue();
|
||||
private readonly ProcessLocationQueue myQueue= new ProcessLocationQueue();
|
||||
private Timer queueTimer = null;
|
||||
/// <summary>
|
||||
/// Move a Process to a specific screen location - This is done with a timer so
|
||||
@@ -567,9 +616,11 @@ namespace Baseline
|
||||
{
|
||||
if (queueTimer == null)
|
||||
{
|
||||
queueTimer = new Timer();
|
||||
queueTimer.Enabled = false;
|
||||
queueTimer.Tick += queueTimer_Tick;
|
||||
queueTimer = new Timer
|
||||
{
|
||||
Enabled = false
|
||||
};
|
||||
queueTimer.Tick += queueTimer_Tick;
|
||||
queueTimer.Interval = 1000;
|
||||
}
|
||||
myQueue.Add(proc, x, y);
|
||||
@@ -594,41 +645,55 @@ namespace Baseline
|
||||
/// <param name="list"></param>
|
||||
private void OpenOnePDF(Line myLine, int list)
|
||||
{
|
||||
if (myLine == null) return; // no PDF to open
|
||||
// B2018-113 - Replace slashes and backslashes with underscores just as PROMS does when creating a PDF file.
|
||||
string proc = myLine.MyProc.Number.Replace("/","_").Replace("\\","_");
|
||||
|
||||
// if no procedure number, PROMS creates pdf filename "NoProcNumber.pdf"
|
||||
// create pattern to use to get the PDF from the directory
|
||||
// add wildcards (*) to file the file if any prefix or suffix was added to the filename
|
||||
string procPatern = string.Format("*{0}*.pdf", proc == string.Empty ? "noProcNumber" : proc);
|
||||
int pagenum = myLine.MyPage.Number;
|
||||
FindFile ff = lbDifferent.SelectedItem as FindFile;
|
||||
FileInfo fi1 = new FileInfo(ff.File1);
|
||||
FileInfo fi2 = new FileInfo(ff.File2);
|
||||
string PDFfileName;
|
||||
if (list == 1)
|
||||
{
|
||||
FileInfo fi1 = new FileInfo(ff.File1);
|
||||
PDFfileName = GetPFDFileAndPath(fi1, procPatern);
|
||||
}
|
||||
else // list == 2
|
||||
{
|
||||
FileInfo fi2 = new FileInfo(ff.File2);
|
||||
PDFfileName = GetPFDFileAndPath(fi2, procPatern);
|
||||
}
|
||||
if (string.IsNullOrEmpty(PDFfileName)) return; // no PDF to open
|
||||
|
||||
// if exePath is null, then open the found PDF with the default PDF viewer and
|
||||
// capture/save the entire name and path of the default PDF viewer
|
||||
if (exePath == null)
|
||||
{
|
||||
System.Diagnostics.Process p = System.Diagnostics.Process.Start(fi1.DirectoryName + "\\" + proc + ".pdf");
|
||||
while (exePath == null)
|
||||
try
|
||||
{
|
||||
try
|
||||
{
|
||||
|
||||
exePath = p.MainModule.FileName;
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Application.DoEvents();
|
||||
Console.WriteLine("{0} - {1}", ex.GetType().Name, ex.Message);
|
||||
}
|
||||
System.Diagnostics.Process tp = System.Diagnostics.Process.Start(PDFfileName);
|
||||
exePath = TryToGetPath(tp);
|
||||
tp.Kill();
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Application.DoEvents();
|
||||
string msg = string.Format("{0} - {1}", ex.GetType().Name, ex.Message);
|
||||
Console.WriteLine(msg);
|
||||
MessageBox.Show(msg, "Error opening default PDF Viewer");
|
||||
return;
|
||||
}
|
||||
p.Kill();
|
||||
}
|
||||
if (list == 1)
|
||||
{
|
||||
System.Diagnostics.ProcessStartInfo psi1 = new System.Diagnostics.ProcessStartInfo(exePath, string.Format("/A page={0} ", pagenum) + fi1.DirectoryName + "\\" + proc + ".pdf ");
|
||||
System.Diagnostics.Process p1 = System.Diagnostics.Process.Start(psi1);
|
||||
}
|
||||
else
|
||||
{
|
||||
System.Diagnostics.ProcessStartInfo psi2 = new System.Diagnostics.ProcessStartInfo(exePath, string.Format("/A page={0} ", pagenum) + fi2.DirectoryName + "\\" + proc + ".pdf ");
|
||||
System.Diagnostics.Process p1 = System.Diagnostics.Process.Start(psi2);
|
||||
}
|
||||
}
|
||||
// open the PDF and jump to the page number
|
||||
System.Diagnostics.ProcessStartInfo psi1 = new System.Diagnostics.ProcessStartInfo(exePath, string.Format("/A \"page={0}\" \"{1}\" ", pagenum, PDFfileName))
|
||||
{
|
||||
UseShellExecute = false
|
||||
};
|
||||
_ = System.Diagnostics.Process.Start(psi1);
|
||||
}
|
||||
/// <summary>
|
||||
/// Perform Debug Meta file comparison for all of the folders within the automated testing folders
|
||||
/// </summary>
|
||||
@@ -708,12 +773,12 @@ namespace Baseline
|
||||
}
|
||||
private void lbProcedures_SelectedIndexChanged(object sender, EventArgs e)
|
||||
{
|
||||
//Initialize Results List Box
|
||||
lbResults1.Items.Clear();
|
||||
Procedure myProc = lbProcedures.SelectedItem as Procedure;
|
||||
//TODO: May need to consider if there are duplicate procedure numers and titles
|
||||
Procedure myProc1 = MyProcs1.Find(x => x.Number == myProc.Number && x.Title == myProc.Title);
|
||||
//Initialize Results List Box
|
||||
if (!(lbProcedures.SelectedItem is Procedure myProc)) return; // clicked on the white space (blank line) in the list of different procedures
|
||||
//TODO: May need to consider if there are duplicate procedure numers and titles
|
||||
Procedure myProc1 = MyProcs1.Find(x => x.Number == myProc.Number && x.Title == myProc.Title);
|
||||
// Build the results ListBox for the left window
|
||||
lbResults1.Items.Clear();
|
||||
if (myProc1 != null)
|
||||
{
|
||||
foreach (Page myPage in myProc1.MyPages)
|
||||
@@ -758,28 +823,13 @@ namespace Baseline
|
||||
};
|
||||
public class Settings
|
||||
{
|
||||
private BindingList<string> _IgnoreLines;
|
||||
public BindingList<string> IgnoreLines
|
||||
{
|
||||
get { return _IgnoreLines; }
|
||||
set { _IgnoreLines = value; }
|
||||
}
|
||||
}
|
||||
public BindingList<string> IgnoreLines { get; set; }
|
||||
}
|
||||
public partial class FindFile
|
||||
{
|
||||
private string _File1;
|
||||
public string File1
|
||||
{
|
||||
get { return _File1; }
|
||||
set { _File1 = value; }
|
||||
}
|
||||
private string _File2;
|
||||
public string File2
|
||||
{
|
||||
get { return _File2; }
|
||||
set { _File2 = value; }
|
||||
}
|
||||
public FindFile(string file1, string file2)
|
||||
public string File1 { get; set; }
|
||||
public string File2 { get; set; }
|
||||
public FindFile(string file1, string file2)
|
||||
{
|
||||
File1 = file1;
|
||||
File2 = file2;
|
||||
@@ -787,19 +837,16 @@ namespace Baseline
|
||||
}
|
||||
public partial class FindFiles : List<FindFile>
|
||||
{
|
||||
private string _FileName;
|
||||
public string FileName
|
||||
{
|
||||
get { return _FileName; }
|
||||
}
|
||||
/// <summary>
|
||||
/// Build list of DocVersion Folders with differences
|
||||
/// </summary>
|
||||
/// <param name="path1">Base path</param>
|
||||
/// <param name="path2">Compare path</param>
|
||||
/// <param name="fileName">filename</param>
|
||||
/// <param name="myIgnore">Ignore list</param>
|
||||
public FindFiles(string path1, string path2, string fileName,IgnoreLines myIgnore)
|
||||
private readonly string _FileName;
|
||||
public string FileName => _FileName;
|
||||
/// <summary>
|
||||
/// Build list of DocVersion Folders with differences
|
||||
/// </summary>
|
||||
/// <param name="path1">Base path</param>
|
||||
/// <param name="path2">Compare path</param>
|
||||
/// <param name="fileName">filename</param>
|
||||
/// <param name="myIgnore">Ignore list</param>
|
||||
public FindFiles(string path1, string path2, string fileName,IgnoreLines myIgnore)
|
||||
{
|
||||
DirectoryInfo di1 = new DirectoryInfo(path1);
|
||||
DirectoryInfo di2 = new DirectoryInfo(path2);
|
||||
@@ -1025,34 +1072,16 @@ namespace Baseline
|
||||
// Text - the line of text
|
||||
public partial class Procedure
|
||||
{
|
||||
private string _Number;
|
||||
public string Number
|
||||
public string Number { get; set; }
|
||||
public string Title { get; set; }
|
||||
public Pages MyPages { get; set; } = new Pages();
|
||||
public Procedure(string number, string title)
|
||||
{
|
||||
get { return _Number; }
|
||||
set { _Number = value; }
|
||||
Number = number;
|
||||
Title = title;
|
||||
}
|
||||
private string _Title;
|
||||
public string Title
|
||||
{
|
||||
get { return _Title; }
|
||||
set { _Title = value; }
|
||||
}
|
||||
private Pages _MyPages = new Pages();
|
||||
public Pages MyPages
|
||||
{
|
||||
get { return _MyPages; }
|
||||
set { _MyPages = value; }
|
||||
}
|
||||
public Procedure(string number, string title)
|
||||
{
|
||||
_Number = number;
|
||||
_Title = title;
|
||||
}
|
||||
public override string ToString()
|
||||
{
|
||||
return string.Format("{0} - {1}", Number, Title);
|
||||
}
|
||||
}
|
||||
public override string ToString() => string.Format("{0} - {1}", Number, Title);
|
||||
}
|
||||
public partial class Procedures : List<Procedure>
|
||||
{
|
||||
// Sample data for a Procedure Number line
|
||||
@@ -1083,77 +1112,34 @@ namespace Baseline
|
||||
}
|
||||
public partial class Page
|
||||
{
|
||||
private int _Number;
|
||||
public int Number
|
||||
{
|
||||
get { return _Number; }
|
||||
set { _Number = value; }
|
||||
}
|
||||
private Lines _MyLines = new Lines();
|
||||
public int Number { get; set; }
|
||||
|
||||
public Lines MyLines
|
||||
{
|
||||
get { return _MyLines; }
|
||||
set { _MyLines = value; }
|
||||
}
|
||||
public Page(int number)
|
||||
{
|
||||
_Number = number;
|
||||
}
|
||||
public override string ToString()
|
||||
{
|
||||
return string.Format("Page {0}", Number);
|
||||
}
|
||||
}
|
||||
public Lines MyLines { get; set; } = new Lines();
|
||||
public Page(int number) => Number = number;
|
||||
public override string ToString() => string.Format("Page {0}", Number);
|
||||
}
|
||||
public partial class Pages : List<Page>
|
||||
{
|
||||
public void Add(int number)
|
||||
{
|
||||
Add(new Page(number));
|
||||
}
|
||||
}
|
||||
public void Add(int number) => Add(new Page(number));
|
||||
}
|
||||
public partial class Line
|
||||
{
|
||||
private Procedure _MyProc;
|
||||
public Procedure MyProc
|
||||
public Procedure MyProc { get; set; }
|
||||
public Page MyPage { get; set; }
|
||||
public string Text { get; set; }
|
||||
public Line(string text) => Text = text;
|
||||
public Line(string text, Procedure myProc, Page myPage)
|
||||
{
|
||||
get { return _MyProc; }
|
||||
set { _MyProc = value; }
|
||||
Text = text;
|
||||
MyProc = myProc;
|
||||
MyPage = myPage;
|
||||
}
|
||||
private Page _MyPage;
|
||||
public Page MyPage
|
||||
{
|
||||
get { return _MyPage; }
|
||||
set { _MyPage = value; }
|
||||
}
|
||||
private string _Text;
|
||||
public string Text
|
||||
{
|
||||
get { return _Text; }
|
||||
set { _Text = value; }
|
||||
}
|
||||
public Line(string text)
|
||||
{
|
||||
_Text = text;
|
||||
}
|
||||
public Line(string text, Procedure myProc, Page myPage)
|
||||
{
|
||||
_Text = text;
|
||||
_MyProc = myProc;
|
||||
_MyPage = myPage;
|
||||
}
|
||||
public override string ToString()
|
||||
{
|
||||
return Text;
|
||||
}
|
||||
}
|
||||
public override string ToString() => Text;
|
||||
}
|
||||
public partial class Lines : List<Line>
|
||||
{
|
||||
public void Add(string text)
|
||||
{
|
||||
Add(new Line(text));
|
||||
}
|
||||
}
|
||||
public void Add(string text) => Add(new Line(text));
|
||||
}
|
||||
[Serializable]
|
||||
public partial class IgnoreLine
|
||||
{
|
||||
@@ -1191,21 +1177,12 @@ namespace Baseline
|
||||
public IgnoreLines()
|
||||
{
|
||||
}
|
||||
public void Add(string text, Relation searchType, bool active)
|
||||
{
|
||||
Add(new IgnoreLine(text, searchType, active));
|
||||
}
|
||||
// Convert IgnoreLines to string (XML)
|
||||
public override string ToString()
|
||||
{
|
||||
return GenericSerializer<IgnoreLines>.StringSerialize(this);
|
||||
}
|
||||
// Convert string to IgnoreLines
|
||||
public static IgnoreLines Get(string xml)
|
||||
{
|
||||
return GenericSerializer<IgnoreLines>.StringDeserialize(xml);
|
||||
}
|
||||
}
|
||||
public void Add(string text, Relation searchType, bool active) => Add(new IgnoreLine(text, searchType, active));
|
||||
// Convert IgnoreLines to string (XML)
|
||||
public override string ToString() => GenericSerializer<IgnoreLines>.StringSerialize(this);
|
||||
// Convert string to IgnoreLines
|
||||
public static IgnoreLines Get(string xml) => GenericSerializer<IgnoreLines>.StringDeserialize(xml);
|
||||
}
|
||||
/// <summary>
|
||||
/// This is a simple serializer that takes a class and converts it to and from string (XML)
|
||||
/// </summary>
|
||||
@@ -1233,7 +1210,7 @@ namespace Baseline
|
||||
string ss = s.Replace("encoding=\"utf-16\"", "");
|
||||
XmlSerializer xs = new XmlSerializer(typeof(T));
|
||||
UTF8Encoding enc = new UTF8Encoding();
|
||||
Byte[] arrBytData = enc.GetBytes(ss);
|
||||
byte[] arrBytData = enc.GetBytes(ss);
|
||||
using (MemoryStream ms = new MemoryStream(arrBytData))
|
||||
{
|
||||
t = (T)xs.Deserialize(ms);
|
||||
@@ -1247,12 +1224,9 @@ namespace Baseline
|
||||
public class NonXsiTextWriter : XmlTextWriter
|
||||
{
|
||||
public NonXsiTextWriter(TextWriter w) : base(w) { }
|
||||
public NonXsiTextWriter(Stream w, Encoding encoding)
|
||||
: base(w, encoding)
|
||||
{
|
||||
this.Formatting = Formatting.Indented;
|
||||
}
|
||||
public NonXsiTextWriter(string filename, Encoding encoding) : base(filename, encoding) { }
|
||||
public NonXsiTextWriter(Stream w, Encoding encoding)
|
||||
: base(w, encoding) => Formatting = Formatting.Indented;
|
||||
public NonXsiTextWriter(string filename, Encoding encoding) : base(filename, encoding) { }
|
||||
bool _skip = false;
|
||||
public override void WriteStartAttribute(string prefix, string localName, string ns)
|
||||
{
|
||||
@@ -1294,32 +1268,16 @@ namespace Baseline
|
||||
public const short SWP_NOZORDER = 0X4;
|
||||
public const int SWP_SHOWWINDOW = 0x0040;
|
||||
|
||||
private System.Diagnostics.Process _Process;
|
||||
|
||||
public System.Diagnostics.Process Process
|
||||
{
|
||||
get { return _Process; }
|
||||
set { _Process = value; }
|
||||
}
|
||||
private int _X;
|
||||
public int X
|
||||
{
|
||||
get { return _X; }
|
||||
set { _X = value; }
|
||||
}
|
||||
private int _Y;
|
||||
public int Y
|
||||
{
|
||||
get { return _Y; }
|
||||
set { _Y = value; }
|
||||
}
|
||||
public ProcessLocation(System.Diagnostics.Process process, int x, int y)
|
||||
public System.Diagnostics.Process Process { get; set; }
|
||||
public int X { get; set; }
|
||||
public int Y { get; set; }
|
||||
public ProcessLocation(System.Diagnostics.Process process, int x, int y)
|
||||
{
|
||||
Process = process;
|
||||
X = x;
|
||||
Y = y;
|
||||
}
|
||||
private static Boolean FoxitSettingInfo = true;
|
||||
private static bool FoxitSettingInfo = true;
|
||||
|
||||
/// <summary>
|
||||
/// MoveIt() moves the window containing the PDF viewer to the right so the two pdf viewer windows will not overlap.
|
||||
@@ -1340,11 +1298,8 @@ namespace Baseline
|
||||
}
|
||||
public class ProcessLocationQueue: Queue<ProcessLocation>
|
||||
{
|
||||
public void Add(System.Diagnostics.Process process, int x, int y)
|
||||
{
|
||||
Enqueue(new ProcessLocation(process,x,y));
|
||||
}
|
||||
public void ProcessNext()
|
||||
public void Add(System.Diagnostics.Process process, int x, int y) => Enqueue(new ProcessLocation(process, x, y));
|
||||
public void ProcessNext()
|
||||
{
|
||||
ProcessLocation pl = Dequeue();
|
||||
pl.MoveIt();
|
||||
|
||||
@@ -1,11 +1,4 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Data;
|
||||
using System.Drawing;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace Baseline
|
||||
@@ -19,17 +12,7 @@ namespace Baseline
|
||||
set {
|
||||
_MyIgnore = value;
|
||||
dgv.DataSource=null;
|
||||
//dgvcSearchType.ValueType = typeof(Relation);
|
||||
//dgvcSearchType.ValueMember = "Value";
|
||||
//dgvcSearchType.DisplayMember = "Display";
|
||||
//dgvcSearchType.DataSource = new Relation[] { Relation.Contains, Relation.StartsWith, Relation.EndsWith, Relation.Regex }
|
||||
//.Select(x => new { Display = x.ToString(), Value = x })
|
||||
//.ToList();
|
||||
dgv.DataSource=value;
|
||||
//dgvcSearchType.DataSource =
|
||||
//new List<Relation>((Relation[]) Enum.GetValues(typeof(Relation)))
|
||||
//.Select(x => new { Display=x.ToString(), Value=(int)x })
|
||||
//.ToList();;
|
||||
}
|
||||
}
|
||||
public frmSettings(IgnoreLines myIgnore)
|
||||
@@ -46,19 +29,16 @@ namespace Baseline
|
||||
col.ValueType = typeof(Relation);
|
||||
}
|
||||
|
||||
private void dgv_DataError(object sender, DataGridViewDataErrorEventArgs e)
|
||||
private void dgv_DataError(object sender, DataGridViewDataErrorEventArgs e) => Console.WriteLine("Here");
|
||||
private void btnOK_Click(object sender, EventArgs e)
|
||||
{
|
||||
Console.WriteLine("Here");
|
||||
}
|
||||
private void btnOK_Click(object sender, EventArgs e)
|
||||
{
|
||||
this.DialogResult = System.Windows.Forms.DialogResult.OK;
|
||||
this.Close();
|
||||
DialogResult = System.Windows.Forms.DialogResult.OK;
|
||||
Close();
|
||||
}
|
||||
private void btnCancel_Click(object sender, EventArgs e)
|
||||
{
|
||||
this.DialogResult = System.Windows.Forms.DialogResult.Cancel;
|
||||
this.Close();
|
||||
DialogResult = System.Windows.Forms.DialogResult.Cancel;
|
||||
Close();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
using System;
|
||||
using System.ComponentModel;
|
||||
using System.Diagnostics;
|
||||
using System.Drawing;
|
||||
using System.Windows.Forms;
|
||||
|
||||
@@ -15,7 +14,7 @@ namespace AT.STO.UI.Win
|
||||
{
|
||||
#region Private Variable Declarations
|
||||
private IDropDownAware _dropDownControl = null;
|
||||
private DropDownWindowHelper _dropDownHelper = null;
|
||||
private readonly DropDownWindowHelper _dropDownHelper = null;
|
||||
private Form _owner = null;
|
||||
#endregion
|
||||
#region Constructor / Destructor
|
||||
@@ -47,7 +46,7 @@ namespace AT.STO.UI.Win
|
||||
/// <param name="e"></param>
|
||||
protected override void OnHandleCreated(EventArgs e)
|
||||
{
|
||||
_owner = this.FindForm();
|
||||
_owner = FindForm();
|
||||
_dropDownHelper.ReleaseHandle();
|
||||
|
||||
if (_owner != null)
|
||||
@@ -66,8 +65,8 @@ namespace AT.STO.UI.Win
|
||||
{
|
||||
base.OnResize(e);
|
||||
combo.Location = new Point(0, 0);
|
||||
combo.Width = this.ClientRectangle.Width;
|
||||
this.Height = combo.Height;
|
||||
combo.Width = ClientRectangle.Width;
|
||||
Height = combo.Height;
|
||||
}
|
||||
#endregion
|
||||
#region Event Handler
|
||||
@@ -96,7 +95,7 @@ namespace AT.STO.UI.Win
|
||||
else
|
||||
{
|
||||
_dropDownHelper.CloseDropDown();
|
||||
this.Focus();
|
||||
Focus();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -115,7 +114,7 @@ namespace AT.STO.UI.Win
|
||||
|
||||
private void DropDownHelper_DropDownCancel(object sender, DropDownCancelEventArgs e)
|
||||
{
|
||||
if (this.Bounds.Contains(Parent.PointToClient(e.CursorLocation)))
|
||||
if (Bounds.Contains(Parent.PointToClient(e.CursorLocation)))
|
||||
{
|
||||
e.Cancel = true;
|
||||
}
|
||||
@@ -137,31 +136,22 @@ namespace AT.STO.UI.Win
|
||||
{
|
||||
SetValue<long>(e.Value as ILookupItem<long>);
|
||||
}
|
||||
|
||||
if (this.FinishEditing != null)
|
||||
{
|
||||
this.FinishEditing(this, e);
|
||||
}
|
||||
|
||||
_dropDownControl.FinishEditing -= new DropDownValueChangedEventHandler(DropDown_FinishEditing);
|
||||
|
||||
FinishEditing?.Invoke(this, e);
|
||||
|
||||
_dropDownControl.FinishEditing -= new DropDownValueChangedEventHandler(DropDown_FinishEditing);
|
||||
_dropDownControl.ValueChanged -= new DropDownValueChangedEventHandler(DropDown_ValueChanged);
|
||||
_dropDownHelper.CloseDropDown();
|
||||
}
|
||||
|
||||
private void DropDown_ValueChanged(object sender, DropDownValueChangedEventArgs e)
|
||||
{
|
||||
if (this.ValueChanged != null)
|
||||
{
|
||||
this.ValueChanged(this, e);
|
||||
}
|
||||
}
|
||||
#endregion
|
||||
#region Public Properties
|
||||
/// <summary>
|
||||
/// Get or set the control (has to implement IDropDownAware) that is to
|
||||
/// be displayed as the dropdown portion of the combobox.
|
||||
/// </summary>
|
||||
[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
|
||||
|
||||
private void DropDown_ValueChanged(object sender, DropDownValueChangedEventArgs e) => ValueChanged?.Invoke(this, e);
|
||||
#endregion
|
||||
#region Public Properties
|
||||
/// <summary>
|
||||
/// Get or set the control (has to implement IDropDownAware) that is to
|
||||
/// be displayed as the dropdown portion of the combobox.
|
||||
/// </summary>
|
||||
[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
|
||||
public IDropDownAware DropDownControl
|
||||
{
|
||||
get { return _dropDownControl; }
|
||||
@@ -169,24 +159,21 @@ namespace AT.STO.UI.Win
|
||||
{
|
||||
_dropDownControl = value;
|
||||
|
||||
this.Controls.Add(_dropDownControl as Control);
|
||||
Controls.Add(_dropDownControl as Control);
|
||||
}
|
||||
}
|
||||
#endregion
|
||||
#region Public Methods
|
||||
public override string ToString()
|
||||
{
|
||||
return this.Name;
|
||||
}
|
||||
#endregion
|
||||
#region Private Methods
|
||||
/// <summary>
|
||||
/// Calculate an acceptable position of the DropDownForm even in a
|
||||
/// multi screen environment.
|
||||
/// </summary>
|
||||
/// <param name="DropDown"></param>
|
||||
/// <returns></returns>
|
||||
private Point GetDropDownPosition(DropDownForm DropDown)
|
||||
#endregion
|
||||
#region Public Methods
|
||||
public override string ToString() => Name;
|
||||
#endregion
|
||||
#region Private Methods
|
||||
/// <summary>
|
||||
/// Calculate an acceptable position of the DropDownForm even in a
|
||||
/// multi screen environment.
|
||||
/// </summary>
|
||||
/// <param name="DropDown"></param>
|
||||
/// <returns></returns>
|
||||
private Point GetDropDownPosition(DropDownForm DropDown)
|
||||
{
|
||||
Point lt = Parent.PointToScreen(new Point(Left, Top));
|
||||
Point rb = Parent.PointToScreen(new Point(Right, Bottom));
|
||||
|
||||
@@ -35,10 +35,9 @@ namespace AT.STO.UI.Win
|
||||
/// </summary>
|
||||
public class DropDownCancelEventArgs : EventArgs
|
||||
{
|
||||
#region Private Variable Declarations
|
||||
private bool _cancel = false;
|
||||
private Point _cursorLocation;
|
||||
private Form _dropDown = null;
|
||||
#region Private Variable Declarations
|
||||
private Point _cursorLocation;
|
||||
private readonly Form _dropDown = null;
|
||||
#endregion
|
||||
#region Constructor / Destructor
|
||||
/// <summary>
|
||||
@@ -51,36 +50,26 @@ namespace AT.STO.UI.Win
|
||||
{
|
||||
_dropDown = DropDown;
|
||||
_cursorLocation = CursorLocation;
|
||||
_cancel = false;
|
||||
}
|
||||
#endregion
|
||||
#region Public Properties
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public bool Cancel
|
||||
{
|
||||
get { return _cancel; }
|
||||
set { _cancel = value; }
|
||||
Cancel = false;
|
||||
}
|
||||
#endregion
|
||||
#region Public Properties
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public bool Cancel { get; set; } = false;
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public Point CursorLocation
|
||||
{
|
||||
get { return _cursorLocation; }
|
||||
}
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public Point CursorLocation => _cursorLocation;
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public Form DropDown
|
||||
{
|
||||
get { return _dropDown; }
|
||||
}
|
||||
#endregion
|
||||
}
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public Form DropDown => _dropDown;
|
||||
#endregion
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Contains event information for a <see cref="DropDownClosed"/> event.
|
||||
@@ -91,64 +80,50 @@ namespace AT.STO.UI.Win
|
||||
public class DropDownClosedEventArgs : EventArgs
|
||||
{
|
||||
#region Private Variable Declarations
|
||||
private Form _dropDown = null;
|
||||
#endregion
|
||||
#region Constructor / Destructor
|
||||
/// <summary>
|
||||
/// Constructs a new instance of this class for the specified
|
||||
/// popup form.
|
||||
/// </summary>
|
||||
/// <param name="DropDown">DropDown Form which is being closed.</param>
|
||||
public DropDownClosedEventArgs(Form DropDown)
|
||||
{
|
||||
_dropDown = DropDown;
|
||||
}
|
||||
#endregion
|
||||
#region Public Properties
|
||||
/// <summary>
|
||||
/// Gets the dropdown form which is being closed.
|
||||
/// </summary>
|
||||
public Form DropDown
|
||||
{
|
||||
get { return _dropDown; }
|
||||
}
|
||||
#endregion
|
||||
}
|
||||
private readonly Form _dropDown = null;
|
||||
#endregion
|
||||
#region Constructor / Destructor
|
||||
/// <summary>
|
||||
/// Constructs a new instance of this class for the specified
|
||||
/// popup form.
|
||||
/// </summary>
|
||||
/// <param name="DropDown">DropDown Form which is being closed.</param>
|
||||
public DropDownClosedEventArgs(Form DropDown) => _dropDown = DropDown;
|
||||
#endregion
|
||||
#region Public Properties
|
||||
/// <summary>
|
||||
/// Gets the dropdown form which is being closed.
|
||||
/// </summary>
|
||||
public Form DropDown => _dropDown;
|
||||
#endregion
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Contains event information for DropDownValueChangedEventHandler.
|
||||
/// </summary>
|
||||
public class DropDownValueChangedEventArgs : EventArgs
|
||||
{
|
||||
#region Private Variable Declarations
|
||||
private object _value = null;
|
||||
#endregion
|
||||
#region Constructor / Destructor
|
||||
/// <summary>
|
||||
/// Default Constructor
|
||||
/// </summary>
|
||||
public DropDownValueChangedEventArgs()
|
||||
#region Private Variable Declarations
|
||||
#endregion
|
||||
#region Constructor / Destructor
|
||||
/// <summary>
|
||||
/// Default Constructor
|
||||
/// </summary>
|
||||
public DropDownValueChangedEventArgs()
|
||||
{
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Initialization with the control's value.
|
||||
/// </summary>
|
||||
/// <param name="Value"></param>
|
||||
public DropDownValueChangedEventArgs(object Value)
|
||||
{
|
||||
_value = Value;
|
||||
}
|
||||
#endregion
|
||||
#region Public Properties
|
||||
/// <summary>
|
||||
/// Gets or sets the control's value.
|
||||
/// </summary>
|
||||
public object Value
|
||||
{
|
||||
get { return _value; }
|
||||
set { _value = value; }
|
||||
}
|
||||
#endregion
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Initialization with the control's value.
|
||||
/// </summary>
|
||||
/// <param name="Value"></param>
|
||||
public DropDownValueChangedEventArgs(object Value) => this.Value = Value;
|
||||
#endregion
|
||||
#region Public Properties
|
||||
/// <summary>
|
||||
/// Gets or sets the control's value.
|
||||
/// </summary>
|
||||
public object Value { get; set; } = null;
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
|
||||
@@ -13,22 +13,19 @@ namespace AT.STO.UI.Win
|
||||
internal partial class DropDownForm : Form, IDropDownAware
|
||||
{
|
||||
#region Private Variable Declaration
|
||||
private IDropDownAware _control = null;
|
||||
#endregion
|
||||
#region Constructor / Destructor
|
||||
/// <summary>
|
||||
/// Default Constructor
|
||||
/// </summary>
|
||||
public DropDownForm()
|
||||
{
|
||||
InitializeComponent();
|
||||
}
|
||||
private readonly IDropDownAware _control = null;
|
||||
#endregion
|
||||
#region Constructor / Destructor
|
||||
/// <summary>
|
||||
/// Default Constructor
|
||||
/// </summary>
|
||||
public DropDownForm() => InitializeComponent();
|
||||
|
||||
/// <summary>
|
||||
/// Constructor to initialize the for with the control to display.
|
||||
/// </summary>
|
||||
/// <param name="Ctrl">The control to display.</param>
|
||||
public DropDownForm(IDropDownAware Ctrl) : this()
|
||||
/// <summary>
|
||||
/// Constructor to initialize the for with the control to display.
|
||||
/// </summary>
|
||||
/// <param name="Ctrl">The control to display.</param>
|
||||
public DropDownForm(IDropDownAware Ctrl) : this()
|
||||
{
|
||||
if (Ctrl != null)
|
||||
{
|
||||
@@ -41,7 +38,7 @@ namespace AT.STO.UI.Win
|
||||
#region Form Events
|
||||
protected override void OnClosing(CancelEventArgs e)
|
||||
{
|
||||
this.Controls.Remove(_control as Control);
|
||||
Controls.Remove(_control as Control);
|
||||
base.OnClosing(e);
|
||||
}
|
||||
|
||||
@@ -58,29 +55,20 @@ namespace AT.STO.UI.Win
|
||||
#region Event Handler
|
||||
private void Ctrl_FinishEditing(object sender, DropDownValueChangedEventArgs e)
|
||||
{
|
||||
if (this.FinishEditing != null)
|
||||
{
|
||||
this.FinishEditing(this, e);
|
||||
}
|
||||
FinishEditing?.Invoke(this, e);
|
||||
|
||||
_control.FinishEditing -= new DropDownValueChangedEventHandler(Ctrl_FinishEditing);
|
||||
_control.FinishEditing -= new DropDownValueChangedEventHandler(Ctrl_FinishEditing);
|
||||
_control.ValueChanged -= new DropDownValueChangedEventHandler(Ctrl_ValueChanged);
|
||||
}
|
||||
|
||||
private void Ctrl_ValueChanged(object sender, DropDownValueChangedEventArgs e)
|
||||
{
|
||||
if (this.ValueChanged != null)
|
||||
{
|
||||
this.ValueChanged(this, e);
|
||||
}
|
||||
}
|
||||
#endregion
|
||||
#region IDropDownAware Implementation
|
||||
/// <summary>
|
||||
/// Fired either on OK, Cancel or a click outside the control to indicate
|
||||
/// that the user has finished editing.
|
||||
/// </summary>
|
||||
public event DropDownValueChangedEventHandler FinishEditing;
|
||||
|
||||
private void Ctrl_ValueChanged(object sender, DropDownValueChangedEventArgs e) => ValueChanged?.Invoke(this, e);
|
||||
#endregion
|
||||
#region IDropDownAware Implementation
|
||||
/// <summary>
|
||||
/// Fired either on OK, Cancel or a click outside the control to indicate
|
||||
/// that the user has finished editing.
|
||||
/// </summary>
|
||||
public event DropDownValueChangedEventHandler FinishEditing;
|
||||
|
||||
/// <summary>
|
||||
/// Fired on any change of the controls's value during the editing process.
|
||||
@@ -100,15 +88,15 @@ namespace AT.STO.UI.Win
|
||||
private void InitializeControl(Control Ctrl)
|
||||
{
|
||||
Size size = Ctrl.Size;
|
||||
Size inner = this.ClientRectangle.Size;
|
||||
Size outer = this.Size;
|
||||
Size inner = ClientRectangle.Size;
|
||||
Size outer = Size;
|
||||
int gap = outer.Width - inner.Width;
|
||||
|
||||
size.Width += gap;
|
||||
size.Height += gap;
|
||||
|
||||
this.Size = size;
|
||||
this.Controls.Add(Ctrl);
|
||||
Size = size;
|
||||
Controls.Add(Ctrl);
|
||||
Ctrl.Location = new Point(0, 0);
|
||||
Ctrl.Visible = true;
|
||||
Ctrl.Invalidate();
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
using System;
|
||||
using System.Drawing;
|
||||
using System.Windows.Forms;
|
||||
|
||||
@@ -21,59 +20,48 @@ namespace AT.STO.UI.Win
|
||||
private const int WM_NCLBUTTONDOWN = 0x0A1;
|
||||
private const int WM_NCRBUTTONDOWN = 0x0A4;
|
||||
private const int WM_NCMBUTTONDOWN = 0x0A7;
|
||||
#endregion
|
||||
#region Private Variable Declarations
|
||||
private Form _dropDown = null;
|
||||
private DropDownWindowHelper _owner = null;
|
||||
#endregion
|
||||
#region Private Variable Declarations
|
||||
private readonly DropDownWindowHelper _owner = null;
|
||||
#endregion
|
||||
#region Event Declarations
|
||||
public event DropDownCancelEventHandler DropDownCancel;
|
||||
#endregion
|
||||
#region Constructor / Destructor
|
||||
/// <summary>
|
||||
/// Constructs a new instance of this class and sets the owning
|
||||
/// object.
|
||||
/// </summary>
|
||||
/// <param name="Owner">The <see cref="DropDownWindowHelper"/> object
|
||||
/// which owns this class.</param>
|
||||
public DropDownMessageFilter(DropDownWindowHelper Owner)
|
||||
{
|
||||
_owner = Owner;
|
||||
}
|
||||
#endregion
|
||||
#region Public Properties
|
||||
/// <summary>
|
||||
/// Gets/sets the dropdown form which is being displayed.
|
||||
/// </summary>
|
||||
public Form DropDown
|
||||
{
|
||||
get { return _dropDown; }
|
||||
set { _dropDown = value; }
|
||||
}
|
||||
#endregion
|
||||
#region Private Methods
|
||||
private void OnMouseDown()
|
||||
#endregion
|
||||
#region Constructor / Destructor
|
||||
/// <summary>
|
||||
/// Constructs a new instance of this class and sets the owning
|
||||
/// object.
|
||||
/// </summary>
|
||||
/// <param name="Owner">The <see cref="DropDownWindowHelper"/> object
|
||||
/// which owns this class.</param>
|
||||
public DropDownMessageFilter(DropDownWindowHelper Owner) => _owner = Owner;
|
||||
#endregion
|
||||
#region Public Properties
|
||||
/// <summary>
|
||||
/// Gets/sets the dropdown form which is being displayed.
|
||||
/// </summary>
|
||||
public Form DropDown { get; set; } = null;
|
||||
#endregion
|
||||
#region Private Methods
|
||||
private void OnMouseDown()
|
||||
{
|
||||
Point cursorPos = Cursor.Position; // Get the cursor location
|
||||
|
||||
if (!_dropDown.Bounds.Contains(cursorPos)) // Check if it is within the popup form
|
||||
if (!DropDown.Bounds.Contains(cursorPos)) // Check if it is within the popup form
|
||||
{
|
||||
OnDropDownCancel(new DropDownCancelEventArgs(_dropDown, cursorPos)); // If not, then call to see if it should be closed
|
||||
OnDropDownCancel(new DropDownCancelEventArgs(DropDown, cursorPos)); // If not, then call to see if it should be closed
|
||||
}
|
||||
}
|
||||
#endregion
|
||||
#region DropDownCancelEvent Implementation
|
||||
protected virtual void OnDropDownCancel(DropDownCancelEventArgs e)
|
||||
{
|
||||
if (this.DropDownCancel != null)
|
||||
{
|
||||
this.DropDownCancel(this, e);
|
||||
}
|
||||
DropDownCancel?.Invoke(this, e);
|
||||
|
||||
if (!e.Cancel)
|
||||
if (!e.Cancel)
|
||||
{
|
||||
_owner.CloseDropDown();
|
||||
_dropDown = null; // Clear reference for GC
|
||||
DropDown = null; // Clear reference for GC
|
||||
}
|
||||
}
|
||||
#endregion
|
||||
@@ -90,7 +78,7 @@ namespace AT.STO.UI.Win
|
||||
/// This implementation always returns <c>false</c>.</returns>
|
||||
public bool PreFilterMessage(ref Message m)
|
||||
{
|
||||
if (_dropDown != null)
|
||||
if (DropDown != null)
|
||||
{
|
||||
switch (m.Msg)
|
||||
{
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
using System;
|
||||
using System.Drawing;
|
||||
using System.Runtime.InteropServices;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace AT.STO.UI.Win
|
||||
@@ -22,7 +21,7 @@ namespace AT.STO.UI.Win
|
||||
|
||||
private Form _dropDown = null;
|
||||
private bool _dropDownShowing = false;
|
||||
private DropDownMessageFilter _filter = null;
|
||||
private readonly DropDownMessageFilter _filter = null;
|
||||
private Form _owner = null;
|
||||
private bool _skipClose = false;
|
||||
#endregion
|
||||
@@ -42,31 +41,25 @@ namespace AT.STO.UI.Win
|
||||
_filter.DropDownCancel -= new DropDownCancelEventHandler(Popup_Cancel);
|
||||
_filter.DropDownCancel += new DropDownCancelEventHandler(Popup_Cancel);
|
||||
}
|
||||
#endregion
|
||||
#region Event Handler
|
||||
private void Popup_Cancel(object sender, DropDownCancelEventArgs e)
|
||||
{
|
||||
OnDropDownCancel(e);
|
||||
}
|
||||
#endregion
|
||||
#region Event Handler
|
||||
private void Popup_Cancel(object sender, DropDownCancelEventArgs e) => OnDropDownCancel(e);
|
||||
|
||||
/// <summary>
|
||||
/// Responds to the <see cref="System.Windows.Forms.Form.Closed"/>
|
||||
/// event from the popup form.
|
||||
/// </summary>
|
||||
/// <param name="sender">Popup form that has been closed.</param>
|
||||
/// <param name="e">Not used.</param>
|
||||
private void Popup_Closed(object sender, EventArgs e)
|
||||
{
|
||||
CloseDropDown();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Subclasses the owning form's existing Window Procedure to enables the
|
||||
/// title bar to remain active when a popup is show, and to detect if
|
||||
/// the user clicks onto another application whilst the popup is visible.
|
||||
/// </summary>
|
||||
/// <param name="m">Window Procedure Message</param>
|
||||
protected override void WndProc(ref Message m)
|
||||
/// <summary>
|
||||
/// Responds to the <see cref="System.Windows.Forms.Form.Closed"/>
|
||||
/// event from the popup form.
|
||||
/// </summary>
|
||||
/// <param name="sender">Popup form that has been closed.</param>
|
||||
/// <param name="e">Not used.</param>
|
||||
private void Popup_Closed(object sender, EventArgs e) => CloseDropDown();
|
||||
|
||||
/// <summary>
|
||||
/// Subclasses the owning form's existing Window Procedure to enables the
|
||||
/// title bar to remain active when a popup is show, and to detect if
|
||||
/// the user clicks onto another application whilst the popup is visible.
|
||||
/// </summary>
|
||||
/// <param name="m">Window Procedure Message</param>
|
||||
protected override void WndProc(ref Message m)
|
||||
{
|
||||
base.WndProc(ref m);
|
||||
|
||||
@@ -76,7 +69,7 @@ namespace AT.STO.UI.Win
|
||||
{
|
||||
if (((int)m.WParam) == 0) // Check if the title bar will made inactive:
|
||||
{ // Note it's no good to try and consume this message; if you try to do that you'll end up with windows
|
||||
UIApiCalls.SendMessage(this.Handle, UIApiCalls.WM_NCACTIVATE, 1, IntPtr.Zero); // If so reactivate it.
|
||||
UIApiCalls.SendMessage(Handle, UIApiCalls.WM_NCACTIVATE, 1, IntPtr.Zero); // If so reactivate it.
|
||||
}
|
||||
}
|
||||
else if (m.Msg == UIApiCalls.WM_ACTIVATEAPP)
|
||||
@@ -84,7 +77,7 @@ namespace AT.STO.UI.Win
|
||||
if ((int)m.WParam == 0) // Check if the application is being deactivated.
|
||||
{
|
||||
CloseDropDown(); // It is so cancel the popup:
|
||||
UIApiCalls.PostMessage(this.Handle, UIApiCalls.WM_NCACTIVATE, 0, IntPtr.Zero); // And put the title bar into the inactive state:
|
||||
UIApiCalls.PostMessage(Handle, UIApiCalls.WM_NCACTIVATE, 0, IntPtr.Zero); // And put the title bar into the inactive state:
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -168,22 +161,19 @@ namespace AT.STO.UI.Win
|
||||
_owner = null;
|
||||
}
|
||||
}
|
||||
#endregion
|
||||
#region Public Properties
|
||||
/// <summary>
|
||||
/// Indicator weither the DropDown is showing.
|
||||
/// </summary>
|
||||
public bool DropDownShowing
|
||||
#endregion
|
||||
#region Public Properties
|
||||
/// <summary>
|
||||
/// Indicator weither the DropDown is showing.
|
||||
/// </summary>
|
||||
public bool DropDownShowing => _dropDownShowing;
|
||||
#endregion
|
||||
#region Event Implementation
|
||||
protected virtual void OnDropDownCancel(DropDownCancelEventArgs e)
|
||||
{
|
||||
get { return _dropDownShowing; }
|
||||
}
|
||||
#endregion
|
||||
#region Event Implementation
|
||||
protected virtual void OnDropDownCancel(DropDownCancelEventArgs e)
|
||||
{
|
||||
if (this.DropDownCancel != null)
|
||||
if (DropDownCancel != null)
|
||||
{
|
||||
this.DropDownCancel(this, e);
|
||||
DropDownCancel(this, e);
|
||||
|
||||
if (!e.Cancel)
|
||||
{
|
||||
@@ -191,14 +181,8 @@ namespace AT.STO.UI.Win
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
protected virtual void OnPDropDownClosed(DropDownClosedEventArgs e)
|
||||
{
|
||||
if (this.DropDownClosed != null)
|
||||
{
|
||||
this.DropDownClosed(this, e);
|
||||
}
|
||||
}
|
||||
#endregion
|
||||
}
|
||||
|
||||
protected virtual void OnPDropDownClosed(DropDownClosedEventArgs e) => DropDownClosed?.Invoke(this, e);
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,5 +1,3 @@
|
||||
using System;
|
||||
|
||||
namespace AT.STO.UI.Win
|
||||
{
|
||||
/// <summary>
|
||||
|
||||
@@ -1,5 +1,3 @@
|
||||
using System;
|
||||
|
||||
namespace AT.STO.UI.Win
|
||||
{
|
||||
public interface ILookupItem<T> where T: struct
|
||||
|
||||
@@ -1,8 +1,6 @@
|
||||
using System;
|
||||
using System.Diagnostics;
|
||||
using System.Drawing;
|
||||
using System.Globalization;
|
||||
//using System.Linq;
|
||||
using System.Windows.Forms;
|
||||
|
||||
|
||||
@@ -121,10 +119,7 @@ namespace JR.Utils.GUI.Forms
|
||||
/// </summary>
|
||||
/// <param name="text">The text.</param>
|
||||
/// <returns>The dialog result.</returns>
|
||||
public static DialogResult Show(string text)
|
||||
{
|
||||
return FlexibleMessageBoxForm.Show(null, text, string.Empty, MessageBoxButtons.OK, MessageBoxIcon.None, MessageBoxDefaultButton.Button1);
|
||||
}
|
||||
public static DialogResult Show(string text) => FlexibleMessageBoxForm.Show(null, text, string.Empty, MessageBoxButtons.OK, MessageBoxIcon.None, MessageBoxDefaultButton.Button1);
|
||||
|
||||
/// <summary>
|
||||
/// Shows the specified message box.
|
||||
@@ -132,10 +127,7 @@ namespace JR.Utils.GUI.Forms
|
||||
/// <param name="owner">The owner.</param>
|
||||
/// <param name="text">The text.</param>
|
||||
/// <returns>The dialog result.</returns>
|
||||
public static DialogResult Show(IWin32Window owner, string text)
|
||||
{
|
||||
return FlexibleMessageBoxForm.Show(owner, text, string.Empty, MessageBoxButtons.OK, MessageBoxIcon.None, MessageBoxDefaultButton.Button1);
|
||||
}
|
||||
public static DialogResult Show(IWin32Window owner, string text) => FlexibleMessageBoxForm.Show(owner, text, string.Empty, MessageBoxButtons.OK, MessageBoxIcon.None, MessageBoxDefaultButton.Button1);
|
||||
|
||||
/// <summary>
|
||||
/// Shows the specified message box.
|
||||
@@ -143,10 +135,7 @@ namespace JR.Utils.GUI.Forms
|
||||
/// <param name="text">The text.</param>
|
||||
/// <param name="caption">The caption.</param>
|
||||
/// <returns>The dialog result.</returns>
|
||||
public static DialogResult Show(string text, string caption)
|
||||
{
|
||||
return FlexibleMessageBoxForm.Show(null, text, caption, MessageBoxButtons.OK, MessageBoxIcon.None, MessageBoxDefaultButton.Button1);
|
||||
}
|
||||
public static DialogResult Show(string text, string caption) => FlexibleMessageBoxForm.Show(null, text, caption, MessageBoxButtons.OK, MessageBoxIcon.None, MessageBoxDefaultButton.Button1);
|
||||
|
||||
/// <summary>
|
||||
/// Shows the specified message box.
|
||||
@@ -155,10 +144,7 @@ namespace JR.Utils.GUI.Forms
|
||||
/// <param name="text">The text.</param>
|
||||
/// <param name="caption">The caption.</param>
|
||||
/// <returns>The dialog result.</returns>
|
||||
public static DialogResult Show(IWin32Window owner, string text, string caption)
|
||||
{
|
||||
return FlexibleMessageBoxForm.Show(owner, text, caption, MessageBoxButtons.OK, MessageBoxIcon.None, MessageBoxDefaultButton.Button1);
|
||||
}
|
||||
public static DialogResult Show(IWin32Window owner, string text, string caption) => FlexibleMessageBoxForm.Show(owner, text, caption, MessageBoxButtons.OK, MessageBoxIcon.None, MessageBoxDefaultButton.Button1);
|
||||
|
||||
/// <summary>
|
||||
/// Shows the specified message box.
|
||||
@@ -167,10 +153,7 @@ namespace JR.Utils.GUI.Forms
|
||||
/// <param name="caption">The caption.</param>
|
||||
/// <param name="buttons">The buttons.</param>
|
||||
/// <returns>The dialog result.</returns>
|
||||
public static DialogResult Show(string text, string caption, MessageBoxButtons buttons)
|
||||
{
|
||||
return FlexibleMessageBoxForm.Show(null, text, caption, buttons, MessageBoxIcon.None, MessageBoxDefaultButton.Button1);
|
||||
}
|
||||
public static DialogResult Show(string text, string caption, MessageBoxButtons buttons) => FlexibleMessageBoxForm.Show(null, text, caption, buttons, MessageBoxIcon.None, MessageBoxDefaultButton.Button1);
|
||||
|
||||
/// <summary>
|
||||
/// Shows the specified message box.
|
||||
@@ -180,10 +163,7 @@ namespace JR.Utils.GUI.Forms
|
||||
/// <param name="caption">The caption.</param>
|
||||
/// <param name="buttons">The buttons.</param>
|
||||
/// <returns>The dialog result.</returns>
|
||||
public static DialogResult Show(IWin32Window owner, string text, string caption, MessageBoxButtons buttons)
|
||||
{
|
||||
return FlexibleMessageBoxForm.Show(owner, text, caption, buttons, MessageBoxIcon.None, MessageBoxDefaultButton.Button1);
|
||||
}
|
||||
public static DialogResult Show(IWin32Window owner, string text, string caption, MessageBoxButtons buttons) => FlexibleMessageBoxForm.Show(owner, text, caption, buttons, MessageBoxIcon.None, MessageBoxDefaultButton.Button1);
|
||||
|
||||
/// <summary>
|
||||
/// Shows the specified message box.
|
||||
@@ -193,10 +173,7 @@ namespace JR.Utils.GUI.Forms
|
||||
/// <param name="buttons">The buttons.</param>
|
||||
/// <param name="icon">The icon.</param>
|
||||
/// <returns></returns>
|
||||
public static DialogResult Show(string text, string caption, MessageBoxButtons buttons, MessageBoxIcon icon)
|
||||
{
|
||||
return FlexibleMessageBoxForm.Show(null, text, caption, buttons, icon, MessageBoxDefaultButton.Button1);
|
||||
}
|
||||
public static DialogResult Show(string text, string caption, MessageBoxButtons buttons, MessageBoxIcon icon) => FlexibleMessageBoxForm.Show(null, text, caption, buttons, icon, MessageBoxDefaultButton.Button1);
|
||||
|
||||
/// <summary>
|
||||
/// Shows the specified message box.
|
||||
@@ -207,10 +184,7 @@ namespace JR.Utils.GUI.Forms
|
||||
/// <param name="buttons">The buttons.</param>
|
||||
/// <param name="icon">The icon.</param>
|
||||
/// <returns>The dialog result.</returns>
|
||||
public static DialogResult Show(IWin32Window owner, string text, string caption, MessageBoxButtons buttons, MessageBoxIcon icon)
|
||||
{
|
||||
return FlexibleMessageBoxForm.Show(owner, text, caption, buttons, icon, MessageBoxDefaultButton.Button1);
|
||||
}
|
||||
public static DialogResult Show(IWin32Window owner, string text, string caption, MessageBoxButtons buttons, MessageBoxIcon icon) => FlexibleMessageBoxForm.Show(owner, text, caption, buttons, icon, MessageBoxDefaultButton.Button1);
|
||||
|
||||
/// <summary>
|
||||
/// Shows the specified message box.
|
||||
@@ -221,10 +195,7 @@ namespace JR.Utils.GUI.Forms
|
||||
/// <param name="icon">The icon.</param>
|
||||
/// <param name="defaultButton">The default button.</param>
|
||||
/// <returns>The dialog result.</returns>
|
||||
public static DialogResult Show(string text, string caption, MessageBoxButtons buttons, MessageBoxIcon icon, MessageBoxDefaultButton defaultButton)
|
||||
{
|
||||
return FlexibleMessageBoxForm.Show(null, text, caption, buttons, icon, defaultButton);
|
||||
}
|
||||
public static DialogResult Show(string text, string caption, MessageBoxButtons buttons, MessageBoxIcon icon, MessageBoxDefaultButton defaultButton) => FlexibleMessageBoxForm.Show(null, text, caption, buttons, icon, defaultButton);
|
||||
|
||||
/// <summary>
|
||||
/// Shows the specified message box.
|
||||
@@ -236,10 +207,7 @@ namespace JR.Utils.GUI.Forms
|
||||
/// <param name="icon">The icon.</param>
|
||||
/// <param name="defaultButton">The default button.</param>
|
||||
/// <returns>The dialog result.</returns>
|
||||
public static DialogResult Show(IWin32Window owner, string text, string caption, MessageBoxButtons buttons, MessageBoxIcon icon, MessageBoxDefaultButton defaultButton)
|
||||
{
|
||||
return FlexibleMessageBoxForm.Show(owner, text, caption, buttons, icon, defaultButton);
|
||||
}
|
||||
public static DialogResult Show(IWin32Window owner, string text, string caption, MessageBoxButtons buttons, MessageBoxIcon icon, MessageBoxDefaultButton defaultButton) => FlexibleMessageBoxForm.Show(owner, text, caption, buttons, icon, defaultButton);
|
||||
|
||||
/// <summary>
|
||||
/// Shows the specified message box.
|
||||
@@ -251,10 +219,8 @@ namespace JR.Utils.GUI.Forms
|
||||
/// <param name="icon">The icon.</param>
|
||||
/// <param name="defaultButton">The default button.</param>
|
||||
/// <returns>The dialog result.</returns>
|
||||
public static DialogResult ShowCustom(IWin32Window owner, string text, string caption, MessageBoxButtons buttons, MessageBoxIcon icon)
|
||||
{
|
||||
return FlexibleMessageBoxForm.ShowCustom(null, text, caption, buttons, icon);
|
||||
}
|
||||
[System.Diagnostics.CodeAnalysis.SuppressMessage("Style", "IDE0060:Remove unused parameter", Justification = "Keeping owner for legacy reasons")]
|
||||
public static DialogResult ShowCustom(IWin32Window owner, string text, string caption, MessageBoxButtons buttons, MessageBoxIcon icon) => FlexibleMessageBoxForm.ShowCustom(null, text, caption, buttons, icon);
|
||||
|
||||
#endregion
|
||||
|
||||
@@ -341,7 +307,7 @@ namespace JR.Utils.GUI.Forms
|
||||
this.richTextBoxMessage.TabIndex = 0;
|
||||
this.richTextBoxMessage.TabStop = false;
|
||||
this.richTextBoxMessage.Text = "<Message>";
|
||||
this.richTextBoxMessage.LinkClicked += new System.Windows.Forms.LinkClickedEventHandler(this.richTextBoxMessage_LinkClicked);
|
||||
this.richTextBoxMessage.LinkClicked += new System.Windows.Forms.LinkClickedEventHandler(this.RichTextBoxMessage_LinkClicked);
|
||||
//
|
||||
// panel1
|
||||
//
|
||||
@@ -431,8 +397,8 @@ namespace JR.Utils.GUI.Forms
|
||||
#region Private constants
|
||||
|
||||
//These separators are used for the "copy to clipboard" standard operation, triggered by Ctrl + C (behavior and clipboard format is like in a standard MessageBox)
|
||||
private static readonly String STANDARD_MESSAGEBOX_SEPARATOR_LINES = "---------------------------\n";
|
||||
private static readonly String STANDARD_MESSAGEBOX_SEPARATOR_SPACES = " ";
|
||||
private static readonly string STANDARD_MESSAGEBOX_SEPARATOR_LINES = "---------------------------\n";
|
||||
private static readonly string STANDARD_MESSAGEBOX_SEPARATOR_SPACES = " ";
|
||||
|
||||
//These are the possible buttons (in a standard MessageBox)
|
||||
private enum ButtonID { OK = 0, CANCEL, YES, NO, ABORT, RETRY, IGNORE, OVERWRITE, RENAME };
|
||||
@@ -440,10 +406,10 @@ namespace JR.Utils.GUI.Forms
|
||||
//These are the buttons texts for different languages.
|
||||
//If you want to add a new language, add it here and in the GetButtonText-Function
|
||||
private enum TwoLetterISOLanguageID { en, de, es, it };
|
||||
private static readonly String[] BUTTON_TEXTS_ENGLISH_EN = { "OK", "Cancel", "&Yes", "&No", "&Abort", "&Retry", "&Ignore", "&Overwrite", "&Rename" }; //Note: This is also the fallback language
|
||||
private static readonly String[] BUTTON_TEXTS_GERMAN_DE = { "OK", "Abbrechen", "&Ja", "&Nein", "&Abbrechen", "&Wiederholen", "&Ignorieren", "&Overwrite", "&Rename" };
|
||||
private static readonly String[] BUTTON_TEXTS_SPANISH_ES = { "Aceptar", "Cancelar", "&Sí", "&No", "&Abortar", "&Reintentar", "&Ignorar", "&Overwrite", "&Rename" };
|
||||
private static readonly String[] BUTTON_TEXTS_ITALIAN_IT = { "OK", "Annulla", "&Sì", "&No", "&Interrompi", "&Riprova", "&Ignora", "&Overwrite", "&Rename" };
|
||||
private static readonly string[] BUTTON_TEXTS_ENGLISH_EN = { "OK", "Cancel", "&Yes", "&No", "&Abort", "&Retry", "&Ignore", "&Overwrite", "&Rename" }; //Note: This is also the fallback language
|
||||
private static readonly string[] BUTTON_TEXTS_GERMAN_DE = { "OK", "Abbrechen", "&Ja", "&Nein", "&Abbrechen", "&Wiederholen", "&Ignorieren", "&Overwrite", "&Rename" };
|
||||
private static readonly string[] BUTTON_TEXTS_SPANISH_ES = { "Aceptar", "Cancelar", "&Sí", "&No", "&Abortar", "&Reintentar", "&Ignorar", "&Overwrite", "&Rename" };
|
||||
private static readonly string[] BUTTON_TEXTS_ITALIAN_IT = { "OK", "Annulla", "&Sì", "&No", "&Interrompi", "&Riprova", "&Ignora", "&Overwrite", "&Rename" };
|
||||
|
||||
#endregion
|
||||
|
||||
@@ -451,7 +417,7 @@ namespace JR.Utils.GUI.Forms
|
||||
|
||||
private MessageBoxDefaultButton defaultButton;
|
||||
private int visibleButtonsCount;
|
||||
private TwoLetterISOLanguageID languageID = TwoLetterISOLanguageID.en;
|
||||
private readonly TwoLetterISOLanguageID languageID = TwoLetterISOLanguageID.en;
|
||||
|
||||
#endregion
|
||||
|
||||
@@ -758,9 +724,9 @@ namespace JR.Utils.GUI.Forms
|
||||
/// <param name="e">The <see cref="System.EventArgs"/> instance containing the event data.</param>
|
||||
private void FlexibleMessageBoxForm_Shown(object sender, EventArgs e)
|
||||
{
|
||||
int buttonIndexToFocus = 1;
|
||||
Button buttonToFocus;
|
||||
|
||||
int buttonIndexToFocus;
|
||||
//Set the default button...
|
||||
switch (this.defaultButton)
|
||||
{
|
||||
@@ -799,7 +765,7 @@ namespace JR.Utils.GUI.Forms
|
||||
/// </summary>
|
||||
/// <param name="sender">The source of the event.</param>
|
||||
/// <param name="e">The <see cref="System.Windows.Forms.LinkClickedEventArgs"/> instance containing the event data.</param>
|
||||
private void richTextBoxMessage_LinkClicked(object sender, LinkClickedEventArgs e)
|
||||
private void RichTextBoxMessage_LinkClicked(object sender, LinkClickedEventArgs e)
|
||||
{
|
||||
try
|
||||
{
|
||||
@@ -877,12 +843,14 @@ namespace JR.Utils.GUI.Forms
|
||||
public static DialogResult Show(IWin32Window owner, string text, string caption, MessageBoxButtons buttons, MessageBoxIcon icon, MessageBoxDefaultButton defaultButton)
|
||||
{
|
||||
//Create a new instance of the FlexibleMessageBox form
|
||||
var flexibleMessageBoxForm = new FlexibleMessageBoxForm();
|
||||
flexibleMessageBoxForm.ShowInTaskbar = false;
|
||||
var flexibleMessageBoxForm = new FlexibleMessageBoxForm
|
||||
{
|
||||
ShowInTaskbar = false,
|
||||
|
||||
//Bind the caption and the message text
|
||||
flexibleMessageBoxForm.CaptionText = caption;
|
||||
flexibleMessageBoxForm.MessageText = text;
|
||||
//Bind the caption and the message text
|
||||
CaptionText = caption,
|
||||
MessageText = text
|
||||
};
|
||||
flexibleMessageBoxForm.FlexibleMessageBoxFormBindingSource.DataSource = flexibleMessageBoxForm;
|
||||
|
||||
//Set the buttons visibilities and texts. Also set a default button.
|
||||
@@ -914,15 +882,18 @@ namespace JR.Utils.GUI.Forms
|
||||
/// <param name="icon">The icon.</param>
|
||||
/// <param name="defaultButton">The default button.</param>
|
||||
/// <returns>The dialog result.</returns>
|
||||
[System.Diagnostics.CodeAnalysis.SuppressMessage("Style", "IDE0060:Remove unused parameter", Justification = "Keeping buttons for legacy reasons")]
|
||||
public static DialogResult ShowCustom(IWin32Window owner, string text, string caption, MessageBoxButtons buttons, MessageBoxIcon icon)
|
||||
{
|
||||
//Create a new instance of the FlexibleMessageBox form
|
||||
var flexibleMessageBoxForm = new FlexibleMessageBoxForm();
|
||||
flexibleMessageBoxForm.ShowInTaskbar = false;
|
||||
var flexibleMessageBoxForm = new FlexibleMessageBoxForm
|
||||
{
|
||||
ShowInTaskbar = false,
|
||||
|
||||
//Bind the caption and the message text
|
||||
flexibleMessageBoxForm.CaptionText = caption;
|
||||
flexibleMessageBoxForm.MessageText = text;
|
||||
//Bind the caption and the message text
|
||||
CaptionText = caption,
|
||||
MessageText = text
|
||||
};
|
||||
flexibleMessageBoxForm.FlexibleMessageBoxFormBindingSource.DataSource = flexibleMessageBoxForm;
|
||||
|
||||
//Set the buttons visibilities and texts. Also set a default button.
|
||||
|
||||
@@ -66,6 +66,7 @@
|
||||
<Compile Include="frmFormatCopy.Designer.cs">
|
||||
<DependentUpon>frmFormatCopy.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="GlobalSuppressions.cs" />
|
||||
<Compile Include="Program.cs" />
|
||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||
<EmbeddedResource Include="frmFormatCopy.resx">
|
||||
@@ -179,6 +180,7 @@
|
||||
<Content Include="fmtall\CPL_00all.xml" />
|
||||
<Content Include="fmtall\CPL_01all.xml" />
|
||||
<Content Include="fmtall\CPL_02all.xml" />
|
||||
<Content Include="fmtall\CPL_04all.xml" />
|
||||
<Content Include="fmtall\CPL_03all.xml" />
|
||||
<Content Include="fmtall\CPSAMGDataall.xml" />
|
||||
<Content Include="fmtall\CPSAMGDEVall.xml" />
|
||||
|
||||
@@ -0,0 +1,8 @@
|
||||
// This file is used by Code Analysis to maintain SuppressMessage
|
||||
// attributes that are applied to this project.
|
||||
// Project-level suppressions either have no target or are given
|
||||
// a specific target and scoped to a namespace, type, member, etc.
|
||||
|
||||
using System.Diagnostics.CodeAnalysis;
|
||||
|
||||
[assembly: SuppressMessage("Style", "IDE1006:Naming Styles", Justification = "Not modifying Naming Styles")]
|
||||
@@ -1,5 +1,4 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace Formats
|
||||
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -1,9 +1,4 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Data;
|
||||
using System.Drawing;
|
||||
using System.Text;
|
||||
using System.IO;
|
||||
using System.Windows.Forms;
|
||||
|
||||
@@ -28,7 +23,7 @@ namespace Formats
|
||||
txbxPROMSFormatsPath.Text = savedFormatPath;
|
||||
else
|
||||
{
|
||||
string curFolder = Environment.CurrentDirectory; // C:\development/PROMS/Formats/bin/debug
|
||||
string curFolder = Environment.CurrentDirectory; // .../PROMS/Formats/bin/debug
|
||||
int idx = curFolder.ToUpper().IndexOf(@"\PROMS\");
|
||||
txbxPROMSFormatsPath.Text = curFolder.Substring(0, idx);
|
||||
}
|
||||
@@ -40,9 +35,8 @@ namespace Formats
|
||||
DirectoryInfo di = new DirectoryInfo(path);
|
||||
if (di.Exists == false) //return;
|
||||
{
|
||||
DialogResult dlgrslt = DialogResult.No;
|
||||
dlgrslt = MessageBox.Show(string.Format("{0} does not exist. Create it?", path), "Create Folder?", MessageBoxButtons.YesNo);
|
||||
if (dlgrslt == DialogResult.Yes)
|
||||
DialogResult dlgrslt = MessageBox.Show(string.Format("{0} does not exist. Create it?", path), "Create Folder?", MessageBoxButtons.YesNo);
|
||||
if (dlgrslt == DialogResult.Yes)
|
||||
{
|
||||
di.Create();
|
||||
di.CreateSubdirectory("fmtall");
|
||||
@@ -86,10 +80,11 @@ namespace Formats
|
||||
|
||||
private void btnBrowse_Click(object sender, EventArgs e)
|
||||
{
|
||||
FolderBrowserDialog fbd = new FolderBrowserDialog();
|
||||
|
||||
fbd.SelectedPath = txbxPROMSFormatsPath.Text;
|
||||
if (fbd.ShowDialog() == DialogResult.OK)
|
||||
FolderBrowserDialog fbd = new FolderBrowserDialog
|
||||
{
|
||||
SelectedPath = txbxPROMSFormatsPath.Text
|
||||
};
|
||||
if (fbd.ShowDialog() == DialogResult.OK)
|
||||
{
|
||||
if (Directory.Exists(fbd.SelectedPath)) txbxPROMSFormatsPath.Text = fbd.SelectedPath + @"\";
|
||||
}
|
||||
@@ -116,9 +111,9 @@ namespace Formats
|
||||
if (!txbxPROMSFormatsPath.Text.EndsWith(@"\")) txbxPROMSFormatsPath.Text += @"\";
|
||||
|
||||
// There should be a "fmtall" and "genmacall" folder in the delelopment project folder
|
||||
// ex: C:\development\PROMS\Formats\fmtall and C:\development\PROMS\Formats\genmacall
|
||||
string destFmtallPath = txbxPROMSFormatsPath.Text + @"fmtall\";
|
||||
string destGenmacallPath = txbxPROMSFormatsPath.Text + @"genmacall\";
|
||||
// ex: ...\PROMS\Formats\fmtall and ...\PROMS\Formats\genmacall
|
||||
string destFmtallPath = $@"{txbxPROMSFormatsPath.Text}fmtall\";
|
||||
string destGenmacallPath = $@"{txbxPROMSFormatsPath.Text}genmacall\";
|
||||
string srcFmtallPath = @"..\..\"; // up to levels from startup path
|
||||
|
||||
// clear the destination fmtall and genmacall folders
|
||||
@@ -156,14 +151,10 @@ namespace Formats
|
||||
}
|
||||
Properties.Settings.Default.FormatPath = txbxPROMSFormatsPath.Text.Substring(0,txbxPROMSFormatsPath.Text.Length-1); // save the copy format path minus the ending backslash
|
||||
Properties.Settings.Default.Save();
|
||||
//if(MessageBox.Show("Do you want to end the Format Copier?","Formats Copied.", MessageBoxButtons.YesNo, MessageBoxIcon.Question)== DialogResult.Yes)
|
||||
Application.Exit();
|
||||
}
|
||||
|
||||
private void buttonX2_Click(object sender, EventArgs e)
|
||||
{
|
||||
Application.Exit();
|
||||
}
|
||||
|
||||
}
|
||||
private void buttonX2_Click(object sender, EventArgs e) => Application.Exit();
|
||||
|
||||
}
|
||||
}
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,8 @@
|
||||
// This file is used by Code Analysis to maintain SuppressMessage
|
||||
// attributes that are applied to this project.
|
||||
// Project-level suppressions either have no target or are given
|
||||
// a specific target and scoped to a namespace, type, member, etc.
|
||||
|
||||
using System.Diagnostics.CodeAnalysis;
|
||||
|
||||
[assembly: SuppressMessage("Style", "IDE1006:Naming Styles", Justification = "Not modifying Naming Styles")]
|
||||
+313
-883
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -79,6 +79,7 @@
|
||||
<Reference Include="System.Xml" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="GlobalSuppressions.cs" />
|
||||
<Compile Include="LBComObject.cs" />
|
||||
<Compile Include="LBObjectExtension.cs" />
|
||||
<Compile Include="OutlookLBComObject.cs" />
|
||||
|
||||
@@ -1,64 +1,45 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
using System.Reflection;
|
||||
|
||||
namespace LBOutlookLibrary
|
||||
{
|
||||
public abstract partial class LBComObject
|
||||
{
|
||||
private Object _Item;
|
||||
internal Object Item
|
||||
private object _Item;
|
||||
internal object Item
|
||||
{
|
||||
get { return _Item; }
|
||||
set
|
||||
{
|
||||
_Item = value;
|
||||
if (value != null) _MyType = _Item.GetType();
|
||||
if (value != null) MyType = _Item.GetType();
|
||||
}
|
||||
}
|
||||
private Type _MyType;
|
||||
public Type MyType
|
||||
{
|
||||
get { return _MyType; }
|
||||
set { _MyType = value; }
|
||||
}
|
||||
protected LBComObject() { }
|
||||
|
||||
public Type MyType { get; set; }
|
||||
protected LBComObject() { }
|
||||
protected LBComObject(string ProgID)
|
||||
{
|
||||
Type objClassType;
|
||||
objClassType = Type.GetTypeFromProgID(ProgID);
|
||||
Item = Activator.CreateInstance(objClassType);
|
||||
}
|
||||
protected LBComObject(Object item)
|
||||
{
|
||||
Item = item;
|
||||
}
|
||||
private Object DoInvokeMember(string name, Object[] parameters, BindingFlags bf, Binder b)
|
||||
protected LBComObject(object item) => Item = item;
|
||||
private object DoInvokeMember(string name, object[] parameters, BindingFlags bf, Binder b)
|
||||
{
|
||||
try
|
||||
{
|
||||
return _MyType.InvokeMember(name, bf, b, _Item, parameters);
|
||||
return MyType.InvokeMember(name, bf, b, _Item, parameters);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
throw new Exception(string.Format("LBComObject.DoInvokeMember {0}.{1}", _MyType.Name, name), ex);
|
||||
throw new Exception(string.Format("LBComObject.DoInvokeMember {0}.{1}", MyType.Name, name), ex);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
protected void SetProperty(string propertyName, params Object[] parameters)
|
||||
{
|
||||
DoInvokeMember(propertyName, parameters, BindingFlags.SetProperty, null);
|
||||
}
|
||||
protected Object GetProperty(string propertyName)
|
||||
{
|
||||
return DoInvokeMember(propertyName, null, BindingFlags.GetProperty, null);
|
||||
}
|
||||
protected Object GetProperty(string propertyName, params Object[] parameters)
|
||||
{
|
||||
return DoInvokeMember(propertyName, parameters, BindingFlags.GetProperty, null);
|
||||
}
|
||||
protected Object InvokeMethod(string methodName, params Object[] parameters)
|
||||
protected void SetProperty(string propertyName, params object[] parameters) => DoInvokeMember(propertyName, parameters, BindingFlags.SetProperty, null);
|
||||
protected object GetProperty(string propertyName) => DoInvokeMember(propertyName, null, BindingFlags.GetProperty, null);
|
||||
protected object GetProperty(string propertyName, params object[] parameters) => DoInvokeMember(propertyName, parameters, BindingFlags.GetProperty, null);
|
||||
protected object InvokeMethod(string methodName, params object[] parameters)
|
||||
{
|
||||
if (parameters != null)
|
||||
FixParameters(parameters);
|
||||
@@ -71,45 +52,15 @@ namespace LBOutlookLibrary
|
||||
if (parameters[i] is LBComObject)
|
||||
parameters[i] = (parameters[i] as LBComObject).Item;
|
||||
}
|
||||
protected Object InvokeMethod(string methodName)
|
||||
{
|
||||
return InvokeMethod(methodName, null);
|
||||
}
|
||||
}
|
||||
public class LBComObjectList<TList, TItem> : LBComObject
|
||||
where TList : LBComObjectList<TList, TItem>
|
||||
where TItem : LBComObject, new()
|
||||
{
|
||||
//public new(Object item):base(item){}
|
||||
public TItem Add()
|
||||
{
|
||||
TItem tmp = new TItem();
|
||||
tmp.Item = InvokeMethod("Add");
|
||||
return tmp;
|
||||
}
|
||||
//public TItem this[int item]
|
||||
//{
|
||||
// get
|
||||
// {
|
||||
// TItem tmp = new TItem();
|
||||
// tmp.Item = GetProperty("Item", item);
|
||||
// return tmp;
|
||||
// }
|
||||
//}
|
||||
}
|
||||
protected object InvokeMethod(string methodName) => InvokeMethod(methodName, null);
|
||||
}
|
||||
public partial class LBApplicationClass : LBComObject
|
||||
{
|
||||
public LBApplicationClass() : base("Outlook.Application") { }
|
||||
public LBApplicationClass(Object item) : base(item) { }
|
||||
public System.Object CreateItem(LBOlItemType ItemType)
|
||||
{
|
||||
return InvokeMethod("CreateItem", ItemType);
|
||||
}
|
||||
public void Quit()
|
||||
{
|
||||
InvokeMethod("Quit");
|
||||
}
|
||||
}
|
||||
public LBApplicationClass(object item) : base(item) { }
|
||||
public object CreateItem(LBOlItemType ItemType) => InvokeMethod("CreateItem", ItemType);
|
||||
public void Quit() => InvokeMethod("Quit");
|
||||
}
|
||||
public enum LBOlItemType
|
||||
{
|
||||
olMailItem = 0,
|
||||
@@ -124,13 +75,13 @@ namespace LBOutlookLibrary
|
||||
public partial class LBMailItem : LBComObject
|
||||
{
|
||||
public LBMailItem() { }
|
||||
public LBMailItem(Object item) : base(item) { }
|
||||
public LBMailItem(object item) : base(item) { }
|
||||
}
|
||||
public partial class LBMailItemClass : LBComObject
|
||||
{
|
||||
public LBMailItemClass() { }
|
||||
public LBMailItemClass(Object item) : base(item) { }
|
||||
public String Body
|
||||
public LBMailItemClass(object item) : base(item) { }
|
||||
public string Body
|
||||
{
|
||||
get { return (GetProperty("Body").ToString()); }
|
||||
set { SetProperty("Body", value); }
|
||||
@@ -140,29 +91,20 @@ namespace LBOutlookLibrary
|
||||
get { return (LBOlBodyFormat)GetProperty("BodyFormat"); }
|
||||
set { SetProperty("BodyFormat", value); }
|
||||
}
|
||||
public LBAttachments Attachments
|
||||
{
|
||||
get { return new LBAttachments(GetProperty("Attachments")); }
|
||||
}
|
||||
public String Subject
|
||||
public LBAttachments Attachments => new LBAttachments(GetProperty("Attachments"));
|
||||
public string Subject
|
||||
{
|
||||
get { return (GetProperty("Subject").ToString()); }
|
||||
set { SetProperty("Subject", value); }
|
||||
}
|
||||
public LBRecipients Recipients
|
||||
{
|
||||
get { return new LBRecipients(GetProperty("Recipients")); }
|
||||
}
|
||||
public String To
|
||||
public LBRecipients Recipients => new LBRecipients(GetProperty("Recipients"));
|
||||
public string To
|
||||
{
|
||||
get { return (GetProperty("To").ToString()); }
|
||||
set { SetProperty("To", value); }
|
||||
}
|
||||
public void Send()
|
||||
{
|
||||
InvokeMethod("Send");
|
||||
}
|
||||
}
|
||||
public void Send() => InvokeMethod("Send");
|
||||
}
|
||||
public enum LBOlBodyFormat
|
||||
{
|
||||
olFormatUnspecified = 0,
|
||||
@@ -173,79 +115,40 @@ namespace LBOutlookLibrary
|
||||
public partial class LBAttachments : LBComObject
|
||||
{
|
||||
public LBAttachments() { }
|
||||
public LBAttachments(Object item) : base(item) { }
|
||||
public int Count
|
||||
{
|
||||
get { return (GetProperty("Count") as int? ?? 0); }
|
||||
}
|
||||
public LBAttachment Item
|
||||
{
|
||||
get { return new LBAttachment(GetProperty("Item")); }
|
||||
}
|
||||
public LBAttachment Add(object Source)
|
||||
{
|
||||
return new LBAttachment(InvokeMethod("Add", Source, Missing.Value, Missing.Value, Missing.Value));
|
||||
}
|
||||
public LBAttachment Add(object Source, object Type, object Position, object DisplayName)
|
||||
public LBAttachments(object item) : base(item) { }
|
||||
public int Count => (GetProperty("Count") as int? ?? 0);
|
||||
public new LBAttachment Item => new LBAttachment(GetProperty("Item"));
|
||||
public LBAttachment Add(object Source) => new LBAttachment(InvokeMethod("Add", Source, Missing.Value, Missing.Value, Missing.Value));
|
||||
public LBAttachment Add(object Source, object Type, object Position, object DisplayName)
|
||||
{
|
||||
return new LBAttachment(InvokeMethod("Add", Source, Type, Position, DisplayName));
|
||||
}
|
||||
public void Remove(int Index)
|
||||
{
|
||||
InvokeMethod("Remove", Index);
|
||||
}
|
||||
}
|
||||
public void Remove(int Index) => InvokeMethod("Remove", Index);
|
||||
}
|
||||
public partial class LBRecipients : LBComObject
|
||||
{
|
||||
public LBRecipients() { }
|
||||
public LBRecipients(Object item) : base(item) { }
|
||||
public int Count
|
||||
{
|
||||
get { return (GetProperty("Count") as int? ?? 0); }
|
||||
}
|
||||
public LBRecipient Item
|
||||
{
|
||||
get { return new LBRecipient(GetProperty("Item")); }
|
||||
}
|
||||
public LBRecipient Add(string Name)
|
||||
{
|
||||
return new LBRecipient(InvokeMethod("Add", Name));
|
||||
}
|
||||
public void Remove(int Index)
|
||||
{
|
||||
InvokeMethod("Remove", Index);
|
||||
}
|
||||
public Boolean ResolveAll()
|
||||
{
|
||||
return InvokeMethod("ResolveAll") as Boolean? ?? false;
|
||||
}
|
||||
}
|
||||
public LBRecipients(object item) : base(item) { }
|
||||
public int Count => (GetProperty("Count") as int? ?? 0);
|
||||
public new LBRecipient Item => new LBRecipient(GetProperty("Item"));
|
||||
public LBRecipient Add(string Name) => new LBRecipient(InvokeMethod("Add", Name));
|
||||
public void Remove(int Index) => InvokeMethod("Remove", Index);
|
||||
public bool ResolveAll() => InvokeMethod("ResolveAll") as bool? ?? false;
|
||||
}
|
||||
public partial class LBAttachment : LBComObject
|
||||
{
|
||||
public LBAttachment() { }
|
||||
public LBAttachment(Object item) : base(item) { }
|
||||
public LBOlAttachmentType Type
|
||||
{
|
||||
get { return (LBOlAttachmentType)GetProperty("Type"); }
|
||||
}
|
||||
}
|
||||
public LBAttachment(object item) : base(item) { }
|
||||
public LBOlAttachmentType Type => (LBOlAttachmentType)GetProperty("Type");
|
||||
}
|
||||
public partial class LBRecipient : LBComObject
|
||||
{
|
||||
public LBRecipient() { }
|
||||
public LBRecipient(Object item) : base(item) { }
|
||||
public String Address
|
||||
{
|
||||
get { return (GetProperty("Address").ToString()); }
|
||||
}
|
||||
public String Name
|
||||
{
|
||||
get { return (GetProperty("Name").ToString()); }
|
||||
}
|
||||
public Boolean Resolve()
|
||||
{
|
||||
return InvokeMethod("Resolve") as Boolean? ?? false;
|
||||
}
|
||||
}
|
||||
public LBRecipient(object item) : base(item) { }
|
||||
public string Address => (GetProperty("Address").ToString());
|
||||
public string Name => (GetProperty("Name").ToString());
|
||||
public bool Resolve() => InvokeMethod("Resolve") as bool? ?? false;
|
||||
}
|
||||
public enum LBOlAttachmentType
|
||||
{
|
||||
olByValue = 1,
|
||||
|
||||
@@ -1,21 +1,13 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
|
||||
namespace LBOutlookLibrary
|
||||
{
|
||||
public partial class LBApplicationClass
|
||||
{
|
||||
public LBMailItemClass CreateMailItem()
|
||||
{
|
||||
return new LBMailItemClass(CreateItem(LBOlItemType.olMailItem));
|
||||
}
|
||||
}
|
||||
public LBMailItemClass CreateMailItem() => new LBMailItemClass(CreateItem(LBOlItemType.olMailItem));
|
||||
}
|
||||
public partial class LBMailItemClass
|
||||
{
|
||||
public void AddAttachment(string filename)
|
||||
{
|
||||
Attachments.Add(filename, LBOlAttachmentType.olByValue, Type.Missing, Type.Missing);
|
||||
}
|
||||
}
|
||||
public void AddAttachment(string filename) => Attachments.Add(filename, LBOlAttachmentType.olByValue, Type.Missing, Type.Missing);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -49,19 +49,13 @@ namespace Read64bitRegistryFrom32bitApp
|
||||
ref uint lpType,
|
||||
System.Text.StringBuilder lpData,
|
||||
ref uint lpcbData);
|
||||
#endregion
|
||||
#endregion
|
||||
#endregion
|
||||
#endregion
|
||||
|
||||
#region Functions
|
||||
static public string GetRegKey64Value(UIntPtr inHive, String inKeyName, String inPropertyName)
|
||||
{
|
||||
return GetRegKey64Value(inHive, inKeyName, RegSAM.WOW64_64Key, inPropertyName);
|
||||
}
|
||||
static public string GetRegKey32Value(UIntPtr inHive, String inKeyName, String inPropertyName)
|
||||
{
|
||||
return GetRegKey64Value(inHive, inKeyName, RegSAM.WOW64_32Key, inPropertyName);
|
||||
}
|
||||
static public string GetRegKey64Value(UIntPtr inHive, String inKeyName, RegSAM in32or64key, String inPropertyName)
|
||||
#region Functions
|
||||
static public string GetRegKey64Value(UIntPtr inHive, string inKeyName, string inPropertyName) => GetRegKey64Value(inHive, inKeyName, RegSAM.WOW64_64Key, inPropertyName);
|
||||
[System.Diagnostics.CodeAnalysis.SuppressMessage("Style", "IDE0060:Remove unused parameter", Justification = "inHive kept to match dll signature")]
|
||||
static public string GetRegKey64Value(UIntPtr inHive, string inKeyName, RegSAM in32or64key, string inPropertyName)
|
||||
{
|
||||
int hkey = 0;
|
||||
try
|
||||
@@ -80,15 +74,10 @@ namespace Read64bitRegistryFrom32bitApp
|
||||
if (0 != hkey) RegCloseKey(hkey);
|
||||
}
|
||||
}
|
||||
static public bool CheckRegKey64Valid(UIntPtr inHive, String inKeyName)
|
||||
{
|
||||
return CheckRegKey64Valid(inHive, inKeyName, RegSAM.WOW64_64Key);
|
||||
}
|
||||
static public bool GetRegKey32Valid(UIntPtr inHive, String inKeyName)
|
||||
{
|
||||
return CheckRegKey64Valid(inHive, inKeyName, RegSAM.WOW64_32Key);
|
||||
}
|
||||
static public bool CheckRegKey64Valid(UIntPtr inHive, String inKeyName, RegSAM in32or64key)
|
||||
static public bool CheckRegKey64Valid(UIntPtr inHive, string inKeyName) => CheckRegKey64Valid(inHive, inKeyName, RegSAM.WOW64_64Key);
|
||||
static public bool GetRegKey32Valid(UIntPtr inHive, string inKeyName) => CheckRegKey64Valid(inHive, inKeyName, RegSAM.WOW64_32Key);
|
||||
[System.Diagnostics.CodeAnalysis.SuppressMessage("Style", "IDE0060:Remove unused parameter", Justification = "inHive kept to match dll signature")]
|
||||
static public bool CheckRegKey64Valid(UIntPtr inHive, string inKeyName, RegSAM in32or64key)
|
||||
{
|
||||
int hkey = 0;
|
||||
try
|
||||
@@ -103,8 +92,5 @@ namespace Read64bitRegistryFrom32bitApp
|
||||
}
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region Enums
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
@@ -77,6 +77,7 @@ using System.Xml.Schema;
|
||||
using System.Text;
|
||||
using ROFields;
|
||||
using RODBInterface;
|
||||
using System.Linq;
|
||||
|
||||
namespace ROEditor
|
||||
{
|
||||
@@ -96,10 +97,10 @@ namespace ROEditor
|
||||
private System.Windows.Forms.Label lblW2;
|
||||
private System.Windows.Forms.Label lblW3;
|
||||
private System.Windows.Forms.Label lblW4;
|
||||
ctlXMLEditLib.roRichTextBox tbSingleTxtWid; // RO Editor add symbols C2022 - 003
|
||||
ctlXMLEditLib.roRichTextBox tbVariableTxtWid;
|
||||
ctlXMLEditLib.roRichTextBox tbTableWid;
|
||||
ctlXMLEditLib.roRichTextBox tbXYPlotWid;
|
||||
private System.Windows.Forms.TextBox tbSingleTxtWid;
|
||||
private System.Windows.Forms.TextBox tbVariableTxtWid;
|
||||
private System.Windows.Forms.TextBox tbTableWid;
|
||||
private System.Windows.Forms.TextBox tbXYPlotWid;
|
||||
private System.Windows.Forms.Button btnOK;
|
||||
private System.Windows.Forms.Button btnCancel;
|
||||
/// <summary>
|
||||
@@ -218,10 +219,10 @@ namespace ROEditor
|
||||
this.lblFieldName = new System.Windows.Forms.Label();
|
||||
this.tbFieldName = new System.Windows.Forms.TextBox();
|
||||
this.gbAlternatives = new System.Windows.Forms.GroupBox();
|
||||
this.tbXYPlotWid = new ctlXMLEditLib.roRichTextBox(); // RO Editor add symbols C2022 - 003
|
||||
this.tbTableWid = new ctlXMLEditLib.roRichTextBox();
|
||||
this.tbVariableTxtWid = new ctlXMLEditLib.roRichTextBox ();
|
||||
this.tbSingleTxtWid = new ctlXMLEditLib.roRichTextBox();
|
||||
this.tbXYPlotWid = new System.Windows.Forms.TextBox();
|
||||
this.tbTableWid = new System.Windows.Forms.TextBox();
|
||||
this.tbVariableTxtWid = new System.Windows.Forms.TextBox();
|
||||
this.tbSingleTxtWid = new System.Windows.Forms.TextBox();
|
||||
this.lblW4 = new System.Windows.Forms.Label();
|
||||
this.lblW3 = new System.Windows.Forms.Label();
|
||||
this.lblW2 = new System.Windows.Forms.Label();
|
||||
@@ -280,6 +281,7 @@ namespace ROEditor
|
||||
this.tbXYPlotWid.Size = new System.Drawing.Size(40, 22);
|
||||
this.tbXYPlotWid.TabIndex = 11;
|
||||
this.tbXYPlotWid.Text = "";
|
||||
this.tbXYPlotWid.KeyDown += new System.Windows.Forms.KeyEventHandler(this.txtBox_KeyDown);
|
||||
//
|
||||
// tbTableWid
|
||||
//
|
||||
@@ -288,6 +290,7 @@ namespace ROEditor
|
||||
this.tbTableWid.Size = new System.Drawing.Size(40, 22);
|
||||
this.tbTableWid.TabIndex = 10;
|
||||
this.tbTableWid.Text = "";
|
||||
this.tbTableWid.KeyDown += new System.Windows.Forms.KeyEventHandler(this.txtBox_KeyDown);
|
||||
//
|
||||
// tbVariableTxtWid
|
||||
//
|
||||
@@ -296,6 +299,7 @@ namespace ROEditor
|
||||
this.tbVariableTxtWid.Size = new System.Drawing.Size(40, 22);
|
||||
this.tbVariableTxtWid.TabIndex = 9;
|
||||
this.tbVariableTxtWid.Text = "";
|
||||
this.tbVariableTxtWid.KeyDown += new System.Windows.Forms.KeyEventHandler(this.txtBox_KeyDown);
|
||||
//
|
||||
// tbSingleTxtWid
|
||||
//
|
||||
@@ -304,6 +308,7 @@ namespace ROEditor
|
||||
this.tbSingleTxtWid.Size = new System.Drawing.Size(40, 22);
|
||||
this.tbSingleTxtWid.TabIndex = 8;
|
||||
this.tbSingleTxtWid.Text = "";
|
||||
this.tbSingleTxtWid.KeyDown += new System.Windows.Forms.KeyEventHandler(this.txtBox_KeyDown);
|
||||
//
|
||||
// lblW4
|
||||
//
|
||||
@@ -586,5 +591,18 @@ namespace ROEditor
|
||||
|
||||
this.Close();
|
||||
}
|
||||
private void txtBox_KeyDown(object sender, KeyEventArgs e)
|
||||
{
|
||||
if (Clipboard.GetDataObject().GetDataPresent(DataFormats.Text))
|
||||
{
|
||||
string clpBrd = Clipboard.GetText();
|
||||
if (clpBrd.Any(c => c > 166))
|
||||
{
|
||||
MessageBox.Show("Symbols are not allowed in the field. Clipbroad: '" + clpBrd + "'");
|
||||
Clipboard.Clear();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -77,6 +77,7 @@ using System.Xml.Schema;
|
||||
using System.Text;
|
||||
using ROFields;
|
||||
using RODBInterface;
|
||||
using System.Linq;
|
||||
|
||||
namespace ROEditor
|
||||
{
|
||||
@@ -316,6 +317,22 @@ namespace ROEditor
|
||||
}
|
||||
base.Dispose( disposing );
|
||||
}
|
||||
private void txtBox_KeyDown(object sender, KeyEventArgs e)
|
||||
{
|
||||
bool symFlg = false;
|
||||
if (Clipboard.GetDataObject().GetDataPresent(DataFormats.Text))
|
||||
{
|
||||
if (Clipboard.GetDataObject().GetDataPresent(DataFormats.Text))
|
||||
{
|
||||
string clpBrd = Clipboard.GetText();
|
||||
if (clpBrd.Any(c => c > 166))
|
||||
{
|
||||
MessageBox.Show("Symbols are not allowed in the field. Clipbroad: '" + clpBrd + "'");
|
||||
Clipboard.Clear();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#region Windows Form Designer generated code
|
||||
/// <summary>
|
||||
@@ -357,6 +374,7 @@ namespace ROEditor
|
||||
this.tbFieldName.Size = new System.Drawing.Size(320, 22);
|
||||
this.tbFieldName.TabIndex = 2;
|
||||
this.tbFieldName.Text = "";
|
||||
this.tbFieldName.KeyDown += new System.Windows.Forms.KeyEventHandler(this.txtBox_KeyDown);
|
||||
//
|
||||
// tbWidth
|
||||
//
|
||||
@@ -365,6 +383,7 @@ namespace ROEditor
|
||||
this.tbWidth.Size = new System.Drawing.Size(32, 22);
|
||||
this.tbWidth.TabIndex = 3;
|
||||
this.tbWidth.Text = "";
|
||||
this.tbWidth.KeyDown += new System.Windows.Forms.KeyEventHandler(this.txtBox_KeyDown);
|
||||
//
|
||||
// btnOK
|
||||
//
|
||||
@@ -402,6 +421,7 @@ namespace ROEditor
|
||||
this.tbPattern.TabIndex = 7;
|
||||
this.tbPattern.Text = "";
|
||||
this.tbPattern.Visible = false;
|
||||
this.tbPattern.KeyDown += new System.Windows.Forms.KeyEventHandler(this.txtBox_KeyDown);
|
||||
//
|
||||
// FieldTextFrm
|
||||
//
|
||||
@@ -425,3 +445,4 @@ namespace ROEditor
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -72,6 +72,7 @@ using System.Xml;
|
||||
using System.Text;
|
||||
using RODBInterface;
|
||||
using ROFields;
|
||||
using System.Linq;
|
||||
|
||||
namespace ROEditor
|
||||
{
|
||||
@@ -277,6 +278,22 @@ namespace ROEditor
|
||||
|
||||
this.Close();
|
||||
}
|
||||
private void txtBox_KeyDown(object sender, KeyEventArgs e)
|
||||
{
|
||||
bool symFlg = false;
|
||||
if (Clipboard.GetDataObject().GetDataPresent(DataFormats.Text))
|
||||
{
|
||||
if (Clipboard.GetDataObject().GetDataPresent(DataFormats.Text))
|
||||
{
|
||||
string clpBrd = Clipboard.GetText();
|
||||
if (clpBrd.Any(c => c > 166))
|
||||
{
|
||||
MessageBox.Show("Symbols are not allowed in the field. Clipbroad: '" + clpBrd + "'");
|
||||
Clipboard.Clear();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
#region Windows Form Designer generated code
|
||||
/// <summary>
|
||||
/// Required method for Designer support - do not modify
|
||||
@@ -315,6 +332,7 @@ namespace ROEditor
|
||||
this.tbFieldName.Size = new System.Drawing.Size(368, 22);
|
||||
this.tbFieldName.TabIndex = 1;
|
||||
this.tbFieldName.Text = "";
|
||||
this.tbFieldName.KeyDown += new System.Windows.Forms.KeyEventHandler(this.txtBox_KeyDown);
|
||||
//
|
||||
// gbFldType
|
||||
//
|
||||
@@ -437,3 +455,4 @@ namespace ROEditor
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -52,6 +52,7 @@ using System.Xml;
|
||||
using System.Text;
|
||||
using ROFields;
|
||||
using RODBInterface;
|
||||
using System.Linq;
|
||||
|
||||
namespace ROEditor
|
||||
{
|
||||
@@ -155,6 +156,7 @@ namespace ROEditor
|
||||
this.tbGroup.Size = new System.Drawing.Size(248, 22);
|
||||
this.tbGroup.TabIndex = 8;
|
||||
this.tbGroup.Text = "";
|
||||
this.tbGroup.KeyDown += new System.Windows.Forms.KeyEventHandler(this.txtBox_KeyDown);
|
||||
//
|
||||
// lblGroup
|
||||
//
|
||||
@@ -421,5 +423,21 @@ namespace ROEditor
|
||||
GroupDefFrm grdef = new GroupDefFrm(nelem,myrodb,nelem.InnerText,dbtype);
|
||||
grdef.ShowDialog();
|
||||
}
|
||||
private void txtBox_KeyDown(object sender, KeyEventArgs e)
|
||||
{
|
||||
if (Clipboard.GetDataObject().GetDataPresent(DataFormats.Text))
|
||||
{
|
||||
if (Clipboard.GetDataObject().GetDataPresent(DataFormats.Text))
|
||||
{
|
||||
string clpBrd = Clipboard.GetText();
|
||||
if (clpBrd.Any(c => c > 166))
|
||||
{
|
||||
MessageBox.Show("Symbols are not allowed in the field. Clipbroad: '" + clpBrd + "'");
|
||||
Clipboard.Clear();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -106,6 +106,7 @@ using ROFields;
|
||||
using RODBInterface;
|
||||
using VlnStatus;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
|
||||
|
||||
namespace ROEditor
|
||||
@@ -1311,6 +1312,22 @@ namespace ROEditor
|
||||
}
|
||||
}
|
||||
}
|
||||
private void txtBox_KeyDown(object sender, KeyEventArgs e)
|
||||
{
|
||||
bool symFlg = false;
|
||||
if (Clipboard.GetDataObject().GetDataPresent(DataFormats.Text))
|
||||
{
|
||||
if (Clipboard.GetDataObject().GetDataPresent(DataFormats.Text))
|
||||
{
|
||||
string clpBrd = Clipboard.GetText();
|
||||
if (clpBrd.Any(c => c > 166))
|
||||
{
|
||||
MessageBox.Show("Symbols are not allowed in the field. Clipbroad: '" + clpBrd + "'");
|
||||
Clipboard.Clear();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#region Windows Form Designer generated code
|
||||
/// <summary>
|
||||
@@ -1375,6 +1392,7 @@ namespace ROEditor
|
||||
this.tbRetVal.Size = new System.Drawing.Size(464, 22);
|
||||
this.tbRetVal.TabIndex = 4;
|
||||
this.tbRetVal.Text = "textBox1";
|
||||
this.tbRetVal.KeyDown += new System.Windows.Forms.KeyEventHandler(this.txtBox_KeyDown);
|
||||
//
|
||||
// tbMenuVal
|
||||
//
|
||||
@@ -1383,6 +1401,7 @@ namespace ROEditor
|
||||
this.tbMenuVal.Size = new System.Drawing.Size(464, 22);
|
||||
this.tbMenuVal.TabIndex = 5;
|
||||
this.tbMenuVal.Text = "textBox1";
|
||||
this.tbMenuVal.KeyDown += new System.Windows.Forms.KeyEventHandler(this.txtBox_KeyDown);
|
||||
//
|
||||
// lblGroupText
|
||||
//
|
||||
@@ -1608,3 +1627,4 @@ namespace ROEditor
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -116,12 +116,12 @@ namespace ROEditor
|
||||
public uint thisoff;
|
||||
public string title;
|
||||
|
||||
public FstTmpSTRC(ushort type, uint offset, string tl)
|
||||
public FstTmpSTRC(ushort type, uint offset, string tl)
|
||||
{
|
||||
thistype = type;
|
||||
thisoff = offset;
|
||||
title = tl;
|
||||
}
|
||||
}
|
||||
|
||||
void WriteString(BinaryWriter bw, string str)
|
||||
{
|
||||
@@ -150,7 +150,7 @@ namespace ROEditor
|
||||
bw.Write(thisoff);
|
||||
bw.Write(thistype);
|
||||
WriteString(bw,title);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// The Sorted Array was not sorting via the ASCII value of each character in a given string.
|
||||
@@ -565,8 +565,8 @@ namespace ROEditor
|
||||
string RecIdStr = elem.GetAttribute("RecID");
|
||||
curRecID = System.Convert.ToUInt32(RecIdStr,16);
|
||||
|
||||
// Get the current node's parent id
|
||||
string ParIdStr = elem.GetAttribute("ParentID");
|
||||
// Get the current node's parent id
|
||||
string ParIdStr = elem.GetAttribute("ParentID");
|
||||
elemParentID = Convert.ToUInt32(ParIdStr,16);
|
||||
|
||||
string HasKids = elem.GetAttribute("HasChild");
|
||||
@@ -771,8 +771,8 @@ namespace ROEditor
|
||||
private ushort SaveROToFST(XmlNode RONode,ArrayList InUseList,string RtnValTmplate, string AccPageIDTplate)
|
||||
{
|
||||
ushort RtnVal;
|
||||
uint startFST = (uint)fhFST.BaseStream.Position;
|
||||
uint RORecID;
|
||||
uint startFST = (uint)fhFST.BaseStream.Position;
|
||||
uint RORecID;
|
||||
uint ParID;
|
||||
byte nullbyte=0;
|
||||
|
||||
@@ -844,8 +844,12 @@ namespace ROEditor
|
||||
AccPageID = " ";
|
||||
WriteString(AccPageID);
|
||||
|
||||
// Save the ID and offset entry for the current ID
|
||||
IdsAndOffsets.Add(RORecID,startFST);
|
||||
//C2026-008 Re-Architect RO.FST to include RO Modification date/time
|
||||
string moddt = ROdatabase.RODB_GetModDateTime(elem.GetAttribute("RecID"), elem.GetAttribute("Table"));
|
||||
if (!string.IsNullOrEmpty(moddt)) WriteString(moddt);
|
||||
|
||||
// Save the ID and offset entry for the current ID
|
||||
IdsAndOffsets.Add(RORecID, startFST);
|
||||
|
||||
// Save the RecID and Accessory Page id
|
||||
IdsAndAccPgIds[AccPageID] = RORecID;
|
||||
@@ -884,3 +888,4 @@ namespace ROEditor
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -322,9 +322,9 @@ namespace RODBInterface
|
||||
get { return _PCChildList; }
|
||||
set { _PCChildList = value; }
|
||||
}
|
||||
#endregion
|
||||
#region abstracts // need these for each method that must be defined for each database type
|
||||
public abstract string RODB_GetNextGroupTable();
|
||||
#endregion
|
||||
#region abstracts // need these for each method that must be defined for each database type
|
||||
public abstract string RODB_GetNextGroupTable();
|
||||
public abstract string RODB_GetNextRecId(string table);
|
||||
public abstract bool RODB_GetRootGroups(VlnXmlElement root);
|
||||
public abstract bool RODB_DeleteGroup(XmlNode group, string tbname, string toprecid);
|
||||
@@ -355,9 +355,10 @@ namespace RODBInterface
|
||||
public abstract string RODB_GetDBServerForAbout();
|
||||
public abstract string RODB_HasBeenConverted();
|
||||
public abstract bool RODB_WriteSqlConnectToAccess(string newConectStr);
|
||||
#endregion
|
||||
public abstract string RODB_GetModDateTime(string Recid, string table);
|
||||
#endregion
|
||||
|
||||
public RODB()
|
||||
public RODB()
|
||||
{
|
||||
|
||||
}
|
||||
@@ -2142,7 +2143,20 @@ namespace RODBInterface
|
||||
wraccid = accid;
|
||||
string dt = string.Format("{0:yyyyMMddHHmmss}", System.DateTime.Now);
|
||||
string xmlstr = GenerateXmlString(ro, false);
|
||||
string strUpdate = "UPDATE " + ro.GetAttribute("Table") + " SET Info = '" + xmlstr + "'";
|
||||
StringBuilder xmlstrTmp = new StringBuilder(); // B2026-025 prep the info field data so it will be saved correctly.
|
||||
char[] chrAry = xmlstr.ToCharArray();
|
||||
foreach (int chr in chrAry)
|
||||
{
|
||||
if (chr > 166)
|
||||
{
|
||||
xmlstrTmp.Append($"\\u{(int)chr}?");
|
||||
}
|
||||
else
|
||||
{
|
||||
xmlstrTmp.Append((char)chr);
|
||||
}
|
||||
}
|
||||
string strUpdate = "UPDATE " + ro.GetAttribute("Table") + " SET Info = '" + xmlstrTmp.ToString() + "'";
|
||||
if (movedRO)
|
||||
{
|
||||
VlnXmlElement parent = (VlnXmlElement)ro.ParentNode;
|
||||
@@ -2186,6 +2200,20 @@ namespace RODBInterface
|
||||
}
|
||||
string xmlstr = GenerateXmlString(ro, false);
|
||||
|
||||
StringBuilder xmlstrTmp = new StringBuilder(); // B2026-025 prep the info field data so it will be saved correctly.
|
||||
char[] chrAry = xmlstr.ToCharArray();
|
||||
foreach (int chr in chrAry)
|
||||
{
|
||||
if (chr > 166)
|
||||
{
|
||||
xmlstrTmp.Append($"\\u{(int)chr}?");
|
||||
}
|
||||
else
|
||||
{
|
||||
xmlstrTmp.Append((char)chr);
|
||||
}
|
||||
}
|
||||
|
||||
string wraccid = null;
|
||||
if (ro.HasAttribute("AccPageID"))
|
||||
{
|
||||
@@ -2209,13 +2237,13 @@ namespace RODBInterface
|
||||
// strInsert = "INSERT INTO " + parent.GetAttribute("Table") + "( RecID, RecType, ParentID, AccPageID, ModDateTime, Info ) ";
|
||||
strInsert = "INSERT INTO " + parent.GetAttribute("Table") + "( RecID, RecType, ParentID, ModDateTime, AccPageID, Info ) ";
|
||||
strInsert = strInsert + " VALUES ('" + ro.GetAttribute("RecID") + "'," + (uint)RecordType.Group + ",'" + ro.GetAttribute("ParentID");
|
||||
strInsert = strInsert + "','" + wraccid + "','" + dt + "','" + xmlstr + "');";
|
||||
strInsert = strInsert + "','" + wraccid + "','" + dt + "','" + xmlstrTmp.ToString() + "');";
|
||||
}
|
||||
else
|
||||
{
|
||||
strInsert = "INSERT INTO " + parent.GetAttribute("Table") + "( RecID, RecType, ParentID, ModDateTime, Info ) ";
|
||||
strInsert = strInsert + " VALUES ('" + ro.GetAttribute("RecID") + "'," + (uint)RecordType.Group + ",'" + ro.GetAttribute("ParentID");
|
||||
strInsert = strInsert + "','" + dt + "','" + xmlstr + "');";
|
||||
strInsert = strInsert + "','" + dt + "','" + xmlstrTmp.ToString() + "');";
|
||||
}
|
||||
|
||||
}
|
||||
@@ -2223,7 +2251,7 @@ namespace RODBInterface
|
||||
{
|
||||
strInsert = "INSERT INTO " + parent.GetAttribute("Table") + "( RecID, RecType, ParentID, AccPageId, ModDateTime, Info ) ";
|
||||
strInsert = strInsert + " VALUES ('" + ro.GetAttribute("RecID") + "'," + (uint)RecordType.RRO + ",'" + ro.GetAttribute("ParentID");
|
||||
strInsert = strInsert + "','" + wraccid + "','" + dt + "','" + xmlstr + "');";
|
||||
strInsert = strInsert + "','" + wraccid + "','" + dt + "','" + xmlstrTmp.ToString() + "');";
|
||||
}
|
||||
|
||||
try
|
||||
@@ -2355,9 +2383,9 @@ namespace RODBInterface
|
||||
RecID = DBE.GetString(0);
|
||||
MyRecID = RecID;
|
||||
Info = DBE.GetString(1);
|
||||
// it's defined in the local table if the first character is "<" which starts
|
||||
// the schema definition string.
|
||||
if ("<" == Info.Substring(0, 1))
|
||||
// it's defined in the local table if the first character is "<" which starts
|
||||
// the schema definition string.
|
||||
if ("<" == Info.Substring(0, 1))
|
||||
{
|
||||
name = ParseEleName(Info);
|
||||
if (name != null)
|
||||
@@ -2398,7 +2426,7 @@ namespace RODBInterface
|
||||
return retlist;
|
||||
}
|
||||
|
||||
public override string RODB_GetSchemaPiece(string Recid, string table)
|
||||
public override string RODB_GetSchemaPiece(string Recid, string table)
|
||||
{
|
||||
string strGetSchemaPiece;
|
||||
string Info;
|
||||
@@ -2631,7 +2659,21 @@ namespace RODBInterface
|
||||
}
|
||||
}
|
||||
StatMsgWindow.StatusMessage = echild.GetAttribute("MenuTitle");
|
||||
StringBuilder tinfo2Tmp = new StringBuilder(); // B2026-025 prep the info field data so it will be saved correctly.
|
||||
str = "UPDATE " + echild.GetAttribute("Table") + " SET Info = '" + tinfo2 + "'";
|
||||
char[] chrAry = tinfo2.ToCharArray();
|
||||
foreach (int chr in chrAry)
|
||||
{
|
||||
if (chr > 166)
|
||||
{
|
||||
tinfo2Tmp.Append($"\\u{(int)chr}?");
|
||||
}
|
||||
else
|
||||
{
|
||||
tinfo2Tmp.Append((char)chr);
|
||||
}
|
||||
}
|
||||
str = "UPDATE " + echild.GetAttribute("Table") + " SET Info = '" + tinfo2Tmp.ToString() + "'";
|
||||
str = str + ", ModDateTime = '" + dt + "' WHERE RecID = '" + echild.GetAttribute("RecID") + "';";
|
||||
DBE.Command(str);
|
||||
DBE.Reader();
|
||||
@@ -3041,7 +3083,28 @@ namespace RODBInterface
|
||||
return GrpCnt;
|
||||
}
|
||||
|
||||
}
|
||||
//C2026-008 Re-Architect RO.FST to include RO Modification date/time
|
||||
//Get the Modification Date / Time for the RO
|
||||
public override string RODB_GetModDateTime(string Recid, string table)
|
||||
{
|
||||
using (System.Data.OleDb.OleDbConnection connection = new System.Data.OleDb.OleDbConnection(strDatabaseConnectionCommand))
|
||||
{
|
||||
connection.Open();
|
||||
using (System.Data.OleDb.OleDbCommand command = connection.CreateCommand())
|
||||
{
|
||||
//Unfortunately Access wont let you paramaterize the table name
|
||||
command.CommandText = $"SELECT ModDateTime FROM {Regex.Replace(table, "[^a-zA-Z0-9]", "")} WHERE RecID = @Value";
|
||||
command.Parameters.Add(new System.Data.OleDb.OleDbParameter
|
||||
{
|
||||
OleDbType = System.Data.OleDb.OleDbType.VarChar,
|
||||
ParameterName = "@Value",
|
||||
Value = Recid
|
||||
});
|
||||
return command.ExecuteScalar().ToString();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -1803,9 +1803,9 @@ namespace RODBInterface
|
||||
RecID = reader.GetString(0);
|
||||
MyRecID = RecID;
|
||||
Info = reader.GetString(1);
|
||||
// it's defined in the local table if the first character is "<" which starts
|
||||
// the schema definition string.
|
||||
if ("<" == Info.Substring(0, 1))
|
||||
// it's defined in the local table if the first character is "<" which starts
|
||||
// the schema definition string.
|
||||
if ("<" == Info.Substring(0, 1))
|
||||
{
|
||||
name = ParseEleName(Info);
|
||||
if (name != null)
|
||||
@@ -1859,9 +1859,9 @@ namespace RODBInterface
|
||||
RecID = reader.GetString(0);
|
||||
MyRecID = RecID;
|
||||
Info = reader.GetString(1);
|
||||
// it's defined in the local table if the first character is "<" which starts
|
||||
// the schema definition string.
|
||||
if ("<" == Info.Substring(0, 1))
|
||||
// it's defined in the local table if the first character is "<" which starts
|
||||
// the schema definition string.
|
||||
if ("<" == Info.Substring(0, 1))
|
||||
{
|
||||
name = ParseEleName(Info);
|
||||
if (name != null)
|
||||
@@ -2653,8 +2653,36 @@ namespace RODBInterface
|
||||
}
|
||||
return GrpCnt;
|
||||
}
|
||||
#endregion
|
||||
public static bool TestConnect(string constring)
|
||||
|
||||
//C2026-008 Re-Architect RO.FST to include RO Modification date/time
|
||||
//Get the Modification Date / Time for the RO
|
||||
public override string RODB_GetModDateTime(string Recid, string table)
|
||||
{
|
||||
using (SqlConnection connection = new SqlConnection(strDatabaseConnectionCommand))
|
||||
{
|
||||
connection.Open();
|
||||
using (SqlCommand command = connection.CreateCommand())
|
||||
{
|
||||
command.CommandText = $"SELECT ModDateTime FROM ROALL WHERE RecID = @Value AND ROTable = @table";
|
||||
command.Parameters.Add(new SqlParameter
|
||||
{
|
||||
SqlDbType = SqlDbType.VarChar,
|
||||
ParameterName = "@Value",
|
||||
Value = Recid
|
||||
});
|
||||
command.Parameters.Add(new SqlParameter
|
||||
{
|
||||
SqlDbType = SqlDbType.VarChar,
|
||||
ParameterName = "@table",
|
||||
Value = table
|
||||
});
|
||||
|
||||
return command.ExecuteScalar().ToString();
|
||||
}
|
||||
}
|
||||
}
|
||||
#endregion
|
||||
public static bool TestConnect(string constring)
|
||||
{
|
||||
bool success = false;
|
||||
using (SqlConnection connection = new SqlConnection(constring))
|
||||
|
||||
@@ -96,6 +96,7 @@ using System.IO;
|
||||
using System.Windows.Forms;
|
||||
using ROFields;
|
||||
using VlnStatus;
|
||||
using System.Text.RegularExpressions;
|
||||
//using VlnProfiler; //don't forget to add VlnProfiler to the reference list
|
||||
|
||||
namespace RODBInterface
|
||||
@@ -517,7 +518,8 @@ namespace RODBInterface
|
||||
strtmp.Append(" ");
|
||||
cnt++;
|
||||
}
|
||||
if ((cnt + text.Length) > frmt2) // longer than the field length?
|
||||
text = Regex.Replace(text, @"\\u([0-9]{1,4})\?", m => int.TryParse(m?.Groups[1]?.Value, out int result) ? Convert.ToChar(result).ToString() : ""); //B2026-025 Unicode removed from RO menu titles in treeview.
|
||||
if ((cnt + text.Length) > frmt2) // longer than the field length?
|
||||
strtmp.Append(text.Substring(0,frmt2-cnt));
|
||||
else
|
||||
strtmp.Append(text);
|
||||
|
||||
@@ -19,11 +19,6 @@
|
||||
*********************************************************************************************/
|
||||
|
||||
using System;
|
||||
using System.Drawing;
|
||||
using System.Collections;
|
||||
using System.ComponentModel;
|
||||
using System.Windows.Forms;
|
||||
//using ROProfiler; //don't forget to add VlnProfiler to the reference list
|
||||
|
||||
namespace VlnStatus
|
||||
{
|
||||
@@ -35,11 +30,6 @@ namespace VlnStatus
|
||||
private System.Windows.Forms.ProgressBar progressBar1;
|
||||
private System.Windows.Forms.Label lblBar;
|
||||
private System.Windows.Forms.Label StatMsg;
|
||||
// private string strLblLast="";
|
||||
/// <summary>
|
||||
/// Required designer variable.
|
||||
/// </summary>
|
||||
private System.ComponentModel.Container components = null;
|
||||
|
||||
public StatusBarFrm()
|
||||
{
|
||||
@@ -61,21 +51,6 @@ namespace VlnStatus
|
||||
Text = StatusBoxTitle;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Clean up any resources being used.
|
||||
/// </summary>
|
||||
protected override void Dispose( bool disposing )
|
||||
{
|
||||
if( disposing )
|
||||
{
|
||||
if(components != null)
|
||||
{
|
||||
components.Dispose();
|
||||
}
|
||||
}
|
||||
base.Dispose( disposing );
|
||||
}
|
||||
|
||||
#region Windows Form Designer generated code
|
||||
/// <summary>
|
||||
/// Required method for Designer support - do not modify
|
||||
@@ -190,14 +165,6 @@ namespace VlnStatus
|
||||
{
|
||||
lblBar.Text = (Math.Round((decimal)(progressBar1.Value * 100) / progressBar1.Maximum)).ToString();
|
||||
lblBar.Text += "% Complete";
|
||||
// if( lblBar.Text != strLblLast)
|
||||
// {
|
||||
// Profiler.Start("UpdateLabel");
|
||||
lblBar.Refresh();
|
||||
// lblBar.Update();
|
||||
// Profiler.End("UpdateLabel");
|
||||
// }
|
||||
// strLblLast = lblBar.Text;
|
||||
}
|
||||
|
||||
public string StatusMessage
|
||||
@@ -209,10 +176,7 @@ namespace VlnStatus
|
||||
set
|
||||
{
|
||||
StatMsg.Text = value;
|
||||
// Profiler.Start("StatusMessage");
|
||||
StatMsg.Refresh();
|
||||
// StatMsg.Update();
|
||||
// Profiler.End("StatusMessage");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -17,12 +17,6 @@
|
||||
* Added overbounds check
|
||||
*********************************************************************************************/
|
||||
|
||||
using System;
|
||||
using System.Drawing;
|
||||
using System.Collections;
|
||||
using System.ComponentModel;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace VlnStatus
|
||||
{
|
||||
/// <summary>
|
||||
@@ -31,10 +25,6 @@ namespace VlnStatus
|
||||
public class StatusMessageFrm : System.Windows.Forms.Form
|
||||
{
|
||||
private System.Windows.Forms.Label lblStatMsg;
|
||||
/// <summary>
|
||||
/// Required designer variable.
|
||||
/// </summary>
|
||||
private System.ComponentModel.Container components = null;
|
||||
|
||||
public StatusMessageFrm()
|
||||
{
|
||||
@@ -54,21 +44,6 @@ namespace VlnStatus
|
||||
Text = StatTitle;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Clean up any resources being used.
|
||||
/// </summary>
|
||||
protected override void Dispose( bool disposing )
|
||||
{
|
||||
if( disposing )
|
||||
{
|
||||
if(components != null)
|
||||
{
|
||||
components.Dispose();
|
||||
}
|
||||
}
|
||||
base.Dispose( disposing );
|
||||
}
|
||||
|
||||
#region Windows Form Designer generated code
|
||||
/// <summary>
|
||||
/// Required method for Designer support - do not modify
|
||||
|
||||
@@ -33,7 +33,7 @@ namespace VlnStatus
|
||||
/// </summary>
|
||||
public class VlnStatusBar
|
||||
{
|
||||
StatusBarFrm StatBar;
|
||||
readonly StatusBarFrm StatBar;
|
||||
private int Cnt;
|
||||
|
||||
// Create a status window with the default title of "Status"
|
||||
@@ -53,8 +53,6 @@ namespace VlnStatus
|
||||
// Increament the the status bar by the passed in value.
|
||||
public void PerformStep(int val)
|
||||
{
|
||||
// StatBar.Value = val;
|
||||
// Cnt = val;
|
||||
BarValue = val;
|
||||
StatBar.PerformStep();
|
||||
}
|
||||
@@ -62,7 +60,6 @@ namespace VlnStatus
|
||||
// Increament the the status bar by one
|
||||
public void PerformStep()
|
||||
{
|
||||
// StatBar.Value = StatBar.Value + 1;
|
||||
Cnt++;
|
||||
BarValue = Cnt;
|
||||
StatBar.PerformStep();
|
||||
|
||||
@@ -13,8 +13,6 @@
|
||||
* Added overbounds check
|
||||
*********************************************************************************************/
|
||||
|
||||
using System;
|
||||
|
||||
namespace VlnStatus
|
||||
{
|
||||
/// <summary>
|
||||
@@ -28,7 +26,7 @@ namespace VlnStatus
|
||||
/// </summary>
|
||||
public class VlnStatusMessage
|
||||
{
|
||||
StatusMessageFrm StatusMessageBox;
|
||||
readonly StatusMessageFrm StatusMessageBox;
|
||||
|
||||
// Create a status window with the default title of "Status"
|
||||
public VlnStatusMessage()
|
||||
|
||||
@@ -149,3 +149,4 @@ namespace ctlXMLEditLib
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -203,6 +203,7 @@ using Org.Mentalis.Files;
|
||||
using System.Windows;
|
||||
using System.Text.RegularExpressions;
|
||||
using System.Linq;
|
||||
using Volian.Base.Library;
|
||||
|
||||
|
||||
|
||||
@@ -496,7 +497,7 @@ namespace ctlXMLEditLib
|
||||
foreach (string str in myHT.Keys)
|
||||
{
|
||||
o = myHT[str];
|
||||
hwnd = (roRichTextBox)o;
|
||||
hwnd = (roRichTextBox) o;
|
||||
nd = node.SelectSingleNode(str);
|
||||
// if not found with just the string, search the tree.
|
||||
if (nd==null)nd = node.SelectSingleNode("*/"+str);
|
||||
@@ -685,9 +686,6 @@ namespace ctlXMLEditLib
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
// SaveData saves the data in the element which had been sent to the control. Return
|
||||
// true if success, false if fail.
|
||||
// Note that the Parent and Child XML node variables below are not coding for Parent/Child Applicabily Fields
|
||||
@@ -968,7 +966,7 @@ namespace ctlXMLEditLib
|
||||
{
|
||||
mytextbox.Multiline = true;
|
||||
mytextbox.AcceptsTab = true;
|
||||
mytextbox.Height = (int)mytextbox.Font.GetHeight() * 4;
|
||||
mytextbox.Height = (int) mytextbox.Font.GetHeight() * 4;
|
||||
mytextbox.ScrollBars = RichTextBoxScrollBars.Vertical;
|
||||
zmtooltip.SetToolTip(mytextbox, "Press Shift F2 To Zoom");
|
||||
}
|
||||
@@ -1502,12 +1500,10 @@ namespace ctlXMLEditLib
|
||||
string RO_IDENDITY = RO_IDEN.Substring(1, RO_IDEN.Length - 2); // RO Editor add symbols C2022 - 003 for turning off symbols btn for RO ID.
|
||||
if (textbox.Name == RO_IDENDITY)
|
||||
{
|
||||
//ROEditor.rbtnSymbols.Enabled = false;
|
||||
OnEnableDisableSymbolsBtn(new ctlXMLEditEventArgs(DisplaySymBolBtn:false));
|
||||
}
|
||||
else
|
||||
{
|
||||
//ROEditor.rbtnSymbols.Enabled = true;
|
||||
OnEnableDisableSymbolsBtn(new ctlXMLEditEventArgs(DisplaySymBolBtn:true));
|
||||
}
|
||||
|
||||
@@ -1543,6 +1539,14 @@ namespace ctlXMLEditLib
|
||||
}
|
||||
btnZoom_click(null, null);
|
||||
}
|
||||
if (Clipboard.GetDataObject().GetDataPresent(DataFormats.Text))
|
||||
{
|
||||
if (((kea.Modifiers & Keys.ControlKey) == Keys.ControlKey) && kea.KeyCode == Keys.V)
|
||||
{
|
||||
roRichTextBox o = (roRichTextBox)objSender;
|
||||
o.rchtxtBox_KeyDown(objSender, RO_IDEN);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void btnZoom_click(object sender, System.EventArgs e)
|
||||
@@ -2012,6 +2016,7 @@ namespace ctlXMLEditLib
|
||||
return curTZ.GetDaylightChanges(year);
|
||||
}
|
||||
}
|
||||
|
||||
public class ctlXMLEditEventArgs : EventArgs // RO Editor add symbols C2022 - 003 for turning off symbols btn for RO ID.
|
||||
{
|
||||
public ctlXMLEditEventArgs() {; }
|
||||
|
||||
@@ -126,6 +126,9 @@
|
||||
<Reference Include="System.Xml">
|
||||
<Name>System.XML</Name>
|
||||
</Reference>
|
||||
<Reference Include="Volian.Base.Library">
|
||||
<HintPath>..\..\..\Volian.Base.Library\bin\Debug\Volian.Base.Library.dll</HintPath>
|
||||
</Reference>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="AssemblyInfo.cs">
|
||||
|
||||
@@ -7,6 +7,7 @@ using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
using Volian.Base.Library;
|
||||
|
||||
namespace ctlXMLEditLib
|
||||
{
|
||||
@@ -16,16 +17,84 @@ namespace ctlXMLEditLib
|
||||
{
|
||||
InitializeComponent();
|
||||
}
|
||||
|
||||
private string _RtfPrefix; // contains Font table and styles (bold/underline/italics) for rtb from step style
|
||||
public string RtfPrefixForSymbols
|
||||
{
|
||||
get
|
||||
{
|
||||
//B2020-100 RHM Use SelectionFont rather than the font from the format file.
|
||||
StringBuilder selectedRtfSB = new StringBuilder();
|
||||
AddFontTable(selectedRtfSB, FormatFont, true);
|
||||
_RtfPrefix = selectedRtfSB.ToString();
|
||||
return _RtfPrefix + @"\f1\fs" + 10 * 2 + " ";
|
||||
}
|
||||
}
|
||||
public void InsertSymbol( int symbcode)
|
||||
{
|
||||
int position = this.SelectionStart;
|
||||
string sym = string.Format(symbcode < 256 ? "\'{0:X2}" : @"\u{0}", symbcode);
|
||||
string RtfPrefixForSymbols = @"{\rtf1\ansi\ansicpg1252\deff0\deflang1033{\fonttbl{\f0\fnil\fcharset2 FreeMono; } {\f1\fnil\fcharset0 FreeMono; } } {\colortbl;\red255\green0\blue0;\red0\green0\blue255; } \viewkind4\uc1\pard\fs24 \f1\fs24 ";
|
||||
string sym = symbcode < 256 ? ((char)symbcode).ToString() : string.Format(@"\u{0}", symbcode);
|
||||
this.SelectedRtf = RtfPrefixForSymbols + sym + @"}";
|
||||
this.SelectedRtf = @"{\rtf1\ansi\ansicpg1252\deff0\deflang1033\uc1 }";
|
||||
this.Select(position, 0); this.SelectedRtf = @"{\rtf1\ansi\ansicpg1252\deff0\deflang1033\uc1 }";
|
||||
this.Select(position, 0);
|
||||
Select(position, -1);
|
||||
Select(position + 1, 0);
|
||||
}
|
||||
public void rchtxtBox_KeyDown(object sender,string RO_IDEN) // C2022-003 code used to prevent a symbol from being inserted into RO ID.
|
||||
{
|
||||
bool symFlg = false;
|
||||
|
||||
roRichTextBox o = (roRichTextBox)sender;
|
||||
if (o.Name == RO_IDEN)
|
||||
{
|
||||
if (Clipboard.GetDataObject().GetDataPresent(DataFormats.Text))
|
||||
{
|
||||
string clpBrd = Clipboard.GetText();
|
||||
if (clpBrd.Any(c => c > 166))
|
||||
{
|
||||
MessageBox.Show("Symbols are not allowed in the field. Clipbroad: '" + clpBrd + "'");
|
||||
Clipboard.Clear();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
private static void AddFontTable(StringBuilder selectedRtfSB, Font myFont, bool isFixed)
|
||||
{
|
||||
StringBuilder sbbeg = new StringBuilder();
|
||||
StringBuilder sbend = new StringBuilder();
|
||||
if (myFont.Bold)
|
||||
{
|
||||
sbbeg.Append(@"\b");
|
||||
sbend.Append(@"\b0");
|
||||
}
|
||||
if (myFont.Underline)
|
||||
{
|
||||
sbbeg.Append(@"\ul");
|
||||
sbend.Insert(0, @"\ulnone");
|
||||
}
|
||||
if (myFont.Italic)
|
||||
{
|
||||
sbbeg.Append(@"\i");
|
||||
sbend.Insert(0, @"\i0");
|
||||
}
|
||||
// RO Editor add symbols C2022-003
|
||||
selectedRtfSB.Append(@"{\rtf1\ansi\ansicpg1252\deff0\deflang1033{\fonttbl{\f0\fnil\fcharset2 " + myFont.FontFamily.Name + @";}");
|
||||
selectedRtfSB.Append(@"{\f1\fnil\fcharset0 FreeMono;}}{\colortbl ;\red255\green0\blue0;\red0\green0\blue255;}"); // FreeMono is now used for symbols display.
|
||||
selectedRtfSB.Append("\r\n");
|
||||
selectedRtfSB.Append(@"\viewkind4\uc1\pard" + sbbeg.ToString() + @"\fs" + Convert.ToInt32(myFont.SizeInPoints * 2).ToString() + @" ");
|
||||
}
|
||||
private Font _FormatFont;
|
||||
public Font FormatFont
|
||||
{
|
||||
get
|
||||
{
|
||||
if (_FormatFont == null)
|
||||
{
|
||||
Font formatFont;
|
||||
formatFont = Font;
|
||||
_FormatFont = formatFont;
|
||||
}
|
||||
return _FormatFont;
|
||||
}
|
||||
set { _FormatFont = value; }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,8 @@
|
||||
// This file is used by Code Analysis to maintain SuppressMessage
|
||||
// attributes that are applied to this project.
|
||||
// Project-level suppressions either have no target or are given
|
||||
// a specific target and scoped to a namespace, type, member, etc.
|
||||
|
||||
using System.Diagnostics.CodeAnalysis;
|
||||
|
||||
[assembly: SuppressMessage("Style", "IDE1006:Naming Styles", Justification = "Not modifying Naming Styles")]
|
||||
@@ -1,7 +1,4 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace RoAccessToSql
|
||||
|
||||
@@ -1,16 +1,10 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Data;
|
||||
using System.IO;
|
||||
using System.Drawing;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
using System.Data.SqlClient;
|
||||
using System.Data.OleDb;
|
||||
using Volian.Base.Library;
|
||||
|
||||
[assembly: log4net.Config.XmlConfigurator(Watch = true)]
|
||||
|
||||
@@ -33,25 +27,11 @@ namespace RoAccessToSql
|
||||
public partial class RoAccessToSql : Form
|
||||
{
|
||||
private static readonly log4net.ILog _MyLog = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
|
||||
private string _MSAccessPath = null;
|
||||
public string MSAccessPath
|
||||
{
|
||||
get { return _MSAccessPath; }
|
||||
set { _MSAccessPath = value; }
|
||||
}
|
||||
private string _SqlServerName = null;
|
||||
public string SqlServerName
|
||||
{
|
||||
get { return _SqlServerName; }
|
||||
set { _SqlServerName = value; }
|
||||
}
|
||||
private string _SqlDatabaseName = null;
|
||||
public string SqlDatabaseName
|
||||
{
|
||||
get { return _SqlDatabaseName; }
|
||||
set { _SqlDatabaseName = value; }
|
||||
}
|
||||
bool _Initializing = false;
|
||||
|
||||
public string MSAccessPath { get; set; } = null;
|
||||
public string SqlServerName { get; set; } = null;
|
||||
public string SqlDatabaseName { get; set; } = null;
|
||||
readonly bool _Initializing = false;
|
||||
|
||||
public RoAccessToSql(string[] args)
|
||||
{
|
||||
@@ -66,7 +46,7 @@ namespace RoAccessToSql
|
||||
}
|
||||
else if (parm.StartsWith("/sqldb="))
|
||||
{
|
||||
SqlDatabaseName = parm.Substring(7) + "_RO";
|
||||
SqlDatabaseName = $"{parm.Substring(7)}_RO";
|
||||
}
|
||||
else if (parm.StartsWith("/server="))
|
||||
{
|
||||
@@ -92,7 +72,7 @@ namespace RoAccessToSql
|
||||
if (UserInRoEditor()) this.Close();
|
||||
tbSqlDbName.Text = SqlDatabaseName;
|
||||
_TmpFileForConnectStr = Path.GetTempPath();
|
||||
_TmpFileForConnectStr = _TmpFileForConnectStr + @"\PromsConnect.txt";
|
||||
_TmpFileForConnectStr += @"\PromsConnect.txt";
|
||||
File.Delete(_TmpFileForConnectStr);
|
||||
_Initializing = false;
|
||||
}
|
||||
@@ -100,10 +80,10 @@ namespace RoAccessToSql
|
||||
private bool UserInRoEditor()
|
||||
{
|
||||
FileInfo fiown = null;
|
||||
FileStream fsown = null;
|
||||
// The following code was taken from the roeditor. It uses the 'RoEditor.own' file to assure that
|
||||
// no one is in the roeditor. This file is located in the microsoft access database directory.
|
||||
try
|
||||
FileStream fsown;
|
||||
// The following code was taken from the roeditor. It uses the 'RoEditor.own' file to assure that
|
||||
// no one is in the roeditor. This file is located in the microsoft access database directory.
|
||||
try
|
||||
{
|
||||
string filename = MSAccessPath + @"\RoEditor.own";
|
||||
fiown = new FileInfo(filename);
|
||||
@@ -119,7 +99,7 @@ namespace RoAccessToSql
|
||||
fsown = fiown.Open(FileMode.Open, FileAccess.Read, FileShare.ReadWrite);
|
||||
TextReader tr1 = new StreamReader(fsown);
|
||||
string who1 = tr1.ReadToEnd();
|
||||
MessageBox.Show(ex.Message + "\r\n\r\n" + who1, "RO Editor In Use", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
|
||||
MessageBox.Show($"{ex.Message}\r\n\r\n{who1}", "RO Editor In Use", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
|
||||
}
|
||||
fsown = fiown.Open(FileMode.OpenOrCreate, FileAccess.Read, FileShare.ReadWrite);
|
||||
TextReader tr = new StreamReader(fsown);
|
||||
@@ -142,8 +122,8 @@ namespace RoAccessToSql
|
||||
tw.WriteLine("Current User: {0}, Date and Time Started: {1}", Environment.UserName.ToUpper(), DateTime.Now.ToString("MM/dd/yyyy @ hh:mm"));
|
||||
tw.Flush();
|
||||
}
|
||||
catch (IOException ex)
|
||||
{
|
||||
catch (IOException)
|
||||
{
|
||||
fsown = fiown.Open(FileMode.Open, FileAccess.Read, FileShare.ReadWrite);
|
||||
TextReader tr = new StreamReader(fsown);
|
||||
string who = tr.ReadToEnd();
|
||||
@@ -154,25 +134,20 @@ namespace RoAccessToSql
|
||||
}
|
||||
return false;
|
||||
}
|
||||
static string _ErrorLogFileName;
|
||||
public static string ErrorLogFileName
|
||||
{
|
||||
get { return _ErrorLogFileName; }
|
||||
set { _ErrorLogFileName = value; }
|
||||
}
|
||||
// make error log file name (uses same logic as proms error log)
|
||||
static bool ChangeLogFileName(string AppenderName, string NewFilename)
|
||||
|
||||
public static string ErrorLogFileName { get; set; }
|
||||
// make error log file name (uses same logic as proms error log)
|
||||
static bool ChangeLogFileName(string AppenderName, string NewFilename)
|
||||
{
|
||||
log4net.Repository.ILoggerRepository RootRep;
|
||||
RootRep = log4net.LogManager.GetRepository();
|
||||
foreach (log4net.Appender.IAppender iApp in RootRep.GetAppenders())
|
||||
{
|
||||
if (iApp.Name.CompareTo(AppenderName) == 0
|
||||
&& iApp is log4net.Appender.FileAppender)
|
||||
{
|
||||
log4net.Appender.FileAppender fApp = (log4net.Appender.FileAppender)iApp;
|
||||
&& iApp is log4net.Appender.FileAppender fApp)
|
||||
{
|
||||
string folderPath = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
|
||||
fApp.File = folderPath + @"\VEPROMS\" + (Volian.Base.Library.VlnSettings.GetCommand("prefix", "") + "_").TrimStart("_".ToCharArray()) + NewFilename;
|
||||
fApp.File = $@"{folderPath}\VEPROMS\{($"{Volian.Base.Library.VlnSettings.GetCommand("prefix", "")}_").TrimStart("_".ToCharArray())}{NewFilename}";
|
||||
ErrorLogFileName = fApp.File;
|
||||
fApp.ActivateOptions();
|
||||
return true;
|
||||
@@ -189,7 +164,7 @@ namespace RoAccessToSql
|
||||
if (Directory.Exists(fbd.SelectedPath))
|
||||
tbAccessPath.Text = fbd.SelectedPath;
|
||||
else
|
||||
MessageBox.Show("Path doesn't exist " + tbAccessPath.Text);
|
||||
MessageBox.Show($"Path doesn't exist {tbAccessPath.Text}");
|
||||
}
|
||||
}
|
||||
// Convert the data
|
||||
@@ -212,7 +187,7 @@ namespace RoAccessToSql
|
||||
{
|
||||
DateTime dtSunday = DateTime.Now.AddDays(-((int)DateTime.Now.DayOfWeek));
|
||||
|
||||
ChangeLogFileName("LogFileAppender", SqlDatabaseName + " " + dtSunday.ToString("yyyyMMdd") + " ErrorLog.txt");
|
||||
ChangeLogFileName("LogFileAppender", $"{SqlDatabaseName} {dtSunday:yyyyMMdd} ErrorLog.txt");
|
||||
_MyLog.InfoFormat("\r\nSession Beginning\r\n<===={0}[SQL:{1:yyMM.ddHH}]====== User: {2}/{3} Started {4} ===============>{5}"
|
||||
, Application.ProductVersion, RevDate, DateTime.Now, Environment.UserDomainName, Environment.UserName, DateTime.Now.ToString("dddd MMMM d, yyyy h:mm:ss tt"), "");
|
||||
}
|
||||
@@ -229,7 +204,7 @@ namespace RoAccessToSql
|
||||
if (sqlConnection.State == ConnectionState.Open)
|
||||
{
|
||||
// now try to open access db:
|
||||
string strDatabaseConnectionCommand = "Provider=Microsoft.ACE.OLEDB.12.0;Password=\"\";User ID=Admin;Data Source=" + MSAccessPath + "\\ROMaster.mdb;Mode=Share Deny None;Extended Properties=\"\";Jet OLEDB:System database=\"\";Jet OLEDB:Registry Path=\"\";Jet OLEDB:Database Password=\"\";Jet OLEDB:Engine Type=5;Jet OLEDB:Database Locking Mode=1;Jet OLEDB:Global Partial Bulk Ops=2;Jet OLEDB:Global Bulk Transactions=1;Jet OLEDB:New Database Password=\"\";Jet OLEDB:Create System Database=False;Jet OLEDB:Encrypt Database=False;Jet OLEDB:Don't Copy Locale on Compact=False;Jet OLEDB:Compact Without Replica Repair=False;Jet OLEDB:SFP=False";
|
||||
string strDatabaseConnectionCommand = $"Provider=Microsoft.ACE.OLEDB.12.0;Password=\"\";User ID=Admin;Data Source={MSAccessPath}\\ROMaster.mdb;Mode=Share Deny None;Extended Properties=\"\";Jet OLEDB:System database=\"\";Jet OLEDB:Registry Path=\"\";Jet OLEDB:Database Password=\"\";Jet OLEDB:Engine Type=5;Jet OLEDB:Database Locking Mode=1;Jet OLEDB:Global Partial Bulk Ops=2;Jet OLEDB:Global Bulk Transactions=1;Jet OLEDB:New Database Password=\"\";Jet OLEDB:Create System Database=False;Jet OLEDB:Encrypt Database=False;Jet OLEDB:Don't Copy Locale on Compact=False;Jet OLEDB:Compact Without Replica Repair=False;Jet OLEDB:SFP=False";
|
||||
using (OleDbConnection accessConnection = new OleDbConnection(strDatabaseConnectionCommand))
|
||||
{
|
||||
try
|
||||
@@ -251,13 +226,13 @@ namespace RoAccessToSql
|
||||
}
|
||||
else
|
||||
{
|
||||
_MyLog.Error("SQL Connection is not open. Check connection string: " + tbSqlDbName.Text);
|
||||
MessageBox.Show("Check connection string: " + tbSqlDbName.Text, "SQL Connection is not open.");
|
||||
_MyLog.Error($"SQL Connection is not open. Check connection string: {tbSqlDbName.Text}");
|
||||
MessageBox.Show($"Check connection string: {tbSqlDbName.Text}", "SQL Connection is not open.");
|
||||
}
|
||||
}
|
||||
catch (SqlException ex)
|
||||
{
|
||||
_MyLog.Error("SQL Connection is not open. Check connection string: " + tbSqlDbName.Text);
|
||||
_MyLog.Error($"SQL Connection is not open. Check connection string: {tbSqlDbName.Text}");
|
||||
MessageBox.Show(ex.Message, "Unknown error when migrating RO data from MS Access to SQL");
|
||||
}
|
||||
}
|
||||
@@ -274,11 +249,10 @@ namespace RoAccessToSql
|
||||
lastTimeDbs = ProgressBarUpdate(pBarDbs, null, 0, 1, 0, 0, lastTimeDbs, false);
|
||||
lastTimeRos = ProgressBarUpdate(pBarROs, null, 0, maxCntRo, 0, 0, lastTimeRos, false);
|
||||
lastTimeDbs = ProgressBarUpdate(pBarDbs, "ROMaster Table", 0, 5, 0, 1, lastTimeDbs, false);
|
||||
OleDbDataReader reader = null;
|
||||
OleDbCommand command = new OleDbCommand("select * from ROMaster", accessConnection);
|
||||
reader = command.ExecuteReader();
|
||||
// Do access's romaster table first so that the list of other tables to process is found. While doing this, migrate this table's data.
|
||||
int cntRo = 0;
|
||||
OleDbCommand command = new OleDbCommand("select * from ROMaster", accessConnection);
|
||||
OleDbDataReader reader = command.ExecuteReader();
|
||||
// Do access's romaster table first so that the list of other tables to process is found. While doing this, migrate this table's data.
|
||||
int cntRo = 0;
|
||||
int cntDb = 0;
|
||||
int maxCntDb = 0;
|
||||
while (reader.Read()) // reading from Access Database
|
||||
@@ -303,13 +277,12 @@ namespace RoAccessToSql
|
||||
maxCntDb++;
|
||||
}
|
||||
}
|
||||
lastTimeRos = ProgressBarUpdate(pBarROs, "ROMaster", 0, maxCntRo, maxCntRo, 1, lastTimeRos, true);
|
||||
ProgressBarUpdate(pBarROs, "ROMaster", 0, maxCntRo, maxCntRo, 1, lastTimeRos, true);
|
||||
lastTimeDbs = ProgressBarUpdate(pBarDbs, null, 0, maxCntDb, 0, 0, lastTimeDbs, false);
|
||||
reader.Close();
|
||||
reader = null;
|
||||
|
||||
// now migrate all the tables that were found
|
||||
foreach (string tableName in allTables)
|
||||
|
||||
// now migrate all the tables that were found
|
||||
foreach (string tableName in allTables)
|
||||
{
|
||||
lastTimeRos = DateTime.Now;
|
||||
cntRo = 0;
|
||||
@@ -318,7 +291,7 @@ namespace RoAccessToSql
|
||||
lastTimeRos = ProgressBarUpdate(pBarROs, null, 0, maxCntRo, 0, 0, lastTimeRos, true);
|
||||
lastTimeDbs = ProgressBarUpdate(pBarDbs, allTablesText[cntDb], 0, maxCntDb, cntDb, 1, lastTimeDbs, false);
|
||||
command = null;
|
||||
command = new OleDbCommand("select * from " + tableName, accessConnection);
|
||||
command = new OleDbCommand($"select * from {tableName}", accessConnection);
|
||||
reader = command.ExecuteReader();
|
||||
while (reader.Read()) // read all of the records from the current access table
|
||||
{
|
||||
@@ -338,7 +311,7 @@ namespace RoAccessToSql
|
||||
reader = null;
|
||||
lastTimeRos = ProgressBarUpdate(pBarROs, tableName, 0, maxCntRo, maxCntRo, 1, lastTimeRos, false);
|
||||
}
|
||||
lastTimeDbs = ProgressBarUpdate(pBarDbs, allTablesText[maxCntDb - 1], 0, maxCntDb, maxCntDb, 1, lastTimeDbs, false);
|
||||
ProgressBarUpdate(pBarDbs, allTablesText[maxCntDb - 1], 0, maxCntDb, maxCntDb, 1, lastTimeDbs, false);
|
||||
pBarDbs.Text = "Referenced Object Tables Migration Completed";
|
||||
pBarROs.Text = "Referenced Objects Migration Completed";
|
||||
btnConvert.Enabled = false;
|
||||
@@ -357,7 +330,7 @@ namespace RoAccessToSql
|
||||
string dt = string.Format("{0:yyyyMMddHHmmss}", System.DateTime.Now);
|
||||
string strInsert = "INSERT INTO ROMaster (RecID, RecType, ModDateTime, Info) ";
|
||||
// note that '8' for rectype flags database converted:
|
||||
strInsert = strInsert + " VALUES ('09999999', 8, '" + dt + "', '" + _SqlConnectStr + "');";
|
||||
strInsert = $"{strInsert} VALUES ('09999999', 8, '{dt}', '{_SqlConnectStr}');";
|
||||
OleDbCommand command = new OleDbCommand(strInsert, accessConnection);
|
||||
reader = command.ExecuteReader();
|
||||
if (reader.Read()) return;
|
||||
@@ -367,7 +340,7 @@ namespace RoAccessToSql
|
||||
MessageBox.Show(e.Message, "Error on insert to flag migration completed");
|
||||
}
|
||||
}
|
||||
private string _TmpFileForConnectStr = null;
|
||||
private readonly string _TmpFileForConnectStr = null;
|
||||
private void WriteSqlPathToTempFile()
|
||||
{
|
||||
System.IO.File.WriteAllText(_TmpFileForConnectStr, _SqlConnectStr);
|
||||
@@ -375,13 +348,12 @@ namespace RoAccessToSql
|
||||
// the following is used to update the progress bars, it finds how many records are in a table.
|
||||
private int GetRecordCountForTable(string tableName, OleDbConnection accessConnection)
|
||||
{
|
||||
OleDbDataReader reader = null;
|
||||
int retcnt = 100;
|
||||
int retcnt = 100;
|
||||
try
|
||||
{
|
||||
OleDbCommand command = new OleDbCommand("SELECT COUNT (RecID) as cnt FROM " + tableName, accessConnection);
|
||||
reader = command.ExecuteReader();
|
||||
if (reader.Read())
|
||||
OleDbCommand command = new OleDbCommand($"SELECT COUNT (RecID) as cnt FROM {tableName}", accessConnection);
|
||||
OleDbDataReader reader = command.ExecuteReader();
|
||||
if (reader.Read())
|
||||
{
|
||||
retcnt = reader.GetInt32(0);
|
||||
}
|
||||
@@ -393,7 +365,8 @@ namespace RoAccessToSql
|
||||
}
|
||||
return retcnt;
|
||||
}
|
||||
DateTime ProgressBarUpdate(DevComponents.DotNetBar.Controls.ProgressBarX pbi, string msg, int min, int max, int progress, int flag, DateTime lastUpdateDisplay, bool doTimeCheck)
|
||||
[System.Diagnostics.CodeAnalysis.SuppressMessage("Style", "IDE0060:Remove unused parameter", Justification = "Keeping min for Debugging")]
|
||||
DateTime ProgressBarUpdate(DevComponents.DotNetBar.Controls.ProgressBarX pbi, string msg, int min, int max, int progress, int flag, DateTime lastUpdateDisplay, bool doTimeCheck)
|
||||
{
|
||||
if (flag == 0) // setup
|
||||
pbi.Maximum = max;
|
||||
@@ -412,11 +385,13 @@ namespace RoAccessToSql
|
||||
{
|
||||
try
|
||||
{
|
||||
SqlCommand command = new SqlCommand();
|
||||
command.Connection = sqlConnection;
|
||||
command.CommandType = CommandType.StoredProcedure;
|
||||
command.CommandText = "insertAllRectypes";
|
||||
command.Parameters.AddWithValue("@RecType", RecType);
|
||||
SqlCommand command = new SqlCommand
|
||||
{
|
||||
Connection = sqlConnection,
|
||||
CommandType = CommandType.StoredProcedure,
|
||||
CommandText = "insertAllRectypes"
|
||||
};
|
||||
command.Parameters.AddWithValue("@RecType", RecType);
|
||||
if (AccPageID == null || AccPageID == "")
|
||||
command.Parameters.AddWithValue("@AccPageID", string.Empty);
|
||||
else
|
||||
@@ -428,9 +403,8 @@ namespace RoAccessToSql
|
||||
command.Parameters.AddWithValue("@ModDateTime", ModDateTime);
|
||||
using (SqlDataReader reader = command.ExecuteReader())
|
||||
{
|
||||
bool success = true;
|
||||
}
|
||||
command = null;
|
||||
}
|
||||
command = null;
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
@@ -438,32 +412,15 @@ namespace RoAccessToSql
|
||||
_MyLog.Error(msg, ex);
|
||||
}
|
||||
}
|
||||
private void btnExit_Click(object sender, EventArgs e)
|
||||
{
|
||||
this.Close();
|
||||
}
|
||||
// the user selected the button to test the sql connection string
|
||||
private void btnTestConnect_Click(object sender, EventArgs e)
|
||||
{
|
||||
TestConnection(true);
|
||||
}
|
||||
// the RevDate & RevDescription are found in a stored procedure, vesp_GetSQLCodeRevision, in the sql database. These get updated each
|
||||
// time a revision is made to the sql database using ROFixes.sql script.
|
||||
private static DateTime _RevDate = DateTime.MinValue;
|
||||
public static DateTime RevDate
|
||||
{
|
||||
get { return _RevDate; }
|
||||
set { _RevDate = value; }
|
||||
}
|
||||
private static string _RevDescription = "Unknown";
|
||||
public static string RevDescription
|
||||
{
|
||||
get { return _RevDescription; }
|
||||
set { _RevDescription = value; }
|
||||
}
|
||||
// This is called to test the sql connection, either from the button when pressed by user, or from the convert button, before
|
||||
// the conversion is done. See below for what is checked
|
||||
private bool TestConnection(bool notifyUser)
|
||||
private void btnExit_Click(object sender, EventArgs e) => this.Close();
|
||||
// the user selected the button to test the sql connection string
|
||||
private void btnTestConnect_Click(object sender, EventArgs e) => TestConnection(true);
|
||||
|
||||
public static DateTime RevDate { get; set; } = DateTime.MinValue;
|
||||
public static string RevDescription { get; set; } = "Unknown";
|
||||
// This is called to test the sql connection, either from the button when pressed by user, or from the convert button, before
|
||||
// the conversion is done. See below for what is checked
|
||||
private bool TestConnection(bool notifyUser)
|
||||
{
|
||||
// The following conditions must be true in order to migrate the ro data to sql. Only the first condition can be
|
||||
// tested in this executable since the roall database is interfaced to by the roeditor & the program that migrates the data.
|
||||
@@ -485,12 +442,14 @@ namespace RoAccessToSql
|
||||
connection.Open();
|
||||
if (connection.State == ConnectionState.Open)
|
||||
{
|
||||
// now see if there is an roall table
|
||||
SqlCommand command = new SqlCommand();
|
||||
command.Connection = connection;
|
||||
command.CommandType = CommandType.Text;
|
||||
command.CommandText = "(SELECT count(*) FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[ROALL]') AND type in (N'U'))";
|
||||
using (SqlDataReader reader = command.ExecuteReader())
|
||||
// now see if there is an roall table
|
||||
SqlCommand command = new SqlCommand
|
||||
{
|
||||
Connection = connection,
|
||||
CommandType = CommandType.Text,
|
||||
CommandText = "(SELECT count(*) FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[ROALL]') AND type in (N'U'))"
|
||||
};
|
||||
using (SqlDataReader reader = command.ExecuteReader())
|
||||
{
|
||||
if (reader.Read())
|
||||
{
|
||||
@@ -509,11 +468,13 @@ namespace RoAccessToSql
|
||||
{
|
||||
// now see if there are stored procedures:
|
||||
command = null; // reset command
|
||||
command = new SqlCommand();
|
||||
command.Connection = connection;
|
||||
command.CommandType = CommandType.Text;
|
||||
command.CommandText = "(SELECT count(*) FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[deleteByROTable]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1)";
|
||||
using (SqlDataReader reader = command.ExecuteReader())
|
||||
command = new SqlCommand
|
||||
{
|
||||
Connection = connection,
|
||||
CommandType = CommandType.Text,
|
||||
CommandText = "(SELECT count(*) FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[deleteByROTable]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1)"
|
||||
};
|
||||
using (SqlDataReader reader = command.ExecuteReader())
|
||||
{
|
||||
if (reader.Read())
|
||||
{
|
||||
@@ -533,11 +494,13 @@ namespace RoAccessToSql
|
||||
{
|
||||
// now test that the roall table is empty:
|
||||
command = null; // reset command
|
||||
command = new SqlCommand();
|
||||
command.Connection = connection;
|
||||
command.CommandType = CommandType.Text;
|
||||
command.CommandText = "SELECT count(*) FROM roall";
|
||||
using (SqlDataReader reader = command.ExecuteReader())
|
||||
command = new SqlCommand
|
||||
{
|
||||
Connection = connection,
|
||||
CommandType = CommandType.Text,
|
||||
CommandText = "SELECT count(*) FROM roall"
|
||||
};
|
||||
using (SqlDataReader reader = command.ExecuteReader())
|
||||
{
|
||||
if (reader.Read())
|
||||
{
|
||||
@@ -557,16 +520,18 @@ namespace RoAccessToSql
|
||||
{
|
||||
// now test that the database version is ok
|
||||
command = null; // reset command
|
||||
command = new SqlCommand();
|
||||
command.Connection = connection;
|
||||
command.CommandType = CommandType.StoredProcedure;
|
||||
command.CommandText = "vesp_GetSQLCodeRevision";
|
||||
using (SqlDataReader reader = command.ExecuteReader())
|
||||
command = new SqlCommand
|
||||
{
|
||||
Connection = connection,
|
||||
CommandType = CommandType.StoredProcedure,
|
||||
CommandText = "vesp_GetSQLCodeRevision"
|
||||
};
|
||||
using (SqlDataReader reader = command.ExecuteReader())
|
||||
{
|
||||
if (reader.Read())
|
||||
{
|
||||
_RevDate = reader.GetDateTime(0);
|
||||
_RevDescription = reader.GetString(1);
|
||||
RevDate = reader.GetDateTime(0);
|
||||
RevDescription = reader.GetString(1);
|
||||
dbsuc = true;
|
||||
}
|
||||
else
|
||||
@@ -582,13 +547,13 @@ namespace RoAccessToSql
|
||||
}
|
||||
catch (SqlException ex)
|
||||
{
|
||||
if (notifyUser) MessageBox.Show("Connection failed: " + ex, "Connection Failed");
|
||||
if (notifyUser) MessageBox.Show($"Connection failed: {ex}", "Connection Failed");
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
if (notifyUser) MessageBox.Show("Connection failed: " + ex, "Connection Failed");
|
||||
if (notifyUser) MessageBox.Show($"Connection failed: {ex}", "Connection Failed");
|
||||
}
|
||||
|
||||
if (notifyUser && success) MessageBox.Show("You have been successfully connected to the database!", "Connection Succeeded");
|
||||
|
||||
@@ -66,6 +66,7 @@
|
||||
</Reference>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="GlobalSuppressions.cs" />
|
||||
<Compile Include="RoAccessToSql.cs">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
|
||||
@@ -0,0 +1,147 @@
|
||||
/*****************************************************************************
|
||||
Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE
|
||||
Copyright 2026 - Volian Enterprises, Inc. All rights reserved.
|
||||
*****************************************************************************/
|
||||
|
||||
-- =============================================
|
||||
-- Author: Matthew Schill
|
||||
-- Create date: 03/20/2026
|
||||
-- Description: Script to consolidate Cover Pages for Barakah
|
||||
-- by Converting multi-unit procedures with Cover Pages
|
||||
-- to use 1 Library Document Cover Page
|
||||
-- =============================================
|
||||
|
||||
select Contents.ContentID
|
||||
, Contenttext = Contents.Text
|
||||
, Items.ItemID
|
||||
, tblDocuments.DocID
|
||||
, ParentContentID
|
||||
, ParentItemID
|
||||
, LibTitle = ISNULL(LibTitle,'')
|
||||
, numLibCP
|
||||
, numCP
|
||||
,BaseFlag = 0
|
||||
INTO #tmpUpdate
|
||||
from Contents
|
||||
inner join Entries on Contents.ContentID = Entries.ContentID
|
||||
inner join tblDocuments on tblDocuments.DocID = Entries.DocID
|
||||
inner join Items on Items.ContentID = Contents.ContentID
|
||||
outer apply
|
||||
(select ParentContentID=ContentID, ParentItemID = PItm.ItemID
|
||||
FROM dbo.vefn_ParentItems(Items.ItemID) PItm
|
||||
where PItm.ItemID <> Items.ItemID
|
||||
) parent
|
||||
outer apply
|
||||
(select numLibCP = Count(*)
|
||||
FROM dbo.vefn_ChildItems(ParentItemID) PItm
|
||||
INNER JOIN Contents on Contents.ContentID = PItm.ContentID
|
||||
INNER JOIN Entries on Contents.ContentID = Entries.ContentID
|
||||
INNER JOIN tblDocuments on tblDocuments.DocID = Entries.DocID
|
||||
where PItm.ItemID <> ParentItemID
|
||||
AND Contents.text like 'Cover Page%' and ISNULL(tblDocuments.LibTitle,'') <> ''
|
||||
) childWithLibTitle
|
||||
outer apply
|
||||
(select numCP = Count(*)
|
||||
FROM dbo.vefn_ChildItems(ParentItemID) PItm
|
||||
INNER JOIN Contents on Contents.ContentID = PItm.ContentID
|
||||
where PItm.ItemID <> ParentItemID
|
||||
AND Contents.text like 'Cover Page%'
|
||||
) child
|
||||
where Contents.text like 'Cover Page%'
|
||||
order by ParentContentID asc, CASE WHEN ISNULL(LibTitle,'') <> '' THEN 1 ELSE 2 END asc, Contents.Text asc
|
||||
|
||||
UPDATE #tmpUpdate SET BaseFlag = 1 where LibTitle <> '' and numLibCP = 1
|
||||
|
||||
UPDATE #tmpUpdate SET BaseFlag = CASE WHEN tU.LibTitle <> '' THEN 1 ELSE 2 END FROM #tmpUpdate tU
|
||||
where BaseFlag = 0 AND tU.ContentID IN
|
||||
(
|
||||
Select ContentID FROM
|
||||
(SELECT sub.ContentID,
|
||||
row_number() OVER(PARTITION BY sub.ParentContentID ORDER BY CASE WHEN ISNULL(sub.LibTitle,'') <> '' THEN 1 ELSE 2 END asc, sub.Contenttext asc) as pos
|
||||
FROM #tmpUpdate sub
|
||||
) x
|
||||
WHERE x.pos = 1
|
||||
)
|
||||
|
||||
declare @Cont TABLE
|
||||
(
|
||||
ContentID int,
|
||||
ItemID int,
|
||||
xConfig xml
|
||||
)
|
||||
insert into @Cont
|
||||
SELECT tU.ContentID, ItemID, xConfig = CAST(tblContents.config AS xml) FROM
|
||||
tblContents
|
||||
INNER JOIN
|
||||
#tmpUpdate tU ON tU.ContentID = tblContents.ContentID
|
||||
where tU.BaseFlag > 0
|
||||
|
||||
Update @Cont Set xConfig.modify('delete //MasterSlave') From @Cont;
|
||||
|
||||
Update tblContents SET Text = 'Cover Page', Config = CAST(xConfig AS varchar(max)),
|
||||
DTS = GETDATE(), UserID = 'CPVolian2026'
|
||||
FROM
|
||||
@Cont CNT INNER JOIN
|
||||
tblContents ON CNT.ContentID = tblContents.ContentID;
|
||||
|
||||
--Update items PreviousIds
|
||||
UPDATE tblItems Set PreviousID = IdToSwapTO.ItemID
|
||||
FROM
|
||||
tblItems
|
||||
INNER JOIN
|
||||
#tmpUpdate tU ON tblItems.PreviousID = tU.ItemID AND tU.BaseFlag = 0
|
||||
INNER JOIN #tmpUpdate IdToSwapTO ON IdToSwapTO.ParentContentID = tU.ParentContentID AND IdToSwapTO.BaseFlag IN (1,2)
|
||||
|
||||
UPDATE tblItems Set DeleteStatus = 1, DTS = GETDATE(), UserID = 'CPVolian2026'
|
||||
FROM
|
||||
#tmpUpdate tU INNER JOIN
|
||||
tblItems ON tU.ContentID = tblItems.ContentID
|
||||
WHERE tU.BaseFlag = 0;
|
||||
|
||||
UPDATE tblContents Set DeleteStatus = 1, DTS = GETDATE(), UserID = 'CPVolian2026'
|
||||
FROM
|
||||
#tmpUpdate tU INNER JOIN
|
||||
tblContents ON tU.ContentID = tblContents.ContentID
|
||||
WHERE tU.BaseFlag = 0;
|
||||
|
||||
DELETE FROM
|
||||
tblEntries
|
||||
FROM
|
||||
tblEntries
|
||||
INNER JOIN
|
||||
#tmpUpdate tU ON tU.ContentID = tblEntries.ContentID
|
||||
WHERE tU.BaseFlag in (0,2);
|
||||
|
||||
INSERT INTO [dbo].[tblEntries]
|
||||
([ContentID]
|
||||
,[DocID]
|
||||
,[DTS]
|
||||
,[UserID]
|
||||
,[DeleteStatus])
|
||||
SELECT
|
||||
DISTINCT tU.ContentID,
|
||||
766, -- docid 766 "Cover Page 1"
|
||||
GETDATE(),
|
||||
'CPVolian2026',
|
||||
0
|
||||
FROM
|
||||
#tmpUpdate tU
|
||||
INNER JOIN
|
||||
@Cont CNT ON tU.ContentID = CNT.ContentID
|
||||
WHERE tU.BaseFlag = 2;
|
||||
|
||||
drop table #tmpUpdate;
|
||||
|
||||
IF (@@Error = 0) SELECT '[Barakah Cover Page Consolidation] Succeeded'
|
||||
ELSE SELECT '[Barakah Cover Page Consolidation] Error'
|
||||
go
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,263 @@
|
||||
|
||||
-- =============================================
|
||||
-- Author: Matthew Schill
|
||||
-- Create date: 03/20/2026
|
||||
-- Description: Script to consolidate Cover Pages for Barakah
|
||||
-- by Converting multi-unit procedures with Cover Pages
|
||||
-- to use 1 Library Document Cover Page
|
||||
-- =============================================
|
||||
|
||||
----@isTest = 0 will change data
|
||||
----@isTest = 1 for internal testing (no data will be changed)
|
||||
DECLARE @isTest bit = 1;
|
||||
|
||||
----Per Cover Page, pull how many cover pages
|
||||
----Each Cover Page's procedure has
|
||||
----and how many of those are library documents
|
||||
select Contents.ContentID
|
||||
, Contenttext = Contents.Text
|
||||
, Items.ItemID
|
||||
, tblDocuments.DocID
|
||||
, ParentContentID
|
||||
, ParentItemID
|
||||
, LibTitle = ISNULL(LibTitle,'')
|
||||
, numLibCP
|
||||
, numCP
|
||||
,BaseFlag = 0
|
||||
INTO #tmpUpdate
|
||||
from Contents
|
||||
inner join Entries on Contents.ContentID = Entries.ContentID
|
||||
inner join tblDocuments on tblDocuments.DocID = Entries.DocID
|
||||
inner join Items on Items.ContentID = Contents.ContentID
|
||||
outer apply
|
||||
(select ParentContentID=ContentID, ParentItemID = PItm.ItemID
|
||||
FROM dbo.vefn_ParentItems(Items.ItemID) PItm
|
||||
where PItm.ItemID <> Items.ItemID
|
||||
) parent
|
||||
outer apply
|
||||
(select numLibCP = Count(*)
|
||||
FROM dbo.vefn_ChildItems(ParentItemID) PItm
|
||||
INNER JOIN Contents on Contents.ContentID = PItm.ContentID
|
||||
INNER JOIN Entries on Contents.ContentID = Entries.ContentID
|
||||
INNER JOIN tblDocuments on tblDocuments.DocID = Entries.DocID
|
||||
where PItm.ItemID <> ParentItemID
|
||||
AND Contents.text like 'Cover Page%' and ISNULL(tblDocuments.LibTitle,'') <> ''
|
||||
) childWithLibTitle
|
||||
outer apply
|
||||
(select numCP = Count(*)
|
||||
FROM dbo.vefn_ChildItems(ParentItemID) PItm
|
||||
INNER JOIN Contents on Contents.ContentID = PItm.ContentID
|
||||
where PItm.ItemID <> ParentItemID
|
||||
AND Contents.text like 'Cover Page%'
|
||||
) child
|
||||
where Contents.text like 'Cover Page%'
|
||||
order by ParentContentID asc, CASE WHEN ISNULL(LibTitle,'') <> '' THEN 1 ELSE 2 END asc, Contents.Text asc
|
||||
|
||||
--BaseFlag
|
||||
-- 0 = a Cover Page that will be deleted
|
||||
-- 1 = is base item (Cover Page will get renamed and applicability set to all)
|
||||
-- 2 = would be base item but not linked to Lib document (Cover Page will get renamed and applicability set to all + will need linked to library doc)
|
||||
|
||||
---- If only 1 Library Doc CP for the CP's procedure and this is it, then mark this CP as the one we will keep
|
||||
UPDATE #tmpUpdate SET BaseFlag = 1 where LibTitle <> '' and numLibCP = 1
|
||||
|
||||
---- If multiple Library Document CPs, pick the first one as the one we will keep (BaseFlag = 1)
|
||||
---- If no Library Document CPs, pick the first one as the one we will repurpose (BaseFlag = 2)
|
||||
UPDATE #tmpUpdate SET BaseFlag = CASE WHEN tU.LibTitle <> '' THEN 1 ELSE 2 END FROM #tmpUpdate tU
|
||||
where BaseFlag = 0 AND tU.ContentID IN
|
||||
(
|
||||
Select ContentID FROM
|
||||
(SELECT sub.ContentID,
|
||||
row_number() OVER(PARTITION BY sub.ParentContentID ORDER BY CASE WHEN ISNULL(sub.LibTitle,'') <> '' THEN 1 ELSE 2 END asc, sub.Contenttext asc) as pos
|
||||
FROM #tmpUpdate sub
|
||||
) x
|
||||
WHERE x.pos = 1
|
||||
)
|
||||
|
||||
----BEGIN TESTS--
|
||||
if(@isTest = 1)
|
||||
BEGIN
|
||||
select Count(*), 'Should be Zero - not exactly one BaseFlag set to non 0 for each Parent Item' FROM #tmpUpdate TU
|
||||
OUTER APPLY
|
||||
(select numBaseFlagSet = SUM(CASE WHEN sub.BaseFlag > 0 THEN 1 ELSE 0 END)
|
||||
FROM #tmpUpdate sub
|
||||
where sub.ParentContentID = TU.ParentContentID
|
||||
) sub
|
||||
where numBaseFlagSet <> 1
|
||||
|
||||
select Count(*), 'Should be Zero - 0 Lib Docs, BaseFlag is 1' FROM #tmpUpdate TU
|
||||
where numLibCP = 0 and BaseFlag = 1
|
||||
|
||||
select Count(*), 'Should be Zero - at least 1 Lib Docs, BaseFlag is 2' FROM #tmpUpdate TU
|
||||
where numLibCP > 0 and BaseFlag = 2
|
||||
|
||||
select Count(*), 'Should be Zero - 1 Lib Docs, BaseFlag not 1 for that Lib doc' FROM #tmpUpdate TU
|
||||
where numLibCP = 1 and LibTitle <> '' and BaseFlag <> 1
|
||||
|
||||
select Count(*), 'Should be Zero - 1 Lib Docs, BaseFlag not 0 for ones without Lib Doc' FROM #tmpUpdate TU
|
||||
where numLibCP = 1 and LibTitle = '' and BaseFlag <> 0
|
||||
|
||||
select Count(*), 'Should be Zero - 1 CP, no Lib Docs, BaseFlag not 2' FROM #tmpUpdate TU
|
||||
where numLibCP = 0 and numCP = 1 and BaseFlag <> 2
|
||||
|
||||
select Count(*), 'Should be Zero - more than 1 Lib Docs, BaseFlag is 1' FROM #tmpUpdate TU
|
||||
where numLibCP = 0 and BaseFlag = 1
|
||||
|
||||
select Count(*), 'Should be Zero - not exactly one BaseFlag set to non 0 for each Parent Item' FROM #tmpUpdate TU
|
||||
OUTER APPLY
|
||||
(select numBaseFlagSet = SUM(CASE WHEN sub.BaseFlag > 0 THEN 1 ELSE 0 END)
|
||||
FROM #tmpUpdate sub
|
||||
where sub.ParentContentID = TU.ParentContentID
|
||||
) sub
|
||||
where numBaseFlagSet <> 1
|
||||
|
||||
select Count(*), 'Should be Zero - 0 Lib Docs, BaseFlag is 1' FROM #tmpUpdate TU
|
||||
where numLibCP = 0
|
||||
and BaseFlag = 1
|
||||
|
||||
--all Parents should have exactly 1 Baseflag=1 or BaseFlage = 2
|
||||
select 'Should be No Records where not a BaseFlag 1 or 2'
|
||||
select NumNotBaseFlag12 = Count(*)
|
||||
FROM #tmpUpdate TU
|
||||
Group by ParentContentID
|
||||
HAVING SUM(CASE WHEN BaseFlag in (1,2) THEN 1 ELSE 0 END) <> 1
|
||||
|
||||
select 'Should be No Records where with both a BaseFlag 1 and 2'
|
||||
select NumBothBaseFlag12 = Count(*)
|
||||
FROM #tmpUpdate TU
|
||||
Group by ParentContentID
|
||||
HAVING SUM(BaseFlag) > 2
|
||||
|
||||
END
|
||||
--END TESTS--
|
||||
|
||||
--BaseFlag
|
||||
-- 0 = a Cover Page that will be deleted
|
||||
-- 1 = is base item (Cover Page will get renamed and applicability set to all)
|
||||
-- 2 = would be base item but not linked to Lib document (Cover Page will get renamed and applicability set to all + will need linked to library doc)
|
||||
|
||||
----Update config for Coverpage 1 to remove <MasterSlave Applicability="1" />
|
||||
----from that config
|
||||
----cover page 1s
|
||||
declare @Cont TABLE
|
||||
(
|
||||
ContentID int,
|
||||
ItemID int,
|
||||
xConfig xml
|
||||
)
|
||||
insert into @Cont
|
||||
SELECT tU.ContentID, ItemID, xConfig = CAST(tblContents.config AS xml) FROM
|
||||
tblContents
|
||||
INNER JOIN
|
||||
#tmpUpdate tU ON tU.ContentID = tblContents.ContentID
|
||||
where tU.BaseFlag > 0
|
||||
|
||||
if(@isTest = 1)
|
||||
BEGIN
|
||||
select WRD='Have Masterslave in xconfig', NumwithMasterSlave = Count(*) FROM @Cont CNT
|
||||
INNER JOIN
|
||||
tblContents ON CNT.ContentID = tblContents.ContentID
|
||||
where CAST(xConfig AS varchar(max)) like '%MasterSlave%'
|
||||
END
|
||||
|
||||
Update @Cont Set xConfig.modify('delete //MasterSlave') From @Cont;
|
||||
|
||||
if(@isTest = 1)
|
||||
BEGIN
|
||||
select WRD='None should have Masterslave Removed in xconfig', NumwithMasterSlave = Count(*) FROM @Cont CNT
|
||||
INNER JOIN
|
||||
tblContents ON CNT.ContentID = tblContents.ContentID
|
||||
where CAST(xConfig AS varchar(max)) like '%MasterSlave%'
|
||||
|
||||
select 'Show Records and how the ids will be re-linked'
|
||||
|
||||
Select tblItems.ItemID, tblItems.ContentID, tblItems.PreviousID, tblContents.Text,
|
||||
PreviousItemID = tU.ItemID, PreviousContentID = tU.ContentID, PreviousText = tUCont.Text,
|
||||
RelinkToItemID = IdToSwapTO.ItemID, RelinkToContentID = IdToSwapTO.ContentID, RelinkToText = IdToSwapTOCont.Text
|
||||
FROM
|
||||
tblItems
|
||||
INNER JOIN
|
||||
tblContents on tblContents.ContentID = tblItems.ContentID
|
||||
INNER JOIN
|
||||
#tmpUpdate tU ON tblItems.PreviousID = tU.ItemID AND tU.BaseFlag = 0
|
||||
INNER JOIN
|
||||
tblContents tUCont on tUCont.ContentID = tU.ContentID
|
||||
LEFT OUTER JOIN #tmpUpdate IdToSwapTO ON IdToSwapTO.ParentContentID = tU.ParentContentID AND IdToSwapTO.BaseFlag IN (1,2)
|
||||
LEFT OUTER JOIN tblContents IdToSwapTOCont on IdToSwapTOCont.ContentID = IdToSwapTO.ContentID
|
||||
|
||||
END
|
||||
ELSE
|
||||
BEGIN
|
||||
--Update Config for Contents and set Text = 'Cover Page'
|
||||
Update tblContents SET Text = 'Cover Page', Config = CAST(xConfig AS varchar(max)),
|
||||
DTS = GETDATE(), UserID = 'CPVolian2026'
|
||||
FROM
|
||||
@Cont CNT INNER JOIN
|
||||
tblContents ON CNT.ContentID = tblContents.ContentID;
|
||||
|
||||
--Update items PreviousIds
|
||||
UPDATE tblItems Set PreviousID = IdToSwapTO.ItemID
|
||||
FROM
|
||||
tblItems
|
||||
INNER JOIN
|
||||
#tmpUpdate tU ON tblItems.PreviousID = tU.ItemID AND tU.BaseFlag = 0
|
||||
INNER JOIN #tmpUpdate IdToSwapTO ON IdToSwapTO.ParentContentID = tU.ParentContentID AND IdToSwapTO.BaseFlag IN (1,2)
|
||||
|
||||
--delete where BaseFlag = 0 ---Items,Content,Entries, --set DeleteStatus = 1
|
||||
--these are ones that will be replaced by a library document
|
||||
UPDATE tblItems Set DeleteStatus = 1, DTS = GETDATE(), UserID = 'CPVolian2026'
|
||||
FROM
|
||||
#tmpUpdate tU INNER JOIN
|
||||
tblItems ON tU.ContentID = tblItems.ContentID
|
||||
WHERE tU.BaseFlag = 0;
|
||||
|
||||
UPDATE tblContents Set DeleteStatus = 1, DTS = GETDATE(), UserID = 'CPVolian2026'
|
||||
FROM
|
||||
#tmpUpdate tU INNER JOIN
|
||||
tblContents ON tU.ContentID = tblContents.ContentID
|
||||
WHERE tU.BaseFlag = 0;
|
||||
|
||||
--delete entries where Baseflag = 2
|
||||
--create new entries where Baseflag = 2
|
||||
|
||||
DELETE FROM
|
||||
tblEntries
|
||||
FROM
|
||||
tblEntries
|
||||
INNER JOIN
|
||||
#tmpUpdate tU ON tU.ContentID = tblEntries.ContentID
|
||||
WHERE tU.BaseFlag in (0,2);
|
||||
|
||||
INSERT INTO [dbo].[tblEntries]
|
||||
([ContentID]
|
||||
,[DocID]
|
||||
,[DTS]
|
||||
,[UserID]
|
||||
,[DeleteStatus])
|
||||
SELECT
|
||||
DISTINCT tU.ContentID,
|
||||
766, -- docid 766 "Cover Page 1"
|
||||
GETDATE(),
|
||||
'CPVolian2026',
|
||||
0
|
||||
FROM
|
||||
#tmpUpdate tU
|
||||
INNER JOIN
|
||||
@Cont CNT ON tU.ContentID = CNT.ContentID
|
||||
WHERE tU.BaseFlag = 2;
|
||||
|
||||
END;
|
||||
|
||||
drop table #tmpUpdate;
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -1817,7 +1817,7 @@ ALTER trigger [dbo].[tr_Contents_Delete] on [dbo].[Contents] instead of delete a
|
||||
select ii.ContentID,ii.Number,ii.Text,ii.Type,ii.FormatID,ii.Config,ii.DTS,ii.UserID,ii.DeleteStatus,ii.ActionDTS
|
||||
from tblContents ii inner join deleted dd on dd.ContentID = ii.ContentID
|
||||
where ii.DeleteStatus > 0
|
||||
update ga set ga.contentauditid = (select max(auditid) from contentaudits where contentid = ga.contentid and deletestatus = ga.deletestatus)
|
||||
update ga set ga.contentauditid = (select ISNULL(max(auditid),0) from contentaudits where contentid = ga.contentid and deletestatus = ga.deletestatus)
|
||||
from gridaudits ga join deleted dd on ga.contentid = dd.contentid where ga.contentauditid = 0
|
||||
end
|
||||
go
|
||||
|
||||
@@ -1,7 +1,4 @@
|
||||
using System;
|
||||
using System.Drawing;
|
||||
using System.Collections;
|
||||
using System.ComponentModel;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace Accentra.Controls
|
||||
@@ -11,11 +8,6 @@ namespace Accentra.Controls
|
||||
/// </summary>
|
||||
public class TablePicker : System.Windows.Forms.Form
|
||||
{
|
||||
/// <summary>
|
||||
/// Required designer variable.
|
||||
/// </summary>
|
||||
private System.ComponentModel.Container components = null;
|
||||
|
||||
public TablePicker()
|
||||
{
|
||||
// Activates double buffering
|
||||
@@ -29,21 +21,6 @@ namespace Accentra.Controls
|
||||
InitializeComponent();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Clean up any resources being used.
|
||||
/// </summary>
|
||||
protected override void Dispose( bool disposing )
|
||||
{
|
||||
if( disposing )
|
||||
{
|
||||
if(components != null)
|
||||
{
|
||||
components.Dispose();
|
||||
}
|
||||
}
|
||||
base.Dispose( disposing );
|
||||
}
|
||||
|
||||
#region Windows Form Designer generated code
|
||||
/// <summary>
|
||||
/// Required method for Designer support - do not modify
|
||||
@@ -75,82 +52,41 @@ namespace Accentra.Controls
|
||||
}
|
||||
#endregion
|
||||
|
||||
private Pen BeigePen = new Pen(Color.Beige, 1);
|
||||
private Brush BeigeBrush = System.Drawing.Brushes.Beige;
|
||||
private Brush GrayBrush = System.Drawing.Brushes.Gray;
|
||||
private Brush BlackBrush = System.Drawing.Brushes.Black;
|
||||
private Brush WhiteBrush = System.Drawing.Brushes.White;
|
||||
private readonly Brush BlackBrush = System.Drawing.Brushes.Black;
|
||||
private readonly Brush WhiteBrush = System.Drawing.Brushes.White;
|
||||
|
||||
private Brush Jbrush = System.Drawing.Brushes.LightBlue;
|
||||
//private Brush Jbrush = System.Drawing.Brushes.LightSteelBlue;
|
||||
//private Brush Jbrush = System.Drawing.Brushes.SteelBlue;
|
||||
//private Brush Jbrush = System.Drawing.Brushes.PowderBlue;
|
||||
private readonly Brush Jbrush = System.Drawing.Brushes.LightBlue;
|
||||
|
||||
private Pen BorderPen = new Pen(SystemColors.ControlDark);
|
||||
private Pen BluePen = new Pen(Color.SlateGray, 1);
|
||||
private readonly Pen BorderPen = new Pen(SystemColors.ControlDark);
|
||||
private readonly Pen BluePen = new Pen(Color.SlateGray, 1);
|
||||
|
||||
private string DispText = "Esc to Cancel"; // Display text
|
||||
private int DispHeight = 40;//20; // Display ("Table 1x1", "Cancel")
|
||||
private Font DispFont = new Font("Tahoma", 8.25F);
|
||||
private int SquareX = 20; // Width of squares
|
||||
private int SquareY = 20; // Height of squares
|
||||
private readonly int DispHeight = 40; // Display ("Table 1x1", "Cancel")
|
||||
private readonly Font DispFont = new Font("Tahoma", 8.25F);
|
||||
private readonly int SquareX = 20; // Width of squares
|
||||
private readonly int SquareY = 20; // Height of squares
|
||||
private int SquareQX = 3; // Number of visible squares (X)
|
||||
private int SquareQY = 3; // Number of visible squares (Y)
|
||||
private int SelQX = 1; // Number of selected squares (x)
|
||||
private int SelQY = 1; // Number of selected squares (y)
|
||||
|
||||
private bool bHiding = false;
|
||||
private bool bCancel = true; // Determines whether to Cancel
|
||||
public int MaxRows { get; set; } = -1;
|
||||
|
||||
// Added my Volian 4/27/11
|
||||
private int _MaxRows = -1;
|
||||
public int MaxCols { get; set; } = -1;
|
||||
|
||||
public int MaxRows
|
||||
{
|
||||
get { return _MaxRows; }
|
||||
set { _MaxRows = value; }
|
||||
}
|
||||
private int _MaxCols = -1;
|
||||
/// <summary>
|
||||
/// Returns the number of columns, or the horizontal / X count,
|
||||
/// of the selection.
|
||||
/// </summary>
|
||||
public int SelectedColumns => SelQX;
|
||||
|
||||
public int MaxCols
|
||||
{
|
||||
get { return _MaxCols; }
|
||||
set { _MaxCols = value; }
|
||||
}
|
||||
/// <summary>
|
||||
/// Returns the number of rows, or the vertical / Y count,
|
||||
/// of the selection.
|
||||
/// </summary>
|
||||
public int SelectedRows => SelQY;
|
||||
|
||||
/// <summary>
|
||||
/// Similar to <code><see cref="DialogResult"/>
|
||||
/// == <see cref="DialogResult.Cancel"/></code>,
|
||||
/// but is used as a state value before the form
|
||||
/// is hidden and cancellation is finalized.
|
||||
/// </summary>
|
||||
public bool Cancel {
|
||||
get {
|
||||
return bCancel;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Returns the number of columns, or the horizontal / X count,
|
||||
/// of the selection.
|
||||
/// </summary>
|
||||
public int SelectedColumns {
|
||||
get {
|
||||
return SelQX;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Returns the number of rows, or the vertical / Y count,
|
||||
/// of the selection.
|
||||
/// </summary>
|
||||
public int SelectedRows {
|
||||
get {
|
||||
return SelQY;
|
||||
}
|
||||
}
|
||||
|
||||
private void TablePicker_Paint(object sender, System.Windows.Forms.PaintEventArgs e) {
|
||||
private void TablePicker_Paint(object sender, System.Windows.Forms.PaintEventArgs e) {
|
||||
Graphics g = e.Graphics;
|
||||
|
||||
// First, increment the number of visible squares if the
|
||||
@@ -162,8 +98,8 @@ namespace Accentra.Controls
|
||||
if (SquareQX < 7) SquareQX = 7;
|
||||
if (SquareQY < 5) SquareQY = 5;
|
||||
|
||||
if (_MaxRows > 0 && SquareQY > _MaxRows) SquareQY = _MaxRows;
|
||||
if (_MaxCols > 0 && SquareQX > _MaxCols) SquareQX = _MaxCols;
|
||||
if (MaxRows > 0 && SquareQY > MaxRows) SquareQY = MaxRows;
|
||||
if (MaxCols > 0 && SquareQX > MaxCols) SquareQX = MaxCols;
|
||||
|
||||
// Second, expand the dimensions of this form according to the
|
||||
// number of visible squares.
|
||||
@@ -177,14 +113,7 @@ namespace Accentra.Controls
|
||||
// the text is left-justified, only the Y (vertical) position
|
||||
// is calculated.
|
||||
int dispY = ((SquareY - 1) * SquareQY) + SquareQY + 4;
|
||||
//if (this.Cancel) {
|
||||
// DispText = "Esc Key to Cancel";
|
||||
//} else {
|
||||
// DispText = SelQX.ToString() + " by " + SelQY.ToString() + " Table";
|
||||
//}
|
||||
//DispText = SelQX.ToString() + " by " + SelQY.ToString() + " Table\nEsc Key to Cancel";
|
||||
//DispText = SelQY.ToString() + " Row"+((SelQY>1)?"s by ":" by ") + SelQX.ToString() + " Column"+((SelQX>1)?"s\nEsc Key to Cancel":"\nEsc Key to Cancel");
|
||||
DispText = SelQY.ToString() + " Row" + ((SelQY > 1) ? "s" : "") + " " + SelQX.ToString() + " Column" + ((SelQX > 1) ? "s" : "")+ "\nEsc to Cancel";
|
||||
DispText = $"{SelQY} Row{((SelQY > 1) ? "s" : "")} {SelQX} Column{((SelQX > 1) ? "s" : "")}\nEsc to Cancel";
|
||||
g.DrawString(DispText, DispFont, BlackBrush, 3, dispY + 2);
|
||||
|
||||
// Draw each of the squares and fill with the default color.
|
||||
@@ -198,7 +127,6 @@ namespace Accentra.Controls
|
||||
// Go back and paint the squares with selection colors.
|
||||
for (int x=0; x<SelQX; x++) {
|
||||
for (int y=0; y<SelQY; y++) {
|
||||
//g.FillRectangle(BeigeBrush, (x*SquareX) + 3, (y*SquareY) + 3, SquareX - 2, SquareY - 2);
|
||||
g.FillRectangle(Jbrush, (x * SquareX) + 3, (y * SquareY) + 3, SquareX - 2, SquareY - 2);
|
||||
g.DrawRectangle(BluePen, (x * SquareX) + 3, (y * SquareY) + 3, SquareX - 2, SquareY - 2);
|
||||
}
|
||||
@@ -210,11 +138,6 @@ namespace Accentra.Controls
|
||||
/// </summary>
|
||||
private void TablePicker_Deactivate(object sender, System.EventArgs e) {
|
||||
|
||||
// bCancel = true
|
||||
// and DialogResult = DialogResult.Cancel
|
||||
// were previously already set in MouseLeave.
|
||||
|
||||
//this.Hide();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -242,42 +165,24 @@ namespace Accentra.Controls
|
||||
/// escaped (canceling) state.
|
||||
/// </summary>
|
||||
private void TablePicker_MouseLeave(object sender, System.EventArgs e) {
|
||||
//if (!bHiding) bCancel = true;
|
||||
//this.DialogResult = DialogResult.Cancel;
|
||||
//this.Invalidate();
|
||||
if (this.DialogResult == DialogResult.None)
|
||||
this.DialogResult = DialogResult.Cancel;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Cancels the prior cancellation caused by MouseLeave.
|
||||
/// </summary>
|
||||
private void TablePicker_MouseEnter(object sender, System.EventArgs e) {
|
||||
//bHiding = false;
|
||||
//bCancel = false;
|
||||
//this.DialogResult = DialogResult.OK;
|
||||
this.Invalidate();
|
||||
}
|
||||
/// <summary>
|
||||
/// Cancels the prior cancellation caused by MouseLeave.
|
||||
/// </summary>
|
||||
private void TablePicker_MouseEnter(object sender, System.EventArgs e) => this.Invalidate();
|
||||
|
||||
/// <summary>
|
||||
/// Detects that the user made a selection by clicking.
|
||||
/// </summary>
|
||||
private void TablePicker_Click(object sender, System.EventArgs e) {
|
||||
//bHiding = true; // Not the same as Visible == false
|
||||
// // because bHiding suggests that the control
|
||||
// // is still "active" (not canceled).
|
||||
//this.Hide();
|
||||
this.DialogResult = DialogResult.OK;
|
||||
}
|
||||
/// <summary>
|
||||
/// Detects that the user made a selection by clicking.
|
||||
/// </summary>
|
||||
private void TablePicker_Click(object sender, System.EventArgs e) => this.DialogResult = DialogResult.OK;
|
||||
|
||||
private void TablePicker_KeyPress(object sender, KeyPressEventArgs e)
|
||||
private void TablePicker_KeyPress(object sender, KeyPressEventArgs e)
|
||||
{
|
||||
if (e.KeyChar == (char)Keys.Escape)
|
||||
{
|
||||
//bHiding = true; // Not the same as Visible == false
|
||||
//// because bHiding suggests that the control
|
||||
//// is still "active" (not canceled).
|
||||
//this.Hide();
|
||||
this.DialogResult = DialogResult.Cancel;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1395,7 +1395,7 @@ namespace VEPROMS
|
||||
DoCreatePDF(); // create indivitual pdfs
|
||||
if (_MergedPdfPath != null && _MergedPdfPath != PDFPath) PDFPath = _MergedPfd.Folder = _MergedPdfPath;
|
||||
// C2021-063 pass in whether to generate Alarm Point List text when a merge is done
|
||||
if (!_MergedPfd.DoTheMerge(PromsPrinter.MergedLandscapePages,cbxAlmPtTxt.Checked)) return; // merge them together.
|
||||
if (!_MergedPfd.DoTheMerge(cbxAlmPtTxt.Checked)) return; // merge them together.
|
||||
// if the property to show the file after printing is set (on the version dialog), display it. Otherwise do a dialog to let user know it's done
|
||||
if (_DocVersionConfig.Print_MergedPdfsViewAfter)
|
||||
{
|
||||
|
||||
@@ -1643,7 +1643,11 @@ Begin
|
||||
Select Cast(i.LastChanged as varbinary(8)) as 'ILastChanged',
|
||||
i.ItemID as 'ItemID',
|
||||
zi.VersionID as 'VersionID',
|
||||
zi.PPath +
|
||||
CASE WHEN c.[Type] % 20000 = 6 THEN REPLACE(zi.PPath,'Note','Caution')
|
||||
WHEN c.[Type] % 20000 = 7 THEN REPLACE(zi.PPath,'Caution','Note')
|
||||
ELSE zi.PPath
|
||||
END
|
||||
+
|
||||
Case (c.[Type]/10000)
|
||||
When 0 Then @Delim + @UnitPrefix + IsNull(c.Number,'') + @DelimNumber + IsNull(c.Text,'') -- Procedure
|
||||
When 1 Then @Delim + IsNull(c.Number,'') + @DelimNumber + IsNull(c.Text,'') -- Section
|
||||
@@ -5223,7 +5227,7 @@ CREATE PROCEDURE [dbo].[getRevisionByItemIDandRevisionNumberAndUnitID]
|
||||
WITH EXECUTE AS OWNER
|
||||
AS
|
||||
declare @RevisionID int
|
||||
set @RevisionID = (select revisionid from revisions rr cross apply rr.config.nodes('//Applicability') t1(r1) where itemid = @itemid and revisionnumber = @RevisionNumber and r1.value('@Index','int') = @UnitID)
|
||||
set @RevisionID = (select top 1 revisionid from revisions rr cross apply rr.config.nodes('//Applicability') t1(r1) where itemid = @itemid and revisionnumber = @RevisionNumber and r1.value('@Index','int') = @UnitID order by revisionid desc)
|
||||
SELECT
|
||||
[RevisionID],
|
||||
[ItemID],
|
||||
@@ -5543,6 +5547,12 @@ ELSE PRINT 'Function: ve_GetItemDerivedApplicability Error on Creation'
|
||||
GO
|
||||
|
||||
-------
|
||||
|
||||
-- =============================================
|
||||
-- Author: Matthew Schill
|
||||
-- Modify date: 07/14/2026
|
||||
-- Description: Reworked ve_GetParentItem for Performance improvement
|
||||
-- =============================================
|
||||
/****** Object: UserDefinedFunction [dbo].[vefn_GetParentItem] Script Date: 03/28/2012 17:58:48 ******/
|
||||
IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[ve_GetParentItem]') AND OBJECTPROPERTY(id,N'IsScalarFunction') = 1)
|
||||
DROP FUNCTION [ve_GetParentItem];
|
||||
@@ -5551,35 +5561,46 @@ GO
|
||||
Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE
|
||||
Copyright 2012 - Volian Enterprises, Inc. All rights reserved.
|
||||
*****************************************************************************/
|
||||
CREATE FUNCTION [dbo].[ve_GetParentItem] (@ItemID int) RETURNS int
|
||||
CREATE OR ALTER FUNCTION [dbo].[ve_GetParentItem] (@ItemID int) RETURNS int
|
||||
WITH EXECUTE AS OWNER
|
||||
AS
|
||||
BEGIN
|
||||
DECLARE @ParentID int;
|
||||
WITH Itemz([ItemID],[IsFound]) as
|
||||
WITH Itemz([ItemID]) as
|
||||
(
|
||||
select ii.itemid,0 from items ii where ii.itemid = @ItemID
|
||||
select ii.itemid from items ii WITH (NOLOCK) where ii.itemid = @ItemID
|
||||
union all
|
||||
select ii.previousid,0 from items ii
|
||||
select ii.previousid from items ii WITH (NOLOCK)
|
||||
join itemz zz on ii.itemid = zz.itemid
|
||||
where ii.previousid is not null
|
||||
and zz.isfound = 0
|
||||
union all
|
||||
select ii.itemid,1
|
||||
from parts pp
|
||||
join itemz zz on pp.itemid = zz.itemid
|
||||
join items ii on ii.contentid = pp.contentid
|
||||
)
|
||||
select top 1 @ParentID = itemid from itemz
|
||||
where isfound = 1 OPTION (MAXRECURSION 10000)
|
||||
select top 1 @ParentID = ii.itemid
|
||||
from itemz
|
||||
inner join parts pp WITH (NOLOCK) on pp.itemid = itemz.itemid
|
||||
inner join items ii WITH (NOLOCK) on ii.contentid = pp.contentid
|
||||
OPTION (MAXRECURSION 10000)
|
||||
|
||||
RETURN @ParentID
|
||||
END
|
||||
|
||||
GO
|
||||
|
||||
IF (@@Error = 0) PRINT 'ScalerFunction [vefn_GetParentItem] Succeeded'
|
||||
ELSE PRINT 'ScalerFunction [vefn_GetParentItem] Error on Creation'
|
||||
go
|
||||
|
||||
IF EXISTS (SELECT * FROM dbo.sysIndexes WHERE name like 'IX_PartsItemID')
|
||||
DROP INDEX [IX_PartsItemID] ON [dbo].[tblParts];
|
||||
GO
|
||||
|
||||
CREATE NONCLUSTERED INDEX IX_PartsItemID
|
||||
ON [dbo].[tblParts] ([ItemID] ASC)
|
||||
INCLUDE([ContentID],[DeleteStatus],[FromType]) WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
|
||||
GO
|
||||
|
||||
PRINT 'Added IX_PartsItemID Index. Speeds up Getting Parent Items'
|
||||
GO
|
||||
|
||||
/****** Object: UserDefinedFunction [dbo].[vefn_CanTransitionBeCreated] Script Date: 10/14/2012 02:03:30 ******/
|
||||
IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_CanTransitionBeCreated]') AND OBJECTPROPERTY(id,N'IsScalarFunction') = 1)
|
||||
DROP FUNCTION [vefn_CanTransitionBeCreated];
|
||||
@@ -13536,35 +13557,7 @@ GO
|
||||
IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[deleteAllDocVersionPdfs]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1)
|
||||
DROP PROCEDURE [deleteAllDocVersionPdfs];
|
||||
GO
|
||||
|
||||
/*****************************************************************************
|
||||
Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE
|
||||
Copyright 2017 - Volian Enterprises, Inc. All rights reserved.
|
||||
*****************************************************************************/
|
||||
CREATE PROCEDURE [dbo].[deleteAllDocVersionPdfs]
|
||||
|
||||
(
|
||||
@VersionID int
|
||||
)
|
||||
WITH EXECUTE AS OWNER
|
||||
AS
|
||||
BEGIN TRY -- Try Block
|
||||
BEGIN TRANSACTION
|
||||
DELETE [Pdfs]
|
||||
WHERE [DocID] IN(select EE.DocID from vefn_GetVersionItems(cast(@VersionID as varchar(20))) VI
|
||||
Join Entries EE ON EE.ContentID= VI.ContentID)
|
||||
IF( @@TRANCOUNT > 0 ) COMMIT
|
||||
END TRY
|
||||
BEGIN CATCH -- Catch Block
|
||||
IF( @@TRANCOUNT = 1 ) ROLLBACK -- Only rollback if top level
|
||||
ELSE IF( @@TRANCOUNT > 1 ) COMMIT -- Otherwise commit. Top level will rollback
|
||||
EXEC vlnErrorHandler
|
||||
END CATCH
|
||||
GO
|
||||
-- Display the status of Proc creation
|
||||
IF (@@Error = 0) PRINT 'Procedure Creation: deleteAllDocVersionPdfs Succeeded'
|
||||
ELSE PRINT 'Procedure Creation: deleteAllDocVersionPdfs Error on Creation'
|
||||
GO
|
||||
/****** Object: StoredProcedure [addFiguresByROFstIDandImageIDs] ******/
|
||||
IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[addFiguresByROFstIDandImageIDs]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1)
|
||||
DROP PROCEDURE [addFiguresByROFstIDandImageIDs];
|
||||
@@ -17165,6 +17158,7 @@ GO
|
||||
[roid] [varchar](50) NOT NULL,
|
||||
[appid] [varchar](max) NULL,
|
||||
[value] [varchar](max) NULL,
|
||||
[moddatetime] [datetime] NULL,
|
||||
CONSTRAINT [PK_RofstChild] PRIMARY KEY CLUSTERED
|
||||
(
|
||||
[RofstChildID] ASC
|
||||
@@ -17299,6 +17293,23 @@ GO
|
||||
End -- Rofst Tables
|
||||
Go
|
||||
|
||||
-- =============================================
|
||||
-- Author: Matthew Schill
|
||||
-- Create date: 03/30/2026
|
||||
-- Description: Store RO Modification date/time
|
||||
-- =============================================
|
||||
|
||||
--- Add Column to store RO Modification date/time if it does not already exist
|
||||
IF NOT EXISTS(SELECT *
|
||||
FROM INFORMATION_SCHEMA.COLUMNS
|
||||
WHERE TABLE_NAME = 'RofstChild'
|
||||
AND COLUMN_NAME = 'moddatetime')
|
||||
ALTER TABLE RofstChild ADD moddatetime datetime NULL;
|
||||
go
|
||||
-- Display the status
|
||||
IF (@@Error = 0) PRINT 'Altered table [RofstChild] Succeeded for moddatetime'
|
||||
ELSE PRINT 'Altered table [RofstChild] Error on Alter for moddatetime'
|
||||
go
|
||||
|
||||
/*
|
||||
----------------------------------------------------------------------------------
|
||||
@@ -19134,7 +19145,7 @@ GO
|
||||
rd.ParentID
|
||||
From vwRofstData_RofstDatabases rd
|
||||
Where rd.RofstID = @RofstID
|
||||
Order By rd.dbiID Asc;
|
||||
Order By rd.dbiTitle Asc;
|
||||
|
||||
Return;
|
||||
End
|
||||
@@ -19320,7 +19331,7 @@ GO
|
||||
rc.AccPageID
|
||||
From RoParent rp
|
||||
inner join vwRofstData_RofstChildren rc on rc.RofstID = rp.RofstID and rc.dbiID = rp.dbiID and rc.ParentID = rp.ID
|
||||
Order By rc.ID Asc;
|
||||
Order By rc.title Asc;
|
||||
|
||||
|
||||
Return;
|
||||
@@ -19701,6 +19712,7 @@ GO
|
||||
@roid VarChar(50),
|
||||
@appid VarChar(Max) = null,
|
||||
@value VarChar(Max) = null,
|
||||
@ModDateTime DateTime = null,
|
||||
@missingDefaultValue VarChar(Max) = null
|
||||
)
|
||||
With Execute as Owner
|
||||
@@ -19718,8 +19730,8 @@ GO
|
||||
Set @missingDefaultValue = '[TBD]';
|
||||
|
||||
-- Create Rofst Child/Group Record --> [Roid = (12) Digits]
|
||||
Insert Into RofstChild (RofstID, ID, ParentID, dbiID, [type], title, roid, appid, [value])
|
||||
Values (@RofstID, @ID, @ParentID, @dbiID, @type, @title, @roid, @appid, REPLACE(REPLACE(@value, '&123;', '{'), '&125;', '}'));
|
||||
Insert Into RofstChild (RofstID, ID, ParentID, dbiID, [type], title, roid, appid, moddatetime, [value])
|
||||
Values (@RofstID, @ID, @ParentID, @dbiID, @type, @title, @roid, @appid, @ModDateTime, REPLACE(REPLACE(@value, '&123;', '{'), '&125;', '}'));
|
||||
|
||||
|
||||
-- Check for appid, if exists, then insert the default value for each return type if multi-value
|
||||
@@ -24325,8 +24337,10 @@ BEGIN
|
||||
OR FromID in (Select ContentID from tblContents where deletestatus != 0 and ActionDTS < @dte)
|
||||
)
|
||||
PRINT 'Deleting Items and Parts'
|
||||
alter table tblParts nocheck constraint FK_Parts_Items
|
||||
delete from tblItems where deletestatus != 0 and DTS < @dte
|
||||
delete from tblParts where deletestatus != 0 and ItemID Not IN (Select ItemID from Items) and DTS < @dte
|
||||
alter table tblParts check constraint FK_Parts_Items
|
||||
PRINT 'Purging Parts with deleted Contents'
|
||||
DELETE from Child
|
||||
FROM tblParts AS Child
|
||||
@@ -24351,7 +24365,9 @@ BEGIN
|
||||
ON Itms.ItemID = tblItems.ItemID AND Itms.deletestatus = tblItems.deletestatus
|
||||
alter table tblItems check constraint FK_Items_Items
|
||||
PRINT 'Purging Contents'
|
||||
alter table tblEntries nocheck constraint FK_Entries_Contents
|
||||
delete from tblContents where deletestatus != 0 and ActionDTS < @dte
|
||||
alter table tblEntries check constraint FK_Entries_Contents
|
||||
PRINT 'Phase 3'
|
||||
delete from AnnotationAudits where DTS < @dte
|
||||
delete from ContentAudits where DTS < @dte
|
||||
@@ -24432,6 +24448,593 @@ ELSE PRINT 'Procedure Creation: [vesp_GetOtherActiveSessions] Error on Creation'
|
||||
GO
|
||||
|
||||
|
||||
IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vesp_GetROsNotUsed]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1)
|
||||
DROP PROCEDURE [vesp_GetROsNotUsed];
|
||||
|
||||
GO
|
||||
-- Need to drop vesp_GetROsNotUsed SP first so script can drop and recreate the TableValID table type
|
||||
IF EXISTS( SELECT * FROM INFORMATION_SCHEMA.DOMAINS WHERE Domain_Name = 'TableValID' )
|
||||
DROP TYPE [dbo].[TableValID]
|
||||
|
||||
CREATE TYPE [dbo].[TableValID] AS TABLE(
|
||||
[ID] [bigint] NOT NULL
|
||||
|
||||
)
|
||||
GO
|
||||
|
||||
/****** Object: StoredProcedure [dbo].[vesp_GetROsNotUsed] ******/
|
||||
|
||||
-- =============================================
|
||||
-- Author: Matthew Schill
|
||||
-- Create date: 1/5/2026
|
||||
-- Description: Returns ROs that are not Used in PROMS
|
||||
-- =============================================
|
||||
CREATE PROCEDURE [dbo].[vesp_GetROsNotUsed]
|
||||
(
|
||||
@dbIDs AS dbo.TableValID READONLY
|
||||
)
|
||||
AS
|
||||
BEGIN
|
||||
|
||||
Create table #notused (RofstChildID int NULL, roid [varchar](50) NULL, ID int NOT NULL, ParentID int NOT NULL, dbID int NOT NULL, title varchar(max) not null);
|
||||
|
||||
|
||||
DECLARE @FSTs table (RofstID int primary key NOT NULL, RODbID int NOT NULL)
|
||||
|
||||
INSERT INTO @FSTs
|
||||
Select max(RoFSTID), RODbID from ROFsts
|
||||
GROUP BY RODbID
|
||||
|
||||
--insert the not used ROs
|
||||
INSERT INTO #notused
|
||||
SELECT RofstChild.RofstChildID, RofstChild.roid, RofstChild.ID, RofstChild.ParentID, RofstChild.dbiID,
|
||||
RofstChild.title + Case When (Not RofstChild.[value] is null) Then ' (' + fstdb.dbiAP + '-' + RofstChild.appid + ')' Else '' End --Add in Accessory Page ID if it exists
|
||||
FROM RofstChild
|
||||
INNER JOIN RofstDatabase fstdb on fstdb.RofstID = RofstChild.RofstID and fstdb.dbiID = RofstChild.dbiID
|
||||
INNER JOIN @FSTs fst on fst.RofstID = fstdb.RofstID AND RofstChild.RofstID = fst.RofstID
|
||||
INNER JOIN @dbIDs dbIDs on dbIDs.ID = RofstChild.dbiID --downbase to only dbs included
|
||||
LEFT OUTER JOIN RofstChild subchild ON subChild.ParentID = RofstChild.ID --make sure it is not a parent of something else
|
||||
LEFT OUTER JOIN DRoUsages ON [DRoUsages].[ROID] like RofstChild.[ROID] + '%' AND fst.RODbID = DROUsages.RODbID --not used in documents
|
||||
LEFT OUTER JOIN RoUsages ON [RoUsages].[ROID] like RofstChild.[ROID] + '%' AND fst.RODbID = ROUsages.RODbID --not used in regular ROs
|
||||
where
|
||||
subchild.RofstChildID IS NULL --make sure it is not a parent of something else
|
||||
AND DRoUsages.DROUsageID IS NULL --not used in documents
|
||||
AND RoUsages.ROUsageID IS NULL --not used in regular ROs
|
||||
|
||||
--insert thier parents
|
||||
--if they are not already in @notused
|
||||
INSERT INTO #notused
|
||||
SELECT DISTINCT RofstChild.RofstChildID, RofstChild.roid, RofstChild.ID, RofstChild.ParentID, RofstChild.dbiID, RofstChild.title
|
||||
FROM RofstChild
|
||||
INNER JOIN #notused notusedgetparents on notusedgetparents.ParentID = RofstChild.ID AND RofstChild.dbiID = notusedgetparents.dbID
|
||||
INNER JOIN @FSTs fst on RofstChild.RofstID = fst.RofstID
|
||||
LEFT OUTER JOIN #notused notused on notused.RofstChildID = RofstChild.RofstChildID
|
||||
WHERE notused.RofstChildID IS NULL
|
||||
|
||||
--insert parent dbs
|
||||
--if they are not already in @notused
|
||||
INSERT INTO #notused
|
||||
SELECT DISTINCT NULL, NULL, RofstDatabase.ID, RofstDatabase.ParentID, RofstDatabase.dbiID, RofstDatabase.dbiTitle
|
||||
FROM RofstDatabase
|
||||
INNER JOIN @FSTs fst on fst.RofstID = RofstDatabase.RofstID
|
||||
INNER JOIN @dbIDs dbIDs on RofstDatabase.dbiID = dbIDs.ID --downbase to only dbs included
|
||||
|
||||
select *
|
||||
FROM #notused notused
|
||||
order by RofstChildID, dbID
|
||||
|
||||
drop table #notused
|
||||
|
||||
RETURN
|
||||
END
|
||||
|
||||
IF (@@Error = 0) PRINT 'Procedure Creation: [vesp_GetROsNotUsed] Succeeded'
|
||||
ELSE PRINT 'Procedure Creation: [vesp_GetROsNotUsed] Error on Creation'
|
||||
GO
|
||||
|
||||
|
||||
IF EXISTS (SELECT * FROM dbo.sysIndexes WHERE name like 'IX_tblROUsagesRODbIDDeleteStatusROID')
|
||||
DROP INDEX [IX_tblROUsagesRODbIDDeleteStatusROID] ON [dbo].[tblROUsages];
|
||||
GO
|
||||
|
||||
CREATE NONCLUSTERED INDEX IX_tblROUsagesRODbIDDeleteStatusROID
|
||||
ON [dbo].[tblROUsages] ([RODbID],[DeleteStatus],[ROID])
|
||||
INCLUDE([ROUsageID],[ContentID],[Config],[DTS],[UserID],[LastChanged]) WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
|
||||
GO
|
||||
|
||||
PRINT 'Added IX_tblROUsagesRODbIDDeleteStatusROID Index. Speeds up RO queries'
|
||||
GO
|
||||
|
||||
|
||||
IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[GetCurrentApprovedRevisions]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1)
|
||||
DROP PROCEDURE [GetCurrentApprovedRevisions];
|
||||
|
||||
GO
|
||||
|
||||
/****** Object: StoredProcedure [dbo].[GetCurrentApprovedRevisions] Script Date: 02/05/2026 7:54:42 AM ******/
|
||||
|
||||
-- =============================================
|
||||
-- Author: Matthew Schill
|
||||
-- Create date: 02/05/2026
|
||||
-- Description: Gets all current approved revisions
|
||||
-- =============================================
|
||||
CREATE PROCEDURE [dbo].[GetCurrentApprovedRevisions]
|
||||
(
|
||||
@ItemID AS bigint
|
||||
)
|
||||
AS
|
||||
BEGIN
|
||||
|
||||
select max(rr.revisionid) revisionid, UnitId, UnitVal.name UnitName, max(rr.DTS) DTS
|
||||
from items ii
|
||||
inner join revisions rr on ii.itemid = rr.itemid
|
||||
inner join versions vv on rr.revisionid = vv.revisionid
|
||||
inner join stages ss on vv.stageid = ss.stageid
|
||||
outer apply
|
||||
(Select UnitId = r1.value('@Index','int') FROM rr.config.nodes('Config/Applicability') t1(r1)) App
|
||||
left outer join
|
||||
(select r1.value('@index','int') indx
|
||||
,r1.value('@Name','varchar') name
|
||||
from (select *,cast(config as xml) xconfig from DocVersions
|
||||
where ItemID in(select itemID from vefn_AllSiblingItems(@ItemID))) SDV
|
||||
cross apply
|
||||
xconfig.nodes('Config/Slaves/Slave') t1(r1)) UnitVal ON UnitVal.indx = UnitId
|
||||
where ss.isapproved = 1
|
||||
and ii.itemid = @ItemID
|
||||
group by UnitId, UnitVal.name
|
||||
|
||||
RETURN
|
||||
END
|
||||
|
||||
IF (@@Error = 0) PRINT 'Procedure Creation: [GetCurrentApprovedRevisions] Succeeded'
|
||||
ELSE PRINT 'Procedure Creation: [GetCurrentApprovedRevisions] Error on Creation'
|
||||
GO
|
||||
|
||||
|
||||
/*
|
||||
==========================================================================================================
|
||||
-- Begin: C2026-010 Add Audit Ability for ChangeBars
|
||||
-- Author: Matthew Schill
|
||||
-- Create date: 02/17/2026
|
||||
==========================================================================================================
|
||||
*/
|
||||
/*
|
||||
----------------------------------------------------------------------------------
|
||||
Tables:
|
||||
----------------------------------------------------------------------------------
|
||||
[ChangeBarAudits]
|
||||
|
||||
----------------------------------------------------------------------------------
|
||||
Indexes:
|
||||
----------------------------------------------------------------------------------
|
||||
[IX_ChangeBarAudits_ItemID] on [dbo].[ChangeBarAudits]
|
||||
|
||||
|
||||
|
||||
*/
|
||||
|
||||
|
||||
IF Not Exists(SELECT * FROM sys.objects Where name = 'ChangeBarAudits' AND type in (N'U'))
|
||||
Begin
|
||||
|
||||
SET ANSI_NULLS ON
|
||||
SET QUOTED_IDENTIFIER ON
|
||||
|
||||
/****** Create Table to hold Audit Information ******/
|
||||
CREATE TABLE [dbo].[ChangeBarAudits](
|
||||
[AuditID] [bigint] IDENTITY(1,1) NOT NULL,
|
||||
[ItemID] [bigint] NOT NULL,
|
||||
[Text] [nvarchar](max) NULL,
|
||||
[DTS] [datetime] NOT NULL,
|
||||
[UserID] [nvarchar](100) NOT NULL,
|
||||
[UnitIndex] [int] NULL,
|
||||
CONSTRAINT [PK_ChangeBarAudits] PRIMARY KEY CLUSTERED
|
||||
(
|
||||
[AuditID] ASC
|
||||
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
|
||||
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
|
||||
|
||||
IF (@@Error = 0) PRINT 'Table Creation: [ChangeBarAudits] Succeeded'
|
||||
ELSE PRINT 'Table Creation: [ChangeBarAudits] Error on Creation'
|
||||
|
||||
/****** Table was not previously created - so intially populate with info from Approvals ******/
|
||||
INSERT into ChangeBarAudits([ItemID],[Text],[DTS],[UserID],[UnitIndex])
|
||||
select --rr.RevisionID,
|
||||
rr.ItemID,
|
||||
Text = CASE WHEN r1.value('@Index','int') <> 0 AND UnitName IS NOT NULL THEN
|
||||
'(Unit ' + UnitName + ') '
|
||||
ELSE
|
||||
''
|
||||
END +
|
||||
'Approved by (' + rr.UserID + ') on (' +
|
||||
CAST(rr.DTS AS VARCHAR) + ')',
|
||||
rr.DTS,
|
||||
rr.UserID,
|
||||
UnitIndex = r1.value('@Index','int')
|
||||
-- , UnitName
|
||||
from revisions rr
|
||||
inner join versions vv on rr.revisionid = vv.revisionid
|
||||
inner join stages ss on vv.stageid = ss.stageid
|
||||
outer apply rr.config.nodes('Config/Applicability') t1(r1)
|
||||
outer apply
|
||||
( Select r2.value('@Name','varchar') UnitName
|
||||
FROM
|
||||
(select DocVerSions.ItemID, cast(config as xml) xconfig from DocVersions
|
||||
inner join
|
||||
vefn_AllSiblingItems(rr.ItemID) Sib ON DocVerSions.ItemID = Sib.ItemID) SDV
|
||||
cross apply
|
||||
xconfig.nodes('Config/Slaves/Slave') t2(r2)
|
||||
WHERE r2.value('@index','varchar') = r1.value('@Index','int')
|
||||
) UN
|
||||
where ss.isapproved = 1
|
||||
order by rr.ItemID, rr.RevisionID desc
|
||||
|
||||
IF (@@Error = 0) PRINT '[ChangeBarAudits] Initial Population Succeeded'
|
||||
ELSE PRINT '[ChangeBarAudits] Initial Population Error'
|
||||
|
||||
/****** Create Index to get ChangeBar Audit Information for Item (ItemID = ProcedureID) ******/
|
||||
CREATE NONCLUSTERED INDEX [IX_ChangeBarAudits_ItemID] ON [dbo].[ChangeBarAudits]
|
||||
(
|
||||
[ItemID] ASC
|
||||
)
|
||||
INCLUDE ([AuditID], [Text], [DTS], [UnitIndex])
|
||||
WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
|
||||
|
||||
IF (@@Error = 0) PRINT 'Index Creation: [IX_ChangeBarAudits_ItemID] Succeeded'
|
||||
ELSE PRINT 'Index Creation: [IX_ChangeBarAudits_ItemID] Error on Creation'
|
||||
|
||||
End
|
||||
|
||||
-- =============================================
|
||||
-- Description: Gets ChangeBar Audit History by item
|
||||
-- =============================================
|
||||
IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[GetChangeBarAuditHistoryByItem]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1)
|
||||
DROP PROCEDURE [GetChangeBarAuditHistoryByItem];
|
||||
|
||||
GO
|
||||
|
||||
CREATE PROCEDURE [dbo].[GetChangeBarAuditHistoryByItem]
|
||||
(
|
||||
@ItemID AS bigint
|
||||
)
|
||||
AS
|
||||
BEGIN
|
||||
Select * FROM ChangeBarAudits where ItemID = @ItemID
|
||||
order by DTS desc
|
||||
|
||||
RETURN
|
||||
END
|
||||
|
||||
IF (@@Error = 0) PRINT 'Procedure Creation: [GetChangeBarAuditHistoryByItem] Succeeded'
|
||||
ELSE PRINT 'Procedure Creation: [GetChangeBarAuditHistoryByItem] Error on Creation'
|
||||
GO
|
||||
|
||||
-- =============================================
|
||||
-- Description: Adds ChangeBar Audit History
|
||||
-- =============================================
|
||||
IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[AddChangeBarAuditHistory]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1)
|
||||
DROP PROCEDURE [AddChangeBarAuditHistory];
|
||||
|
||||
GO
|
||||
|
||||
CREATE PROCEDURE [dbo].[AddChangeBarAuditHistory]
|
||||
(
|
||||
@ItemID AS bigint,
|
||||
@Description As nvarchar(max),
|
||||
@DTS AS Datetime,
|
||||
@UserID As nvarchar(100),
|
||||
@UnitIndex AS bigint = NULL
|
||||
)
|
||||
AS
|
||||
BEGIN
|
||||
|
||||
INSERT into ChangeBarAudits([ItemID],[Text],[DTS],[UserID],[UnitIndex])
|
||||
VALUES (@ItemID, @Description, @DTS, @UserID, @UnitIndex)
|
||||
|
||||
RETURN
|
||||
END
|
||||
|
||||
IF (@@Error = 0) PRINT 'Procedure Creation: [AddChangeBarAuditHistory] Succeeded'
|
||||
ELSE PRINT 'Procedure Creation: [AddChangeBarAuditHistory] Error on Creation'
|
||||
GO
|
||||
|
||||
/*
|
||||
==========================================================================================================
|
||||
-- End: C2026-010 Add Audit Ability for ChangeBars
|
||||
==========================================================================================================
|
||||
*/
|
||||
|
||||
IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[GetMissingDocsByUnit]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1)
|
||||
DROP PROCEDURE [GetMissingDocsByUnit];
|
||||
|
||||
GO
|
||||
|
||||
-- =============================================
|
||||
-- Author: Matthew Schill
|
||||
-- Create date: 02/27/2026
|
||||
-- Description: Get Missing Docs by Unit for Generating Pdf table
|
||||
-- =============================================
|
||||
CREATE PROCEDURE [dbo].[GetMissingDocsByUnit]
|
||||
AS
|
||||
BEGIN
|
||||
|
||||
select Docs.DocID, UnitID, SectionID = MIN(SectionID)
|
||||
FROM
|
||||
(SELECT DISTINCT [DocID]
|
||||
FROM [tblDocuments]) Docs
|
||||
INNER JOIN Entries on Docs.DocID = Entries.DocID
|
||||
INNER JOIN Contents on Entries.ContentID = Contents.ContentID
|
||||
inner join Items on Items.ContentID = Contents.ContentID
|
||||
outer apply
|
||||
(Select UnitID = ID FROM dbo.vefn_SplitInt([dbo].[ve_GetItemDerivedApplicability](Items.ItemID),',')) Unit
|
||||
outer apply
|
||||
(Select TOP 1 SectionID = ItemID FROM Contents SecC where SecC.ContentID = Contents.ContentID
|
||||
AND (SecC.Type / 10000) = 1
|
||||
AND dbo.vefn_GetVersionIDByItemID(ItemID) IS NOT NULL
|
||||
) Section
|
||||
left outer join Pdfs on Pdfs.DocID = Docs.DocID AND Pdfs.DebugStatus = CASE WHEN UNITID IS NULL THEN 0 ELSE UnitID * 10 END
|
||||
WHERE Pdfs.DocID IS NULL
|
||||
AND SectionID IS NOT NULL
|
||||
Group by Docs.DocID, UnitID
|
||||
order by Docs.DocID, UnitID
|
||||
|
||||
RETURN
|
||||
END
|
||||
|
||||
IF (@@Error = 0) PRINT 'Procedure Creation: [GetMissingDocsByUnit] Succeeded'
|
||||
ELSE PRINT 'Procedure Creation: [GetMissingDocsByUnit] Error on Creation'
|
||||
GO
|
||||
|
||||
|
||||
IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_ROFST_changes]') AND OBJECTPROPERTY(id,N'IsTableFunction') = 1)
|
||||
DROP FUNCTION [vefn_ROFST_changes];
|
||||
GO
|
||||
|
||||
SET ANSI_NULLS ON
|
||||
GO
|
||||
SET QUOTED_IDENTIFIER ON
|
||||
GO
|
||||
|
||||
/*
|
||||
==========================================================================================================
|
||||
Author: Matthew Schill
|
||||
Create Date: 03/31/2026
|
||||
Description: Function for ROs that updated in latest RO FST Load
|
||||
==========================================================================================================
|
||||
*/
|
||||
CREATE FUNCTION [dbo].[vefn_ROFST_changes](@OrigFSTID int, @NewFSTid int, @VersionID int)
|
||||
RETURNS @ROIDs TABLE
|
||||
(
|
||||
[roid] varchar(50)
|
||||
)
|
||||
WITH EXECUTE AS OWNER
|
||||
AS
|
||||
BEGIN
|
||||
|
||||
insert into @ROIDs
|
||||
SELECT DISTINCT ISNULL(RofstChild.roid,previous.roid)
|
||||
FROM
|
||||
(SELECT * FROM RofstChild where RofstChild.RofstID = @NewFSTid) RofstChild
|
||||
FULL OUTER JOIN
|
||||
(SELECT * FROM RofstChild previous where previous.RofstID = @OrigFSTID) previous
|
||||
ON previous.dbiID = RofstChild.dbiID AND previous.ID = RofstChild.ID
|
||||
where
|
||||
ISNULL(previous.RofstID,'') != ISNULL(RofstChild.RofstID,'')
|
||||
AND
|
||||
(
|
||||
(RofstChild.RofstID = @NewFSTid OR RofstChild.RofstID IS NULL)
|
||||
AND
|
||||
(previous.RofstID = @OrigFSTID OR previous.RofstID IS NULL)
|
||||
)
|
||||
AND
|
||||
(previous.moddatetime IS NULL
|
||||
OR RofstChild.moddatetime IS NULL
|
||||
OR RofstChild.moddatetime != previous.moddatetime
|
||||
OR RofstChild.title != previous.title
|
||||
OR RofstChild.value != previous.value
|
||||
)
|
||||
|
||||
RETURN
|
||||
END
|
||||
go
|
||||
|
||||
IF (@@Error = 0) PRINT 'TableFunction [vefn_ROFST_changes] Succeeded'
|
||||
ELSE PRINT 'TableFunction [vefn_ROFST_changes] Error on Creation'
|
||||
go
|
||||
|
||||
/****** Object: StoredProcedure [deleteDocVersionPdfsWithNewROs] ******/
|
||||
IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[deleteDocVersionPdfsWithNewROs]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1)
|
||||
DROP PROCEDURE [deleteDocVersionPdfsWithNewROs];
|
||||
GO
|
||||
|
||||
/*
|
||||
==========================================================================================================
|
||||
Author: Matthew Schill
|
||||
Create Date: 03/31/2026
|
||||
Description: Delete all PDFs with ROs that will need re-resolved
|
||||
==========================================================================================================
|
||||
*/
|
||||
CREATE PROCEDURE [dbo].[deleteDocVersionPdfsWithNewROs]
|
||||
|
||||
(
|
||||
@VersionID int,
|
||||
@OrigFSTid int,
|
||||
@NewFSTid int
|
||||
)
|
||||
WITH EXECUTE AS OWNER
|
||||
AS
|
||||
BEGIN
|
||||
DELETE [Pdfs]
|
||||
WHERE [DocID] IN
|
||||
(
|
||||
select EE.DocID from vefn_GetVersionItems(cast(@VersionID as varchar(20))) VI
|
||||
Join Entries EE ON EE.ContentID= VI.ContentID
|
||||
Join DRoUsages ON DRoUsages.DocID = EE.DocID
|
||||
Join dbo.vefn_ROFST_changes(@OrigFSTID, @NewFSTid, @VersionID) ROFST_changes on LEFT(DRoUsages.ROID,12) = ROFST_changes.roid
|
||||
)
|
||||
|
||||
RETURN
|
||||
END
|
||||
|
||||
GO
|
||||
|
||||
-- Display the status of Proc creation
|
||||
IF (@@Error = 0) PRINT 'Procedure Creation: deleteDocVersionPdfsWithNewROs Succeeded'
|
||||
ELSE PRINT 'Procedure Creation: deleteDocVersionPdfsWithNewROs Error on Creation'
|
||||
GO
|
||||
|
||||
|
||||
/****** Object: StoredProcedure [getItemsWithNewROs] ******/
|
||||
IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getItemsWithNewROs]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1)
|
||||
DROP PROCEDURE [getItemsWithNewROs];
|
||||
GO
|
||||
|
||||
/*
|
||||
==========================================================================================================
|
||||
Author: Matthew Schill
|
||||
Create Date: 03/31/2026
|
||||
Description: Get Items with New ROs that will need resolved
|
||||
==========================================================================================================
|
||||
*/
|
||||
CREATE PROCEDURE [dbo].[getItemsWithNewROs]
|
||||
|
||||
(
|
||||
@VersionID int,
|
||||
@OrigFSTid int,
|
||||
@NewFSTid int
|
||||
)
|
||||
WITH EXECUTE AS OWNER
|
||||
AS
|
||||
BEGIN
|
||||
select DISTINCT tblItems.ItemID FROM
|
||||
dbo.vefn_ROFST_changes(@OrigFSTID, @NewFSTid, @VersionID) ROFST_changes
|
||||
INNER JOIN RoUsages ON LEFT(RoUsages.ROID,12) = ROFST_changes.roid
|
||||
INNER JOIN tblItems ON RoUsages.ContentID = tblItems.ContentID
|
||||
OUTER APPLY (Select VersionID = dbo.vefn_GetVersionIDByItemID(tblItems.ItemID)) ver
|
||||
INNER JOIN DocVersions DV ON DV.VersionID = ver.VersionID
|
||||
INNER JOIN Associations ON Associations.VersionID = DV.VersionID
|
||||
where ver.VersionID = @VersionID
|
||||
|
||||
RETURN
|
||||
END
|
||||
|
||||
GO
|
||||
|
||||
-- Display the status of Proc creation
|
||||
IF (@@Error = 0) PRINT 'Procedure Creation: getItemsWithNewROs Succeeded'
|
||||
ELSE PRINT 'Procedure Creation: getItemsWithNewROs Error on Creation'
|
||||
GO
|
||||
|
||||
/****** Object: StoredProcedure [dbo].[getRevisionByItemIDandRevisionNumber] ******/
|
||||
IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[dbo].[getRevisionByItemIDandRevisionNumber]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1)
|
||||
DROP PROCEDURE [dbo].[getRevisionByItemIDandRevisionNumber];
|
||||
GO
|
||||
|
||||
/*****************************************************************************
|
||||
Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE
|
||||
Copyright 2012 - Volian Enterprises, Inc. All rights reserved.
|
||||
*****************************************************************************/
|
||||
CREATE PROCEDURE [dbo].[getRevisionByItemIDandRevisionNumber]
|
||||
|
||||
(
|
||||
@ItemID int,
|
||||
@RevisionNumber nvarchar(50)
|
||||
)
|
||||
WITH EXECUTE AS OWNER
|
||||
AS
|
||||
declare @RevisionID int
|
||||
set @RevisionID = (select top 1 revisionid from revisions where itemid = @itemid and revisionnumber = @RevisionNumber order by revisionid desc)
|
||||
SELECT
|
||||
[RevisionID],
|
||||
[ItemID],
|
||||
[TypeID],
|
||||
[RevisionNumber],
|
||||
[RevisionDate],
|
||||
[Notes],
|
||||
[Config],
|
||||
[DTS],
|
||||
[UserID],
|
||||
[LastChanged],
|
||||
(SELECT COUNT(*) FROM [Checks] WHERE [Checks].[RevisionID]=[Revisions].[RevisionID]) [CheckCount],
|
||||
(SELECT COUNT(*) FROM [Versions] WHERE [Versions].[RevisionID]=[Revisions].[RevisionID]) [VersionCount]
|
||||
FROM [Revisions]
|
||||
WHERE [RevisionID]=@RevisionID
|
||||
|
||||
SELECT
|
||||
[Checks].[CheckID],
|
||||
[Checks].[RevisionID],
|
||||
[Checks].[StageID],
|
||||
[Checks].[ConsistencyChecks],
|
||||
[Checks].[DTS],
|
||||
[Checks].[UserID],
|
||||
[Checks].[LastChanged],
|
||||
[Stages].[Name] [Stage_Name],
|
||||
[Stages].[Description] [Stage_Description],
|
||||
[Stages].[IsApproved] [Stage_IsApproved],
|
||||
[Stages].[DTS] [Stage_DTS],
|
||||
[Stages].[UserID] [Stage_UserID]
|
||||
FROM [Checks]
|
||||
JOIN [Stages] ON
|
||||
[Stages].[StageID]=[Checks].[StageID]
|
||||
WHERE
|
||||
[Checks].[RevisionID]=@RevisionID
|
||||
|
||||
|
||||
SELECT
|
||||
[Versions].[VersionID],
|
||||
[Versions].[RevisionID],
|
||||
[Versions].[StageID],
|
||||
[Versions].[DTS],
|
||||
[Versions].[UserID],
|
||||
[Versions].[LastChanged],
|
||||
[Versions].[PDF],
|
||||
[Versions].[SummaryPDF],
|
||||
[Stages].[Name] [Stage_Name],
|
||||
[Stages].[Description] [Stage_Description],
|
||||
[Stages].[IsApproved] [Stage_IsApproved],
|
||||
[Stages].[DTS] [Stage_DTS],
|
||||
[Stages].[UserID] [Stage_UserID]
|
||||
FROM [Versions]
|
||||
JOIN [Stages] ON
|
||||
[Stages].[StageID]=[Versions].[StageID]
|
||||
WHERE
|
||||
[Versions].[RevisionID]=@RevisionID
|
||||
|
||||
RETURN
|
||||
|
||||
-- Display the status of Proc creation
|
||||
IF (@@Error = 0) PRINT 'Procedure Creation: getRevisionByItemIDandRevisionNumber Succeeded'
|
||||
ELSE PRINT 'Procedure Creation: getRevisionByItemIDandRevisionNumber Error on Creation'
|
||||
GO
|
||||
|
||||
/*
|
||||
==========================================================================================================
|
||||
Author: Matthew Schill
|
||||
Create Date: 06/29/2026
|
||||
Description: Added an ISNULL check when setting GridAudits.contentauditid.
|
||||
Was Causing Deletion of some Grids to fail.
|
||||
==========================================================================================================
|
||||
*/
|
||||
/****** Object: Trigger [tr_Contents_Delete] ******/
|
||||
ALTER trigger [dbo].[tr_Contents_Delete] on [dbo].[Contents] instead of delete as
|
||||
begin
|
||||
update ii set DeleteStatus = (select max(DeleteID) from DeleteLog where SPID = @@spid), ActionDTS = getdate(),
|
||||
UserID = (select top 1 UserID from DeleteLog where SPID = @@spid order by deleteid desc)
|
||||
from tblContents ii inner join deleted dd on dd.ContentID = ii.ContentID
|
||||
insert into ContentAudits(ContentID,Number,Text,Type,FormatID,Config,DTS,UserID,DeleteStatus,ActionDTS)
|
||||
select ii.ContentID,ii.Number,ii.Text,ii.Type,ii.FormatID,ii.Config,ii.DTS,ii.UserID,ii.DeleteStatus,ii.ActionDTS
|
||||
from tblContents ii inner join deleted dd on dd.ContentID = ii.ContentID
|
||||
where ii.DeleteStatus > 0
|
||||
update ga set ga.contentauditid = (select ISNULL(max(auditid),0) from contentaudits where contentid = ga.contentid and deletestatus = ga.deletestatus)
|
||||
from gridaudits ga join deleted dd on ga.contentid = dd.contentid where ga.contentauditid = 0
|
||||
end
|
||||
go
|
||||
|
||||
-- Display the status of Trigger alter
|
||||
IF (@@Error = 0) PRINT 'Trigger Alteration: tr_Contents_Delete Succeeded'
|
||||
ELSE PRINT 'Trigger Alteration: tr_Contents_Delete Error on Creation'
|
||||
GO
|
||||
|
||||
/*
|
||||
---------------------------------------------------------------------------
|
||||
| ADD New Code Before this Block |
|
||||
@@ -24465,8 +25068,8 @@ BEGIN TRY -- Try Block
|
||||
DECLARE @RevDate varchar(255)
|
||||
DECLARE @RevDescription varchar(255)
|
||||
|
||||
set @RevDate = '09/16/2025 7:00 AM'
|
||||
set @RevDescription = 'Added Purge Change History and Index Maintenance functions to Admin Tools'
|
||||
set @RevDate = '07/16/2026 8:30 AM'
|
||||
set @RevDescription = 'Reworked ve_GetParentItem for Performance improvement'
|
||||
|
||||
Select cast(@RevDate as datetime) RevDate, @RevDescription RevDescription
|
||||
PRINT 'SQL Code Revision ' + @RevDate + ' - ' + @RevDescription
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -947,14 +947,16 @@ namespace VEPROMS
|
||||
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();
|
||||
// B2026-034 remove the folders created from un-ziping the import set file - this was done prior to updating transitions
|
||||
// so if there was an issue deleting these temporay folders and files, the actual importing will be completed
|
||||
DirectoryInfo di = new DirectoryInfo(PEIPath);
|
||||
DirectoryInfo[] dis = di.GetDirectories();
|
||||
for (int d = 0; d < dis.Length; d++)
|
||||
dis[d].Delete(true);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
@@ -1618,8 +1620,15 @@ namespace VEPROMS
|
||||
|
||||
public void ExportItem(XmlDocument xd, ItemInfo ii, string nodename)
|
||||
{
|
||||
XmlElement xe = xd.CreateElement(nodename);
|
||||
if (ii.IsProcedure)
|
||||
//B2026-016 - Fix error pulling Reference Object info into Export
|
||||
if (ii.MyDocVersion.DocVersionAssociationCount == 0)
|
||||
{
|
||||
MessageBox.Show("Prior to Exporting Procedures you must set the Referenced Object Database", "No RO Database set", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
|
||||
return;
|
||||
}
|
||||
|
||||
XmlElement xe = xd.CreateElement(nodename);
|
||||
if (ii.IsProcedure)
|
||||
{
|
||||
xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "rodbid", ii.MyDocVersion.DocVersionAssociations[0].MyROFst.MyRODb.RODbID.ToString()));
|
||||
xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "rofolderpath", ii.MyDocVersion.DocVersionAssociations[0].MyROFst.MyRODb.FolderPath));
|
||||
|
||||
@@ -145,6 +145,9 @@ namespace VEPROMS
|
||||
}
|
||||
|
||||
LoadRefreshGroupUsers();
|
||||
|
||||
// C2026-004 - messagebox when create group
|
||||
MessageBox.Show($"{txt} group successfully created.", "Create group", MessageBoxButtons.OK, MessageBoxIcon.Information);
|
||||
}
|
||||
private void tvFolders_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e)
|
||||
{
|
||||
@@ -187,18 +190,22 @@ namespace VEPROMS
|
||||
//Add a Member to a Group
|
||||
private void addMember_Click(object sender, EventArgs e)
|
||||
{
|
||||
int groupIndex = cbGroupSelection.SelectedIndex;
|
||||
string selectedUserID = lstNonMembers.SelectedValue.ToString();
|
||||
int selectedUID = UserInfo.GetByUserID(selectedUserID).UID;
|
||||
GroupInfo gi = myGroupInfoList[groupIndex];
|
||||
User selectedUser = User.Get(selectedUID);
|
||||
// B2026-007 PROMS Security - don't error when add a user to a group but no group selected
|
||||
if (lstNonMembers.SelectedValue != null)
|
||||
{
|
||||
int groupIndex = cbGroupSelection.SelectedIndex;
|
||||
string selectedUserID = lstNonMembers.SelectedValue.ToString();
|
||||
int selectedUID = UserInfo.GetByUserID(selectedUserID).UID;
|
||||
GroupInfo gi = myGroupInfoList[groupIndex];
|
||||
User selectedUser = User.Get(selectedUID);
|
||||
|
||||
Membership.MakeMembership(selectedUser, Group.Get(gi.GID), null, "");
|
||||
updateMembershipLists();
|
||||
lstNonMembers.SelectedIndex = -1;
|
||||
Membership.MakeMembership(selectedUser, Group.Get(gi.GID), null, "");
|
||||
updateMembershipLists();
|
||||
lstNonMembers.SelectedIndex = -1;
|
||||
|
||||
int index = lstMembers.FindString(selectedUserID);
|
||||
lstMembers.SetSelected(index, true);
|
||||
int index = lstMembers.FindString(selectedUserID);
|
||||
lstMembers.SetSelected(index, true);
|
||||
}
|
||||
}
|
||||
|
||||
//Remove a Member From a Group
|
||||
@@ -209,7 +216,7 @@ namespace VEPROMS
|
||||
MembershipInfo mi = (MembershipInfo)lstMembers.SelectedItem;
|
||||
string selectedUserID = mi.MyUserUserID;
|
||||
string msg = "Are you sure you want to remove this Group Member?";
|
||||
if (MessageBox.Show(this, msg, "Confirm Group Member Removal", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question) == DialogResult.Yes)
|
||||
if (MessageBox.Show(this, msg, "Confirm Group Member Removal", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
|
||||
{
|
||||
if (mi.MyGroup.GroupName == "Administrators" && mi.MyGroup.GroupMemberships.Count(mm => mm.EndDate == null || mm.EndDate == string.Empty) == 1)
|
||||
{
|
||||
@@ -248,7 +255,7 @@ namespace VEPROMS
|
||||
MessageBox.Show("There are still users who are members of this group. You need to delete all members in order to delete this group.", "Group Has Members", MessageBoxButtons.OK, MessageBoxIcon.Warning);
|
||||
return;
|
||||
}
|
||||
if (MessageBox.Show("Are you sure you want to delete this group?", "Confirm Deleting Group", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question) == DialogResult.Yes)
|
||||
if (MessageBox.Show("Are you sure you want to delete this group?", "Confirm Deleting Group", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
|
||||
{
|
||||
Group.Delete(gi.GID);
|
||||
LoadRefreshGroupUsers();
|
||||
@@ -326,6 +333,7 @@ namespace VEPROMS
|
||||
User u = User.MakeUser("[Enter New UserID]", "", "", "", "", "", "", "", "", "", "", DateTime.Now, "");
|
||||
frmManageUser frm = new frmManageUser("add");
|
||||
frm.MyUser = u;
|
||||
frm.Text = "Enter New UserID"; //C2026-002 Change Title bar on Add/Edit User
|
||||
if (frm.ShowDialog(this) == DialogResult.OK)
|
||||
{
|
||||
u = frm.MyUser;
|
||||
@@ -389,7 +397,7 @@ namespace VEPROMS
|
||||
}
|
||||
int nummemberships = ui.UserMemberships.Count(mi => mi.EndDate == null || mi.EndDate == string.Empty);
|
||||
string mem_text = nummemberships > 0 ? "\r\nNote that this will remove all memberships that this user has." : "";
|
||||
if (MessageBox.Show($"Are you sure you want to delete this user?{mem_text}", "Confirm Deleting User", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question) == DialogResult.Yes)
|
||||
if (MessageBox.Show($"Are you sure you want to delete this user?{mem_text}", "Confirm Deleting User", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
|
||||
{
|
||||
foreach (MembershipInfo minfo in ui.UserMemberships.Where(mi => mi.EndDate == null || mi.EndDate == string.Empty))
|
||||
{
|
||||
@@ -469,7 +477,7 @@ namespace VEPROMS
|
||||
{
|
||||
MembershipInfo mi = (MembershipInfo)lstGroups.SelectedItem;
|
||||
string msg = "Are you sure you want to remove this Group Member?";
|
||||
if (MessageBox.Show(this, msg, "Confirm Group Member Removal", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question) == DialogResult.Yes)
|
||||
if (MessageBox.Show(this, msg, "Confirm Group Member Removal", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
|
||||
{
|
||||
if (mi.MyGroup.GroupName == "Administrators" && mi.MyGroup.GroupMemberships.Count(mm => mm.EndDate == null || mm.EndDate == string.Empty) == 1)
|
||||
{
|
||||
|
||||
+154
-137
@@ -28,142 +28,158 @@
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
this.btnOK = new DevComponents.DotNetBar.ButtonX();
|
||||
this.btnCancel = new DevComponents.DotNetBar.ButtonX();
|
||||
this.label1 = new System.Windows.Forms.Label();
|
||||
this.superTooltip1 = new DevComponents.DotNetBar.SuperTooltip();
|
||||
this.dateTimeInput1 = new DevComponents.Editors.DateTimeAdv.DateTimeInput();
|
||||
this.btnNow = new DevComponents.DotNetBar.ButtonX();
|
||||
((System.ComponentModel.ISupportInitialize)(this.dateTimeInput1)).BeginInit();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// btnOK
|
||||
//
|
||||
this.btnOK.AccessibleRole = System.Windows.Forms.AccessibleRole.PushButton;
|
||||
this.btnOK.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
|
||||
this.btnOK.ColorTable = DevComponents.DotNetBar.eButtonColor.OrangeWithBackground;
|
||||
this.btnOK.DialogResult = System.Windows.Forms.DialogResult.OK;
|
||||
this.btnOK.Location = new System.Drawing.Point(18, 111);
|
||||
this.btnOK.Name = "btnOK";
|
||||
this.btnOK.Size = new System.Drawing.Size(64, 23);
|
||||
this.btnOK.Style = DevComponents.DotNetBar.eDotNetBarStyle.StyleManagerControlled;
|
||||
this.btnOK.TabIndex = 1;
|
||||
this.btnOK.Text = "OK";
|
||||
this.btnOK.Click += new System.EventHandler(this.btnOK_Click);
|
||||
//
|
||||
// btnCancel
|
||||
//
|
||||
this.btnCancel.AccessibleRole = System.Windows.Forms.AccessibleRole.PushButton;
|
||||
this.btnCancel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.btnCancel.ColorTable = DevComponents.DotNetBar.eButtonColor.OrangeWithBackground;
|
||||
this.btnCancel.DialogResult = System.Windows.Forms.DialogResult.Cancel;
|
||||
this.btnCancel.Location = new System.Drawing.Point(179, 111);
|
||||
this.btnCancel.Name = "btnCancel";
|
||||
this.btnCancel.Size = new System.Drawing.Size(64, 23);
|
||||
this.btnCancel.Style = DevComponents.DotNetBar.eDotNetBarStyle.StyleManagerControlled;
|
||||
this.btnCancel.TabIndex = 2;
|
||||
this.btnCancel.Text = "Cancel";
|
||||
//
|
||||
// label1
|
||||
//
|
||||
this.label1.AutoSize = true;
|
||||
this.label1.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||
this.label1.Location = new System.Drawing.Point(3, 19);
|
||||
this.label1.Name = "label1";
|
||||
this.label1.Size = new System.Drawing.Size(229, 15);
|
||||
this.label1.TabIndex = 3;
|
||||
this.label1.Text = "Show Change Bars on Changes Starting:";
|
||||
//
|
||||
// superTooltip1
|
||||
//
|
||||
this.superTooltip1.DefaultTooltipSettings = new DevComponents.DotNetBar.SuperTooltipInfo("", "", "", null, null, DevComponents.DotNetBar.eTooltipColor.Gray);
|
||||
this.superTooltip1.LicenseKey = "F962CEC7-CD8F-4911-A9E9-CAB39962FC1F";
|
||||
//
|
||||
// dateTimeInput1
|
||||
//
|
||||
//
|
||||
//
|
||||
//
|
||||
this.dateTimeInput1.BackgroundStyle.Class = "DateTimeInputBackground";
|
||||
this.dateTimeInput1.BackgroundStyle.CornerType = DevComponents.DotNetBar.eCornerType.Square;
|
||||
this.dateTimeInput1.ButtonDropDown.Shortcut = DevComponents.DotNetBar.eShortcut.AltDown;
|
||||
this.dateTimeInput1.ButtonDropDown.Visible = true;
|
||||
this.dateTimeInput1.CustomFormat = "MM/dd/yyyy HH:mm:ss";
|
||||
this.dateTimeInput1.DateTimeSelectorVisibility = DevComponents.Editors.DateTimeAdv.eDateTimeSelectorVisibility.DateSelector;
|
||||
this.dateTimeInput1.Format = DevComponents.Editors.eDateTimePickerFormat.Custom;
|
||||
this.dateTimeInput1.IsPopupCalendarOpen = false;
|
||||
this.dateTimeInput1.Location = new System.Drawing.Point(30, 51);
|
||||
//
|
||||
//
|
||||
//
|
||||
//
|
||||
//
|
||||
//
|
||||
this.dateTimeInput1.MonthCalendar.BackgroundStyle.CornerType = DevComponents.DotNetBar.eCornerType.Square;
|
||||
this.dateTimeInput1.MonthCalendar.CalendarDimensions = new System.Drawing.Size(1, 1);
|
||||
this.dateTimeInput1.MonthCalendar.ClearButtonVisible = true;
|
||||
//
|
||||
//
|
||||
//
|
||||
this.dateTimeInput1.MonthCalendar.CommandsBackgroundStyle.BackColor2SchemePart = DevComponents.DotNetBar.eColorSchemePart.BarBackground2;
|
||||
this.dateTimeInput1.MonthCalendar.CommandsBackgroundStyle.BackColorGradientAngle = 90;
|
||||
this.dateTimeInput1.MonthCalendar.CommandsBackgroundStyle.BackColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.BarBackground;
|
||||
this.dateTimeInput1.MonthCalendar.CommandsBackgroundStyle.BorderTop = DevComponents.DotNetBar.eStyleBorderType.Solid;
|
||||
this.dateTimeInput1.MonthCalendar.CommandsBackgroundStyle.BorderTopColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.BarDockedBorder;
|
||||
this.dateTimeInput1.MonthCalendar.CommandsBackgroundStyle.BorderTopWidth = 1;
|
||||
this.dateTimeInput1.MonthCalendar.CommandsBackgroundStyle.CornerType = DevComponents.DotNetBar.eCornerType.Square;
|
||||
this.dateTimeInput1.MonthCalendar.DisplayMonth = new System.DateTime(2016, 2, 1, 0, 0, 0, 0);
|
||||
//
|
||||
//
|
||||
//
|
||||
this.dateTimeInput1.MonthCalendar.NavigationBackgroundStyle.BackColor2SchemePart = DevComponents.DotNetBar.eColorSchemePart.PanelBackground2;
|
||||
this.dateTimeInput1.MonthCalendar.NavigationBackgroundStyle.BackColorGradientAngle = 90;
|
||||
this.dateTimeInput1.MonthCalendar.NavigationBackgroundStyle.BackColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.PanelBackground;
|
||||
this.dateTimeInput1.MonthCalendar.NavigationBackgroundStyle.CornerType = DevComponents.DotNetBar.eCornerType.Square;
|
||||
this.dateTimeInput1.MonthCalendar.TodayButtonVisible = true;
|
||||
this.dateTimeInput1.Name = "dateTimeInput1";
|
||||
this.dateTimeInput1.Size = new System.Drawing.Size(146, 20);
|
||||
this.dateTimeInput1.Style = DevComponents.DotNetBar.eDotNetBarStyle.StyleManagerControlled;
|
||||
this.superTooltip1.SetSuperTooltip(this.dateTimeInput1, new DevComponents.DotNetBar.SuperTooltipInfo("Change Bar Start Date", "", "Only the changes made after this date will have change bars.", null, null, DevComponents.DotNetBar.eTooltipColor.Gray, true, true, new System.Drawing.Size(138, 67)));
|
||||
this.dateTimeInput1.TabIndex = 4;
|
||||
this.dateTimeInput1.TimeSelectorTimeFormat = DevComponents.Editors.DateTimeAdv.eTimeSelectorFormat.Time24H;
|
||||
this.dateTimeInput1.TimeSelectorType = DevComponents.Editors.DateTimeAdv.eTimeSelectorType.TouchStyle;
|
||||
//
|
||||
// btnNow
|
||||
//
|
||||
this.btnNow.AccessibleRole = System.Windows.Forms.AccessibleRole.PushButton;
|
||||
this.btnNow.ColorTable = DevComponents.DotNetBar.eButtonColor.OrangeWithBackground;
|
||||
this.btnNow.Location = new System.Drawing.Point(182, 51);
|
||||
this.btnNow.Name = "btnNow";
|
||||
this.btnNow.Size = new System.Drawing.Size(49, 23);
|
||||
this.btnNow.Style = DevComponents.DotNetBar.eDotNetBarStyle.StyleManagerControlled;
|
||||
this.superTooltip1.SetSuperTooltip(this.btnNow, new DevComponents.DotNetBar.SuperTooltipInfo("Now", "", "This will set the Change Bar Start date to today.", null, null, DevComponents.DotNetBar.eTooltipColor.Gray));
|
||||
this.btnNow.TabIndex = 5;
|
||||
this.btnNow.Text = "Today";
|
||||
this.btnNow.Click += new System.EventHandler(this.btnNow_Click);
|
||||
//
|
||||
// dlgSetChangeBarStartDate
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.ClientSize = new System.Drawing.Size(268, 144);
|
||||
this.Controls.Add(this.btnNow);
|
||||
this.Controls.Add(this.dateTimeInput1);
|
||||
this.Controls.Add(this.label1);
|
||||
this.Controls.Add(this.btnCancel);
|
||||
this.Controls.Add(this.btnOK);
|
||||
this.DoubleBuffered = true;
|
||||
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog;
|
||||
this.MaximizeBox = false;
|
||||
this.MinimizeBox = false;
|
||||
this.Name = "dlgSetChangeBarStartDate";
|
||||
this.ShowIcon = false;
|
||||
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
|
||||
this.Text = "Change Bar Start Date";
|
||||
this.Load += new System.EventHandler(this.dlgSetChangeBarStartDate_Load);
|
||||
((System.ComponentModel.ISupportInitialize)(this.dateTimeInput1)).EndInit();
|
||||
this.ResumeLayout(false);
|
||||
this.PerformLayout();
|
||||
this.btnOK = new DevComponents.DotNetBar.ButtonX();
|
||||
this.btnCancel = new DevComponents.DotNetBar.ButtonX();
|
||||
this.label1 = new System.Windows.Forms.Label();
|
||||
this.superTooltip1 = new DevComponents.DotNetBar.SuperTooltip();
|
||||
this.dateTimeInput1 = new DevComponents.Editors.DateTimeAdv.DateTimeInput();
|
||||
this.btnNow = new DevComponents.DotNetBar.ButtonX();
|
||||
this.btnResetToApproved = new DevComponents.DotNetBar.ButtonX();
|
||||
((System.ComponentModel.ISupportInitialize)(this.dateTimeInput1)).BeginInit();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// btnOK
|
||||
//
|
||||
this.btnOK.AccessibleRole = System.Windows.Forms.AccessibleRole.PushButton;
|
||||
this.btnOK.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
|
||||
this.btnOK.ColorTable = DevComponents.DotNetBar.eButtonColor.OrangeWithBackground;
|
||||
this.btnOK.DialogResult = System.Windows.Forms.DialogResult.OK;
|
||||
this.btnOK.Location = new System.Drawing.Point(18, 111);
|
||||
this.btnOK.Name = "btnOK";
|
||||
this.btnOK.Size = new System.Drawing.Size(64, 23);
|
||||
this.btnOK.Style = DevComponents.DotNetBar.eDotNetBarStyle.StyleManagerControlled;
|
||||
this.btnOK.TabIndex = 1;
|
||||
this.btnOK.Text = "OK";
|
||||
this.btnOK.Click += new System.EventHandler(this.btnOK_Click);
|
||||
//
|
||||
// btnCancel
|
||||
//
|
||||
this.btnCancel.AccessibleRole = System.Windows.Forms.AccessibleRole.PushButton;
|
||||
this.btnCancel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.btnCancel.ColorTable = DevComponents.DotNetBar.eButtonColor.OrangeWithBackground;
|
||||
this.btnCancel.DialogResult = System.Windows.Forms.DialogResult.Cancel;
|
||||
this.btnCancel.Location = new System.Drawing.Point(179, 111);
|
||||
this.btnCancel.Name = "btnCancel";
|
||||
this.btnCancel.Size = new System.Drawing.Size(64, 23);
|
||||
this.btnCancel.Style = DevComponents.DotNetBar.eDotNetBarStyle.StyleManagerControlled;
|
||||
this.btnCancel.TabIndex = 2;
|
||||
this.btnCancel.Text = "Cancel";
|
||||
//
|
||||
// label1
|
||||
//
|
||||
this.label1.AutoSize = true;
|
||||
this.label1.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||
this.label1.Location = new System.Drawing.Point(3, 19);
|
||||
this.label1.Name = "label1";
|
||||
this.label1.Size = new System.Drawing.Size(229, 15);
|
||||
this.label1.TabIndex = 3;
|
||||
this.label1.Text = "Show Change Bars on Changes Starting:";
|
||||
//
|
||||
// superTooltip1
|
||||
//
|
||||
this.superTooltip1.DefaultTooltipSettings = new DevComponents.DotNetBar.SuperTooltipInfo("", "", "", null, null, DevComponents.DotNetBar.eTooltipColor.Gray);
|
||||
this.superTooltip1.LicenseKey = "F962CEC7-CD8F-4911-A9E9-CAB39962FC1F";
|
||||
//
|
||||
// dateTimeInput1
|
||||
//
|
||||
//
|
||||
//
|
||||
//
|
||||
this.dateTimeInput1.BackgroundStyle.Class = "DateTimeInputBackground";
|
||||
this.dateTimeInput1.BackgroundStyle.CornerType = DevComponents.DotNetBar.eCornerType.Square;
|
||||
this.dateTimeInput1.ButtonDropDown.Shortcut = DevComponents.DotNetBar.eShortcut.AltDown;
|
||||
this.dateTimeInput1.ButtonDropDown.Visible = true;
|
||||
this.dateTimeInput1.CustomFormat = "MM/dd/yyyy HH:mm:ss";
|
||||
this.dateTimeInput1.DateTimeSelectorVisibility = DevComponents.Editors.DateTimeAdv.eDateTimeSelectorVisibility.DateSelector;
|
||||
this.dateTimeInput1.Format = DevComponents.Editors.eDateTimePickerFormat.Custom;
|
||||
this.dateTimeInput1.IsPopupCalendarOpen = false;
|
||||
this.dateTimeInput1.Location = new System.Drawing.Point(30, 51);
|
||||
//
|
||||
//
|
||||
//
|
||||
//
|
||||
//
|
||||
//
|
||||
this.dateTimeInput1.MonthCalendar.BackgroundStyle.CornerType = DevComponents.DotNetBar.eCornerType.Square;
|
||||
this.dateTimeInput1.MonthCalendar.CalendarDimensions = new System.Drawing.Size(1, 1);
|
||||
this.dateTimeInput1.MonthCalendar.ClearButtonVisible = true;
|
||||
//
|
||||
//
|
||||
//
|
||||
this.dateTimeInput1.MonthCalendar.CommandsBackgroundStyle.BackColor2SchemePart = DevComponents.DotNetBar.eColorSchemePart.BarBackground2;
|
||||
this.dateTimeInput1.MonthCalendar.CommandsBackgroundStyle.BackColorGradientAngle = 90;
|
||||
this.dateTimeInput1.MonthCalendar.CommandsBackgroundStyle.BackColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.BarBackground;
|
||||
this.dateTimeInput1.MonthCalendar.CommandsBackgroundStyle.BorderTop = DevComponents.DotNetBar.eStyleBorderType.Solid;
|
||||
this.dateTimeInput1.MonthCalendar.CommandsBackgroundStyle.BorderTopColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.BarDockedBorder;
|
||||
this.dateTimeInput1.MonthCalendar.CommandsBackgroundStyle.BorderTopWidth = 1;
|
||||
this.dateTimeInput1.MonthCalendar.CommandsBackgroundStyle.CornerType = DevComponents.DotNetBar.eCornerType.Square;
|
||||
this.dateTimeInput1.MonthCalendar.DisplayMonth = new System.DateTime(2016, 2, 1, 0, 0, 0, 0);
|
||||
//
|
||||
//
|
||||
//
|
||||
this.dateTimeInput1.MonthCalendar.NavigationBackgroundStyle.BackColor2SchemePart = DevComponents.DotNetBar.eColorSchemePart.PanelBackground2;
|
||||
this.dateTimeInput1.MonthCalendar.NavigationBackgroundStyle.BackColorGradientAngle = 90;
|
||||
this.dateTimeInput1.MonthCalendar.NavigationBackgroundStyle.BackColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.PanelBackground;
|
||||
this.dateTimeInput1.MonthCalendar.NavigationBackgroundStyle.CornerType = DevComponents.DotNetBar.eCornerType.Square;
|
||||
this.dateTimeInput1.MonthCalendar.TodayButtonVisible = true;
|
||||
this.dateTimeInput1.Name = "dateTimeInput1";
|
||||
this.dateTimeInput1.Size = new System.Drawing.Size(146, 20);
|
||||
this.dateTimeInput1.Style = DevComponents.DotNetBar.eDotNetBarStyle.StyleManagerControlled;
|
||||
this.superTooltip1.SetSuperTooltip(this.dateTimeInput1, new DevComponents.DotNetBar.SuperTooltipInfo("Change Bar Start Date", "", "Only the changes made after this date will have change bars.", null, null, DevComponents.DotNetBar.eTooltipColor.Gray, true, true, new System.Drawing.Size(138, 67)));
|
||||
this.dateTimeInput1.TabIndex = 4;
|
||||
this.dateTimeInput1.TimeSelectorTimeFormat = DevComponents.Editors.DateTimeAdv.eTimeSelectorFormat.Time24H;
|
||||
this.dateTimeInput1.TimeSelectorType = DevComponents.Editors.DateTimeAdv.eTimeSelectorType.TouchStyle;
|
||||
//
|
||||
// btnNow
|
||||
//
|
||||
this.btnNow.AccessibleRole = System.Windows.Forms.AccessibleRole.PushButton;
|
||||
this.btnNow.ColorTable = DevComponents.DotNetBar.eButtonColor.OrangeWithBackground;
|
||||
this.btnNow.Location = new System.Drawing.Point(182, 51);
|
||||
this.btnNow.Name = "btnNow";
|
||||
this.btnNow.Size = new System.Drawing.Size(49, 23);
|
||||
this.btnNow.Style = DevComponents.DotNetBar.eDotNetBarStyle.StyleManagerControlled;
|
||||
this.superTooltip1.SetSuperTooltip(this.btnNow, new DevComponents.DotNetBar.SuperTooltipInfo("Now", "", "This will set the Change Bar Start date to today.", null, null, DevComponents.DotNetBar.eTooltipColor.Gray));
|
||||
this.btnNow.TabIndex = 5;
|
||||
this.btnNow.Text = "Today";
|
||||
this.btnNow.Click += new System.EventHandler(this.btnNow_Click);
|
||||
//
|
||||
// btnResetToApproved
|
||||
//
|
||||
this.btnResetToApproved.AccessibleRole = System.Windows.Forms.AccessibleRole.PushButton;
|
||||
this.btnResetToApproved.ColorTable = DevComponents.DotNetBar.eButtonColor.OrangeWithBackground;
|
||||
this.btnResetToApproved.Location = new System.Drawing.Point(30, 77);
|
||||
this.btnResetToApproved.Name = "btnResetToApproved";
|
||||
this.btnResetToApproved.Size = new System.Drawing.Size(201, 23);
|
||||
this.btnResetToApproved.Style = DevComponents.DotNetBar.eDotNetBarStyle.StyleManagerControlled;
|
||||
this.btnResetToApproved.TabIndex = 6;
|
||||
this.btnResetToApproved.Text = "Reset Change Bar To Approved Date";
|
||||
this.btnResetToApproved.Tooltip = "Reset Change Bar to the last approved date. If no approvals, reset to as if no ch" +
|
||||
"ange bar date. After selecting this, press OK to save.";
|
||||
this.btnResetToApproved.Click += new System.EventHandler(this.btnResetToApproved_Click);
|
||||
//
|
||||
// dlgSetChangeBarStartDate
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.ClientSize = new System.Drawing.Size(268, 144);
|
||||
this.Controls.Add(this.btnResetToApproved);
|
||||
this.Controls.Add(this.btnNow);
|
||||
this.Controls.Add(this.dateTimeInput1);
|
||||
this.Controls.Add(this.label1);
|
||||
this.Controls.Add(this.btnCancel);
|
||||
this.Controls.Add(this.btnOK);
|
||||
this.DoubleBuffered = true;
|
||||
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog;
|
||||
this.MaximizeBox = false;
|
||||
this.MinimizeBox = false;
|
||||
this.Name = "dlgSetChangeBarStartDate";
|
||||
this.ShowIcon = false;
|
||||
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
|
||||
this.Text = "Change Bar Start Date";
|
||||
this.Load += new System.EventHandler(this.dlgSetChangeBarStartDate_Load);
|
||||
((System.ComponentModel.ISupportInitialize)(this.dateTimeInput1)).EndInit();
|
||||
this.ResumeLayout(false);
|
||||
this.PerformLayout();
|
||||
|
||||
}
|
||||
|
||||
@@ -175,5 +191,6 @@
|
||||
private DevComponents.DotNetBar.SuperTooltip superTooltip1;
|
||||
private DevComponents.Editors.DateTimeAdv.DateTimeInput dateTimeInput1;
|
||||
private DevComponents.DotNetBar.ButtonX btnNow;
|
||||
}
|
||||
private DevComponents.DotNetBar.ButtonX btnResetToApproved;
|
||||
}
|
||||
}
|
||||
@@ -1,31 +1,25 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Data;
|
||||
using System.Drawing;
|
||||
using System.Text;
|
||||
using System.Windows.Forms;
|
||||
using DevComponents.DotNetBar;
|
||||
using DevComponents.DotNetBar.Controls;
|
||||
using VEPROMS.CSLA.Library;
|
||||
|
||||
using Volian.Base.Library;
|
||||
using Volian.Controls.Library;
|
||||
|
||||
namespace VEPROMS
|
||||
{
|
||||
public partial class dlgSetChangeBarStartDate : DevComponents.DotNetBar.Office2007Form
|
||||
{
|
||||
private ProcedureConfig _MyProcConfig = null;
|
||||
public ProcedureConfig MyProcConfig { get; set; } = null;
|
||||
|
||||
public ProcedureConfig MyProcConfig
|
||||
{
|
||||
get { return _MyProcConfig; }
|
||||
set { _MyProcConfig = value; }
|
||||
}
|
||||
public ProcedureInfo MyProcInfo { get; set; } = null;
|
||||
|
||||
public dlgSetChangeBarStartDate(ProcedureConfig pc)
|
||||
public dlgSetChangeBarStartDate(ProcedureConfig pc, ProcedureInfo pi)
|
||||
{
|
||||
InitializeComponent();
|
||||
_MyProcConfig = pc;
|
||||
MyProcConfig = pc;
|
||||
MyProcInfo = pi;
|
||||
}
|
||||
|
||||
private void dlgSetChangeBarStartDate_Load(object sender, EventArgs e)
|
||||
@@ -37,7 +31,7 @@ namespace VEPROMS
|
||||
{
|
||||
cbdt = DateTime.Now.ToString("MM/dd/yyyy") + " " + DateTime.Now.ToString("HH:mm:ss");
|
||||
dateTimeInput1.Value = DateTime.Parse(cbdt);
|
||||
return;
|
||||
return;
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -72,13 +66,115 @@ namespace VEPROMS
|
||||
private void btnOK_Click(object sender, EventArgs e)
|
||||
{
|
||||
MyProcConfig.Print_ChangeBarDate = dateTimeInput1.Value.ToString("MM/dd/yyyy HH:mm:ss");// ("MM/dd/yyyy HH:mm:ss");
|
||||
}
|
||||
|
||||
//CSM - C2026-010 - Add Audit Record for Change Bar Audit History
|
||||
ChangeBarAuditHistory.AddAudit(MyProcInfo.ItemID, $"Set ChangeBars set to ({dateTimeInput1.Value.ToString("MM/dd/yyyy HH:mm:ss")}) by ({VlnSettings.UserID}) on ({DateTime.Now})", DateTime.Now, VlnSettings.UserID, 0);
|
||||
|
||||
//CSM C2026-014 if multi-unit, set for each unit
|
||||
System.Data.DataTable dt = RevisionData.GetRevisionDataByUnit(MyProcInfo.ItemID);
|
||||
if (RevisionData.HasUnits(dt))
|
||||
{
|
||||
//Change the ChangeBarDate for each unit
|
||||
foreach (DataRow r in dt.Rows)
|
||||
{
|
||||
if (!r.IsNull("UnitID"))
|
||||
{
|
||||
MyProcConfig.SelectedSlave = Convert.ToInt32(r["UnitID"]);
|
||||
MyProcConfig.Print_ChangeBarDate = dateTimeInput1.Value.ToString("MM/dd/yyyy HH:mm:ss");
|
||||
|
||||
//CSM - C2026-010 - Add Audit Record for Change Bar Audit History
|
||||
ChangeBarAuditHistory.AddAudit(MyProcInfo.ItemID, $"Set ChangeBars set to ({dateTimeInput1.Value.ToString("MM/dd/yyyy HH:mm:ss")}) by ({VlnSettings.UserID}) on ({DateTime.Now}) for (Unit {r["UnitName"]})", DateTime.Now, VlnSettings.UserID, MyProcConfig.SelectedSlave);
|
||||
}
|
||||
}
|
||||
MyProcConfig.SelectedSlave = 0;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private void btnNow_Click(object sender, EventArgs e)
|
||||
private void btnNow_Click(object sender, EventArgs e)
|
||||
{
|
||||
dateTimeInput1.Value = DateTime.Now;
|
||||
}
|
||||
|
||||
}
|
||||
//C2026-009 Add Option to Reset Change Bar to Last Approved Date/Time
|
||||
private void btnResetToApproved_Click(object sender, EventArgs e)
|
||||
{
|
||||
System.Data.DataTable dt = RevisionData.GetRevisionDataByUnit(MyProcInfo.ItemID);
|
||||
|
||||
if (dt.Rows.Count == 0)
|
||||
{
|
||||
//no records, remove
|
||||
if (MessageBox.Show("There are currently no approvals set. Selecting yes will set ChangeBars to show all changes since the creation of the procedure.\r\nAre you sure you wish to reset ChangeBars?", "Reset ChangeBar Date", MessageBoxButtons.YesNo) == DialogResult.Yes)
|
||||
{
|
||||
MyProcConfig.Print_ChangeBarDate = "";
|
||||
DialogResult = DialogResult.OK;
|
||||
|
||||
//CSM - C2026-010 - Add Audit Record for Change Bar Audit History
|
||||
ChangeBarAuditHistory.AddAudit(MyProcInfo.ItemID, $"Reset ChangeBars performed by ({VlnSettings.UserID}) on ({DateTime.Now}). ChangeBars reset to show all changes.", DateTime.Now, VlnSettings.UserID, 0);
|
||||
|
||||
Close();
|
||||
}
|
||||
}
|
||||
else if (RevisionData.HasUnits(dt))
|
||||
{
|
||||
|
||||
//any with units
|
||||
string maxDTS = RevisionData.MaxDTS(dt).ToString("MM/dd/yyyy HH:mm:ss");
|
||||
|
||||
//create wording for ChangeBar changes
|
||||
StringBuilder sb = new StringBuilder();
|
||||
sb.Append($" The Procedure Viewer Change Bar Date will be set to ({maxDTS}).");
|
||||
foreach (DataRow r in dt.Rows)
|
||||
{
|
||||
if (!r.IsNull("UnitID"))
|
||||
{
|
||||
sb.Append($"\r\n The Change Bar Date for Unit ({r["UnitName"]}) will be set to ({Convert.ToDateTime(r["DTS"]):MM/dd/yyyy HH:mm:ss}).");
|
||||
}
|
||||
}
|
||||
|
||||
sb.Append("\r\n Any Change Bars for Units not listed above will use the Overall/Procedure Viewer Change Bar Date (as these Units have no approvals).");
|
||||
|
||||
if (CustomMessageBox.Show($"This will reset ChangeBars to show for changes newer than the last approval.\r\nThis includes the following changes:\r\n{sb.ToString()}\r\n\r\nAre you sure you wish to reset ChangeBars?", "Reset ChangeBar Date", "Yes", "No") == DialogResult.Yes)
|
||||
{
|
||||
//Change the overall ChangeBarDate
|
||||
MyProcConfig.Print_ChangeBarDate = maxDTS;
|
||||
|
||||
//Change the ChangeBarDate for each unit
|
||||
foreach (DataRow r in dt.Rows)
|
||||
{
|
||||
if (!r.IsNull("UnitID"))
|
||||
{
|
||||
MyProcConfig.SelectedSlave = Convert.ToInt32(r["UnitID"]);
|
||||
MyProcConfig.Print_ChangeBarDate = Convert.ToDateTime(r["DTS"]).ToString("MM / dd / yyyy HH: mm: ss");
|
||||
|
||||
//CSM - C2026-010 - Add Audit Record for Change Bar Audit History
|
||||
ChangeBarAuditHistory.AddAudit(MyProcInfo.ItemID, $"Reset ChangeBars performed by ({VlnSettings.UserID}) on ({DateTime.Now}). ChangeBars reset to show since last approval ({Convert.ToDateTime(r["DTS"]):MM/dd/yyyy HH:mm:ss}) for (Unit {r["UnitName"]})", DateTime.Now, VlnSettings.UserID, MyProcConfig.SelectedSlave);
|
||||
}
|
||||
}
|
||||
MyProcConfig.SelectedSlave = 0;
|
||||
DialogResult = DialogResult.OK;
|
||||
|
||||
//CSM - C2026-010 - Add Audit Record for Change Bar Audit History
|
||||
ChangeBarAuditHistory.AddAudit(MyProcInfo.ItemID, $"Reset ChangeBars performed by ({VlnSettings.UserID}) on ({DateTime.Now}). ChangeBars reset to show since last approval ({maxDTS})", DateTime.Now, VlnSettings.UserID, 0);
|
||||
|
||||
Close();
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
//no units
|
||||
string maxDTS = RevisionData.MaxDTS(dt).ToString("MM/dd/yyyy HH:mm:ss");
|
||||
if (MessageBox.Show($"This will reset ChangeBars to show for changes newer than the last approval ({maxDTS}).\r\nAre you sure you wish to reset ChangeBars?", "Reset ChangeBar Date", MessageBoxButtons.YesNo) == DialogResult.Yes)
|
||||
{
|
||||
MyProcConfig.Print_ChangeBarDate = maxDTS;
|
||||
DialogResult = DialogResult.OK;
|
||||
|
||||
//CSM - C2026-010 - Add Audit Record for Change Bar Audit History
|
||||
ChangeBarAuditHistory.AddAudit(MyProcInfo.ItemID, $"Reset ChangeBars performed by ({VlnSettings.UserID}) on ({DateTime.Now}). ChangeBars reset to show since last approval ({maxDTS})", DateTime.Now, VlnSettings.UserID, 0);
|
||||
Close();
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+507
-402
File diff suppressed because it is too large
Load Diff
@@ -62,6 +62,8 @@ namespace VEPROMS
|
||||
swRmObsoleteROData.Enabled = false;
|
||||
swRmOrphanDataRecs.Enabled = false;
|
||||
swRefreshWordAttmts.Enabled = false;
|
||||
swRegenWordAttmts.Enabled = false;
|
||||
swRefreshTblsForSrch.Enabled = false;
|
||||
swStandardHypenChars.Enabled = false;
|
||||
|
||||
//if not full admin, disable Purge Change History
|
||||
@@ -149,7 +151,28 @@ namespace VEPROMS
|
||||
return false;
|
||||
}
|
||||
|
||||
private void ResetTV(bool noProcs)
|
||||
//C2026-002 Enhancements to new admin Tool for ROs not used.
|
||||
private void ResetmyTV_RO_DBs()
|
||||
{
|
||||
this.Cursor = Cursors.WaitCursor;
|
||||
myTV_RO_DBs.Nodes.Clear();
|
||||
|
||||
TreeNode tn = myTV_RO_DBs.Nodes.Add("Select All");
|
||||
tn.Tag = 0;
|
||||
tn.Checked = true;
|
||||
|
||||
foreach (DataRow rw in GeneralReports.GetRODBs().Rows)
|
||||
{
|
||||
TreeNode tn_db = tn.Nodes.Add(rw["dbiTitle"].ToString());
|
||||
tn_db.Tag = rw["dbiID"].ToString();
|
||||
tn_db.Checked = true;
|
||||
}
|
||||
tn.Expand();
|
||||
|
||||
this.Cursor = Cursors.Default;
|
||||
}
|
||||
|
||||
private void ResetTV(bool noProcs)
|
||||
{
|
||||
btnFixLinks.Enabled = false;
|
||||
this.Cursor = Cursors.WaitCursor;
|
||||
@@ -627,11 +650,111 @@ namespace VEPROMS
|
||||
this.Cursor = Cursors.Default;
|
||||
}
|
||||
|
||||
// B2022-047 - refresh the Content/Text field for table, i.e. Grid, Data so that search will find text in the Grid
|
||||
// NOTE that an out of memeory error occurs when having to process alot of tables. A config flag is used on the
|
||||
// grid record to flag that this operation has been run. And a message is placed in the result window stating to
|
||||
// rerun until all tables/text fields are completed.
|
||||
private void RefreshTablesForSearch()
|
||||
private int RegenCounter = 0;
|
||||
private int RegenTotal = 0;
|
||||
private const int TicksToupdate = 300000; //5 minutes(300 seconds).
|
||||
|
||||
// C2026-007 - Generate Missing PDFs
|
||||
// regenerates the saved attachment PDFs from the database
|
||||
// so that this is not needed the next time the procedures are printed. This also forces ROs to be refreshed in the attachments
|
||||
private void RegenPDFs()
|
||||
{
|
||||
this.Cursor = Cursors.WaitCursor;
|
||||
DateTime pStart = DateTime.Now;
|
||||
txtProcess.AppendText("Generating missing Word Attachments");
|
||||
txtProcess.AppendText(Environment.NewLine);
|
||||
txtProcess.AppendText(string.Format("Started: {0}", pStart.ToString("MM/dd/yyyy @ HH:mm")));
|
||||
txtProcess.AppendText(Environment.NewLine);
|
||||
txtProcess.AppendText("Gathering data for Word Attachments that need generated.");
|
||||
txtProcess.AppendText(Environment.NewLine);
|
||||
Application.DoEvents();
|
||||
|
||||
//get data of missing Docs by Unit that will need regenerated
|
||||
DataTable dt = Maintenance.GetMissingDocsByUnit();
|
||||
RegenCounter = 0;
|
||||
RegenTotal = dt.Rows.Count;
|
||||
txtProcess.AppendText($"Word Attachments to be generated: {RegenTotal}");
|
||||
txtProcess.AppendText(Environment.NewLine);
|
||||
txtProcess.AppendText(Environment.NewLine);
|
||||
txtProcess.AppendText($"Note that this will provide updates approximately every {TicksToupdate/60000} minutes. Some attachments may take longer than others due to size/number of pages/number of ROs. If PROMS is in the middle of generating a large attachment, it may delay the update message until generation of that attachment completes (in that case taking more than 5 minutes between updates).");
|
||||
txtProcess.AppendText(Environment.NewLine);
|
||||
txtProcess.AppendText(Environment.NewLine);
|
||||
txtResults.AppendText($"{RegenTotal} Word Attachments to be generated.");
|
||||
txtResults.AppendText(Environment.NewLine);
|
||||
txtResults.AppendText(Environment.NewLine);
|
||||
|
||||
//generate as if not debug
|
||||
int debugstatus = MSWordToPDF.DebugStatus;
|
||||
MSWordToPDF.DebugStatus = 0;
|
||||
MSWordToPDF.OverrideColor = Color.Transparent;
|
||||
|
||||
Timer timer1 = new Timer();
|
||||
timer1.Tick += new EventHandler(UpdateRegenProgress);
|
||||
timer1.Interval = TicksToupdate;
|
||||
timer1.Start();
|
||||
|
||||
foreach (DataRow dr in dt.Rows)
|
||||
{
|
||||
//Do Generation
|
||||
using (Section sect = Section.Get((int)dr["SectionID"]))
|
||||
{
|
||||
using (DocumentInfo docInfo = DocumentInfo.Get((int)dr["DocID"]))
|
||||
{
|
||||
if (!dr.IsNull("UnitID")) sect.MyItemInfo.MyDocVersion.DocVersionConfig.SelectedSlave = (int)dr["UnitID"];
|
||||
MSWordToPDF.SetDocPdf(docInfo, sect.MyItemInfo);
|
||||
}
|
||||
}
|
||||
|
||||
//Increment - message every _ minutes
|
||||
RegenCounter++;
|
||||
}
|
||||
|
||||
//done with loop - stop timer and destroy it
|
||||
timer1.Stop();
|
||||
timer1.Dispose();
|
||||
|
||||
//Change DebugStatus Back to what it was
|
||||
if (debugstatus == 1)
|
||||
{
|
||||
MSWordToPDF.DebugStatus = 1;
|
||||
MSWordToPDF.OverrideColor = Color.Red;
|
||||
}
|
||||
else
|
||||
{
|
||||
MSWordToPDF.DebugStatus = 0;
|
||||
MSWordToPDF.OverrideColor = Color.Transparent;
|
||||
}
|
||||
|
||||
//end messaging
|
||||
txtProcess.AppendText(Environment.NewLine);
|
||||
txtProcess.AppendText($"Word Attachments Generated: {RegenTotal}");
|
||||
txtProcess.AppendText(Environment.NewLine);
|
||||
txtResults.AppendText(Environment.NewLine);
|
||||
txtResults.AppendText($"{RegenTotal} Word Attachments generated.");
|
||||
txtResults.AppendText(Environment.NewLine);
|
||||
txtResults.AppendText(Environment.NewLine);
|
||||
txtProcess.AppendText($"Completed: {DateTime.Now:G}");
|
||||
txtProcess.AppendText(Environment.NewLine);
|
||||
txtProcess.AppendText(Environment.NewLine);
|
||||
Application.DoEvents();
|
||||
this.Cursor = Cursors.Default;
|
||||
}
|
||||
|
||||
//Outputs the Progress of Regenerating the PDFs every __ minutes
|
||||
private void UpdateRegenProgress(Object myObject, EventArgs myEventArgs)
|
||||
{
|
||||
string progress_str = $"Generated {RegenCounter} of {RegenTotal} ({(decimal)RegenCounter / RegenTotal * 100M:F2}%): {DateTime.Now:G}";
|
||||
txtProcess.AppendText(progress_str);
|
||||
txtProcess.AppendText(Environment.NewLine);
|
||||
txtResults.AppendText(progress_str);
|
||||
txtResults.AppendText(Environment.NewLine);
|
||||
}
|
||||
|
||||
// B2022-047 - refresh the Content/Text field for table, i.e. Grid, Data so that search will find text in the Grid
|
||||
// NOTE that an out of memeory error occurs when having to process alot of tables. A config flag is used on the
|
||||
// grid record to flag that this operation has been run. And a message is placed in the result window stating to
|
||||
// rerun until all tables/text fields are completed.
|
||||
private void RefreshTablesForSearch()
|
||||
{
|
||||
this.Cursor = Cursors.WaitCursor;
|
||||
DateTime pStart = DateTime.Now;
|
||||
@@ -913,8 +1036,11 @@ namespace VEPROMS
|
||||
ROFstInfo roFstInfo = dq.DocVersionAssociations[0].MyROFst;
|
||||
string rofstPath = roFstInfo.MyRODb.FolderPath + @"\ro.fst";
|
||||
|
||||
//if (!pathExists(rofstPath))
|
||||
if (!File.Exists(rofstPath))
|
||||
//must get id before ROFST gets updated so know what to refresh later
|
||||
int origfstid = roFstInfo.ROFstID;
|
||||
|
||||
//if (!pathExists(rofstPath))
|
||||
if (!File.Exists(rofstPath))
|
||||
{
|
||||
ProgressBar.ColorTable = eProgressBarItemColor.Error;
|
||||
FinalProgressBarMessage = "No existing RO.FST";
|
||||
@@ -940,9 +1066,29 @@ namespace VEPROMS
|
||||
ROFstInfo.UpdateRoFst(roFstInfo.MyRODb, dv, roFstInfo, DoProgressBarRefresh);
|
||||
roFstInfo = dq.DocVersionAssociations[0].MyROFst;
|
||||
}
|
||||
roFstInfo.ROTableUpdate += new ROFstInfoROTableUpdateEvent(roFstInfo_ROTableUpdate);
|
||||
ROFst newrofst = ROFstInfo.RefreshROFst(dv, roFstInfo, DoProgressBarRefresh, txtProcess);
|
||||
roFstInfo.ROTableUpdate -= new ROFstInfoROTableUpdateEvent(roFstInfo_ROTableUpdate);
|
||||
else if (!dv.ROfstLastCompleted && origfstid == roFstInfo.ROFstID)
|
||||
{
|
||||
//Handle issue where load failed without completing update
|
||||
//previous RO FST did not load, get last loaded ID
|
||||
//if none, use -1 which will check all ROs in the Working Draft
|
||||
string cfg = dv.DocVersionAssociations[0].Config;
|
||||
AssociationConfig ac = new AssociationConfig((cfg == null || cfg.Length == 0) ? "<Config />" : cfg);
|
||||
if (dv.DocVersionAssociations[0]?.MyROFst != null)
|
||||
{
|
||||
if (!int.TryParse(ac.ROUpdate_PrevROFSTID, out origfstid))
|
||||
{
|
||||
origfstid = -1;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
origfstid = -1;
|
||||
}
|
||||
}
|
||||
|
||||
roFstInfo.ROTableUpdate += new ROFstInfoROTableUpdateEvent(roFstInfo_ROTableUpdate);
|
||||
ROFstInfo.RefreshROFstAtItemLevel(DocVersionInfo.Get(dv.VersionID), DoProgressBarRefresh, txtProcess, roFstInfo, origfstid, roFstInfo.ROFstID);
|
||||
roFstInfo.ROTableUpdate -= new ROFstInfoROTableUpdateEvent(roFstInfo_ROTableUpdate);
|
||||
}
|
||||
|
||||
Cursor = Cursors.Default;
|
||||
@@ -1071,6 +1217,24 @@ namespace VEPROMS
|
||||
}
|
||||
|
||||
private void myTV_AfterCheck(object sender, TreeViewEventArgs e)
|
||||
{
|
||||
//B2025 - 013 Admin Tool Tree Behavior
|
||||
//only want to perform this if
|
||||
// not an unknown action
|
||||
// aka is a mouse click
|
||||
// if this is fire-ing because clicked a parent or a child of an item
|
||||
// want this to only fire once - for the item clicked - not for parents/children
|
||||
if (e.Action != TreeViewAction.Unknown)
|
||||
{
|
||||
TreeView_AfterCheck(sender, e);
|
||||
|
||||
btnFixLinks.Enabled = btnDeleteItems.Enabled = AtLeastOneNodeChecked(((TreeView)sender).Nodes); // C2017-030 support for Refresh Transitions/Update RO Values
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
//C2026-002 Enhancements to new admin Tool for ROs not used.
|
||||
private void TreeView_AfterCheck(object sender, TreeViewEventArgs e)
|
||||
{
|
||||
//B2025 - 013 Admin Tool Tree Behavior
|
||||
//only want to perform this if
|
||||
@@ -1092,12 +1256,9 @@ namespace VEPROMS
|
||||
DiselectParentNodes(e.Node.Parent);
|
||||
DiselectChildNodes(e.Node.Nodes);
|
||||
}
|
||||
|
||||
btnFixLinks.Enabled = btnDeleteItems.Enabled = AtLeastOneNodeChecked(((TreeView)sender).Nodes); // C2017-030 support for Refresh Transitions/Update RO Values
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private void DiselectParentNodes(TreeNode parent)
|
||||
{
|
||||
while (parent != null)
|
||||
@@ -1178,10 +1339,10 @@ namespace VEPROMS
|
||||
{
|
||||
if (ProgressBar == null) return;
|
||||
|
||||
ProgressBar.Value = 100;
|
||||
ProgressBar.Maximum = 100;
|
||||
ProgressBar.Text = value;
|
||||
txtProcess.AppendText(value);
|
||||
ProgressBar.Text = value;
|
||||
ProgressBar.Maximum = 100;
|
||||
ProgressBar.Value = 100;
|
||||
txtProcess.AppendText(value);
|
||||
txtProcess.AppendText(Environment.NewLine);
|
||||
txtProcess.AppendText(Environment.NewLine);
|
||||
|
||||
@@ -1244,6 +1405,7 @@ namespace VEPROMS
|
||||
{
|
||||
AdminToolType = E_AdminToolType.Maintenance;
|
||||
setupProgessSteps1();
|
||||
ResetmyTV_RO_DBs(); //C2026-002 Enhancements to new admin Tool for ROs not used.
|
||||
|
||||
//notify Set Admin user that only Full Admins can run maintenance tools
|
||||
if (!IsAdministratorUser)
|
||||
@@ -1268,7 +1430,8 @@ namespace VEPROMS
|
||||
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");
|
||||
DevComponents.DotNetBar.StepItem siRefreshTblsSrchTxt = new DevComponents.DotNetBar.StepItem("siRefreshTblsSrchTxt", "Refresh Tables For Search");
|
||||
DevComponents.DotNetBar.StepItem siRegenAttmts = new DevComponents.DotNetBar.StepItem("siRegenAttmts", "Regenerate Word Attachments");
|
||||
DevComponents.DotNetBar.StepItem siRefreshTblsSrchTxt = new DevComponents.DotNetBar.StepItem("siRefreshTblsSrchTxt", "Refresh Tables For Search");
|
||||
// this will update/rebuild the progress bar in the bottom panel of Admin Tools
|
||||
private void setupProgessSteps1()
|
||||
{
|
||||
@@ -1286,7 +1449,9 @@ namespace VEPROMS
|
||||
progressSteps1.Items.Add(siStandardHyphens);
|
||||
if (swRefreshWordAttmts.Value)
|
||||
progressSteps1.Items.Add(siRefreshAttmts);
|
||||
if (swRefreshTblsForSrch.Value)
|
||||
if (swRegenWordAttmts.Value)
|
||||
progressSteps1.Items.Add(siRegenAttmts);
|
||||
if (swRefreshTblsForSrch.Value)
|
||||
progressSteps1.Items.Add(siRefreshTblsSrchTxt);
|
||||
splitContainer3.Panel2Collapsed = false;
|
||||
progressSteps1.Visible = true;
|
||||
@@ -1450,7 +1615,13 @@ namespace VEPROMS
|
||||
DeletePDFs(); // refresh word attachments
|
||||
StepProgress(prgStpIdx, 100);
|
||||
}
|
||||
if (swRefreshTblsForSrch.Value)
|
||||
if (swRegenWordAttmts.Value)
|
||||
{
|
||||
StepProgress(++prgStpIdx, 50);
|
||||
RegenPDFs(); // generate missing pdfs
|
||||
StepProgress(prgStpIdx, 100);
|
||||
}
|
||||
if (swRefreshTblsForSrch.Value)
|
||||
{
|
||||
StepProgress(++prgStpIdx, 50);
|
||||
RefreshTablesForSearch();
|
||||
@@ -1778,7 +1949,57 @@ namespace VEPROMS
|
||||
return true;
|
||||
}
|
||||
|
||||
}
|
||||
//CSM - C2025-043 report RO's that are not used in any of the PROMS data.
|
||||
private void btnROsNotUsed_Click(object sender, EventArgs e)
|
||||
{
|
||||
//Get the path to save the Image to
|
||||
SaveFileDialog sfd = new SaveFileDialog();
|
||||
sfd.DefaultExt = "bmp";
|
||||
sfd.AddExtension = true;
|
||||
sfd.Filter = "Image Files (*.bmp)|*.bmp";
|
||||
sfd.FileName = string.Format("ROsNotUsed_{0}", DateTime.Now.ToString("yyyyMMdd_HHmm"));
|
||||
sfd.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) + @"\VEPROMS";
|
||||
DialogResult dr = sfd.ShowDialog();
|
||||
|
||||
if (dr == DialogResult.OK)
|
||||
{
|
||||
//Initial messaging
|
||||
string statmsg = "Generating Snapshot (this may take a few minutes to complete)...";
|
||||
InitialProgressBarMessage = statmsg;
|
||||
txtResults.AppendText(statmsg);
|
||||
txtResults.AppendText(Environment.NewLine);
|
||||
|
||||
//C2026-002 Enhancements to new admin Tool for ROs not used.
|
||||
//Get the selected nodes
|
||||
DataTable dtIDs = new DataTable();
|
||||
dtIDs.Columns.Add("ID");
|
||||
|
||||
foreach (TreeNode tn in myTV_RO_DBs.Nodes[0].Nodes)
|
||||
if (tn.Checked)
|
||||
{
|
||||
DataRow dtrw = dtIDs.NewRow();
|
||||
dtrw["ID"] = int.Parse(tn.Tag.ToString());
|
||||
dtIDs.Rows.Add(dtrw);
|
||||
}
|
||||
|
||||
//Generate the data for ROs Not Used and save it to a TreeView
|
||||
TreeView tv = TreeViewExtensions.GetROTree(GeneralReports.GetROsNotUsedInPROMS(dtIDs), true);
|
||||
//Output the TreeView as an Image
|
||||
if (tv.Nodes.Count != 0)
|
||||
tv.SaveTreeViewAsImage(sfd.FileName);
|
||||
|
||||
//Give Messaging demonstrating finished and open file if requested
|
||||
statmsg = "Finished Generating Snapshot of ROs Not Used.";
|
||||
FinalProgressBarMessage = statmsg;
|
||||
txtResults.AppendText(statmsg);
|
||||
txtResults.AppendText(Environment.NewLine);
|
||||
if (tv.Nodes.Count != 0 && MessageBox.Show($"{statmsg}\r\n\r\nDo you wish to open the snapshot now?", "ROs Not Used", MessageBoxButtons.YesNo, MessageBoxIcon.Exclamation) == DialogResult.Yes)
|
||||
System.Diagnostics.Process.Start(sfd.FileName);
|
||||
else if (tv.Nodes.Count == 0)
|
||||
MessageBox.Show("All ROs are currently in use.", "ROs Not Used", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -120,16 +120,24 @@
|
||||
<metadata name="superTooltip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>17, 17</value>
|
||||
</metadata>
|
||||
<data name="swRefreshTblsForSrch.SuperTooltip" xml:space="preserve">
|
||||
<value>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.
|
||||
<data name="swRegenWordAttmts.SuperTooltip" xml:space="preserve">
|
||||
<value>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 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. Certain actions like loading a new RO.FST require that these PDFs be regenerated which is normally done at print time.
|
||||
|
||||
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.
|
||||
This function will generate (and save) any missing saved attachment PDFs stored in the database (not the PDFs of the entire procedure that you had previous printed). This will cause printing to be faster when you print after this as the PDFs will be pre-genrated in those cases (and thus not require regeneration unless changes were made to the Word Sections or ROs after running this).
|
||||
</value>
|
||||
</data>
|
||||
<data name="labelX1.SuperTooltip" xml:space="preserve">
|
||||
<value>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 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. Certain actions like loading a new RO.FST require that these PDFs be regenerated which is normally done at print time.
|
||||
|
||||
This function will generate (and save) any missing saved attachment PDFs stored in the database (not the PDFs of the entire procedure that you had previous printed). This will cause printing to be faster when you print after this as the PDFs will be pre-genrated in those cases (and thus not require regeneration unless changes were made to the Word Sections or ROs after running this).
|
||||
</value>
|
||||
</data>
|
||||
<data name="swRefreshTblsForSrch.SuperTooltip" xml:space="preserve">
|
||||
<value>To allow for a quicker search of the contents within a PROMS Step editor table, a text version of the table is stored separately. If the PROMS Search function is not finding something in a table, this tool will refresh the content of that separately stored table text. Another search should then be performed for the content that was not originally found.
|
||||
</value>
|
||||
</data>
|
||||
<data name="lblRefreshTblForSrch.SuperTooltip" xml:space="preserve">
|
||||
<value>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.
|
||||
|
||||
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.
|
||||
<value>To allow for a quicker search of the contents within a PROMS Step editor table, a text version of the table is stored separately. If the PROMS Search function is not finding something in a table, this tool will refresh the content of that separately stored table text. Another search should then be performed for the content that was not originally found.
|
||||
</value>
|
||||
</data>
|
||||
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
||||
@@ -175,7 +183,7 @@ RO paths, ROFST versions, and the contents of RO figures are stored in the datab
|
||||
Be sure a current backup exists prior to running this function!!</value>
|
||||
</data>
|
||||
<data name="swRefreshWordAttmts.SuperTooltip" xml:space="preserve">
|
||||
<value>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.
|
||||
<value>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 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.
|
||||
|
||||
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.
|
||||
</value>
|
||||
@@ -194,9 +202,9 @@ RO paths, ROFST versions, and the contents of RO figures are stored in the datab
|
||||
Be sure a current backup exists prior to running this function!!</value>
|
||||
</data>
|
||||
<data name="labelX5.SuperTooltip" xml:space="preserve">
|
||||
<value>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.
|
||||
<value>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 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.
|
||||
|
||||
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.
|
||||
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.
|
||||
</value>
|
||||
</data>
|
||||
<data name="labelX9.SuperTooltip" xml:space="preserve">
|
||||
@@ -216,51 +224,6 @@ Should an item become orphaned (disconnected) from the rest of the data, it will
|
||||
|
||||
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.
|
||||
</value>
|
||||
</data>
|
||||
<data name="btnIndexMaint.Tooltip" xml:space="preserve">
|
||||
<value>This will perform Index Maintenance to realign indexes to optimize performance.
|
||||
This function will cause no change to data or records in PROMS.
|
||||
It should however be performed when other users are not in PROMS, as it could
|
||||
cause slowdown or errors for other users while it is running.</value>
|
||||
</data>
|
||||
<data name="swDeleteFolder.SuperTooltip" xml:space="preserve">
|
||||
<value>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.
|
||||
|
||||
</value>
|
||||
</data>
|
||||
<data name="labelX13.SuperTooltip" xml:space="preserve">
|
||||
<value>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.
|
||||
|
||||
</value>
|
||||
</data>
|
||||
<data name="swDeleteAnnotations.SuperTooltip" xml:space="preserve">
|
||||
<value>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.</value>
|
||||
</data>
|
||||
<data name="labelX14.SuperTooltip" xml:space="preserve">
|
||||
<value>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.</value>
|
||||
</data>
|
||||
<data name="btnDeleteItems.SuperTooltip" xml:space="preserve">
|
||||
<value>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.</value>
|
||||
</data>
|
||||
<data name="btnPurgeChange.Tooltip" xml:space="preserve">
|
||||
<value>Purges all audit information and change history older than the above date.
|
||||
@@ -302,24 +265,30 @@ Only Full PROMS Administrator Users can perform this action.</value>
|
||||
dj38fYbVglHy1FGJt57uL9ZS10IN9cxfJPvXCzTgqSKH5xwNzVXSkFBBDsFKA4KV7IKVegQrda2e7j5N
|
||||
ud8AKwnMnBpmYFAAAAAASUVORK5CYII=
|
||||
</value>
|
||||
</data>
|
||||
<data name="btnIndexMaint.Tooltip" xml:space="preserve">
|
||||
<value>This will perform Index Maintenance to realign indexes to optimize performance.
|
||||
This function will cause no change to data or records in PROMS.
|
||||
It should however be performed when other users are not in PROMS, as it could
|
||||
cause slowdown or errors for other users while it is running.</value>
|
||||
</data>
|
||||
<data name="swCheckROLinks.SuperTooltip" xml:space="preserve">
|
||||
<value>This allows the user to check referenced objects links in procedure step data for multiple working drafts in a batch mode.
|
||||
<value>This allows the user to check referenced object 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.
|
||||
Bad referenced object links will be identified with a 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.
|
||||
Be sure a current backup of the database exists prior to performing this function.
|
||||
|
||||
It is recommended that this be done during off hours.
|
||||
|
||||
</value>
|
||||
</data>
|
||||
<data name="labelX12.SuperTooltip" xml:space="preserve">
|
||||
<value>This allows the user to check referenced objects links in procedure step data for multiple working drafts in a batch mode.
|
||||
<value>This allows the user to check referenced object 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.
|
||||
Bad referenced object links will be identified with a 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.
|
||||
Be sure a current backup of the database exists prior to performing this function.
|
||||
|
||||
It is recommended that this be done during off hours.
|
||||
</value>
|
||||
@@ -387,8 +356,47 @@ If more than one procedure is selected, it is recommended that this be performed
|
||||
dj38fYbVglHy1FGJt57uL9ZS10IN9cxfJPvXCzTgqSKH5xwNzVXSkFBBDsFKA4KV7IKVegQrda2e7j5N
|
||||
ud8AKwnMnBpmYFAAAAAASUVORK5CYII=
|
||||
</value>
|
||||
</data>
|
||||
<data name="swDeleteFolder.SuperTooltip" xml:space="preserve">
|
||||
<value>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.
|
||||
|
||||
</value>
|
||||
</data>
|
||||
<data name="labelX13.SuperTooltip" xml:space="preserve">
|
||||
<value>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.
|
||||
|
||||
</value>
|
||||
</data>
|
||||
<data name="swDeleteAnnotations.SuperTooltip" xml:space="preserve">
|
||||
<value>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.</value>
|
||||
</data>
|
||||
<data name="labelX14.SuperTooltip" xml:space="preserve">
|
||||
<value>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.</value>
|
||||
</data>
|
||||
<data name="btnDeleteItems.SuperTooltip" xml:space="preserve">
|
||||
<value>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.</value>
|
||||
</data>
|
||||
<metadata name="$this.TrayHeight" type="System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>137</value>
|
||||
<value>25</value>
|
||||
</metadata>
|
||||
</root>
|
||||
@@ -20,7 +20,27 @@ namespace VEPROMS
|
||||
_MyUser = value;
|
||||
SimpleUser su = new SimpleUser(_MyUser);
|
||||
pgUser.SelectedObject = su;
|
||||
this.Text = string.Format("{0} ({1} {2}) Information",su.UserID,su.FirstName,su.LastName);
|
||||
|
||||
//C2026-002 Change Title bar on Add/Edit User
|
||||
string tmp;
|
||||
if (!string.IsNullOrEmpty(su.FirstName) && !string.IsNullOrEmpty(su.LastName))
|
||||
{
|
||||
tmp = $"{su.UserID} ({su.FirstName} {su.LastName}) Information";
|
||||
}
|
||||
else if (!string.IsNullOrEmpty(su.LastName))
|
||||
{
|
||||
tmp = $"{su.UserID} ({su.LastName}) Information";
|
||||
}
|
||||
else if (!string.IsNullOrEmpty(su.FirstName))
|
||||
{
|
||||
tmp = $"{su.UserID} ({su.FirstName}) Information";
|
||||
}
|
||||
else
|
||||
{
|
||||
tmp = $"{su.UserID} Information";
|
||||
}
|
||||
|
||||
this.Text = tmp;
|
||||
}
|
||||
}
|
||||
private string _Mode;
|
||||
|
||||
@@ -678,7 +678,7 @@ namespace VEPROMS
|
||||
// to check that there are enough docstyles to map the selected type of section.
|
||||
PlantFormat pf = _SectionConfig.MyFormat != null ? _SectionConfig.MyFormat.PlantFormat : _SectionConfig.MyDefaultFormat.PlantFormat;
|
||||
if (!_Initializing && ppCmbxFormat.SelectedIndex >= 0)
|
||||
pf = FormatInfoList.SortedFormatInfoList[ppCmbxFormat.SelectedIndex].PlantFormat;
|
||||
pf = ((FormatInfo) ppCmbxFormat.SelectedItem).PlantFormat;
|
||||
else if (!_Initializing) // if the format was changed, it may have been set to default.
|
||||
pf = _SectionConfig.MyDefaultFormat.PlantFormat;
|
||||
_Initializing = true;
|
||||
|
||||
+2
-13
@@ -83,7 +83,6 @@ namespace VEPROMS
|
||||
this.lblUser = new DevComponents.DotNetBar.LabelItem();
|
||||
this.lblLastChange = new DevComponents.DotNetBar.LabelItem();
|
||||
this.btnStepRTF = new DevComponents.DotNetBar.ButtonItem();
|
||||
this.btnFixMSWord = new DevComponents.DotNetBar.ButtonItem();
|
||||
this.epAnnotations = new DevComponents.DotNetBar.ExpandablePanel();
|
||||
this.ctrlAnnotationDetails = new Volian.Controls.Library.AnnotationDetails();
|
||||
this.btnAnnoDetailsPushPin = new DevComponents.DotNetBar.ButtonX();
|
||||
@@ -541,8 +540,7 @@ namespace VEPROMS
|
||||
this.btnEditItem,
|
||||
this.lblUser,
|
||||
this.lblLastChange,
|
||||
this.btnStepRTF,
|
||||
this.btnFixMSWord});
|
||||
this.btnStepRTF});
|
||||
this.bottomBar.Location = new System.Drawing.Point(5, 573);
|
||||
this.bottomBar.Name = "bottomBar";
|
||||
this.bottomBar.Size = new System.Drawing.Size(1185, 25);
|
||||
@@ -728,14 +726,6 @@ namespace VEPROMS
|
||||
this.btnStepRTF.Text = "Step RTF";
|
||||
this.btnStepRTF.Click += new System.EventHandler(this.btnStepRTF_Click);
|
||||
//
|
||||
// btnFixMSWord
|
||||
//
|
||||
this.btnFixMSWord.ForeColor = System.Drawing.Color.Black;
|
||||
this.btnFixMSWord.Name = "btnFixMSWord";
|
||||
this.btnFixMSWord.Text = "Fix Symbol Fonts";
|
||||
this.btnFixMSWord.Visible = false;
|
||||
this.btnFixMSWord.Click += new System.EventHandler(this.btnFixMSWord_Click);
|
||||
//
|
||||
// epAnnotations
|
||||
//
|
||||
this.epAnnotations.CanvasColor = System.Drawing.SystemColors.Control;
|
||||
@@ -877,7 +867,7 @@ namespace VEPROMS
|
||||
this.infoPanel.ExpandOnTitleClick = true;
|
||||
this.infoPanel.Location = new System.Drawing.Point(614, 57);
|
||||
this.infoPanel.Name = "infoPanel";
|
||||
this.infoPanel.Size = new System.Drawing.Size(230, 490);
|
||||
this.infoPanel.Size = new System.Drawing.Size(300, 490);
|
||||
this.infoPanel.Style.Alignment = System.Drawing.StringAlignment.Center;
|
||||
this.infoPanel.Style.BackColor1.ColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.PanelBackground;
|
||||
this.infoPanel.Style.BackColor2.ColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.PanelBackground2;
|
||||
@@ -1775,7 +1765,6 @@ namespace VEPROMS
|
||||
private DevComponents.DotNetBar.ButtonItem btnItemInfo;
|
||||
private DevComponents.DotNetBar.ButtonItem btnFilter;
|
||||
private DevComponents.DotNetBar.TextBoxItem txtFilter;
|
||||
private DevComponents.DotNetBar.ButtonItem btnFixMSWord;
|
||||
private Volian.Controls.Library.DisplayBookMarks displayBookMarks;
|
||||
//private DevComponents.DotNetBar.LabelItem lblLocked;
|
||||
private DevComponents.DotNetBar.ButtonItem btnShortCuts;
|
||||
|
||||
@@ -234,7 +234,7 @@ namespace VEPROMS
|
||||
System.Threading.Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo("en-US");
|
||||
displayRO.TabControl = tc; // B2019-043 this was being passed in as a parameter for DisplayRO which caused issues with the Visual Studio designer
|
||||
|
||||
SetupFolder(MyDocVersion.FolderID);
|
||||
SetupFolder(MyDocVersion.FolderID);
|
||||
tc.MySessionInfo = MyParent.MySessionInfo;
|
||||
displaySearch1.TopFolderID = myDocVersion.FolderID;
|
||||
SelectedDVI = myDocVersion;
|
||||
@@ -245,13 +245,17 @@ namespace VEPROMS
|
||||
displayBookMarks.SetupBookMarks(); // setup bookmarks in the child window
|
||||
|
||||
tc.MyCopyStep = myParent.tc.MyCopyStep; // copy the copystep info to the child window
|
||||
|
||||
//B2026 - 048 View Only Mode freezes PROMS if last tab closed
|
||||
tc.EnableDisableStepProperties -= EnableDisableStepProperties;
|
||||
tc.EnableDisableStepProperties += new StepTabRibbonEvent(EnableDisableStepProperties);
|
||||
|
||||
(tv.Nodes[0] as VETreeNode).InChildWindow = true; // tells us this folder's tree nodes are in the child window
|
||||
(tv.Nodes[0] as VETreeNode).InChildWindow = true; // tells us this folder's tree nodes are in the child window
|
||||
}
|
||||
|
||||
public void OpenItem(ItemInfo myItemInfo)
|
||||
{
|
||||
tc.OpenItem(myItemInfo);
|
||||
tc.OpenItem(myItemInfo);
|
||||
}
|
||||
|
||||
public void RefreshItem(ItemInfo myItemInfo)
|
||||
@@ -352,9 +356,10 @@ namespace VEPROMS
|
||||
|
||||
displayRO.TabControl = tc; // B2019-043 this was being passed in as a parameter for DisplayRO which caused issues with the Visual Studio designer
|
||||
bottomProgBar.ValueChanged += new EventHandler(bottomProgBar_ValueChanged);
|
||||
tc.EnableDisableStepProperties += new StepTabRibbonEvent(EnableDisableStepProperties);
|
||||
|
||||
// When creating an XY Plot, a System.Drawing.Graphics is needed and it requires a form. Use the main form.
|
||||
if (VlnSettings.DebugMode)
|
||||
// When creating an XY Plot, a System.Drawing.Graphics is needed and it requires a form. Use the main form.
|
||||
if (VlnSettings.DebugMode)
|
||||
{
|
||||
MSWordToPDF.DebugStatus = 1;
|
||||
MSWordToPDF.OverrideColor = Color.Red;
|
||||
@@ -589,6 +594,25 @@ namespace VEPROMS
|
||||
}
|
||||
}
|
||||
|
||||
//B2019-140 Change bars do not get refreshed when approval is run.
|
||||
// Get the displaytab containing the procedure
|
||||
// if none exists, return null
|
||||
public DisplayTabItem GetTabContainingProcedure(int procid) => tc?.MyBar?.Items?.OfType<DisplayTabItem>().FirstOrDefault(x => x.MyItemInfo?.ItemID == procid);
|
||||
// Refresh Node in Tree
|
||||
// Used for when Change Bar Updates as part of approval.
|
||||
public void RefreshProcedureNode(ProcedureInfo itm)
|
||||
{
|
||||
VETreeNode tn = tv.FindNode(itm, tv.Nodes);
|
||||
var tmp = (ProcedureInfo)tn?.VEObject;
|
||||
if (tmp != null)
|
||||
{
|
||||
tmp.ChangeBarDate = itm.ChangeBarDate;
|
||||
tmp.MyConfig = itm.MyConfig;
|
||||
}
|
||||
|
||||
tn?.RefreshNode();
|
||||
}
|
||||
|
||||
void tv_SelectDateToStartChangeBars(object sender, vlnTreeEventArgs args)
|
||||
{
|
||||
ProcedureInfo pi = (args.Node as VETreeNode).VEObject as ProcedureInfo;
|
||||
@@ -598,7 +622,7 @@ namespace VEPROMS
|
||||
ProcedureConfig pc = pi.MyConfig as ProcedureConfig;
|
||||
if (pc == null) return;
|
||||
|
||||
dlgSetChangeBarStartDate cbdDlg = new dlgSetChangeBarStartDate(pc);
|
||||
dlgSetChangeBarStartDate cbdDlg = new dlgSetChangeBarStartDate(pc, pi);
|
||||
if (cbdDlg.ShowDialog() == DialogResult.OK)
|
||||
{
|
||||
using (Item itm = Item.Get(pi.ItemID))
|
||||
@@ -606,6 +630,28 @@ namespace VEPROMS
|
||||
itm.MyContent.Config = pc.ToString();
|
||||
itm.UserID = Volian.Base.Library.VlnSettings.UserID;
|
||||
itm.Save();
|
||||
|
||||
//B2019-140 Change bars do not get refreshed when approval is run.
|
||||
// Reset a Procedure and sub items in the cache
|
||||
ProcedureInfo newproc = ItemInfo.ResetProcedure(pi.ItemID);
|
||||
|
||||
//// Refresh the StepPanel for the current Procedure
|
||||
//// so change bars update
|
||||
//// on any open StepPanel
|
||||
|
||||
//B2026-019 Attempt to prevent an Access Error by utilizing a different Refresh if a Procedure is Open
|
||||
DisplayTabItem dti = GetTabContainingProcedure(pi.ItemID);
|
||||
if (dti != null)
|
||||
{
|
||||
|
||||
if (!dti.MyStepTabPanel.MyStepPanel.ContainsFocus)
|
||||
dti.MyStepTabPanel.MyStepPanel.Focus();
|
||||
|
||||
foreach (EditItem eitm in dti.MyStepTabPanel.MyStepPanel.Controls.OfType<EditItem>())
|
||||
{
|
||||
eitm.ChangeBar = eitm.MyItemInfo.HasChangeBar;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -923,7 +969,18 @@ namespace VEPROMS
|
||||
{
|
||||
pnl.ApplDisplayMode = displayApplicability.ViewMode;
|
||||
displayHistory.ApplDisplayMode = pnl.ApplDisplayMode;
|
||||
|
||||
//C2026-021 Expand Functionality of Viewing Mode
|
||||
if (pnl.ApplDisplayMode > 0 && pnl.VwMode != E_ViewMode.View)
|
||||
{
|
||||
pnl.VwMode = E_ViewMode.View;
|
||||
EnableDisableStepProperties(sender, new StepTabRibbonEventArgs(tc.SelectedDisplayTabItem.MyItemInfo, 0, pnl.VwMode));
|
||||
MessageBox.Show("Changing to View Only Mode. Applicability Viewing Mode must be Master to return to Edit Mode. View Mode can be toggled off via the Ribbon->View tab.", "Changing to View Mode", MessageBoxButtons.OK, MessageBoxIcon.Warning);
|
||||
}
|
||||
|
||||
pnl.MyStepTabPanel.MyStepTabRibbon.RefreshProcedure();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
void tv_ViewPDF(object sender, vlnTreeViewPdfArgs args)
|
||||
@@ -944,7 +1001,7 @@ namespace VEPROMS
|
||||
fs.Close();
|
||||
System.Diagnostics.Process.Start(fileName);
|
||||
}
|
||||
catch (Exception ex)
|
||||
catch (Exception)
|
||||
{
|
||||
StringBuilder sb = new StringBuilder();
|
||||
|
||||
@@ -1537,13 +1594,13 @@ namespace VEPROMS
|
||||
}
|
||||
else
|
||||
{
|
||||
SelectedROFst = myDTP.MyDisplayTabItem.MyItemInfo.MyDocVersion.DocVersionAssociations[0].MyROFst;
|
||||
SelectedROFst = myDTP.MyDisplayTabItem.MyItemInfo.MyDocVersion.DocVersionAssociations[0].MyROFst;
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (tc.MyEditItem != null && displayRO.MyROFST != null && tc.MyEditItem.MyItemInfo.MyDocVersion.DocVersionAssociations[0].ROFstID != displayRO.MyROFST.ROFstID)
|
||||
{
|
||||
SelectedROFst = tc.MyEditItem.MyItemInfo.MyDocVersion.DocVersionAssociations[0].MyROFst;
|
||||
SelectedROFst = tc.MyEditItem.MyItemInfo.MyDocVersion.DocVersionAssociations[0].MyROFst;
|
||||
}
|
||||
|
||||
// need this to update RO Tree after UpdateRofst (B2015-226)
|
||||
@@ -1551,9 +1608,9 @@ namespace VEPROMS
|
||||
if (displayRO.MyROFST != SelectedROFst)
|
||||
{
|
||||
displayRO.MyROFST = SelectedROFst;
|
||||
// B2023-021: force Load of Step Prop/RO panel RO tree by passing in
|
||||
// true to LoadTree
|
||||
displayRO.LoadTree(true);
|
||||
// B2023-021: force Load of Step Prop/RO panel RO tree by passing in
|
||||
// true to LoadTree
|
||||
if (!_WeAreExitingPROMS) displayRO.LoadTree(true);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1710,7 +1767,7 @@ namespace VEPROMS
|
||||
}
|
||||
else if (args.TypesSelected == "Complete RO Report")
|
||||
{
|
||||
Volian.Print.Library.PDFReport myReport = new Volian.Print.Library.PDFReport(args.ReportTitle, args.RODataFile, Volian.Base.Library.VlnSettings.TemporaryFolder + @"\CompleteROReport.pdf", args.RofstLookup, args.CompleteROReport, args.ConvertCaretToDelta, args.IncludeEmptyROFields, args.PaperSize);
|
||||
Volian.Print.Library.PDFReport myReport = new Volian.Print.Library.PDFReport(args.ReportTitle, args.RODataFile, Volian.Base.Library.VlnSettings.TemporaryFolder + @"\CompleteROReport.pdf", args.RofstLookup, args.ConvertCaretToDelta, args.IncludeEmptyROFields, args.PaperSize);
|
||||
myReport.Build();
|
||||
}
|
||||
else if (args.TypesSelected == "RO Summary Report")
|
||||
@@ -2091,7 +2148,7 @@ namespace VEPROMS
|
||||
//C2019-036 View Only mode work with Checked Out Procedures
|
||||
// View Only Mode is no longer checked out, so no longer has an OwnerID
|
||||
// This will keep those tabs from auto-closing based on the timer
|
||||
if (!myList.Contains(dti.OwnerID) && dti.MyStepTabPanel.MyStepPanel.VwMode != E_ViewMode.View)
|
||||
if (!myList.Contains(dti.OwnerID) && dti?.MyStepTabPanel?.MyStepPanel?.VwMode != E_ViewMode.View)
|
||||
{
|
||||
MyCloseTabList.PushDTI(dti);
|
||||
}
|
||||
@@ -2354,9 +2411,10 @@ namespace VEPROMS
|
||||
tv.MySessionInfo = MySessionInfo;
|
||||
tv.MyUserInfo = MyUserInfo;
|
||||
StepTabRibbon.MySessionInfo = MySessionInfo;
|
||||
displayRO.MySessionInfo = MySessionInfo;
|
||||
|
||||
// Initialize Caption with Server name and Database name.
|
||||
SetCaption(tv.TopNode as VETreeNode);
|
||||
// Initialize Caption with Server name and Database name.
|
||||
SetCaption(tv.TopNode as VETreeNode);
|
||||
System.Threading.AutoResetEvent autoEvent = new System.Threading.AutoResetEvent(false);
|
||||
|
||||
//System.Threading.TimerCallback timerDelegate = new System.Threading.TimerCallback(MySessionInfo.PingSession);
|
||||
@@ -3520,6 +3578,7 @@ namespace VEPROMS
|
||||
{
|
||||
if (parameter.StartsWith("/P="))
|
||||
{
|
||||
BaseLnSettings.blBaseLine = true;
|
||||
MSWordToPDF.Automatic = true;
|
||||
PromsPrinter.BaselineTesting = true;// Set Baseline Testing property for PROMsPrinter
|
||||
string[] dvstrs = parameter.Substring(3).Split(",".ToCharArray());
|
||||
@@ -3565,7 +3624,7 @@ namespace VEPROMS
|
||||
}
|
||||
ranAuto = true;
|
||||
}
|
||||
|
||||
BaseLnSettings.blBaseLine = false;
|
||||
if (ranAuto)
|
||||
{
|
||||
this.Close();
|
||||
@@ -4441,7 +4500,6 @@ namespace VEPROMS
|
||||
{
|
||||
infoPanel.Expanded = true;
|
||||
infoTabs.SelectedTab = infotabTags;
|
||||
displayTags.HighlightChangeStep();
|
||||
}
|
||||
else if (args.PanelTabName == "Change Image Size")
|
||||
{
|
||||
@@ -4511,8 +4569,17 @@ namespace VEPROMS
|
||||
|
||||
SetCaption(tv.SelectedNode as VETreeNode);
|
||||
displayApplicability.MyDisplayTabItem = tc.SelectedDisplayTabItem;
|
||||
|
||||
if (tc.SelectedDisplayTabItem.MyItemInfo.MyDocVersion.DocVersionAssociationCount > 0)
|
||||
|
||||
//C2026-008 Re-Architect RO.FST to include RO Modification date/time
|
||||
// DisplayTab was changed
|
||||
// need to clear the RTB selected
|
||||
// without resetting the DVI or FST
|
||||
// (those will be set manually / individually)
|
||||
// this will prevent DVI and FST from changing to null then back again
|
||||
// which will trigger reloads
|
||||
displayRO.ClearRTB();
|
||||
|
||||
if (tc.SelectedDisplayTabItem.MyItemInfo.MyDocVersion.DocVersionAssociationCount > 0)
|
||||
{
|
||||
displayRO.MyROFST = tc.SelectedDisplayTabItem.MyItemInfo.MyDocVersion.DocVersionAssociations[0].MyROFst;
|
||||
}
|
||||
@@ -4521,9 +4588,24 @@ namespace VEPROMS
|
||||
displayRO.MyROFST = null;
|
||||
}
|
||||
|
||||
// B2022-026 RO Memory reduction coding (Jakes Merge)
|
||||
// B2022-123: RO Tab Treeview not showing correct RO values when switching between procedures. (Added True for the forceLoad parameter)
|
||||
displayRO.LoadTree(true);
|
||||
//C2026-008 Re-Architect RO.FST to include RO Modification date/time
|
||||
// set the DocVersionInfo so that the FST and docversion are in sync
|
||||
SelectedDVI = tc.SelectedDisplayTabItem.MyItemInfo.MyDocVersion;
|
||||
if (displayRO.MyDvi != SelectedDVI)
|
||||
{
|
||||
displayRO.MyDvi = SelectedDVI;
|
||||
}
|
||||
Application.DoEvents();
|
||||
|
||||
// B2022-026 RO Memory reduction coding (Jakes Merge)
|
||||
// B2022-123: RO Tab Treeview not showing correct RO values when switching between procedures. (Added True for the forceLoad parameter)
|
||||
//C2026-008 Re-Architect RO.FST to include RO Modification date/time
|
||||
// if ROFST got updated,
|
||||
// set the Selected FST so it is in sync
|
||||
if (!_WeAreExitingPROMS && displayRO.LoadTree(true))
|
||||
{
|
||||
SelectedROFst = displayRO.MyROFST;
|
||||
}
|
||||
|
||||
lblUser.Text = tc.SelectedDisplayTabItem.MyUserRole;
|
||||
|
||||
@@ -4538,7 +4620,7 @@ namespace VEPROMS
|
||||
// also change the text on the buttons to read either Find or Find/Replace
|
||||
// also toggle the Replace tab on the dialog based on the user's accessibility to the procedure
|
||||
bool isReviewer = !MyUserInfo.IsAllowedToEdit(tc.SelectedDisplayTabItem.MyItemInfo.MyDocVersion);
|
||||
pnl.MyStepTabPanel.MyStepTabRibbon.SetButtonAndMenuEnabling(true);
|
||||
pnl.MyStepTabPanel.MyStepTabRibbon.SetButtonAndMenuEnabling();
|
||||
this.dlgFindReplace.ToggleReplaceTab(isReviewer ? E_ViewMode.View : E_ViewMode.Edit);
|
||||
pnl.MyStepTabPanel.MyStepTabRibbon.ToggleFindReplaceToolTip(isReviewer);
|
||||
}
|
||||
@@ -4587,8 +4669,6 @@ namespace VEPROMS
|
||||
if (args != null && args.MyEditItem != null && !args.MyEditItem.MyStepPanel.ContainsFocus)
|
||||
return;
|
||||
|
||||
btnFixMSWord.Visible = (args != null && (args.MyItemInfo != null && args.MyEditItem == null));
|
||||
|
||||
if (_LastStepRTB != null && !_LastStepRTB.Disposing && !_LastStepRTB.Closed)
|
||||
_LastStepRTB.EditModeChanged -= new StepRTBEvent(_LastStepRTB_EditModeChanged);
|
||||
|
||||
@@ -4726,9 +4806,15 @@ namespace VEPROMS
|
||||
// B2022-026 RO Memory reduction coding (Jakes Merge)
|
||||
displayRO.ProgressBar = bottomProgBar;
|
||||
displayRO.MyRTB = args.MyEditItem.MyStepRTB;
|
||||
displayRO.LoadTree();
|
||||
//C2026-008 Re-Architect RO.FST to include RO Modification date/time
|
||||
// if ROFST got updated,
|
||||
// set the Selected FST so it is in sync
|
||||
if (!_WeAreExitingPROMS && displayRO.LoadTree())
|
||||
{
|
||||
SelectedROFst = displayRO.MyROFST;
|
||||
}
|
||||
|
||||
displayBookMarks.MyEditItem = args.MyEditItem;
|
||||
displayBookMarks.MyEditItem = args.MyEditItem;
|
||||
displayHistory.MyEditItem = args.MyEditItem;
|
||||
|
||||
lblEditView.Text = args.MyEditItem.MyStepPanel.VwMode == E_ViewMode.Edit ? "Edit" : "View";
|
||||
@@ -4756,7 +4842,7 @@ namespace VEPROMS
|
||||
|
||||
// B2022-026 RO Memory reduction coding (Jakes Merge)
|
||||
displayRO.SetFindDocROButton(false);
|
||||
displayRO.LoadTree();
|
||||
if (!_WeAreExitingPROMS) displayRO.LoadTree();
|
||||
|
||||
//C2019-036 View Only mode work with Checked Out Procedures
|
||||
//In View Only Mode - Step Properties should be disabled
|
||||
@@ -4797,15 +4883,31 @@ namespace VEPROMS
|
||||
//In View Only Mode - Step Properties should be disabled
|
||||
public void EnableDisableStepProperties(object sender, StepTabRibbonEventArgs args)
|
||||
{
|
||||
if (args.ViewMode == E_ViewMode.View && (infoTabs.Enabled || infoTabs.SelectedTab != infotabTags))
|
||||
//C2026 - 021 Expand Functionality of Viewing Mode
|
||||
//B2026 - 048 View Only Mode freezes PROMS if last tab closed
|
||||
if (args.ViewMode == E_ViewMode.View && (infotabControlPanelTags.Enabled || (infoTabs.SelectedTab != infotabTags && infoTabs.SelectedTab != infotabApplicability)))
|
||||
{
|
||||
infoTabs.Enabled = true;
|
||||
infoTabs.SelectedTab = infotabTags;
|
||||
infoTabs.Enabled = false;
|
||||
if (infoTabs.SelectedTab != infotabApplicability)
|
||||
{
|
||||
infoTabs.SelectedTab = infotabTags;
|
||||
}
|
||||
|
||||
infotabControlPanelTags.Enabled = false;
|
||||
infotabControlPanelRO.Enabled = false;
|
||||
infotabControlPanelTransitions.Enabled = false;
|
||||
tabControlPanel1.Enabled = false;
|
||||
displayApplicability.SetEnableDisableItemSelection(false);
|
||||
tcpFoldoutMaint.Enabled = false;
|
||||
|
||||
}
|
||||
else if (args.ViewMode != E_ViewMode.View && !infoTabs.Enabled)
|
||||
else if (args.ViewMode != E_ViewMode.View && !infotabControlPanelTags.Enabled)
|
||||
{
|
||||
infoTabs.Enabled = true;
|
||||
infotabControlPanelTags.Enabled = true;
|
||||
infotabControlPanelRO.Enabled = true;
|
||||
infotabControlPanelTransitions.Enabled = true;
|
||||
tabControlPanel1.Enabled = true;
|
||||
displayApplicability.SetEnableDisableItemSelection(true);
|
||||
tcpFoldoutMaint.Enabled = true;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4889,9 +4991,15 @@ namespace VEPROMS
|
||||
displayRO.MyRTB = SelectedStepTabPanel.MyStepPanel.SelectedEditItem.MyStepRTB;
|
||||
displayRO.CurROLink = args.MyLinkText.MyRoUsageInfo;
|
||||
|
||||
// B2022-026 RO Memory reduction coding (Jakes Merge)
|
||||
displayRO.LoadTree();
|
||||
}
|
||||
// B2022-026 RO Memory reduction coding (Jakes Merge)
|
||||
//C2026-008 Re-Architect RO.FST to include RO Modification date/time
|
||||
// if ROFST got updated,
|
||||
// set the Selected FST so it is in sync
|
||||
if (displayRO.LoadTree())
|
||||
{
|
||||
SelectedROFst = displayRO.MyROFST;
|
||||
}
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
@@ -5158,8 +5266,8 @@ namespace VEPROMS
|
||||
{
|
||||
if (SelectedDVI != null)
|
||||
displayReports.Mydocversion = SelectedDVI;
|
||||
displayReports.advTreeProcSetsFillIn(reportFocus);
|
||||
displayReports.advTreeROFillIn(reportFocus);
|
||||
displayReports.advTreeProcSetsFillIn();
|
||||
displayReports.advTreeROFillIn();
|
||||
displayReports.SelectReferencedObjectTab(); // to enable RO selection
|
||||
}
|
||||
}
|
||||
@@ -5200,19 +5308,6 @@ namespace VEPROMS
|
||||
Clipboard.SetDataObject(mydo);
|
||||
}
|
||||
}
|
||||
private void btnFixMSWord_Click(object sender, EventArgs e)
|
||||
{
|
||||
if (tc.SelectedDisplayTabItem != null && tc.SelectedDisplayTabItem.MyDSOTabPanel != null)
|
||||
{
|
||||
string btnText = btnFixMSWord.Text;
|
||||
btnFixMSWord.FixedSize = btnFixMSWord.Size;
|
||||
btnFixMSWord.Text = "Processing ...";
|
||||
this.Cursor = Cursors.WaitCursor;
|
||||
tc.SelectedDisplayTabItem.MyDSOTabPanel.FixSymbolCharacters();
|
||||
btnFixMSWord.Text = btnText;
|
||||
this.Cursor = Cursors.Default;
|
||||
}
|
||||
}
|
||||
|
||||
private void epAnnotations_Resize(object sender, EventArgs e)
|
||||
{
|
||||
@@ -5344,6 +5439,8 @@ namespace VEPROMS
|
||||
private void btnUpdateFormat_Click(object sender, EventArgs e)
|
||||
{
|
||||
UpdateFormats(null);
|
||||
//C2025-060 When format is updated in PROMS, auto-update the format cache so it doesn't require exiting PROMS and going back in.
|
||||
RefreshFormats(sender, null);
|
||||
}
|
||||
|
||||
private void UpdateFormats(string mypath)
|
||||
|
||||
@@ -899,10 +899,10 @@ namespace VEPROMS
|
||||
set
|
||||
{
|
||||
if (ProgressBar == null) return;
|
||||
ProgressBar.Maximum = 100;
|
||||
ProgressBar.Value = 100;
|
||||
ProgressBar.Text = value;
|
||||
Application.DoEvents();
|
||||
ProgressBar.Text = value;
|
||||
ProgressBar.Maximum = 100;
|
||||
ProgressBar.Value = 100;
|
||||
Application.DoEvents();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1113,13 +1113,34 @@ namespace VEPROMS
|
||||
if (_Apples == null)
|
||||
{
|
||||
_Apples = new List<MiniConfig>();
|
||||
}
|
||||
_Apples.Add(cfg);
|
||||
}
|
||||
|
||||
//B2026-017 Use Pre-typed in information when adding New Applicability
|
||||
if (_Apples.Count == 0)
|
||||
{
|
||||
cfg.ID = textBox1.Text;
|
||||
if (!string.IsNullOrEmpty(textBox2.Text))
|
||||
{
|
||||
cfg.Name = textBox2.Text;
|
||||
}
|
||||
cfg.Number = textBox3.Text;
|
||||
cfg.Text = textBox4.Text;
|
||||
cfg.OtherID = textBox8.Text;
|
||||
cfg.OtherName = textBox9.Text;
|
||||
cfg.OtherNumber = textBox10.Text;
|
||||
cfg.OtherText = textBox11.Text;
|
||||
cfg.ProcedureNumber = textBox5.Text;
|
||||
cfg.SetID = textBox6.Text;
|
||||
cfg.SetName = textBox7.Text;
|
||||
}
|
||||
_Apples.Add(cfg);
|
||||
|
||||
bsApples.DataSource = null;
|
||||
bsApples.DataSource = _Apples;
|
||||
lbApplicabilities.SelectedItem = cfg;
|
||||
}
|
||||
lbApplicabilities.SelectedItem = cfg;
|
||||
lbApplicabilities_SelectedIndexChanged(sender, e);
|
||||
|
||||
}
|
||||
|
||||
private bool ApplicIsUsed(MiniConfig cfg) // B2017-230 - don't allow user to remove an applicability that is being used (specified)
|
||||
{
|
||||
@@ -1506,8 +1527,11 @@ namespace VEPROMS
|
||||
|
||||
Cursor = Cursors.WaitCursor;
|
||||
|
||||
// RO changes placed in file in the Documents\VEPROMS folder
|
||||
swROUpdate = new System.IO.StreamWriter(ROFstInfo.ROUpdateResultsPath(_DocVersionConfig.MyDocVersion.MyDocVersionInfo));
|
||||
//must get id before ROFST gets updated so know what to refresh later
|
||||
int origfstid = SelectedROFst.ROFstID;
|
||||
|
||||
// RO changes placed in file in the Documents\VEPROMS folder
|
||||
swROUpdate = new System.IO.StreamWriter(ROFstInfo.ROUpdateResultsPath(_DocVersionConfig.MyDocVersion.MyDocVersionInfo));
|
||||
DocVersion dv = _DocVersionConfig.MyDocVersion;
|
||||
// B2022-026 RO Memory Reduction code - first load the new ro.fst so that we can assign the ROTableUpdate event to the correct roFstInfo
|
||||
if (dv.ROfstLoadingFigures || dv.NewerRoFst) // B2017-125 see if loading figures was completed
|
||||
@@ -1515,13 +1539,32 @@ namespace VEPROMS
|
||||
ROFstInfo.UpdateRoFst(SelectedROFst.MyRODb, dv, SelectedROFst, DoProgressBarRefresh);
|
||||
SelectedROFst = null; // set to null to force getting the updated ROfst
|
||||
}
|
||||
else if (!dv.ROfstLastCompleted && origfstid == SelectedROFst.ROFstID)
|
||||
{
|
||||
//Handle issue where load failed without completing update
|
||||
//previous RO FST did not load, get last loaded ID
|
||||
//if none, use -1 which will check all ROs in the Working Draft
|
||||
string cfg = dv.DocVersionAssociations[0].Config;
|
||||
AssociationConfig ac = new AssociationConfig((cfg == null || cfg.Length == 0) ? "<Config />" : cfg);
|
||||
if (dv.DocVersionAssociations[0]?.MyROFst != null)
|
||||
{
|
||||
if (!int.TryParse(ac.ROUpdate_PrevROFSTID, out origfstid))
|
||||
{
|
||||
origfstid = -1;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
origfstid = -1;
|
||||
}
|
||||
}
|
||||
|
||||
ContentInfo.StaticContentInfoChange += ContentInfo_StaticContentInfoChange; // write changes to a text file
|
||||
ContentInfo.StaticContentInfoChange += ContentInfo_StaticContentInfoChange; // write changes to a text file
|
||||
SelectedROFst.ROTableUpdate += new ROFstInfoROTableUpdateEvent(roFstInfo_ROTableUpdate);
|
||||
|
||||
ROFst newrofst = ROFstInfo.RefreshROFst(_DocVersionConfig.MyDocVersion, SelectedROFst, DoProgressBarRefresh, null);
|
||||
ROFstInfo.RefreshROFstAtItemLevel(DocVersionInfo.Get(dv.VersionID), DoProgressBarRefresh, null, SelectedROFst, origfstid, SelectedROFst.ROFstID);
|
||||
|
||||
ContentInfo.StaticContentInfoChange -= ContentInfo_StaticContentInfoChange;
|
||||
ContentInfo.StaticContentInfoChange -= ContentInfo_StaticContentInfoChange;
|
||||
SelectedROFst.ROTableUpdate -= new ROFstInfoROTableUpdateEvent(roFstInfo_ROTableUpdate);
|
||||
|
||||
swROUpdate.Close();
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user