gtkprintbackend.h 10.1 KB
Newer Older
Cody Russell's avatar
Cody Russell committed
1
/* GTK - The GIMP Toolkit
2 3 4 5 6 7 8 9 10 11 12 13 14 15
 * gtkprintbackend.h: Abstract printer backend interfaces
 * Copyright (C) 2006, Red Hat, Inc.
 *
 * This library is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public
 * License as published by the Free Software Foundation; either
 * version 2 of the License, or (at your option) any later version.
 *
 * This library is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public
Javier Jardón's avatar
Javier Jardón committed
16
 * License along with this library. If not, see <http://www.gnu.org/licenses/>.
17 18 19 20 21 22
 */

#ifndef __GTK_PRINT_BACKEND_H__
#define __GTK_PRINT_BACKEND_H__

/* This is a "semi-private" header; it is meant only for
23
 * alternate GtkPrintDialog backend modules; no stability guarantees
24 25 26 27 28 29
 * are made at this point
 */
#ifndef GTK_PRINT_BACKEND_ENABLE_UNSUPPORTED
#error "GtkPrintBackend is not supported API for general use"
#endif

30
#include <gtk/gtk.h>
31 32
#include <gtk/gtkunixprint.h>
#include <gtk/gtkprinteroptionset.h>
33 34 35

G_BEGIN_DECLS

Alexander Larsson's avatar
Alexander Larsson committed
36 37
typedef struct _GtkPrintBackendClass    GtkPrintBackendClass;
typedef struct _GtkPrintBackendPrivate  GtkPrintBackendPrivate;
38 39 40 41 42 43 44 45 46

#define GTK_PRINT_BACKEND_ERROR (gtk_print_backend_error_quark ())

typedef enum
{
  /* TODO: add specific errors */
  GTK_PRINT_BACKEND_ERROR_GENERIC
} GtkPrintBackendError;

47
GDK_AVAILABLE_IN_ALL
48 49
GQuark     gtk_print_backend_error_quark      (void);

Alexander Larsson's avatar
Alexander Larsson committed
50 51 52 53 54 55
#define GTK_TYPE_PRINT_BACKEND                  (gtk_print_backend_get_type ())
#define GTK_PRINT_BACKEND(obj)                  (G_TYPE_CHECK_INSTANCE_CAST ((obj), GTK_TYPE_PRINT_BACKEND, GtkPrintBackend))
#define GTK_PRINT_BACKEND_CLASS(klass)          (G_TYPE_CHECK_CLASS_CAST ((klass), GTK_TYPE_PRINT_BACKEND, GtkPrintBackendClass))
#define GTK_IS_PRINT_BACKEND(obj)               (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GTK_TYPE_PRINT_BACKEND))
#define GTK_IS_PRINT_BACKEND_CLASS(klass)       (G_TYPE_CHECK_CLASS_TYPE ((klass), GTK_TYPE_PRINT_BACKEND))
#define GTK_PRINT_BACKEND_GET_CLASS(obj)        (G_TYPE_INSTANCE_GET_CLASS ((obj), GTK_TYPE_PRINT_BACKEND, GtkPrintBackendClass))
56

57 58 59 60 61 62 63
typedef enum 
{
  GTK_PRINT_BACKEND_STATUS_UNKNOWN,
  GTK_PRINT_BACKEND_STATUS_OK,
  GTK_PRINT_BACKEND_STATUS_UNAVAILABLE
} GtkPrintBackendStatus;

Alexander Larsson's avatar
Alexander Larsson committed
64
struct _GtkPrintBackend
65
{
Alexander Larsson's avatar
Alexander Larsson committed
66
  GObject parent_instance;
67

Alexander Larsson's avatar
Alexander Larsson committed
68 69
  GtkPrintBackendPrivate *priv;
};
70

Alexander Larsson's avatar
Alexander Larsson committed
71 72 73 74 75
struct _GtkPrintBackendClass
{
  GObjectClass parent_class;

  /* Global backend methods: */
76 77 78
  void                   (*request_printer_list)            (GtkPrintBackend        *backend);
  void                   (*print_stream)                    (GtkPrintBackend        *backend,
							     GtkPrintJob            *job,
79
							     GIOChannel             *data_io,
80 81
							     GtkPrintJobCompleteFunc callback,
							     gpointer                user_data,
82
							     GDestroyNotify          dnotify);
83 84

  /* Printer methods: */
85 86 87 88 89
  void                  (*printer_request_details)           (GtkPrinter          *printer);
  cairo_surface_t *     (*printer_create_cairo_surface)      (GtkPrinter          *printer,
							      GtkPrintSettings    *settings,
							      gdouble              height,
							      gdouble              width,
90
							      GIOChannel          *cache_io);
91 92
  GtkPrinterOptionSet * (*printer_get_options)               (GtkPrinter          *printer,
							      GtkPrintSettings    *settings,
93 94
							      GtkPageSetup        *page_setup,
							      GtkPrintCapabilities capabilities);
95
  gboolean              (*printer_mark_conflicts)            (GtkPrinter          *printer,
96
							      GtkPrinterOptionSet *options);
97
  void                  (*printer_get_settings_from_options) (GtkPrinter          *printer,
98
							      GtkPrinterOptionSet *options,
99 100 101 102 103 104
							      GtkPrintSettings    *settings);
  void                  (*printer_prepare_for_print)         (GtkPrinter          *printer,
							      GtkPrintJob         *print_job,
							      GtkPrintSettings    *settings,
							      GtkPageSetup        *page_setup);
  GList  *              (*printer_list_papers)               (GtkPrinter          *printer);
105
  GtkPageSetup *        (*printer_get_default_page_size)     (GtkPrinter          *printer);
106 107 108 109 110
  gboolean              (*printer_get_hard_margins)          (GtkPrinter          *printer,
							      gdouble             *top,
							      gdouble             *bottom,
							      gdouble             *left,
							      gdouble             *right);
111
  GtkPrintCapabilities  (*printer_get_capabilities)          (GtkPrinter          *printer);
112

Alexander Larsson's avatar
Alexander Larsson committed
113
  /* Signals */
114 115 116 117 118 119 120 121
  void                  (*printer_list_changed)              (GtkPrintBackend     *backend);
  void                  (*printer_list_done)                 (GtkPrintBackend     *backend);
  void                  (*printer_added)                     (GtkPrintBackend     *backend,
							      GtkPrinter          *printer);
  void                  (*printer_removed)                   (GtkPrintBackend     *backend,
							      GtkPrinter          *printer);
  void                  (*printer_status_changed)            (GtkPrintBackend     *backend,
							      GtkPrinter          *printer);
122
  void                  (*request_password)                  (GtkPrintBackend     *backend,
123 124 125 126
                                                              gpointer             auth_info_required,
                                                              gpointer             auth_info_default,
                                                              gpointer             auth_info_display,
                                                              gpointer             auth_info_visible,
127 128
                                                              const gchar         *prompt,
                                                              gboolean             can_store_auth_info);
129 130 131

  /* not a signal */
  void                  (*set_password)                      (GtkPrintBackend     *backend,
132
                                                              gchar              **auth_info_required,
133 134
                                                              gchar              **auth_info,
                                                              gboolean             store_auth_info);
Alexander Larsson's avatar
Alexander Larsson committed
135 136 137 138 139 140

  /* Padding for future expansion */
  void (*_gtk_reserved1) (void);
  void (*_gtk_reserved2) (void);
  void (*_gtk_reserved3) (void);
  void (*_gtk_reserved4) (void);
141 142
};

143
GDK_AVAILABLE_IN_ALL
144 145
GType   gtk_print_backend_get_type       (void) G_GNUC_CONST;

146
GDK_AVAILABLE_IN_ALL
Alexander Larsson's avatar
Alexander Larsson committed
147
GList      *gtk_print_backend_get_printer_list     (GtkPrintBackend         *print_backend);
148
GDK_AVAILABLE_IN_ALL
Alexander Larsson's avatar
Alexander Larsson committed
149
gboolean    gtk_print_backend_printer_list_is_done (GtkPrintBackend         *print_backend);
150
GDK_AVAILABLE_IN_ALL
Alexander Larsson's avatar
Alexander Larsson committed
151 152
GtkPrinter *gtk_print_backend_find_printer         (GtkPrintBackend         *print_backend,
						    const gchar             *printer_name);
153
GDK_AVAILABLE_IN_ALL
Alexander Larsson's avatar
Alexander Larsson committed
154 155
void        gtk_print_backend_print_stream         (GtkPrintBackend         *print_backend,
						    GtkPrintJob             *job,
156
						    GIOChannel              *data_io,
Alexander Larsson's avatar
Alexander Larsson committed
157 158
						    GtkPrintJobCompleteFunc  callback,
						    gpointer                 user_data,
159
						    GDestroyNotify           dnotify);
160
GDK_AVAILABLE_IN_ALL
Alexander Larsson's avatar
Alexander Larsson committed
161
GList *     gtk_print_backend_load_modules         (void);
162
GDK_AVAILABLE_IN_ALL
Alexander Larsson's avatar
Alexander Larsson committed
163
void        gtk_print_backend_destroy              (GtkPrintBackend         *print_backend);
164
GDK_AVAILABLE_IN_ALL
165
void        gtk_print_backend_set_password         (GtkPrintBackend         *backend, 
166
                                                    gchar                  **auth_info_required,
167 168
                                                    gchar                  **auth_info,
                                                    gboolean                 can_store_auth_info);
Alexander Larsson's avatar
Alexander Larsson committed
169 170 171

/* Backend-only functions for GtkPrintBackend */

172
GDK_AVAILABLE_IN_ALL
Alexander Larsson's avatar
Alexander Larsson committed
173 174
void        gtk_print_backend_add_printer          (GtkPrintBackend         *print_backend,
						    GtkPrinter              *printer);
175
GDK_AVAILABLE_IN_ALL
Alexander Larsson's avatar
Alexander Larsson committed
176 177
void        gtk_print_backend_remove_printer       (GtkPrintBackend         *print_backend,
						    GtkPrinter              *printer);
178
GDK_AVAILABLE_IN_ALL
Alexander Larsson's avatar
Alexander Larsson committed
179
void        gtk_print_backend_set_list_done        (GtkPrintBackend         *backend);
180 181 182


/* Backend-only functions for GtkPrinter */
183
GDK_AVAILABLE_IN_ALL
184
gboolean    gtk_printer_is_new                (GtkPrinter      *printer);
185
GDK_AVAILABLE_IN_ALL
186 187
void        gtk_printer_set_accepts_pdf       (GtkPrinter      *printer,
					       gboolean         val);
188
GDK_AVAILABLE_IN_ALL
189 190
void        gtk_printer_set_accepts_ps        (GtkPrinter      *printer,
					       gboolean         val);
191
GDK_AVAILABLE_IN_ALL
192 193
void        gtk_printer_set_is_new            (GtkPrinter      *printer,
					       gboolean         val);
194
GDK_AVAILABLE_IN_ALL
195 196
void        gtk_printer_set_is_active         (GtkPrinter      *printer,
					       gboolean         val);
197
GDK_AVAILABLE_IN_ALL
198 199
gboolean    gtk_printer_set_is_paused         (GtkPrinter      *printer,
					       gboolean         val);
200
GDK_AVAILABLE_IN_ALL
201 202
gboolean    gtk_printer_set_is_accepting_jobs (GtkPrinter      *printer,
					       gboolean         val);
203
GDK_AVAILABLE_IN_ALL
204 205
void        gtk_printer_set_has_details       (GtkPrinter      *printer,
					       gboolean         val);
206
GDK_AVAILABLE_IN_ALL
207 208
void        gtk_printer_set_is_default        (GtkPrinter      *printer,
					       gboolean         val);
209
GDK_AVAILABLE_IN_ALL
210 211
void        gtk_printer_set_icon_name         (GtkPrinter      *printer,
					       const gchar     *icon);
212
GDK_AVAILABLE_IN_ALL
213 214
gboolean    gtk_printer_set_job_count         (GtkPrinter      *printer,
					       gint             count);
215
GDK_AVAILABLE_IN_ALL
216 217
gboolean    gtk_printer_set_location          (GtkPrinter      *printer,
					       const gchar     *location);
218
GDK_AVAILABLE_IN_ALL
219 220
gboolean    gtk_printer_set_description       (GtkPrinter      *printer,
					       const gchar     *description);
221
GDK_AVAILABLE_IN_ALL
222 223
gboolean    gtk_printer_set_state_message     (GtkPrinter      *printer,
					       const gchar     *message);
224 225 226 227 228


G_END_DECLS

#endif /* __GTK_PRINT_BACKEND_H__ */