]> Pileus Git - ~andy/gtk/blob - gtk/gtkprintbackend.h
45afe7b05750fa060e7bdf7bb20bf7d2d69a2931
[~andy/gtk] / gtk / gtkprintbackend.h
1 /* GTK - The GIMP Toolkit
2  * gtkprintbackend.h: Abstract printer backend interfaces
3  * Copyright (C) 2006, Red Hat, Inc.
4  *
5  * This library is free software; you can redistribute it and/or
6  * modify it under the terms of the GNU Lesser General Public
7  * License as published by the Free Software Foundation; either
8  * version 2 of the License, or (at your option) any later version.
9  *
10  * This library is distributed in the hope that it will be useful,
11  * but WITHOUT ANY WARRANTY; without even the implied warranty of
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
13  * Lesser General Public License for more details.
14  *
15  * You should have received a copy of the GNU Lesser General Public
16  * License along with this library; if not, write to the
17  * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
18  * Boston, MA 02111-1307, USA.
19  */
20
21 #ifndef __GTK_PRINT_BACKEND_H__
22 #define __GTK_PRINT_BACKEND_H__
23
24 /* This is a "semi-private" header; it is meant only for
25  * alternate GtkPrintDialog backend modules; no stability guarantees 
26  * are made at this point
27  */
28 #ifndef GTK_PRINT_BACKEND_ENABLE_UNSUPPORTED
29 #error "GtkPrintBackend is not supported API for general use"
30 #endif
31
32 #include <cairo.h>
33 #include <gtk/gtk.h>
34
35 #include "gtkprinteroptionset.h"
36 #include "gtkprintjob.h"
37
38 G_BEGIN_DECLS
39
40 typedef struct _GtkPrintBackendClass    GtkPrintBackendClass;
41 typedef struct _GtkPrintBackendPrivate  GtkPrintBackendPrivate;
42
43 #define GTK_PRINT_BACKEND_ERROR (gtk_print_backend_error_quark ())
44
45 typedef enum
46 {
47   /* TODO: add specific errors */
48   GTK_PRINT_BACKEND_ERROR_GENERIC
49 } GtkPrintBackendError;
50
51 GQuark     gtk_print_backend_error_quark      (void);
52
53 #define GTK_TYPE_PRINT_BACKEND                  (gtk_print_backend_get_type ())
54 #define GTK_PRINT_BACKEND(obj)                  (G_TYPE_CHECK_INSTANCE_CAST ((obj), GTK_TYPE_PRINT_BACKEND, GtkPrintBackend))
55 #define GTK_PRINT_BACKEND_CLASS(klass)          (G_TYPE_CHECK_CLASS_CAST ((klass), GTK_TYPE_PRINT_BACKEND, GtkPrintBackendClass))
56 #define GTK_IS_PRINT_BACKEND(obj)               (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GTK_TYPE_PRINT_BACKEND))
57 #define GTK_IS_PRINT_BACKEND_CLASS(klass)       (G_TYPE_CHECK_CLASS_TYPE ((klass), GTK_TYPE_PRINT_BACKEND))
58 #define GTK_PRINT_BACKEND_GET_CLASS(obj)        (G_TYPE_INSTANCE_GET_CLASS ((obj), GTK_TYPE_PRINT_BACKEND, GtkPrintBackendClass))
59
60 struct _GtkPrintBackend
61 {
62   GObject parent_instance;
63
64   GtkPrintBackendPrivate *priv;
65 };
66
67 struct _GtkPrintBackendClass
68 {
69   GObjectClass parent_class;
70
71   /* Global backend methods: */
72   void                   (*request_printer_list)            (GtkPrintBackend        *backend);
73   void                   (*print_stream)                    (GtkPrintBackend        *backend,
74                                                              GtkPrintJob            *job,
75                                                              GIOChannel             *data_io,
76                                                              GtkPrintJobCompleteFunc callback,
77                                                              gpointer                user_data,
78                                                              GDestroyNotify          dnotify);
79
80   /* Printer methods: */
81   void                  (*printer_request_details)           (GtkPrinter          *printer);
82   cairo_surface_t *     (*printer_create_cairo_surface)      (GtkPrinter          *printer,
83                                                               GtkPrintSettings    *settings,
84                                                               gdouble              height,
85                                                               gdouble              width,
86                                                               GIOChannel          *cache_io);
87   GtkPrinterOptionSet * (*printer_get_options)               (GtkPrinter          *printer,
88                                                               GtkPrintSettings    *settings,
89                                                               GtkPageSetup        *page_setup,
90                                                               GtkPrintCapabilities capabilities);
91   gboolean              (*printer_mark_conflicts)            (GtkPrinter          *printer,
92                                                               GtkPrinterOptionSet *options);
93   void                  (*printer_get_settings_from_options) (GtkPrinter          *printer,
94                                                               GtkPrinterOptionSet *options,
95                                                               GtkPrintSettings    *settings);
96   void                  (*printer_prepare_for_print)         (GtkPrinter          *printer,
97                                                               GtkPrintJob         *print_job,
98                                                               GtkPrintSettings    *settings,
99                                                               GtkPageSetup        *page_setup);
100   GList  *              (*printer_list_papers)               (GtkPrinter          *printer);
101   GtkPageSetup *        (*printer_get_default_page_size)     (GtkPrinter          *printer);
102   void                  (*printer_get_hard_margins)          (GtkPrinter          *printer,
103                                                               double              *top,
104                                                               double              *bottom,
105                                                               double              *left,
106                                                               double              *right);
107   GtkPrintCapabilities  (*printer_get_capabilities)          (GtkPrinter          *printer);
108
109   /* Signals */
110   void                  (*printer_list_changed)              (GtkPrintBackend     *backend);
111   void                  (*printer_list_done)                 (GtkPrintBackend     *backend);
112   void                  (*printer_added)                     (GtkPrintBackend     *backend,
113                                                               GtkPrinter          *printer);
114   void                  (*printer_removed)                   (GtkPrintBackend     *backend,
115                                                               GtkPrinter          *printer);
116   void                  (*printer_status_changed)            (GtkPrintBackend     *backend,
117                                                               GtkPrinter          *printer);
118
119   /* Padding for future expansion */
120   void (*_gtk_reserved1) (void);
121   void (*_gtk_reserved2) (void);
122   void (*_gtk_reserved3) (void);
123   void (*_gtk_reserved4) (void);
124   void (*_gtk_reserved5) (void);
125   void (*_gtk_reserved6) (void);
126 };
127
128 GType   gtk_print_backend_get_type       (void) G_GNUC_CONST;
129
130 GList      *gtk_print_backend_get_printer_list     (GtkPrintBackend         *print_backend);
131 gboolean    gtk_print_backend_printer_list_is_done (GtkPrintBackend         *print_backend);
132 GtkPrinter *gtk_print_backend_find_printer         (GtkPrintBackend         *print_backend,
133                                                     const gchar             *printer_name);
134 void        gtk_print_backend_print_stream         (GtkPrintBackend         *print_backend,
135                                                     GtkPrintJob             *job,
136                                                     GIOChannel              *data_io,
137                                                     GtkPrintJobCompleteFunc  callback,
138                                                     gpointer                 user_data,
139                                                     GDestroyNotify           dnotify);
140 GList *     gtk_print_backend_load_modules         (void);
141 void        gtk_print_backend_destroy              (GtkPrintBackend         *print_backend);
142
143 /* Backend-only functions for GtkPrintBackend */
144
145 void        gtk_print_backend_add_printer          (GtkPrintBackend         *print_backend,
146                                                     GtkPrinter              *printer);
147 void        gtk_print_backend_remove_printer       (GtkPrintBackend         *print_backend,
148                                                     GtkPrinter              *printer);
149 void        gtk_print_backend_set_list_done        (GtkPrintBackend         *backend);
150
151
152 /* Backend-only functions for GtkPrinter */
153
154 GtkPrinter *gtk_printer_new               (const char      *name,
155                                            GtkPrintBackend *backend,
156                                            gboolean         is_virtual);
157 gboolean    gtk_printer_is_new            (GtkPrinter      *printer);
158 void        gtk_printer_set_is_new        (GtkPrinter      *printer,
159                                            gboolean         val);
160 void        gtk_printer_set_is_active     (GtkPrinter      *printer,
161                                            gboolean         val);
162 void        gtk_printer_set_has_details   (GtkPrinter      *printer,
163                                            gboolean         val);
164 void        gtk_printer_set_is_default    (GtkPrinter      *printer,
165                                            gboolean         val);
166 void        gtk_printer_set_icon_name     (GtkPrinter      *printer,
167                                            const gchar     *icon);
168 gboolean    gtk_printer_set_job_count     (GtkPrinter      *printer,
169                                            gint             count);
170 gboolean    gtk_printer_set_location      (GtkPrinter      *printer,
171                                            const gchar     *location);
172 gboolean    gtk_printer_set_description   (GtkPrinter      *printer,
173                                            const gchar     *description);
174 gboolean    gtk_printer_set_state_message (GtkPrinter      *printer,
175                                            const gchar     *message);
176 void        gtk_printer_set_is_active     (GtkPrinter      *printer,
177                                            gboolean         active);
178
179
180 G_END_DECLS
181
182 #endif /* __GTK_PRINT_BACKEND_H__ */