gtkprintbackend.h 7.88 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
/* 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 <glib-object.h>
#include <cairo.h>

#include "gtkprintsettings.h"
36
#include "gtkprinteroptionset.h"
37 38 39 40
#include "gtkprintjob.h"

G_BEGIN_DECLS

Alexander Larsson's avatar
Alexander Larsson committed
41 42
typedef struct _GtkPrintBackendClass    GtkPrintBackendClass;
typedef struct _GtkPrintBackendPrivate  GtkPrintBackendPrivate;
43 44 45 46 47 48 49 50 51 52 53

#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);

Alexander Larsson's avatar
Alexander Larsson committed
54 55 56 57 58 59
#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))
60

Alexander Larsson's avatar
Alexander Larsson committed
61
struct _GtkPrintBackend
62
{
Alexander Larsson's avatar
Alexander Larsson committed
63
  GObject parent_instance;
64

Alexander Larsson's avatar
Alexander Larsson committed
65 66
  GtkPrintBackendPrivate *priv;
};
67

Alexander Larsson's avatar
Alexander Larsson committed
68 69 70 71 72
struct _GtkPrintBackendClass
{
  GObjectClass parent_class;

  /* Global backend methods: */
73 74 75
  void                   (*request_printer_list)            (GtkPrintBackend        *backend);
  void                   (*print_stream)                    (GtkPrintBackend        *backend,
							     GtkPrintJob            *job,
76
							     GIOChannel             *data_io,
77 78
							     GtkPrintJobCompleteFunc callback,
							     gpointer                user_data,
79
							     GDestroyNotify          dnotify);
80 81

  /* Printer methods: */
82 83 84 85 86
  void                  (*printer_request_details)           (GtkPrinter          *printer);
  cairo_surface_t *     (*printer_create_cairo_surface)      (GtkPrinter          *printer,
							      GtkPrintSettings    *settings,
							      gdouble              height,
							      gdouble              width,
87
							      GIOChannel          *cache_io);
88 89
  GtkPrinterOptionSet * (*printer_get_options)               (GtkPrinter          *printer,
							      GtkPrintSettings    *settings,
90 91
							      GtkPageSetup        *page_setup,
							      GtkPrintCapabilities capabilities);
92
  gboolean              (*printer_mark_conflicts)            (GtkPrinter          *printer,
93
							      GtkPrinterOptionSet *options);
94
  void                  (*printer_get_settings_from_options) (GtkPrinter          *printer,
95
							      GtkPrinterOptionSet *options,
96 97 98 99 100 101 102 103 104 105 106 107
							      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);
  GtkPrintCapabilities  (*printer_get_capabilities)          (GtkPrinter          *printer);
108

Alexander Larsson's avatar
Alexander Larsson committed
109
  /* Signals */
110 111 112 113 114 115 116 117
  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);
Alexander Larsson's avatar
Alexander Larsson committed
118 119 120 121 122 123 124 125 126

  /* 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);
127 128 129 130
};

GType   gtk_print_backend_get_type       (void) G_GNUC_CONST;

Alexander Larsson's avatar
Alexander Larsson committed
131 132 133 134 135 136
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,
137
						    GIOChannel              *data_io,
Alexander Larsson's avatar
Alexander Larsson committed
138 139
						    GtkPrintJobCompleteFunc  callback,
						    gpointer                 user_data,
140
						    GDestroyNotify           dnotify);
Alexander Larsson's avatar
Alexander Larsson committed
141 142 143 144 145 146 147 148 149 150
GList *     gtk_print_backend_load_modules         (void);
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);
151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167


/* 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,
168
					   const gchar     *icon);
169
gboolean    gtk_printer_set_job_count     (GtkPrinter      *printer,
170
					   gint             count);
171
gboolean    gtk_printer_set_location      (GtkPrinter      *printer,
172
					   const gchar     *location);
173
gboolean    gtk_printer_set_description   (GtkPrinter      *printer,
174
					   const gchar     *description);
175
gboolean    gtk_printer_set_state_message (GtkPrinter      *printer,
176
					   const gchar     *message);
177 178 179 180 181 182 183
void        gtk_printer_set_is_active     (GtkPrinter      *printer,
					   gboolean         active);


G_END_DECLS

#endif /* __GTK_PRINT_BACKEND_H__ */