2008-07-26 [colin] 3.5.0cvs35
[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 3 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, see <http://www.gnu.org/licenses/>.
20  */
21  
22 #ifndef __GTK_SOURCE_PRINT_JOB_H__
23 #define __GTK_SOURCE_PRINT_JOB_H__
24
25 #ifdef HAVE_CONFIG_H
26 #include <config.h>
27 #endif
28
29 #ifdef USE_GNOMEPRINT
30
31 #include <libgnomeprint/gnome-print-config.h>
32 #include <libgnomeprint/gnome-print-job.h>
33 #include <gtk/gtktextbuffer.h>
34 //#include <gtksourceview/gtksourceview.h>
35
36 G_BEGIN_DECLS
37
38 #define GTK_TYPE_SOURCE_PRINT_JOB            (gtk_source_print_job_get_type ())
39 #define GTK_SOURCE_PRINT_JOB(obj)            (G_TYPE_CHECK_INSTANCE_CAST ((obj), GTK_TYPE_SOURCE_PRINT_JOB, GtkSourcePrintJob))
40 #define GTK_SOURCE_PRINT_JOB_CLASS(klass)    (G_TYPE_CHECK_CLASS_CAST ((klass), GTK_TYPE_SOURCE_PRINT_JOB, GtkSourcePrintJobClass))
41 #define GTK_IS_SOURCE_PRINT_JOB(obj)         (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GTK_TYPE_SOURCE_PRINT_JOB))
42 #define GTK_IS_SOURCE_PRINT_JOB_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GTK_TYPE_SOURCE_PRINT_JOB))
43 #define GTK_SOURCE_PRINT_JOB_GET_CLASS(obj)  (G_TYPE_INSTANCE_GET_CLASS ((obj), GTK_TYPE_SOURCE_PRINT_JOB, GtkSourcePrintJobClass))
44
45 typedef struct _GtkSourcePrintJob         GtkSourcePrintJob;
46 typedef struct _GtkSourcePrintJobClass    GtkSourcePrintJobClass;
47 typedef struct _GtkSourcePrintJobPrivate  GtkSourcePrintJobPrivate;
48
49 struct _GtkSourcePrintJob
50 {
51         GObject parent_instance;
52
53         GtkSourcePrintJobPrivate *priv;
54 };
55
56 struct _GtkSourcePrintJobClass
57 {
58         GObjectClass parent_class;
59
60         void   (* begin_page)    (GtkSourcePrintJob  *job);
61         void   (* finished)      (GtkSourcePrintJob  *job);
62 };
63
64 /* we want the idle handler to run before the view validation, but do
65  * not interfere with ui updates */
66 #define GTK_SOURCE_PRINT_JOB_PRIORITY ((GDK_PRIORITY_REDRAW + GTK_TEXT_VIEW_PRIORITY_VALIDATE) / 2)
67
68 GType              gtk_source_print_job_get_type               (void) G_GNUC_CONST;
69
70 /* constructor functions */
71 GtkSourcePrintJob *gtk_source_print_job_new                    (GnomePrintConfig  *config);
72 GtkSourcePrintJob *gtk_source_print_job_new_with_buffer        (GnomePrintConfig  *config,
73                                                                 GtkTextBuffer   *buffer);
74 /* print job basic configuration */
75 void               gtk_source_print_job_set_config             (GtkSourcePrintJob *job,
76                                                                 GnomePrintConfig  *config);
77 GnomePrintConfig  *gtk_source_print_job_get_config             (GtkSourcePrintJob *job);
78 void               gtk_source_print_job_set_buffer             (GtkSourcePrintJob *job,
79                                                                 GtkTextBuffer   *buffer);
80 GtkTextBuffer   *gtk_source_print_job_get_buffer             (GtkSourcePrintJob *job);
81
82 /* print job layout and style configuration */
83 //void               gtk_source_print_job_setup_from_view        (GtkSourcePrintJob *job,
84 //                                                              GtkSourceView     *view);
85 void               gtk_source_print_job_set_tabs_width         (GtkSourcePrintJob *job,
86                                                                 guint              tabs_width);
87 guint              gtk_source_print_job_get_tabs_width         (GtkSourcePrintJob *job);
88 void               gtk_source_print_job_set_wrap_mode          (GtkSourcePrintJob *job,
89                                                                 GtkWrapMode        wrap);
90 GtkWrapMode        gtk_source_print_job_get_wrap_mode          (GtkSourcePrintJob *job);
91 void               gtk_source_print_job_set_highlight          (GtkSourcePrintJob *job,
92                                                                 gboolean           highlight);
93 gboolean           gtk_source_print_job_get_highlight          (GtkSourcePrintJob *job);
94 void               gtk_source_print_job_set_font               (GtkSourcePrintJob *job,
95                                                                 const gchar       *font_name);
96 gchar             *gtk_source_print_job_get_font               (GtkSourcePrintJob *job);
97 void               gtk_source_print_job_set_numbers_font       (GtkSourcePrintJob *job,
98                                                                 const gchar       *font_name);
99 gchar             *gtk_source_print_job_get_numbers_font       (GtkSourcePrintJob *job);
100 void               gtk_source_print_job_set_print_numbers      (GtkSourcePrintJob *job,
101                                                                 guint              interval);
102 guint              gtk_source_print_job_get_print_numbers      (GtkSourcePrintJob *job);
103 void               gtk_source_print_job_set_text_margins       (GtkSourcePrintJob *job,
104                                                                 gdouble            top,
105                                                                 gdouble            bottom,
106                                                                 gdouble            left,
107                                                                 gdouble            right);
108 void               gtk_source_print_job_get_text_margins       (GtkSourcePrintJob *job,
109                                                                 gdouble           *top,
110                                                                 gdouble           *bottom,
111                                                                 gdouble           *left,
112                                                                 gdouble           *right);
113
114 /* New non-deprecated font-setting API */
115 void                   gtk_source_print_job_set_font_desc               (GtkSourcePrintJob    *job,
116                                                                          PangoFontDescription *desc);
117 PangoFontDescription  *gtk_source_print_job_get_font_desc               (GtkSourcePrintJob    *job);
118 void                   gtk_source_print_job_set_numbers_font_desc       (GtkSourcePrintJob    *job,
119                                                                          PangoFontDescription *desc);
120 PangoFontDescription  *gtk_source_print_job_get_numbers_font_desc       (GtkSourcePrintJob    *job);
121 void                   gtk_source_print_job_set_header_footer_font_desc (GtkSourcePrintJob    *job,
122                                                                          PangoFontDescription *desc);
123 PangoFontDescription  *gtk_source_print_job_get_header_footer_font_desc (GtkSourcePrintJob    *job);
124
125 /* printing operations */
126 GnomePrintJob     *gtk_source_print_job_print                  (GtkSourcePrintJob *job);
127 GnomePrintJob     *gtk_source_print_job_print_range            (GtkSourcePrintJob *job,
128                                                                 const GtkTextIter *start,
129                                                                 const GtkTextIter *end);
130
131 /* asynchronous printing */
132 gboolean           gtk_source_print_job_print_range_async      (GtkSourcePrintJob *job,
133                                                                 const GtkTextIter *start,
134                                                                 const GtkTextIter *end);
135 void               gtk_source_print_job_cancel                 (GtkSourcePrintJob *job);
136 GnomePrintJob     *gtk_source_print_job_get_print_job          (GtkSourcePrintJob *job);
137
138 /* information for asynchronous ops and headers and footers callback */
139 guint              gtk_source_print_job_get_page               (GtkSourcePrintJob *job);
140 guint              gtk_source_print_job_get_page_count         (GtkSourcePrintJob *job);
141 GnomePrintContext *gtk_source_print_job_get_print_context      (GtkSourcePrintJob *job);
142
143
144 /* header and footer */
145 void               gtk_source_print_job_set_print_header       (GtkSourcePrintJob *job,
146                                                                 gboolean           setting);
147 gboolean           gtk_source_print_job_get_print_header       (GtkSourcePrintJob *job);
148 void               gtk_source_print_job_set_print_footer       (GtkSourcePrintJob *job,
149                                                                 gboolean           setting);
150 gboolean           gtk_source_print_job_get_print_footer       (GtkSourcePrintJob *job);
151 void               gtk_source_print_job_set_header_footer_font (GtkSourcePrintJob *job,
152                                                                 const gchar       *font_name);
153 gchar             *gtk_source_print_job_get_header_footer_font (GtkSourcePrintJob *job);
154 /* format strings are strftime like */
155 void               gtk_source_print_job_set_header_format      (GtkSourcePrintJob *job,
156                                                                 const gchar       *left,
157                                                                 const gchar       *center,
158                                                                 const gchar       *right,
159                                                                 gboolean           separator);
160 void               gtk_source_print_job_set_footer_format      (GtkSourcePrintJob *job,
161                                                                 const gchar       *left,
162                                                                 const gchar       *center,
163                                                                 const gchar       *right,
164                                                                 gboolean           separator);
165
166 G_END_DECLS
167
168 #endif /* __GTK_SOURCE_PRINT_JOB_H__ */
169 #endif