diff --git a/PROMS/VEPROMS User Interface/DlgPrintProcedure.cs b/PROMS/VEPROMS User Interface/DlgPrintProcedure.cs index 52c6bc5b..fb46f0f8 100644 --- a/PROMS/VEPROMS User Interface/DlgPrintProcedure.cs +++ b/PROMS/VEPROMS User Interface/DlgPrintProcedure.cs @@ -16,105 +16,98 @@ namespace VEPROMS { public partial class DlgPrintProcedure : DevComponents.DotNetBar.Office2007Form { - #region Fields - - private string _Prefix = string.Empty; // RHM20150506 Multiline ItemID TextBox - private SessionInfo _MySessionInfo; - private bool _Automatic; - private Timer _MyTimer; - - private bool _AllProcedures; - private int _SelectedSlave = 0; - private ProcedureInfo _MyProcedure; - private DocVersionInfo _DocVersionInfo = null; - private DocVersionConfig _DocVersionConfig; - private ROFSTLookup _rofstLookup = null; - - private string _MultiunitPdfLocation = string.Empty; - private MergedPdf _MergedPfd = null; - private string _MergedPdfPath = null; - - private bool _Initializing = false; - - // C2018-033 Used to turn off using the date/time PDF file prefix and suffix when doing batch file automatic baseline print testing (frmVEPROMS.cs RunAutomatic()) - // This is needed so the automatic baselines can compare results from different runs of PROMS - private bool _AllowDateTimePrefixSuffix = true; - - private DateTime _PrefixSuffixDTS = DateTime.Now; // C2018-033 date/time used for the date/time PDF file prefix and suffix - private bool _DateTimePrefixSuffixPrintingAllProcedures = true; // C2018-033 to control adding the Date/Time Prefix/Suffix to PFD name when printing All procedures - private bool _IncludeWordSecTextInMetafile = true; // C2018-023 so that we can turn off including Word attachment text in metafile - - private bool _CreateButtonClicked = false; // B2020-062 control the toggle of date/time prefix/suffix on pdf file name - - private string _UnitNumber; - private int _UnitIndex; - - private TextBox txbDate = null; - string _NewRevForAllProcs = null; - - #endregion - - #region Properties - public bool SaveLinks { - get { return swtbtnPDFLinks.Value; } + get + { + return swtbtnPDFLinks.Value; + } } - public int RemoveTrailingHardReturnsAndManualPageBreaks { - get + get { // C2021-010: Remove trailing returns/spaces & manual page breaks & allow save. - // return values: 0=None; 1=Trailing; 2=ManualPgBrk; 3=Both. - // The designer file has the additional controls + // return values: 0=None; 1=Trailing; 2=ManualPgBrk; 3=Both. + // The designer file has the additional controls if (!cbxRemoveManualPgBrk.Checked && !cbxRemoveTrailing.Checked) return 0; if (!cbxRemoveManualPgBrk.Checked && cbxRemoveTrailing.Checked) return 1; if (cbxRemoveManualPgBrk.Checked && !cbxRemoveTrailing.Checked) return 2; - return 3; + return 3; } } - + private string _Prefix = ""; // RHM20150506 Multiline ItemID TextBox public string Prefix { get { return _Prefix; } set { _Prefix = value; } } - public bool OpenAfterCreate // RHM20150506 Multiline ItemID TextBox { get { return cbxOpenAfterCreate2.Checked; } set { cbxOpenAfterCreate2.Checked = value; } } - + private SessionInfo _MySessionInfo; public SessionInfo MySessionInfo { get { return _MySessionInfo; } set { _MySessionInfo = value; } } - + private bool _Automatic; public bool Automatic { get { return _Automatic; } set { _Automatic = value; } } + // C2018-033 Used to turn off using the date/time PDF file prefix and suffix when doing batch file autmatic baseline print testing (frmVEPROMS.cs RunAutomatic()) + // This is needed so the the automatic baselines can compare results from different runs of PROMS + private bool _AllowDateTimePrefixSuffix = true; public bool AllowDateTimePrefixSuffix { get { return _AllowDateTimePrefixSuffix; } - set - { + set + { _AllowDateTimePrefixSuffix = value; swtbtnPDFdtPrefixSuffix.Value = swtbtnPDFdtPrefixSuffix.Enabled = _AllowDateTimePrefixSuffix; } } - + private DateTime _PrefixSuffixDTS = DateTime.Now; // C2018-033 date/time used for the date/time PDF file prefix and suffix + private bool _DateTimePrefixSuffixPrintingAllProcedures = true; // C2018-033 to control adding the Date/Time Prefix/Suffix to PFD name when printing All procedures + private bool _IncludeWordSecTextInMetafile = true; // C2018-023 so that we can turn off including Word attachment text in metafile + private void RunAutomatic() + { + cbxDebugPagination.Checked = true; + cbxDebugText.Checked = true; + cbxMetaFile.Checked = true; // C2018-004 create meta file for baseline compares + _IncludeWordSecTextInMetafile = true; + Application.DoEvents(); + string[] parameters = System.Environment.CommandLine.Split(" ".ToCharArray()); + bool ranAuto = false; + foreach (string parameter in parameters) + { + if (parameter.ToUpper() == "/NT") + cbxDebugText.Checked = false; + else if (parameter.ToUpper() == "/NP") + cbxDebugPagination.Checked = false; + else if (parameter.ToUpper() == "/NC") + cbxDebug.Checked = false; + else if (parameter.ToUpper() == "/NM") + cbxMetaFile.Checked = false; // C2018-004 turn off create meta file for baseline compares + else if (parameter.ToUpper() == "/NW") + _IncludeWordSecTextInMetafile = false; // C2018-023 turn off putting Word attachment text in the meta file for baseline compares + } + CreatePDFs(); + this.Close(); + } + private DocVersionInfo _DocVersionInfo = null; + private bool _AllProcedures; + private DocVersionConfig _DocVersionConfig; public string RevNum { get { return txbRevNum.Text; } set { txbRevNum.Text = value; } } - public string RevNumAndDate { get @@ -137,371 +130,275 @@ namespace VEPROMS return RevNum + "/" + RevDate; } } - public string ProcNum { get { return MyProcedure.DisplayNumber; } } - public string PDFPath { - get - {// B2018-069 Revert to Temporary for Baseline testing + get {// B2018-069 Revert to Temporary for Baseline testing if (PromsPrinter.BaselineTesting) return VlnSettings.TemporaryFolder; - return txbPDFLocation.Text; + 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 bool CreateContinuousActionSummary { get { return cbxGenerateConActSum.Checked; } set { cbxGenerateConActSum.Checked = value; } } - - public string UnitNumber - { - get { return _UnitNumber; } - set { _UnitNumber = value; } - } - - public int UnitIndex - { - get { return _UnitIndex; } - set { _UnitIndex = value; } - } - - public ProcedureInfo MyProcedure - { - get { return _MyProcedure; } - set - { - _MyProcedure = value; - - // if procedure has supplemental information, the automatically check the add blank pages for duplex printing - if (_MyProcedure.ProcHasSupInfoData) - { - swtbtnBlankPgsForDuplex.Value = true; - tbBlankPage.Enabled = true; - } - - SetupPrefixSuffixSwitch(); // C2018-033 Enable the switch to control whether to add Prefix and/or Suffix to PDF file name - } - } - - public int SelectedSlave - { - get { return _SelectedSlave; } - set - { - if (_SelectedSlave != value) - { - if (MyProcedure != null && MyProcedure. MyDocVersion != null && MyProcedure.MyDocVersion.DocVersionConfig != null) - { - MyProcedure.MyDocVersion.DocVersionConfig.SelectedSlave = (value > 0) ? value : 0; - } - - _rofstLookup = null; - } - - lblMultiunitPdfLocation.Visible = (value > -1); - cbxMultiunitPdfLocation.Visible = (value > -1); - cbxMultiunitPdfLocation.SelectedIndex = 1; - - _SelectedSlave = value; - } - } - - public ROFSTLookup MyROFSTLookup - { - get - { - if (_rofstLookup == null) - { - var dvi = MyProcedure.MyDocVersion; - - // RofstLookup requires (RofstID, DocVersionInfo, selectedSlave) - if (dvi != null && dvi.DocVersionAssociations != null && dvi.DocVersionAssociations.Count > 0) - { - int rofstID = dvi.DocVersionAssociations[0].ROFstID; - string slaveOverride = (_SelectedSlave < 0) ? "0" : _SelectedSlave.ToString(); - - _rofstLookup = new ROFSTLookup(rofstID, dvi, slaveOverride); - } - } - - return _rofstLookup; - } - } - - #endregion - - #region Constructors - - public DlgPrintProcedure(DocVersionInfo dvi) - { - InitializeComponent(); - - _Automatic = false; - _AllProcedures = true; - - MyProcedure = dvi.Procedures[0].MyProcedure; - - var dvc = dvi.DocVersionConfig; - - _DocVersionInfo = dvi; - _DocVersionConfig = dvc; - SelectedSlave = dvc.SelectedSlave; - - swtbtnBlankPgsForDuplex.Value = dvc.Print_AddBlankPagesWhenUsingDuplexFoldouts; - tbBlankPage.Text = dvc.Print_DuplexBlankPageText; - tbBlankPage.Enabled = swtbtnBlankPgsForDuplex.Value; - - if (_MyProcedure != null && _MyProcedure.ProcHasSupInfoData) - { - swtbtnBlankPgsForDuplex.Enabled = false; - tbBlankPage.Enabled = true; - } - - btnCreatePDF.Text = "Create PDFs"; - - HandleDocVersionSettings(); - PrepForAllOrOne(false); - - // don't open all PDFs if doing All Procedures - // C2018-033 added the Prefix / Suffix switch to the expand Additional Settings check - expPrnSetting.Expanded = swtbtnBlankPgsForDuplex.Value || swtbtnChgBar.Value || swtbtnGeneratePlacekeeper.Value || swtbtnPDFLinks.Value || swtbtnPROMSVersion.Value || swtbtnWaterMark.Value || swtbtnPDFdtPrefixSuffix.Value; - } - + private bool _CreateButtonClicked = false; // B2020-062 control the toggle of date/time prefix/suffix on pdf file name public DlgPrintProcedure(DocVersionInfo dvi, bool automatic) { - InitializeComponent(); - _Automatic = automatic; + InitializeComponent(); _AllProcedures = true; - - MyProcedure = dvi.Procedures[0].MyProcedure; - - var dvc = dvi.DocVersionConfig; - + _DocVersionConfig = dvi.DocVersionConfig; _DocVersionInfo = dvi; - _DocVersionConfig = dvc; - SelectedSlave = dvc.SelectedSlave; + MyProcedure = dvi.Procedures[0].MyProcedure; // C2019-004: Allow user to define duplex lank page text at the docversion level (this is used in baselines) // 2nd line was added to other constructors (1st line already existed) - swtbtnBlankPgsForDuplex.Value = dvc.Print_AddBlankPagesWhenUsingDuplexFoldouts; - tbBlankPage.Text = dvc.Print_DuplexBlankPageText; - tbBlankPage.Enabled = swtbtnBlankPgsForDuplex.Value; - + swtbtnBlankPgsForDuplex.Value = dvi.DocVersionConfig.Print_AddBlankPagesWhenUsingDuplexFoldouts; + tbBlankPage.Text = dvi.DocVersionConfig.Print_DuplexBlankPageText; // B2017-188: Don't allow user to uncheck the checkbox for printing blank pages if procedure has supplemental information // This change was made to each of the DlgPrintProcedure methods. if (_MyProcedure != null && _MyProcedure.ProcHasSupInfoData) { swtbtnBlankPgsForDuplex.Enabled = false; - tbBlankPage.Enabled = true; // C2019-004: Allow user to define duplex blank page text (similar changes throughout file are not commented) + tbBlankPage.Enabled = true; // C2019-004: Allow user to define duplex blank page text (similar changes throughout file are not commented) } - btnCreatePDF.Text = "Create PDFs"; - HandleDocVersionSettings(); PrepForAllOrOne(false); - // don't open all PDFs if doing All Procedures //cbxOpenAfterCreate2.Checked = dvi.DocVersionConfig.Print_AlwaysViewPDFAfterCreate; // C2018-033 added the Prefix / Suffix switch to the expand Additional Settings check expPrnSetting.Expanded = swtbtnBlankPgsForDuplex.Value || swtbtnChgBar.Value || swtbtnGeneratePlacekeeper.Value || swtbtnPDFLinks.Value || swtbtnPROMSVersion.Value || swtbtnWaterMark.Value || swtbtnPDFdtPrefixSuffix.Value; } + public DlgPrintProcedure(DocVersionInfo dvi) + { + _Automatic = false; + InitializeComponent(); + _AllProcedures = true; + _DocVersionConfig = dvi.DocVersionConfig; + _DocVersionInfo = dvi; + swtbtnBlankPgsForDuplex.Value = dvi.DocVersionConfig.Print_AddBlankPagesWhenUsingDuplexFoldouts; + tbBlankPage.Text = dvi.DocVersionConfig.Print_DuplexBlankPageText; + tbBlankPage.Enabled = swtbtnBlankPgsForDuplex.Value; + MyProcedure = dvi.Procedures[0].MyProcedure; + if (_MyProcedure != null && _MyProcedure.ProcHasSupInfoData) + { + swtbtnBlankPgsForDuplex.Enabled = false; + tbBlankPage.Enabled = true; + } + btnCreatePDF.Text = "Create PDFs"; + HandleDocVersionSettings(); + PrepForAllOrOne(false); + // don't open all PDFs if doing All Procedures + // C2018-033 added the Prefix / Suffix switch to the expand Additional Settings check + expPrnSetting.Expanded = swtbtnBlankPgsForDuplex.Value || swtbtnChgBar.Value || swtbtnGeneratePlacekeeper.Value || swtbtnPDFLinks.Value || swtbtnPROMSVersion.Value || swtbtnWaterMark.Value || swtbtnPDFdtPrefixSuffix.Value; + } + private void PrepForAllOrOne(bool oneProcedure) + { + txbPDFName.Visible = lblPDFFileName.Visible = oneProcedure; + txbReviewDate.Visible = lblReviewDate.Visible = oneProcedure; + txbRevDate.Visible = lblRevDate.Visible = oneProcedure; + cbxOpenAfterCreate2.Visible = oneProcedure; + cbxOpenAfterCreate2.Checked = false; + cbxOverwritePDF2.Visible = oneProcedure; + cbxOverwritePDF2.Checked = true; + gpnlDebug.Visible = Volian.Base.Library.VlnSettings.DebugMode; + swtbtnGeneratePlacekeeper.Value = false; + cbxGenerateConActSum.Checked = false; + swtbtnGeneratePlacekeeper.Visible = lblGeneratePlacekeeper.Visible = oneProcedure && + ((MyProcedure.ActiveFormat.PlantFormat.FormatData.PurchaseOptions & E_PurchaseOptions.AutoPlacekeeper) == E_PurchaseOptions.AutoPlacekeeper); + // C2021-062 make visable the check box to assign rev number for all procedures being printed + // also make visable the Rev Num entry field. + txbRevNum.Enabled = oneProcedure; + cbxAssignRevToAllMergedPrcs.Visible = btnMergePDFs.Visible = !oneProcedure; + // C2021-063 make the Generate Alarm Point List text checkbox visable in the format flag is set. + cbxAlmPtTxt.Visible = !oneProcedure && MyProcedure.ActiveFormat.PlantFormat.FormatData.PrintData.ChkBoxToGeneratePointListText; + } + private string _UnitNumber; + public string UnitNumber + { + get { return _UnitNumber; } + set { _UnitNumber = value; } + } + private int _UnitIndex; + public int UnitIndex + { + get { return _UnitIndex; } + set { _UnitIndex = value; } + } + // C2018-012 - Code Cleanup - redesigned the Print Dialog to include a sliding panel and remplaced check boxes with ON/OFF switches public DlgPrintProcedure(ProcedureInfo pi) { - // C2018-012 - Code Cleanup - redesigned the Print Dialog to include a sliding panel and replaced check boxes with ON/OFF switches InitializeComponent(); - - _Automatic = false; _AllProcedures = false; - - MyProcedure = pi; - - var dvi = pi.MyDocVersion; - var dvc = dvi.DocVersionConfig; - - _DocVersionInfo = dvi; - _DocVersionConfig = dvc; - SelectedSlave = dvc.SelectedSlave; - - swtbtnBlankPgsForDuplex.Value = dvc.Print_AddBlankPagesWhenUsingDuplexFoldouts; - tbBlankPage.Text = dvc.Print_DuplexBlankPageText; + _DocVersionConfig = pi.MyDocVersion.DocVersionConfig; + swtbtnBlankPgsForDuplex.Value = pi.MyDocVersion.DocVersionConfig.Print_AddBlankPagesWhenUsingDuplexFoldouts; + tbBlankPage.Text = pi.MyDocVersion.DocVersionConfig.Print_DuplexBlankPageText; tbBlankPage.Enabled = swtbtnBlankPgsForDuplex.Value; - + MyProcedure = pi; if (_MyProcedure != null && _MyProcedure.ProcHasSupInfoData) { swtbtnBlankPgsForDuplex.Enabled = false; tbBlankPage.Enabled = true; } - btnCreatePDF.Text = "Create PDF"; - HandleDocVersionSettings(); PrepForAllOrOne(true); - - cbxOpenAfterCreate2.Checked = dvc.Print_AlwaysViewPDFAfterCreate; - + cbxOpenAfterCreate2.Checked = pi.MyDocVersion.DocVersionConfig.Print_AlwaysViewPDFAfterCreate; // C2018-033 added the Prefix / Suffix switch to the expand Additional Settings check expPrnSetting.Expanded = swtbtnBlankPgsForDuplex.Value || swtbtnChgBar.Value || swtbtnGeneratePlacekeeper.Value || swtbtnPDFLinks.Value || swtbtnPROMSVersion.Value || swtbtnWaterMark.Value || swtbtnPDFdtPrefixSuffix.Value; } - public DlgPrintProcedure(ProcedureInfo pi, bool automatic) // RHM20150506 Multiline ItemID TextBox - { + { InitializeComponent(); - - _Automatic = automatic; + Automatic = automatic; _AllProcedures = false; - - MyProcedure = pi; - - var dvi = pi.MyDocVersion; - var dvc = dvi.DocVersionConfig; - - _DocVersionInfo = dvi; - _DocVersionConfig = dvc; - SelectedSlave = dvc.SelectedSlave; - - swtbtnBlankPgsForDuplex.Value = dvc.Print_AddBlankPagesWhenUsingDuplexFoldouts; - tbBlankPage.Text = dvc.Print_DuplexBlankPageText; + _DocVersionConfig = pi.MyDocVersion.DocVersionConfig; + swtbtnBlankPgsForDuplex.Value = pi.MyDocVersion.DocVersionConfig.Print_AddBlankPagesWhenUsingDuplexFoldouts; + tbBlankPage.Text = pi.MyDocVersion.DocVersionConfig.Print_DuplexBlankPageText; tbBlankPage.Enabled = swtbtnBlankPgsForDuplex.Value; - + MyProcedure = pi; if (_MyProcedure != null && _MyProcedure.ProcHasSupInfoData) { swtbtnBlankPgsForDuplex.Enabled = false; tbBlankPage.Enabled = true; } - btnCreatePDF.Text = "Create PDF"; - HandleDocVersionSettings(); PrepForAllOrOne(true); - - cbxOpenAfterCreate2.Checked = dvc.Print_AlwaysViewPDFAfterCreate; - + cbxOpenAfterCreate2.Checked = pi.MyDocVersion.DocVersionConfig.Print_AlwaysViewPDFAfterCreate; // C2018-033 added the Prefix / Suffix switch to the expand Additional Settings check expPrnSetting.Expanded = swtbtnBlankPgsForDuplex.Value || swtbtnChgBar.Value || swtbtnGeneratePlacekeeper.Value || swtbtnPDFLinks.Value || swtbtnPROMSVersion.Value || swtbtnWaterMark.Value || swtbtnPDFdtPrefixSuffix.Value; } - - #endregion - - #region Public Methods - - public void CreatePDF() // RHM20150506 Multiline ItemID TextBox + /// + /// RHM 20120925 Added so that the dialog would center over the PROMS window + /// + /// + protected override void OnActivated(EventArgs e) + { + base.OnActivated(e); + if (Owner != null) + Location = new Point(Owner.Left + Owner.Width / 2 - Width / 2, Owner.Top + Owner.Height/2 - Height/2); + } + private void HandleDocVersionSettings() { - if (VlnSettings.GetCommandFlag("PROFILE")) ProfileTimer.TurnOnTracking("Profile.txt"); - VEPROMS.CSLA.Library.Database.TrackDBUsage = VlnSettings.GetCommandFlag("DBTrack"); - ProfileTimer.Reset(); - int profileDepth = ProfileTimer.Push(">>>> CreatePdf"); - string message = string.Empty; + GetDocVersionSettings(); - if (!MySessionInfo.CanCheckOutItem(MyProcedure.ItemID, CheckOutType.Procedure, ref message)) + // 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; + SetCompareVisibility(); + // if the default setting is 'SelectBeforePrinting', expand the Additional Print Settings panel + if (_DocVersionConfig.Print_ChangeBar == PrintChangeBar.SelectBeforePrinting) { - if (MessageBox.Show(this, message + Environment.NewLine + Environment.NewLine + "Do you want to continue to print the procedure?", "Procedure Is Checked Out", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.No) - return; - } - - // B2021-127: BNPPalr - Auto set of serial #, skip Front Matter as per PAL 11/1/21 (set to 1 not 0) - // Only do if set has applicability, printing an individual procedure, need to determine - // applicability count. - if (MyProcedure.MyDocVersion.MultiUnitCount > 1) - { - VlnSvgPageHelper.CountInApplProcs = 1; - - foreach (ProcedureInfo pi in MyProcedure.MyDocVersion.Procedures) - { - if (pi.ItemID == MyProcedure.ItemID) break; - - bool includeProc = pi.ApplInclude(SelectedSlave); - if (!includeProc) VlnSvgPageHelper.CountInApplProcs++; + swtbtnChgBar.Value = false; + cbxOvrrideDefChgBars.Checked = false; + expPrnSetting.Expanded = true; } - } - - CreateDebugFiles(); - - // If file exists, determine if overwrite checkbox allows overwrite, if not prompt. - Volian.Print.Library.Rtf2Pdf.PdfDebug = cbxDebug.Checked; - - // B2019-044 don't print the watermark if the watermark switch on the print dialog is turned off - cbxWaterMark.Visible = true; - string waterMarkText = (swtbtnWaterMark.Value) ? cbxWaterMark.Text : "None"; // B2018-124 use text of watermark form drop down list instead of enum value - string watermarkColor = "Blue"; // this is the default watermark color - - frmPDFStatusForm.SetUnitWatermark(MyProcedure, ref waterMarkText, ref watermarkColor); //C2022-004 Unit Designator Watermark - - ProcedureConfig procConfig = MyProcedure.MyConfig as ProcedureConfig; - string waterMarkTextOverride = string.Empty; - - if (procConfig != null) waterMarkTextOverride = procConfig.GetValue("PSI", "WATERMARKOVERRIDE"); // C2021-019: override watermark text - if (swtbtnWaterMark.Value && waterMarkTextOverride != null && waterMarkTextOverride != "") waterMarkText = waterMarkTextOverride; - - // Determine change bar settings. First get from config & then see if override from dialog. Also check that format allows override. - ChangeBarDefinition cbd = DetermineChangeBarSettings(); - int profileDepth2 = ProfileTimer.Push(">>>> CreatePdf.GetItemAndChildren"); - - // RHM 20120925 Overlay the bottom of the dialog so that cancel button is covered. - ProfileTimer.Pop(profileDepth2); - - MyProcedure.MyDocVersion.DocVersionConfig.SelectedSlave = this.SelectedSlave; - - // B2016-249 Output Procedure to folder associated with Parent Child - // B2018-124 use text of watermark form drop down list instead of enum value - using (frmPDFStatusForm frmStatus = new frmPDFStatusForm(MyProcedure, RevNumAndDate, waterMarkText, cbxDebug.Checked, cbxOrPgBrk.Checked, - cbxOpenAfterCreate2.Checked, cbxOverwritePDF2.Checked, GetMultiunitPDFPath(), cbd, txbPDFName.Text, new Point(Left, Bottom - 50), - swtbtnBlankPgsForDuplex.Value, _AllProcedures || Automatic, Prefix, SaveLinks, RemoveTrailingHardReturnsAndManualPageBreaks, swtbtnPROMSVersion.Value, false, tbBlankPage.Text, _MergedPfd, watermarkColor))//; //C2018-009 print PROMS version - { - frmStatus.MakePlaceKeeper = swtbtnGeneratePlacekeeper.Value; - frmStatus.MakeContinuousActionSummary = cbxGenerateConActSum.Checked; - - if (Automatic && cbxGenerateConActSum.Checked) - frmStatus.OnlyShowContinuousActionSummary = true; - - int profileDepth3 = ProfileTimer.Push(">>>> frmStatus"); - frmStatus.ShowDialog(); - - ProfileTimer.Pop(profileDepth3); - } - - MyProcedure.MyDocVersion.DocVersionConfig.SelectedSlave = 0; - - this.Close(); - ShowDebugFiles(); - - ProfileTimer.Pop(profileDepth); - ProfileTimer.ShowTimerTable(); - - if (VlnSettings.GetCommandFlag("DBTrack")) - { - VEPROMS.CSLA.Library.Database.TrackDBUsage = false; - VEPROMS.CSLA.Library.Database.ShowDBTracking("DBTracking.txt"); - } } + 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) + swtbtnChgBar.Value = false; + else + swtbtnChgBar.Value = true; + // Watermark on/off + if (_DocVersionConfig.Print_Watermark == PrintWatermark.None) + swtbtnWaterMark.Value = false; + else + swtbtnWaterMark.Value = true; + // Auto Duplexing on/off - Auto duplex was used only by Point Beach formats These buttons were removed from the dialog + // There was not print coding to support this format flag + + //if ((_MyProcedure.ActiveParent as DocVersionInfo).ActiveFormat.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; + //} + SetCompareVisibility(); + + // default to using OriginalPageBreaks (16bit page breaks) if App.config is set + // to true: + //cbxOrPgBrk.Visible = VlnSettings.OriginalPageBreak && VlnSettings.DebugMode; + cbxOrPgBrk.Visible = false; //per Harry + cbxOrPgBrk.Checked = false; + } + + private void SetCompareVisibility() + { + // default to print Debug info if App.config is set to debug mode + // This checkbox is now labeled as "Compare PDF" + // If the PDF location has a Compare folder or we are in Debug Mode + // then make the checkbox visible + string cmpfldr = txbPDFLocation.Text; + if (!cmpfldr.EndsWith("\\")) cmpfldr += "\\"; + cmpfldr += "Compare"; + cbxDebug.Visible = Directory.Exists(cmpfldr) || VlnSettings.DebugMode; + cbxDebug.Checked = VlnSettings.DebugMode; + } + + private void DlgPrintProcedure_Load(object sender, EventArgs e) + { + SetupForProcedure(); + _MyTimer = new Timer(); + _MyTimer.Tick += new EventHandler(_MyTimer_Tick); + _MyTimer.Interval = 100; + _MyTimer.Enabled = true; + btnCreatePDF.Select(); + } + + void _MyTimer_Tick(object sender, EventArgs e) + { + _MyTimer.Enabled = false; + BringToFront(); + if (Automatic) RunAutomatic(); + } + + private Timer _MyTimer; public void SetupForProcedure() // RHM20150506 Multiline ItemID TextBox { - if (_DocVersionInfo == null) - this.Text = "Create PDF for " + ProcNum; - + if(_DocVersionInfo == null)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 @@ -509,24 +406,21 @@ namespace VEPROMS // General 2 settings //txbPDFLocation.Text = _PDFPath; BuildPDFFileName(); - ProcedureConfig pc = _MyProcedure.MyConfig as ProcedureConfig; - if (SelectedSlave > 0) pc.SelectedSlave = SelectedSlave; - + if(SelectedSlave > 0) pc.SelectedSlave = SelectedSlave; if (pc != null) { //C2021-062 use the save rev number for all procedures if set, or just use the rev number in the current procedure config RevNum = (_NewRevForAllProcs == null) ? pc.Print_Rev : _NewRevForAllProcs; 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); - - //Now check the format flags to determine if/how the Rev string should be parsed. + //Now check the format flags to determine if/how the Rev string should be parsed. // This will covert the old way (16-bit) of setting a RevDate (appending it to the RevNumber) // to the new way saving the RevNumber and RevDate in there own config fields if ((_MyProcedure.ActiveFormat.PlantFormat.FormatData.PrintData.DoRevDate && RevNum.Contains("/")) - || (_MyProcedure.ActiveFormat.PlantFormat.FormatData.PrintData.RevDateWithForwardSlash && RevNum.Contains("\\"))) + || (_MyProcedure.ActiveFormat.PlantFormat.FormatData.PrintData.RevDateWithForwardSlash && RevNum.Contains("\\"))) { - int indx = RevNum.IndexOf(_MyProcedure.ActiveFormat.PlantFormat.FormatData.PrintData.RevDateWithForwardSlash ? '\\' : '/'); + int indx = RevNum.IndexOf(_MyProcedure.ActiveFormat.PlantFormat.FormatData.PrintData.RevDateWithForwardSlash ? '\\' : '/'); pc.Print_RevDate = RevDate = RevNum.Substring(indx + 1); pc.Print_Rev = RevNum = RevNum.Substring(0, indx); // save the RevNumber and RevDate to the procedure's config. @@ -536,16 +430,14 @@ namespace VEPROMS itm.Save(); } } - // C2021-019: Override Watermark Text and Color from PSI string waterMarkTextOverride = pc.GetValue("PSI", "WATERMARKOVERRIDE"); - if (!string.IsNullOrEmpty(waterMarkTextOverride)) + if (waterMarkTextOverride != null && waterMarkTextOverride != "") { cbxWaterMark.Visible = false; lblWaterMarkOvrd.Visible = true; lblWaterMarkOvrd.Text = waterMarkTextOverride; } - // do color override // if there is override text, label contains overridden text in the color selected from color override // if no override text, combo box text color is override color @@ -566,13 +458,11 @@ namespace VEPROMS ReviewDate = null; cbxWaterMark.Visible = true; } - // B2019-044 use Enum without the "None" option for the print dialog cbxWaterMark.DataSource = EnumDetail.Details(); cbxWaterMark.ValueMember = "EValue"; PrintWatermark pw = _DocVersionConfig.Print_Watermark; // MyProcedure.ProcedureConfig.Print_Watermark; string pwstr = pw.ToString().ToUpper(); - if (!pwstr.Equals("NONE")) //B2019-044 check setting from folder level { if (pwstr.Equals("INFORMATIONONLY")) @@ -583,9 +473,7 @@ namespace VEPROMS cbxWaterMark.Text = pw.ToString(); // position print dialog list to setting from folder level } else - { swtbtnWaterMark.Value = false; // set to None at folder level so set Watermark switch to the off position - } //ppCmbxChgBarPos.DataSource = EnumDetail.Details(); //ppCmbxChgBarPos.DisplayMember = "Description"; @@ -600,18 +488,13 @@ namespace VEPROMS ppTxbxChangeBarUserMsgOne.Text = _DocVersionConfig.Print_UserCBMess1; ppTxbxChangeBarUserMsgTwo.Text = _DocVersionConfig.Print_UserCBMess2; ppGpbxUserSpecTxt.Enabled = ppCmbxChgBarTxtType.SelectedIndex == (int)PrintChangeBarText.UserDef; - bool hasReviewDate = _MyProcedure.ActiveFormat.PlantFormat.HasPageListToken("{REVIEWDATE}"); bool usesRevDate = _MyProcedure.ActiveFormat.PlantFormat.FormatData.PrintData.DoRevDate || _MyProcedure.ActiveFormat.PlantFormat.FormatData.PrintData.RevDateWithForwardSlash; - if (_MyProcedure.Sections != null) { foreach (SectionInfo mysection in _MyProcedure.Sections) - { hasReviewDate |= mysection.ActiveFormat.PlantFormat.HasPageListToken("{REVIEWDATE}"); - } } - // Only the New HLP format and the MYA format use this // South Texas does not use their new HLP format and MYA (Main Yankee) has dropped us (they closed) // thus there is no supporting code to print a Review Date @@ -622,10 +505,183 @@ namespace VEPROMS lblRevDate.Visible = txbRevDate.Visible = !_AllProcedures && usesRevDate; } - #endregion + // C2018-033 add the Prefix and/or Suffix to PDF file name if defined and wanted by the user + // this piece of code was functionalized from SetupForProcedure() + private void BuildPDFFileName() + { + if (MyProcedure == null) return; + string PDFFilePrefix = _DocVersionConfig.Print_PDFFilePrefix; + string PDFFileSuffix = _DocVersionConfig.Print_PDFFileSuffix; + string PDFFileName = ""; + PDFDTPrefix dtPre = _DocVersionConfig.Print_PDFdtFilePrefix; + PDFDTSuffix dtSuf = _DocVersionConfig.Print_PDFdtFileSuffix; + if (dtPre != PDFDTPrefix.None) PDFFilePrefix = ""; // incase user entered prefix text but then selected a date/time (in working draft properties) + if (dtSuf != PDFDTSuffix.None) PDFFileSuffix = ""; // incase user entered suffix text but then selected a date/time (in working draft properties) + // B2020-062 control the toggle of date/time prefix/suffix on pdf file name + // disable the date/time Prefix/Suffix switch if no date/time was selected + // This switch is does not affect the use of it if the user typed in text for prefix/suffix + if (!AllowDateTimePrefixSuffix || (dtPre == PDFDTPrefix.None && dtSuf == PDFDTSuffix.None)) + { + swtbtnPDFdtPrefixSuffix.Value = false; + swtbtnPDFdtPrefixSuffix.Enabled = false; + } + if (AllowDateTimePrefixSuffix && swtbtnPDFdtPrefixSuffix.Value) + { + //DateTime dts = DateTime.Now; + if (dtPre != PDFDTPrefix.None) + PDFFilePrefix = (_PrefixSuffixDTS.ToString(dtPre.ToString())).Replace("__", " ").Replace("_", "-") + "_"; + if (dtSuf != PDFDTSuffix.None) + PDFFileSuffix = "_" + (_PrefixSuffixDTS.ToString(dtSuf.ToString())).Replace("__", " ").Replace("_", "-"); + } + if (ProcNum == string.Empty) + //txbPDFName.Text = this.UnitNumber + ".pdf"; + PDFFileName = this.UnitNumber; + else + //txbPDFName.Text = string.Format("{0}.pdf", _MyProcedure.PDFNumber); + PDFFileName = string.Format("{0}", _MyProcedure.PDFNumber); + //if (txbPDFName.Text.StartsWith("*")) + // txbPDFName.Text = txbPDFName.Text.Replace("*", this.UnitNumber); + if ((PDFFileName ?? "") == "") PDFFileName = "NoProcNumber"; + if (PDFFileName.StartsWith("*")) + PDFFileName = PDFFileName.Replace("*", this.UnitNumber); + if (PDFFileName.Contains("?")) PDFFileName = PDFFileName.Replace("?", "_"); // for wcn sys/BM-2xxA??, etc + txbPDFName.Text = PDFFilePrefix + PDFFileName + PDFFileSuffix + ".pdf"; + } - #region Private Methods + // C2018-033 Enable/disable the switch to control whether to add Prefix and/or Suffix to PDF file name + private void SetupPrefixSuffixSwitch() + { + if (_CreateButtonClicked) return; // B2020-062 control the toggle of date/time prefix/suffix on pdf file name + // note that MyProcedure must be set before calling this because BuildPDFFileName() will be called when the swbtnPDFPrefixSuffix is set + string PDFFilePrefix = _DocVersionConfig.Print_PDFFilePrefix; + string PDFFileSuffix = _DocVersionConfig.Print_PDFFileSuffix; + PDFDTPrefix dtPre = _DocVersionConfig.Print_PDFdtFilePrefix; + PDFDTSuffix dtSuf = _DocVersionConfig.Print_PDFdtFileSuffix; + bool hasPrefixSuffix = _DateTimePrefixSuffixPrintingAllProcedures && (PDFFilePrefix.Length > 0 || PDFFileSuffix.Length > 0 || dtPre != PDFDTPrefix.None || dtSuf != PDFDTSuffix.None); + swtbtnPDFdtPrefixSuffix.Value = hasPrefixSuffix; // this will call BuildPDFFileName() thus MyProcedure must be set + swtbtnPDFdtPrefixSuffix.Enabled = hasPrefixSuffix; + } + private void btnCancel_Click(object sender, EventArgs e) + { + this.Close(); + } + + private void swtbtnChgBar_ValueChanged(object sender, EventArgs e) + { + // C2019-031 - disable the override change bar grouping when default change bar is set to format default or no change bar + cbxOvrrideDefChgBars.Checked = false; // uncheck the override change bar check box inside the grouping + cbxOvrrideDefChgBars.Enabled = swtbtnChgBar.Value; // C2022-015 enable if Change Bars are turned on + + if (swtbtnChgBar.Value) + { + switch (_DocVersionConfig.Print_ChangeBar) + { + case PrintChangeBar.WithUserSpecified: + cbxOvrrideDefChgBars.Enabled = true; // change bar text is pre-selected in procedure set properties, allow user to change change bar text + cbxOvrrideDefChgBars.Checked = true; + break; + case PrintChangeBar.SelectBeforePrinting: + cbxOvrrideDefChgBars.Enabled = true; // allow user to select change bar text every time procedure is printed + break; + case PrintChangeBar.Without: + case PrintChangeBar.WithDefault: + cbxOvrrideDefChgBars.Enabled = false; // printing with format default change bars - don't allow override + cbxOvrrideDefChgBars.Checked = false; + break; + } + } + } + + private void swtbtnWaterMark_ValueChanged(object sender, EventArgs e) + { + if (!swtbtnWaterMark.Value) // C2021-019: make both invisible + { + cbxWaterMark.Visible = swtbtnWaterMark.Value; + lblWaterMarkOvrd.Visible = swtbtnWaterMark.Value; + } + else // C2021-019: determine whether combo box or lable needs to be made visible + { + ProcedureConfig pc = MyProcedure.MyConfig as ProcedureConfig; + string waterMarkTextOverride = pc.GetValue("PSI", "WATERMARKOVERRIDE"); + if (waterMarkTextOverride != null && waterMarkTextOverride != "") + { + cbxWaterMark.Visible = false; + lblWaterMarkOvrd.Visible = true; + } + else + { + cbxWaterMark.Visible = true; + lblWaterMarkOvrd.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; + + ProcedureConfig pc = _MyProcedure.MyConfig as ProcedureConfig; + if (SelectedSlave > 0) pc.SelectedSlave = 0; + } + + private ProcedureInfo _MyProcedure; + + public ProcedureInfo MyProcedure + { + get { return _MyProcedure; } + set + { + _MyProcedure = value; + // if procedure has supplemental information, the automatially check the add blank pages for duplex printing + if (_MyProcedure.ProcHasSupInfoData) + { + swtbtnBlankPgsForDuplex.Value = true; + tbBlankPage.Enabled = true; + } + SetupPrefixSuffixSwitch(); // C2018-033 Enable the switch to control whether to add Prefix and/or Suffix to PDF file name + } + } + private int _SelectedSlave = 0; + public int SelectedSlave + { + get { return _SelectedSlave; } + set + { + _SelectedSlave = value; + lblMultiunitPdfLocation.Visible = cbxMultiunitPdfLocation.Visible = (value > -1); + cbxMultiunitPdfLocation.SelectedIndex = 1; + } + } + private string _MultiunitPdfLocation = string.Empty; + private MergedPdf _MergedPfd = null; + private string _MergedPdfPath = null; private void CreatePDFs() { if (VlnSettings.GetCommandFlag("PROFILE")) ProfileTimer.TurnOnTracking("Profile.txt"); @@ -633,7 +689,6 @@ namespace VEPROMS ProfileTimer.Reset(); int profileDepth = ProfileTimer.Push(">>>> CreatePdf"); StringBuilder sb = new StringBuilder(); - if (MySessionInfo != null) { foreach (ProcedureInfo myProc in _DocVersionInfo.Procedures) @@ -644,22 +699,18 @@ namespace VEPROMS sb.AppendLine(message); } } - if (sb.Length > 0) { if (MessageBox.Show(sb.ToString() + Environment.NewLine + Environment.NewLine + "Do you want to continue to print all procedures?", "Procedures Already Checked Out", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.No) return; } } - CreateDebugFiles(); - // If file exists, determine if overwrite checkbox allows overwrite, if not prompt. Volian.Print.Library.Rtf2Pdf.PdfDebug = cbxDebug.Checked; // B2019-128: The combo box list did not include the 'None' option so the selected value was not the correct watermark (had to add 1 to the selected index) string waterMarkText = (swtbtnWaterMark.Value) ? cbxWaterMark.Text : "None"; // C2021-019 string watermarkColor = "Blue"; // this is the default watermark color - // Determine change bar settings. First get from config & then see if override from dialog. // Also check that format allows override. ChangeBarDefinition cbd = DetermineChangeBarSettings(); @@ -667,22 +718,18 @@ namespace VEPROMS int i = 0; pbPDFsStatus.Maximum = n; pbPDFsStatus.Visible = true; - VlnSvgPageHelper.CountInApplProcs = 1; // B2021-127: BNPPalr - Auto set of serial #, skip Front Matter as per PAL 11/1/21 (set to 1 not 0) + VlnSvgPageHelper.CountInApplProcs = 1; // B2021-127: BNPPalr - Auto set of serial #, skip Front Matter as per PAL 11/1/21 (set to 1 not 0) this.Text = string.Format("Processing {0}", _DocVersionInfo.MyFolder.Name); - foreach (ProcedureInfo myProc in _DocVersionInfo.Procedures) { - string locpdfname = null; // get pdf file name for later merge code + string locpdfname = null; // get pdf file name for later merge code MyProcedure = myProc; - // C2021-019: Override Watermark Text, 'waterMarkText' will have whatever watermark text should be printed ProcedureConfig procConfig = MyProcedure.MyConfig as ProcedureConfig; - string waterMarkTextOverride = string.Empty; + string waterMarkTextOverride = ""; if (procConfig != null) waterMarkTextOverride = procConfig.GetValue("PSI", "WATERMARKOVERRIDE"); - // C2020-002 paper size is now set in the format files - default is Letter Volian.Print.Library.Rtf2Pdf.PaperSize = myProc.ActiveFormat.PlantFormat.FormatData.PDFPageSize.PaperSize; - if (myProc.Sections != null) { // This is master/slave & a slave has been selected for printing (SelectedSlave > 0) @@ -690,18 +737,15 @@ namespace VEPROMS { bool includeProc = MyProcedure.ApplInclude(SelectedSlave); // C2021-027: Procedure level PC/PC if (!includeProc) VlnSvgPageHelper.CountInApplProcs++; // B2021-127: BNPPalr - Auto set of serial # - if (includeProc) { MyProcedure.MyDocVersion.DocVersionConfig.SelectedSlave = SelectedSlave; SetupForProcedure(); - //B2022-030 moved the watermark stuff after SetupForProcedure so that DisplayNumber is properly resolved and the proper unit watermark is found // also moved the setting of override watermark to after SetUnitWatermark so that it truely overrrides - frmPDFStatusForm.SetUnitWatermark(MyProcedure, ref waterMarkText, ref watermarkColor); //C2022-004 Unit Designator watermark // C2021-062 save the entered Rev Number to all of the procedures that are being printed? + frmPDFStatusForm.SetUnitWatermark(MyProcedure, ref waterMarkText, ref watermarkColor); //C2022-004 Unit Designator watermark // C2021-062 save the entered Rev Number to all of the procedures that are being printed if (swtbtnWaterMark.Value && waterMarkTextOverride != null && waterMarkTextOverride != "") waterMarkText = waterMarkTextOverride; if (_NewRevForAllProcs != null) SaveRevNumToProcedureConfig(_NewRevForAllProcs); - pbPDFsStatus.TextVisible = true; pbPDFsStatus.Text = string.Format("Creating PDF for {0} ({1} of {2})", myProc.DisplayNumber, ++i, n); pbPDFsStatus.Value = i; @@ -716,7 +760,6 @@ namespace VEPROMS string myPDFPath = GetMultiunitPDFPath(); _MergedPdfPath = myPDFPath; // If Slave, need its subdirectory/unit path for merging // RHM 20120925 Overlay the bottom of the dialog so that cancel button is covered. - // B2021-102 put in the using for better memory management using (frmPDFStatusForm frmStatus = new frmPDFStatusForm(MyProcedure, RevNumAndDate, waterMarkText, cbxDebug.Checked, cbxOrPgBrk.Checked, cbxOpenAfterCreate2.Checked, cbxOverwritePDF2.Checked, myPDFPath, cbd, txbPDFName.Text, new Point(Left, Bottom - 50), @@ -739,10 +782,9 @@ namespace VEPROMS { MyProcedure.MyDocVersion.DocVersionConfig.SelectedSlave = k; SetupForProcedure(); - //B2022-030 moved the watermark stuff after SetupForProcedure so that DisplayNumber is properly resolved and the proper unit watermark is found // also moved the setting of override watermark to after SetUnitWatermark so that it truely overrrides - frmPDFStatusForm.SetUnitWatermark(MyProcedure, ref waterMarkText, ref watermarkColor); //C2022-004 Unit Designator watermark // C2021-062 save the entered Rev Number to all of the procedures that are being printed? + frmPDFStatusForm.SetUnitWatermark(MyProcedure, ref waterMarkText, ref watermarkColor); //C2022-004 Unit Designator watermark // C2021-062 save the entered Rev Number to all of the procedures that are being printed if (swtbtnWaterMark.Value && waterMarkTextOverride != null && waterMarkTextOverride != "") waterMarkText = waterMarkTextOverride; // C2021-062 save the entered Rev Number to all of the procedures that are being printed if (_NewRevForAllProcs != null) SaveRevNumToProcedureConfig(_NewRevForAllProcs); @@ -777,9 +819,7 @@ namespace VEPROMS // Not master/slave else { - MyProcedure.MyDocVersion.DocVersionConfig.SelectedSlave = SelectedSlave; SetupForProcedure(); - //B2022-030 moved the watermark stuff after SetupForProcedure so that DisplayNumber is properly resolved and the proper unit watermark is found // also moved the setting of override watermark to after SetUnitWatermark so that it truely overrrides frmPDFStatusForm.SetUnitWatermark(MyProcedure, ref waterMarkText, ref watermarkColor); //C2022-004 Unit Designator watermark // C2021-062 save the entered Rev Number to all of the procedures that are being printed @@ -817,293 +857,17 @@ namespace VEPROMS } } } - pbPDFsStatus.Visible = false; - - if (!Automatic) + if(!Automatic) ShowDebugFiles(); - ProfileTimer.Pop(profileDepth); ProfileTimer.ShowTimerTable(); - if (VlnSettings.GetCommandFlag("DBTrack")) { VEPROMS.CSLA.Library.Database.TrackDBUsage = false; VEPROMS.CSLA.Library.Database.ShowDBTracking("DBTracking.txt"); } } - - private void HandleDocVersionSettings() - { - 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; - - SetCompareVisibility(); - - // if the default setting is 'SelectBeforePrinting', expand the Additional Print Settings panel - if (_DocVersionConfig.Print_ChangeBar == PrintChangeBar.SelectBeforePrinting) - { - swtbtnChgBar.Value = false; - cbxOvrrideDefChgBars.Checked = false; - expPrnSetting.Expanded = true; - } - } - - 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) - swtbtnChgBar.Value = false; - else - swtbtnChgBar.Value = true; - - // Watermark on/off - if (_DocVersionConfig.Print_Watermark == PrintWatermark.None) - swtbtnWaterMark.Value = false; - else - swtbtnWaterMark.Value = true; - - SetCompareVisibility(); - - // default to using OriginalPageBreaks (16bit page breaks) if App.config is set - // to true: - //cbxOrPgBrk.Visible = VlnSettings.OriginalPageBreak && VlnSettings.DebugMode; - cbxOrPgBrk.Visible = false; //per Harry - cbxOrPgBrk.Checked = false; - } - - private void SetCompareVisibility() - { - // default to print Debug info if App.config is set to debug mode - // This checkbox is now labeled as "Compare PDF" - // If the PDF location has a Compare folder or we are in Debug Mode - // then make the checkbox visible - string cmpfldr = txbPDFLocation.Text; - if (!cmpfldr.EndsWith("\\")) cmpfldr += "\\"; - cmpfldr += "Compare"; - - cbxDebug.Visible = Directory.Exists(cmpfldr) || VlnSettings.DebugMode; - cbxDebug.Checked = VlnSettings.DebugMode; - } - - private void PrepForAllOrOne(bool oneProcedure) - { - txbPDFName.Visible = lblPDFFileName.Visible = oneProcedure; - txbReviewDate.Visible = lblReviewDate.Visible = oneProcedure; - txbRevDate.Visible = lblRevDate.Visible = oneProcedure; - cbxOpenAfterCreate2.Visible = oneProcedure; - cbxOpenAfterCreate2.Checked = false; - cbxOverwritePDF2.Visible = oneProcedure; - cbxOverwritePDF2.Checked = true; - gpnlDebug.Visible = Volian.Base.Library.VlnSettings.DebugMode; - swtbtnGeneratePlacekeeper.Value = false; - cbxGenerateConActSum.Checked = false; - - swtbtnGeneratePlacekeeper.Visible = lblGeneratePlacekeeper.Visible = oneProcedure && - ((MyProcedure.ActiveFormat.PlantFormat.FormatData.PurchaseOptions & E_PurchaseOptions.AutoPlacekeeper) == E_PurchaseOptions.AutoPlacekeeper); - - // C2021-062 make visible the check box to assign rev number for all procedures being printed - // also make visible the Rev Num entry field. - txbRevNum.Enabled = oneProcedure; - cbxAssignRevToAllMergedPrcs.Visible = btnMergePDFs.Visible = !oneProcedure; - - // C2021-063 make the Generate Alarm Point List text checkbox visible in the format flag is set. - cbxAlmPtTxt.Visible = !oneProcedure && MyProcedure.ActiveFormat.PlantFormat.FormatData.PrintData.ChkBoxToGeneratePointListText; - } - - // C2018-033 add the Prefix and/or Suffix to PDF file name if defined and wanted by the user - // this piece of code was functionalized from SetupForProcedure() - private void BuildPDFFileName() - { - if (MyProcedure == null) return; - - string PDFFilePrefix = _DocVersionConfig.Print_PDFFilePrefix; - string PDFFileSuffix = _DocVersionConfig.Print_PDFFileSuffix; - string PDFFileName = string.Empty; - - PDFDTPrefix dtPre = _DocVersionConfig.Print_PDFdtFilePrefix; - PDFDTSuffix dtSuf = _DocVersionConfig.Print_PDFdtFileSuffix; - - if (dtPre != PDFDTPrefix.None) PDFFilePrefix = string.Empty; // incase user entered prefix text but then selected a date/time (in working draft properties) - if (dtSuf != PDFDTSuffix.None) PDFFileSuffix = string.Empty; // incase user entered suffix text but then selected a date/time (in working draft properties) - - // B2020-062 control the toggle of date/time prefix/suffix on pdf file name - // disable the date/time Prefix/Suffix switch if no date/time was selected - // This switch is does not affect the use of it if the user typed in text for prefix/suffix - if (!AllowDateTimePrefixSuffix || (dtPre == PDFDTPrefix.None && dtSuf == PDFDTSuffix.None)) - { - swtbtnPDFdtPrefixSuffix.Value = false; - swtbtnPDFdtPrefixSuffix.Enabled = false; - } - - if (AllowDateTimePrefixSuffix && swtbtnPDFdtPrefixSuffix.Value) - { - //DateTime dts = DateTime.Now; - if (dtPre != PDFDTPrefix.None) - PDFFilePrefix = (_PrefixSuffixDTS.ToString(dtPre.ToString())).Replace("__", " ").Replace("_", "-") + "_"; - - if (dtSuf != PDFDTSuffix.None) - PDFFileSuffix = "_" + (_PrefixSuffixDTS.ToString(dtSuf.ToString())).Replace("__", " ").Replace("_", "-"); - } - - if (string.IsNullOrEmpty(ProcNum)) - PDFFileName = this.UnitNumber; - else - PDFFileName = string.Format("{0}", _MyProcedure.PDFNumber); - - if (string.IsNullOrEmpty(PDFFileName)) - PDFFileName = "NoProcNumber"; - - if (PDFFileName.StartsWith("*")) - PDFFileName = PDFFileName.Replace("*", this.UnitNumber); - - if (PDFFileName.Contains("?")) - PDFFileName = PDFFileName.Replace("?", "_"); // for wcn sys/BM-2xxA??, etc - - txbPDFName.Text = PDFFilePrefix + PDFFileName + PDFFileSuffix + ".pdf"; - } - - // C2018-033 Enable/disable the switch to control whether to add Prefix and/or Suffix to PDF file name - private void SetupPrefixSuffixSwitch() - { - if (_CreateButtonClicked) return; // B2020-062 control the toggle of date/time prefix/suffix on pdf file name - - // note that MyProcedure must be set before calling this because BuildPDFFileName() will be called when the swbtnPDFPrefixSuffix is set - DocVersionConfig dvc = (_DocVersionConfig != null) ? _DocVersionConfig : MyProcedure.MyDocVersion.DocVersionConfig; - - string PDFFilePrefix = dvc.Print_PDFFilePrefix; - string PDFFileSuffix = dvc.Print_PDFFileSuffix; - - PDFDTPrefix dtPre = dvc.Print_PDFdtFilePrefix; - PDFDTSuffix dtSuf = dvc.Print_PDFdtFileSuffix; - - bool hasPrefixSuffix = _DateTimePrefixSuffixPrintingAllProcedures && (PDFFilePrefix.Length > 0 || PDFFileSuffix.Length > 0 || dtPre != PDFDTPrefix.None || dtSuf != PDFDTSuffix.None); - - // this will call BuildPDFFileName() thus MyProcedure must be set - swtbtnPDFdtPrefixSuffix.Value = hasPrefixSuffix; - swtbtnPDFdtPrefixSuffix.Enabled = hasPrefixSuffix; - } - - private void DlgPrintProcedure_Load(object sender, EventArgs e) - { - SetupForProcedure(); - - _MyTimer = new Timer(); - _MyTimer.Tick += new EventHandler(_MyTimer_Tick); - _MyTimer.Interval = 100; - _MyTimer.Enabled = true; - - btnCreatePDF.Select(); - } - - void _MyTimer_Tick(object sender, EventArgs e) - { - _MyTimer.Enabled = false; - BringToFront(); - if (Automatic) RunAutomatic(); - } - - private void RunAutomatic() - { - cbxDebugPagination.Checked = true; - cbxDebugText.Checked = true; - cbxMetaFile.Checked = true; // C2018-004 create meta file for baseline compares - _IncludeWordSecTextInMetafile = true; - - Application.DoEvents(); - - string[] parameters = System.Environment.CommandLine.Split(" ".ToCharArray()); - bool ranAuto = false; - - foreach (string parameter in parameters) - { - if (parameter.ToUpper() == "/NT") - cbxDebugText.Checked = false; - else if (parameter.ToUpper() == "/NP") - cbxDebugPagination.Checked = false; - else if (parameter.ToUpper() == "/NC") - cbxDebug.Checked = false; - else if (parameter.ToUpper() == "/NM") - cbxMetaFile.Checked = false; // C2018-004 turn off create meta file for baseline compares - else if (parameter.ToUpper() == "/NW") - _IncludeWordSecTextInMetafile = false; // C2018-023 turn off putting Word attachment text in the meta file for baseline compares - } - - CreatePDFs(); - - this.Close(); - } - - private void btnCreatePDF_Click(object sender, EventArgs e) - { - DoCreatePDF(); - } - - private void DoCreatePDF() - { - if (_AllProcedures) - { - this.Cursor = Cursors.WaitCursor; - - DateTime dtStart = DateTime.Now; - _MultiunitPdfLocation = cbxMultiunitPdfLocation.SelectedItem.ToString(); - - PromsPrinter.ClearTransPageNumProblems(); - CreatePDFs(); - PromsPrinter.ReportTransPageNumProblems(); - - this.Cursor = Cursors.Default; - - if (_MergedPfd == null) - { - if (VlnSettings.DebugMode) - { - MessageBox.Show(string.Format("{0} Minutes to Print All Procedures" - , TimeSpan.FromTicks(DateTime.Now.Ticks - dtStart.Ticks).TotalMinutes), - "Printing Duration", MessageBoxButtons.OK, MessageBoxIcon.Information); - } - else // Production or Demo mode - { - MessageBox.Show("Completed Successfully", "Print All Procedures", MessageBoxButtons.OK, MessageBoxIcon.Information); - } - - this.Close(); - } - } - else - { - // B2016-249 Output Procedure to folder associated with Parent Child - // B2017-009 If the selected item is null don't add a folder - if (cbxMultiunitPdfLocation.SelectedItem != null) - { - _MultiunitPdfLocation = cbxMultiunitPdfLocation.SelectedItem.ToString(); - } - - this.Cursor = Cursors.WaitCursor; - - _CreateButtonClicked = true; // B2020-062 control the toggle of date/time prefix/suffix on pdf file name - CreatePDF(); - _CreateButtonClicked = false; - - this.Cursor = Cursors.Default; - } - } - private void AddToMergeList(ProcedureInfo myProc, string locpdfname) { // if doing a merge and this procedure should be included, add it to _MergedPdf: @@ -1112,63 +876,20 @@ namespace VEPROMS // pdf name from printing has the path, remove it. string pdfname = locpdfname.Substring(locpdfname.LastIndexOf(@"\") + 1); MergedPdfProc mpp = new MergedPdfProc(myProc.DisplayText, pdfname); - // F2021-046: flag if cover page section doesn't print page number on first page of merged pdf: if (myProc.Sections != null) { foreach (ItemInfo ii in myProc.Sections) if (ii.MyDocStyle != null && ii.MyDocStyle.CoverNoMergedPageNum) mpp.FirstPageNoPageNum = true; } - if (_MergedPfd.MergedPdfs == null) _MergedPfd.MergedPdfs = new List(); mpp.PageCount = PromsPrinter.ProcPageCount; - _MergedPfd.MergedPdfs.Add(mpp); } } - private void btnMergePDFs_Click(object sender, EventArgs e) - { - // Merge the pdfs into one pdf file (C2019-012) - DateTime dtStart = DateTime.Now; - _MergedPfd = new MergedPdf(PDFPath, _DocVersionInfo); - - // B2019-152: MergedLandscapePages has data set when creating separate pdfs (DoCreatePDF) - PromsPrinter.MergedLandscapePages = null; - - DoCreatePDF(); // create individual 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 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) - { - if (_MergedPfd.MergedPdfs != null && _MergedPfd.MergedPdfs.Count > 0) - { - System.Diagnostics.Process sdp = System.Diagnostics.Process.Start(_MergedPfd.MergedFileName); - if (sdp != null) // B2020-055 if the current .NET version does not recognize the program used to display the PDF, it will return a NULL (ex. Microsoft Edge) - sdp.WaitForInputIdle(); - } - } - else if (VlnSettings.DebugMode) - { - FlexibleMessageBox.Show(string.Format("{0} Minutes to Print and Merge Procedures" - , TimeSpan.FromTicks(DateTime.Now.Ticks - dtStart.Ticks).TotalMinutes), - "Printing Duration", MessageBoxButtons.OK, MessageBoxIcon.Information); - } - else // Production or Demo mode - { - FlexibleMessageBox.Show("Completed Successfully", "Print All and Merge Procedures", MessageBoxButtons.OK, MessageBoxIcon.Information); - } - - this.Close(); - } - private string GetMultiunitPDFPath() { string newPDFPath = string.Empty; - if (_MultiunitPdfLocation == "None") newPDFPath = PDFPath; if (_MultiunitPdfLocation == "Unit Name") @@ -1180,39 +901,28 @@ namespace VEPROMS if (_MultiunitPdfLocation == "Unit ID") newPDFPath = PDFPath + @"\" + MyProcedure.MyDocVersion.DocVersionConfig.Unit_ID; if (newPDFPath == "") newPDFPath = Volian.Base.Library.VlnSettings.TemporaryFolder; - - // B2016-255 Non-P/C PC procedures need to remove that \0 that the code above adds - if (newPDFPath.EndsWith("\\0")) - newPDFPath = newPDFPath.Substring(0, newPDFPath.Length - 2); - + // B2016-255 Non-P/C PC proceduress need to remove that \0 that the code above addds + if (newPDFPath.EndsWith("\\0")) newPDFPath = newPDFPath.Substring(0, newPDFPath.Length - 2); if (!Directory.Exists(newPDFPath)) Directory.CreateDirectory(newPDFPath); - return newPDFPath; } - private void CreateDebugFiles() { if (cbxDebugPagination.Checked) Volian.Base.Library.DebugPagination.Open(PDFPath + "\\DebugPagination.txt"); // RHM 20120925 Corrected spelling - if (cbxDebugText.Checked) Volian.Base.Library.DebugText.Open(PDFPath + "\\DebugText.txt"); - if (cbxMetaFile.Checked) // C2018-004 create meta file for baseline compares { Volian.Base.Library.BaselineMetaFile.Open(PDFPath + "\\DebugMeta.txt"); - // C2018-015 add the PROMS Version, SQL Server, and Database to top of the meta file Volian.Base.Library.BaselineMetaFile.WriteLine("!! Ver {0} {1} {2}", AboutVEPROMS.PROMSVersion, AboutVEPROMS.SQLServerName, AboutVEPROMS.DatabaseName); - // C2018-023 set as to whether we are going to include the Word attment text in the baseline metafile Volian.Base.Library.BaselineMetaFile.IncludeWordSecText = _IncludeWordSecTextInMetafile; } - Rtf2Pdf._lastPageNum = 0; // reset page number } - private void ShowDebugFiles() { if (cbxDebugPagination.Checked) @@ -1220,7 +930,86 @@ namespace VEPROMS if (cbxDebugText.Checked) Volian.Base.Library.DebugText.Show(); if (cbxMetaFile.Checked)// C2018-004 create meta file for baseline compares - Volian.Base.Library.BaselineMetaFile.Show(); // baseline + Volian.Base.Library.BaselineMetaFile.Show(); // baseline + } + public void CreatePDF() // RHM20150506 Multiline ItemID TextBox + { + if (VlnSettings.GetCommandFlag("PROFILE")) ProfileTimer.TurnOnTracking("Profile.txt"); + VEPROMS.CSLA.Library.Database.TrackDBUsage = VlnSettings.GetCommandFlag("DBTrack"); + ProfileTimer.Reset(); + int profileDepth = ProfileTimer.Push(">>>> CreatePdf"); + string message = string.Empty; + if (!MySessionInfo.CanCheckOutItem(MyProcedure.ItemID, CheckOutType.Procedure, ref message)) + { + if (MessageBox.Show(this, message + Environment.NewLine + Environment.NewLine + "Do you want to continue to print the procedure?", "Procedure Is Checked Out", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.No) + return; + } + // B2021-127: BNPPalr - Auto set of serial #, skip Front Matter as per PAL 11/1/21 (set to 1 not 0) + // Only do if set has applicability, printing an individual procedure, need to determine + // applicability count. + if (MyProcedure.MyDocVersion.MultiUnitCount > 1) + { + VlnSvgPageHelper.CountInApplProcs = 1; + foreach (ProcedureInfo pi in MyProcedure.MyDocVersion.Procedures) + { + if (pi.ItemID == MyProcedure.ItemID) break; + bool includeProc = pi.ApplInclude(SelectedSlave); + if (!includeProc) VlnSvgPageHelper.CountInApplProcs++; + } + } + CreateDebugFiles(); + // If file exists, determine if overwrite checkbox allows overwrite, if not prompt. + + Volian.Print.Library.Rtf2Pdf.PdfDebug = cbxDebug.Checked; + // B2019-044 don't print the watermark if the watermark switch on the print dialog is turned off + cbxWaterMark.Visible = true; + string waterMarkText = (swtbtnWaterMark.Value) ? cbxWaterMark.Text : "None" ; // B2018-124 use text of watermark form drop down list instead of enum value + string watermarkColor = "Blue"; // this is the default watermark color + frmPDFStatusForm.SetUnitWatermark(MyProcedure, ref waterMarkText, ref watermarkColor); //C2022-004 Unit Designator Watermark + ProcedureConfig procConfig = MyProcedure.MyConfig as ProcedureConfig; + string waterMarkTextOverride = ""; + if (procConfig != null) waterMarkTextOverride = procConfig.GetValue("PSI", "WATERMARKOVERRIDE"); // C2021-019: override watermark text + if (swtbtnWaterMark.Value && waterMarkTextOverride != null && waterMarkTextOverride != "") waterMarkText = waterMarkTextOverride; + // Determine change bar settings. First get from config & then see if override from dialog. + // Also check that format allows override. + ChangeBarDefinition cbd = DetermineChangeBarSettings(); + int profileDepth2 = ProfileTimer.Push(">>>> CreatePdf.GetItemAndChildren"); + + // B2021-088 moved this if/else to frmPDFStatusForm() so that the Approval logic will have access to this logic + //if (MyProcedure.MyDocVersion.DocVersionConfig.SelectedSlave > 0 || MyProcedure.ActiveFormat.PlantFormat.FormatData.TransData.UseTransitionModifier || MyProcedure.ActiveFormat.PlantFormat.FormatData.TransData.UseSpecificTransitionModifier) + // MyProcedure = ProcedureInfo.GetItemAndChildrenByUnit(MyProcedure.ItemID, 0, MyProcedure.MyDocVersion.DocVersionConfig.SelectedSlave); + //else + // MyProcedure = ProcedureInfo.GetItemAndChildren(MyProcedure.ItemID); + // C2018-015 add the procedure tree path and the procedure number and title to the meta file + //if (BaselineMetaFile.IsOpen) BaselineMetaFile.WriteLine("!! {0}", MyProcedure.SearchDVPath.Replace("\a"," | ")); + //if (BaselineMetaFile.IsOpen) BaselineMetaFile.WriteLine("!! {0} | {1}", MyProcedure.DisplayNumber, MyProcedure.DisplayText); + + // RHM 20120925 Overlay the bottom of the dialog so that cancel button is covered. + ProfileTimer.Pop(profileDepth2); + // B2016-249 Output Procedure to folder associated with Parent Child + // B2018-124 use text of watermark form drop down list instead of enum value + using (frmPDFStatusForm frmStatus = new frmPDFStatusForm(MyProcedure, RevNumAndDate, waterMarkText, cbxDebug.Checked, cbxOrPgBrk.Checked, + cbxOpenAfterCreate2.Checked, cbxOverwritePDF2.Checked, GetMultiunitPDFPath(), cbd, txbPDFName.Text, new Point(Left, Bottom - 50), + swtbtnBlankPgsForDuplex.Value, _AllProcedures || Automatic, Prefix, SaveLinks, RemoveTrailingHardReturnsAndManualPageBreaks, swtbtnPROMSVersion.Value, false, tbBlankPage.Text, _MergedPfd, watermarkColor))//; //C2018-009 print PROMS version + { + frmStatus.MakePlaceKeeper = swtbtnGeneratePlacekeeper.Value; + frmStatus.MakeContinuousActionSummary = cbxGenerateConActSum.Checked; + if (Automatic && cbxGenerateConActSum.Checked) + frmStatus.OnlyShowContinuousActionSummary = true; + int profileDepth3 = ProfileTimer.Push(">>>> frmStatus"); + frmStatus.ShowDialog(); + ProfileTimer.Pop(profileDepth3); + } + MyProcedure.MyDocVersion.DocVersionConfig.SelectedSlave = 0; + this.Close(); + ShowDebugFiles(); + ProfileTimer.Pop(profileDepth); + ProfileTimer.ShowTimerTable(); + if (VlnSettings.GetCommandFlag("DBTrack")) + { + VEPROMS.CSLA.Library.Database.TrackDBUsage = false; + VEPROMS.CSLA.Library.Database.ShowDBTracking("DBTracking.txt"); + } } // Determine if any dialog selections for change bars have overridden the data @@ -1235,7 +1024,6 @@ namespace VEPROMS 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; @@ -1273,113 +1061,56 @@ namespace VEPROMS } return cbd; } - - private void btnCancel_Click(object sender, EventArgs e) + private void btnCreatePDF_Click(object sender, EventArgs e) { - this.Close(); + DoCreatePDF(); } - private void swtbtnChgBar_ValueChanged(object sender, EventArgs e) + private void DoCreatePDF() { - // C2019-031 - disable the override change bar grouping when default change bar is set to format default or no change bar - cbxOvrrideDefChgBars.Checked = false; // uncheck the override change bar check box inside the grouping - cbxOvrrideDefChgBars.Enabled = swtbtnChgBar.Value; // C2022-015 enable if Change Bars are turned on - - if (swtbtnChgBar.Value) + if (_AllProcedures) { - switch (_DocVersionConfig.Print_ChangeBar) + this.Cursor = Cursors.WaitCursor; + DateTime dtStart = DateTime.Now; + _MultiunitPdfLocation = cbxMultiunitPdfLocation.SelectedItem.ToString(); + PromsPrinter.ClearTransPageNumProblems(); + CreatePDFs(); + PromsPrinter.ReportTransPageNumProblems(); + this.Cursor = Cursors.Default; + if (_MergedPfd == null) { - case PrintChangeBar.WithUserSpecified: - cbxOvrrideDefChgBars.Enabled = true; // change bar text is pre-selected in procedure set properties, allow user to change change bar text - cbxOvrrideDefChgBars.Checked = true; - break; - case PrintChangeBar.SelectBeforePrinting: - cbxOvrrideDefChgBars.Enabled = true; // allow user to select change bar text every time procedure is printed - break; - case PrintChangeBar.Without: - case PrintChangeBar.WithDefault: - cbxOvrrideDefChgBars.Enabled = false; // printing with format default change bars - don't allow override - cbxOvrrideDefChgBars.Checked = false; - break; - } - } - } - - private void swtbtnWaterMark_ValueChanged(object sender, EventArgs e) - { - if (!swtbtnWaterMark.Value) // C2021-019: make both invisible - { - cbxWaterMark.Visible = swtbtnWaterMark.Value; - lblWaterMarkOvrd.Visible = swtbtnWaterMark.Value; - } - else // C2021-019: determine whether combo box or lable needs to be made visible - { - ProcedureConfig pc = MyProcedure.MyConfig as ProcedureConfig; - string waterMarkTextOverride = pc.GetValue("PSI", "WATERMARKOVERRIDE"); - if (waterMarkTextOverride != null && waterMarkTextOverride != "") - { - cbxWaterMark.Visible = false; - lblWaterMarkOvrd.Visible = true; - } - else - { - cbxWaterMark.Visible = true; - lblWaterMarkOvrd.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 + if (VlnSettings.DebugMode) { - Directory.CreateDirectory(PDFPath); + MessageBox.Show(string.Format("{0} Minutes to Print All Procedures" + , TimeSpan.FromTicks(DateTime.Now.Ticks - dtStart.Ticks).TotalMinutes), + "Printing Duration", MessageBoxButtons.OK, MessageBoxIcon.Information); } - catch (Exception ex) + else // Production or Demo mode { - MessageBox.Show(ex.Message, "Error trying to create folder", MessageBoxButtons.OK, MessageBoxIcon.Error); - PDFPath = _DocVersionConfig.Print_PDFLocation; + MessageBox.Show("Completed Successfully", "Print All Procedures", MessageBoxButtons.OK, MessageBoxIcon.Information); } - } - else - { - PDFPath = _DocVersionConfig.Print_PDFLocation; + this.Close(); } } + else + { + // B2016-249 Output Procedure to folder associated with Parent Child + // B2017-009 If the selected item is null don't add a folder + if (cbxMultiunitPdfLocation.SelectedItem != null) + _MultiunitPdfLocation = cbxMultiunitPdfLocation.SelectedItem.ToString(); + this.Cursor = Cursors.WaitCursor; + _CreateButtonClicked = true; // B2020-062 control the toggle of date/time prefix/suffix on pdf file name + CreatePDF(); + _CreateButtonClicked = false; + this.Cursor = Cursors.Default; + } } - - /// - /// RHM 20120925 Added so that the dialog would center over the PROMS window - /// - /// - protected override void OnActivated(EventArgs e) - { - base.OnActivated(e); - if (Owner != null) - Location = new Point(Owner.Left + Owner.Width / 2 - Width / 2, Owner.Top + Owner.Height / 2 - Height / 2); - } - - private void DlgPrintProcedure_FormClosed(object sender, FormClosedEventArgs e) - { - _DocVersionConfig.SaveChangesToDocVersionConfig = true; - //_DocVersionConfig.ParentLookup = true; - - ProcedureConfig pc = _MyProcedure.MyConfig as ProcedureConfig; - if (SelectedSlave > 0) pc.SelectedSlave = 0; - } + private bool _Initializing = false; private void btnPdfLocation_Click(object sender, EventArgs e) { DlgBrowseFolder.SelectedPath = PDFPath; DialogResult drslt = DlgBrowseFolder.ShowDialog(); - if (drslt == DialogResult.OK) { txbPDFLocation.Text = DlgBrowseFolder.SelectedPath; @@ -1400,7 +1131,6 @@ namespace VEPROMS ppTxbxChangeBarUserMsgOne.Enabled = enabled; ppTxbxChangeBarUserMsgTwo.Enabled = enabled; } - private void cbxOvrrideDefChgBars_CheckStateChanged(object sender, EventArgs e) { SetCustomControls(cbxOvrrideDefChgBars.Checked); @@ -1425,7 +1155,6 @@ namespace VEPROMS if (_Initializing) return; ppGpbxUserSpecTxt.Enabled = ppCmbxChgBarTxtType.SelectedIndex == (int)PrintChangeBarText.UserDef; } - private void txbRevDate_Enter(object sender, EventArgs e) { txbDate = txbRevDate; @@ -1455,6 +1184,7 @@ namespace VEPROMS itm.MyContent.Config = MyProcedure.MyConfig.ToString(); itm.Save(); } + } private void txbReviewDate_Leave(object sender, EventArgs e) @@ -1472,8 +1202,8 @@ namespace VEPROMS itm.Save(); // need to reset config to !dirty? } - } + } private void txbReviewDate_Enter(object sender, EventArgs e) { txbDate = txbReviewDate; @@ -1484,12 +1214,14 @@ namespace VEPROMS calDateSelector.DisplayMonth = calDateSelector.SelectedDate = initSelDate; } + private TextBox txbDate = null; private void calDateSelector_DateSelected(object sender, DateRangeEventArgs e) { if (txbDate != null) txbDate.Text = e.Start.ToShortDateString(); } + string _NewRevForAllProcs = null; private void txbRevNum_Leave(object sender, EventArgs e) { if (_Initializing) return; @@ -1528,22 +1260,20 @@ namespace VEPROMS } private void expPrnSetting_ExpandedChanging(object sender, DevComponents.DotNetBar.ExpandedChangeEventArgs e) - { - if (expPrnSetting.Expanded) - { - this.Size = new Size(this.Size.Width - (expPrnSetting.Size.Width - expPrnSetting.TitlePanel.Size.Height), this.Size.Height); - } + { + if (expPrnSetting.Expanded) + //this.Size = new Size(this.Size.Width+(expPrnSetting.Size.Width-expPrnSetting.TitlePanel.Size.Height), this.Size.Height); + //else + this.Size = new Size(this.Size.Width-(expPrnSetting.Size.Width-expPrnSetting.TitlePanel.Size.Height), this.Size.Height); + //Refresh(); + } private void swtbtnPDFdtPrefixSuffix_ValueChanged(object sender, EventArgs e) { if (swtbtnPDFdtPrefixSuffix.Value) swtbtnPDFLinks.Value = false; - - // C2018-033 add switch to use Prefix and Suffix on PDF file name - if (_AllProcedures) - _DateTimePrefixSuffixPrintingAllProcedures = swtbtnPDFdtPrefixSuffix.Value; - + if (_AllProcedures) _DateTimePrefixSuffixPrintingAllProcedures = swtbtnPDFdtPrefixSuffix.Value; // C2018-033 add switch to use Prefix and Suffix on PDF file name BuildPDFFileName(); } @@ -1551,7 +1281,6 @@ namespace VEPROMS { if (swtbtnPDFLinks.Value) swtbtnPDFdtPrefixSuffix.Value = false; - BuildPDFFileName(); } @@ -1562,6 +1291,39 @@ namespace VEPROMS tbBlankPage.Enabled = swtbtnBlankPgsForDuplex.Value; } + // Merge the pdfs into one pdf file (C2019-012) + private void btnMergePDFs_Click(object sender, EventArgs e) + { + DateTime dtStart = DateTime.Now; + _MergedPfd = new MergedPdf(PDFPath, _DocVersionInfo); + PromsPrinter.MergedLandscapePages = null; // B2019-152: MergedLandscapePages has data set when creating separate pdfs (DoCreatePDF) + 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 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) + { + if (_MergedPfd.MergedPdfs != null && _MergedPfd.MergedPdfs.Count > 0) + { + System.Diagnostics.Process sdp = System.Diagnostics.Process.Start(_MergedPfd.MergedFileName); + if (sdp != null) // B2020-055 if the current .NET version does not recognize the program used to display the PDF, it will return a NULL (ex. Microsoft Edge) + sdp.WaitForInputIdle(); + } + } + else if (VlnSettings.DebugMode) + { + FlexibleMessageBox.Show(string.Format("{0} Minutes to Print and Merge Procedures" + , TimeSpan.FromTicks(DateTime.Now.Ticks - dtStart.Ticks).TotalMinutes), + "Printing Duration", MessageBoxButtons.OK, MessageBoxIcon.Information); + } + else // Production or Demo mode + { + FlexibleMessageBox.Show("Completed Successfully", "Print All and Merge Procedures", MessageBoxButtons.OK, MessageBoxIcon.Information); + } + this.Close(); + } + private void cbxAssignRevToAllMergedPrcs_CheckedChanged(object sender, EventArgs e) { txbRevNum.Enabled = cbxAssignRevToAllMergedPrcs.Checked; @@ -1571,6 +1333,9 @@ namespace VEPROMS _NewRevForAllProcs = null; } - #endregion + //private void cbxDebug_CheckedChanged(object sender, EventArgs e) + //{ + // cbxCmpPRMSpfd.Visible = cbxDebug.Checked; + //} } }