226 lines
		
	
	
		
			9.8 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			226 lines
		
	
	
		
			9.8 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| /* GTK - The GIMP Toolkit
 | |
|  * 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
 | |
|  * License along with this library. If not, see <http://www.gnu.org/licenses/>.
 | |
|  */
 | |
| 
 | |
| #ifndef __GTK_PRINT_BACKEND_H__
 | |
| #define __GTK_PRINT_BACKEND_H__
 | |
| 
 | |
| /* This is a "semi-private" header; it is meant only for
 | |
|  * alternate GtkPrintDialog backend modules; no stability guarantees
 | |
|  * are made at this point
 | |
|  */
 | |
| #ifndef GTK_PRINT_BACKEND_ENABLE_UNSUPPORTED
 | |
| #error "GtkPrintBackend is not supported API for general use"
 | |
| #endif
 | |
| 
 | |
| #include <gtk/gtk.h>
 | |
| #include <gtk/gtkunixprint.h>
 | |
| #include <gtk/gtkprinteroptionset.h>
 | |
| 
 | |
| G_BEGIN_DECLS
 | |
| 
 | |
| typedef struct _GtkPrintBackendClass    GtkPrintBackendClass;
 | |
| typedef struct _GtkPrintBackendPrivate  GtkPrintBackendPrivate;
 | |
| 
 | |
| #define GTK_PRINT_BACKEND_ERROR (gtk_print_backend_error_quark ())
 | |
| 
 | |
| typedef enum
 | |
| {
 | |
|   /* TODO: add specific errors */
 | |
|   GTK_PRINT_BACKEND_ERROR_GENERIC
 | |
| } GtkPrintBackendError;
 | |
| 
 | |
| GDK_AVAILABLE_IN_ALL
 | |
| GQuark     gtk_print_backend_error_quark      (void);
 | |
| 
 | |
| #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))
 | |
| 
 | |
| typedef enum 
 | |
| {
 | |
|   GTK_PRINT_BACKEND_STATUS_UNKNOWN,
 | |
|   GTK_PRINT_BACKEND_STATUS_OK,
 | |
|   GTK_PRINT_BACKEND_STATUS_UNAVAILABLE
 | |
| } GtkPrintBackendStatus;
 | |
| 
 | |
| struct _GtkPrintBackend
 | |
| {
 | |
|   GObject parent_instance;
 | |
| 
 | |
|   GtkPrintBackendPrivate *priv;
 | |
| };
 | |
| 
 | |
| struct _GtkPrintBackendClass
 | |
| {
 | |
|   GObjectClass parent_class;
 | |
| 
 | |
|   /* Global backend methods: */
 | |
|   void                   (*request_printer_list)            (GtkPrintBackend        *backend);
 | |
|   void                   (*print_stream)                    (GtkPrintBackend        *backend,
 | |
| 							     GtkPrintJob            *job,
 | |
| 							     GIOChannel             *data_io,
 | |
| 							     GtkPrintJobCompleteFunc callback,
 | |
| 							     gpointer                user_data,
 | |
| 							     GDestroyNotify          dnotify);
 | |
| 
 | |
|   /* Printer methods: */
 | |
|   void                  (*printer_request_details)           (GtkPrinter          *printer);
 | |
|   cairo_surface_t *     (*printer_create_cairo_surface)      (GtkPrinter          *printer,
 | |
| 							      GtkPrintSettings    *settings,
 | |
| 							      gdouble              height,
 | |
| 							      gdouble              width,
 | |
| 							      GIOChannel          *cache_io);
 | |
|   GtkPrinterOptionSet * (*printer_get_options)               (GtkPrinter          *printer,
 | |
| 							      GtkPrintSettings    *settings,
 | |
| 							      GtkPageSetup        *page_setup,
 | |
| 							      GtkPrintCapabilities capabilities);
 | |
|   gboolean              (*printer_mark_conflicts)            (GtkPrinter          *printer,
 | |
| 							      GtkPrinterOptionSet *options);
 | |
|   void                  (*printer_get_settings_from_options) (GtkPrinter          *printer,
 | |
| 							      GtkPrinterOptionSet *options,
 | |
| 							      GtkPrintSettings    *settings);
 | |
|   void                  (*printer_prepare_for_print)         (GtkPrinter          *printer,
 | |
| 							      GtkPrintJob         *print_job,
 | |
| 							      GtkPrintSettings    *settings,
 | |
| 							      GtkPageSetup        *page_setup);
 | |
|   GList  *              (*printer_list_papers)               (GtkPrinter          *printer);
 | |
|   GtkPageSetup *        (*printer_get_default_page_size)     (GtkPrinter          *printer);
 | |
|   gboolean              (*printer_get_hard_margins)          (GtkPrinter          *printer,
 | |
| 							      gdouble             *top,
 | |
| 							      gdouble             *bottom,
 | |
| 							      gdouble             *left,
 | |
| 							      gdouble             *right);
 | |
|   GtkPrintCapabilities  (*printer_get_capabilities)          (GtkPrinter          *printer);
 | |
| 
 | |
|   /* Signals */
 | |
|   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);
 | |
|   void                  (*request_password)                  (GtkPrintBackend     *backend,
 | |
|                                                               gpointer             auth_info_required,
 | |
|                                                               gpointer             auth_info_default,
 | |
|                                                               gpointer             auth_info_display,
 | |
|                                                               gpointer             auth_info_visible,
 | |
|                                                               const gchar         *prompt);
 | |
| 
 | |
|   /* not a signal */
 | |
|   void                  (*set_password)                      (GtkPrintBackend     *backend,
 | |
|                                                               gchar              **auth_info_required,
 | |
|                                                               gchar              **auth_info);
 | |
| 
 | |
|   /* Padding for future expansion */
 | |
|   void (*_gtk_reserved1) (void);
 | |
|   void (*_gtk_reserved2) (void);
 | |
|   void (*_gtk_reserved3) (void);
 | |
|   void (*_gtk_reserved4) (void);
 | |
| };
 | |
| 
 | |
| GDK_AVAILABLE_IN_ALL
 | |
| GType   gtk_print_backend_get_type       (void) G_GNUC_CONST;
 | |
| 
 | |
| GDK_AVAILABLE_IN_ALL
 | |
| GList      *gtk_print_backend_get_printer_list     (GtkPrintBackend         *print_backend);
 | |
| GDK_AVAILABLE_IN_ALL
 | |
| gboolean    gtk_print_backend_printer_list_is_done (GtkPrintBackend         *print_backend);
 | |
| GDK_AVAILABLE_IN_ALL
 | |
| GtkPrinter *gtk_print_backend_find_printer         (GtkPrintBackend         *print_backend,
 | |
| 						    const gchar             *printer_name);
 | |
| GDK_AVAILABLE_IN_ALL
 | |
| void        gtk_print_backend_print_stream         (GtkPrintBackend         *print_backend,
 | |
| 						    GtkPrintJob             *job,
 | |
| 						    GIOChannel              *data_io,
 | |
| 						    GtkPrintJobCompleteFunc  callback,
 | |
| 						    gpointer                 user_data,
 | |
| 						    GDestroyNotify           dnotify);
 | |
| GDK_AVAILABLE_IN_ALL
 | |
| GList *     gtk_print_backend_load_modules         (void);
 | |
| GDK_AVAILABLE_IN_ALL
 | |
| void        gtk_print_backend_destroy              (GtkPrintBackend         *print_backend);
 | |
| GDK_AVAILABLE_IN_ALL
 | |
| void        gtk_print_backend_set_password         (GtkPrintBackend         *backend, 
 | |
|                                                     gchar                  **auth_info_required,
 | |
|                                                     gchar                  **auth_info);
 | |
| 
 | |
| /* Backend-only functions for GtkPrintBackend */
 | |
| 
 | |
| GDK_AVAILABLE_IN_ALL
 | |
| void        gtk_print_backend_add_printer          (GtkPrintBackend         *print_backend,
 | |
| 						    GtkPrinter              *printer);
 | |
| GDK_AVAILABLE_IN_ALL
 | |
| void        gtk_print_backend_remove_printer       (GtkPrintBackend         *print_backend,
 | |
| 						    GtkPrinter              *printer);
 | |
| GDK_AVAILABLE_IN_ALL
 | |
| void        gtk_print_backend_set_list_done        (GtkPrintBackend         *backend);
 | |
| 
 | |
| 
 | |
| /* Backend-only functions for GtkPrinter */
 | |
| GDK_AVAILABLE_IN_ALL
 | |
| gboolean    gtk_printer_is_new                (GtkPrinter      *printer);
 | |
| GDK_AVAILABLE_IN_ALL
 | |
| void        gtk_printer_set_accepts_pdf       (GtkPrinter      *printer,
 | |
| 					       gboolean         val);
 | |
| GDK_AVAILABLE_IN_ALL
 | |
| void        gtk_printer_set_accepts_ps        (GtkPrinter      *printer,
 | |
| 					       gboolean         val);
 | |
| GDK_AVAILABLE_IN_ALL
 | |
| void        gtk_printer_set_is_new            (GtkPrinter      *printer,
 | |
| 					       gboolean         val);
 | |
| GDK_AVAILABLE_IN_ALL
 | |
| void        gtk_printer_set_is_active         (GtkPrinter      *printer,
 | |
| 					       gboolean         val);
 | |
| GDK_AVAILABLE_IN_ALL
 | |
| gboolean    gtk_printer_set_is_paused         (GtkPrinter      *printer,
 | |
| 					       gboolean         val);
 | |
| GDK_AVAILABLE_IN_ALL
 | |
| gboolean    gtk_printer_set_is_accepting_jobs (GtkPrinter      *printer,
 | |
| 					       gboolean         val);
 | |
| GDK_AVAILABLE_IN_ALL
 | |
| void        gtk_printer_set_has_details       (GtkPrinter      *printer,
 | |
| 					       gboolean         val);
 | |
| GDK_AVAILABLE_IN_ALL
 | |
| void        gtk_printer_set_is_default        (GtkPrinter      *printer,
 | |
| 					       gboolean         val);
 | |
| GDK_AVAILABLE_IN_ALL
 | |
| void        gtk_printer_set_icon_name         (GtkPrinter      *printer,
 | |
| 					       const gchar     *icon);
 | |
| GDK_AVAILABLE_IN_ALL
 | |
| gboolean    gtk_printer_set_job_count         (GtkPrinter      *printer,
 | |
| 					       gint             count);
 | |
| GDK_AVAILABLE_IN_ALL
 | |
| gboolean    gtk_printer_set_location          (GtkPrinter      *printer,
 | |
| 					       const gchar     *location);
 | |
| GDK_AVAILABLE_IN_ALL
 | |
| gboolean    gtk_printer_set_description       (GtkPrinter      *printer,
 | |
| 					       const gchar     *description);
 | |
| GDK_AVAILABLE_IN_ALL
 | |
| gboolean    gtk_printer_set_state_message     (GtkPrinter      *printer,
 | |
| 					       const gchar     *message);
 | |
| 
 | |
| 
 | |
| G_END_DECLS
 | |
| 
 | |
| #endif /* __GTK_PRINT_BACKEND_H__ */
 | 
