/* GTK - The GIMP Toolkit * gtkprintbackend.h: Abstract printer backend interfaces * Copyright (C) 2006, Red Hat, Inc. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the * Free Software Foundation, Inc., 59 Temple Place - Suite 330, * Boston, MA 02111-1307, USA. */ #ifndef __GTK_PRINT_BACKEND_H__ #define __GTK_PRINT_BACKEND_H__ /* This is a "semi-private" header; it is meant only for * alternate GtkPrintDialog backend modules; no stability guarantees * are made at this point */ #ifndef GTK_PRINT_BACKEND_ENABLE_UNSUPPORTED #error "GtkPrintBackend is not supported API for general use" #endif #include #include #include "gtkprinter-private.h" #include "gtkprintsettings.h" #include "gtkprinteroption.h" #include "gtkprintjob.h" G_BEGIN_DECLS typedef struct _GtkPrintBackendClass GtkPrintBackendClass; typedef struct _GtkPrintBackendPrivate GtkPrintBackendPrivate; #define GTK_PRINT_BACKEND_ERROR (gtk_print_backend_error_quark ()) typedef enum { /* TODO: add specific errors */ GTK_PRINT_BACKEND_ERROR_GENERIC } GtkPrintBackendError; GQuark gtk_print_backend_error_quark (void); #define GTK_TYPE_PRINT_BACKEND (gtk_print_backend_get_type ()) #define GTK_PRINT_BACKEND(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GTK_TYPE_PRINT_BACKEND, GtkPrintBackend)) #define GTK_PRINT_BACKEND_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GTK_TYPE_PRINT_BACKEND, GtkPrintBackendClass)) #define GTK_IS_PRINT_BACKEND(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GTK_TYPE_PRINT_BACKEND)) #define GTK_IS_PRINT_BACKEND_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GTK_TYPE_PRINT_BACKEND)) #define GTK_PRINT_BACKEND_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GTK_TYPE_PRINT_BACKEND, GtkPrintBackendClass)) struct _GtkPrintBackend { GObject parent_instance; GtkPrintBackendPrivate *priv; }; struct _GtkPrintBackendClass { GObjectClass parent_class; /* Global backend methods: */ void (*request_printer_list) (GtkPrintBackend *backend); void (*print_stream) (GtkPrintBackend *backend, GtkPrintJob *job, gint data_fd, GtkPrintJobCompleteFunc callback, gpointer user_data, GDestroyNotify dnotify); /* Printer methods: */ void (*printer_request_details) (GtkPrinter *printer); cairo_surface_t * (*printer_create_cairo_surface) (GtkPrinter *printer, gdouble height, gdouble width, gint cache_fd); GtkPrinterOptionSet * (*printer_get_options) (GtkPrinter *printer, GtkPrintSettings *settings, GtkPageSetup *page_setup); gboolean (*printer_mark_conflicts) (GtkPrinter *printer, GtkPrinterOptionSet *options); void (*printer_get_settings_from_options) (GtkPrinter *printer, GtkPrinterOptionSet *options, GtkPrintSettings *settings); void (*printer_prepare_for_print) (GtkPrinter *printer, GtkPrintJob *print_job, GtkPrintSettings *settings, GtkPageSetup *page_setup); GList * (*printer_list_papers) (GtkPrinter *printer); void (*printer_get_hard_margins) (GtkPrinter *printer, double *top, double *bottom, double *left, double *right); /* Signals */ void (*printer_list_changed) (GtkPrintBackend *backend); void (*printer_list_done) (GtkPrintBackend *backend); void (*printer_added) (GtkPrintBackend *backend, GtkPrinter *printer); void (*printer_removed) (GtkPrintBackend *backend, GtkPrinter *printer); void (*printer_status_changed) (GtkPrintBackend *backend, GtkPrinter *printer); /* Padding for future expansion */ void (*_gtk_reserved1) (void); void (*_gtk_reserved2) (void); void (*_gtk_reserved3) (void); void (*_gtk_reserved4) (void); void (*_gtk_reserved5) (void); void (*_gtk_reserved6) (void); void (*_gtk_reserved7) (void); }; GType gtk_print_backend_get_type (void) G_GNUC_CONST; GList *gtk_print_backend_get_printer_list (GtkPrintBackend *print_backend); gboolean gtk_print_backend_printer_list_is_done (GtkPrintBackend *print_backend); GtkPrinter *gtk_print_backend_find_printer (GtkPrintBackend *print_backend, const gchar *printer_name); void gtk_print_backend_print_stream (GtkPrintBackend *print_backend, GtkPrintJob *job, gint data_fd, GtkPrintJobCompleteFunc callback, gpointer user_data, GDestroyNotify dnotify); GList * gtk_print_backend_load_modules (void); void gtk_print_backend_unref_at_idle (GtkPrintBackend *print_backend); void gtk_print_backend_destroy (GtkPrintBackend *print_backend); /* Backend-only functions for GtkPrintBackend */ void gtk_print_backend_add_printer (GtkPrintBackend *print_backend, GtkPrinter *printer); void gtk_print_backend_remove_printer (GtkPrintBackend *print_backend, GtkPrinter *printer); void gtk_print_backend_set_list_done (GtkPrintBackend *backend); /* Backend-only functions for GtkPrinter */ GtkPrinter *gtk_printer_new (const char *name, GtkPrintBackend *backend, gboolean is_virtual); gboolean gtk_printer_is_new (GtkPrinter *printer); void gtk_printer_set_is_new (GtkPrinter *printer, gboolean val); void gtk_printer_set_is_active (GtkPrinter *printer, gboolean val); void gtk_printer_set_has_details (GtkPrinter *printer, gboolean val); void gtk_printer_set_is_default (GtkPrinter *printer, gboolean val); void gtk_printer_set_icon_name (GtkPrinter *printer, const gchar *icon); gboolean gtk_printer_set_job_count (GtkPrinter *printer, gint count); gboolean gtk_printer_set_location (GtkPrinter *printer, const gchar *location); gboolean gtk_printer_set_description (GtkPrinter *printer, const gchar *description); gboolean gtk_printer_set_state_message (GtkPrinter *printer, const gchar *message); void gtk_printer_set_is_active (GtkPrinter *printer, gboolean active); G_END_DECLS #endif /* __GTK_PRINT_BACKEND_H__ */