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"
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 #define KEYFILE_GROUP_NAME "Print Settings"
51 G_DEFINE_TYPE (GtkPrintSettings, gtk_print_settings, G_TYPE_OBJECT)
54 gtk_print_settings_finalize (GObject *object)
56 GtkPrintSettings *settings = GTK_PRINT_SETTINGS (object);
58 g_hash_table_destroy (settings->hash);
60 G_OBJECT_CLASS (gtk_print_settings_parent_class)->finalize (object);
64 gtk_print_settings_init (GtkPrintSettings *settings)
66 settings->hash = g_hash_table_new_full (g_str_hash, g_str_equal,
71 gtk_print_settings_class_init (GtkPrintSettingsClass *class)
73 GObjectClass *gobject_class = (GObjectClass *)class;
75 gobject_class->finalize = gtk_print_settings_finalize;
79 * gtk_print_settings_new:
81 * Creates a new #GtkPrintSettings object.
83 * Return value: a new #GtkPrintSettings object
88 gtk_print_settings_new (void)
90 return g_object_new (GTK_TYPE_PRINT_SETTINGS, NULL);
94 copy_hash_entry (gpointer key,
98 GtkPrintSettings *settings = user_data;
100 g_hash_table_insert (settings->hash,
108 * gtk_print_settings_copy:
109 * @other: a #GtkPrintSettings
111 * Copies a #GtkPrintSettings object.
113 * Return value: a newly allocated copy of @other
118 gtk_print_settings_copy (GtkPrintSettings *other)
120 GtkPrintSettings *settings;
125 g_return_val_if_fail (GTK_IS_PRINT_SETTINGS (other), NULL);
127 settings = gtk_print_settings_new ();
129 g_hash_table_foreach (other->hash,
137 * gtk_print_settings_get:
138 * @settings: a #GtkPrintSettings
141 * Looks up the string value associated with @key.
143 * Return value: the string value for @key
147 G_CONST_RETURN gchar *
148 gtk_print_settings_get (GtkPrintSettings *settings,
151 return g_hash_table_lookup (settings->hash, key);
155 * gtk_print_settings_set:
156 * @settings: a #GtkPrintSettings
158 * @value: a string value, or %NULL
160 * Associates @value with @key.
165 gtk_print_settings_set (GtkPrintSettings *settings,
170 gtk_print_settings_unset (settings, key);
172 g_hash_table_insert (settings->hash,
178 * gtk_print_settings_unset:
179 * @settings: a #GtkPrintSettings
182 * Removes any value associated with @key.
183 * This has the same effect as setting the value to %NULL.
188 gtk_print_settings_unset (GtkPrintSettings *settings,
191 g_hash_table_remove (settings->hash, key);
195 * gtk_print_settings_has_key:
196 * @settings: a #GtkPrintSettings
199 * Returns %TRUE, if a value is associated with @key.
201 * Return value: %TRUE, if @key has a value
206 gtk_print_settings_has_key (GtkPrintSettings *settings,
209 return gtk_print_settings_get (settings, key) != NULL;
214 * gtk_print_settings_get_bool:
215 * @settings: a #GtkPrintSettings
218 * Returns the boolean represented by the value
219 * that is associated with @key.
221 * The string "true" represents %TRUE, any other
224 * Return value: %TRUE, if @key maps to a true value.
229 gtk_print_settings_get_bool (GtkPrintSettings *settings,
234 val = gtk_print_settings_get (settings, key);
235 if (val != NULL && strcmp (val, "true") == 0)
242 * gtk_print_settings_get_bool_with_default:
243 * @settings: a #GtkPrintSettings
245 * @default_val: the default value
247 * Returns the boolean represented by the value
248 * that is associated with @key, or @default_val
249 * if the value does not represent a boolean.
251 * The string "true" represents %TRUE, the string
252 * "false" represents %FALSE.
254 * Return value: the boolean value associated with @key
259 gtk_print_settings_get_bool_with_default (GtkPrintSettings *settings,
261 gboolean default_val)
265 val = gtk_print_settings_get (settings, key);
266 if (val != NULL && strcmp (val, "true") == 0)
269 if (val != NULL && strcmp (val, "false") == 0)
276 * gtk_print_settings_set_bool:
277 * @settings: a #GtkPrintSettings
281 * Sets @key to a boolean value.
286 gtk_print_settings_set_bool (GtkPrintSettings *settings,
291 gtk_print_settings_set (settings, key, "true");
293 gtk_print_settings_set (settings, key, "false");
297 * gtk_print_settings_get_double_with_default:
298 * @settings: a #GtkPrintSettings
300 * @def: the default value
302 * Returns the floating point number represented by
303 * the value that is associated with @key, or @default_val
304 * if the value does not represent a floating point number.
306 * Floating point numbers are parsed with g_ascii_strtod().
308 * Return value: the floating point number associated with @key
313 gtk_print_settings_get_double_with_default (GtkPrintSettings *settings,
319 val = gtk_print_settings_get (settings, key);
323 return g_ascii_strtod (val, NULL);
327 * gtk_print_settings_get_double:
328 * @settings: a #GtkPrintSettings
331 * Returns the double value associated with @key, or 0.
333 * Return value: the double value of @key
338 gtk_print_settings_get_double (GtkPrintSettings *settings,
341 return gtk_print_settings_get_double_with_default (settings, key, 0.0);
345 * gtk_print_settings_set_double:
346 * @settings: a #GtkPrintSettings
348 * @value: a double value
350 * Sets @key to a double value.
355 gtk_print_settings_set_double (GtkPrintSettings *settings,
359 gchar buf[G_ASCII_DTOSTR_BUF_SIZE];
361 g_ascii_dtostr (buf, G_ASCII_DTOSTR_BUF_SIZE, value);
362 gtk_print_settings_set (settings, key, buf);
366 * gtk_print_settings_get_length:
367 * @settings: a #GtkPrintSettings
369 * @unit: the unit of the return value
371 * Returns the value associated with @key, interpreted
372 * as a length. The returned value is converted to @units.
374 * Return value: the length value of @key, converted to @unit
379 gtk_print_settings_get_length (GtkPrintSettings *settings,
383 gdouble length = gtk_print_settings_get_double (settings, key);
384 return _gtk_print_convert_from_mm (length, unit);
388 * gtk_print_settings_set_length:
389 * @settings: a #GtkPrintSettings
392 * @unit: the unit of @length
394 * Associates a length in units of @unit with @key.
399 gtk_print_settings_set_length (GtkPrintSettings *settings,
404 gtk_print_settings_set_double (settings, key,
405 _gtk_print_convert_to_mm (value, unit));
409 * gtk_print_settings_get_int_with_default:
410 * @settings: a #GtkPrintSettings
412 * @def: the default value
414 * Returns the value of @key, interpreted as
415 * an integer, or the default value.
417 * Return value: the integer value of @key
422 gtk_print_settings_get_int_with_default (GtkPrintSettings *settings,
428 val = gtk_print_settings_get (settings, key);
436 * gtk_print_settings_get_int:
437 * @settings: a #GtkPrintSettings
440 * Returns the integer value of @key, or 0.
442 * Return value: the integer value of @key
447 gtk_print_settings_get_int (GtkPrintSettings *settings,
450 return gtk_print_settings_get_int_with_default (settings, key, 0);
454 * gtk_print_settings_set_int:
455 * @settings: a #GtkPrintSettings
459 * Sets @key to an integer value.
464 gtk_print_settings_set_int (GtkPrintSettings *settings,
469 g_sprintf (buf, "%d", value);
470 gtk_print_settings_set (settings, key, buf);
474 * gtk_print_settings_foreach:
475 * @settings: a #GtkPrintSettings
476 * @func: the function to call
477 * @user_data: user data for @func
479 * Calls @func for each key-value pair of @settings.
484 gtk_print_settings_foreach (GtkPrintSettings *settings,
485 GtkPrintSettingsFunc func,
488 g_hash_table_foreach (settings->hash, (GHFunc)func, user_data);
492 * gtk_print_settings_get_printer:
493 * @settings: a #GtkPrintSettings
495 * Convenience function to obtain the value of
496 * %GTK_PRINT_SETTINGS_PRINTER.
498 * Return value: the printer name
502 G_CONST_RETURN gchar *
503 gtk_print_settings_get_printer (GtkPrintSettings *settings)
505 return gtk_print_settings_get (settings, GTK_PRINT_SETTINGS_PRINTER);
510 * gtk_print_settings_set_printer:
511 * @settings: a #GtkPrintSettings
512 * @printer: the printer name
514 * Convenience function to set %GTK_PRINT_SETTINGS_PRINTER
520 gtk_print_settings_set_printer (GtkPrintSettings *settings,
521 const gchar *printer)
523 gtk_print_settings_set (settings, GTK_PRINT_SETTINGS_PRINTER, printer);
527 * gtk_print_settings_get_orientation:
528 * @settings: a #GtkPrintSettings
530 * Get the value of %GTK_PRINT_SETTINGS_ORIENTATION,
531 * converted to a #GtkPageOrientation.
533 * Return value: the orientation
538 gtk_print_settings_get_orientation (GtkPrintSettings *settings)
542 val = gtk_print_settings_get (settings, GTK_PRINT_SETTINGS_ORIENTATION);
544 if (val == NULL || strcmp (val, "portrait") == 0)
545 return GTK_PAGE_ORIENTATION_PORTRAIT;
547 if (strcmp (val, "landscape") == 0)
548 return GTK_PAGE_ORIENTATION_LANDSCAPE;
550 if (strcmp (val, "reverse_portrait") == 0)
551 return GTK_PAGE_ORIENTATION_REVERSE_PORTRAIT;
553 if (strcmp (val, "reverse_landscape") == 0)
554 return GTK_PAGE_ORIENTATION_REVERSE_LANDSCAPE;
556 return GTK_PAGE_ORIENTATION_PORTRAIT;
560 * gtk_print_settings_set_orientation:
561 * @settings: a #GtkPrintSettings
562 * @orientation: a page orientation
564 * Sets the value of %GTK_PRINT_SETTINGS_ORIENTATION.
569 gtk_print_settings_set_orientation (GtkPrintSettings *settings,
570 GtkPageOrientation orientation)
576 case GTK_PAGE_ORIENTATION_LANDSCAPE:
580 case GTK_PAGE_ORIENTATION_PORTRAIT:
583 case GTK_PAGE_ORIENTATION_REVERSE_LANDSCAPE:
584 val = "reverse_landscape";
586 case GTK_PAGE_ORIENTATION_REVERSE_PORTRAIT:
587 val = "reverse_portrait";
590 gtk_print_settings_set (settings, GTK_PRINT_SETTINGS_ORIENTATION, val);
594 * gtk_print_settings_get_paper_size:
595 * @settings: a #GtkPrintSettings
597 * Gets the value of %GTK_PRINT_SETTINGS_PAPER_FORMAT,
598 * converted to a #GtkPaperSize.
600 * Return value: the paper size
605 gtk_print_settings_get_paper_size (GtkPrintSettings *settings)
611 val = gtk_print_settings_get (settings, GTK_PRINT_SETTINGS_PAPER_FORMAT);
615 if (g_str_has_prefix (val, "custom-"))
617 name = val + strlen ("custom-");
618 w = gtk_print_settings_get_paper_width (settings, GTK_UNIT_MM);
619 h = gtk_print_settings_get_paper_height (settings, GTK_UNIT_MM);
620 return gtk_paper_size_new_custom (name, name, w, h, GTK_UNIT_MM);
623 return gtk_paper_size_new (val);
627 * gtk_print_settings_set_paper_size:
628 * @settings: a #GtkPrintSettings
629 * @paper_size: a paper size
631 * Sets the value of %GTK_PRINT_SETTINGS_PAPER_FORMAT,
632 * %GTK_PRINT_SETTINGS_PAPER_WIDTH and
633 * %GTK_PRINT_SETTINGS_PAPER_HEIGHT.
638 gtk_print_settings_set_paper_size (GtkPrintSettings *settings,
639 GtkPaperSize *paper_size)
643 if (paper_size == NULL)
645 gtk_print_settings_set (settings, GTK_PRINT_SETTINGS_PAPER_FORMAT, NULL);
646 gtk_print_settings_set (settings, GTK_PRINT_SETTINGS_PAPER_WIDTH, NULL);
647 gtk_print_settings_set (settings, GTK_PRINT_SETTINGS_PAPER_HEIGHT, NULL);
649 else if (gtk_paper_size_is_custom (paper_size))
651 custom_name = g_strdup_printf ("custom-%s",
652 gtk_paper_size_get_name (paper_size));
653 gtk_print_settings_set (settings, GTK_PRINT_SETTINGS_PAPER_FORMAT, custom_name);
654 g_free (custom_name);
655 gtk_print_settings_set_paper_width (settings,
656 gtk_paper_size_get_width (paper_size,
659 gtk_print_settings_set_paper_height (settings,
660 gtk_paper_size_get_height (paper_size,
665 gtk_print_settings_set (settings, GTK_PRINT_SETTINGS_PAPER_FORMAT,
666 gtk_paper_size_get_name (paper_size));
670 * gtk_print_settings_get_paper_width:
671 * @settings: a #GtkPrintSettings
672 * @unit: the unit for the return value
674 * Gets the value of %GTK_PRINT_SETTINGS_PAPER_WIDTH,
675 * converted to @unit.
677 * Return value: the paper width, in units of @unit
682 gtk_print_settings_get_paper_width (GtkPrintSettings *settings,
685 return gtk_print_settings_get_length (settings, GTK_PRINT_SETTINGS_PAPER_WIDTH, unit);
689 * gtk_print_settings_set_paper_width:
690 * @settings: a #GtkPrintSettings
691 * @width: the paper width
692 * @unit: the units of @width
694 * Sets the value of %GTK_PRINT_SETTINGS_PAPER_WIDTH.
699 gtk_print_settings_set_paper_width (GtkPrintSettings *settings,
703 gtk_print_settings_set_length (settings, GTK_PRINT_SETTINGS_PAPER_WIDTH, width, unit);
707 * gtk_print_settings_get_paper_height:
708 * @settings: a #GtkPrintSettings
709 * @unit: the unit for the return value
711 * Gets the value of %GTK_PRINT_SETTINGS_PAPER_HEIGHT,
712 * converted to @unit.
714 * Return value: the paper height, in units of @unit
719 gtk_print_settings_get_paper_height (GtkPrintSettings *settings,
722 return gtk_print_settings_get_length (settings,
723 GTK_PRINT_SETTINGS_PAPER_HEIGHT,
728 * gtk_print_settings_set_paper_height:
729 * @settings: a #GtkPrintSettings
730 * @height: the paper height
731 * @unit: the units of @height
733 * Sets the value of %GTK_PRINT_SETTINGS_PAPER_HEIGHT.
738 gtk_print_settings_set_paper_height (GtkPrintSettings *settings,
742 gtk_print_settings_set_length (settings,
743 GTK_PRINT_SETTINGS_PAPER_HEIGHT,
748 * gtk_print_settings_get_use_color:
749 * @settings: a #GtkPrintSettings
751 * Gets the value of %GTK_PRINT_SETTINGS_USE_COLOR.
753 * Return value: whether to use color
758 gtk_print_settings_get_use_color (GtkPrintSettings *settings)
760 return gtk_print_settings_get_bool_with_default (settings,
761 GTK_PRINT_SETTINGS_USE_COLOR,
766 * gtk_print_settings_set_use_color:
767 * @settings: a #GtkPrintSettings
768 * @use_color: whether to use color
770 * Sets the value of %GTK_PRINT_SETTINGS_USE_COLOR.
775 gtk_print_settings_set_use_color (GtkPrintSettings *settings,
778 gtk_print_settings_set_bool (settings,
779 GTK_PRINT_SETTINGS_USE_COLOR,
784 * gtk_print_settings_get_collate:
785 * @settings: a #GtkPrintSettings
787 * Gets the value of %GTK_PRINT_SETTINGS_COLLATE.
789 * Return value: whether to collate the printed pages
794 gtk_print_settings_get_collate (GtkPrintSettings *settings)
796 return gtk_print_settings_get_bool (settings,
797 GTK_PRINT_SETTINGS_COLLATE);
801 * gtk_print_settings_set_collate:
802 * @settings: a #GtkPrintSettings
803 * @collate: whether to collate the output
805 * Sets the value of %GTK_PRINT_SETTINGS_COLLATE.
810 gtk_print_settings_set_collate (GtkPrintSettings *settings,
813 gtk_print_settings_set_bool (settings,
814 GTK_PRINT_SETTINGS_COLLATE,
819 * gtk_print_settings_get_reverse:
820 * @settings: a #GtkPrintSettings
822 * Gets the value of %GTK_PRINT_SETTINGS_REVERSE.
824 * Return value: whether to reverse the order of the printed pages
829 gtk_print_settings_get_reverse (GtkPrintSettings *settings)
831 return gtk_print_settings_get_bool (settings,
832 GTK_PRINT_SETTINGS_REVERSE);
836 * gtk_print_settings_set_reverse:
837 * @settings: a #GtkPrintSettings
838 * @reverse: whether to reverse the output
840 * Sets the value of %GTK_PRINT_SETTINGS_REVERSE.
845 gtk_print_settings_set_reverse (GtkPrintSettings *settings,
848 gtk_print_settings_set_bool (settings,
849 GTK_PRINT_SETTINGS_REVERSE,
854 * gtk_print_settings_get_duplex:
855 * @settings: a #GtkPrintSettings
857 * Gets the value of %GTK_PRINT_SETTINGS_DUPLEX.
859 * Return value: whether to print the output in duplex.
864 gtk_print_settings_get_duplex (GtkPrintSettings *settings)
868 val = gtk_print_settings_get (settings, GTK_PRINT_SETTINGS_DUPLEX);
870 if (val == NULL || (strcmp (val, "simplex") == 0))
871 return GTK_PRINT_DUPLEX_SIMPLEX;
873 if (strcmp (val, "horizontal") == 0)
874 return GTK_PRINT_DUPLEX_HORIZONTAL;
876 if (strcmp (val, "vertical") == 0)
877 return GTK_PRINT_DUPLEX_VERTICAL;
879 return GTK_PRINT_DUPLEX_SIMPLEX;
883 * gtk_print_settings_set_duplex:
884 * @settings: a #GtkPrintSettings
885 * @duplex: a #GtkPrintDuplex value
887 * Sets the value of %GTK_PRINT_SETTINGS_DUPLEX.
892 gtk_print_settings_set_duplex (GtkPrintSettings *settings,
893 GtkPrintDuplex duplex)
900 case GTK_PRINT_DUPLEX_SIMPLEX:
903 case GTK_PRINT_DUPLEX_HORIZONTAL:
906 case GTK_PRINT_DUPLEX_VERTICAL:
911 gtk_print_settings_set (settings, GTK_PRINT_SETTINGS_DUPLEX, str);
915 * gtk_print_settings_get_quality:
916 * @settings: a #GtkPrintSettings
918 * Gets the value of %GTK_PRINT_SETTINGS_QUALITY.
920 * Return value: the print quality
925 gtk_print_settings_get_quality (GtkPrintSettings *settings)
929 val = gtk_print_settings_get (settings, GTK_PRINT_SETTINGS_QUALITY);
931 if (val == NULL || (strcmp (val, "normal") == 0))
932 return GTK_PRINT_QUALITY_NORMAL;
934 if (strcmp (val, "high") == 0)
935 return GTK_PRINT_QUALITY_HIGH;
937 if (strcmp (val, "low") == 0)
938 return GTK_PRINT_QUALITY_LOW;
940 if (strcmp (val, "draft") == 0)
941 return GTK_PRINT_QUALITY_DRAFT;
943 return GTK_PRINT_QUALITY_NORMAL;
947 * gtk_print_settings_set_quality:
948 * @settings: a #GtkPrintSettings
949 * @quality: a #GtkPrintQuality value
951 * Sets the value of %GTK_PRINT_SETTINGS_QUALITY.
956 gtk_print_settings_set_quality (GtkPrintSettings *settings,
957 GtkPrintQuality quality)
964 case GTK_PRINT_QUALITY_NORMAL:
967 case GTK_PRINT_QUALITY_HIGH:
970 case GTK_PRINT_QUALITY_LOW:
973 case GTK_PRINT_QUALITY_DRAFT:
978 gtk_print_settings_set (settings, GTK_PRINT_SETTINGS_QUALITY, str);
982 * gtk_print_settings_get_page_set:
983 * @settings: a #GtkPrintSettings
985 * Gets the value of %GTK_PRINT_SETTINGS_PAGE_SET.
987 * Return value: the set of pages to print
992 gtk_print_settings_get_page_set (GtkPrintSettings *settings)
996 val = gtk_print_settings_get (settings, GTK_PRINT_SETTINGS_PAGE_SET);
998 if (val == NULL || (strcmp (val, "all") == 0))
999 return GTK_PAGE_SET_ALL;
1001 if (strcmp (val, "even") == 0)
1002 return GTK_PAGE_SET_EVEN;
1004 if (strcmp (val, "odd") == 0)
1005 return GTK_PAGE_SET_ODD;
1007 return GTK_PAGE_SET_ALL;
1011 * gtk_print_settings_set_page_set:
1012 * @settings: a #GtkPrintSettings
1013 * @page_set: a #GtkPageSet value
1015 * Sets the value of %GTK_PRINT_SETTINGS_PAGE_SET.
1020 gtk_print_settings_set_page_set (GtkPrintSettings *settings,
1021 GtkPageSet page_set)
1028 case GTK_PAGE_SET_ALL:
1031 case GTK_PAGE_SET_EVEN:
1034 case GTK_PAGE_SET_ODD:
1039 gtk_print_settings_set (settings, GTK_PRINT_SETTINGS_PAGE_SET, str);
1043 * gtk_print_settings_get_number_up_layout:
1044 * @settings: a #GtkPrintSettings
1046 * Gets the value of %GTK_PRINT_SETTINGS_NUMBER_UP_LAYOUT.
1048 * Return value: layout of page in number-up mode
1053 gtk_print_settings_get_number_up_layout (GtkPrintSettings *settings)
1055 GtkNumberUpLayout layout;
1056 GtkTextDirection text_direction;
1057 GEnumClass *enum_class;
1058 GEnumValue *enum_value;
1061 g_return_val_if_fail (GTK_IS_PRINT_SETTINGS (settings), GTK_NUMBER_UP_LAYOUT_LEFT_TO_RIGHT_TOP_TO_BOTTOM);
1063 val = gtk_print_settings_get (settings, GTK_PRINT_SETTINGS_NUMBER_UP_LAYOUT);
1064 text_direction = gtk_widget_get_default_direction ();
1066 if (text_direction == GTK_TEXT_DIR_LTR)
1067 layout = GTK_NUMBER_UP_LAYOUT_LEFT_TO_RIGHT_TOP_TO_BOTTOM;
1069 layout = GTK_NUMBER_UP_LAYOUT_RIGHT_TO_LEFT_TOP_TO_BOTTOM;
1074 enum_class = g_type_class_ref (GTK_TYPE_NUMBER_UP_LAYOUT);
1075 enum_value = g_enum_get_value_by_nick (enum_class, val);
1077 layout = enum_value->value;
1078 g_type_class_unref (enum_class);
1084 * gtk_print_settings_set_number_up_layout:
1085 * @settings: a #GtkPrintSettings
1086 * @number_up_layout: a #GtkNumberUpLayout value
1088 * Sets the value of %GTK_PRINT_SETTINGS_NUMBER_UP_LAYOUT.
1093 gtk_print_settings_set_number_up_layout (GtkPrintSettings *settings,
1094 GtkNumberUpLayout number_up_layout)
1096 GEnumClass *enum_class;
1097 GEnumValue *enum_value;
1099 g_return_if_fail (GTK_IS_PRINT_SETTINGS (settings));
1101 enum_class = g_type_class_ref (GTK_TYPE_NUMBER_UP_LAYOUT);
1102 enum_value = g_enum_get_value (enum_class, number_up_layout);
1103 g_return_if_fail (enum_value != NULL);
1105 gtk_print_settings_set (settings, GTK_PRINT_SETTINGS_NUMBER_UP_LAYOUT, enum_value->value_nick);
1106 g_type_class_unref (enum_class);
1110 * gtk_print_settings_get_n_copies:
1111 * @settings: a #GtkPrintSettings
1113 * Gets the value of %GTK_PRINT_SETTINGS_N_COPIES.
1115 * Return value: the number of copies to print
1120 gtk_print_settings_get_n_copies (GtkPrintSettings *settings)
1122 return gtk_print_settings_get_int_with_default (settings, GTK_PRINT_SETTINGS_N_COPIES, 1);
1126 * gtk_print_settings_set_n_copies:
1127 * @settings: a #GtkPrintSettings
1128 * @num_copies: the number of copies
1130 * Sets the value of %GTK_PRINT_SETTINGS_N_COPIES.
1135 gtk_print_settings_set_n_copies (GtkPrintSettings *settings,
1138 gtk_print_settings_set_int (settings, GTK_PRINT_SETTINGS_N_COPIES,
1143 * gtk_print_settings_get_number_up:
1144 * @settings: a #GtkPrintSettings
1146 * Gets the value of %GTK_PRINT_SETTINGS_NUMBER_UP.
1148 * Return value: the number of pages per sheet
1153 gtk_print_settings_get_number_up (GtkPrintSettings *settings)
1155 return gtk_print_settings_get_int_with_default (settings, GTK_PRINT_SETTINGS_NUMBER_UP, 1);
1159 * gtk_print_settings_set_number_up:
1160 * @settings: a #GtkPrintSettings
1161 * @number_up: the number of pages per sheet
1163 * Sets the value of %GTK_PRINT_SETTINGS_NUMBER_UP.
1168 gtk_print_settings_set_number_up (GtkPrintSettings *settings,
1171 gtk_print_settings_set_int (settings, GTK_PRINT_SETTINGS_NUMBER_UP,
1176 * gtk_print_settings_get_resolution:
1177 * @settings: a #GtkPrintSettings
1179 * Gets the value of %GTK_PRINT_SETTINGS_RESOLUTION.
1181 * Return value: the resolution in dpi
1186 gtk_print_settings_get_resolution (GtkPrintSettings *settings)
1188 return gtk_print_settings_get_int_with_default (settings, GTK_PRINT_SETTINGS_RESOLUTION, 300);
1192 * gtk_print_settings_set_resolution:
1193 * @settings: a #GtkPrintSettings
1194 * @resolution: the resolution in dpi
1196 * Sets the values of %GTK_PRINT_SETTINGS_RESOLUTION,
1197 * %GTK_PRINT_SETTINGS_RESOLUTION_X and
1198 * %GTK_PRINT_SETTINGS_RESOLUTION_Y.
1203 gtk_print_settings_set_resolution (GtkPrintSettings *settings,
1206 gtk_print_settings_set_int (settings, GTK_PRINT_SETTINGS_RESOLUTION,
1208 gtk_print_settings_set_int (settings, GTK_PRINT_SETTINGS_RESOLUTION_X,
1210 gtk_print_settings_set_int (settings, GTK_PRINT_SETTINGS_RESOLUTION_Y,
1215 * gtk_print_settings_get_resolution_x:
1216 * @settings: a #GtkPrintSettings
1218 * Gets the value of %GTK_PRINT_SETTINGS_RESOLUTION_X.
1220 * Return value: the horizontal resolution in dpi
1225 gtk_print_settings_get_resolution_x (GtkPrintSettings *settings)
1227 return gtk_print_settings_get_int_with_default (settings, GTK_PRINT_SETTINGS_RESOLUTION_X, 300);
1231 * gtk_print_settings_get_resolution_y:
1232 * @settings: a #GtkPrintSettings
1234 * Gets the value of %GTK_PRINT_SETTINGS_RESOLUTION_Y.
1236 * Return value: the vertical resolution in dpi
1241 gtk_print_settings_get_resolution_y (GtkPrintSettings *settings)
1243 return gtk_print_settings_get_int_with_default (settings, GTK_PRINT_SETTINGS_RESOLUTION_Y, 300);
1247 * gtk_print_settings_set_resolution_xy:
1248 * @settings: a #GtkPrintSettings
1249 * @resolution_x: the horizontal resolution in dpi
1250 * @resolution_y: the vertical resolution in dpi
1252 * Sets the values of %GTK_PRINT_SETTINGS_RESOLUTION,
1253 * %GTK_PRINT_SETTINGS_RESOLUTION_X and
1254 * %GTK_PRINT_SETTINGS_RESOLUTION_Y.
1259 gtk_print_settings_set_resolution_xy (GtkPrintSettings *settings,
1263 gtk_print_settings_set_int (settings, GTK_PRINT_SETTINGS_RESOLUTION_X,
1265 gtk_print_settings_set_int (settings, GTK_PRINT_SETTINGS_RESOLUTION_Y,
1267 gtk_print_settings_set_int (settings, GTK_PRINT_SETTINGS_RESOLUTION,
1272 * gtk_print_settings_get_printer_lpi:
1273 * @settings: a #GtkPrintSettings
1275 * Gets the value of %GTK_PRINT_SETTINGS_PRINTER_LPI.
1277 * Return value: the resolution in lpi (lines per inch)
1282 gtk_print_settings_get_printer_lpi (GtkPrintSettings *settings)
1284 return gtk_print_settings_get_double_with_default (settings, GTK_PRINT_SETTINGS_PRINTER_LPI, 150.0);
1288 * gtk_print_settings_set_printer_lpi:
1289 * @settings: a #GtkPrintSettings
1290 * @lpi: the resolution in lpi (lines per inch)
1292 * Sets the value of %GTK_PRINT_SETTINGS_PRINTER_LPI.
1297 gtk_print_settings_set_printer_lpi (GtkPrintSettings *settings,
1300 gtk_print_settings_set_double (settings, GTK_PRINT_SETTINGS_PRINTER_LPI,
1305 * gtk_print_settings_get_scale:
1306 * @settings: a #GtkPrintSettings
1308 * Gets the value of %GTK_PRINT_SETTINGS_SCALE.
1310 * Return value: the scale in percent
1315 gtk_print_settings_get_scale (GtkPrintSettings *settings)
1317 return gtk_print_settings_get_double_with_default (settings,
1318 GTK_PRINT_SETTINGS_SCALE,
1323 * gtk_print_settings_set_scale:
1324 * @settings: a #GtkPrintSettings
1325 * @scale: the scale in percent
1327 * Sets the value of %GTK_PRINT_SETTINGS_SCALE.
1332 gtk_print_settings_set_scale (GtkPrintSettings *settings,
1335 gtk_print_settings_set_double (settings, GTK_PRINT_SETTINGS_SCALE,
1340 * gtk_print_settings_get_print_pages:
1341 * @settings: a #GtkPrintSettings
1343 * Gets the value of %GTK_PRINT_SETTINGS_PRINT_PAGES.
1345 * Return value: which pages to print
1350 gtk_print_settings_get_print_pages (GtkPrintSettings *settings)
1354 val = gtk_print_settings_get (settings, GTK_PRINT_SETTINGS_PRINT_PAGES);
1356 if (val == NULL || (strcmp (val, "all") == 0))
1357 return GTK_PRINT_PAGES_ALL;
1359 if (strcmp (val, "selection") == 0)
1360 return GTK_PRINT_PAGES_SELECTION;
1362 if (strcmp (val, "current") == 0)
1363 return GTK_PRINT_PAGES_CURRENT;
1365 if (strcmp (val, "ranges") == 0)
1366 return GTK_PRINT_PAGES_RANGES;
1368 return GTK_PRINT_PAGES_ALL;
1372 * gtk_print_settings_set_print_pages:
1373 * @settings: a #GtkPrintSettings
1374 * @pages: a #GtkPrintPages value
1376 * Sets the value of %GTK_PRINT_SETTINGS_PRINT_PAGES.
1381 gtk_print_settings_set_print_pages (GtkPrintSettings *settings,
1382 GtkPrintPages pages)
1389 case GTK_PRINT_PAGES_ALL:
1392 case GTK_PRINT_PAGES_CURRENT:
1395 case GTK_PRINT_PAGES_SELECTION:
1398 case GTK_PRINT_PAGES_RANGES:
1403 gtk_print_settings_set (settings, GTK_PRINT_SETTINGS_PRINT_PAGES, str);
1407 * gtk_print_settings_get_page_ranges:
1408 * @settings: a #GtkPrintSettings
1409 * @num_ranges: return location for the length of the returned array
1411 * Gets the value of %GTK_PRINT_SETTINGS_PAGE_RANGES.
1413 * Return value: an array of #GtkPageRange<!-- -->s. Use g_free()
1414 * to free the array when it is no longer needed.
1419 gtk_print_settings_get_page_ranges (GtkPrintSettings *settings,
1424 GtkPageRange *ranges;
1427 val = gtk_print_settings_get (settings, GTK_PRINT_SETTINGS_PAGE_RANGES);
1435 range_strs = g_strsplit (val, ",", 0);
1437 for (i = 0; range_strs[i] != NULL; i++)
1442 ranges = g_new0 (GtkPageRange, n);
1444 for (i = 0; i < n; i++)
1449 start = (gint)strtol (range_strs[i], &str, 10);
1455 end = (gint)strtol (str, NULL, 10);
1458 ranges[i].start = start;
1459 ranges[i].end = end;
1462 g_strfreev (range_strs);
1469 * gtk_print_settings_set_page_ranges:
1470 * @settings: a #GtkPrintSettings
1471 * @page_ranges: an array of #GtkPageRange<!-- -->s
1472 * @num_ranges: the length of @page_ranges
1474 * Sets the value of %GTK_PRINT_SETTINGS_PAGE_RANGES.
1479 gtk_print_settings_set_page_ranges (GtkPrintSettings *settings,
1480 GtkPageRange *page_ranges,
1486 s = g_string_new ("");
1488 for (i = 0; i < num_ranges; i++)
1490 if (page_ranges[i].start == page_ranges[i].end)
1491 g_string_append_printf (s, "%d", page_ranges[i].start);
1493 g_string_append_printf (s, "%d-%d",
1494 page_ranges[i].start,
1495 page_ranges[i].end);
1496 if (i < num_ranges - 1)
1497 g_string_append (s, ",");
1501 gtk_print_settings_set (settings, GTK_PRINT_SETTINGS_PAGE_RANGES,
1504 g_string_free (s, TRUE);
1508 * gtk_print_settings_get_default_source:
1509 * @settings: a #GtkPrintSettings
1511 * Gets the value of %GTK_PRINT_SETTINGS_DEFAULT_SOURCE.
1513 * Return value: the default source
1517 G_CONST_RETURN gchar *
1518 gtk_print_settings_get_default_source (GtkPrintSettings *settings)
1520 return gtk_print_settings_get (settings, GTK_PRINT_SETTINGS_DEFAULT_SOURCE);
1524 * gtk_print_settings_set_default_source:
1525 * @settings: a #GtkPrintSettings
1526 * @default_source: the default source
1528 * Sets the value of %GTK_PRINT_SETTINGS_DEFAULT_SOURCE.
1533 gtk_print_settings_set_default_source (GtkPrintSettings *settings,
1534 const gchar *default_source)
1536 gtk_print_settings_set (settings, GTK_PRINT_SETTINGS_DEFAULT_SOURCE, default_source);
1540 * gtk_print_settings_get_media_type:
1541 * @settings: a #GtkPrintSettings
1543 * Gets the value of %GTK_PRINT_SETTINGS_MEDIA_TYPE.
1545 * The set of media types is defined in PWG 5101.1-2002 PWG.
1546 * <!-- FIXME link here -->
1548 * Return value: the media type
1552 G_CONST_RETURN gchar *
1553 gtk_print_settings_get_media_type (GtkPrintSettings *settings)
1555 return gtk_print_settings_get (settings, GTK_PRINT_SETTINGS_MEDIA_TYPE);
1559 * gtk_print_settings_set_media_type:
1560 * @settings: a #GtkPrintSettings
1561 * @media_type: the media type
1563 * Sets the value of %GTK_PRINT_SETTINGS_MEDIA_TYPE.
1565 * The set of media types is defined in PWG 5101.1-2002 PWG.
1566 * <!-- FIXME link here -->
1571 gtk_print_settings_set_media_type (GtkPrintSettings *settings,
1572 const gchar *media_type)
1574 gtk_print_settings_set (settings, GTK_PRINT_SETTINGS_MEDIA_TYPE, media_type);
1578 * gtk_print_settings_get_dither:
1579 * @settings: a #GtkPrintSettings
1581 * Gets the value of %GTK_PRINT_SETTINGS_DITHER.
1583 * Return value: the dithering that is used
1587 G_CONST_RETURN gchar *
1588 gtk_print_settings_get_dither (GtkPrintSettings *settings)
1590 return gtk_print_settings_get (settings, GTK_PRINT_SETTINGS_DITHER);
1594 * gtk_print_settings_set_dither:
1595 * @settings: a #GtkPrintSettings
1596 * @dither: the dithering that is used
1598 * Sets the value of %GTK_PRINT_SETTINGS_DITHER.
1603 gtk_print_settings_set_dither (GtkPrintSettings *settings,
1604 const gchar *dither)
1606 gtk_print_settings_set (settings, GTK_PRINT_SETTINGS_DITHER, dither);
1610 * gtk_print_settings_get_finishings:
1611 * @settings: a #GtkPrintSettings
1613 * Gets the value of %GTK_PRINT_SETTINGS_FINISHINGS.
1615 * Return value: the finishings
1620 gtk_print_settings_get_finishings (GtkPrintSettings *settings)
1622 return gtk_print_settings_get (settings, GTK_PRINT_SETTINGS_FINISHINGS);
1626 * gtk_print_settings_set_finishings:
1627 * @settings: a #GtkPrintSettings
1628 * @finishings: the finishings
1630 * Sets the value of %GTK_PRINT_SETTINGS_FINISHINGS.
1635 gtk_print_settings_set_finishings (GtkPrintSettings *settings,
1636 const gchar *finishings)
1638 gtk_print_settings_set (settings, GTK_PRINT_SETTINGS_FINISHINGS, finishings);
1642 * gtk_print_settings_get_output_bin:
1643 * @settings: a #GtkPrintSettings
1645 * Gets the value of %GTK_PRINT_SETTINGS_OUTPUT_BIN.
1647 * Return value: the output bin
1651 G_CONST_RETURN gchar *
1652 gtk_print_settings_get_output_bin (GtkPrintSettings *settings)
1654 return gtk_print_settings_get (settings, GTK_PRINT_SETTINGS_OUTPUT_BIN);
1658 * gtk_print_settings_set_output_bin:
1659 * @settings: a #GtkPrintSettings
1660 * @output_bin: the output bin
1662 * Sets the value of %GTK_PRINT_SETTINGS_OUTPUT_BIN.
1667 gtk_print_settings_set_output_bin (GtkPrintSettings *settings,
1668 const gchar *output_bin)
1670 gtk_print_settings_set (settings, GTK_PRINT_SETTINGS_OUTPUT_BIN, output_bin);
1674 * gtk_print_settings_load_file:
1675 * @settings: a #GtkPrintSettings
1676 * @file_name: the filename to read the settings from
1677 * @error: return location for errors, or %NULL
1679 * Reads the print settings from @file_name. If the file could not be loaded
1680 * then error is set to either a #GFileError or #GKeyFileError.
1681 * See gtk_print_settings_to_file().
1683 * Return value: %TRUE on success
1688 gtk_print_settings_load_file (GtkPrintSettings *settings,
1689 const gchar *file_name,
1692 gboolean retval = FALSE;
1695 g_return_val_if_fail (GTK_IS_PRINT_SETTINGS (settings), FALSE);
1696 g_return_val_if_fail (file_name != NULL, FALSE);
1698 key_file = g_key_file_new ();
1700 if (g_key_file_load_from_file (key_file, file_name, 0, error) &&
1701 gtk_print_settings_load_key_file (settings, key_file, NULL, error))
1704 g_key_file_free (key_file);
1710 * gtk_print_settings_new_from_file:
1711 * @file_name: the filename to read the settings from
1712 * @error: return location for errors, or %NULL
1714 * Reads the print settings from @file_name. Returns a new #GtkPrintSettings
1715 * object with the restored settings, or %NULL if an error occurred. If the
1716 * file could not be loaded then error is set to either a #GFileError or
1717 * #GKeyFileError. See gtk_print_settings_to_file().
1719 * Return value: the restored #GtkPrintSettings
1724 gtk_print_settings_new_from_file (const gchar *file_name,
1727 GtkPrintSettings *settings = gtk_print_settings_new ();
1729 if (!gtk_print_settings_load_file (settings, file_name, error))
1731 g_object_unref (settings);
1739 * gtk_print_settings_load_key_file:
1740 * @settings: a #GtkPrintSettings
1741 * @key_file: the #GKeyFile to retrieve the settings from
1742 * @group_name: the name of the group to use, or %NULL to use the default
1744 * @error: return location for errors, or %NULL
1746 * Reads the print settings from the group @group_name in @key_file. If the
1747 * file could not be loaded then error is set to either a #GFileError or
1750 * Return value: %TRUE on success
1755 gtk_print_settings_load_key_file (GtkPrintSettings *settings,
1757 const gchar *group_name,
1764 g_return_val_if_fail (GTK_IS_PRINT_SETTINGS (settings), FALSE);
1765 g_return_val_if_fail (key_file != NULL, FALSE);
1768 group_name = KEYFILE_GROUP_NAME;
1770 keys = g_key_file_get_keys (key_file,
1776 g_propagate_error (error, err);
1780 for (i = 0 ; i < n_keys; ++i)
1784 value = g_key_file_get_string (key_file,
1791 gtk_print_settings_set (settings, keys[i], value);
1801 * gtk_print_settings_new_from_key_file:
1802 * @key_file: the #GKeyFile to retrieve the settings from
1803 * @group_name: the name of the group to use, or %NULL to use
1804 * the default "Print Settings"
1805 * @error: return location for errors, or %NULL
1807 * Reads the print settings from the group @group_name in @key_file. Returns a
1808 * new #GtkPrintSettings object with the restored settings, or %NULL if an
1809 * error occurred. If the file could not be loaded then error is set to either
1810 * a #GFileError or #GKeyFileError.
1812 * Return value: the restored #GtkPrintSettings
1817 gtk_print_settings_new_from_key_file (GKeyFile *key_file,
1818 const gchar *group_name,
1821 GtkPrintSettings *settings = gtk_print_settings_new ();
1823 if (!gtk_print_settings_load_key_file (settings, key_file,
1826 g_object_unref (settings);
1834 * gtk_print_settings_to_file:
1835 * @settings: a #GtkPrintSettings
1836 * @file_name: the file to save to
1837 * @error: return location for errors, or %NULL
1839 * This function saves the print settings from @settings to @file_name. If the
1840 * file could not be loaded then error is set to either a #GFileError or
1843 * Return value: %TRUE on success
1848 gtk_print_settings_to_file (GtkPrintSettings *settings,
1849 const gchar *file_name,
1853 gboolean retval = FALSE;
1858 g_return_val_if_fail (GTK_IS_PRINT_SETTINGS (settings), FALSE);
1859 g_return_val_if_fail (file_name != NULL, FALSE);
1861 key_file = g_key_file_new ();
1862 gtk_print_settings_to_key_file (settings, key_file, NULL);
1864 data = g_key_file_to_data (key_file, &len, &err);
1868 retval = g_file_set_contents (file_name, data, len, &err);
1872 g_propagate_error (error, err);
1874 g_key_file_free (key_file);
1882 const gchar *group_name;
1886 add_value_to_key_file (const gchar *key,
1890 g_key_file_set_string (data->key_file, data->group_name, key, value);
1894 * gtk_print_settings_to_key_file:
1895 * @settings: a #GtkPrintSettings
1896 * @key_file: the #GKeyFile to save the print settings to
1897 * @group_name: the group to add the settings to in @key_file, or
1898 * %NULL to use the default "Print Settings"
1900 * This function adds the print settings from @settings to @key_file.
1905 gtk_print_settings_to_key_file (GtkPrintSettings *settings,
1907 const gchar *group_name)
1911 g_return_if_fail (GTK_IS_PRINT_SETTINGS (settings));
1912 g_return_if_fail (key_file != NULL);
1915 group_name = KEYFILE_GROUP_NAME;
1917 data.key_file = key_file;
1918 data.group_name = group_name;
1920 gtk_print_settings_foreach (settings,
1921 (GtkPrintSettingsFunc) add_value_to_key_file,
1926 #define __GTK_PRINT_SETTINGS_C__
1927 #include "gtkaliasdef.c"