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:
785 * @settings: a #GtkPrintSettings
787 * Gets the value of %GTK_PRINT_SETTINGS_USE_COLOR.
789 * Return value: whether to use color
794 gtk_print_settings_get_use_color (GtkPrintSettings *settings)
796 return gtk_print_settings_get_bool_with_default (settings,
797 GTK_PRINT_SETTINGS_USE_COLOR,
802 * gtk_print_settings_set_use_color:
803 * @settings: a #GtkPrintSettings
804 * @use_color: whether to use color
806 * Sets the value of %GTK_PRINT_SETTINGS_USE_COLOR.
811 gtk_print_settings_set_use_color (GtkPrintSettings *settings,
814 gtk_print_settings_set_bool (settings,
815 GTK_PRINT_SETTINGS_USE_COLOR,
820 * gtk_print_settings_get_collate:
821 * @settings: a #GtkPrintSettings
823 * Gets the value of %GTK_PRINT_SETTINGS_COLLATE.
825 * Return value: whether to collate the printed pages
830 gtk_print_settings_get_collate (GtkPrintSettings *settings)
832 return gtk_print_settings_get_bool (settings,
833 GTK_PRINT_SETTINGS_COLLATE);
837 * gtk_print_settings_set_collate:
838 * @settings: a #GtkPrintSettings
839 * @collate: whether to collate the output
841 * Sets the value of %GTK_PRINT_SETTINGS_COLLATE.
846 gtk_print_settings_set_collate (GtkPrintSettings *settings,
849 gtk_print_settings_set_bool (settings,
850 GTK_PRINT_SETTINGS_COLLATE,
855 * gtk_print_settings_get_reverse:
856 * @settings: a #GtkPrintSettings
858 * Gets the value of %GTK_PRINT_SETTINGS_REVERSE.
860 * Return value: whether to reverse the order of the printed pages
865 gtk_print_settings_get_reverse (GtkPrintSettings *settings)
867 return gtk_print_settings_get_bool (settings,
868 GTK_PRINT_SETTINGS_REVERSE);
872 * gtk_print_settings_set_reverse:
873 * @settings: a #GtkPrintSettings
874 * @reverse: whether to reverse the output
876 * Sets the value of %GTK_PRINT_SETTINGS_REVERSE.
881 gtk_print_settings_set_reverse (GtkPrintSettings *settings,
884 gtk_print_settings_set_bool (settings,
885 GTK_PRINT_SETTINGS_REVERSE,
890 * gtk_print_settings_get_duplex:
891 * @settings: a #GtkPrintSettings
893 * Gets the value of %GTK_PRINT_SETTINGS_DUPLEX.
895 * Return value: whether to print the output in duplex.
900 gtk_print_settings_get_duplex (GtkPrintSettings *settings)
904 val = gtk_print_settings_get (settings, GTK_PRINT_SETTINGS_DUPLEX);
906 if (val == NULL || (strcmp (val, "simplex") == 0))
907 return GTK_PRINT_DUPLEX_SIMPLEX;
909 if (strcmp (val, "horizontal") == 0)
910 return GTK_PRINT_DUPLEX_HORIZONTAL;
912 if (strcmp (val, "vertical") == 0)
913 return GTK_PRINT_DUPLEX_HORIZONTAL;
915 return GTK_PRINT_DUPLEX_SIMPLEX;
919 * gtk_print_settings_set_duplex:
920 * @settings: a #GtkPrintSettings
921 * @duplex: a #GtkPrintDuplex value
923 * Sets the value of %GTK_PRINT_SETTINGS_DUPLEX.
928 gtk_print_settings_set_duplex (GtkPrintSettings *settings,
929 GtkPrintDuplex duplex)
936 case GTK_PRINT_DUPLEX_SIMPLEX:
939 case GTK_PRINT_DUPLEX_HORIZONTAL:
942 case GTK_PRINT_DUPLEX_VERTICAL:
947 gtk_print_settings_set (settings, GTK_PRINT_SETTINGS_DUPLEX, str);
951 * gtk_print_settings_get_quality:
952 * @settings: a #GtkPrintSettings
954 * Gets the value of %GTK_PRINT_SETTINGS_QUALITY.
956 * Return value: the print quality
961 gtk_print_settings_get_quality (GtkPrintSettings *settings)
965 val = gtk_print_settings_get (settings, GTK_PRINT_SETTINGS_QUALITY);
967 if (val == NULL || (strcmp (val, "normal") == 0))
968 return GTK_PRINT_QUALITY_NORMAL;
970 if (strcmp (val, "high") == 0)
971 return GTK_PRINT_QUALITY_HIGH;
973 if (strcmp (val, "low") == 0)
974 return GTK_PRINT_QUALITY_LOW;
976 if (strcmp (val, "draft") == 0)
977 return GTK_PRINT_QUALITY_DRAFT;
979 return GTK_PRINT_QUALITY_NORMAL;
983 * gtk_print_settings_set_quality:
984 * @settings: a #GtkPrintSettings
985 * @duplex: a #GtkPrintQuality value
987 * Sets the value of %GTK_PRINT_SETTINGS_QUALITY.
992 gtk_print_settings_set_quality (GtkPrintSettings *settings,
993 GtkPrintQuality quality)
1000 case GTK_PRINT_QUALITY_NORMAL:
1003 case GTK_PRINT_QUALITY_HIGH:
1006 case GTK_PRINT_QUALITY_LOW:
1009 case GTK_PRINT_QUALITY_DRAFT:
1014 gtk_print_settings_set (settings, GTK_PRINT_SETTINGS_QUALITY, str);
1018 * gtk_print_settings_get_page_set:
1019 * @settings: a #GtkPrintSettings
1021 * Gets the value of %GTK_PRINT_SETTINGS_PAGE_SET.
1023 * Return value: the set of pages to print
1028 gtk_print_settings_get_page_set (GtkPrintSettings *settings)
1032 val = gtk_print_settings_get (settings, GTK_PRINT_SETTINGS_PAGE_SET);
1034 if (val == NULL || (strcmp (val, "all") == 0))
1035 return GTK_PAGE_SET_ALL;
1037 if (strcmp (val, "even") == 0)
1038 return GTK_PAGE_SET_EVEN;
1040 if (strcmp (val, "odd") == 0)
1041 return GTK_PAGE_SET_ODD;
1043 return GTK_PAGE_SET_ALL;
1047 * gtk_print_settings_set_page_set:
1048 * @settings: a #GtkPrintSettings
1049 * @page_set: a #GtkPageSet value
1051 * Sets the value of %GTK_PRINT_SETTINGS_PAGE_SET.
1056 gtk_print_settings_set_page_set (GtkPrintSettings *settings,
1057 GtkPageSet page_set)
1064 case GTK_PAGE_SET_ALL:
1067 case GTK_PAGE_SET_EVEN:
1070 case GTK_PAGE_SET_ODD:
1075 gtk_print_settings_set (settings, GTK_PRINT_SETTINGS_PAGE_SET, str);
1079 * gtk_print_settings_get_num_copies:
1080 * @settings: a #GtkPrintSettings
1082 * Gets the value of %GTK_PRINT_SETTINGS_NUM_COPIES.
1084 * Return value: the number of copies to print
1089 gtk_print_settings_get_num_copies (GtkPrintSettings *settings)
1091 return gtk_print_settings_get_int_with_default (settings, GTK_PRINT_SETTINGS_NUM_COPIES, 1);
1095 * gtk_print_settings_set_num_copies:
1096 * @settings: a #GtkPrintSettings
1097 * @num_copies: the number of copies
1099 * Sets the value of %GTK_PRINT_SETTINGS_NUM_COPIES.
1104 gtk_print_settings_set_num_copies (GtkPrintSettings *settings,
1107 gtk_print_settings_set_int (settings, GTK_PRINT_SETTINGS_NUM_COPIES,
1112 * gtk_print_settings_get_number_up:
1113 * @settings: a #GtkPrintSettings
1115 * Gets the value of %GTK_PRINT_SETTINGS_NUMBER_UP.
1117 * Return value: the number of pages per sheet
1122 gtk_print_settings_get_number_up (GtkPrintSettings *settings)
1124 return gtk_print_settings_get_int (settings, GTK_PRINT_SETTINGS_NUMBER_UP);
1128 * gtk_print_settings_set_number_up:
1129 * @settings: a #GtkPrintSettings
1130 * @num_copies: the number of pages per sheet
1132 * Sets the value of %GTK_PRINT_SETTINGS_NUMBER_UP.
1137 gtk_print_settings_set_number_up (GtkPrintSettings *settings,
1140 gtk_print_settings_set_int (settings, GTK_PRINT_SETTINGS_NUMBER_UP,
1145 * gtk_print_settings_get_resolution:
1146 * @settings: a #GtkPrintSettings
1148 * Gets the value of %GTK_PRINT_SETTINGS_RESOLUTION.
1150 * Return value: the resolution in dpi
1155 gtk_print_settings_get_resolution (GtkPrintSettings *settings)
1157 return gtk_print_settings_get_int (settings, GTK_PRINT_SETTINGS_RESOLUTION);
1161 * gtk_print_settings_set_resolution:
1162 * @settings: a #GtkPrintSettings
1163 * @resolution: the resolution in dpi
1165 * Sets the value of %GTK_PRINT_SETTINGS_RESOLUTION.
1170 gtk_print_settings_set_resolution (GtkPrintSettings *settings,
1173 gtk_print_settings_set_int (settings, GTK_PRINT_SETTINGS_RESOLUTION,
1178 * gtk_print_settings_get_scale:
1179 * @settings: a #GtkPrintSettings
1181 * Gets the value of %GTK_PRINT_SETTINGS_SCALE.
1183 * Return value: the scale in percent
1188 gtk_print_settings_get_scale (GtkPrintSettings *settings)
1190 return gtk_print_settings_get_double_with_default (settings,
1191 GTK_PRINT_SETTINGS_SCALE,
1196 * gtk_print_settings_set_scale:
1197 * @settings: a #GtkPrintSettings
1198 * @resolution: the scale in percent
1200 * Sets the value of %GTK_PRINT_SETTINGS_SCALE.
1205 gtk_print_settings_set_scale (GtkPrintSettings *settings,
1208 gtk_print_settings_set_double (settings, GTK_PRINT_SETTINGS_SCALE,
1213 * gtk_print_settings_get_print_to_file:
1214 * @settings: a #GtkPrintSettings
1216 * Gets the value of %GTK_PRINT_SETTINGS_PRINT_TO_FILE.
1218 * Return value: whether to print to a file
1223 gtk_print_settings_get_print_to_file (GtkPrintSettings *settings)
1225 return gtk_print_settings_get_bool (settings,
1226 GTK_PRINT_SETTINGS_PRINT_TO_FILE);
1230 * gtk_print_settings_set_print_to_file:
1231 * @settings: a #GtkPrintSettings
1232 * @print_to_file: whether to print to a file
1234 * Sets the value of %GTK_PRINT_SETTINGS_PRINT_TO_FILE.
1239 gtk_print_settings_set_print_to_file (GtkPrintSettings *settings,
1240 gboolean print_to_file)
1242 gtk_print_settings_set_bool (settings,
1243 GTK_PRINT_SETTINGS_PRINT_TO_FILE,
1248 * gtk_print_settings_get_print_pages:
1249 * @settings: a #GtkPrintSettings
1251 * Gets the value of %GTK_PRINT_SETTINGS_PRINT_PAGES.
1253 * Return value: which pages to print
1258 gtk_print_settings_get_print_pages (GtkPrintSettings *settings)
1262 val = gtk_print_settings_get (settings, GTK_PRINT_SETTINGS_PRINT_PAGES);
1264 if (val == NULL || (strcmp (val, "all") == 0))
1265 return GTK_PRINT_PAGES_ALL;
1267 if (strcmp (val, "current") == 0)
1268 return GTK_PRINT_PAGES_CURRENT;
1270 if (strcmp (val, "ranges") == 0)
1271 return GTK_PRINT_PAGES_RANGES;
1273 return GTK_PRINT_PAGES_ALL;
1277 * gtk_print_settings_set_print_pages:
1278 * @settings: a #GtkPrintSettings
1279 * @print_pages: a #GtkPrintPages value
1281 * Sets the value of %GTK_PRINT_SETTINGS_PRINT_PAGES.
1286 gtk_print_settings_set_print_pages (GtkPrintSettings *settings,
1287 GtkPrintPages print_pages)
1291 switch (print_pages)
1294 case GTK_PRINT_PAGES_ALL:
1297 case GTK_PRINT_PAGES_CURRENT:
1300 case GTK_PRINT_PAGES_RANGES:
1305 gtk_print_settings_set (settings, GTK_PRINT_SETTINGS_PRINT_PAGES, str);
1309 * gtk_print_settings_get_page_ranges:
1310 * @settings: a #GtkPrintSettings
1311 * @num_ranges: return location for the length of the returned array
1313 * Gets the value of %GTK_PRINT_SETTINGS_PAGE_RANGES.
1315 * Return value: an array of #GtkPageRange<!-- -->s
1320 gtk_print_settings_get_page_ranges (GtkPrintSettings *settings,
1325 GtkPageRange *ranges;
1328 val = gtk_print_settings_get (settings, GTK_PRINT_SETTINGS_PAGE_RANGES);
1336 range_strs = g_strsplit (val, ",", 0);
1338 for (i = 0; range_strs[i] != NULL; i++)
1343 ranges = g_new0 (GtkPageRange, n);
1345 for (i = 0; i < n; i++)
1350 start = (gint)strtol (range_strs[i], &str, 10);
1356 end = (gint)strtol (str, NULL, 10);
1361 ranges[i].start = start;
1362 ranges[i].end = end;
1370 * gtk_print_settings_set_page_ranges:
1371 * @settings: a #GtkPrintSettings
1372 * @page_ranges: an array of #GtkPageRange<!-- -->s
1373 * @num_ranges: the length of @page_ranges
1375 * Sets the value of %GTK_PRINT_SETTINGS_PAGE_RANGES.
1380 gtk_print_settings_set_page_ranges (GtkPrintSettings *settings,
1381 GtkPageRange *page_ranges,
1387 s = g_string_new ("");
1389 for (i = 0; i < num_ranges; i++)
1391 if (page_ranges[i].start == page_ranges[i].end)
1392 g_string_append_printf (s, "%d", page_ranges[i].start);
1394 g_string_append_printf (s, "%d-%d",
1395 page_ranges[i].start,
1396 page_ranges[i].end);
1397 if (i < num_ranges - 1)
1398 g_string_append (s, ",");
1402 gtk_print_settings_set (settings, GTK_PRINT_SETTINGS_PAGE_RANGES,
1405 g_string_free (s, TRUE);
1409 * gtk_print_settings_get_default_source:
1410 * @settings: a #GtkPrintSettings
1412 * Gets the value of %GTK_PRINT_SETTINGS_DEFAULT_SOURCE.
1414 * Return value: the default source
1418 G_CONST_RETURN gchar *
1419 gtk_print_settings_get_default_source (GtkPrintSettings *settings)
1421 return gtk_print_settings_get (settings, GTK_PRINT_SETTINGS_DEFAULT_SOURCE);
1425 * gtk_print_settings_set_default_source:
1426 * @settings: a #GtkPrintSettings
1427 * @default_source: the default source
1429 * Sets the value of %GTK_PRINT_SETTINGS_DEFAULT_SOURCE.
1434 gtk_print_settings_set_default_source (GtkPrintSettings *settings,
1435 const gchar *default_source)
1437 gtk_print_settings_set (settings, GTK_PRINT_SETTINGS_DEFAULT_SOURCE, default_source);
1441 * gtk_print_settings_get_media_type:
1442 * @settings: a #GtkPrintSettings
1444 * Gets the value of %GTK_PRINT_SETTINGS_MEDIA_TYPE.
1446 * The set of media types is defined in PWG 5101.1-2002 PWG.
1447 * <!-- FIXME link here -->
1449 * Return value: the media type
1453 G_CONST_RETURN gchar *
1454 gtk_print_settings_get_media_type (GtkPrintSettings *settings)
1456 return gtk_print_settings_get (settings, GTK_PRINT_SETTINGS_MEDIA_TYPE);
1460 * gtk_print_settings_set_media_type:
1461 * @settings: a #GtkPrintSettings
1462 * @media_type: the media type
1464 * Sets the value of %GTK_PRINT_SETTINGS_MEDIA_TYPE.
1466 * The set of media types is defined in PWG 5101.1-2002 PWG.
1467 * <!-- FIXME link here -->
1472 gtk_print_settings_set_media_type (GtkPrintSettings *settings,
1473 const gchar *media_type)
1475 gtk_print_settings_set (settings, GTK_PRINT_SETTINGS_MEDIA_TYPE, media_type);
1479 * gtk_print_settings_get_dither:
1480 * @settings: a #GtkPrintSettings
1482 * Gets the value of %GTK_PRINT_SETTINGS_DITHER.
1484 * Return value: the dithering that is used
1488 G_CONST_RETURN gchar *
1489 gtk_print_settings_get_dither (GtkPrintSettings *settings)
1491 return gtk_print_settings_get (settings, GTK_PRINT_SETTINGS_DITHER);
1495 * gtk_print_settings_set_dither:
1496 * @settings: a #GtkPrintSettings
1497 * @dither: the dithering that is used
1499 * Sets the value of %GTK_PRINT_SETTINGS_DITHER.
1504 gtk_print_settings_set_dither (GtkPrintSettings *settings,
1505 const gchar *dither)
1507 gtk_print_settings_set (settings, GTK_PRINT_SETTINGS_DITHER, dither);
1511 * gtk_print_settings_get_finishings:
1512 * @settings: a #GtkPrintSettings
1514 * Gets the value of %GTK_PRINT_SETTINGS_FINISHINGS.
1516 * Return value: the finishings
1521 gtk_print_settings_get_finishings (GtkPrintSettings *settings)
1523 return gtk_print_settings_get (settings, GTK_PRINT_SETTINGS_FINISHINGS);
1527 * gtk_print_settings_set_finishings:
1528 * @settings: a #GtkPrintSettings
1529 * @finishings: the finishings
1531 * Sets the value of %GTK_PRINT_SETTINGS_FINISHINGS.
1536 gtk_print_settings_set_finishings (GtkPrintSettings *settings,
1537 const gchar *finishings)
1539 gtk_print_settings_set (settings, GTK_PRINT_SETTINGS_FINISHINGS, finishings);
1543 * gtk_print_settings_get_output_bin:
1544 * @settings: a #GtkPrintSettings
1546 * Gets the value of %GTK_PRINT_SETTINGS_OUTPUT_BIN.
1548 * Return value: the output bin
1552 G_CONST_RETURN gchar *
1553 gtk_print_settings_get_output_bin (GtkPrintSettings *settings)
1555 return gtk_print_settings_get (settings, GTK_PRINT_SETTINGS_OUTPUT_BIN);
1559 * gtk_print_settings_set_output_bin:
1560 * @settings: a #GtkPrintSettings
1561 * @output_bin: the output bin
1563 * Sets the value of %GTK_PRINT_SETTINGS_OUTPUT_BIN.
1568 gtk_print_settings_set_output_bin (GtkPrintSettings *settings,
1569 const gchar *output_bin)
1571 gtk_print_settings_set (settings, GTK_PRINT_SETTINGS_OUTPUT_BIN, output_bin);
1575 #define __GTK_PRINT_SETTINGS_C__
1576 #include "gtkaliasdef.c"