/// <summary> /// Gets chosen printer and its' settings /// </summary> /// <returns>chosen printer</returns> public Printer GetChosenPrinterWithSettings(bool colored) { if (IsBlockedMode) { return(ChosenPrinter); } // check the selected index if (SelectedPrinterIndex < 0) { return(null); } try { LogHelper.LogDebug(); // get chosen printer Printer PrinterX = null; if (IsTestMode) { PrinterX = demoPrinters.ByColor(colored)[SelectedPrinterIndex]; } else { PrinterX = MainController.Singleton.AvailablePrinters.ByColor(colored)[SelectedPrinterIndex]; } // set chosen printer ChosenPrinter = PrinterX; // check settings if (PrinterX.Settings == null) { // first time settings set // fullfill some important settings values PrinterSettings = new PrinterSettings() { PrinterName = ChosenPrinter.Name, Duplex = PrintDuplex, DefaultPageSettings = { Color = colored } }; // validate settings if (!PrinterSettings.IsValid) { if (!IsTestMode) { throw new NotSupportedException("Wrong printer settings"); } } // set settings PrinterX.Settings = PrinterSettings; } else { // set settings by saved settings set PrinterSettings = PrinterX.Settings; PrinterSettings.Duplex = PrintDuplex; PrinterSettings.DefaultPageSettings.Color = colored; PrinterSettings.Copies = NumberOfCopies; } return(PrinterX); } catch (Exception ex) { WPFNotifier.Error(ex); } return(null); }