1 /* GTK - The GIMP Toolkit
2 * gtkprintsettings.c: Print Settings
3 * Copyright (C) 2006, Red Hat, Inc.
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.
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.
15 * You should have received a copy of the GNU Lesser General Public
16 * License along with this library; if not, write to the
17 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
18 * Boston, MA 02111-1307, USA.
24 #include <glib/gprintf.h>
25 #include "gtkprintsettings.h"
28 #define MM_PER_INCH 25.4
29 #define POINTS_PER_INCH 72
31 typedef struct _GtkPrintSettingsClass GtkPrintSettingsClass;
33 #define GTK_IS_PRINT_SETTINGS_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GTK_TYPE_PRINT_SETTINGS))
34 #define GTK_PRINT_SETTINGS_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GTK_TYPE_PRINT_SETTINGS, GtkPrintSettingsClass))
35 #define GTK_PRINT_SETTINGS_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GTK_TYPE_PRINT_SETTINGS, GtkPrintSettingsClass))
37 struct _GtkPrintSettings
39 GObject parent_instance;
44 struct _GtkPrintSettingsClass
46 GObjectClass parent_class;
49 G_DEFINE_TYPE (GtkPrintSettings, gtk_print_settings, G_TYPE_OBJECT)
52 to_mm (gdouble len, GtkUnit unit)
59 return len * MM_PER_INCH;
62 g_warning ("Unsupported unit");
65 return len * (MM_PER_INCH / POINTS_PER_INCH);
71 from_mm (gdouble len, GtkUnit unit)
78 return len / MM_PER_INCH;
81 g_warning ("Unsupported unit");
84 return len / (MM_PER_INCH / POINTS_PER_INCH);
90 gtk_print_settings_finalize (GObject *object)
92 GtkPrintSettings *settings = GTK_PRINT_SETTINGS (object);
94 g_hash_table_destroy (settings->hash);
96 G_OBJECT_CLASS (gtk_print_settings_parent_class)->finalize (object);
100 gtk_print_settings_init (GtkPrintSettings *settings)
102 settings->hash = g_hash_table_new_full (g_str_hash, g_str_equal,
107 gtk_print_settings_class_init (GtkPrintSettingsClass *class)
109 GObjectClass *gobject_class = (GObjectClass *)class;
111 gobject_class->finalize = gtk_print_settings_finalize;
115 * gtk_print_settings_new:
117 * Creates a new #GtkPrintSettings object.
119 * Return value: a new #GtkPrintSettings object
124 gtk_print_settings_new (void)
126 return g_object_new (GTK_TYPE_PRINT_SETTINGS, NULL);
130 copy_hash_entry (gpointer key,
134 GtkPrintSettings *settings = user_data;
136 g_hash_table_insert (settings->hash,
144 * gtk_print_settings_copy:
145 * @other: a #GtkPrintSettings
147 * Copies a #GtkPrintSettings object.
149 * Return value: a newly allocated copy of @other
154 gtk_print_settings_copy (GtkPrintSettings *other)
156 GtkPrintSettings *settings;
161 g_return_val_if_fail (GTK_IS_PRINT_SETTINGS (other), NULL);
163 settings = gtk_print_settings_new ();
165 g_hash_table_foreach (other->hash,
173 * gtk_print_settings_get:
174 * @settings: a #GtkPrintSettings
177 * Looks up the string value associated with @key.
179 * Return value: the string value for @key
183 G_CONST_RETURN gchar *
184 gtk_print_settings_get (GtkPrintSettings *settings,
187 return g_hash_table_lookup (settings->hash, key);
191 * gtk_print_settings_set:
192 * @settings: a #GtkPrintSettings
194 * @value: a string value, or %NULL
196 * Associates @value with @key.
201 gtk_print_settings_set (GtkPrintSettings *settings,
206 gtk_print_settings_unset (settings, key);
208 g_hash_table_insert (settings->hash,
214 * gtk_print_settings_unset:
215 * @settings: a #GtkPrintSettings
218 * Removes any value associated with @key.
219 * This has the same effect as setting the value to %NULL.
224 gtk_print_settings_unset (GtkPrintSettings *settings,
227 g_hash_table_remove (settings->hash, key);
231 * gtk_print_settings_has_key:
232 * @settings: a #GtkPrintSettings
235 * Returns %TRUE, if a value is associated with @key.
237 * Return value: %TRUE, if @key has a value
242 gtk_print_settings_has_key (GtkPrintSettings *settings,
245 return gtk_print_settings_get (settings, key) != NULL;
250 * gtk_print_settings_get_bool:
251 * @settings: a #GtkPrintSettings
254 * Returns the boolean represented by the value
255 * that is associated with @key.
257 * The string "true" represents %TRUE, any other
260 * Return value: %TRUE, if @key maps to a true value.
265 gtk_print_settings_get_bool (GtkPrintSettings *settings,
270 val = gtk_print_settings_get (settings, key);
271 if (val != NULL && strcmp (val, "true") == 0)
278 * gtk_print_settings_get_bool_with_default:
279 * @settings: a #GtkPrintSettings
281 * @default_val: the default value
283 * Returns the boolean represented by the value
284 * that is associated with @key, or @default_val
285 * if the value does not represent a boolean.
287 * The string "true" represents %TRUE, the string
288 * "false" represents %FALSE.
290 * Return value: the boolean value associated with @key
295 gtk_print_settings_get_bool_with_default (GtkPrintSettings *settings,
297 gboolean default_val)
301 val = gtk_print_settings_get (settings, key);
302 if (val != NULL && strcmp (val, "true") == 0)
305 if (val != NULL && strcmp (val, "false") == 0)
312 * gtk_print_settings_set_bool:
313 * @settings: a #GtkPrintSettings
317 * Sets @key to a boolean value.
322 gtk_print_settings_set_bool (GtkPrintSettings *settings,
327 gtk_print_settings_set (settings, key, "true");
329 gtk_print_settings_set (settings, key, "false");
333 * gtk_print_settings_get_double_with_default:
334 * @settings: a #GtkPrintSettings
336 * @def: the default value
338 * Returns the floating point number represented by
339 * the value that is associated with @key, or @default_val
340 * if the value does not represent a floating point number.
342 * Floating point numbers are parsed with g_ascii_strtod().
344 * Return value: the floating point number associated with @key
349 gtk_print_settings_get_double_with_default (GtkPrintSettings *settings,
355 val = gtk_print_settings_get (settings, key);
359 return g_ascii_strtod (val, NULL);
363 * gtk_print_settings_get_double:
364 * @settings: a #GtkPrintSettings
367 * Returns the double value associated with @key, or 0.
369 * Return value: the double value of @key
374 gtk_print_settings_get_double (GtkPrintSettings *settings,
377 return gtk_print_settings_get_double_with_default (settings, key, 0.0);
381 * gtk_print_settings_set_double:
382 * @settings: a #GtkPrintSettings
384 * @value: a double value
386 * Sets @key to a double value.
391 gtk_print_settings_set_double (GtkPrintSettings *settings,
395 gchar buf[G_ASCII_DTOSTR_BUF_SIZE];
397 g_ascii_dtostr (buf, G_ASCII_DTOSTR_BUF_SIZE, value);
398 gtk_print_settings_set (settings, key, buf);
402 * gtk_print_settings_get_length:
403 * @settings: a #GtkPrintSettings
405 * @unit: the unit of the return value
407 * Returns the value associated with @key, interpreted
408 * as a length. The returned value is converted to @units.
410 * Return value: the length value of @key, converted to @unit
415 gtk_print_settings_get_length (GtkPrintSettings *settings,
419 gdouble length = gtk_print_settings_get_double (settings, key);
420 return from_mm (length, unit);
424 * gtk_print_settings_set_length:
425 * @settings: a #GtkPrintSettings
428 * @unit: the unit of @length
430 * Associates a length in units of @unit with @key.
435 gtk_print_settings_set_length (GtkPrintSettings *settings,
440 gtk_print_settings_set_double (settings, key,
441 to_mm (length, unit));
445 * gtk_print_settings_get_int_with_default:
446 * @settings: a #GtkPrintSettings
448 * @def: the default value
450 * Returns the value of @key, interpreted as
451 * an integer, or the default value.
453 * Return value: the integer value of @key
458 gtk_print_settings_get_int_with_default (GtkPrintSettings *settings,
464 val = gtk_print_settings_get (settings, key);
472 * gtk_print_settings_get_int:
473 * @settings: a #GtkPrintSettings
476 * Returns the integer value of @key, or 0.
478 * Return value: the integer value of @key
483 gtk_print_settings_get_int (GtkPrintSettings *settings,
486 return gtk_print_settings_get_int_with_default (settings, key, 0);
490 * gtk_print_settings_set_int:
491 * @settings: a #GtkPrintSettings
495 * Sets @key to an integer value.
500 gtk_print_settings_set_int (GtkPrintSettings *settings,
505 g_sprintf (buf, "%d", value);
506 gtk_print_settings_set (settings, key, buf);
510 * gtk_print_settings_foreach:
511 * @settings: a #GtkPrintSettings
512 * @func: the function to call
513 * @user_data: user data for @func
515 * Calls @func for each key-value pair of @settings.
520 gtk_print_settings_foreach (GtkPrintSettings *settings,
521 GtkPrintSettingsFunc func,
524 g_hash_table_foreach (settings->hash, (GHFunc)func, user_data);
528 * gtk_print_settings_get_printer:
529 * @settings: a #GtkPrintSettings
531 * Convenience function to obtain the value of
532 * %GTK_PRINT_SETTINGS_PRINTER.
534 * Return value: the printer name
538 G_CONST_RETURN gchar *
539 gtk_print_settings_get_printer (GtkPrintSettings *settings)
541 return gtk_print_settings_get (settings, GTK_PRINT_SETTINGS_PRINTER);
546 * gtk_print_settings_set_printer:
547 * @settings: a #GtkPrintSettings
548 * @printer: the printer name
550 * Convenience function to set %GTK_PRINT_SETTINGS_PRINTER
556 gtk_print_settings_set_printer (GtkPrintSettings *settings,
557 const gchar *printer)
559 gtk_print_settings_set (settings, GTK_PRINT_SETTINGS_PRINTER, printer);
563 * gtk_print_settings_get_orientation:
564 * @settings: a #GtkPrintSettings
566 * Get the value of %GTK_PRINT_SETTINGS_ORIENTATION,
567 * converted to a #GtkPageOrientation.
569 * Return value: the orientation
574 gtk_print_settings_get_orientation (GtkPrintSettings *settings)
578 val = gtk_print_settings_get (settings, GTK_PRINT_SETTINGS_ORIENTATION);
580 if (val == NULL || strcmp (val, "portrait") == 0)
581 return GTK_PAGE_ORIENTATION_PORTRAIT;
583 if (strcmp (val, "landscape") == 0)
584 return GTK_PAGE_ORIENTATION_LANDSCAPE;
586 if (strcmp (val, "reverse_portrait") == 0)
587 return GTK_PAGE_ORIENTATION_REVERSE_PORTRAIT;
589 if (strcmp (val, "reverse_landscape") == 0)
590 return GTK_PAGE_ORIENTATION_REVERSE_LANDSCAPE;
592 return GTK_PAGE_ORIENTATION_PORTRAIT;
596 * gtk_print_settings_set_orientation:
597 * @settings: a #GtkPrintSettings
598 * @orientation: a page orientation
600 * Sets the value of %GTK_PRINT_SETTINGS_ORIENTATION.
605 gtk_print_settings_set_orientation (GtkPrintSettings *settings,
606 GtkPageOrientation orientation)
612 case GTK_PAGE_ORIENTATION_LANDSCAPE:
616 case GTK_PAGE_ORIENTATION_PORTRAIT:
619 case GTK_PAGE_ORIENTATION_REVERSE_LANDSCAPE:
620 val = "reverse_landscape";
622 case GTK_PAGE_ORIENTATION_REVERSE_PORTRAIT:
623 val = "reverse_portrait";
626 gtk_print_settings_set (settings, GTK_PRINT_SETTINGS_ORIENTATION, val);
630 * gtk_print_settings_get_paper_size:
631 * @settings: a #GtkPrintSettings
633 * Gets the value of %GTK_PRINT_SETTINGS_PAPER_FORMAT,
634 * converted to a #GtkPaperSize.
636 * Return value: the paper size
641 gtk_print_settings_get_paper_size (GtkPrintSettings *settings)
647 val = gtk_print_settings_get (settings, GTK_PRINT_SETTINGS_PAPER_FORMAT);
651 if (g_str_has_prefix (val, "custom-"))
653 name = val + strlen ("custom-");
654 w = gtk_print_settings_get_paper_width (settings, GTK_UNIT_MM);
655 h = gtk_print_settings_get_paper_height (settings, GTK_UNIT_MM);
656 return gtk_paper_size_new_custom (name, name, w, h, GTK_UNIT_MM);
659 return gtk_paper_size_new (val);
663 * gtk_print_settings_set_paper_size:
664 * @settings: a #GtkPrintSettings
665 * @paper_size: a paper size
667 * Sets the value of %GTK_PRINT_SETTINGS_PAPER_FORMAT,
668 * %GTK_PRINT_SETTINGS_PAPER_WIDTH and
669 * %GTK_PRINT_SETTINGS_PAPER_HEIGHT.
674 gtk_print_settings_set_paper_size (GtkPrintSettings *settings,
675 GtkPaperSize *paper_size)
679 if (paper_size == NULL)
681 gtk_print_settings_set (settings, GTK_PRINT_SETTINGS_PAPER_FORMAT, NULL);
682 gtk_print_settings_set (settings, GTK_PRINT_SETTINGS_PAPER_WIDTH, NULL);
683 gtk_print_settings_set (settings, GTK_PRINT_SETTINGS_PAPER_HEIGHT, NULL);
685 else if (gtk_paper_size_is_custom (paper_size))
687 custom_name = g_strdup_printf ("custom-%s",
688 gtk_paper_size_get_name (paper_size));
689 gtk_print_settings_set (settings, GTK_PRINT_SETTINGS_PAPER_FORMAT, custom_name);
690 g_free (custom_name);
691 gtk_print_settings_set_paper_width (settings,
692 gtk_paper_size_get_width (paper_size,
695 gtk_print_settings_set_paper_height (settings,
696 gtk_paper_size_get_height (paper_size,
701 gtk_print_settings_set (settings, GTK_PRINT_SETTINGS_PAPER_FORMAT,
702 gtk_paper_size_get_name (paper_size));
706 * gtk_print_settings_get_paper_width:
707 * @settings: a #GtkPrintSettings
708 * @unit: the unit for the return value
710 * Gets the value of %GTK_PRINT_SETTINGS_PAPER_WIDTH,
711 * converted to @unit.
713 * Return value: the paper width, in units of @unit
718 gtk_print_settings_get_paper_width (GtkPrintSettings *settings,
721 return gtk_print_settings_get_length (settings, GTK_PRINT_SETTINGS_PAPER_WIDTH, unit);
725 * gtk_print_settings_set_paper_width:
726 * @settings: a #GtkPrintSettings
727 * @width: the paper width
728 * @unit: the units of @width
730 * Sets the value of %GTK_PRINT_SETTINGS_PAPER_WIDTH.
735 gtk_print_settings_set_paper_width (GtkPrintSettings *settings,
739 gtk_print_settings_set_length (settings, GTK_PRINT_SETTINGS_PAPER_WIDTH, width, unit);
743 * gtk_print_settings_get_paper_height:
744 * @settings: a #GtkPrintSettings
745 * @unit: the unit for the return value
747 * Gets the value of %GTK_PRINT_SETTINGS_PAPER_HEIGHT,
748 * converted to @unit.
750 * Return value: the paper height, in units of @unit
755 gtk_print_settings_get_paper_height (GtkPrintSettings *settings,
758 return gtk_print_settings_get_length (settings,
759 GTK_PRINT_SETTINGS_PAPER_HEIGHT,
764 * gtk_print_settings_set_paper_height:
765 * @settings: a #GtkPrintSettings
766 * @height: the paper height
767 * @unit: the units of @height
769 * Sets the value of %GTK_PRINT_SETTINGS_PAPER_HEIGHT.
774 gtk_print_settings_set_paper_height (GtkPrintSettings *settings,
778 gtk_print_settings_set_length (settings,
779 GTK_PRINT_SETTINGS_PAPER_HEIGHT,
784 gtk_print_settings_get_use_color (GtkPrintSettings *settings)
786 return gtk_print_settings_get_bool_with_default (settings,
787 GTK_PRINT_SETTINGS_USE_COLOR,
792 gtk_print_settings_set_use_color (GtkPrintSettings *settings,
795 gtk_print_settings_set_bool (settings,
796 GTK_PRINT_SETTINGS_USE_COLOR,
801 gtk_print_settings_get_collate (GtkPrintSettings *settings)
803 return gtk_print_settings_get_bool (settings,
804 GTK_PRINT_SETTINGS_COLLATE);
808 gtk_print_settings_set_collate (GtkPrintSettings *settings,
811 gtk_print_settings_set_bool (settings,
812 GTK_PRINT_SETTINGS_COLLATE,
817 gtk_print_settings_get_reverse (GtkPrintSettings *settings)
819 return gtk_print_settings_get_bool (settings,
820 GTK_PRINT_SETTINGS_REVERSE);
824 gtk_print_settings_set_reverse (GtkPrintSettings *settings,
827 gtk_print_settings_set_bool (settings,
828 GTK_PRINT_SETTINGS_REVERSE,
833 gtk_print_settings_get_duplex (GtkPrintSettings *settings)
837 val = gtk_print_settings_get (settings, GTK_PRINT_SETTINGS_DUPLEX);
839 if (val == NULL || (strcmp (val, "simplex") == 0))
840 return GTK_PRINT_DUPLEX_SIMPLEX;
842 if (strcmp (val, "horizontal") == 0)
843 return GTK_PRINT_DUPLEX_HORIZONTAL;
845 if (strcmp (val, "vertical") == 0)
846 return GTK_PRINT_DUPLEX_HORIZONTAL;
848 return GTK_PRINT_DUPLEX_SIMPLEX;
852 gtk_print_settings_set_duplex (GtkPrintSettings *settings,
853 GtkPrintDuplex duplex)
860 case GTK_PRINT_DUPLEX_SIMPLEX:
863 case GTK_PRINT_DUPLEX_HORIZONTAL:
866 case GTK_PRINT_DUPLEX_VERTICAL:
871 gtk_print_settings_set (settings, GTK_PRINT_SETTINGS_DUPLEX, str);
875 gtk_print_settings_get_quality (GtkPrintSettings *settings)
879 val = gtk_print_settings_get (settings, GTK_PRINT_SETTINGS_QUALITY);
881 if (val == NULL || (strcmp (val, "normal") == 0))
882 return GTK_PRINT_QUALITY_NORMAL;
884 if (strcmp (val, "high") == 0)
885 return GTK_PRINT_QUALITY_HIGH;
887 if (strcmp (val, "low") == 0)
888 return GTK_PRINT_QUALITY_LOW;
890 if (strcmp (val, "draft") == 0)
891 return GTK_PRINT_QUALITY_DRAFT;
893 return GTK_PRINT_QUALITY_NORMAL;
897 gtk_print_settings_set_quality (GtkPrintSettings *settings,
898 GtkPrintQuality quality)
905 case GTK_PRINT_QUALITY_NORMAL:
908 case GTK_PRINT_QUALITY_HIGH:
911 case GTK_PRINT_QUALITY_LOW:
914 case GTK_PRINT_QUALITY_DRAFT:
919 gtk_print_settings_set (settings, GTK_PRINT_SETTINGS_QUALITY, str);
923 gtk_print_settings_get_page_set (GtkPrintSettings *settings)
927 val = gtk_print_settings_get (settings, GTK_PRINT_SETTINGS_PAGE_SET);
929 if (val == NULL || (strcmp (val, "all") == 0))
930 return GTK_PAGE_SET_ALL;
932 if (strcmp (val, "even") == 0)
933 return GTK_PAGE_SET_EVEN;
935 if (strcmp (val, "odd") == 0)
936 return GTK_PAGE_SET_ODD;
938 return GTK_PAGE_SET_ALL;
942 gtk_print_settings_set_page_set (GtkPrintSettings *settings,
950 case GTK_PAGE_SET_ALL:
953 case GTK_PAGE_SET_EVEN:
956 case GTK_PAGE_SET_ODD:
961 gtk_print_settings_set (settings, GTK_PRINT_SETTINGS_PAGE_SET, str);
965 gtk_print_settings_get_num_copies (GtkPrintSettings *settings)
967 return gtk_print_settings_get_int_with_default (settings, GTK_PRINT_SETTINGS_NUM_COPIES, 1);
971 gtk_print_settings_set_num_copies (GtkPrintSettings *settings,
974 gtk_print_settings_set_int (settings, GTK_PRINT_SETTINGS_NUM_COPIES,
979 gtk_print_settings_get_number_up (GtkPrintSettings *settings)
981 return gtk_print_settings_get_int (settings, GTK_PRINT_SETTINGS_NUMBER_UP);
985 gtk_print_settings_set_number_up (GtkPrintSettings *settings,
988 gtk_print_settings_set_int (settings, GTK_PRINT_SETTINGS_NUMBER_UP,
993 gtk_print_settings_get_resolution (GtkPrintSettings *settings)
995 return gtk_print_settings_get_int (settings, GTK_PRINT_SETTINGS_RESOLUTION);
999 gtk_print_settings_set_resolution (GtkPrintSettings *settings,
1002 gtk_print_settings_set_int (settings, GTK_PRINT_SETTINGS_RESOLUTION,
1007 gtk_print_settings_get_scale (GtkPrintSettings *settings)
1009 return gtk_print_settings_get_double_with_default (settings,
1010 GTK_PRINT_SETTINGS_SCALE,
1015 gtk_print_settings_set_scale (GtkPrintSettings *settings,
1018 gtk_print_settings_set_double (settings, GTK_PRINT_SETTINGS_SCALE,
1023 gtk_print_settings_get_print_to_file (GtkPrintSettings *settings)
1025 return gtk_print_settings_get_bool (settings,
1026 GTK_PRINT_SETTINGS_PRINT_TO_FILE);
1030 gtk_print_settings_set_print_to_file (GtkPrintSettings *settings,
1031 gboolean print_to_file)
1033 gtk_print_settings_set_bool (settings,
1034 GTK_PRINT_SETTINGS_PRINT_TO_FILE,
1039 gtk_print_settings_get_print_pages (GtkPrintSettings *settings)
1043 val = gtk_print_settings_get (settings, GTK_PRINT_SETTINGS_PRINT_PAGES);
1045 if (val == NULL || (strcmp (val, "all") == 0))
1046 return GTK_PRINT_PAGES_ALL;
1048 if (strcmp (val, "current") == 0)
1049 return GTK_PRINT_PAGES_CURRENT;
1051 if (strcmp (val, "ranges") == 0)
1052 return GTK_PRINT_PAGES_RANGES;
1054 return GTK_PRINT_PAGES_ALL;
1058 gtk_print_settings_set_print_pages (GtkPrintSettings *settings,
1059 GtkPrintPages print_pages)
1063 switch (print_pages)
1066 case GTK_PRINT_PAGES_ALL:
1069 case GTK_PRINT_PAGES_CURRENT:
1072 case GTK_PRINT_PAGES_RANGES:
1077 gtk_print_settings_set (settings, GTK_PRINT_SETTINGS_PRINT_PAGES, str);
1083 gtk_print_settings_get_page_ranges (GtkPrintSettings *settings,
1088 GtkPageRange *ranges;
1091 val = gtk_print_settings_get (settings, GTK_PRINT_SETTINGS_PAGE_RANGES);
1099 range_strs = g_strsplit (val, ",", 0);
1101 for (i = 0; range_strs[i] != NULL; i++)
1106 ranges = g_new0 (GtkPageRange, n);
1108 for (i = 0; i < n; i++)
1113 start = (gint)strtol (range_strs[i], &str, 10);
1119 end = (gint)strtol (str, NULL, 10);
1124 ranges[i].start = start;
1125 ranges[i].end = end;
1133 gtk_print_settings_set_page_ranges (GtkPrintSettings *settings,
1134 GtkPageRange *page_ranges,
1140 s = g_string_new ("");
1142 for (i = 0; i < num_ranges; i++)
1144 if (page_ranges[i].start == page_ranges[i].end)
1145 g_string_append_printf (s, "%d", page_ranges[i].start);
1147 g_string_append_printf (s, "%d-%d",
1148 page_ranges[i].start,
1149 page_ranges[i].end);
1150 if (i < num_ranges - 1)
1151 g_string_append (s, ",");
1155 gtk_print_settings_set (settings, GTK_PRINT_SETTINGS_PAGE_RANGES,
1158 g_string_free (s, TRUE);
1161 G_CONST_RETURN gchar *
1162 gtk_print_settings_get_default_source (GtkPrintSettings *settings)
1164 return gtk_print_settings_get (settings, GTK_PRINT_SETTINGS_DEFAULT_SOURCE);
1168 gtk_print_settings_set_default_source (GtkPrintSettings *settings,
1169 const gchar *default_source)
1171 gtk_print_settings_set (settings, GTK_PRINT_SETTINGS_DEFAULT_SOURCE, default_source);
1174 G_CONST_RETURN gchar *
1175 gtk_print_settings_get_media_type (GtkPrintSettings *settings)
1177 return gtk_print_settings_get (settings, GTK_PRINT_SETTINGS_MEDIA_TYPE);
1180 /* The set of media types is defined in PWG 5101.1-2002 PWG */
1182 gtk_print_settings_set_media_type (GtkPrintSettings *settings,
1183 const gchar *media_type)
1185 gtk_print_settings_set (settings, GTK_PRINT_SETTINGS_MEDIA_TYPE, media_type);
1189 G_CONST_RETURN gchar *
1190 gtk_print_settings_get_dither (GtkPrintSettings *settings)
1192 return gtk_print_settings_get (settings, GTK_PRINT_SETTINGS_DITHER);
1196 gtk_print_settings_set_dither (GtkPrintSettings *settings,
1197 const gchar *dither)
1199 gtk_print_settings_set (settings, GTK_PRINT_SETTINGS_DITHER, dither);
1203 gtk_print_settings_get_finishings (GtkPrintSettings *settings)
1205 return gtk_print_settings_get (settings, GTK_PRINT_SETTINGS_FINISHINGS);
1209 gtk_print_settings_set_finishings (GtkPrintSettings *settings,
1210 const gchar *finishings)
1212 gtk_print_settings_set (settings, GTK_PRINT_SETTINGS_FINISHINGS, finishings);
1215 G_CONST_RETURN gchar *
1216 gtk_print_settings_get_output_bin (GtkPrintSettings *settings)
1218 return gtk_print_settings_get (settings, GTK_PRINT_SETTINGS_OUTPUT_BIN);
1222 gtk_print_settings_set_output_bin (GtkPrintSettings *settings,
1223 const gchar *output_bin)
1225 gtk_print_settings_set (settings, GTK_PRINT_SETTINGS_OUTPUT_BIN, output_bin);
1229 #define __GTK_PRINT_SETTINGS_C__
1230 #include "gtkaliasdef.c"