|
@@ -461,33 +461,6 @@ public class WindowInitializer : IPlatformSpecificUpdate
|
|
|
|
|
|
// TODO: Move this initialization to its own dedicated class
|
|
|
|
|
|
- var printerSettings = new PrinterSettings();
|
|
|
-
|
|
|
- // Load installed printers
|
|
|
- vm.PrintPreview.Printers.Value = new List<string>(PrinterSettings.InstalledPrinters);
|
|
|
- vm.PrintPreview.PaperSizes.Value = new List<string>(PrintEngine.GetPaperSizes(printerSettings.PrinterName));
|
|
|
-
|
|
|
-
|
|
|
- // Pre-select default printer settings
|
|
|
- var pageSettings = printerSettings.DefaultPageSettings;
|
|
|
-
|
|
|
- var currentPrintSettings =
|
|
|
- new PrintSettings // TODO: Add print settings to its own config class to remember user preference
|
|
|
- {
|
|
|
- ImagePath = { Value = vm.PicViewer.FileInfo?.Value?.FullName },
|
|
|
- PrinterName = { Value = printerSettings.PrinterName },
|
|
|
- PaperSize = { Value = pageSettings.PaperSize.PaperName },
|
|
|
- ColorMode = { Value = printerSettings.SupportsColor ? (int)ColorModes.Auto : (int)ColorModes.BlackAndWhite },
|
|
|
- Orientation = { Value = pageSettings.Landscape ? (int)Orientations.Landscape : (int)Orientations.Portrait },
|
|
|
- MarginTop = { Value = PrintSettings.HundredthsInchToMm(pageSettings.Margins.Top) },
|
|
|
- MarginBottom = { Value = PrintSettings.HundredthsInchToMm(pageSettings.Margins.Bottom) },
|
|
|
- MarginLeft = { Value = PrintSettings.HundredthsInchToMm(pageSettings.Margins.Left) },
|
|
|
- MarginRight = { Value = PrintSettings.HundredthsInchToMm(pageSettings.Margins.Right) }
|
|
|
- };
|
|
|
-
|
|
|
- vm.PrintPreview.PrintSettings.Value = currentPrintSettings;
|
|
|
- vm.PrintPreview.PreviewImage.Value = vm.PicViewer.ImageSource.CurrentValue;
|
|
|
-
|
|
|
_printPreviewWindow = new PrintPreviewWindow
|
|
|
{
|
|
|
DataContext = vm,
|
|
@@ -507,6 +480,44 @@ public class WindowInitializer : IPlatformSpecificUpdate
|
|
|
|
|
|
_printPreviewWindow.Show(desktop.MainWindow);
|
|
|
_printPreviewWindow.Closing += (_, _) => _printPreviewWindow = null;
|
|
|
+
|
|
|
+ Task.Run(() =>
|
|
|
+ {
|
|
|
+ var printerSettings = new PrinterSettings();
|
|
|
+
|
|
|
+ // Load installed printers
|
|
|
+ vm.PrintPreview.Printers.Value = new List<string>(PrinterSettings.InstalledPrinters);
|
|
|
+ vm.PrintPreview.PaperSizes.Value = new List<string>(PrintEngine.GetPaperSizes(printerSettings.PrinterName));
|
|
|
+
|
|
|
+
|
|
|
+ // Pre-select default printer settings
|
|
|
+ var pageSettings = printerSettings.DefaultPageSettings;
|
|
|
+
|
|
|
+ var currentPrintSettings =
|
|
|
+ new PrintSettings // TODO: Add print settings to its own config class to remember user preference
|
|
|
+ {
|
|
|
+ ImagePath = { Value = vm.PicViewer.FileInfo?.Value?.FullName },
|
|
|
+ PrinterName = { Value = printerSettings.PrinterName },
|
|
|
+ PaperSize = { Value = pageSettings.PaperSize.PaperName },
|
|
|
+ ColorMode = { Value = printerSettings.SupportsColor ? (int)ColorModes.Auto : (int)ColorModes.BlackAndWhite },
|
|
|
+ Orientation = { Value = pageSettings.Landscape ? (int)Orientations.Landscape : (int)Orientations.Portrait },
|
|
|
+ MarginTop = { Value = PrintSettings.HundredthsInchToMm(pageSettings.Margins.Top) },
|
|
|
+ MarginBottom = { Value = PrintSettings.HundredthsInchToMm(pageSettings.Margins.Bottom) },
|
|
|
+ MarginLeft = { Value = PrintSettings.HundredthsInchToMm(pageSettings.Margins.Left) },
|
|
|
+ MarginRight = { Value = PrintSettings.HundredthsInchToMm(pageSettings.Margins.Right) }
|
|
|
+ };
|
|
|
+
|
|
|
+ vm.PrintPreview.PrintSettings.Value = currentPrintSettings;
|
|
|
+
|
|
|
+ // TODO: set a blank image at correct size first, and then update it with real image, to avoid resizing
|
|
|
+ if (vm.PicViewer.FileInfo.Value != null && File.Exists(vm.PicViewer.FileInfo.Value.FullName))
|
|
|
+ {
|
|
|
+ using var fs = File.OpenRead(vm.PicViewer.FileInfo.Value.FullName);
|
|
|
+ vm.PrintPreview.PreviewImage.Value = new System.Drawing.Bitmap(fs);
|
|
|
+ }
|
|
|
+
|
|
|
+ _printPreviewWindow.Initialize();
|
|
|
+ });
|
|
|
}
|
|
|
else
|
|
|
{
|