Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(4863)

Unified Diff: chrome/browser/printing/print_dialog_gtk.h

Issue 6516022: Linux: Refactor printing to be more like Windows/Mac.... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: fix mac build Created 9 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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);
};

Powered by Google App Engine
This is Rietveld 408576698