| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "chrome/browser/printing/print_dialog_gtk.h" | 5 #include "chrome/browser/printing/print_dialog_gtk.h" |
| 6 | 6 |
| 7 #include <gtk/gtkunixprint.h> | 7 #include <gtk/gtkunixprint.h> |
| 8 | 8 |
| 9 #include <string> | 9 #include <string> |
| 10 #include <vector> | 10 #include <vector> |
| (...skipping 148 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 159 | 159 |
| 160 // |gtk_settings_| is a new copy. | 160 // |gtk_settings_| is a new copy. |
| 161 gtk_settings_ = | 161 gtk_settings_ = |
| 162 gtk_print_settings_copy(g_last_used_settings.Get().settings()); | 162 gtk_print_settings_copy(g_last_used_settings.Get().settings()); |
| 163 page_setup_ = gtk_page_setup_new(); | 163 page_setup_ = gtk_page_setup_new(); |
| 164 | 164 |
| 165 PrintSettings settings; | 165 PrintSettings settings; |
| 166 InitPrintSettings(&settings); | 166 InitPrintSettings(&settings); |
| 167 } | 167 } |
| 168 | 168 |
| 169 bool PrintDialogGtk::UpdateSettings(bool target_is_pdf, | 169 bool PrintDialogGtk::UpdateSettings(printing::PrintSettings* settings) { |
| 170 printing::PrintSettings* settings) { | |
| 171 if (!gtk_settings_) { | 170 if (!gtk_settings_) { |
| 172 gtk_settings_ = | 171 gtk_settings_ = |
| 173 gtk_print_settings_copy(g_last_used_settings.Get().settings()); | 172 gtk_print_settings_copy(g_last_used_settings.Get().settings()); |
| 174 } | 173 } |
| 175 | 174 |
| 176 if (!target_is_pdf) { | 175 scoped_ptr<GtkPrinterList> printer_list(new GtkPrinterList); |
| 177 scoped_ptr<GtkPrinterList> printer_list(new GtkPrinterList); | 176 printer_ = printer_list->GetPrinterWithName( |
| 178 printer_ = printer_list->GetPrinterWithName( | 177 UTF16ToUTF8(settings->device_name())); |
| 179 UTF16ToUTF8(settings->device_name())); | 178 if (printer_) { |
| 180 if (printer_) { | 179 g_object_ref(printer_); |
| 181 g_object_ref(printer_); | 180 gtk_print_settings_set_printer(gtk_settings_, |
| 182 gtk_print_settings_set_printer(gtk_settings_, | 181 gtk_printer_get_name(printer_)); |
| 183 gtk_printer_get_name(printer_)); | 182 if (!page_setup_) { |
| 184 if (!page_setup_) { | 183 page_setup_ = gtk_printer_get_default_page_size(printer_); |
| 185 page_setup_ = gtk_printer_get_default_page_size(printer_); | |
| 186 } | |
| 187 } | 184 } |
| 185 } |
| 188 | 186 |
| 189 gtk_print_settings_set_n_copies(gtk_settings_, settings->copies()); | 187 gtk_print_settings_set_n_copies(gtk_settings_, settings->copies()); |
| 190 gtk_print_settings_set_collate(gtk_settings_, settings->collate()); | 188 gtk_print_settings_set_collate(gtk_settings_, settings->collate()); |
| 191 | 189 |
| 192 #if defined(USE_CUPS) | 190 #if defined(USE_CUPS) |
| 193 std::string color_value; | 191 std::string color_value; |
| 194 std::string color_setting_name; | 192 std::string color_setting_name; |
| 195 printing::GetColorModelForMode(settings->color(), &color_setting_name, | 193 printing::GetColorModelForMode(settings->color(), &color_setting_name, |
| 196 &color_value); | 194 &color_value); |
| 197 gtk_print_settings_set(gtk_settings_, color_setting_name.c_str(), | 195 gtk_print_settings_set(gtk_settings_, color_setting_name.c_str(), |
| 198 color_value.c_str()); | 196 color_value.c_str()); |
| 199 | 197 |
| 200 if (settings->duplex_mode() != printing::UNKNOWN_DUPLEX_MODE) { | 198 if (settings->duplex_mode() != printing::UNKNOWN_DUPLEX_MODE) { |
| 201 const char* cups_duplex_mode = NULL; | 199 const char* cups_duplex_mode = NULL; |
| 202 switch (settings->duplex_mode()) { | 200 switch (settings->duplex_mode()) { |
| 203 case printing::LONG_EDGE: | 201 case printing::LONG_EDGE: |
| 204 cups_duplex_mode = kDuplexNoTumble; | 202 cups_duplex_mode = kDuplexNoTumble; |
| 205 break; | 203 break; |
| 206 case printing::SHORT_EDGE: | 204 case printing::SHORT_EDGE: |
| 207 cups_duplex_mode = kDuplexTumble; | 205 cups_duplex_mode = kDuplexTumble; |
| 208 break; | 206 break; |
| 209 case printing::SIMPLEX: | 207 case printing::SIMPLEX: |
| 210 cups_duplex_mode = kDuplexNone; | 208 cups_duplex_mode = kDuplexNone; |
| 211 break; | 209 break; |
| 212 default: // UNKNOWN_DUPLEX_MODE | 210 default: // UNKNOWN_DUPLEX_MODE |
| 213 NOTREACHED(); | 211 NOTREACHED(); |
| 214 break; | 212 break; |
| 215 } | |
| 216 gtk_print_settings_set(gtk_settings_, kCUPSDuplex, cups_duplex_mode); | |
| 217 } | 213 } |
| 214 gtk_print_settings_set(gtk_settings_, kCUPSDuplex, cups_duplex_mode); |
| 215 } |
| 218 #endif | 216 #endif |
| 219 } | |
| 220 if (!page_setup_) | 217 if (!page_setup_) |
| 221 page_setup_ = gtk_page_setup_new(); | 218 page_setup_ = gtk_page_setup_new(); |
| 222 | 219 |
| 223 gtk_print_settings_set_orientation( | 220 gtk_print_settings_set_orientation( |
| 224 gtk_settings_, | 221 gtk_settings_, |
| 225 settings->landscape() ? GTK_PAGE_ORIENTATION_LANDSCAPE : | 222 settings->landscape() ? GTK_PAGE_ORIENTATION_LANDSCAPE : |
| 226 GTK_PAGE_ORIENTATION_PORTRAIT); | 223 GTK_PAGE_ORIENTATION_PORTRAIT); |
| 227 | 224 |
| 228 InitPrintSettings(settings); | 225 InitPrintSettings(settings); |
| 229 return true; | 226 return true; |
| (...skipping 200 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 430 base::FileUtilProxy::StatusCallback()); | 427 base::FileUtilProxy::StatusCallback()); |
| 431 // Printing finished. Matches AddRef() in PrintDocument(); | 428 // Printing finished. Matches AddRef() in PrintDocument(); |
| 432 Release(); | 429 Release(); |
| 433 } | 430 } |
| 434 | 431 |
| 435 void PrintDialogGtk::InitPrintSettings(PrintSettings* settings) { | 432 void PrintDialogGtk::InitPrintSettings(PrintSettings* settings) { |
| 436 printing::PrintSettingsInitializerGtk::InitPrintSettings( | 433 printing::PrintSettingsInitializerGtk::InitPrintSettings( |
| 437 gtk_settings_, page_setup_, settings); | 434 gtk_settings_, page_setup_, settings); |
| 438 context_->InitWithSettings(*settings); | 435 context_->InitWithSettings(*settings); |
| 439 } | 436 } |
| OLD | NEW |