SourceCode/PROMS/VEPROMS/PrintMSWord/frmPrintMsWord.cs
2010-08-10 10:48:56 +00:00

115 lines
3.8 KiB
C#

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using VEPROMS.CSLA.Library;
using System.IO;
using Volian.Svg.Library;
using Volian.Print.Library;
namespace PrintMSWord
{
public partial class frmPrintMSWord : Form
{
public frmPrintMSWord()
{
InitializeComponent();
}
public string MyStatus
{
get { return tsslStatus.Text; }
set { tsslStatus.Text = value; Application.DoEvents(); }
}
private DocVersionInfo GetDocVersionWithContent()
{
DocVersionInfoList dvList = DocVersionInfoList.Get();
foreach (DocVersionInfo docVersion in dvList)
if (docVersion.Procedures != null)
if (docVersion.Procedures[0].ItemID != 0)
return docVersion;
return null;
}
public ProcedureInfo MyProcedure
{
get { return lbProcs.SelectedValue as ProcedureInfo; }
}
private void lbProcs_DoubleClick(object sender, EventArgs e)
{
CreatePDF();
}
private void CreatePDF()
{
ProcedureInfo myProcedure = MyProcedure;
Volian.Print.Library.Rtf2Pdf.PdfDebug = true;
tbTimings.Text = "";
Cursor saveCursor = this.Cursor;
this.Cursor = Cursors.WaitCursor;
//ProcedureConfig.PrintWatermark pw = MyProcedure.ProcedureConfig.Print_Watermark;
CreatePDF(myProcedure,true);
this.Cursor = saveCursor;
}
private void CreatePDF(ProcedureInfo myProcedure, bool openPdf)
{
PromsPrinter pp = new PromsPrinter(myProcedure, tbRev.Text, tbRevDate.Text, cbWatermark.Text, cbDebugOutput.Checked, @"C:\TEMP\16Bit",openPdf);
pp.StatusChanged += new PromsPrinterStatusEvent(pp_StatusChanged);
_ElapsedTime = new Dictionary<PromsPrinterStatusType, TimeSpan>();
DateTime tStart = DateTime.Now;
string pdfFile = pp.Print(@"C:\TEMP\32Bit");
DateTime tEnd = DateTime.Now;
_ElapsedTime.Add(PromsPrinterStatusType.Total, DateTime.Now - tStart);
MyStatus = pdfFile + " created.";
ShowElapsedTime();
MyStatus = string.Format("{0} created in {1:0.} milliseconds", pdfFile, (TimeSpan.FromTicks(tEnd.Ticks - tStart.Ticks).TotalMilliseconds));
}
private void ShowElapsedTime()
{
foreach (PromsPrinterStatusType type in _ElapsedTime.Keys)
tbTimings.Text += "\r\n" + string.Format("'{0}',{1:0.}", type, _ElapsedTime[type].TotalMilliseconds);
}
private Dictionary<PromsPrinterStatusType, TimeSpan> _ElapsedTime;
private DateTime _LastTime=DateTime.Now;
private DateTime _StartTime = DateTime.Now;
void pp_StatusChanged(object sender, PromsPrintStatusArgs args)
{
if (args.Type == PromsPrinterStatusType.Start) _LastTime = _StartTime = args.When;
MyStatus = args.MyStatus;
TimeSpan delta = TimeSpan.FromTicks(args.When.Ticks - _LastTime.Ticks);
if (_ElapsedTime.ContainsKey(args.Type))
_ElapsedTime[args.Type] += delta;
else
_ElapsedTime.Add(args.Type, delta);
//if (tbTimings.Text != "") tbTimings.Text += "\r\n";
//tbTimings.Text += string.Format("{0},{1},'{2}','{3}'", TimeSpan.FromTicks(args.When.Ticks -_StartTime.Ticks).TotalSeconds, delta.TotalMilliseconds, args.Type, args.MyStatus);
_LastTime = args.When;
}
private void pDFToolStripMenuItem_Click(object sender, EventArgs e)
{
CreatePDF();
}
private void frmPrintMSWord_Load(object sender, EventArgs e)
{
DocVersionInfo dvi = GetDocVersionWithContent();
lbProcs.DataSource = dvi.Procedures;
}
private void pDFsToolStripMenuItem_Click(object sender, EventArgs e)
{
Volian.Print.Library.Rtf2Pdf.PdfDebug = true;
tbTimings.Text = "";
Cursor saveCursor = this.Cursor;
this.Cursor = Cursors.WaitCursor;
//ProcedureConfig.PrintWatermark pw = MyProcedure.ProcedureConfig.Print_Watermark;
ItemInfoList myItems = lbProcs.DataSource as ItemInfoList;
foreach(ItemInfo myItem in myItems)
CreatePDF(myItem.MyProcedure,false);
this.Cursor = saveCursor;
}
}
}