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 |