diff options
Diffstat (limited to 'chrome/browser/printing/print_dialog_gtk.cc')
-rw-r--r-- | chrome/browser/printing/print_dialog_gtk.cc | 84 |
1 files changed, 40 insertions, 44 deletions
diff --git a/chrome/browser/printing/print_dialog_gtk.cc b/chrome/browser/printing/print_dialog_gtk.cc index 596ec9d..68354e4 100644 --- a/chrome/browser/printing/print_dialog_gtk.cc +++ b/chrome/browser/printing/print_dialog_gtk.cc @@ -160,60 +160,56 @@ void PrintDialogGtk::UseDefaultSettings() { bool PrintDialogGtk::UpdateSettings(const DictionaryValue& settings, const printing::PageRanges& ranges) { + bool collate; + bool color; + bool landscape; + bool print_to_pdf; + int copies; + int duplex_mode; std::string printer_name; - settings.GetString(printing::kSettingPrinterName, &printer_name); - scoped_ptr<GtkPrinterList> printer_list(new GtkPrinterList); - printer_ = printer_list->GetPrinterWithName(printer_name.c_str()); - if (printer_) { - g_object_ref(printer_); - gtk_print_settings_set_printer(gtk_settings_, - gtk_printer_get_name(printer_)); + if (!settings.GetBoolean(printing::kSettingLandscape, &landscape) || + !settings.GetBoolean(printing::kSettingCollate, &collate) || + !settings.GetBoolean(printing::kSettingColor, &color) || + !settings.GetBoolean(printing::kSettingPrintToPDF, &print_to_pdf) || + !settings.GetInteger(printing::kSettingDuplexMode, &duplex_mode) || + !settings.GetInteger(printing::kSettingCopies, &copies) || + !settings.GetString(printing::kSettingPrinterName, &printer_name)) { + return false; } - bool landscape; - if (!settings.GetBoolean(printing::kSettingLandscape, &landscape)) - return false; + if (!print_to_pdf) { + scoped_ptr<GtkPrinterList> printer_list(new GtkPrinterList); + printer_ = printer_list->GetPrinterWithName(printer_name.c_str()); + if (printer_) { + g_object_ref(printer_); + gtk_print_settings_set_printer(gtk_settings_, + gtk_printer_get_name(printer_)); + } + gtk_print_settings_set_n_copies(gtk_settings_, copies); + gtk_print_settings_set_collate(gtk_settings_, collate); + gtk_print_settings_set(gtk_settings_, kCUPSColorModel, + color ? kColor : kGrayscale); + const char* cups_duplex_mode; + switch (duplex_mode) { + case printing::LONG_EDGE: + cups_duplex_mode = kDuplexNoTumble; + break; + case printing::SHORT_EDGE: + cups_duplex_mode = kDuplexTumble; + break; + default: + cups_duplex_mode = kDuplexNone; + break; + } + gtk_print_settings_set(gtk_settings_, kCUPSDuplex, cups_duplex_mode); + } gtk_print_settings_set_orientation( gtk_settings_, landscape ? GTK_PAGE_ORIENTATION_LANDSCAPE : GTK_PAGE_ORIENTATION_PORTRAIT); - int copies; - if (!settings.GetInteger(printing::kSettingCopies, &copies)) - return false; - gtk_print_settings_set_n_copies(gtk_settings_, copies); - - bool collate; - if (!settings.GetBoolean(printing::kSettingCollate, &collate)) - return false; - gtk_print_settings_set_collate(gtk_settings_, collate); - - bool is_color; - if (!settings.GetBoolean(printing::kSettingColor, &is_color)) - return false; - - gtk_print_settings_set(gtk_settings_, kCUPSColorModel, - is_color ? kColor : kGrayscale); - int mode; - if (!settings.GetInteger(printing::kSettingDuplexMode, &mode)) - return false; - - const char* cups_duplex_mode; - switch (mode) { - case printing::LONG_EDGE: - cups_duplex_mode = kDuplexNoTumble; - break; - case printing::SHORT_EDGE: - cups_duplex_mode = kDuplexTumble; - break; - default: - cups_duplex_mode = kDuplexNone; - break; - } - gtk_print_settings_set(gtk_settings_, kCUPSDuplex, cups_duplex_mode); - InitPrintSettings(ranges); return true; } |