// Copyright (c) 2012 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef PRINTING_PRINT_DIALOG_GTK_INTERFACE_H_ #define PRINTING_PRINT_DIALOG_GTK_INTERFACE_H_ #include "base/strings/string16.h" #include "printing/printing_context_linux.h" #include "ui/gfx/native_widget_types.h" namespace printing { class MetafilePlayer; class PrintSettings; // An interface for GTK printing dialogs. Classes that live outside of // printing/ can implement this interface and get threading requirements // correct without exposing those requirements to printing/. class PrintDialogGtkInterface { public: // Tell the dialog to use the default print setting. virtual void UseDefaultSettings() = 0; // Updates the dialog to use |settings|. Only used when printing without the // system print dialog. E.g. for Print Preview. Returns false on error. virtual bool UpdateSettings(PrintSettings* settings) = 0; // Shows the dialog and handles the response with |callback|. Only used when // printing with the native print dialog. virtual void ShowDialog( gfx::NativeView parent_view, bool has_selection, const PrintingContextLinux::PrintSettingsCallback& callback) = 0; // Prints the document named |document_name| contained in |metafile|. // Called from the print worker thread. Once called, the // PrintDialogGtkInterface instance should not be reused. virtual void PrintDocument(const MetafilePlayer& metafile, const base::string16& document_name) = 0; // Same as AddRef/Release, but with different names since // PrintDialogGtkInterface does not inherit from RefCounted. virtual void AddRefToDialog() = 0; virtual void ReleaseDialog() = 0; protected: virtual ~PrintDialogGtkInterface() {} }; } // namespace printing #endif // PRINTING_PRINT_DIALOG_GTK_INTERFACE_H_