1/* GTK - The GIMP Toolkit
2 * gtkprintsettings.h: Print Settings
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_SETTINGS_H__
20#define __GTK_PRINT_SETTINGS_H__
21
22#if !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
23#error "Only <gtk/gtk.h> can be included directly."
24#endif
25
26#include <gtk/gtkpapersize.h>
27
28G_BEGIN_DECLS
29
30typedef struct _GtkPrintSettings GtkPrintSettings;
31
32#define GTK_TYPE_PRINT_SETTINGS (gtk_print_settings_get_type ())
33#define GTK_PRINT_SETTINGS(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GTK_TYPE_PRINT_SETTINGS, GtkPrintSettings))
34#define GTK_IS_PRINT_SETTINGS(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GTK_TYPE_PRINT_SETTINGS))
35
36typedef void (*GtkPrintSettingsFunc) (const char *key,
37 const char *value,
38 gpointer user_data);
39
40typedef struct _GtkPageRange GtkPageRange;
41
42/**
43 * GtkPageRange:
44 * @start: start of page range.
45 * @end: end of page range.
46 *
47 * A range of pages to print.
48 *
49 * See also [method@Gtk.PrintSettings.set_page_ranges].
50 */
51struct _GtkPageRange
52{
53 int start;
54 int end;
55};
56
57GDK_AVAILABLE_IN_ALL
58GType gtk_print_settings_get_type (void) G_GNUC_CONST;
59GDK_AVAILABLE_IN_ALL
60GtkPrintSettings *gtk_print_settings_new (void);
61
62GDK_AVAILABLE_IN_ALL
63GtkPrintSettings *gtk_print_settings_copy (GtkPrintSettings *other);
64
65GDK_AVAILABLE_IN_ALL
66GtkPrintSettings *gtk_print_settings_new_from_file (const char *file_name,
67 GError **error);
68GDK_AVAILABLE_IN_ALL
69gboolean gtk_print_settings_load_file (GtkPrintSettings *settings,
70 const char *file_name,
71 GError **error);
72GDK_AVAILABLE_IN_ALL
73gboolean gtk_print_settings_to_file (GtkPrintSettings *settings,
74 const char *file_name,
75 GError **error);
76GDK_AVAILABLE_IN_ALL
77GtkPrintSettings *gtk_print_settings_new_from_key_file (GKeyFile *key_file,
78 const char *group_name,
79 GError **error);
80GDK_AVAILABLE_IN_ALL
81gboolean gtk_print_settings_load_key_file (GtkPrintSettings *settings,
82 GKeyFile *key_file,
83 const char *group_name,
84 GError **error);
85GDK_AVAILABLE_IN_ALL
86void gtk_print_settings_to_key_file (GtkPrintSettings *settings,
87 GKeyFile *key_file,
88 const char *group_name);
89GDK_AVAILABLE_IN_ALL
90gboolean gtk_print_settings_has_key (GtkPrintSettings *settings,
91 const char *key);
92GDK_AVAILABLE_IN_ALL
93const char * gtk_print_settings_get (GtkPrintSettings *settings,
94 const char *key);
95GDK_AVAILABLE_IN_ALL
96void gtk_print_settings_set (GtkPrintSettings *settings,
97 const char *key,
98 const char *value);
99GDK_AVAILABLE_IN_ALL
100void gtk_print_settings_unset (GtkPrintSettings *settings,
101 const char *key);
102GDK_AVAILABLE_IN_ALL
103void gtk_print_settings_foreach (GtkPrintSettings *settings,
104 GtkPrintSettingsFunc func,
105 gpointer user_data);
106GDK_AVAILABLE_IN_ALL
107gboolean gtk_print_settings_get_bool (GtkPrintSettings *settings,
108 const char *key);
109GDK_AVAILABLE_IN_ALL
110void gtk_print_settings_set_bool (GtkPrintSettings *settings,
111 const char *key,
112 gboolean value);
113GDK_AVAILABLE_IN_ALL
114double gtk_print_settings_get_double (GtkPrintSettings *settings,
115 const char *key);
116GDK_AVAILABLE_IN_ALL
117double gtk_print_settings_get_double_with_default (GtkPrintSettings *settings,
118 const char *key,
119 double def);
120GDK_AVAILABLE_IN_ALL
121void gtk_print_settings_set_double (GtkPrintSettings *settings,
122 const char *key,
123 double value);
124GDK_AVAILABLE_IN_ALL
125double gtk_print_settings_get_length (GtkPrintSettings *settings,
126 const char *key,
127 GtkUnit unit);
128GDK_AVAILABLE_IN_ALL
129void gtk_print_settings_set_length (GtkPrintSettings *settings,
130 const char *key,
131 double value,
132 GtkUnit unit);
133GDK_AVAILABLE_IN_ALL
134int gtk_print_settings_get_int (GtkPrintSettings *settings,
135 const char *key);
136GDK_AVAILABLE_IN_ALL
137int gtk_print_settings_get_int_with_default (GtkPrintSettings *settings,
138 const char *key,
139 int def);
140GDK_AVAILABLE_IN_ALL
141void gtk_print_settings_set_int (GtkPrintSettings *settings,
142 const char *key,
143 int value);
144
145#define GTK_PRINT_SETTINGS_PRINTER "printer"
146#define GTK_PRINT_SETTINGS_ORIENTATION "orientation"
147#define GTK_PRINT_SETTINGS_PAPER_FORMAT "paper-format"
148#define GTK_PRINT_SETTINGS_PAPER_WIDTH "paper-width"
149#define GTK_PRINT_SETTINGS_PAPER_HEIGHT "paper-height"
150#define GTK_PRINT_SETTINGS_N_COPIES "n-copies"
151#define GTK_PRINT_SETTINGS_DEFAULT_SOURCE "default-source"
152#define GTK_PRINT_SETTINGS_QUALITY "quality"
153#define GTK_PRINT_SETTINGS_RESOLUTION "resolution"
154#define GTK_PRINT_SETTINGS_USE_COLOR "use-color"
155#define GTK_PRINT_SETTINGS_DUPLEX "duplex"
156#define GTK_PRINT_SETTINGS_COLLATE "collate"
157#define GTK_PRINT_SETTINGS_REVERSE "reverse"
158#define GTK_PRINT_SETTINGS_MEDIA_TYPE "media-type"
159#define GTK_PRINT_SETTINGS_DITHER "dither"
160#define GTK_PRINT_SETTINGS_SCALE "scale"
161#define GTK_PRINT_SETTINGS_PRINT_PAGES "print-pages"
162#define GTK_PRINT_SETTINGS_PAGE_RANGES "page-ranges"
163#define GTK_PRINT_SETTINGS_PAGE_SET "page-set"
164#define GTK_PRINT_SETTINGS_FINISHINGS "finishings"
165#define GTK_PRINT_SETTINGS_NUMBER_UP "number-up"
166#define GTK_PRINT_SETTINGS_NUMBER_UP_LAYOUT "number-up-layout"
167#define GTK_PRINT_SETTINGS_OUTPUT_BIN "output-bin"
168#define GTK_PRINT_SETTINGS_RESOLUTION_X "resolution-x"
169#define GTK_PRINT_SETTINGS_RESOLUTION_Y "resolution-y"
170#define GTK_PRINT_SETTINGS_PRINTER_LPI "printer-lpi"
171
172/**
173 * GTK_PRINT_SETTINGS_OUTPUT_DIR:
174 *
175 * The key used by the “Print to file” printer to store the
176 * directory to which the output should be written.
177 */
178#define GTK_PRINT_SETTINGS_OUTPUT_DIR "output-dir"
179
180/**
181 * GTK_PRINT_SETTINGS_OUTPUT_BASENAME:
182 *
183 * The key used by the “Print to file” printer to store the file
184 * name of the output without the path to the directory and the
185 * file extension.
186 */
187#define GTK_PRINT_SETTINGS_OUTPUT_BASENAME "output-basename"
188
189/**
190 * GTK_PRINT_SETTINGS_OUTPUT_FILE_FORMAT:
191 *
192 * The key used by the “Print to file” printer to store the format
193 * of the output. The supported values are “PS” and “PDF”.
194 */
195#define GTK_PRINT_SETTINGS_OUTPUT_FILE_FORMAT "output-file-format"
196
197/**
198 * GTK_PRINT_SETTINGS_OUTPUT_URI:
199 *
200 * The key used by the “Print to file” printer to store the URI
201 * to which the output should be written. GTK itself supports
202 * only “file://” URIs.
203 */
204#define GTK_PRINT_SETTINGS_OUTPUT_URI "output-uri"
205
206#define GTK_PRINT_SETTINGS_WIN32_DRIVER_VERSION "win32-driver-version"
207#define GTK_PRINT_SETTINGS_WIN32_DRIVER_EXTRA "win32-driver-extra"
208
209/* Helpers: */
210
211GDK_AVAILABLE_IN_ALL
212const char * gtk_print_settings_get_printer (GtkPrintSettings *settings);
213GDK_AVAILABLE_IN_ALL
214void gtk_print_settings_set_printer (GtkPrintSettings *settings,
215 const char *printer);
216GDK_AVAILABLE_IN_ALL
217GtkPageOrientation gtk_print_settings_get_orientation (GtkPrintSettings *settings);
218GDK_AVAILABLE_IN_ALL
219void gtk_print_settings_set_orientation (GtkPrintSettings *settings,
220 GtkPageOrientation orientation);
221GDK_AVAILABLE_IN_ALL
222GtkPaperSize * gtk_print_settings_get_paper_size (GtkPrintSettings *settings);
223GDK_AVAILABLE_IN_ALL
224void gtk_print_settings_set_paper_size (GtkPrintSettings *settings,
225 GtkPaperSize *paper_size);
226GDK_AVAILABLE_IN_ALL
227double gtk_print_settings_get_paper_width (GtkPrintSettings *settings,
228 GtkUnit unit);
229GDK_AVAILABLE_IN_ALL
230void gtk_print_settings_set_paper_width (GtkPrintSettings *settings,
231 double width,
232 GtkUnit unit);
233GDK_AVAILABLE_IN_ALL
234double gtk_print_settings_get_paper_height (GtkPrintSettings *settings,
235 GtkUnit unit);
236GDK_AVAILABLE_IN_ALL
237void gtk_print_settings_set_paper_height (GtkPrintSettings *settings,
238 double height,
239 GtkUnit unit);
240GDK_AVAILABLE_IN_ALL
241gboolean gtk_print_settings_get_use_color (GtkPrintSettings *settings);
242GDK_AVAILABLE_IN_ALL
243void gtk_print_settings_set_use_color (GtkPrintSettings *settings,
244 gboolean use_color);
245GDK_AVAILABLE_IN_ALL
246gboolean gtk_print_settings_get_collate (GtkPrintSettings *settings);
247GDK_AVAILABLE_IN_ALL
248void gtk_print_settings_set_collate (GtkPrintSettings *settings,
249 gboolean collate);
250GDK_AVAILABLE_IN_ALL
251gboolean gtk_print_settings_get_reverse (GtkPrintSettings *settings);
252GDK_AVAILABLE_IN_ALL
253void gtk_print_settings_set_reverse (GtkPrintSettings *settings,
254 gboolean reverse);
255GDK_AVAILABLE_IN_ALL
256GtkPrintDuplex gtk_print_settings_get_duplex (GtkPrintSettings *settings);
257GDK_AVAILABLE_IN_ALL
258void gtk_print_settings_set_duplex (GtkPrintSettings *settings,
259 GtkPrintDuplex duplex);
260GDK_AVAILABLE_IN_ALL
261GtkPrintQuality gtk_print_settings_get_quality (GtkPrintSettings *settings);
262GDK_AVAILABLE_IN_ALL
263void gtk_print_settings_set_quality (GtkPrintSettings *settings,
264 GtkPrintQuality quality);
265GDK_AVAILABLE_IN_ALL
266int gtk_print_settings_get_n_copies (GtkPrintSettings *settings);
267GDK_AVAILABLE_IN_ALL
268void gtk_print_settings_set_n_copies (GtkPrintSettings *settings,
269 int num_copies);
270GDK_AVAILABLE_IN_ALL
271int gtk_print_settings_get_number_up (GtkPrintSettings *settings);
272GDK_AVAILABLE_IN_ALL
273void gtk_print_settings_set_number_up (GtkPrintSettings *settings,
274 int number_up);
275GDK_AVAILABLE_IN_ALL
276GtkNumberUpLayout gtk_print_settings_get_number_up_layout (GtkPrintSettings *settings);
277GDK_AVAILABLE_IN_ALL
278void gtk_print_settings_set_number_up_layout (GtkPrintSettings *settings,
279 GtkNumberUpLayout number_up_layout);
280GDK_AVAILABLE_IN_ALL
281int gtk_print_settings_get_resolution (GtkPrintSettings *settings);
282GDK_AVAILABLE_IN_ALL
283void gtk_print_settings_set_resolution (GtkPrintSettings *settings,
284 int resolution);
285GDK_AVAILABLE_IN_ALL
286int gtk_print_settings_get_resolution_x (GtkPrintSettings *settings);
287GDK_AVAILABLE_IN_ALL
288int gtk_print_settings_get_resolution_y (GtkPrintSettings *settings);
289GDK_AVAILABLE_IN_ALL
290void gtk_print_settings_set_resolution_xy (GtkPrintSettings *settings,
291 int resolution_x,
292 int resolution_y);
293GDK_AVAILABLE_IN_ALL
294double gtk_print_settings_get_printer_lpi (GtkPrintSettings *settings);
295GDK_AVAILABLE_IN_ALL
296void gtk_print_settings_set_printer_lpi (GtkPrintSettings *settings,
297 double lpi);
298GDK_AVAILABLE_IN_ALL
299double gtk_print_settings_get_scale (GtkPrintSettings *settings);
300GDK_AVAILABLE_IN_ALL
301void gtk_print_settings_set_scale (GtkPrintSettings *settings,
302 double scale);
303GDK_AVAILABLE_IN_ALL
304GtkPrintPages gtk_print_settings_get_print_pages (GtkPrintSettings *settings);
305GDK_AVAILABLE_IN_ALL
306void gtk_print_settings_set_print_pages (GtkPrintSettings *settings,
307 GtkPrintPages pages);
308GDK_AVAILABLE_IN_ALL
309GtkPageRange * gtk_print_settings_get_page_ranges (GtkPrintSettings *settings,
310 int *num_ranges);
311GDK_AVAILABLE_IN_ALL
312void gtk_print_settings_set_page_ranges (GtkPrintSettings *settings,
313 GtkPageRange *page_ranges,
314 int num_ranges);
315GDK_AVAILABLE_IN_ALL
316GtkPageSet gtk_print_settings_get_page_set (GtkPrintSettings *settings);
317GDK_AVAILABLE_IN_ALL
318void gtk_print_settings_set_page_set (GtkPrintSettings *settings,
319 GtkPageSet page_set);
320GDK_AVAILABLE_IN_ALL
321const char * gtk_print_settings_get_default_source (GtkPrintSettings *settings);
322GDK_AVAILABLE_IN_ALL
323void gtk_print_settings_set_default_source (GtkPrintSettings *settings,
324 const char *default_source);
325GDK_AVAILABLE_IN_ALL
326const char * gtk_print_settings_get_media_type (GtkPrintSettings *settings);
327GDK_AVAILABLE_IN_ALL
328void gtk_print_settings_set_media_type (GtkPrintSettings *settings,
329 const char *media_type);
330GDK_AVAILABLE_IN_ALL
331const char * gtk_print_settings_get_dither (GtkPrintSettings *settings);
332GDK_AVAILABLE_IN_ALL
333void gtk_print_settings_set_dither (GtkPrintSettings *settings,
334 const char *dither);
335GDK_AVAILABLE_IN_ALL
336const char * gtk_print_settings_get_finishings (GtkPrintSettings *settings);
337GDK_AVAILABLE_IN_ALL
338void gtk_print_settings_set_finishings (GtkPrintSettings *settings,
339 const char *finishings);
340GDK_AVAILABLE_IN_ALL
341const char * gtk_print_settings_get_output_bin (GtkPrintSettings *settings);
342GDK_AVAILABLE_IN_ALL
343void gtk_print_settings_set_output_bin (GtkPrintSettings *settings,
344 const char *output_bin);
345
346GDK_AVAILABLE_IN_ALL
347GVariant *gtk_print_settings_to_gvariant (GtkPrintSettings *settings);
348GDK_AVAILABLE_IN_ALL
349GtkPrintSettings *gtk_print_settings_new_from_gvariant (GVariant *variant);
350
351
352G_END_DECLS
353
354#endif /* __GTK_PRINT_SETTINGS_H__ */
355

source code of gtk/gtk/gtkprintsettings.h