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"
26 #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 G_DEFINE_TYPE (GtkPrintSettings, gtk_print_settings, G_TYPE_OBJECT)
51 gtk_print_settings_finalize (GObject *object)
53 GtkPrintSettings *settings = GTK_PRINT_SETTINGS (object);
55 g_hash_table_destroy (settings->hash);
57 G_OBJECT_CLASS (gtk_print_settings_parent_class)->finalize (object);
61 gtk_print_settings_init (GtkPrintSettings *settings)
63 settings->hash = g_hash_table_new_full (g_str_hash, g_str_equal,
68 gtk_print_settings_class_init (GtkPrintSettingsClass *class)
70 GObjectClass *gobject_class = (GObjectClass *)class;
72 gobject_class->finalize = gtk_print_settings_finalize;
76 * gtk_print_settings_new:
78 * Creates a new #GtkPrintSettings object.
80 * Return value: a new #GtkPrintSettings object
85 gtk_print_settings_new (void)
87 return g_object_new (GTK_TYPE_PRINT_SETTINGS, NULL);
91 copy_hash_entry (gpointer key,
95 GtkPrintSettings *settings = user_data;
97 g_hash_table_insert (settings->hash,
105 * gtk_print_settings_copy:
106 * @other: a #GtkPrintSettings
108 * Copies a #GtkPrintSettings object.
110 * Return value: a newly allocated copy of @other
115 gtk_print_settings_copy (GtkPrintSettings *other)
117 GtkPrintSettings *settings;
122 g_return_val_if_fail (GTK_IS_PRINT_SETTINGS (other), NULL);
124 settings = gtk_print_settings_new ();
126 g_hash_table_foreach (other->hash,
134 * gtk_print_settings_get:
135 * @settings: a #GtkPrintSettings
138 * Looks up the string value associated with @key.
140 * Return value: the string value for @key
144 G_CONST_RETURN gchar *
145 gtk_print_settings_get (GtkPrintSettings *settings,
148 return g_hash_table_lookup (settings->hash, key);
152 * gtk_print_settings_set:
153 * @settings: a #GtkPrintSettings
155 * @value: a string value, or %NULL
157 * Associates @value with @key.
162 gtk_print_settings_set (GtkPrintSettings *settings,
167 gtk_print_settings_unset (settings, key);
169 g_hash_table_insert (settings->hash,
175 * gtk_print_settings_unset:
176 * @settings: a #GtkPrintSettings
179 * Removes any value associated with @key.
180 * This has the same effect as setting the value to %NULL.
185 gtk_print_settings_unset (GtkPrintSettings *settings,
188 g_hash_table_remove (settings->hash, key);
192 * gtk_print_settings_has_key:
193 * @settings: a #GtkPrintSettings
196 * Returns %TRUE, if a value is associated with @key.
198 * Return value: %TRUE, if @key has a value
203 gtk_print_settings_has_key (GtkPrintSettings *settings,
206 return gtk_print_settings_get (settings, key) != NULL;
211 * gtk_print_settings_get_bool:
212 * @settings: a #GtkPrintSettings
215 * Returns the boolean represented by the value
216 * that is associated with @key.
218 * The string "true" represents %TRUE, any other
221 * Return value: %TRUE, if @key maps to a true value.
226 gtk_print_settings_get_bool (GtkPrintSettings *settings,
231 val = gtk_print_settings_get (settings, key);
232 if (val != NULL && strcmp (val, "true") == 0)
239 * gtk_print_settings_get_bool_with_default:
240 * @settings: a #GtkPrintSettings
242 * @default_val: the default value
244 * Returns the boolean represented by the value
245 * that is associated with @key, or @default_val
246 * if the value does not represent a boolean.
248 * The string "true" represents %TRUE, the string
249 * "false" represents %FALSE.
251 * Return value: the boolean value associated with @key
256 gtk_print_settings_get_bool_with_default (GtkPrintSettings *settings,
258 gboolean default_val)
262 val = gtk_print_settings_get (settings, key);
263 if (val != NULL && strcmp (val, "true") == 0)
266 if (val != NULL && strcmp (val, "false") == 0)
273 * gtk_print_settings_set_bool:
274 * @settings: a #GtkPrintSettings
278 * Sets @key to a boolean value.
283 gtk_print_settings_set_bool (GtkPrintSettings *settings,
288 gtk_print_settings_set (settings, key, "true");
290 gtk_print_settings_set (settings, key, "false");
294 * gtk_print_settings_get_double_with_default:
295 * @settings: a #GtkPrintSettings
297 * @def: the default value
299 * Returns the floating point number represented by
300 * the value that is associated with @key, or @default_val
301 * if the value does not represent a floating point number.
303 * Floating point numbers are parsed with g_ascii_strtod().
305 * Return value: the floating point number associated with @key
310 gtk_print_settings_get_double_with_default (GtkPrintSettings *settings,
316 val = gtk_print_settings_get (settings, key);
320 return g_ascii_strtod (val, NULL);
324 * gtk_print_settings_get_double:
325 * @settings: a #GtkPrintSettings
328 * Returns the double value associated with @key, or 0.
330 * Return value: the double value of @key
335 gtk_print_settings_get_double (GtkPrintSettings *settings,
338 return gtk_print_settings_get_double_with_default (settings, key, 0.0);
342 * gtk_print_settings_set_double:
343 * @settings: a #GtkPrintSettings
345 * @value: a double value
347 * Sets @key to a double value.
352 gtk_print_settings_set_double (GtkPrintSettings *settings,
356 gchar buf[G_ASCII_DTOSTR_BUF_SIZE];
358 g_ascii_dtostr (buf, G_ASCII_DTOSTR_BUF_SIZE, value);
359 gtk_print_settings_set (settings, key, buf);
363 * gtk_print_settings_get_length:
364 * @settings: a #GtkPrintSettings
366 * @unit: the unit of the return value
368 * Returns the value associated with @key, interpreted
369 * as a length. The returned value is converted to @units.
371 * Return value: the length value of @key, converted to @unit
376 gtk_print_settings_get_length (GtkPrintSettings *settings,
380 gdouble length = gtk_print_settings_get_double (settings, key);
381 return _gtk_print_convert_from_mm (length, unit);
385 * gtk_print_settings_set_length:
386 * @settings: a #GtkPrintSettings
389 * @unit: the unit of @length
391 * Associates a length in units of @unit with @key.
396 gtk_print_settings_set_length (GtkPrintSettings *settings,
401 gtk_print_settings_set_double (settings, key,
402 _gtk_print_convert_to_mm (value, unit));
406 * gtk_print_settings_get_int_with_default:
407 * @settings: a #GtkPrintSettings
409 * @def: the default value
411 * Returns the value of @key, interpreted as
412 * an integer, or the default value.
414 * Return value: the integer value of @key
419 gtk_print_settings_get_int_with_default (GtkPrintSettings *settings,
425 val = gtk_print_settings_get (settings, key);
433 * gtk_print_settings_get_int:
434 * @settings: a #GtkPrintSettings
437 * Returns the integer value of @key, or 0.
439 * Return value: the integer value of @key
444 gtk_print_settings_get_int (GtkPrintSettings *settings,
447 return gtk_print_settings_get_int_with_default (settings, key, 0);
451 * gtk_print_settings_set_int:
452 * @settings: a #GtkPrintSettings
456 * Sets @key to an integer value.
461 gtk_print_settings_set_int (GtkPrintSettings *settings,
466 g_sprintf (buf, "%d", value);
467 gtk_print_settings_set (settings, key, buf);
471 * gtk_print_settings_foreach:
472 * @settings: a #GtkPrintSettings
473 * @func: the function to call
474 * @user_data: user data for @func
476 * Calls @func for each key-value pair of @settings.
481 gtk_print_settings_foreach (GtkPrintSettings *settings,
482 GtkPrintSettingsFunc func,
485 g_hash_table_foreach (settings->hash, (GHFunc)func, user_data);
489 * gtk_print_settings_get_printer:
490 * @settings: a #GtkPrintSettings
492 * Convenience function to obtain the value of
493 * %GTK_PRINT_SETTINGS_PRINTER.
495 * Return value: the printer name
499 G_CONST_RETURN gchar *
500 gtk_print_settings_get_printer (GtkPrintSettings *settings)
502 return gtk_print_settings_get (settings, GTK_PRINT_SETTINGS_PRINTER);
507 * gtk_print_settings_set_printer:
508 * @settings: a #GtkPrintSettings
509 * @printer: the printer name
511 * Convenience function to set %GTK_PRINT_SETTINGS_PRINTER
517 gtk_print_settings_set_printer (GtkPrintSettings *settings,
518 const gchar *printer)
520 gtk_print_settings_set (settings, GTK_PRINT_SETTINGS_PRINTER, printer);
524 * gtk_print_settings_get_orientation:
525 * @settings: a #GtkPrintSettings
527 * Get the value of %GTK_PRINT_SETTINGS_ORIENTATION,
528 * converted to a #GtkPageOrientation.
530 * Return value: the orientation
535 gtk_print_settings_get_orientation (GtkPrintSettings *settings)
539 val = gtk_print_settings_get (settings, GTK_PRINT_SETTINGS_ORIENTATION);
541 if (val == NULL || strcmp (val, "portrait") == 0)
542 return GTK_PAGE_ORIENTATION_PORTRAIT;
544 if (strcmp (val, "landscape") == 0)
545 return GTK_PAGE_ORIENTATION_LANDSCAPE;
547 if (strcmp (val, "reverse_portrait") == 0)
548 return GTK_PAGE_ORIENTATION_REVERSE_PORTRAIT;
550 if (strcmp (val, "reverse_landscape") == 0)
551 return GTK_PAGE_ORIENTATION_REVERSE_LANDSCAPE;
553 return GTK_PAGE_ORIENTATION_PORTRAIT;
557 * gtk_print_settings_set_orientation:
558 * @settings: a #GtkPrintSettings
559 * @orientation: a page orientation
561 * Sets the value of %GTK_PRINT_SETTINGS_ORIENTATION.
566 gtk_print_settings_set_orientation (GtkPrintSettings *settings,
567 GtkPageOrientation orientation)
573 case GTK_PAGE_ORIENTATION_LANDSCAPE:
577 case GTK_PAGE_ORIENTATION_PORTRAIT:
580 case GTK_PAGE_ORIENTATION_REVERSE_LANDSCAPE:
581 val = "reverse_landscape";
583 case GTK_PAGE_ORIENTATION_REVERSE_PORTRAIT:
584 val = "reverse_portrait";
587 gtk_print_settings_set (settings, GTK_PRINT_SETTINGS_ORIENTATION, val);
591 * gtk_print_settings_get_paper_size:
592 * @settings: a #GtkPrintSettings
594 * Gets the value of %GTK_PRINT_SETTINGS_PAPER_FORMAT,
595 * converted to a #GtkPaperSize.
597 * Return value: the paper size
602 gtk_print_settings_get_paper_size (GtkPrintSettings *settings)
608 val = gtk_print_settings_get (settings, GTK_PRINT_SETTINGS_PAPER_FORMAT);
612 if (g_str_has_prefix (val, "custom-"))
614 name = val + strlen ("custom-");
615 w = gtk_print_settings_get_paper_width (settings, GTK_UNIT_MM);
616 h = gtk_print_settings_get_paper_height (settings, GTK_UNIT_MM);
617 return gtk_paper_size_new_custom (name, name, w, h, GTK_UNIT_MM);
620 return gtk_paper_size_new (val);
624 * gtk_print_settings_set_paper_size:
625 * @settings: a #GtkPrintSettings
626 * @paper_size: a paper size
628 * Sets the value of %GTK_PRINT_SETTINGS_PAPER_FORMAT,
629 * %GTK_PRINT_SETTINGS_PAPER_WIDTH and
630 * %GTK_PRINT_SETTINGS_PAPER_HEIGHT.
635 gtk_print_settings_set_paper_size (GtkPrintSettings *settings,
636 GtkPaperSize *paper_size)
640 if (paper_size == NULL)
642 gtk_print_settings_set (settings, GTK_PRINT_SETTINGS_PAPER_FORMAT, NULL);
643 gtk_print_settings_set (settings, GTK_PRINT_SETTINGS_PAPER_WIDTH, NULL);
644 gtk_print_settings_set (settings, GTK_PRINT_SETTINGS_PAPER_HEIGHT, NULL);
646 else if (gtk_paper_size_is_custom (paper_size))
648 custom_name = g_strdup_printf ("custom-%s",
649 gtk_paper_size_get_name (paper_size));
650 gtk_print_settings_set (settings, GTK_PRINT_SETTINGS_PAPER_FORMAT, custom_name);
651 g_free (custom_name);
652 gtk_print_settings_set_paper_width (settings,
653 gtk_paper_size_get_width (paper_size,
656 gtk_print_settings_set_paper_height (settings,
657 gtk_paper_size_get_height (paper_size,
662 gtk_print_settings_set (settings, GTK_PRINT_SETTINGS_PAPER_FORMAT,
663 gtk_paper_size_get_name (paper_size));
667 * gtk_print_settings_get_paper_width:
668 * @settings: a #GtkPrintSettings
669 * @unit: the unit for the return value
671 * Gets the value of %GTK_PRINT_SETTINGS_PAPER_WIDTH,
672 * converted to @unit.
674 * Return value: the paper width, in units of @unit
679 gtk_print_settings_get_paper_width (GtkPrintSettings *settings,
682 return gtk_print_settings_get_length (settings, GTK_PRINT_SETTINGS_PAPER_WIDTH, unit);
686 * gtk_print_settings_set_paper_width:
687 * @settings: a #GtkPrintSettings
688 * @width: the paper width
689 * @unit: the units of @width
691 * Sets the value of %GTK_PRINT_SETTINGS_PAPER_WIDTH.
696 gtk_print_settings_set_paper_width (GtkPrintSettings *settings,
700 gtk_print_settings_set_length (settings, GTK_PRINT_SETTINGS_PAPER_WIDTH, width, unit);
704 * gtk_print_settings_get_paper_height:
705 * @settings: a #GtkPrintSettings
706 * @unit: the unit for the return value
708 * Gets the value of %GTK_PRINT_SETTINGS_PAPER_HEIGHT,
709 * converted to @unit.
711 * Return value: the paper height, in units of @unit
716 gtk_print_settings_get_paper_height (GtkPrintSettings *settings,
719 return gtk_print_settings_get_length (settings,
720 GTK_PRINT_SETTINGS_PAPER_HEIGHT,
725 * gtk_print_settings_set_paper_height:
726 * @settings: a #GtkPrintSettings
727 * @height: the paper height
728 * @unit: the units of @height
730 * Sets the value of %GTK_PRINT_SETTINGS_PAPER_HEIGHT.
735 gtk_print_settings_set_paper_height (GtkPrintSettings *settings,
739 gtk_print_settings_set_length (settings,
740 GTK_PRINT_SETTINGS_PAPER_HEIGHT,
745 * gtk_print_settings_get_use_color:
746 * @settings: a #GtkPrintSettings
748 * Gets the value of %GTK_PRINT_SETTINGS_USE_COLOR.
750 * Return value: whether to use color
755 gtk_print_settings_get_use_color (GtkPrintSettings *settings)
757 return gtk_print_settings_get_bool_with_default (settings,
758 GTK_PRINT_SETTINGS_USE_COLOR,
763 * gtk_print_settings_set_use_color:
764 * @settings: a #GtkPrintSettings
765 * @use_color: whether to use color
767 * Sets the value of %GTK_PRINT_SETTINGS_USE_COLOR.
772 gtk_print_settings_set_use_color (GtkPrintSettings *settings,
775 gtk_print_settings_set_bool (settings,
776 GTK_PRINT_SETTINGS_USE_COLOR,
781 * gtk_print_settings_get_collate:
782 * @settings: a #GtkPrintSettings
784 * Gets the value of %GTK_PRINT_SETTINGS_COLLATE.
786 * Return value: whether to collate the printed pages
791 gtk_print_settings_get_collate (GtkPrintSettings *settings)
793 return gtk_print_settings_get_bool (settings,
794 GTK_PRINT_SETTINGS_COLLATE);
798 * gtk_print_settings_set_collate:
799 * @settings: a #GtkPrintSettings
800 * @collate: whether to collate the output
802 * Sets the value of %GTK_PRINT_SETTINGS_COLLATE.
807 gtk_print_settings_set_collate (GtkPrintSettings *settings,
810 gtk_print_settings_set_bool (settings,
811 GTK_PRINT_SETTINGS_COLLATE,
816 * gtk_print_settings_get_reverse:
817 * @settings: a #GtkPrintSettings
819 * Gets the value of %GTK_PRINT_SETTINGS_REVERSE.
821 * Return value: whether to reverse the order of the printed pages
826 gtk_print_settings_get_reverse (GtkPrintSettings *settings)
828 return gtk_print_settings_get_bool (settings,
829 GTK_PRINT_SETTINGS_REVERSE);
833 * gtk_print_settings_set_reverse:
834 * @settings: a #GtkPrintSettings
835 * @reverse: whether to reverse the output
837 * Sets the value of %GTK_PRINT_SETTINGS_REVERSE.
842 gtk_print_settings_set_reverse (GtkPrintSettings *settings,
845 gtk_print_settings_set_bool (settings,
846 GTK_PRINT_SETTINGS_REVERSE,
851 * gtk_print_settings_get_duplex:
852 * @settings: a #GtkPrintSettings
854 * Gets the value of %GTK_PRINT_SETTINGS_DUPLEX.
856 * Return value: whether to print the output in duplex.
861 gtk_print_settings_get_duplex (GtkPrintSettings *settings)
865 val = gtk_print_settings_get (settings, GTK_PRINT_SETTINGS_DUPLEX);
867 if (val == NULL || (strcmp (val, "simplex") == 0))
868 return GTK_PRINT_DUPLEX_SIMPLEX;
870 if (strcmp (val, "horizontal") == 0)
871 return GTK_PRINT_DUPLEX_HORIZONTAL;
873 if (strcmp (val, "vertical") == 0)
874 return GTK_PRINT_DUPLEX_HORIZONTAL;
876 return GTK_PRINT_DUPLEX_SIMPLEX;
880 * gtk_print_settings_set_duplex:
881 * @settings: a #GtkPrintSettings
882 * @duplex: a #GtkPrintDuplex value
884 * Sets the value of %GTK_PRINT_SETTINGS_DUPLEX.
889 gtk_print_settings_set_duplex (GtkPrintSettings *settings,
890 GtkPrintDuplex duplex)
897 case GTK_PRINT_DUPLEX_SIMPLEX:
900 case GTK_PRINT_DUPLEX_HORIZONTAL:
903 case GTK_PRINT_DUPLEX_VERTICAL:
908 gtk_print_settings_set (settings, GTK_PRINT_SETTINGS_DUPLEX, str);
912 * gtk_print_settings_get_quality:
913 * @settings: a #GtkPrintSettings
915 * Gets the value of %GTK_PRINT_SETTINGS_QUALITY.
917 * Return value: the print quality
922 gtk_print_settings_get_quality (GtkPrintSettings *settings)
926 val = gtk_print_settings_get (settings, GTK_PRINT_SETTINGS_QUALITY);
928 if (val == NULL || (strcmp (val, "normal") == 0))
929 return GTK_PRINT_QUALITY_NORMAL;
931 if (strcmp (val, "high") == 0)
932 return GTK_PRINT_QUALITY_HIGH;
934 if (strcmp (val, "low") == 0)
935 return GTK_PRINT_QUALITY_LOW;
937 if (strcmp (val, "draft") == 0)
938 return GTK_PRINT_QUALITY_DRAFT;
940 return GTK_PRINT_QUALITY_NORMAL;
944 * gtk_print_settings_set_quality:
945 * @settings: a #GtkPrintSettings
946 * @quality: a #GtkPrintQuality value
948 * Sets the value of %GTK_PRINT_SETTINGS_QUALITY.
953 gtk_print_settings_set_quality (GtkPrintSettings *settings,
954 GtkPrintQuality quality)
961 case GTK_PRINT_QUALITY_NORMAL:
964 case GTK_PRINT_QUALITY_HIGH:
967 case GTK_PRINT_QUALITY_LOW:
970 case GTK_PRINT_QUALITY_DRAFT:
975 gtk_print_settings_set (settings, GTK_PRINT_SETTINGS_QUALITY, str);
979 * gtk_print_settings_get_page_set:
980 * @settings: a #GtkPrintSettings
982 * Gets the value of %GTK_PRINT_SETTINGS_PAGE_SET.
984 * Return value: the set of pages to print
989 gtk_print_settings_get_page_set (GtkPrintSettings *settings)
993 val = gtk_print_settings_get (settings, GTK_PRINT_SETTINGS_PAGE_SET);
995 if (val == NULL || (strcmp (val, "all") == 0))
996 return GTK_PAGE_SET_ALL;
998 if (strcmp (val, "even") == 0)
999 return GTK_PAGE_SET_EVEN;
1001 if (strcmp (val, "odd") == 0)
1002 return GTK_PAGE_SET_ODD;
1004 return GTK_PAGE_SET_ALL;
1008 * gtk_print_settings_set_page_set:
1009 * @settings: a #GtkPrintSettings
1010 * @page_set: a #GtkPageSet value
1012 * Sets the value of %GTK_PRINT_SETTINGS_PAGE_SET.
1017 gtk_print_settings_set_page_set (GtkPrintSettings *settings,
1018 GtkPageSet page_set)
1025 case GTK_PAGE_SET_ALL:
1028 case GTK_PAGE_SET_EVEN:
1031 case GTK_PAGE_SET_ODD:
1036 gtk_print_settings_set (settings, GTK_PRINT_SETTINGS_PAGE_SET, str);
1040 * gtk_print_settings_get_num_copies:
1041 * @settings: a #GtkPrintSettings
1043 * Gets the value of %GTK_PRINT_SETTINGS_NUM_COPIES.
1045 * Return value: the number of copies to print
1050 gtk_print_settings_get_num_copies (GtkPrintSettings *settings)
1052 return gtk_print_settings_get_int_with_default (settings, GTK_PRINT_SETTINGS_NUM_COPIES, 1);
1056 * gtk_print_settings_set_num_copies:
1057 * @settings: a #GtkPrintSettings
1058 * @num_copies: the number of copies
1060 * Sets the value of %GTK_PRINT_SETTINGS_NUM_COPIES.
1065 gtk_print_settings_set_num_copies (GtkPrintSettings *settings,
1068 gtk_print_settings_set_int (settings, GTK_PRINT_SETTINGS_NUM_COPIES,
1073 * gtk_print_settings_get_number_up:
1074 * @settings: a #GtkPrintSettings
1076 * Gets the value of %GTK_PRINT_SETTINGS_NUMBER_UP.
1078 * Return value: the number of pages per sheet
1083 gtk_print_settings_get_number_up (GtkPrintSettings *settings)
1085 return gtk_print_settings_get_int (settings, GTK_PRINT_SETTINGS_NUMBER_UP);
1089 * gtk_print_settings_set_number_up:
1090 * @settings: a #GtkPrintSettings
1091 * @number_up: the number of pages per sheet
1093 * Sets the value of %GTK_PRINT_SETTINGS_NUMBER_UP.
1098 gtk_print_settings_set_number_up (GtkPrintSettings *settings,
1101 gtk_print_settings_set_int (settings, GTK_PRINT_SETTINGS_NUMBER_UP,
1106 * gtk_print_settings_get_resolution:
1107 * @settings: a #GtkPrintSettings
1109 * Gets the value of %GTK_PRINT_SETTINGS_RESOLUTION.
1111 * Return value: the resolution in dpi
1116 gtk_print_settings_get_resolution (GtkPrintSettings *settings)
1118 return gtk_print_settings_get_int (settings, GTK_PRINT_SETTINGS_RESOLUTION);
1122 * gtk_print_settings_set_resolution:
1123 * @settings: a #GtkPrintSettings
1124 * @resolution: the resolution in dpi
1126 * Sets the value of %GTK_PRINT_SETTINGS_RESOLUTION.
1131 gtk_print_settings_set_resolution (GtkPrintSettings *settings,
1134 gtk_print_settings_set_int (settings, GTK_PRINT_SETTINGS_RESOLUTION,
1139 * gtk_print_settings_get_scale:
1140 * @settings: a #GtkPrintSettings
1142 * Gets the value of %GTK_PRINT_SETTINGS_SCALE.
1144 * Return value: the scale in percent
1149 gtk_print_settings_get_scale (GtkPrintSettings *settings)
1151 return gtk_print_settings_get_double_with_default (settings,
1152 GTK_PRINT_SETTINGS_SCALE,
1157 * gtk_print_settings_set_scale:
1158 * @settings: a #GtkPrintSettings
1159 * @scale: the scale in percent
1161 * Sets the value of %GTK_PRINT_SETTINGS_SCALE.
1166 gtk_print_settings_set_scale (GtkPrintSettings *settings,
1169 gtk_print_settings_set_double (settings, GTK_PRINT_SETTINGS_SCALE,
1174 * gtk_print_settings_get_print_to_file:
1175 * @settings: a #GtkPrintSettings
1177 * Gets the value of %GTK_PRINT_SETTINGS_PRINT_TO_FILE.
1179 * Return value: whether to print to a file
1184 gtk_print_settings_get_print_to_file (GtkPrintSettings *settings)
1186 return gtk_print_settings_get_bool (settings,
1187 GTK_PRINT_SETTINGS_PRINT_TO_FILE);
1191 * gtk_print_settings_set_print_to_file:
1192 * @settings: a #GtkPrintSettings
1193 * @print_to_file: whether to print to a file
1195 * Sets the value of %GTK_PRINT_SETTINGS_PRINT_TO_FILE.
1200 gtk_print_settings_set_print_to_file (GtkPrintSettings *settings,
1201 gboolean print_to_file)
1203 gtk_print_settings_set_bool (settings,
1204 GTK_PRINT_SETTINGS_PRINT_TO_FILE,
1209 * gtk_print_settings_get_print_pages:
1210 * @settings: a #GtkPrintSettings
1212 * Gets the value of %GTK_PRINT_SETTINGS_PRINT_PAGES.
1214 * Return value: which pages to print
1219 gtk_print_settings_get_print_pages (GtkPrintSettings *settings)
1223 val = gtk_print_settings_get (settings, GTK_PRINT_SETTINGS_PRINT_PAGES);
1225 if (val == NULL || (strcmp (val, "all") == 0))
1226 return GTK_PRINT_PAGES_ALL;
1228 if (strcmp (val, "current") == 0)
1229 return GTK_PRINT_PAGES_CURRENT;
1231 if (strcmp (val, "ranges") == 0)
1232 return GTK_PRINT_PAGES_RANGES;
1234 return GTK_PRINT_PAGES_ALL;
1238 * gtk_print_settings_set_print_pages:
1239 * @settings: a #GtkPrintSettings
1240 * @pages: a #GtkPrintPages value
1242 * Sets the value of %GTK_PRINT_SETTINGS_PRINT_PAGES.
1247 gtk_print_settings_set_print_pages (GtkPrintSettings *settings,
1248 GtkPrintPages pages)
1255 case GTK_PRINT_PAGES_ALL:
1258 case GTK_PRINT_PAGES_CURRENT:
1261 case GTK_PRINT_PAGES_RANGES:
1266 gtk_print_settings_set (settings, GTK_PRINT_SETTINGS_PRINT_PAGES, str);
1270 * gtk_print_settings_get_page_ranges:
1271 * @settings: a #GtkPrintSettings
1272 * @num_ranges: return location for the length of the returned array
1274 * Gets the value of %GTK_PRINT_SETTINGS_PAGE_RANGES.
1276 * Return value: an array of #GtkPageRange<!-- -->s
1281 gtk_print_settings_get_page_ranges (GtkPrintSettings *settings,
1286 GtkPageRange *ranges;
1289 val = gtk_print_settings_get (settings, GTK_PRINT_SETTINGS_PAGE_RANGES);
1297 range_strs = g_strsplit (val, ",", 0);
1299 for (i = 0; range_strs[i] != NULL; i++)
1304 ranges = g_new0 (GtkPageRange, n);
1306 for (i = 0; i < n; i++)
1311 start = (gint)strtol (range_strs[i], &str, 10);
1317 end = (gint)strtol (str, NULL, 10);
1322 ranges[i].start = start;
1323 ranges[i].end = end;
1331 * gtk_print_settings_set_page_ranges:
1332 * @settings: a #GtkPrintSettings
1333 * @page_ranges: an array of #GtkPageRange<!-- -->s
1334 * @num_ranges: the length of @page_ranges
1336 * Sets the value of %GTK_PRINT_SETTINGS_PAGE_RANGES.
1341 gtk_print_settings_set_page_ranges (GtkPrintSettings *settings,
1342 GtkPageRange *page_ranges,
1348 s = g_string_new ("");
1350 for (i = 0; i < num_ranges; i++)
1352 if (page_ranges[i].start == page_ranges[i].end)
1353 g_string_append_printf (s, "%d", page_ranges[i].start);
1355 g_string_append_printf (s, "%d-%d",
1356 page_ranges[i].start,
1357 page_ranges[i].end);
1358 if (i < num_ranges - 1)
1359 g_string_append (s, ",");
1363 gtk_print_settings_set (settings, GTK_PRINT_SETTINGS_PAGE_RANGES,
1366 g_string_free (s, TRUE);
1370 * gtk_print_settings_get_default_source:
1371 * @settings: a #GtkPrintSettings
1373 * Gets the value of %GTK_PRINT_SETTINGS_DEFAULT_SOURCE.
1375 * Return value: the default source
1379 G_CONST_RETURN gchar *
1380 gtk_print_settings_get_default_source (GtkPrintSettings *settings)
1382 return gtk_print_settings_get (settings, GTK_PRINT_SETTINGS_DEFAULT_SOURCE);
1386 * gtk_print_settings_set_default_source:
1387 * @settings: a #GtkPrintSettings
1388 * @default_source: the default source
1390 * Sets the value of %GTK_PRINT_SETTINGS_DEFAULT_SOURCE.
1395 gtk_print_settings_set_default_source (GtkPrintSettings *settings,
1396 const gchar *default_source)
1398 gtk_print_settings_set (settings, GTK_PRINT_SETTINGS_DEFAULT_SOURCE, default_source);
1402 * gtk_print_settings_get_media_type:
1403 * @settings: a #GtkPrintSettings
1405 * Gets the value of %GTK_PRINT_SETTINGS_MEDIA_TYPE.
1407 * The set of media types is defined in PWG 5101.1-2002 PWG.
1408 * <!-- FIXME link here -->
1410 * Return value: the media type
1414 G_CONST_RETURN gchar *
1415 gtk_print_settings_get_media_type (GtkPrintSettings *settings)
1417 return gtk_print_settings_get (settings, GTK_PRINT_SETTINGS_MEDIA_TYPE);
1421 * gtk_print_settings_set_media_type:
1422 * @settings: a #GtkPrintSettings
1423 * @media_type: the media type
1425 * Sets the value of %GTK_PRINT_SETTINGS_MEDIA_TYPE.
1427 * The set of media types is defined in PWG 5101.1-2002 PWG.
1428 * <!-- FIXME link here -->
1433 gtk_print_settings_set_media_type (GtkPrintSettings *settings,
1434 const gchar *media_type)
1436 gtk_print_settings_set (settings, GTK_PRINT_SETTINGS_MEDIA_TYPE, media_type);
1440 * gtk_print_settings_get_dither:
1441 * @settings: a #GtkPrintSettings
1443 * Gets the value of %GTK_PRINT_SETTINGS_DITHER.
1445 * Return value: the dithering that is used
1449 G_CONST_RETURN gchar *
1450 gtk_print_settings_get_dither (GtkPrintSettings *settings)
1452 return gtk_print_settings_get (settings, GTK_PRINT_SETTINGS_DITHER);
1456 * gtk_print_settings_set_dither:
1457 * @settings: a #GtkPrintSettings
1458 * @dither: the dithering that is used
1460 * Sets the value of %GTK_PRINT_SETTINGS_DITHER.
1465 gtk_print_settings_set_dither (GtkPrintSettings *settings,
1466 const gchar *dither)
1468 gtk_print_settings_set (settings, GTK_PRINT_SETTINGS_DITHER, dither);
1472 * gtk_print_settings_get_finishings:
1473 * @settings: a #GtkPrintSettings
1475 * Gets the value of %GTK_PRINT_SETTINGS_FINISHINGS.
1477 * Return value: the finishings
1482 gtk_print_settings_get_finishings (GtkPrintSettings *settings)
1484 return gtk_print_settings_get (settings, GTK_PRINT_SETTINGS_FINISHINGS);
1488 * gtk_print_settings_set_finishings:
1489 * @settings: a #GtkPrintSettings
1490 * @finishings: the finishings
1492 * Sets the value of %GTK_PRINT_SETTINGS_FINISHINGS.
1497 gtk_print_settings_set_finishings (GtkPrintSettings *settings,
1498 const gchar *finishings)
1500 gtk_print_settings_set (settings, GTK_PRINT_SETTINGS_FINISHINGS, finishings);
1504 * gtk_print_settings_get_output_bin:
1505 * @settings: a #GtkPrintSettings
1507 * Gets the value of %GTK_PRINT_SETTINGS_OUTPUT_BIN.
1509 * Return value: the output bin
1513 G_CONST_RETURN gchar *
1514 gtk_print_settings_get_output_bin (GtkPrintSettings *settings)
1516 return gtk_print_settings_get (settings, GTK_PRINT_SETTINGS_OUTPUT_BIN);
1520 * gtk_print_settings_set_output_bin:
1521 * @settings: a #GtkPrintSettings
1522 * @output_bin: the output bin
1524 * Sets the value of %GTK_PRINT_SETTINGS_OUTPUT_BIN.
1529 gtk_print_settings_set_output_bin (GtkPrintSettings *settings,
1530 const gchar *output_bin)
1532 gtk_print_settings_set (settings, GTK_PRINT_SETTINGS_OUTPUT_BIN, output_bin);
1536 #define __GTK_PRINT_SETTINGS_C__
1537 #include "gtkaliasdef.c"