diff --git a/ShareX.HelpersLib/Printer/PrintHelper.cs b/ShareX.HelpersLib/Printer/PrintHelper.cs index 9c4e0c49b..87c48b6b9 100644 --- a/ShareX.HelpersLib/Printer/PrintHelper.cs +++ b/ShareX.HelpersLib/Printer/PrintHelper.cs @@ -94,6 +94,25 @@ public void ShowPreview() } } + public void TryDefaultPrinterOverride() + { + string windowsDefault = printDocument.PrinterSettings.PrinterName; + if (Settings.DefaultPrinterOverride.Length > 0) + { + printDocument.PrinterSettings.PrinterName = Settings.DefaultPrinterOverride; + } + if (!printDocument.PrinterSettings.IsValid) + { + printDocument.PrinterSettings.PrinterName = windowsDefault; + using (MyMessageBox msgbox = new MyMessageBox("Printer \'" + Settings.DefaultPrinterOverride + "\' does not exist. Continuing with windows default printer, you can set the default printer override in application settings", + "Specified Printer not Valid", + MessageBoxButtons.OK)) + { + msgbox.ShowDialog(); + } + } + } + public bool Print() { if (Printable && (!Settings.ShowPrintDialog || printDialog.ShowDialog() == DialogResult.OK)) @@ -102,7 +121,7 @@ public bool Print() { printTextHelper.Font = Settings.TextFont; } - + TryDefaultPrinterOverride(); printDocument.Print(); return true; } diff --git a/ShareX.HelpersLib/Printer/PrintSettings.cs b/ShareX.HelpersLib/Printer/PrintSettings.cs index d5f5764cc..aa10c7268 100644 --- a/ShareX.HelpersLib/Printer/PrintSettings.cs +++ b/ShareX.HelpersLib/Printer/PrintSettings.cs @@ -38,6 +38,8 @@ public class PrintSettings public XmlFont TextFont { get; set; } public bool ShowPrintDialog { get; set; } + public string DefaultPrinterOverride { get; set; } + public PrintSettings() { Margin = 5; @@ -47,6 +49,7 @@ public PrintSettings() CenterImage = false; TextFont = new XmlFont("Arial", 10); ShowPrintDialog = true; + DefaultPrinterOverride = ""; } } } \ No newline at end of file diff --git a/ShareX/Forms/ApplicationSettingsForm.Designer.cs b/ShareX/Forms/ApplicationSettingsForm.Designer.cs index 5ba28e456..9c8a8378a 100644 --- a/ShareX/Forms/ApplicationSettingsForm.Designer.cs +++ b/ShareX/Forms/ApplicationSettingsForm.Designer.cs @@ -142,6 +142,8 @@ private void InitializeComponent() this.cbRecentTasksShowInMainWindow = new System.Windows.Forms.CheckBox(); this.cbRecentTasksSave = new System.Windows.Forms.CheckBox(); this.tpPrint = new System.Windows.Forms.TabPage(); + this.lblDefaultPrinterOverride = new System.Windows.Forms.Label(); + this.txtDefaultPrinterOverride = new System.Windows.Forms.TextBox(); this.cbPrintDontShowWindowsDialog = new System.Windows.Forms.CheckBox(); this.cbDontShowPrintSettingDialog = new System.Windows.Forms.CheckBox(); this.btnShowImagePrintSettings = new System.Windows.Forms.Button(); @@ -322,6 +324,7 @@ private void InitializeComponent() // // cmsLanguages // + this.cmsLanguages.ImageScalingSize = new System.Drawing.Size(20, 20); this.cmsLanguages.Name = "cmsLanguages"; resources.ApplyResources(this.cmsLanguages, "cmsLanguages"); // @@ -904,6 +907,10 @@ private void InitializeComponent() this.lvSecondaryFileUploaders.View = System.Windows.Forms.View.Details; this.lvSecondaryFileUploaders.MouseUp += new System.Windows.Forms.MouseEventHandler(this.lvSecondaryUploaders_MouseUp); // + // chSecondaryFileUploaders + // + resources.ApplyResources(this.chSecondaryFileUploaders, "chSecondaryFileUploaders"); + // // gbSecondaryImageUploaders // this.gbSecondaryImageUploaders.Controls.Add(this.lvSecondaryImageUploaders); @@ -929,6 +936,10 @@ private void InitializeComponent() this.lvSecondaryImageUploaders.View = System.Windows.Forms.View.Details; this.lvSecondaryImageUploaders.MouseUp += new System.Windows.Forms.MouseEventHandler(this.lvSecondaryUploaders_MouseUp); // + // chSecondaryImageUploaders + // + resources.ApplyResources(this.chSecondaryImageUploaders, "chSecondaryImageUploaders"); + // // gbSecondaryTextUploaders // this.gbSecondaryTextUploaders.Controls.Add(this.lvSecondaryTextUploaders); @@ -954,6 +965,10 @@ private void InitializeComponent() this.lvSecondaryTextUploaders.View = System.Windows.Forms.View.Details; this.lvSecondaryTextUploaders.MouseUp += new System.Windows.Forms.MouseEventHandler(this.lvSecondaryUploaders_MouseUp); // + // chSecondaryTextUploaders + // + resources.ApplyResources(this.chSecondaryTextUploaders, "chSecondaryTextUploaders"); + // // cbUseSecondaryUploaders // resources.ApplyResources(this.cbUseSecondaryUploaders, "cbUseSecondaryUploaders"); @@ -1071,12 +1086,25 @@ private void InitializeComponent() // tpPrint // this.tpPrint.BackColor = System.Drawing.SystemColors.Window; + this.tpPrint.Controls.Add(this.lblDefaultPrinterOverride); + this.tpPrint.Controls.Add(this.txtDefaultPrinterOverride); this.tpPrint.Controls.Add(this.cbPrintDontShowWindowsDialog); this.tpPrint.Controls.Add(this.cbDontShowPrintSettingDialog); this.tpPrint.Controls.Add(this.btnShowImagePrintSettings); resources.ApplyResources(this.tpPrint, "tpPrint"); this.tpPrint.Name = "tpPrint"; // + // lblDefaultPrinterOverride + // + resources.ApplyResources(this.lblDefaultPrinterOverride, "lblDefaultPrinterOverride"); + this.lblDefaultPrinterOverride.Name = "lblDefaultPrinterOverride"; + // + // txtDefaultPrinterOverride + // + resources.ApplyResources(this.txtDefaultPrinterOverride, "txtDefaultPrinterOverride"); + this.txtDefaultPrinterOverride.Name = "txtDefaultPrinterOverride"; + this.txtDefaultPrinterOverride.TextChanged += new System.EventHandler(this.txtDefaultPrinterOverride_TextChanged); + // // cbPrintDontShowWindowsDialog // resources.ApplyResources(this.cbPrintDontShowWindowsDialog, "cbPrintDontShowWindowsDialog"); @@ -1395,5 +1423,7 @@ private void InitializeComponent() private System.Windows.Forms.NumericUpDown nudCleanupKeepFileCount; private System.Windows.Forms.Label lblCleanupKeepFileCount; private System.Windows.Forms.CheckBox cbAutomaticallyCleanupLogFiles; + private System.Windows.Forms.Label lblDefaultPrinterOverride; + private System.Windows.Forms.TextBox txtDefaultPrinterOverride; } } \ No newline at end of file diff --git a/ShareX/Forms/ApplicationSettingsForm.cs b/ShareX/Forms/ApplicationSettingsForm.cs index fc74d2287..f037ed3d2 100644 --- a/ShareX/Forms/ApplicationSettingsForm.cs +++ b/ShareX/Forms/ApplicationSettingsForm.cs @@ -219,6 +219,8 @@ private void UpdateControls() // Print cbDontShowPrintSettingDialog.Checked = Program.Settings.DontShowPrintSettingsDialog; cbPrintDontShowWindowsDialog.Checked = !Program.Settings.PrintSettings.ShowPrintDialog; + txtDefaultPrinterOverride.Text = Program.Settings.PrintSettings.DefaultPrinterOverride; + UpdatePrintControls(); // Advanced pgSettings.SelectedObject = Program.Settings; @@ -994,9 +996,15 @@ private void cbRecentTasksTrayMenuMostRecentFirst_CheckedChanged(object sender, #region Print + private void UpdatePrintControls() + { + txtDefaultPrinterOverride.Enabled = !Program.Settings.PrintSettings.ShowPrintDialog; + } + private void cbDontShowPrintSettingDialog_CheckedChanged(object sender, EventArgs e) { Program.Settings.DontShowPrintSettingsDialog = cbDontShowPrintSettingDialog.Checked; + UpdatePrintControls(); } private void btnShowImagePrintSettings_Click(object sender, EventArgs e) @@ -1006,11 +1014,19 @@ private void btnShowImagePrintSettings_Click(object sender, EventArgs e) { printForm.ShowDialog(); } + UpdatePrintControls(); } private void cbPrintDontShowWindowsDialog_CheckedChanged(object sender, EventArgs e) { Program.Settings.PrintSettings.ShowPrintDialog = !cbPrintDontShowWindowsDialog.Checked; + UpdatePrintControls(); + } + + private void txtDefaultPrinterOverride_TextChanged(object sender, EventArgs e) + { + Program.Settings.PrintSettings.DefaultPrinterOverride = txtDefaultPrinterOverride.Text; + UpdatePrintControls(); } #endregion Print diff --git a/ShareX/Forms/ApplicationSettingsForm.resx b/ShareX/Forms/ApplicationSettingsForm.resx index 5f94b6fd5..0c8acd4fd 100644 --- a/ShareX/Forms/ApplicationSettingsForm.resx +++ b/ShareX/Forms/ApplicationSettingsForm.resx @@ -2959,6 +2959,63 @@ 6 + + True + + + NoControl + + + 17, 115 + + + 4, 0, 4, 0 + + + 358, 17 + + + 3 + + + Default Printer Override (uses windows default if empty) + + + lblDefaultPrinterOverride + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tpPrint + + + 0 + + + 21, 135 + + + 4, 4, 4, 4 + + + 509, 22 + + + 4 + + + txtDefaultPrinterOverride + + + System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tpPrint + + + 1 + True