2006-01-27 [cleroy] 1.9.100cvs192
[claws.git] / src / gtk / gtksourceprintjob.h
1 /* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8; coding: utf-8 -*- */
2 /*
3  * gtksourceprintjob.h
4  * This file is part of GtkSourceView
5  *
6  * Copyright (C) 2003  Gustavo Giráldez
7  *
8  * This program is free software; you can redistribute it and/or modify
9  * it under the terms of the GNU General Public License as published by
10  * the Free Software Foundation; either version 2 of the License, or
11  * (at your option) any later version.
12  *
13  * This program is distributed in the hope that it will be useful,
14  * but WITHOUT ANY WARRANTY; without even the implied warranty of
15  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16  * GNU General Public License for more details.
17  *
18  * You should have received a copy of the GNU General Public License
19  * along with this program; if not, write to the Free Software
20  * Foundation, Inc., 59 Temple Place, Suite 330, 
21  * Boston, MA 02111-1307, USA. 
22  */
23  
24 #ifndef __GTK_SOURCE_PRINT_JOB_H__
25 #define __GTK_SOURCE_PRINT_JOB_H__
26
27 #ifdef HAVE_CONFIG_H
28 #include <config.h>
29 #endif
30
31 #ifdef USE_GNOMEPRINT
32
33 #include <libgnomeprint/gnome-print-config.h>
34 #include <libgnomeprint/gnome-print-job.h>
35 #include <gtk/gtktextbuffer.h>
36 //#include <gtksourceview/gtksourceview.h>
37
38 G_BEGIN_DECLS
39
40 #define GTK_TYPE_SOURCE_PRINT_JOB            (gtk_source_print_job_get_type ())
41 #define GTK_SOURCE_PRINT_JOB(obj)            (G_TYPE_CHECK_INSTANCE_CAST ((obj), GTK_TYPE_SOURCE_PRINT_JOB, GtkSourcePrintJob))
42 #define GTK_SOURCE_PRINT_JOB_CLASS(klass)    (G_TYPE_CHECK_CLASS_CAST ((klass), GTK_TYPE_SOURCE_PRINT_JOB, GtkSourcePrintJobClass))
43 #define GTK_IS_SOURCE_PRINT_JOB(obj)         (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GTK_TYPE_SOURCE_PRINT_JOB))
44 #define GTK_IS_SOURCE_PRINT_JOB_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GTK_TYPE_SOURCE_PRINT_JOB))
45 #define GTK_SOURCE_PRINT_JOB_GET_CLASS(obj)  (G_TYPE_INSTANCE_GET_CLASS ((obj), GTK_TYPE_SOURCE_PRINT_JOB, GtkSourcePrintJobClass))
46
47 typedef struct _GtkSourcePrintJob         GtkSourcePrintJob;
48 typedef struct _GtkSourcePrintJobClass    GtkSourcePrintJobClass;
49 typedef struct _GtkSourcePrintJobPrivate  GtkSourcePrintJobPrivate;
50
51 struct _GtkSourcePrintJob
52 {
53         GObject parent_instance;
54
55         GtkSourcePrintJobPrivate *priv;
56 };
57
58 struct _GtkSourcePrintJobClass
59 {
60         GObjectClass parent_class;
61
62         void   (* begin_page)    (GtkSourcePrintJob  *job);
63         void   (* finished)      (GtkSourcePrintJob  *job);
64 };
65
66 /* we want the idle handler to run before the view validation, but do
67  * not interfere with ui updates */
68 #define GTK_SOURCE_PRINT_JOB_PRIORITY ((GDK_PRIORITY_REDRAW + GTK_TEXT_VIEW_PRIORITY_VALIDATE) / 2)
69
70 GType              gtk_source_print_job_get_type               (void) G_GNUC_CONST;
71
72 /* constructor functions */
73 GtkSourcePrintJob *gtk_source_print_job_new                    (GnomePrintConfig  *config);
74 GtkSourcePrintJob *gtk_source_print_job_new_with_buffer        (GnomePrintConfig  *config,
75                                                                 GtkTextBuffer   *buffer);
76 /* print job basic configuration */
77 void               gtk_source_print_job_set_config             (GtkSourcePrintJob *job,
78                                                                 GnomePrintConfig  *config);
79 GnomePrintConfig  *gtk_source_print_job_get_config             (GtkSourcePrintJob *job);
80 void               gtk_source_print_job_set_buffer             (GtkSourcePrintJob *job,
81                                                                 GtkTextBuffer   *buffer);
82 GtkTextBuffer   *gtk_source_print_job_get_buffer             (GtkSourcePrintJob *job);
83
84 /* print job layout and style configuration */
85 //void               gtk_source_print_job_setup_from_view        (GtkSourcePrintJob *job,
86 //                                                              GtkSourceView     *view);
87 void               gtk_source_print_job_set_tabs_width         (GtkSourcePrintJob *job,
88                                                                 guint              tabs_width);
89 guint              gtk_source_print_job_get_tabs_width         (GtkSourcePrintJob *job);
90 void               gtk_source_print_job_set_wrap_mode          (GtkSourcePrintJob *job,
91                                                                 GtkWrapMode        wrap);
92 GtkWrapMode        gtk_source_print_job_get_wrap_mode          (GtkSourcePrintJob *job);
93 void               gtk_source_print_job_set_highlight          (GtkSourcePrintJob *job,
94                                                                 gboolean           highlight);
95 gboolean           gtk_source_print_job_get_highlight          (GtkSourcePrintJob *job);
96 void               gtk_source_print_job_set_font               (GtkSourcePrintJob *job,
97                                                                 const gchar       *font_name);
98 gchar             *gtk_source_print_job_get_font               (GtkSourcePrintJob *job);
99 void               gtk_source_print_job_set_numbers_font       (GtkSourcePrintJob *job,
100                                                                 const gchar       *font_name);
101 gchar             *gtk_source_print_job_get_numbers_font       (GtkSourcePrintJob *job);
102 void               gtk_source_print_job_set_print_numbers      (GtkSourcePrintJob *job,
103                                                                 guint              interval);
104 guint              gtk_source_print_job_get_print_numbers      (GtkSourcePrintJob *job);
105 void               gtk_source_print_job_set_text_margins       (GtkSourcePrintJob *job,
106                                                                 gdouble            top,
107                                                                 gdouble            bottom,
108                                                                 gdouble            left,
109                                                                 gdouble            right);
110 void               gtk_source_print_job_get_text_margins       (GtkSourcePrintJob *job,
111                                                                 gdouble           *top,
112                                                                 gdouble           *bottom,
113                                                                 gdouble           *left,
114                                                                 gdouble           *right);
115
116 /* New non-deprecated font-setting API */
117 void                   gtk_source_print_job_set_font_desc               (GtkSourcePrintJob    *job,
118                                                                          PangoFontDescription *desc);
119 PangoFontDescription  *gtk_source_print_job_get_font_desc               (GtkSourcePrintJob    *job);
120 void                   gtk_source_print_job_set_numbers_font_desc       (GtkSourcePrintJob    *job,
121                                                                          PangoFontDescription *desc);
122 PangoFontDescription  *gtk_source_print_job_get_numbers_font_desc       (GtkSourcePrintJob    *job);
123 void                   gtk_source_print_job_set_header_footer_font_desc (GtkSourcePrintJob    *job,
124                                                                          PangoFontDescription *desc);
125 PangoFontDescription  *gtk_source_print_job_get_header_footer_font_desc (GtkSourcePrintJob    *job);
126
127 /* printing operations */
128 GnomePrintJob     *gtk_source_print_job_print                  (GtkSourcePrintJob *job);
129 GnomePrintJob     *gtk_source_print_job_print_range            (GtkSourcePrintJob *job,
130                                                                 const GtkTextIter *start,
131                                                                 const GtkTextIter *end);
132
133 /* asynchronous printing */
134 gboolean           gtk_source_print_job_print_range_async      (GtkSourcePrintJob *job,
135                                                                 const GtkTextIter *start,
136                                                                 const GtkTextIter *end);
137 void               gtk_source_print_job_cancel                 (GtkSourcePrintJob *job);
138 GnomePrintJob     *gtk_source_print_job_get_print_job          (GtkSourcePrintJob *job);
139
140 /* information for asynchronous ops and headers and footers callback */
141 guint              gtk_source_print_job_get_page               (GtkSourcePrintJob *job);
142 guint              gtk_source_print_job_get_page_count         (GtkSourcePrintJob *job);
143 GnomePrintContext *gtk_source_print_job_get_print_context      (GtkSourcePrintJob *job);
144
145
146 /* header and footer */
147 void               gtk_source_print_job_set_print_header       (GtkSourcePrintJob *job,
148                                                                 gboolean           setting);
149 gboolean           gtk_source_print_job_get_print_header       (GtkSourcePrintJob *job);
150 void               gtk_source_print_job_set_print_footer       (GtkSourcePrintJob *job,
151                                                                 gboolean           setting);
152 gboolean           gtk_source_print_job_get_print_footer       (GtkSourcePrintJob *job);
153 void               gtk_source_print_job_set_header_footer_font (GtkSourcePrintJob *job,
154                                                                 const gchar       *font_name);
155 gchar             *gtk_source_print_job_get_header_footer_font (GtkSourcePrintJob *job);
156 /* format strings are strftime like */
157 void               gtk_source_print_job_set_header_format      (GtkSourcePrintJob *job,
158                                                                 const gchar       *left,
159                                                                 const gchar       *center,
160                                                                 const gchar       *right,
161                                                                 gboolean           separator);
162 void               gtk_source_print_job_set_footer_format      (GtkSourcePrintJob *job,
163                                                                 const gchar       *left,
164                                                                 const gchar       *center,
165                                                                 const gchar       *right,
166                                                                 gboolean           separator);
167
168 G_END_DECLS
169
170 #endif /* __GTK_SOURCE_PRINT_JOB_H__ */
171 #endif