Output.FileWriters.Enhanced uses font properties, ver. 2.14.597
This commit is contained in:
@@ -13,31 +13,32 @@ namespace Results.Output.Printers.Enhanced
|
||||
{
|
||||
public class EnhancedPrintDocument : PrintDocument
|
||||
{
|
||||
const string FontFamilyName = "Arial"; //"Times New Roman";
|
||||
|
||||
const int SpacingOne = 18;
|
||||
const int SpacingOneAndHalf = (3 * SpacingOne) / 2;
|
||||
/// Size of the printed area without margins, after taking into account 'pageOrientation'
|
||||
readonly int printHeight;
|
||||
readonly int printWidth;
|
||||
|
||||
readonly int topMargin;
|
||||
readonly int bottomMargin;
|
||||
readonly int leftMargin;
|
||||
readonly int TitleX;
|
||||
readonly int TitleY; /// Depends on the size of the header
|
||||
readonly int CommonTop; /// = TitleY + 60
|
||||
readonly int BodyTop; /// = HdrTop + 160
|
||||
|
||||
readonly int SpacingOne;
|
||||
readonly int SpacingOneAndHalf;
|
||||
readonly int SpacingOne4Header;
|
||||
readonly int SpacingOneAndHalf4Header;
|
||||
|
||||
int CommonTop; /// = TitleY + 60
|
||||
int BodyTop; /// = HdrTop + 160
|
||||
///
|
||||
int titleHeight;
|
||||
int commonHeight;
|
||||
|
||||
/// Size of the printed area without margins, after taking into account 'pageOrientation'
|
||||
int printHeight;
|
||||
int printWidth;
|
||||
|
||||
/// <summary>
|
||||
/// Property variable for the Font the user wishes to use
|
||||
/// </summary>
|
||||
Font font;
|
||||
Font boldFont;
|
||||
Font headerFont;
|
||||
Font titleFont;
|
||||
|
||||
///
|
||||
@@ -45,6 +46,8 @@ namespace Results.Output.Printers.Enhanced
|
||||
///
|
||||
Results.Entities.Batch batch;
|
||||
|
||||
EnhancedPrinterCfg cfg;
|
||||
|
||||
///
|
||||
/// Items to print
|
||||
///
|
||||
@@ -67,40 +70,28 @@ namespace Results.Output.Printers.Enhanced
|
||||
/// Constructor
|
||||
/// </summary>
|
||||
/// <param name="textToPrint">Text to be printed</param>
|
||||
public EnhancedPrintDocument(Results.Entities.Batch batch,
|
||||
PageOrientation pageOrientation,
|
||||
int topMargin,
|
||||
int bottomMargin,
|
||||
int leftMargin,
|
||||
string header,
|
||||
IList<WMeterRsltItemSpec> commonItems,
|
||||
IList<WMeterRsltItemSpec> testItems,
|
||||
string footer)
|
||||
public EnhancedPrintDocument(Results.Entities.Batch batch, EnhancedPrinterCfg cfg)
|
||||
{
|
||||
this.batch = batch;
|
||||
|
||||
this.topMargin = topMargin;
|
||||
this.bottomMargin = bottomMargin;
|
||||
this.leftMargin = leftMargin;
|
||||
this.cfg = cfg;
|
||||
topMargin = cfg.TopMargin;
|
||||
bottomMargin = cfg.BottomMargin;
|
||||
leftMargin = cfg.LeftMargin;
|
||||
|
||||
this.header = header;
|
||||
this.commonItems = commonItems;
|
||||
this.testItems = testItems;
|
||||
this.footer = footer;
|
||||
header = string.IsNullOrEmpty(cfg.Header) ? string.Empty : cfg.Header.Replace("~", Environment.NewLine);
|
||||
commonItems = Results.WMeterRsltItemSpec.FromStrArray(cfg.CommonItems);
|
||||
testItems = Results.WMeterRsltItemSpec.FromStrArray(cfg.TestItems); /// TestID info will be overwritten later on
|
||||
footer = string.IsNullOrEmpty(cfg.Footer) ? string.Empty : cfg.Footer.Replace("~", Environment.NewLine);
|
||||
|
||||
TitleX = leftMargin;
|
||||
TitleY = topMargin; /// Depends on the size of the header
|
||||
///
|
||||
int headerLinesCount = (header.Contains(Environment.NewLine)) ? 2 : 1;
|
||||
titleHeight = headerLinesCount * 30 + 20;
|
||||
CommonTop = TitleY + titleHeight;
|
||||
|
||||
commonHeight = commonItems.Count * 20 + 20;
|
||||
BodyTop = CommonTop + commonHeight;
|
||||
|
||||
DefaultPageSettings.Landscape = (pageOrientation == PageOrientation.Landscape);
|
||||
/// Initialize fonts
|
||||
titleFont = new Font(cfg.TitFntFml, cfg.TitFntSz, (FontStyle)cfg.TitFntSty);
|
||||
headerFont = new Font(cfg.HdrFntFml, cfg.HdrFntSz, (FontStyle)cfg.HdrFntSty);
|
||||
font = new Font(cfg.BodyFntFml, cfg.BodyFntSz, (FontStyle)cfg.BodyFntSty);
|
||||
|
||||
/// Set print area size and margins (in dots using 100 dpi)
|
||||
DefaultPageSettings.Landscape = (cfg.PageOrientation == PageOrientation.Landscape);
|
||||
///
|
||||
if (DefaultPageSettings.Landscape)
|
||||
{
|
||||
printHeight = base.DefaultPageSettings.PaperSize.Width - topMargin - bottomMargin;
|
||||
@@ -112,22 +103,36 @@ namespace Results.Output.Printers.Enhanced
|
||||
printWidth = base.DefaultPageSettings.PaperSize.Width - leftMargin - leftMargin;
|
||||
}
|
||||
|
||||
SpacingOne = System.Windows.Forms.TextRenderer.MeasureText("Abcgq", font).Height;
|
||||
SpacingOneAndHalf = (3 * SpacingOne) / 2;
|
||||
SpacingOne4Header = System.Windows.Forms.TextRenderer.MeasureText("Abcgq", headerFont).Height;
|
||||
SpacingOneAndHalf4Header = (3 * SpacingOne4Header) / 2;
|
||||
|
||||
/// Calculate the tests count
|
||||
int testsCount = 0;
|
||||
if (batch.WaterMeters.Count > 0)
|
||||
{
|
||||
foreach (var mtr in batch.WaterMeters[0].MeterTestRslts)
|
||||
{
|
||||
if (mtr.Publish() == Config.Entities.Publish.Always) testsCount++;
|
||||
if (mtr.Publish() == Config.Entities.Publish.Always && mtr.IsPilotRslt()) testsCount++;
|
||||
}
|
||||
}
|
||||
|
||||
if (batch.WaterMeters.Count > 0 && batch.WaterMeters[0].Compound()) testsCount /= 3;
|
||||
/// Prepare document outline
|
||||
TitleX = cfg.LeftMargin;
|
||||
TitleY = cfg.TopMargin;
|
||||
|
||||
int wmSectionHeight = (testsCount + 4) * SpacingOne;
|
||||
titleHeight = System.Windows.Forms.TextRenderer.MeasureText(header, titleFont).Height;
|
||||
CommonTop = TitleY + titleHeight + SpacingOne4Header;
|
||||
|
||||
commonHeight = commonItems.Count * SpacingOne;
|
||||
BodyTop = CommonTop + commonHeight + SpacingOne4Header;
|
||||
|
||||
int wmSectionHeight = (testsCount + 1) * SpacingOne + 3 * SpacingOne4Header;
|
||||
|
||||
nrWMsOnFirstPage = (printHeight - BodyTop + TitleY - 2 * SpacingOne) / wmSectionHeight;
|
||||
nrWMsOnNextPage = (printHeight - 2 * SpacingOne) / wmSectionHeight;
|
||||
nrWMsOnNextPage = Math.Max(nrWMsOnNextPage, 1); /// Prevent division by zero if there are too many WM tests
|
||||
nrWMsOnNextPage = Math.Max(nrWMsOnNextPage, 1); /// Prevent division by zero if there are too many WM tests
|
||||
|
||||
nrPages = 1 + (batch.WaterMeters.Count - nrWMsOnFirstPage + nrWMsOnNextPage - 1) / nrWMsOnNextPage;
|
||||
|
||||
@@ -143,10 +148,6 @@ namespace Results.Output.Printers.Enhanced
|
||||
protected override void OnBeginPrint(System.Drawing.Printing.PrintEventArgs e)
|
||||
{
|
||||
base.OnBeginPrint(e);
|
||||
|
||||
if (font == null) { font = new Font(FontFamilyName, 10, FontStyle.Regular); }
|
||||
if (boldFont == null) { boldFont = new Font(FontFamilyName, 10, FontStyle.Bold); }
|
||||
if (titleFont == null) { titleFont = new Font(FontFamilyName, 18, FontStyle.Bold); }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -171,7 +172,7 @@ namespace Results.Output.Printers.Enhanced
|
||||
if (pageNr == 1)
|
||||
{
|
||||
///----------
|
||||
/// Header
|
||||
/// Title
|
||||
///----------
|
||||
RectangleF printArea = new RectangleF(TitleX, TitleY, printWidth, titleHeight);
|
||||
e.Graphics.DrawString(header, titleFont, Brushes.Black, printArea);
|
||||
@@ -249,7 +250,7 @@ namespace Results.Output.Printers.Enhanced
|
||||
|
||||
for (int i = 0; i < testItems.Count; i++)
|
||||
{
|
||||
float columnWidth = e.Graphics.MeasureString(testItems[i].Caption, font).Width;
|
||||
float columnWidth = e.Graphics.MeasureString(testItems[i].Caption, headerFont).Width;
|
||||
foreach (var mtr in wm.MeterTestRslts)
|
||||
{
|
||||
if (mtr != null && mtr.IsPilotRslt() && mtr.Publish() == Config.Entities.Publish.Always)
|
||||
@@ -270,24 +271,24 @@ namespace Results.Output.Printers.Enhanced
|
||||
int tableRightX = (int)columnPos[testItems.Count] - 20;
|
||||
|
||||
string wmText = string.Format("{0} {1}", Strings.Water_Meter, printedWMNr);
|
||||
PrintAt(e, leftMargin, top, wmText);
|
||||
PrintHeaderAt(e, leftMargin, top, wmText);
|
||||
if (!string.IsNullOrEmpty(wm.SerialNr))
|
||||
{
|
||||
PrintAt(e, leftMargin + (int)e.Graphics.MeasureString(wmText, font).Width, top,
|
||||
PrintHeaderAt(e, leftMargin + (int)e.Graphics.MeasureString(wmText, headerFont).Width, top,
|
||||
string.Format(" {0} = {1}", Strings.sn, wm.SerialNr));
|
||||
}
|
||||
|
||||
/// Horizontal line
|
||||
int horY = top + 25;
|
||||
int horY = top + SpacingOneAndHalf4Header;
|
||||
e.Graphics.DrawLine(new Pen(Color.Black, 2), new Point(tableLeftX, horY), new Point(tableRightX, horY));
|
||||
|
||||
for (int i = 0; i < testItems.Count; i++)
|
||||
{
|
||||
PrintAt(e, (int)columnPos[i], top + 27, testItems[i].Caption);
|
||||
PrintHeaderAt(e, (int)columnPos[i], top + (int)(1.6 * SpacingOne4Header), testItems[i].Caption);
|
||||
}
|
||||
|
||||
/// Horizontal line
|
||||
horY = top + 27 + SpacingOne;
|
||||
horY = top + (int)(2.8 * SpacingOne4Header);
|
||||
e.Graphics.DrawLine(new Pen(Color.Black, 2), new Point(tableLeftX, horY), new Point(tableRightX, horY));
|
||||
|
||||
int testsCount = 0;
|
||||
@@ -309,16 +310,16 @@ namespace Results.Output.Printers.Enhanced
|
||||
/// TODO: How to print colors?
|
||||
}
|
||||
|
||||
PrintAt(e, (int)columnPos[i], top + 30 + SpacingOne * testsCount, itemText);
|
||||
PrintAt(e, (int)columnPos[i], top + 2 * SpacingOne4Header + SpacingOne * testsCount, itemText);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// Horizontal line
|
||||
horY = top + 30 + SpacingOne * (testsCount + 1);
|
||||
horY = top + 2 * SpacingOneAndHalf4Header + SpacingOne * testsCount;
|
||||
e.Graphics.DrawLine(new Pen(Color.Black, 2), new Point(tableLeftX, horY), new Point(tableRightX, horY));
|
||||
|
||||
return (testsCount + 4) * SpacingOne;
|
||||
return (testsCount + 1) * SpacingOne + 3 * SpacingOne4Header;
|
||||
}
|
||||
|
||||
|
||||
@@ -330,21 +331,21 @@ namespace Results.Output.Printers.Enhanced
|
||||
|
||||
void PrintAt(System.Drawing.Printing.PrintPageEventArgs e, int x, int y, string text)
|
||||
{
|
||||
RectangleF printArea = new RectangleF(x, y, 667, SpacingOne);
|
||||
RectangleF printArea = new RectangleF(x, y, 2000, SpacingOne);
|
||||
e.Graphics.DrawString(text, this.font, Brushes.Black, printArea);
|
||||
}
|
||||
|
||||
|
||||
void PrintBoldAt(System.Drawing.Printing.PrintPageEventArgs e, Point p, string text)
|
||||
void PrintHeaderAt(System.Drawing.Printing.PrintPageEventArgs e, Point p, string text)
|
||||
{
|
||||
PrintBoldAt(e, p.X, p.Y, text);
|
||||
PrintHeaderAt(e, p.X, p.Y, text);
|
||||
}
|
||||
|
||||
|
||||
void PrintBoldAt(System.Drawing.Printing.PrintPageEventArgs e, int x, int y, string text)
|
||||
void PrintHeaderAt(System.Drawing.Printing.PrintPageEventArgs e, int x, int y, string text)
|
||||
{
|
||||
RectangleF printArea = new RectangleF(x, y, 667, SpacingOne);
|
||||
e.Graphics.DrawString(text, this.boldFont, Brushes.Black, printArea);
|
||||
RectangleF printArea = new RectangleF(x, y, 2000, SpacingOne4Header);
|
||||
e.Graphics.DrawString(text, this.headerFont, Brushes.Black, printArea);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,30 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
|
||||
namespace Results.Output.Printers.Enhanced
|
||||
{
|
||||
public class EnhancedPrinterCfg
|
||||
{
|
||||
public Config.Entities.PageOrientation PageOrientation;
|
||||
public int TopMargin;
|
||||
public int BottomMargin;
|
||||
public int LeftMargin;
|
||||
public string TitFntFml;
|
||||
public int TitFntSz;
|
||||
public int TitFntSty;
|
||||
public string HdrFntFml;
|
||||
public int HdrFntSz;
|
||||
public int HdrFntSty;
|
||||
public string BodyFntFml;
|
||||
public int BodyFntSz;
|
||||
public int BodyFntSty;
|
||||
public bool SupressPrinting; /// Bypass printing when true
|
||||
public System.Globalization.CultureInfo CultureInfo;
|
||||
public string[] CommonItems;
|
||||
public string[] TestItems;
|
||||
public string Header; /// =Title
|
||||
public string Footer;
|
||||
}
|
||||
}
|
||||
@@ -32,5 +32,5 @@ using System.Runtime.InteropServices;
|
||||
// You can specify all the values or you can default the Build and Revision Numbers
|
||||
// by using the '*' as shown below:
|
||||
// [assembly: AssemblyVersion("1.0.*")]
|
||||
[assembly: AssemblyVersion("2.14.595.0")]
|
||||
[assembly: AssemblyFileVersion("2.14.595.0")]
|
||||
[assembly: AssemblyVersion("2.14.597.0")]
|
||||
[assembly: AssemblyFileVersion("2.14.597.0")]
|
||||
|
||||
@@ -103,6 +103,7 @@
|
||||
<Compile Include="Output\Printers\Enhanced\EnhancedPrintDocument.cs">
|
||||
<SubType>Component</SubType>
|
||||
</Compile>
|
||||
<Compile Include="Output\Printers\Enhanced\EnhancedPrinterCfg.cs" />
|
||||
<Compile Include="Output\Printers\Munich\MunichPrintDocument.cs">
|
||||
<SubType>Component</SubType>
|
||||
</Compile>
|
||||
|
||||
@@ -26,9 +26,8 @@ namespace TBF.BenchControl.Output.FileWriters.Basic
|
||||
/// </summary>
|
||||
readonly IList<Results.WMeterRsltItemSpec> rsltItems;
|
||||
|
||||
Results.Entities.Batch batch;
|
||||
|
||||
Thread thread; /// Thread where one file is saved
|
||||
bool completed; /// Set to 'true' by the first thread when writing to the file completed
|
||||
bool abort; /// Set to 'true' by Stop() operation to abort writing to the file
|
||||
|
||||
|
||||
@@ -140,40 +139,34 @@ namespace TBF.BenchControl.Output.FileWriters.Basic
|
||||
/// <returns>Reference to the operation</returns>
|
||||
public IOperation WriteResultsOp(Results.Entities.Batch batch)
|
||||
{
|
||||
thread = new Thread(() =>
|
||||
{
|
||||
WriteRslts(batch, writerCfg.DestinationPath);
|
||||
WriteRslts(batch, writerCfg.DestinationPath2);
|
||||
completed = true;
|
||||
});
|
||||
|
||||
if (writerCfg.Culture > Culture.system && writerCfg.Culture < Culture.Count)
|
||||
{
|
||||
thread.CurrentCulture = new CultureInfo(writerCfg.Culture.ToString());
|
||||
}
|
||||
|
||||
this.batch = batch;
|
||||
return this;
|
||||
}
|
||||
|
||||
/// <summary>Start this operation</summary>
|
||||
public void Start()
|
||||
{
|
||||
completed = false;
|
||||
abort = false;
|
||||
thread.Start();
|
||||
}
|
||||
CultureInfo oriCulture = Thread.CurrentThread.CurrentCulture;
|
||||
|
||||
try { Thread.CurrentThread.CurrentCulture = new CultureInfo(writerCfg.Culture.ToString()); }
|
||||
catch { }
|
||||
|
||||
WriteRslts(batch, writerCfg.DestinationPath);
|
||||
WriteRslts(batch, writerCfg.DestinationPath2);
|
||||
|
||||
Thread.CurrentThread.CurrentCulture = oriCulture;
|
||||
}
|
||||
|
||||
/// <summary>Run this operation</summary>
|
||||
/// <returns>Event.ResultsWritten</returns>
|
||||
public Event Run()
|
||||
{
|
||||
return completed ? Event.ResultsWritten : Event.Busy;
|
||||
return Event.ResultsWritten;
|
||||
}
|
||||
|
||||
/// <summary>Stop this operation</summary>
|
||||
public void Stop()
|
||||
{
|
||||
if (!completed) abort = true;
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -214,7 +214,9 @@ namespace TBF.BenchControl.Output.FileWriters.Enhanced
|
||||
public void Start()
|
||||
{
|
||||
CultureInfo oriCulture = Thread.CurrentThread.CurrentCulture;
|
||||
Thread.CurrentThread.CurrentCulture = new CultureInfo(writerCfg.Culture.ToString());
|
||||
|
||||
try { Thread.CurrentThread.CurrentCulture = new CultureInfo(writerCfg.Culture.ToString()); }
|
||||
catch { }
|
||||
|
||||
WriteRslts(batch, writerCfg.DestinationPath);
|
||||
WriteRslts(batch, writerCfg.DestinationPath2);
|
||||
|
||||
@@ -193,7 +193,9 @@ namespace TBF.BenchControl.Output.FileWriters.Xml
|
||||
public void Start()
|
||||
{
|
||||
CultureInfo oriCulture = Thread.CurrentThread.CurrentCulture;
|
||||
Thread.CurrentThread.CurrentCulture = new CultureInfo(writerCfg.Culture.ToString());
|
||||
|
||||
try { Thread.CurrentThread.CurrentCulture = new CultureInfo(writerCfg.Culture.ToString()); }
|
||||
catch { }
|
||||
|
||||
WriteRslts(batch, writerCfg.DestinationPath);
|
||||
WriteRslts(batch, writerCfg.DestinationPath2);
|
||||
|
||||
@@ -5,6 +5,7 @@ using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Globalization;
|
||||
using System.Threading;
|
||||
using Results.Output.Printers.Enhanced;
|
||||
using log4net;
|
||||
|
||||
namespace TBF.BenchControl.Output.Printers.Enhanced
|
||||
@@ -77,6 +78,17 @@ namespace TBF.BenchControl.Output.Printers.Enhanced
|
||||
printerCfg.TopMargin = newCfg.TopMargin;
|
||||
printerCfg.BottomMargin = newCfg.BottomMargin;
|
||||
printerCfg.LeftMargin = newCfg.LeftMargin;
|
||||
|
||||
printerCfg.TitFntFml = newCfg.TitFntFml;
|
||||
printerCfg.TitFntSz = newCfg.TitFntSz;
|
||||
printerCfg.TitFntSty = newCfg.TitFntSty;
|
||||
printerCfg.HdrFntFml = newCfg.HdrFntFml;
|
||||
printerCfg.HdrFntSz = newCfg.HdrFntSz;
|
||||
printerCfg.HdrFntSty = newCfg.HdrFntSty;
|
||||
printerCfg.BodyFntFml = newCfg.BodyFntFml;
|
||||
printerCfg.BodyFntSz = newCfg.BodyFntSz;
|
||||
printerCfg.BodyFntSty = newCfg.BodyFntSty;
|
||||
|
||||
printerCfg.SupressPrinting = newCfg.SupressPrinting;
|
||||
printerCfg.Culture = newCfg.Culture;
|
||||
printerCfg.CommonItems = newCfg.CommonItems;
|
||||
@@ -144,17 +156,35 @@ namespace TBF.BenchControl.Output.Printers.Enhanced
|
||||
|
||||
void PrintResults(Results.Entities.Batch batch)
|
||||
{
|
||||
CultureInfo culture = Thread.CurrentThread.CurrentCulture;
|
||||
try { culture = new System.Globalization.CultureInfo(printerCfg.Culture.ToString()); }
|
||||
catch { }
|
||||
|
||||
if (batch.WaterMeters.Count > 0)
|
||||
{
|
||||
new Results.Output.Printers.Enhanced.EnhancedPrintDocument(batch,
|
||||
printerCfg.PageOrientation,
|
||||
printerCfg.TopMargin,
|
||||
printerCfg.BottomMargin,
|
||||
printerCfg.LeftMargin,
|
||||
header,
|
||||
commonItems,
|
||||
testItems,
|
||||
footer).Print();
|
||||
EnhancedPrinterCfg cfg = new EnhancedPrinterCfg {
|
||||
PageOrientation = printerCfg.PageOrientation,
|
||||
TopMargin = printerCfg.TopMargin,
|
||||
BottomMargin = printerCfg.BottomMargin,
|
||||
LeftMargin = printerCfg.LeftMargin,
|
||||
TitFntFml = printerCfg.TitFntFml,
|
||||
HdrFntFml = printerCfg.HdrFntFml,
|
||||
BodyFntFml = printerCfg.BodyFntFml,
|
||||
TitFntSz = printerCfg.TitFntSz,
|
||||
HdrFntSz = printerCfg.HdrFntSz,
|
||||
BodyFntSz = printerCfg.BodyFntSz,
|
||||
TitFntSty = printerCfg.TitFntSty,
|
||||
HdrFntSty = printerCfg.HdrFntSty,
|
||||
BodyFntSty = printerCfg.BodyFntSty,
|
||||
SupressPrinting = printerCfg.SupressPrinting,
|
||||
CultureInfo = culture,
|
||||
Header = printerCfg.Header,
|
||||
CommonItems = printerCfg.CommonItems,
|
||||
TestItems = printerCfg.SelectedItems,
|
||||
Footer = printerCfg.Footer,
|
||||
};
|
||||
|
||||
new Results.Output.Printers.Enhanced.EnhancedPrintDocument(batch, cfg).Print();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -29,5 +29,5 @@ using System.Runtime.InteropServices;
|
||||
// Build Number
|
||||
// Revision
|
||||
//
|
||||
[assembly: AssemblyVersion("2.14.596.1")]
|
||||
[assembly: AssemblyFileVersion("2.14.596.1")]
|
||||
[assembly: AssemblyVersion("2.14.597.1")]
|
||||
[assembly: AssemblyFileVersion("2.14.597.1")]
|
||||
|
||||
Reference in New Issue
Block a user