]> Pileus Git - ~andy/gtk/blob - gtk/gtkprintbackend.h
stylecontext: Do invalidation on first resize container
[~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, see <http://www.gnu.org/licenses/>.
17  */
18
19 #ifndef __GTK_PRINT_BACKEND_H__
20 #define __GTK_PRINT_BACKEND_H__
21
22 /* This is a "semi-private" header; it is meant only for
23  * alternate GtkPrintDialog backend modules; no stability guarantees
24  * are made at this point
25  */
26 #ifndef GTK_PRINT_BACKEND_ENABLE_UNSUPPORTED
27 #error "GtkPrintBackend is not supported API for general use"
28 #endif
29
30 #include <gtk/gtk.h>
31 #include <gtk/gtkunixprint.h>
32 #include <gtk/gtkprinteroptionset.h>
33
34 G_BEGIN_DECLS
35
36 typedef struct _GtkPrintBackendClass    GtkPrintBackendClass;
37 typedef struct _GtkPrintBackendPrivate  GtkPrintBackendPrivate;
38
39 #define GTK_PRINT_BACKEND_ERROR (gtk_print_backend_error_quark ())
40
41 typedef enum
42 {
43   /* TODO: add specific errors */
44   GTK_PRINT_BACKEND_ERROR_GENERIC
45 } GtkPrintBackendError;
46
47 GQuark     gtk_print_backend_error_quark      (void);
48
49 #define GTK_TYPE_PRINT_BACKEND                  (gtk_print_backend_get_type ())
50 #define GTK_PRINT_BACKEND(obj)                  (G_TYPE_CHECK_INSTANCE_CAST ((obj), GTK_TYPE_PRINT_BACKEND, GtkPrintBackend))
51 #define GTK_PRINT_BACKEND_CLASS(klass)          (G_TYPE_CHECK_CLASS_CAST ((klass), GTK_TYPE_PRINT_BACKEND, GtkPrintBackendClass))
52 #define GTK_IS_PRINT_BACKEND(obj)               (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GTK_TYPE_PRINT_BACKEND))
53 #define GTK_IS_PRINT_BACKEND_CLASS(klass)       (G_TYPE_CHECK_CLASS_TYPE ((klass), GTK_TYPE_PRINT_BACKEND))
54 #define GTK_PRINT_BACKEND_GET_CLASS(obj)        (G_TYPE_INSTANCE_GET_CLASS ((obj), GTK_TYPE_PRINT_BACKEND, GtkPrintBackendClass))
55
56 typedef enum 
57 {
58   GTK_PRINT_BACKEND_STATUS_UNKNOWN,
59   GTK_PRINT_BACKEND_STATUS_OK,
60   GTK_PRINT_BACKEND_STATUS_UNAVAILABLE
61 } GtkPrintBackendStatus;
62
63 struct _GtkPrintBackend
64 {
65   GObject parent_instance;
66
67   GtkPrintBackendPrivate *priv;
68 };
69
70 struct _GtkPrintBackendClass
71 {
72   GObjectClass parent_class;
73
74   /* Global backend methods: */
75   void                   (*request_printer_list)            (GtkPrintBackend        *backend);
76   void                   (*print_stream)                    (GtkPrintBackend        *backend,
77                                                              GtkPrintJob            *job,
78                                                              GIOChannel             *data_io,
79                                                              GtkPrintJobCompleteFunc callback,
80                                                              gpointer                user_data,
81                                                              GDestroyNotify          dnotify);
82
83   /* Printer methods: */
84   void                  (*printer_request_details)           (GtkPrinter          *printer);
85   cairo_surface_t *     (*printer_create_cairo_surface)      (GtkPrinter          *printer,
86                                                               GtkPrintSettings    *settings,
87                                                               gdouble              height,
88                                                               gdouble              width,
89                                                               GIOChannel          *cache_io);
90   GtkPrinterOptionSet * (*printer_get_options)               (GtkPrinter          *printer,
91                                                               GtkPrintSettings    *settings,
92                                                               GtkPageSetup        *page_setup,
93                                                               GtkPrintCapabilities capabilities);
94   gboolean              (*printer_mark_conflicts)            (GtkPrinter          *printer,
95                                                               GtkPrinterOptionSet *options);
96   void                  (*printer_get_settings_from_options) (GtkPrinter          *printer,
97                                                               GtkPrinterOptionSet *options,
98                                                               GtkPrintSettings    *settings);
99   void                  (*printer_prepare_for_print)         (GtkPrinter          *printer,
100                                                               GtkPrintJob         *print_job,
101                                                               GtkPrintSettings    *settings,
102                                                               GtkPageSetup        *page_setup);
103   GList  *              (*printer_list_papers)               (GtkPrinter          *printer);
104   GtkPageSetup *        (*printer_get_default_page_size)     (GtkPrinter          *printer);
105   gboolean              (*printer_get_hard_margins)          (GtkPrinter          *printer,
106                                                               gdouble             *top,
107                                                               gdouble             *bottom,
108                                                               gdouble             *left,
109                                                               gdouble             *right);
110   GtkPrintCapabilities  (*printer_get_capabilities)          (GtkPrinter          *printer);
111
112   /* Signals */
113   void                  (*printer_list_changed)              (GtkPrintBackend     *backend);
114   void                  (*printer_list_done)                 (GtkPrintBackend     *backend);
115   void                  (*printer_added)                     (GtkPrintBackend     *backend,
116                                                               GtkPrinter          *printer);
117   void                  (*printer_removed)                   (GtkPrintBackend     *backend,
118                                                               GtkPrinter          *printer);
119   void                  (*printer_status_changed)            (GtkPrintBackend     *backend,
120                                                               GtkPrinter          *printer);
121   void                  (*request_password)                  (GtkPrintBackend     *backend,
122                                                               gpointer             auth_info_required,
123                                                               gpointer             auth_info_default,
124                                                               gpointer             auth_info_display,
125                                                               gpointer             auth_info_visible,
126                                                               const gchar         *prompt);
127
128   /* not a signal */
129   void                  (*set_password)                      (GtkPrintBackend     *backend,
130                                                               gchar              **auth_info_required,
131                                                               gchar              **auth_info);
132
133   /* Padding for future expansion */
134   void (*_gtk_reserved1) (void);
135   void (*_gtk_reserved2) (void);
136   void (*_gtk_reserved3) (void);
137   void (*_gtk_reserved4) (void);
138 };
139
140 GType   gtk_print_backend_get_type       (void) G_GNUC_CONST;
141
142 GList      *gtk_print_backend_get_printer_list     (GtkPrintBackend         *print_backend);
143 gboolean    gtk_print_backend_printer_list_is_done (GtkPrintBackend         *print_backend);
144 GtkPrinter *gtk_print_backend_find_printer         (GtkPrintBackend         *print_backend,
145                                                     const gchar             *printer_name);
146 void        gtk_print_backend_print_stream         (GtkPrintBackend         *print_backend,
147                                                     GtkPrintJob             *job,
148                                                     GIOChannel              *data_io,
149                                                     GtkPrintJobCompleteFunc  callback,
150                                                     gpointer                 user_data,
151                                                     GDestroyNotify           dnotify);
152 GList *     gtk_print_backend_load_modules         (void);
153 void        gtk_print_backend_destroy              (GtkPrintBackend         *print_backend);
154 void        gtk_print_backend_set_password         (GtkPrintBackend         *backend, 
155                                                     gchar                  **auth_info_required,
156                                                     gchar                  **auth_info);
157
158 /* Backend-only functions for GtkPrintBackend */
159
160 void        gtk_print_backend_add_printer          (GtkPrintBackend         *print_backend,
161                                                     GtkPrinter              *printer);
162 void        gtk_print_backend_remove_printer       (GtkPrintBackend         *print_backend,
163                                                     GtkPrinter              *printer);
164 void        gtk_print_backend_set_list_done        (GtkPrintBackend         *backend);
165
166
167 /* Backend-only functions for GtkPrinter */
168 gboolean    gtk_printer_is_new                (GtkPrinter      *printer);
169 void        gtk_printer_set_accepts_pdf       (GtkPrinter      *printer,
170                                                gboolean         val);
171 void        gtk_printer_set_accepts_ps        (GtkPrinter      *printer,
172                                                gboolean         val);
173 void        gtk_printer_set_is_new            (GtkPrinter      *printer,
174                                                gboolean         val);
175 void        gtk_printer_set_is_active         (GtkPrinter      *printer,
176                                                gboolean         val);
177 gboolean    gtk_printer_set_is_paused         (GtkPrinter      *printer,
178                                                gboolean         val);
179 gboolean    gtk_printer_set_is_accepting_jobs (GtkPrinter      *printer,
180                                                gboolean         val);
181 void        gtk_printer_set_has_details       (GtkPrinter      *printer,
182                                                gboolean         val);
183 void        gtk_printer_set_is_default        (GtkPrinter      *printer,
184                                                gboolean         val);
185 void        gtk_printer_set_icon_name         (GtkPrinter      *printer,
186                                                const gchar     *icon);
187 gboolean    gtk_printer_set_job_count         (GtkPrinter      *printer,
188                                                gint             count);
189 gboolean    gtk_printer_set_location          (GtkPrinter      *printer,
190                                                const gchar     *location);
191 gboolean    gtk_printer_set_description       (GtkPrinter      *printer,
192                                                const gchar     *description);
193 gboolean    gtk_printer_set_state_message     (GtkPrinter      *printer,
194                                                const gchar     *message);
195
196
197 G_END_DECLS
198
199 #endif /* __GTK_PRINT_BACKEND_H__ */