using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using System.IO; using VEPROMS.CSLA.Library; using Volian.Print.Library; //using Volian.Controls.Library; using Volian.Base.Library; namespace VEPROMS { public partial class DlgPrintProcedure : DevComponents.DotNetBar.Office2007Form { private DocVersionConfig _DocVersionConfig; public string RevNum { get { return txbRevNum.Text; } set { txbRevNum.Text = value; } } public string ProcNum { get { return MyProcedure.DisplayNumber; } } public string PDFPath { get { return txbPDFLocation.Text; } set { txbPDFLocation.Text = value; } } public string RevDate { get { return txbRevDate.Text; } set { txbRevDate.Text = value; } } public string ReviewDate { get { return txbReviewDate.Text; } set { txbReviewDate.Text = value; } } public string PDFPathSetting { get { return txbPdfLocationS.Text; } set { txbPdfLocationS.Text = value; } } public DlgPrintProcedure(ProcedureInfo pi) { InitializeComponent(); _DocVersionConfig = (pi.ActiveParent as DocVersionInfo).DocVersionConfig; _MyProcedure = pi; GetDocVersionSettings(); // set to a default PDF location if none was specified in the DocVersions property if (txbPDFLocation.Text == null || txbPDFLocation.Text.Length == 0 || !Directory.Exists(txbPDFLocation.Text)) txbPDFLocation.Text = VlnSettings.TemporaryFolder; // if the default setting is 'SelectBeforePrinting', put up a message box to determine whether the user // wants change bars. If not, 'Change Bar' on the Setting tab is 'OFF' and no Change bar tab. // If yes, the Change bar tab is the selected tab. if (_DocVersionConfig.Print_ChangeBar == PrintChangeBar.SelectBeforePrinting) { DialogResult dr = MessageBox.Show("Do you want change bars?", "Change Bars", MessageBoxButtons.YesNo); if (dr == DialogResult.Yes) { btnChgBarOn.PerformClick(); tabControl1.SelectedTab = tbChangeBars; rbFormatDefault.PerformClick(); rbFormatDefault.Checked = true; // default to 'Format Default' } else { btnChgBarOff.PerformClick(); } } } private void GetDocVersionSettings() { _DocVersionConfig.SaveChangesToDocVersionConfig = false; _DocVersionConfig.ParentLookup = false; // PDF Location PDFPath = _DocVersionConfig.Print_PDFLocation; // Overwrite PDF cbxOverwritePDF2.Checked = _DocVersionConfig.Print_AlwaysOverwritePDF; // Open PDF After Create cbxOpenAfterCreate2.Checked = _DocVersionConfig.Print_AlwaysViewPDFAfterCreate; // Changebars on/off if (_DocVersionConfig.Print_ChangeBar == PrintChangeBar.Without) btnChgBarOff.PerformClick(); else btnChgBarOn.PerformClick(); // Watermark on/off if (_DocVersionConfig.Print_Watermark == PrintWatermark.None) btnWaterMarkOff.PerformClick(); else btnWaterMarkOn.PerformClick(); // Auto Duplexing on/off if ((_MyProcedure.ActiveParent as DocVersionInfo).MyFormat.PlantFormat.FormatData.PrintData.AllowDuplex) { lblAutoDuplexing.Visible = true; btnDuplxOff.Visible = true; btnDuplxOn.Visible = true; if (_DocVersionConfig.Print_DisableDuplex) btnDuplxOff.PerformClick(); else btnDuplxOn.PerformClick(); } else { lblAutoDuplexing.Visible = false; btnDuplxOff.Visible = false; btnDuplxOn.Visible = false; } // default to print Debug info if App.config is set to debug mode cbxDebug.Checked = VlnSettings.DebugMode; } private void DlgPrintProcedure_Load(object sender, EventArgs e) { this.Text = "Create PDF for " + ProcNum; // get list of previous pdf files // if no previous pdf file, then get path from frmVersionProperties // dlgSelectFile.InitialDirectory = pdf path from frmVersionProperties //cbxPDF.Text = string.Format(@"{0}\{1}.pdf", _PDFPath, _ProcNum); // General 2 settings //txbPDFLocation.Text = _PDFPath; txbPDFName.Text = string.Format("{0}.pdf", ProcNum); ProcedureConfig pc = _MyProcedure.MyConfig as ProcedureConfig; if (pc != null) { RevNum = pc.Print_Rev; RevDate = pc.Print_RevDate; //== null || pc.Print_RevDate=="" ? DateTime.Today : Convert.ToDateTime(pc.Print_RevDate); ReviewDate = pc.Print_ReviewDate; // == null ? DateTime.Today : Convert.ToDateTime(pc.Print_ReviewDate); } else { RevNum = "0"; RevDate = DateTime.Today.ToShortDateString(); ReviewDate = null; } cbxWaterMark.DataSource = EnumDetail.Details(); cbxWaterMark.DisplayMember = "Description"; cbxWaterMark.ValueMember = "EValue"; PrintWatermark pw = _DocVersionConfig.Print_Watermark; // MyProcedure.ProcedureConfig.Print_Watermark; cbxWaterMark.Text = pw.ToString(); //ppCmbxChgBarPos.DataSource = EnumDetail.Details(); //ppCmbxChgBarPos.DisplayMember = "Description"; //ppCmbxChgBarPos.ValueMember = "EValue"; //ppCmbxChgBarPos.SelectedIndex = (int)MyProcedure.MyDocVersion.DocVersionConfig.Print_ChangeBarLoc; ppCmbxChgBarTxtType.DataSource = EnumDetail.Details(); ppCmbxChgBarTxtType.DisplayMember = "Description"; ppCmbxChgBarTxtType.ValueMember = "EValue"; ppCmbxChgBarTxtType.SelectedIndex = (int)_DocVersionConfig.Print_ChangeBarText; ppTxbxChangeBarUserMsgOne.Text = _DocVersionConfig.Print_UserCBMess1; ppTxbxChangeBarUserMsgTwo.Text = _DocVersionConfig.Print_UserCBMess2; ppGpbxUserSpecTxt.Enabled = ppCmbxChgBarTxtType.SelectedIndex == (int)PrintChangeBarText.UserDef; bool hasReviewDate = _MyProcedure.ActiveFormat.PlantFormat.HasPageListToken("{REVIEWDATE}"); foreach (SectionInfo mysection in _MyProcedure.Sections) hasReviewDate |= mysection.ActiveFormat.PlantFormat.HasPageListToken("{REVIEWDATE}"); lblReviewDate.Visible = txbReviewDate.Visible = hasReviewDate; } private void btnCancel_Click(object sender, EventArgs e) { this.Close(); } private void btnAvChgBarOn_Click(object sender, EventArgs e) { if (!btnChgBarOn.Checked) { btnChgBarOn.Checked = true; btnChgBarOff.Checked = false; tbChangeBars.Visible = true; // to set which radio button (Format default or Custom) is checked, look at config data switch (_DocVersionConfig.Print_ChangeBar) { case PrintChangeBar.WithUserSpecified: rbCustom.Checked = true; break; case PrintChangeBar.SelectBeforePrinting: case PrintChangeBar.WithDefault: default: rbFormatDefault.Checked = true; break; } } } private void btnAvChgBarOff_Click(object sender, EventArgs e) { if (!btnChgBarOff.Checked) { btnChgBarOff.Checked = true; btnChgBarOn.Checked = false; tbChangeBars.Visible = false; } } private void btnAdvDuplxOn_Click(object sender, EventArgs e) { if (!btnDuplxOn.Checked) { btnDuplxOn.Checked = true; btnDuplxOff.Checked = false; } } private void btnAdvDuplxOff_Click(object sender, EventArgs e) { if (!btnDuplxOff.Checked) { btnDuplxOff.Checked = true; ; btnDuplxOn.Checked = false; } } private void btnAdvWaterMarkOn_Click(object sender, EventArgs e) { if (!btnWaterMarkOn.Checked) { btnWaterMarkOn.Checked = true; btnWaterMarkOff.Checked = false; cbxWaterMark.Visible = true; } } private void btnAdvWaterMarkOff_Click(object sender, EventArgs e) { if (!btnWaterMarkOff.Checked) { btnWaterMarkOff.Checked = true; btnWaterMarkOn.Checked = false; cbxWaterMark.Visible = false; } } private void txbPDFLocation_Leave(object sender, EventArgs e) { if (!Directory.Exists(PDFPath)) { string msg = string.Format("'{0}' does not exist. \n\nCreate it?", PDFPath); DialogResult dr= MessageBox.Show(msg, "Folder Not Found", MessageBoxButtons.YesNo, MessageBoxIcon.Question); if (dr == DialogResult.Yes) { try { Directory.CreateDirectory(PDFPath); } catch (Exception ex) { MessageBox.Show(ex.Message, "Error trying to create folder", MessageBoxButtons.OK, MessageBoxIcon.Error); PDFPath = _DocVersionConfig.Print_PDFLocation; } } else { PDFPath = _DocVersionConfig.Print_PDFLocation; } } } private void DlgPrintProcedure_FormClosed(object sender, FormClosedEventArgs e) { _DocVersionConfig.SaveChangesToDocVersionConfig = true; _DocVersionConfig.ParentLookup = true; } private ProcedureInfo _MyProcedure; public ProcedureInfo MyProcedure { get { return _MyProcedure; } set { _MyProcedure = value; } } private void CreatePDF() { // If file exists, determine if overwrite checkbox allows overwrite, if not prompt. Volian.Print.Library.Rtf2Pdf.PdfDebug = true; PrintWatermark pw = (PrintWatermark)cbxWaterMark.SelectedValue; // Determine change bar settings. First get from config & then see if override from dialog. // Also check that format allows override. ChangeBarDefinition cbd = DetermineChangeBarSettings(); frmPDFStatusForm frmStatus = new frmPDFStatusForm(MyProcedure, RevNum, RevDate, pw.ToString(), cbxDebug.Checked, VlnSettings.OldPDFFolder, cbxOpenAfterCreate2.Checked, cbxOverwritePDF2.Checked,PDFPath, cbd); frmStatus.ShowDialog(); this.Close(); } // Determine if any dialog selections for change bars have overridden the data // supplied in the DocVconfig data or format file. Settings are location and text. private ChangeBarDefinition DetermineChangeBarSettings() { ChangeBarDefinition cbd = new ChangeBarDefinition(); // if the dialog has 'without change bar' selected, then just set without and return if (btnChgBarOff.Checked) { cbd.MyChangeBarType = PrintChangeBar.Without; return cbd; } // Get settings from dialog because these are used to set the initial dialog values and // any changes from user overrides the initial settings. ChangeBarData changeBarData = MyProcedure.ActiveFormat.PlantFormat.FormatData.ProcData.ChangeBarData; if (rbFormatDefault.Checked || _DocVersionConfig == null || _DocVersionConfig.Print_ChangeBar == PrintChangeBar.WithDefault) { cbd.MyChangeBarType = PrintChangeBar.WithDefault; cbd.MyChangeBarText = changeBarData.ChangeBarMessage == "ChgID" ? PrintChangeBarText.ChgID : changeBarData.ChangeBarMessage == "DateAndChgID" ? PrintChangeBarText.DateChgID : changeBarData.ChangeBarMessage == "None" ? PrintChangeBarText.None : changeBarData.ChangeBarMessage == "RevNum" ? PrintChangeBarText.RevNum : PrintChangeBarText.UserDef; } else if (rbCustom.Checked || _DocVersionConfig.Print_ChangeBar == PrintChangeBar.WithUserSpecified) { cbd.MyChangeBarLoc = (PrintChangeBarLoc)ppCmbxChgBarPos.SelectedIndex; cbd.MyChangeBarText = (PrintChangeBarText)ppCmbxChgBarTxtType.SelectedIndex; } else { cbd.MyChangeBarLoc = _DocVersionConfig.Print_ChangeBarLoc; cbd.MyChangeBarText = _DocVersionConfig.Print_ChangeBarText; } // now figure out the location. if (cbd.MyChangeBarType != PrintChangeBar.Without) { // if the format has the absolutefixedchangecolumn format flag, then always use the fixedchangecolumn from the // format, otherwise, use the default column based on the selected location, stored in the base format. cbd.MyChangeBarColumn = (changeBarData.AbsoluteFixedChangeColumn) ? (int)changeBarData.FixedChangeColumn : System.Convert.ToInt32(changeBarData.DefaultCBLoc.Split(" ".ToCharArray())[System.Convert.ToInt32(cbd.MyChangeBarLoc)]); if (cbd.MyChangeBarText == PrintChangeBarText.UserDef) cbd.MyChangeBarMessage = _DocVersionConfig.Print_UserCBMess1 + @"\n" + _DocVersionConfig.Print_UserCBMess2; } return cbd; } private void btnCreatePDF_Click(object sender, EventArgs e) { CreatePDF(); } private bool _Initializing = false; private void tbSettings_Click(object sender, EventArgs e) { // Fill in the settings from the config. This tab is used // to update the settings for PdfLocation, RevNum, RevDate and ReviewDate _Initializing = true; txbPdfLocationS.Text = txbPDFLocation.Text; _Initializing = false; } private void btnPdfLocation_Click(object sender, EventArgs e) { DlgBrowseFolder.SelectedPath = PDFPathSetting; DialogResult drslt = DlgBrowseFolder.ShowDialog(); if (drslt == DialogResult.OK) { //cbxPDFloc.Text = DlgBrowseFolder.SelectedPath; txbPdfLocationS.Text = DlgBrowseFolder.SelectedPath; txbPDFLocation.Text = txbPdfLocationS.Text; //lblCurPDFLoc.Text = cbxPDFloc.Text; //UpdateDropDown2(); } } private void rbFormatDefault_Click(object sender, EventArgs e) { SetCustomControls(false); // Make Custom controls invisible ppGpbxUserSpecCB.Visible = false; } private void SetCustomControls(bool enabled) { ppCmbxChgBarPos.Enabled = enabled; ppCmbxChgBarTxtType.Enabled = enabled; ppTxbxChangeBarUserMsgOne.Enabled = enabled; ppTxbxChangeBarUserMsgTwo.Enabled = enabled; } private void rbCustom_Click(object sender, EventArgs e) { SetCustomControls(true); // Make Custom controls visible ppGpbxUserSpecCB.Visible = true; } private void rbFormatDefault_CheckedChanged(object sender, EventArgs e) { SetCustomControls(false); // Make Custom controls invisible ppGpbxUserSpecCB.Visible = false; } private void ppCmbxChgBarTxtType_SelectedIndexChanged(object sender, EventArgs e) { if (_Initializing) return; ppGpbxUserSpecTxt.Enabled = ppCmbxChgBarTxtType.SelectedIndex == (int)PrintChangeBarText.UserDef; } private void txbRevDate_Enter(object sender, EventArgs e) { txbDate = txbRevDate; grpDateSelector.Text = "Select Revision Date"; grpDateSelector.Visible = calDateSelector.Visible = true; } private void txbRevDate_Leave(object sender, EventArgs e) { if (_Initializing) return; txbDate = null; grpDateSelector.Visible = calDateSelector.Visible = false; // save the RevDate to the procedure's config. ProcedureConfig pc = MyProcedure.MyConfig as ProcedureConfig; if (pc == null) return; pc.Print_RevDate = txbRevDate.Text; using (Item itm = Item.Get(MyProcedure.ItemID)) { itm.MyContent.Config = MyProcedure.MyConfig.ToString(); itm.Save(); } } private void txbReviewDate_Leave(object sender, EventArgs e) { if (_Initializing) return; txbDate = null; grpDateSelector.Visible = calDateSelector.Visible = false; // save the ReviewDate to the procedure's config. ProcedureConfig pc = MyProcedure.MyConfig as ProcedureConfig; if (pc == null) return; pc.Print_ReviewDate = txbReviewDate.Text; using (Item itm = Item.Get(MyProcedure.ItemID)) { itm.MyContent.Config = MyProcedure.MyConfig.ToString(); itm.Save(); // need to reset config to !dirty? } } private void txbReviewDate_Enter(object sender, EventArgs e) { txbDate = txbReviewDate; grpDateSelector.Text = "Select Review Date"; grpDateSelector.Visible = calDateSelector.Visible = true; } private TextBox txbDate = null; private void calDateSelector_DateSelected(object sender, DateRangeEventArgs e) { if (txbDate != null) txbDate.Text = e.Start.ToShortDateString(); } private void txbRevNum_Leave(object sender, EventArgs e) { if (_Initializing) return; // save the RevNum to the procedure's config. ProcedureConfig pc = MyProcedure.MyConfig as ProcedureConfig; if (pc == null) return; pc.Print_Rev = txbRevNum.Text; using (Item itm = Item.Get(MyProcedure.ItemID)) { itm.MyContent.Config = MyProcedure.MyConfig.ToString(); itm.Save(); } } } }