]> Pileus Git - ~andy/gtk/blob - gtk/gtkprintbackend.h
RH bug 204621 - "GtkPrint" asks for "Letter" size paper when "A4" size
[~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 <glib-object.h>
33 #include <cairo.h>
34
35 #include "gtkprintsettings.h"
36 #include "gtkprinteroptionset.h"
37 #include "gtkprintjob.h"
38
39 G_BEGIN_DECLS
40
41 typedef struct _GtkPrintBackendClass    GtkPrintBackendClass;
42 typedef struct _GtkPrintBackendPrivate  GtkPrintBackendPrivate;
43
44 #define GTK_PRINT_BACKEND_ERROR (gtk_print_backend_error_quark ())
45
46 typedef enum
47 {
48   /* TODO: add specific errors */
49   GTK_PRINT_BACKEND_ERROR_GENERIC
50 } GtkPrintBackendError;
51
52 GQuark     gtk_print_backend_error_quark      (void);
53
54 #define GTK_TYPE_PRINT_BACKEND                  (gtk_print_backend_get_type ())
55 #define GTK_PRINT_BACKEND(obj)                  (G_TYPE_CHECK_INSTANCE_CAST ((obj), GTK_TYPE_PRINT_BACKEND, GtkPrintBackend))
56 #define GTK_PRINT_BACKEND_CLASS(klass)          (G_TYPE_CHECK_CLASS_CAST ((klass), GTK_TYPE_PRINT_BACKEND, GtkPrintBackendClass))
57 #define GTK_IS_PRINT_BACKEND(obj)               (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GTK_TYPE_PRINT_BACKEND))
58 #define GTK_IS_PRINT_BACKEND_CLASS(klass)       (G_TYPE_CHECK_CLASS_TYPE ((klass), GTK_TYPE_PRINT_BACKEND))
59 #define GTK_PRINT_BACKEND_GET_CLASS(obj)        (G_TYPE_INSTANCE_GET_CLASS ((obj), GTK_TYPE_PRINT_BACKEND, GtkPrintBackendClass))
60
61 struct _GtkPrintBackend
62 {
63   GObject parent_instance;
64
65   GtkPrintBackendPrivate *priv;
66 };
67
68 struct _GtkPrintBackendClass
69 {
70   GObjectClass parent_class;
71
72   /* Global backend methods: */
73   void                   (*request_printer_list)            (GtkPrintBackend        *backend);
74   void                   (*print_stream)                    (GtkPrintBackend        *backend,
75                                                              GtkPrintJob            *job,
76                                                              GIOChannel             *data_io,
77                                                              GtkPrintJobCompleteFunc callback,
78                                                              gpointer                user_data,
79                                                              GDestroyNotify          dnotify);
80
81   /* Printer methods: */
82   void                  (*printer_request_details)           (GtkPrinter          *printer);
83   cairo_surface_t *     (*printer_create_cairo_surface)      (GtkPrinter          *printer,
84                                                               GtkPrintSettings    *settings,
85                                                               gdouble              height,
86                                                               gdouble              width,
87                                                               GIOChannel          *cache_io);
88   GtkPrinterOptionSet * (*printer_get_options)               (GtkPrinter          *printer,
89                                                               GtkPrintSettings    *settings,
90                                                               GtkPageSetup        *page_setup,
91                                                               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                                                               GtkPrintSettings    *settings);
97   void                  (*printer_prepare_for_print)         (GtkPrinter          *printer,
98                                                               GtkPrintJob         *print_job,
99                                                               GtkPrintSettings    *settings,
100                                                               GtkPageSetup        *page_setup);
101   GList  *              (*printer_list_papers)               (GtkPrinter          *printer);
102   GtkPageSetup *        (*printer_get_default_page_size)     (GtkPrinter          *printer);
103   void                  (*printer_get_hard_margins)          (GtkPrinter          *printer,
104                                                               double              *top,
105                                                               double              *bottom,
106                                                               double              *left,
107                                                               double              *right);
108   GtkPrintCapabilities  (*printer_get_capabilities)          (GtkPrinter          *printer);
109
110   /* Signals */
111   void                  (*printer_list_changed)              (GtkPrintBackend     *backend);
112   void                  (*printer_list_done)                 (GtkPrintBackend     *backend);
113   void                  (*printer_added)                     (GtkPrintBackend     *backend,
114                                                               GtkPrinter          *printer);
115   void                  (*printer_removed)                   (GtkPrintBackend     *backend,
116                                                               GtkPrinter          *printer);
117   void                  (*printer_status_changed)            (GtkPrintBackend     *backend,
118                                                               GtkPrinter          *printer);
119
120   /* Padding for future expansion */
121   void (*_gtk_reserved1) (void);
122   void (*_gtk_reserved2) (void);
123   void (*_gtk_reserved3) (void);
124   void (*_gtk_reserved4) (void);
125   void (*_gtk_reserved5) (void);
126   void (*_gtk_reserved6) (void);
127 };
128
129 GType   gtk_print_backend_get_type       (void) G_GNUC_CONST;
130
131 GList      *gtk_print_backend_get_printer_list     (GtkPrintBackend         *print_backend);
132 gboolean    gtk_print_backend_printer_list_is_done (GtkPrintBackend         *print_backend);
133 GtkPrinter *gtk_print_backend_find_printer         (GtkPrintBackend         *print_backend,
134                                                     const gchar             *printer_name);
135 void        gtk_print_backend_print_stream         (GtkPrintBackend         *print_backend,
136                                                     GtkPrintJob             *job,
137                                                     GIOChannel              *data_io,
138                                                     GtkPrintJobCompleteFunc  callback,
139                                                     gpointer                 user_data,
140                                                     GDestroyNotify           dnotify);
141 GList *     gtk_print_backend_load_modules         (void);
142 void        gtk_print_backend_destroy              (GtkPrintBackend         *print_backend);
143
144 /* Backend-only functions for GtkPrintBackend */
145
146 void        gtk_print_backend_add_printer          (GtkPrintBackend         *print_backend,
147                                                     GtkPrinter              *printer);
148 void        gtk_print_backend_remove_printer       (GtkPrintBackend         *print_backend,
149                                                     GtkPrinter              *printer);
150 void        gtk_print_backend_set_list_done        (GtkPrintBackend         *backend);
151
152
153 /* Backend-only functions for GtkPrinter */
154
155 GtkPrinter *gtk_printer_new               (const char      *name,
156                                            GtkPrintBackend *backend,
157                                            gboolean         is_virtual);
158 gboolean    gtk_printer_is_new            (GtkPrinter      *printer);
159 void        gtk_printer_set_is_new        (GtkPrinter      *printer,
160                                            gboolean         val);
161 void        gtk_printer_set_is_active     (GtkPrinter      *printer,
162                                            gboolean         val);
163 void        gtk_printer_set_has_details   (GtkPrinter      *printer,
164                                            gboolean         val);
165 void        gtk_printer_set_is_default    (GtkPrinter      *printer,
166                                            gboolean         val);
167 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 void        gtk_printer_set_is_active     (GtkPrinter      *printer,
178                                            gboolean         active);
179
180
181 G_END_DECLS
182
183 #endif /* __GTK_PRINT_BACKEND_H__ */