]> Pileus Git - ~andy/gtk/blob - gtk/gtkprintbackend.h
Bug 384940 – handle rejecting jobs and authentication meaningfully
[~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 struct _GtkPrintBackend
59 {
60   GObject parent_instance;
61
62   GtkPrintBackendPrivate *priv;
63 };
64
65 struct _GtkPrintBackendClass
66 {
67   GObjectClass parent_class;
68
69   /* Global backend methods: */
70   void                   (*request_printer_list)            (GtkPrintBackend        *backend);
71   void                   (*print_stream)                    (GtkPrintBackend        *backend,
72                                                              GtkPrintJob            *job,
73                                                              GIOChannel             *data_io,
74                                                              GtkPrintJobCompleteFunc callback,
75                                                              gpointer                user_data,
76                                                              GDestroyNotify          dnotify);
77
78   /* Printer methods: */
79   void                  (*printer_request_details)           (GtkPrinter          *printer);
80   cairo_surface_t *     (*printer_create_cairo_surface)      (GtkPrinter          *printer,
81                                                               GtkPrintSettings    *settings,
82                                                               gdouble              height,
83                                                               gdouble              width,
84                                                               GIOChannel          *cache_io);
85   GtkPrinterOptionSet * (*printer_get_options)               (GtkPrinter          *printer,
86                                                               GtkPrintSettings    *settings,
87                                                               GtkPageSetup        *page_setup,
88                                                               GtkPrintCapabilities capabilities);
89   gboolean              (*printer_mark_conflicts)            (GtkPrinter          *printer,
90                                                               GtkPrinterOptionSet *options);
91   void                  (*printer_get_settings_from_options) (GtkPrinter          *printer,
92                                                               GtkPrinterOptionSet *options,
93                                                               GtkPrintSettings    *settings);
94   void                  (*printer_prepare_for_print)         (GtkPrinter          *printer,
95                                                               GtkPrintJob         *print_job,
96                                                               GtkPrintSettings    *settings,
97                                                               GtkPageSetup        *page_setup);
98   GList  *              (*printer_list_papers)               (GtkPrinter          *printer);
99   GtkPageSetup *        (*printer_get_default_page_size)     (GtkPrinter          *printer);
100   void                  (*printer_get_hard_margins)          (GtkPrinter          *printer,
101                                                               double              *top,
102                                                               double              *bottom,
103                                                               double              *left,
104                                                               double              *right);
105   GtkPrintCapabilities  (*printer_get_capabilities)          (GtkPrinter          *printer);
106
107   /* Signals */
108   void                  (*printer_list_changed)              (GtkPrintBackend     *backend);
109   void                  (*printer_list_done)                 (GtkPrintBackend     *backend);
110   void                  (*printer_added)                     (GtkPrintBackend     *backend,
111                                                               GtkPrinter          *printer);
112   void                  (*printer_removed)                   (GtkPrintBackend     *backend,
113                                                               GtkPrinter          *printer);
114   void                  (*printer_status_changed)            (GtkPrintBackend     *backend,
115                                                               GtkPrinter          *printer);
116
117   /* Padding for future expansion */
118   void (*_gtk_reserved1) (void);
119   void (*_gtk_reserved2) (void);
120   void (*_gtk_reserved3) (void);
121   void (*_gtk_reserved4) (void);
122   void (*_gtk_reserved5) (void);
123   void (*_gtk_reserved6) (void);
124 };
125
126 GType   gtk_print_backend_get_type       (void) G_GNUC_CONST;
127
128 GList      *gtk_print_backend_get_printer_list     (GtkPrintBackend         *print_backend);
129 gboolean    gtk_print_backend_printer_list_is_done (GtkPrintBackend         *print_backend);
130 GtkPrinter *gtk_print_backend_find_printer         (GtkPrintBackend         *print_backend,
131                                                     const gchar             *printer_name);
132 void        gtk_print_backend_print_stream         (GtkPrintBackend         *print_backend,
133                                                     GtkPrintJob             *job,
134                                                     GIOChannel              *data_io,
135                                                     GtkPrintJobCompleteFunc  callback,
136                                                     gpointer                 user_data,
137                                                     GDestroyNotify           dnotify);
138 GList *     gtk_print_backend_load_modules         (void);
139 void        gtk_print_backend_destroy              (GtkPrintBackend         *print_backend);
140
141 /* Backend-only functions for GtkPrintBackend */
142
143 void        gtk_print_backend_add_printer          (GtkPrintBackend         *print_backend,
144                                                     GtkPrinter              *printer);
145 void        gtk_print_backend_remove_printer       (GtkPrintBackend         *print_backend,
146                                                     GtkPrinter              *printer);
147 void        gtk_print_backend_set_list_done        (GtkPrintBackend         *backend);
148
149
150 /* Backend-only functions for GtkPrinter */
151
152 GtkPrinter *gtk_printer_new                   (const char      *name,
153                                                GtkPrintBackend *backend,
154                                                gboolean         is_virtual);
155 gboolean    gtk_printer_is_new                (GtkPrinter      *printer);
156 void        gtk_printer_set_is_new            (GtkPrinter      *printer,
157                                                gboolean         val);
158 void        gtk_printer_set_is_active         (GtkPrinter      *printer,
159                                                gboolean         val);
160 gboolean    gtk_printer_set_is_paused         (GtkPrinter      *printer,
161                                                gboolean         val);
162 gboolean    gtk_printer_set_is_accepting_jobs (GtkPrinter      *printer,
163                                                gboolean         val);
164 void        gtk_printer_set_has_details       (GtkPrinter      *printer,
165                                                gboolean         val);
166 void        gtk_printer_set_is_default        (GtkPrinter      *printer,
167                                                gboolean         val);
168 void        gtk_printer_set_icon_name         (GtkPrinter      *printer,
169                                                const gchar     *icon);
170 gboolean    gtk_printer_set_job_count         (GtkPrinter      *printer,
171                                                gint             count);
172 gboolean    gtk_printer_set_location          (GtkPrinter      *printer,
173                                                const gchar     *location);
174 gboolean    gtk_printer_set_description       (GtkPrinter      *printer,
175                                                const gchar     *description);
176 gboolean    gtk_printer_set_state_message     (GtkPrinter      *printer,
177                                                const gchar     *message);
178
179
180 G_END_DECLS
181
182 #endif /* __GTK_PRINT_BACKEND_H__ */