GlobalAccessSoftware icon

MyPrintThis.cs

GlobalAccessSoftware | PRO | 04/26/19 09:28:04 AM UTC | 0 ⭐ | 705 👁️ | Never ⏰ | []
C# |

6.52 KB

|

None

|

0 👍

/

0 👎

 
 
#region Top Part
//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\
// PrintThis.cs 13-Apr-18 v3.2.4.47
//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\
// Run This as a Separate Form.
//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\
// Brought to PrintBlaster NameSpace
// v2.3.7.28 21-Jan-2018 (Beginning)
//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\
// v2.5.9.31 09-Feb-2018 Isolated &
// Ready for Further Development!
// v3.2.3.47 06-Apr-018 ^ Beginning
// Split out to Separate Form also.
// v3.2.4.47 09 Near Total Concept!
// ReDesigned App + ReWritten Class.
// v4.3.5.50 Brought Data Mechanism.
// Obsoletes mmf2 and mmf3 stuff.
// (c) John P. Edwards 20-May-2018
// v4.5.6.54 name & optional no-path
// v4.8.0.76 09/30 MCT.SaveList mods.
// v4.9.5.95 23-Dec-2018 Coding it.
// v4.9.5.96 31-Dec Rev: simplifies greatly.
// v4.9.5.98 12-Jan-2019 Moved to Project.
// v5.0.5.98 12-Jan-2019 Integrate to Beta.
// v5.0.5.99 15-Jan-2019 MCPL Design change.
// v5.0.6.00 21-Feb MCPL Integrate & Test.
// v5.0.6.01 22-Feb-2019 Dialing it all in Now!
// v5.0.6.01 02-Mar-2019 Fixedwell w/MPP Menu
// items calling back across, etc.
// v5.0.6.02 08-Mar-2019 Batch Stuff & Debug
// v5.0.6.03 14-Mar-2019 ReSetPages Call.
// v5.1.6.05 01-Apr-2019 Solidification.
// v5.1.6.06 10-Apr-2019 Highly Polished.
// v5.1.6.07 17-Apr Evolved to Perfection!
// v5.1.6.08 22-Apr Final Tested Well.
//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\
 
using System;
using System.Collections.Generic;
using System.Drawing.Printing;
using System.IO;
using System.Threading;
using System.Windows.Forms;
 
using MCC = MyCustomControls.CustomControl;
using MCT = MyCustomLibrary.MyToolbox;
using MPC = MyCustomPrintLibrary.MyPrintClass;
using MPE = MyCustomPrintLibrary.MyPrintEvent;
 
using MPR = MyCustomPrintLibrary
  .Properties.Resources;
 
 
namespace MyCustomPrintLibrary
{
  public static class MyPrintThis
  {
    private static bool Batch
    { get; set; }
 
    private static readonly Mutex
      Mutex1 = new Mutex(
        false, "PrintThisMutex1");
 
    private static readonly Mutex
      Mutex2 = new Mutex(
        false, "PrintThisMutex2");
 
    public static void
      PrintThis(object vars)
    {
      var args = vars as string[];
      if (args == null
        || args.Length < 3) return;
      Mutex1.WaitOne();
      Batch = false;
      if (args.Length < 4)
      {
        var f = args[2];
        if (MPC.IsFile(f)) PrintFile(f);
        else PrintSelection(f);
      }
      else PrintBatch(args);
      Mutex1.ReleaseMutex();
    }
#endregion Top Part
    //\\//\\//\\//\\//\\//\\//\\//\\//\\//\\
 
 
#region Active Form
    
    /* * General Parms Doc: * *
     * --------------------------------------
     * Args[0] = App FullPath;
     * Args[1] = Sender/Who;
     * Args[2] = Selection or FileName;
     * Args[n] = Additional Files if a Batch;
     * --------------------------------------
     */
 
    private static void
      PrintBatch(IList<string> args)
    {
      if (args == null
        || args.Count < 3) return;
      Batch = true;
      for (var i = 2; i < args.Count; ++i)
        PrintFile(args[i]);
    }
 
    private static void
      PrintFile(string file)
    {
      Mutex2.WaitOne();
      if (string.IsNullOrEmpty(file)
        || !File.Exists(file)) return;
      PrintSelection(file);
      Mutex2.ReleaseMutex();
    }
 
    private static void
      PrintSelection(string file)
    {
      using (var d = GetPrintDialog(file))
      {
        if (!d.ShowDialog().Equals( // <-==
          DialogResult.OK)) return;
        MPC.PrintSet = d.PrinterSettings;
        Thread.Sleep(420);
        if (MPC.QuitCode.Equals(00))
          d.Document.Print();
      }
    }
#endregion Active Form
    //\\//\\//\\//\\//\\//\\//\\//\\//\\//\\
    
    
#region Get Print Dialog
 
    /* MyCustomControls Legend:
     ****************************
     * O1 = MyOpenDialog;
     * R1 = MyRichTextBox;
     * P1 = MyPrintDialog;
     * P2 = MyPreviewControl;
     * P3 = MyPreviewDialog;
     * D1 = MyPrintDoc;
     * P4 = MyPageSetup;
     * M1 = MyPreviewMenuStrip;
     * M2 = MyColorDialog;
     * F0 = MyFontDialog;
     * S1 = MySaveDialog;
     ****************************
    */
    
    /* --------------------------*/
    // PreSet Defaults Are:
    // --------------------------
    // d.AllowPrintToFile =
    // d.AllowCurrentPage =
    // d.UseEXDialog      = false;
    // --------------------------
    // d.AllowSelection   =
    //   d.AllowSomePages =
    //   d.ShowNetwork    =
    //   d.ShowHelp       = true;
    // --------------------------
    // Some changes occur in code
    // below: See MyCustomControls
    // .Designer, Source, & ResX.
    /* --------------------------*/
    private static PrintDialog
      GetPrintDialog(string file)
    {
      PrintDialog d;
      using (var cc = new MCC())
      { d = cc.P1; }
      // ^ w/PreSet default Properties
      if (MPC.MyPrintDoc!= null)
        d.Document = MPC.MyPrintDoc;
      if (Batch) SetSettings(ref d, false);
      if (string.IsNullOrEmpty(file)) throw
        new ArgumentException(MPR.Err1);
      if (MPC.IsFile(file))
        FileSettings(file, ref d);
      else SelectionSettings(file, ref d);
      d.HelpRequest +=
        MCT.PrintHelpEventHandler;
      return d;
    }
 
    private static void FileSettings(
      string file, ref PrintDialog d)
    {
      if (d.Document.PrinterSettings
        .PrintRange.Equals(
          PrintRange.Selection))
        SetSettings(ref d, true);
      else d.AllowSelection = false;
      d.Document.DocumentName =
        Path.GetFileName(
      d.Document.PrinterSettings
        .PrintFileName = file);
      MPC.GetContent(file);
    }
 
    private static void SelectionSettings(
      string file, ref PrintDialog d)
    {
      d.AllowCurrentPage =
        d.AllowSomePages = false;
      d.AllowSelection   = true;
      d.Document.PrinterSettings.PrintRange
        = d.PrinterSettings.PrintRange =
          PrintRange.Selection;
      MPE.DocContents = file;
    }
 
    private static void SetSettings(
      ref PrintDialog d, bool b)
    {
      d.Document
       .PrinterSettings.PrintRange =
      d.PrinterSettings.PrintRange =
        PrintRange.AllPages;
      MPC.PrintSet = d.PrinterSettings;
      d.AllowSelection = false;
      d.AllowSomePages =
      d.AllowCurrentPage = b;
    }
#endregion Get Print Dialog
    //\\//\\//\\//\\//\\//\\//\\//\\//\\//\\
 
 
  }
}

Comments

  •  icon
    01/01/70 12:00:00 AM UTC
    Plain Text |

    0 B

    |

    👍

    /

    👎