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 3 // found in the LICENSE file. 4 5 #ifndef PRINTING_PRINT_DIALOG_GTK_INTERFACE_H_ 6 #define PRINTING_PRINT_DIALOG_GTK_INTERFACE_H_ 7 8 #include "base/strings/string16.h" 9 #include "printing/printing_context_gtk.h" 10 #include "ui/gfx/native_widget_types.h" 11 12 namespace printing { 13 14 class Metafile; 15 class PrintSettings; 16 17 // An interface for GTK printing dialogs. Classes that live outside of 18 // printing/ can implement this interface and get threading requirements 19 // correct without exposing those requirements to printing/. 20 class PrintDialogGtkInterface { 21 public: 22 // Tell the dialog to use the default print setting. 23 virtual void UseDefaultSettings() = 0; 24 25 // Update the dialog to use |job_settings| and |ranges|, where |job_settings| 26 // is a dictionary of settings with possible keys from 27 // printing/print_job_constants.h. Only used when printing without the system 28 // print dialog. E.g. for Print Preview. Returns false on error. 29 virtual bool UpdateSettings(const base::DictionaryValue& job_settings, 30 const PageRanges& ranges, 31 PrintSettings* settings) = 0; 32 33 // Shows the dialog and handles the response with |callback|. Only used when 34 // printing with the native print dialog. 35 virtual void ShowDialog( 36 gfx::NativeView parent_view, 37 bool has_selection, 38 const PrintingContextGtk::PrintSettingsCallback& callback) = 0; 39 40 // Prints the document named |document_name| contained in |metafile|. 41 // Called from the print worker thread. Once called, the 42 // PrintDialogGtkInterface instance should not be reused. 43 virtual void PrintDocument(const Metafile* metafile, 44 const string16& document_name) = 0; 45 46 // Same as AddRef/Release, but with different names since 47 // PrintDialogGtkInterface does not inherit from RefCounted. 48 virtual void AddRefToDialog() = 0; 49 virtual void ReleaseDialog() = 0; 50 51 protected: 52 virtual ~PrintDialogGtkInterface() {} 53 }; 54 55 } // namespace printing 56 57 #endif // PRINTING_PRINT_DIALOG_GTK_INTERFACE_H_ 58