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>
26 #include "gtkprintsettings.h"
27 #include "gtkprintutils.h"
30 typedef struct _GtkPrintSettingsClass GtkPrintSettingsClass;
32 #define GTK_IS_PRINT_SETTINGS_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GTK_TYPE_PRINT_SETTINGS))
33 #define GTK_PRINT_SETTINGS_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GTK_TYPE_PRINT_SETTINGS, GtkPrintSettingsClass))
34 #define GTK_PRINT_SETTINGS_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GTK_TYPE_PRINT_SETTINGS, GtkPrintSettingsClass))
36 struct _GtkPrintSettings
38 GObject parent_instance;
43 struct _GtkPrintSettingsClass
45 GObjectClass parent_class;
48 #define KEYFILE_GROUP_NAME "Print Settings"
50 G_DEFINE_TYPE (GtkPrintSettings, gtk_print_settings, G_TYPE_OBJECT)
53 gtk_print_settings_finalize (GObject *object)
55 GtkPrintSettings *settings = GTK_PRINT_SETTINGS (object);
57 g_hash_table_destroy (settings->hash);
59 G_OBJECT_CLASS (gtk_print_settings_parent_class)->finalize (object);
63 gtk_print_settings_init (GtkPrintSettings *settings)
65 settings->hash = g_hash_table_new_full (g_str_hash, g_str_equal,
70 gtk_print_settings_class_init (GtkPrintSettingsClass *class)
72 GObjectClass *gobject_class = (GObjectClass *)class;
74 gobject_class->finalize = gtk_print_settings_finalize;
78 * gtk_print_settings_new:
80 * Creates a new #GtkPrintSettings object.
82 * Return value: a new #GtkPrintSettings object
87 gtk_print_settings_new (void)
89 return g_object_new (GTK_TYPE_PRINT_SETTINGS, NULL);
93 copy_hash_entry (gpointer key,
97 GtkPrintSettings *settings = user_data;
99 g_hash_table_insert (settings->hash,
107 * gtk_print_settings_copy:
108 * @other: a #GtkPrintSettings
110 * Copies a #GtkPrintSettings object.
112 * Return value: a newly allocated copy of @other
117 gtk_print_settings_copy (GtkPrintSettings *other)
119 GtkPrintSettings *settings;
124 g_return_val_if_fail (GTK_IS_PRINT_SETTINGS (other), NULL);
126 settings = gtk_print_settings_new ();
128 g_hash_table_foreach (other->hash,
136 * gtk_print_settings_get:
137 * @settings: a #GtkPrintSettings
140 * Looks up the string value associated with @key.
142 * Return value: the string value for @key
146 G_CONST_RETURN gchar *
147 gtk_print_settings_get (GtkPrintSettings *settings,
150 return g_hash_table_lookup (settings->hash, key);
154 * gtk_print_settings_set:
155 * @settings: a #GtkPrintSettings
157 * @value: (allow-none): a string value, or %NULL
159 * Associates @value with @key.
164 gtk_print_settings_set (GtkPrintSettings *settings,
169 gtk_print_settings_unset (settings, key);
171 g_hash_table_insert (settings->hash,
177 * gtk_print_settings_unset:
178 * @settings: a #GtkPrintSettings
181 * Removes any value associated with @key.
182 * This has the same effect as setting the value to %NULL.
187 gtk_print_settings_unset (GtkPrintSettings *settings,
190 g_hash_table_remove (settings->hash, key);
194 * gtk_print_settings_has_key:
195 * @settings: a #GtkPrintSettings
198 * Returns %TRUE, if a value is associated with @key.
200 * Return value: %TRUE, if @key has a value
205 gtk_print_settings_has_key (GtkPrintSettings *settings,
208 return gtk_print_settings_get (settings, key) != NULL;
213 * gtk_print_settings_get_bool:
214 * @settings: a #GtkPrintSettings
217 * Returns the boolean represented by the value
218 * that is associated with @key.
220 * The string "true" represents %TRUE, any other
223 * Return value: %TRUE, if @key maps to a true value.
228 gtk_print_settings_get_bool (GtkPrintSettings *settings,
233 val = gtk_print_settings_get (settings, key);
234 if (g_strcmp0 (val, "true") == 0)
241 * gtk_print_settings_get_bool_with_default:
242 * @settings: a #GtkPrintSettings
244 * @default_val: the default value
246 * Returns the boolean represented by the value
247 * that is associated with @key, or @default_val
248 * if the value does not represent a boolean.
250 * The string "true" represents %TRUE, the string
251 * "false" represents %FALSE.
253 * Return value: the boolean value associated with @key
258 gtk_print_settings_get_bool_with_default (GtkPrintSettings *settings,
260 gboolean default_val)
264 val = gtk_print_settings_get (settings, key);
265 if (g_strcmp0 (val, "true") == 0)
268 if (g_strcmp0 (val, "false") == 0)
275 * gtk_print_settings_set_bool:
276 * @settings: a #GtkPrintSettings
280 * Sets @key to a boolean value.
285 gtk_print_settings_set_bool (GtkPrintSettings *settings,
290 gtk_print_settings_set (settings, key, "true");
292 gtk_print_settings_set (settings, key, "false");
296 * gtk_print_settings_get_double_with_default:
297 * @settings: a #GtkPrintSettings
299 * @def: the default value
301 * Returns the floating point number represented by
302 * the value that is associated with @key, or @default_val
303 * if the value does not represent a floating point number.
305 * Floating point numbers are parsed with g_ascii_strtod().
307 * Return value: the floating point number associated with @key
312 gtk_print_settings_get_double_with_default (GtkPrintSettings *settings,
318 val = gtk_print_settings_get (settings, key);
322 return g_ascii_strtod (val, NULL);
326 * gtk_print_settings_get_double:
327 * @settings: a #GtkPrintSettings
330 * Returns the double value associated with @key, or 0.
332 * Return value: the double value of @key
337 gtk_print_settings_get_double (GtkPrintSettings *settings,
340 return gtk_print_settings_get_double_with_default (settings, key, 0.0);
344 * gtk_print_settings_set_double:
345 * @settings: a #GtkPrintSettings
347 * @value: a double value
349 * Sets @key to a double value.
354 gtk_print_settings_set_double (GtkPrintSettings *settings,
358 gchar buf[G_ASCII_DTOSTR_BUF_SIZE];
360 g_ascii_dtostr (buf, G_ASCII_DTOSTR_BUF_SIZE, value);
361 gtk_print_settings_set (settings, key, buf);
365 * gtk_print_settings_get_length:
366 * @settings: a #GtkPrintSettings
368 * @unit: the unit of the return value
370 * Returns the value associated with @key, interpreted
371 * as a length. The returned value is converted to @units.
373 * Return value: the length value of @key, converted to @unit
378 gtk_print_settings_get_length (GtkPrintSettings *settings,
382 gdouble length = gtk_print_settings_get_double (settings, key);
383 return _gtk_print_convert_from_mm (length, unit);
387 * gtk_print_settings_set_length:
388 * @settings: a #GtkPrintSettings
391 * @unit: the unit of @length
393 * Associates a length in units of @unit with @key.
398 gtk_print_settings_set_length (GtkPrintSettings *settings,
403 gtk_print_settings_set_double (settings, key,
404 _gtk_print_convert_to_mm (value, unit));
408 * gtk_print_settings_get_int_with_default:
409 * @settings: a #GtkPrintSettings
411 * @def: the default value
413 * Returns the value of @key, interpreted as
414 * an integer, or the default value.
416 * Return value: the integer value of @key
421 gtk_print_settings_get_int_with_default (GtkPrintSettings *settings,
427 val = gtk_print_settings_get (settings, key);
435 * gtk_print_settings_get_int:
436 * @settings: a #GtkPrintSettings
439 * Returns the integer value of @key, or 0.
441 * Return value: the integer value of @key
446 gtk_print_settings_get_int (GtkPrintSettings *settings,
449 return gtk_print_settings_get_int_with_default (settings, key, 0);
453 * gtk_print_settings_set_int:
454 * @settings: a #GtkPrintSettings
458 * Sets @key to an integer value.
463 gtk_print_settings_set_int (GtkPrintSettings *settings,
468 g_sprintf (buf, "%d", value);
469 gtk_print_settings_set (settings, key, buf);
473 * gtk_print_settings_foreach:
474 * @settings: a #GtkPrintSettings
475 * @func: (scope call) the function to call
476 * @user_data: user data for @func
478 * Calls @func for each key-value pair of @settings.
483 gtk_print_settings_foreach (GtkPrintSettings *settings,
484 GtkPrintSettingsFunc func,
487 g_hash_table_foreach (settings->hash, (GHFunc)func, user_data);
491 * gtk_print_settings_get_printer:
492 * @settings: a #GtkPrintSettings
494 * Convenience function to obtain the value of
495 * %GTK_PRINT_SETTINGS_PRINTER.
497 * Return value: the printer name
501 G_CONST_RETURN gchar *
502 gtk_print_settings_get_printer (GtkPrintSettings *settings)
504 return gtk_print_settings_get (settings, GTK_PRINT_SETTINGS_PRINTER);
509 * gtk_print_settings_set_printer:
510 * @settings: a #GtkPrintSettings
511 * @printer: the printer name
513 * Convenience function to set %GTK_PRINT_SETTINGS_PRINTER
519 gtk_print_settings_set_printer (GtkPrintSettings *settings,
520 const gchar *printer)
522 gtk_print_settings_set (settings, GTK_PRINT_SETTINGS_PRINTER, printer);
526 * gtk_print_settings_get_orientation:
527 * @settings: a #GtkPrintSettings
529 * Get the value of %GTK_PRINT_SETTINGS_ORIENTATION,
530 * converted to a #GtkPageOrientation.
532 * Return value: the orientation
537 gtk_print_settings_get_orientation (GtkPrintSettings *settings)
541 val = gtk_print_settings_get (settings, GTK_PRINT_SETTINGS_ORIENTATION);
543 if (val == NULL || strcmp (val, "portrait") == 0)
544 return GTK_PAGE_ORIENTATION_PORTRAIT;
546 if (strcmp (val, "landscape") == 0)
547 return GTK_PAGE_ORIENTATION_LANDSCAPE;
549 if (strcmp (val, "reverse_portrait") == 0)
550 return GTK_PAGE_ORIENTATION_REVERSE_PORTRAIT;
552 if (strcmp (val, "reverse_landscape") == 0)
553 return GTK_PAGE_ORIENTATION_REVERSE_LANDSCAPE;
555 return GTK_PAGE_ORIENTATION_PORTRAIT;
559 * gtk_print_settings_set_orientation:
560 * @settings: a #GtkPrintSettings
561 * @orientation: a page orientation
563 * Sets the value of %GTK_PRINT_SETTINGS_ORIENTATION.
568 gtk_print_settings_set_orientation (GtkPrintSettings *settings,
569 GtkPageOrientation orientation)
575 case GTK_PAGE_ORIENTATION_LANDSCAPE:
579 case GTK_PAGE_ORIENTATION_PORTRAIT:
582 case GTK_PAGE_ORIENTATION_REVERSE_LANDSCAPE:
583 val = "reverse_landscape";
585 case GTK_PAGE_ORIENTATION_REVERSE_PORTRAIT:
586 val = "reverse_portrait";
589 gtk_print_settings_set (settings, GTK_PRINT_SETTINGS_ORIENTATION, val);
593 * gtk_print_settings_get_paper_size:
594 * @settings: a #GtkPrintSettings
596 * Gets the value of %GTK_PRINT_SETTINGS_PAPER_FORMAT,
597 * converted to a #GtkPaperSize.
599 * Return value: the paper size
604 gtk_print_settings_get_paper_size (GtkPrintSettings *settings)
610 val = gtk_print_settings_get (settings, GTK_PRINT_SETTINGS_PAPER_FORMAT);
614 if (g_str_has_prefix (val, "custom-"))
616 name = val + strlen ("custom-");
617 w = gtk_print_settings_get_paper_width (settings, GTK_UNIT_MM);
618 h = gtk_print_settings_get_paper_height (settings, GTK_UNIT_MM);
619 return gtk_paper_size_new_custom (name, name, w, h, GTK_UNIT_MM);
622 return gtk_paper_size_new (val);
626 * gtk_print_settings_set_paper_size:
627 * @settings: a #GtkPrintSettings
628 * @paper_size: a paper size
630 * Sets the value of %GTK_PRINT_SETTINGS_PAPER_FORMAT,
631 * %GTK_PRINT_SETTINGS_PAPER_WIDTH and
632 * %GTK_PRINT_SETTINGS_PAPER_HEIGHT.
637 gtk_print_settings_set_paper_size (GtkPrintSettings *settings,
638 GtkPaperSize *paper_size)
642 if (paper_size == NULL)
644 gtk_print_settings_set (settings, GTK_PRINT_SETTINGS_PAPER_FORMAT, NULL);
645 gtk_print_settings_set (settings, GTK_PRINT_SETTINGS_PAPER_WIDTH, NULL);
646 gtk_print_settings_set (settings, GTK_PRINT_SETTINGS_PAPER_HEIGHT, NULL);
648 else if (gtk_paper_size_is_custom (paper_size))
650 custom_name = g_strdup_printf ("custom-%s",
651 gtk_paper_size_get_name (paper_size));
652 gtk_print_settings_set (settings, GTK_PRINT_SETTINGS_PAPER_FORMAT, custom_name);
653 g_free (custom_name);
654 gtk_print_settings_set_paper_width (settings,
655 gtk_paper_size_get_width (paper_size,
658 gtk_print_settings_set_paper_height (settings,
659 gtk_paper_size_get_height (paper_size,
664 gtk_print_settings_set (settings, GTK_PRINT_SETTINGS_PAPER_FORMAT,
665 gtk_paper_size_get_name (paper_size));
669 * gtk_print_settings_get_paper_width:
670 * @settings: a #GtkPrintSettings
671 * @unit: the unit for the return value
673 * Gets the value of %GTK_PRINT_SETTINGS_PAPER_WIDTH,
674 * converted to @unit.
676 * Return value: the paper width, in units of @unit
681 gtk_print_settings_get_paper_width (GtkPrintSettings *settings,
684 return gtk_print_settings_get_length (settings, GTK_PRINT_SETTINGS_PAPER_WIDTH, unit);
688 * gtk_print_settings_set_paper_width:
689 * @settings: a #GtkPrintSettings
690 * @width: the paper width
691 * @unit: the units of @width
693 * Sets the value of %GTK_PRINT_SETTINGS_PAPER_WIDTH.
698 gtk_print_settings_set_paper_width (GtkPrintSettings *settings,
702 gtk_print_settings_set_length (settings, GTK_PRINT_SETTINGS_PAPER_WIDTH, width, unit);
706 * gtk_print_settings_get_paper_height:
707 * @settings: a #GtkPrintSettings
708 * @unit: the unit for the return value
710 * Gets the value of %GTK_PRINT_SETTINGS_PAPER_HEIGHT,
711 * converted to @unit.
713 * Return value: the paper height, in units of @unit
718 gtk_print_settings_get_paper_height (GtkPrintSettings *settings,
721 return gtk_print_settings_get_length (settings,
722 GTK_PRINT_SETTINGS_PAPER_HEIGHT,
727 * gtk_print_settings_set_paper_height:
728 * @settings: a #GtkPrintSettings
729 * @height: the paper height
730 * @unit: the units of @height
732 * Sets the value of %GTK_PRINT_SETTINGS_PAPER_HEIGHT.
737 gtk_print_settings_set_paper_height (GtkPrintSettings *settings,
741 gtk_print_settings_set_length (settings,
742 GTK_PRINT_SETTINGS_PAPER_HEIGHT,
747 * gtk_print_settings_get_use_color:
748 * @settings: a #GtkPrintSettings
750 * Gets the value of %GTK_PRINT_SETTINGS_USE_COLOR.
752 * Return value: whether to use color
757 gtk_print_settings_get_use_color (GtkPrintSettings *settings)
759 return gtk_print_settings_get_bool_with_default (settings,
760 GTK_PRINT_SETTINGS_USE_COLOR,
765 * gtk_print_settings_set_use_color:
766 * @settings: a #GtkPrintSettings
767 * @use_color: whether to use color
769 * Sets the value of %GTK_PRINT_SETTINGS_USE_COLOR.
774 gtk_print_settings_set_use_color (GtkPrintSettings *settings,
777 gtk_print_settings_set_bool (settings,
778 GTK_PRINT_SETTINGS_USE_COLOR,
783 * gtk_print_settings_get_collate:
784 * @settings: a #GtkPrintSettings
786 * Gets the value of %GTK_PRINT_SETTINGS_COLLATE.
788 * Return value: whether to collate the printed pages
793 gtk_print_settings_get_collate (GtkPrintSettings *settings)
795 return gtk_print_settings_get_bool (settings,
796 GTK_PRINT_SETTINGS_COLLATE);
800 * gtk_print_settings_set_collate:
801 * @settings: a #GtkPrintSettings
802 * @collate: whether to collate the output
804 * Sets the value of %GTK_PRINT_SETTINGS_COLLATE.
809 gtk_print_settings_set_collate (GtkPrintSettings *settings,
812 gtk_print_settings_set_bool (settings,
813 GTK_PRINT_SETTINGS_COLLATE,
818 * gtk_print_settings_get_reverse:
819 * @settings: a #GtkPrintSettings
821 * Gets the value of %GTK_PRINT_SETTINGS_REVERSE.
823 * Return value: whether to reverse the order of the printed pages
828 gtk_print_settings_get_reverse (GtkPrintSettings *settings)
830 return gtk_print_settings_get_bool (settings,
831 GTK_PRINT_SETTINGS_REVERSE);
835 * gtk_print_settings_set_reverse:
836 * @settings: a #GtkPrintSettings
837 * @reverse: whether to reverse the output
839 * Sets the value of %GTK_PRINT_SETTINGS_REVERSE.
844 gtk_print_settings_set_reverse (GtkPrintSettings *settings,
847 gtk_print_settings_set_bool (settings,
848 GTK_PRINT_SETTINGS_REVERSE,
853 * gtk_print_settings_get_duplex:
854 * @settings: a #GtkPrintSettings
856 * Gets the value of %GTK_PRINT_SETTINGS_DUPLEX.
858 * Return value: whether to print the output in duplex.
863 gtk_print_settings_get_duplex (GtkPrintSettings *settings)
867 val = gtk_print_settings_get (settings, GTK_PRINT_SETTINGS_DUPLEX);
869 if (val == NULL || (strcmp (val, "simplex") == 0))
870 return GTK_PRINT_DUPLEX_SIMPLEX;
872 if (strcmp (val, "horizontal") == 0)
873 return GTK_PRINT_DUPLEX_HORIZONTAL;
875 if (strcmp (val, "vertical") == 0)
876 return GTK_PRINT_DUPLEX_VERTICAL;
878 return GTK_PRINT_DUPLEX_SIMPLEX;
882 * gtk_print_settings_set_duplex:
883 * @settings: a #GtkPrintSettings
884 * @duplex: a #GtkPrintDuplex value
886 * Sets the value of %GTK_PRINT_SETTINGS_DUPLEX.
891 gtk_print_settings_set_duplex (GtkPrintSettings *settings,
892 GtkPrintDuplex duplex)
899 case GTK_PRINT_DUPLEX_SIMPLEX:
902 case GTK_PRINT_DUPLEX_HORIZONTAL:
905 case GTK_PRINT_DUPLEX_VERTICAL:
910 gtk_print_settings_set (settings, GTK_PRINT_SETTINGS_DUPLEX, str);
914 * gtk_print_settings_get_quality:
915 * @settings: a #GtkPrintSettings
917 * Gets the value of %GTK_PRINT_SETTINGS_QUALITY.
919 * Return value: the print quality
924 gtk_print_settings_get_quality (GtkPrintSettings *settings)
928 val = gtk_print_settings_get (settings, GTK_PRINT_SETTINGS_QUALITY);
930 if (val == NULL || (strcmp (val, "normal") == 0))
931 return GTK_PRINT_QUALITY_NORMAL;
933 if (strcmp (val, "high") == 0)
934 return GTK_PRINT_QUALITY_HIGH;
936 if (strcmp (val, "low") == 0)
937 return GTK_PRINT_QUALITY_LOW;
939 if (strcmp (val, "draft") == 0)
940 return GTK_PRINT_QUALITY_DRAFT;
942 return GTK_PRINT_QUALITY_NORMAL;
946 * gtk_print_settings_set_quality:
947 * @settings: a #GtkPrintSettings
948 * @quality: a #GtkPrintQuality value
950 * Sets the value of %GTK_PRINT_SETTINGS_QUALITY.
955 gtk_print_settings_set_quality (GtkPrintSettings *settings,
956 GtkPrintQuality quality)
963 case GTK_PRINT_QUALITY_NORMAL:
966 case GTK_PRINT_QUALITY_HIGH:
969 case GTK_PRINT_QUALITY_LOW:
972 case GTK_PRINT_QUALITY_DRAFT:
977 gtk_print_settings_set (settings, GTK_PRINT_SETTINGS_QUALITY, str);
981 * gtk_print_settings_get_page_set:
982 * @settings: a #GtkPrintSettings
984 * Gets the value of %GTK_PRINT_SETTINGS_PAGE_SET.
986 * Return value: the set of pages to print
991 gtk_print_settings_get_page_set (GtkPrintSettings *settings)
995 val = gtk_print_settings_get (settings, GTK_PRINT_SETTINGS_PAGE_SET);
997 if (val == NULL || (strcmp (val, "all") == 0))
998 return GTK_PAGE_SET_ALL;
1000 if (strcmp (val, "even") == 0)
1001 return GTK_PAGE_SET_EVEN;
1003 if (strcmp (val, "odd") == 0)
1004 return GTK_PAGE_SET_ODD;
1006 return GTK_PAGE_SET_ALL;
1010 * gtk_print_settings_set_page_set:
1011 * @settings: a #GtkPrintSettings
1012 * @page_set: a #GtkPageSet value
1014 * Sets the value of %GTK_PRINT_SETTINGS_PAGE_SET.
1019 gtk_print_settings_set_page_set (GtkPrintSettings *settings,
1020 GtkPageSet page_set)
1027 case GTK_PAGE_SET_ALL:
1030 case GTK_PAGE_SET_EVEN:
1033 case GTK_PAGE_SET_ODD:
1038 gtk_print_settings_set (settings, GTK_PRINT_SETTINGS_PAGE_SET, str);
1042 * gtk_print_settings_get_number_up_layout:
1043 * @settings: a #GtkPrintSettings
1045 * Gets the value of %GTK_PRINT_SETTINGS_NUMBER_UP_LAYOUT.
1047 * Return value: layout of page in number-up mode
1052 gtk_print_settings_get_number_up_layout (GtkPrintSettings *settings)
1054 GtkNumberUpLayout layout;
1055 GtkTextDirection text_direction;
1056 GEnumClass *enum_class;
1057 GEnumValue *enum_value;
1060 g_return_val_if_fail (GTK_IS_PRINT_SETTINGS (settings), GTK_NUMBER_UP_LAYOUT_LEFT_TO_RIGHT_TOP_TO_BOTTOM);
1062 val = gtk_print_settings_get (settings, GTK_PRINT_SETTINGS_NUMBER_UP_LAYOUT);
1063 text_direction = gtk_widget_get_default_direction ();
1065 if (text_direction == GTK_TEXT_DIR_LTR)
1066 layout = GTK_NUMBER_UP_LAYOUT_LEFT_TO_RIGHT_TOP_TO_BOTTOM;
1068 layout = GTK_NUMBER_UP_LAYOUT_RIGHT_TO_LEFT_TOP_TO_BOTTOM;
1073 enum_class = g_type_class_ref (GTK_TYPE_NUMBER_UP_LAYOUT);
1074 enum_value = g_enum_get_value_by_nick (enum_class, val);
1076 layout = enum_value->value;
1077 g_type_class_unref (enum_class);
1083 * gtk_print_settings_set_number_up_layout:
1084 * @settings: a #GtkPrintSettings
1085 * @number_up_layout: a #GtkNumberUpLayout value
1087 * Sets the value of %GTK_PRINT_SETTINGS_NUMBER_UP_LAYOUT.
1092 gtk_print_settings_set_number_up_layout (GtkPrintSettings *settings,
1093 GtkNumberUpLayout number_up_layout)
1095 GEnumClass *enum_class;
1096 GEnumValue *enum_value;
1098 g_return_if_fail (GTK_IS_PRINT_SETTINGS (settings));
1100 enum_class = g_type_class_ref (GTK_TYPE_NUMBER_UP_LAYOUT);
1101 enum_value = g_enum_get_value (enum_class, number_up_layout);
1102 g_return_if_fail (enum_value != NULL);
1104 gtk_print_settings_set (settings, GTK_PRINT_SETTINGS_NUMBER_UP_LAYOUT, enum_value->value_nick);
1105 g_type_class_unref (enum_class);
1109 * gtk_print_settings_get_n_copies:
1110 * @settings: a #GtkPrintSettings
1112 * Gets the value of %GTK_PRINT_SETTINGS_N_COPIES.
1114 * Return value: the number of copies to print
1119 gtk_print_settings_get_n_copies (GtkPrintSettings *settings)
1121 return gtk_print_settings_get_int_with_default (settings, GTK_PRINT_SETTINGS_N_COPIES, 1);
1125 * gtk_print_settings_set_n_copies:
1126 * @settings: a #GtkPrintSettings
1127 * @num_copies: the number of copies
1129 * Sets the value of %GTK_PRINT_SETTINGS_N_COPIES.
1134 gtk_print_settings_set_n_copies (GtkPrintSettings *settings,
1137 gtk_print_settings_set_int (settings, GTK_PRINT_SETTINGS_N_COPIES,
1142 * gtk_print_settings_get_number_up:
1143 * @settings: a #GtkPrintSettings
1145 * Gets the value of %GTK_PRINT_SETTINGS_NUMBER_UP.
1147 * Return value: the number of pages per sheet
1152 gtk_print_settings_get_number_up (GtkPrintSettings *settings)
1154 return gtk_print_settings_get_int_with_default (settings, GTK_PRINT_SETTINGS_NUMBER_UP, 1);
1158 * gtk_print_settings_set_number_up:
1159 * @settings: a #GtkPrintSettings
1160 * @number_up: the number of pages per sheet
1162 * Sets the value of %GTK_PRINT_SETTINGS_NUMBER_UP.
1167 gtk_print_settings_set_number_up (GtkPrintSettings *settings,
1170 gtk_print_settings_set_int (settings, GTK_PRINT_SETTINGS_NUMBER_UP,
1175 * gtk_print_settings_get_resolution:
1176 * @settings: a #GtkPrintSettings
1178 * Gets the value of %GTK_PRINT_SETTINGS_RESOLUTION.
1180 * Return value: the resolution in dpi
1185 gtk_print_settings_get_resolution (GtkPrintSettings *settings)
1187 return gtk_print_settings_get_int_with_default (settings, GTK_PRINT_SETTINGS_RESOLUTION, 300);
1191 * gtk_print_settings_set_resolution:
1192 * @settings: a #GtkPrintSettings
1193 * @resolution: the resolution in dpi
1195 * Sets the values of %GTK_PRINT_SETTINGS_RESOLUTION,
1196 * %GTK_PRINT_SETTINGS_RESOLUTION_X and
1197 * %GTK_PRINT_SETTINGS_RESOLUTION_Y.
1202 gtk_print_settings_set_resolution (GtkPrintSettings *settings,
1205 gtk_print_settings_set_int (settings, GTK_PRINT_SETTINGS_RESOLUTION,
1207 gtk_print_settings_set_int (settings, GTK_PRINT_SETTINGS_RESOLUTION_X,
1209 gtk_print_settings_set_int (settings, GTK_PRINT_SETTINGS_RESOLUTION_Y,
1214 * gtk_print_settings_get_resolution_x:
1215 * @settings: a #GtkPrintSettings
1217 * Gets the value of %GTK_PRINT_SETTINGS_RESOLUTION_X.
1219 * Return value: the horizontal resolution in dpi
1224 gtk_print_settings_get_resolution_x (GtkPrintSettings *settings)
1226 return gtk_print_settings_get_int_with_default (settings, GTK_PRINT_SETTINGS_RESOLUTION_X, 300);
1230 * gtk_print_settings_get_resolution_y:
1231 * @settings: a #GtkPrintSettings
1233 * Gets the value of %GTK_PRINT_SETTINGS_RESOLUTION_Y.
1235 * Return value: the vertical resolution in dpi
1240 gtk_print_settings_get_resolution_y (GtkPrintSettings *settings)
1242 return gtk_print_settings_get_int_with_default (settings, GTK_PRINT_SETTINGS_RESOLUTION_Y, 300);
1246 * gtk_print_settings_set_resolution_xy:
1247 * @settings: a #GtkPrintSettings
1248 * @resolution_x: the horizontal resolution in dpi
1249 * @resolution_y: the vertical resolution in dpi
1251 * Sets the values of %GTK_PRINT_SETTINGS_RESOLUTION,
1252 * %GTK_PRINT_SETTINGS_RESOLUTION_X and
1253 * %GTK_PRINT_SETTINGS_RESOLUTION_Y.
1258 gtk_print_settings_set_resolution_xy (GtkPrintSettings *settings,
1262 gtk_print_settings_set_int (settings, GTK_PRINT_SETTINGS_RESOLUTION_X,
1264 gtk_print_settings_set_int (settings, GTK_PRINT_SETTINGS_RESOLUTION_Y,
1266 gtk_print_settings_set_int (settings, GTK_PRINT_SETTINGS_RESOLUTION,
1271 * gtk_print_settings_get_printer_lpi:
1272 * @settings: a #GtkPrintSettings
1274 * Gets the value of %GTK_PRINT_SETTINGS_PRINTER_LPI.
1276 * Return value: the resolution in lpi (lines per inch)
1281 gtk_print_settings_get_printer_lpi (GtkPrintSettings *settings)
1283 return gtk_print_settings_get_double_with_default (settings, GTK_PRINT_SETTINGS_PRINTER_LPI, 150.0);
1287 * gtk_print_settings_set_printer_lpi:
1288 * @settings: a #GtkPrintSettings
1289 * @lpi: the resolution in lpi (lines per inch)
1291 * Sets the value of %GTK_PRINT_SETTINGS_PRINTER_LPI.
1296 gtk_print_settings_set_printer_lpi (GtkPrintSettings *settings,
1299 gtk_print_settings_set_double (settings, GTK_PRINT_SETTINGS_PRINTER_LPI,
1304 * gtk_print_settings_get_scale:
1305 * @settings: a #GtkPrintSettings
1307 * Gets the value of %GTK_PRINT_SETTINGS_SCALE.
1309 * Return value: the scale in percent
1314 gtk_print_settings_get_scale (GtkPrintSettings *settings)
1316 return gtk_print_settings_get_double_with_default (settings,
1317 GTK_PRINT_SETTINGS_SCALE,
1322 * gtk_print_settings_set_scale:
1323 * @settings: a #GtkPrintSettings
1324 * @scale: the scale in percent
1326 * Sets the value of %GTK_PRINT_SETTINGS_SCALE.
1331 gtk_print_settings_set_scale (GtkPrintSettings *settings,
1334 gtk_print_settings_set_double (settings, GTK_PRINT_SETTINGS_SCALE,
1339 * gtk_print_settings_get_print_pages:
1340 * @settings: a #GtkPrintSettings
1342 * Gets the value of %GTK_PRINT_SETTINGS_PRINT_PAGES.
1344 * Return value: which pages to print
1349 gtk_print_settings_get_print_pages (GtkPrintSettings *settings)
1353 val = gtk_print_settings_get (settings, GTK_PRINT_SETTINGS_PRINT_PAGES);
1355 if (val == NULL || (strcmp (val, "all") == 0))
1356 return GTK_PRINT_PAGES_ALL;
1358 if (strcmp (val, "selection") == 0)
1359 return GTK_PRINT_PAGES_SELECTION;
1361 if (strcmp (val, "current") == 0)
1362 return GTK_PRINT_PAGES_CURRENT;
1364 if (strcmp (val, "ranges") == 0)
1365 return GTK_PRINT_PAGES_RANGES;
1367 return GTK_PRINT_PAGES_ALL;
1371 * gtk_print_settings_set_print_pages:
1372 * @settings: a #GtkPrintSettings
1373 * @pages: a #GtkPrintPages value
1375 * Sets the value of %GTK_PRINT_SETTINGS_PRINT_PAGES.
1380 gtk_print_settings_set_print_pages (GtkPrintSettings *settings,
1381 GtkPrintPages pages)
1388 case GTK_PRINT_PAGES_ALL:
1391 case GTK_PRINT_PAGES_CURRENT:
1394 case GTK_PRINT_PAGES_SELECTION:
1397 case GTK_PRINT_PAGES_RANGES:
1402 gtk_print_settings_set (settings, GTK_PRINT_SETTINGS_PRINT_PAGES, str);
1406 * gtk_print_settings_get_page_ranges:
1407 * @settings: a #GtkPrintSettings
1408 * @num_ranges: return location for the length of the returned array
1410 * Gets the value of %GTK_PRINT_SETTINGS_PAGE_RANGES.
1412 * Return value: an array of #GtkPageRange<!-- -->s. Use g_free()
1413 * to free the array when it is no longer needed.
1418 gtk_print_settings_get_page_ranges (GtkPrintSettings *settings,
1423 GtkPageRange *ranges;
1426 val = gtk_print_settings_get (settings, GTK_PRINT_SETTINGS_PAGE_RANGES);
1434 range_strs = g_strsplit (val, ",", 0);
1436 for (i = 0; range_strs[i] != NULL; i++)
1441 ranges = g_new0 (GtkPageRange, n);
1443 for (i = 0; i < n; i++)
1448 start = (gint)strtol (range_strs[i], &str, 10);
1454 end = (gint)strtol (str, NULL, 10);
1457 ranges[i].start = start;
1458 ranges[i].end = end;
1461 g_strfreev (range_strs);
1468 * gtk_print_settings_set_page_ranges:
1469 * @settings: a #GtkPrintSettings
1470 * @page_ranges: an array of #GtkPageRange<!-- -->s
1471 * @num_ranges: the length of @page_ranges
1473 * Sets the value of %GTK_PRINT_SETTINGS_PAGE_RANGES.
1478 gtk_print_settings_set_page_ranges (GtkPrintSettings *settings,
1479 GtkPageRange *page_ranges,
1485 s = g_string_new ("");
1487 for (i = 0; i < num_ranges; i++)
1489 if (page_ranges[i].start == page_ranges[i].end)
1490 g_string_append_printf (s, "%d", page_ranges[i].start);
1492 g_string_append_printf (s, "%d-%d",
1493 page_ranges[i].start,
1494 page_ranges[i].end);
1495 if (i < num_ranges - 1)
1496 g_string_append (s, ",");
1500 gtk_print_settings_set (settings, GTK_PRINT_SETTINGS_PAGE_RANGES,
1503 g_string_free (s, TRUE);
1507 * gtk_print_settings_get_default_source:
1508 * @settings: a #GtkPrintSettings
1510 * Gets the value of %GTK_PRINT_SETTINGS_DEFAULT_SOURCE.
1512 * Return value: the default source
1516 G_CONST_RETURN gchar *
1517 gtk_print_settings_get_default_source (GtkPrintSettings *settings)
1519 return gtk_print_settings_get (settings, GTK_PRINT_SETTINGS_DEFAULT_SOURCE);
1523 * gtk_print_settings_set_default_source:
1524 * @settings: a #GtkPrintSettings
1525 * @default_source: the default source
1527 * Sets the value of %GTK_PRINT_SETTINGS_DEFAULT_SOURCE.
1532 gtk_print_settings_set_default_source (GtkPrintSettings *settings,
1533 const gchar *default_source)
1535 gtk_print_settings_set (settings, GTK_PRINT_SETTINGS_DEFAULT_SOURCE, default_source);
1539 * gtk_print_settings_get_media_type:
1540 * @settings: a #GtkPrintSettings
1542 * Gets the value of %GTK_PRINT_SETTINGS_MEDIA_TYPE.
1544 * The set of media types is defined in PWG 5101.1-2002 PWG.
1545 * <!-- FIXME link here -->
1547 * Return value: the media type
1551 G_CONST_RETURN gchar *
1552 gtk_print_settings_get_media_type (GtkPrintSettings *settings)
1554 return gtk_print_settings_get (settings, GTK_PRINT_SETTINGS_MEDIA_TYPE);
1558 * gtk_print_settings_set_media_type:
1559 * @settings: a #GtkPrintSettings
1560 * @media_type: the media type
1562 * Sets the value of %GTK_PRINT_SETTINGS_MEDIA_TYPE.
1564 * The set of media types is defined in PWG 5101.1-2002 PWG.
1565 * <!-- FIXME link here -->
1570 gtk_print_settings_set_media_type (GtkPrintSettings *settings,
1571 const gchar *media_type)
1573 gtk_print_settings_set (settings, GTK_PRINT_SETTINGS_MEDIA_TYPE, media_type);
1577 * gtk_print_settings_get_dither:
1578 * @settings: a #GtkPrintSettings
1580 * Gets the value of %GTK_PRINT_SETTINGS_DITHER.
1582 * Return value: the dithering that is used
1586 G_CONST_RETURN gchar *
1587 gtk_print_settings_get_dither (GtkPrintSettings *settings)
1589 return gtk_print_settings_get (settings, GTK_PRINT_SETTINGS_DITHER);
1593 * gtk_print_settings_set_dither:
1594 * @settings: a #GtkPrintSettings
1595 * @dither: the dithering that is used
1597 * Sets the value of %GTK_PRINT_SETTINGS_DITHER.
1602 gtk_print_settings_set_dither (GtkPrintSettings *settings,
1603 const gchar *dither)
1605 gtk_print_settings_set (settings, GTK_PRINT_SETTINGS_DITHER, dither);
1609 * gtk_print_settings_get_finishings:
1610 * @settings: a #GtkPrintSettings
1612 * Gets the value of %GTK_PRINT_SETTINGS_FINISHINGS.
1614 * Return value: the finishings
1619 gtk_print_settings_get_finishings (GtkPrintSettings *settings)
1621 return gtk_print_settings_get (settings, GTK_PRINT_SETTINGS_FINISHINGS);
1625 * gtk_print_settings_set_finishings:
1626 * @settings: a #GtkPrintSettings
1627 * @finishings: the finishings
1629 * Sets the value of %GTK_PRINT_SETTINGS_FINISHINGS.
1634 gtk_print_settings_set_finishings (GtkPrintSettings *settings,
1635 const gchar *finishings)
1637 gtk_print_settings_set (settings, GTK_PRINT_SETTINGS_FINISHINGS, finishings);
1641 * gtk_print_settings_get_output_bin:
1642 * @settings: a #GtkPrintSettings
1644 * Gets the value of %GTK_PRINT_SETTINGS_OUTPUT_BIN.
1646 * Return value: the output bin
1650 G_CONST_RETURN gchar *
1651 gtk_print_settings_get_output_bin (GtkPrintSettings *settings)
1653 return gtk_print_settings_get (settings, GTK_PRINT_SETTINGS_OUTPUT_BIN);
1657 * gtk_print_settings_set_output_bin:
1658 * @settings: a #GtkPrintSettings
1659 * @output_bin: the output bin
1661 * Sets the value of %GTK_PRINT_SETTINGS_OUTPUT_BIN.
1666 gtk_print_settings_set_output_bin (GtkPrintSettings *settings,
1667 const gchar *output_bin)
1669 gtk_print_settings_set (settings, GTK_PRINT_SETTINGS_OUTPUT_BIN, output_bin);
1673 * gtk_print_settings_load_file:
1674 * @settings: a #GtkPrintSettings
1675 * @file_name: the filename to read the settings from
1676 * @error: (allow-none): return location for errors, or %NULL
1678 * Reads the print settings from @file_name. If the file could not be loaded
1679 * then error is set to either a #GFileError or #GKeyFileError.
1680 * See gtk_print_settings_to_file().
1682 * Return value: %TRUE on success
1687 gtk_print_settings_load_file (GtkPrintSettings *settings,
1688 const gchar *file_name,
1691 gboolean retval = FALSE;
1694 g_return_val_if_fail (GTK_IS_PRINT_SETTINGS (settings), FALSE);
1695 g_return_val_if_fail (file_name != NULL, FALSE);
1697 key_file = g_key_file_new ();
1699 if (g_key_file_load_from_file (key_file, file_name, 0, error) &&
1700 gtk_print_settings_load_key_file (settings, key_file, NULL, error))
1703 g_key_file_free (key_file);
1709 * gtk_print_settings_new_from_file:
1710 * @file_name: the filename to read the settings from
1711 * @error: (allow-none): return location for errors, or %NULL
1713 * Reads the print settings from @file_name. Returns a new #GtkPrintSettings
1714 * object with the restored settings, or %NULL if an error occurred. If the
1715 * file could not be loaded then error is set to either a #GFileError or
1716 * #GKeyFileError. See gtk_print_settings_to_file().
1718 * Return value: the restored #GtkPrintSettings
1723 gtk_print_settings_new_from_file (const gchar *file_name,
1726 GtkPrintSettings *settings = gtk_print_settings_new ();
1728 if (!gtk_print_settings_load_file (settings, file_name, error))
1730 g_object_unref (settings);
1738 * gtk_print_settings_load_key_file:
1739 * @settings: a #GtkPrintSettings
1740 * @key_file: the #GKeyFile to retrieve the settings from
1741 * @group_name: (allow-none): the name of the group to use, or %NULL to use the default
1743 * @error: (allow-none): return location for errors, or %NULL
1745 * Reads the print settings from the group @group_name in @key_file. If the
1746 * file could not be loaded then error is set to either a #GFileError or
1749 * Return value: %TRUE on success
1754 gtk_print_settings_load_key_file (GtkPrintSettings *settings,
1756 const gchar *group_name,
1763 g_return_val_if_fail (GTK_IS_PRINT_SETTINGS (settings), FALSE);
1764 g_return_val_if_fail (key_file != NULL, FALSE);
1767 group_name = KEYFILE_GROUP_NAME;
1769 keys = g_key_file_get_keys (key_file,
1775 g_propagate_error (error, err);
1779 for (i = 0 ; i < n_keys; ++i)
1783 value = g_key_file_get_string (key_file,
1790 gtk_print_settings_set (settings, keys[i], value);
1800 * gtk_print_settings_new_from_key_file:
1801 * @key_file: the #GKeyFile to retrieve the settings from
1802 * @group_name: (allow-none): the name of the group to use, or %NULL to use
1803 * the default "Print Settings"
1804 * @error: (allow-none): return location for errors, or %NULL
1806 * Reads the print settings from the group @group_name in @key_file. Returns a
1807 * new #GtkPrintSettings object with the restored settings, or %NULL if an
1808 * error occurred. If the file could not be loaded then error is set to either
1809 * a #GFileError or #GKeyFileError.
1811 * Return value: the restored #GtkPrintSettings
1816 gtk_print_settings_new_from_key_file (GKeyFile *key_file,
1817 const gchar *group_name,
1820 GtkPrintSettings *settings = gtk_print_settings_new ();
1822 if (!gtk_print_settings_load_key_file (settings, key_file,
1825 g_object_unref (settings);
1833 * gtk_print_settings_to_file:
1834 * @settings: a #GtkPrintSettings
1835 * @file_name: the file to save to
1836 * @error: (allow-none): return location for errors, or %NULL
1838 * This function saves the print settings from @settings to @file_name. If the
1839 * file could not be loaded then error is set to either a #GFileError or
1842 * Return value: %TRUE on success
1847 gtk_print_settings_to_file (GtkPrintSettings *settings,
1848 const gchar *file_name,
1852 gboolean retval = FALSE;
1857 g_return_val_if_fail (GTK_IS_PRINT_SETTINGS (settings), FALSE);
1858 g_return_val_if_fail (file_name != NULL, FALSE);
1860 key_file = g_key_file_new ();
1861 gtk_print_settings_to_key_file (settings, key_file, NULL);
1863 data = g_key_file_to_data (key_file, &len, &err);
1867 retval = g_file_set_contents (file_name, data, len, &err);
1871 g_propagate_error (error, err);
1873 g_key_file_free (key_file);
1881 const gchar *group_name;
1885 add_value_to_key_file (const gchar *key,
1889 g_key_file_set_string (data->key_file, data->group_name, key, value);
1893 * gtk_print_settings_to_key_file:
1894 * @settings: a #GtkPrintSettings
1895 * @key_file: the #GKeyFile to save the print settings to
1896 * @group_name: the group to add the settings to in @key_file, or
1897 * %NULL to use the default "Print Settings"
1899 * This function adds the print settings from @settings to @key_file.
1904 gtk_print_settings_to_key_file (GtkPrintSettings *settings,
1906 const gchar *group_name)
1910 g_return_if_fail (GTK_IS_PRINT_SETTINGS (settings));
1911 g_return_if_fail (key_file != NULL);
1914 group_name = KEYFILE_GROUP_NAME;
1916 data.key_file = key_file;
1917 data.group_name = group_name;
1919 gtk_print_settings_foreach (settings,
1920 (GtkPrintSettingsFunc) add_value_to_key_file,