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