| Index: chrome/browser/printing/print_dialog_gtk.h
|
| ===================================================================
|
| --- chrome/browser/printing/print_dialog_gtk.h (revision 75320)
|
| +++ chrome/browser/printing/print_dialog_gtk.h (working copy)
|
| @@ -1,4 +1,4 @@
|
| -// Copyright (c) 2009 The Chromium Authors. All rights reserved.
|
| +// Copyright (c) 2011 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.
|
|
|
| @@ -7,41 +7,75 @@
|
| #pragma once
|
|
|
| #include <gtk/gtk.h>
|
| +#include <gtk/gtkprintunixdialog.h>
|
|
|
| -#include "base/basictypes.h"
|
| #include "base/file_path.h"
|
| +#include "base/ref_counted.h"
|
| +#include "printing/native_metafile.h"
|
| +#include "printing/printing_context_cairo.h"
|
| #include "ui/base/gtk/gtk_signal.h"
|
|
|
| -class Browser;
|
| +namespace base {
|
| +class WaitableEvent;
|
| +}
|
|
|
| -typedef struct _GtkPrintJob GtkPrintJob;
|
| +using printing::NativeMetafile;
|
| +using printing::PrintingContextCairo;
|
|
|
| -// Currently this dialog only allows the user to choose a printer.
|
| -class PrintDialogGtk {
|
| +class PrintDialogGtk : public base::RefCountedThreadSafe<PrintDialogGtk> {
|
| public:
|
| - static bool DialogShowing();
|
| + // Creates and returns a print dialog. The dialog will initialize the settings
|
| + // for |context| and call |callback| to inform the print workflow of the
|
| + // dialog results.
|
| + static void* CreatePrintDialog(
|
| + PrintingContextCairo::PrintSettingsCallback* callback,
|
| + PrintingContextCairo* context);
|
|
|
| - // Called on the IO thread.
|
| - static void CreatePrintDialogForPdf(const FilePath& path);
|
| + // Prints a document named |document_name| based on the settings in
|
| + // |print_dialog|, with data from |metafile|.
|
| + // Called from the print worker thread.
|
| + static void PrintDocument(void* print_dialog,
|
| + const NativeMetafile* metafile,
|
| + const string16& document_name);
|
|
|
| private:
|
| - explicit PrintDialogGtk(const FilePath& path_to_pdf);
|
| + friend class base::RefCountedThreadSafe<PrintDialogGtk>;
|
| +
|
| + PrintDialogGtk(PrintingContextCairo::PrintSettingsCallback* callback,
|
| + PrintingContextCairo* context);
|
| ~PrintDialogGtk();
|
|
|
| - static void CreateDialogImpl(const FilePath& path);
|
| -
|
| + // Handles dialog response.
|
| CHROMEGTK_CALLBACK_1(PrintDialogGtk, void, OnResponse, gint);
|
|
|
| + // Saves data in |metafile| to disk for document named |document_name|.
|
| + void SaveDocumentToDisk(const NativeMetafile* metafile,
|
| + const string16& document_name);
|
| +
|
| + // Prints document named |document_name|.
|
| + void SendDocumentToPrinter(const string16& document_name);
|
| +
|
| + // Handles print job response.
|
| static void OnJobCompletedThunk(GtkPrintJob* print_job,
|
| gpointer user_data,
|
| GError* error);
|
| - void OnJobCompleted(GtkPrintJob* job, GError* error);
|
| + void OnJobCompleted(GtkPrintJob* print_job, GError* error);
|
|
|
| - FilePath path_to_pdf_;
|
| + void set_save_document_event(base::WaitableEvent* event);
|
|
|
| + // Printing dialog callback.
|
| + PrintingContextCairo::PrintSettingsCallback* callback_;
|
| + PrintingContextCairo* context_;
|
| +
|
| + // Print dialog settings.
|
| GtkWidget* dialog_;
|
| + GtkPageSetup* page_setup_;
|
| + GtkPrinter* printer_;
|
| + GtkPrintSettings* gtk_settings_;
|
|
|
| - Browser* browser_;
|
| + // Event to signal when save document finishes.
|
| + base::WaitableEvent* save_document_event_;
|
| + FilePath path_to_pdf_;
|
|
|
| DISALLOW_COPY_AND_ASSIGN(PrintDialogGtk);
|
| };
|
|
|