1------------------------------------------------------------------------------
2--                                                                          --
3--      Copyright (C) 1998-2000 E. Briot, J. Brobecker and A. Charlet       --
4--                     Copyright (C) 2000-2015, AdaCore                     --
5--                                                                          --
6-- This library is free software;  you can redistribute it and/or modify it --
7-- under terms of the  GNU General Public License  as published by the Free --
8-- Software  Foundation;  either version 3,  or (at your  option) any later --
9-- version. This library is distributed in the hope that it will be useful, --
10-- but WITHOUT ANY WARRANTY;  without even the implied warranty of MERCHAN- --
11-- TABILITY or FITNESS FOR A PARTICULAR PURPOSE.                            --
12--                                                                          --
13-- As a special exception under Section 7 of GPL version 3, you are granted --
14-- additional permissions described in the GCC Runtime Library Exception,   --
15-- version 3.1, as published by the Free Software Foundation.               --
16--                                                                          --
17-- You should have received a copy of the GNU General Public License and    --
18-- a copy of the GCC Runtime Library Exception along with this program;     --
19-- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
20-- <http://www.gnu.org/licenses/>.                                          --
21--                                                                          --
22------------------------------------------------------------------------------
23
24pragma Style_Checks (Off);
25pragma Warnings (Off, "*is already use-visible*");
26with Ada.Unchecked_Conversion;
27with Glib.Type_Conversion_Hooks; use Glib.Type_Conversion_Hooks;
28with Gtkada.Bindings;            use Gtkada.Bindings;
29pragma Warnings(Off);  --  might be unused
30with Interfaces.C.Strings;       use Interfaces.C.Strings;
31pragma Warnings(On);
32
33package body Gtk.Print_Settings is
34
35   procedure C_Gtk_Print_Settings_Foreach
36      (Self      : System.Address;
37       Func      : System.Address;
38       User_Data : System.Address);
39   pragma Import (C, C_Gtk_Print_Settings_Foreach, "gtk_print_settings_foreach");
40   --  Calls Func for each key-value pair of Settings.
41   --  Since: gtk+ 2.10
42   --  "func": the function to call
43   --  "user_data": user data for Func
44
45   function To_Gtk_Print_Settings_Func is new Ada.Unchecked_Conversion
46     (System.Address, Gtk_Print_Settings_Func);
47
48   function To_Address is new Ada.Unchecked_Conversion
49     (Gtk_Print_Settings_Func, System.Address);
50
51   procedure Internal_Gtk_Print_Settings_Func
52      (Key       : Interfaces.C.Strings.chars_ptr;
53       Value     : Interfaces.C.Strings.chars_ptr;
54       User_Data : System.Address);
55   pragma Convention (C, Internal_Gtk_Print_Settings_Func);
56
57   --------------------------------------
58   -- Internal_Gtk_Print_Settings_Func --
59   --------------------------------------
60
61   procedure Internal_Gtk_Print_Settings_Func
62      (Key       : Interfaces.C.Strings.chars_ptr;
63       Value     : Interfaces.C.Strings.chars_ptr;
64       User_Data : System.Address)
65   is
66      Func : constant Gtk_Print_Settings_Func := To_Gtk_Print_Settings_Func (User_Data);
67   begin
68      Func (Gtkada.Bindings.Value_Allowing_Null (Key), Gtkada.Bindings.Value_Allowing_Null (Value));
69   end Internal_Gtk_Print_Settings_Func;
70
71   package Type_Conversion_Gtk_Print_Settings is new Glib.Type_Conversion_Hooks.Hook_Registrator
72     (Get_Type'Access, Gtk_Print_Settings_Record);
73   pragma Unreferenced (Type_Conversion_Gtk_Print_Settings);
74
75   -------------
76   -- Gtk_New --
77   -------------
78
79   procedure Gtk_New (Self : out Gtk_Print_Settings) is
80   begin
81      Self := new Gtk_Print_Settings_Record;
82      Gtk.Print_Settings.Initialize (Self);
83   end Gtk_New;
84
85   -----------------------
86   -- Gtk_New_From_File --
87   -----------------------
88
89   procedure Gtk_New_From_File
90      (Self      : out Gtk_Print_Settings;
91       File_Name : UTF8_String)
92   is
93   begin
94      Self := new Gtk_Print_Settings_Record;
95      Gtk.Print_Settings.Initialize_From_File (Self, File_Name);
96   end Gtk_New_From_File;
97
98   ---------------------------
99   -- Gtk_New_From_Key_File --
100   ---------------------------
101
102   procedure Gtk_New_From_Key_File
103      (Self       : out Gtk_Print_Settings;
104       Key_File   : Glib.Key_File.G_Key_File;
105       Group_Name : UTF8_String := "")
106   is
107   begin
108      Self := new Gtk_Print_Settings_Record;
109      Gtk.Print_Settings.Initialize_From_Key_File (Self, Key_File, Group_Name);
110   end Gtk_New_From_Key_File;
111
112   ----------------------------
113   -- Gtk_Print_Settings_New --
114   ----------------------------
115
116   function Gtk_Print_Settings_New return Gtk_Print_Settings is
117      Self : constant Gtk_Print_Settings := new Gtk_Print_Settings_Record;
118   begin
119      Gtk.Print_Settings.Initialize (Self);
120      return Self;
121   end Gtk_Print_Settings_New;
122
123   --------------------------------------
124   -- Gtk_Print_Settings_New_From_File --
125   --------------------------------------
126
127   function Gtk_Print_Settings_New_From_File
128      (File_Name : UTF8_String) return Gtk_Print_Settings
129   is
130      Self : constant Gtk_Print_Settings := new Gtk_Print_Settings_Record;
131   begin
132      Gtk.Print_Settings.Initialize_From_File (Self, File_Name);
133      return Self;
134   end Gtk_Print_Settings_New_From_File;
135
136   ------------------------------------------
137   -- Gtk_Print_Settings_New_From_Key_File --
138   ------------------------------------------
139
140   function Gtk_Print_Settings_New_From_Key_File
141      (Key_File   : Glib.Key_File.G_Key_File;
142       Group_Name : UTF8_String := "") return Gtk_Print_Settings
143   is
144      Self : constant Gtk_Print_Settings := new Gtk_Print_Settings_Record;
145   begin
146      Gtk.Print_Settings.Initialize_From_Key_File (Self, Key_File, Group_Name);
147      return Self;
148   end Gtk_Print_Settings_New_From_Key_File;
149
150   ----------------
151   -- Initialize --
152   ----------------
153
154   procedure Initialize
155      (Self : not null access Gtk_Print_Settings_Record'Class)
156   is
157      function Internal return System.Address;
158      pragma Import (C, Internal, "gtk_print_settings_new");
159   begin
160      if not Self.Is_Created then
161         Set_Object (Self, Internal);
162      end if;
163   end Initialize;
164
165   --------------------------
166   -- Initialize_From_File --
167   --------------------------
168
169   procedure Initialize_From_File
170      (Self      : not null access Gtk_Print_Settings_Record'Class;
171       File_Name : UTF8_String)
172   is
173      function Internal
174         (File_Name : Interfaces.C.Strings.chars_ptr) return System.Address;
175      pragma Import (C, Internal, "gtk_print_settings_new_from_file");
176      Tmp_File_Name : Interfaces.C.Strings.chars_ptr := New_String (File_Name);
177      Tmp_Return    : System.Address;
178   begin
179      if not Self.Is_Created then
180         Tmp_Return := Internal (Tmp_File_Name);
181         Free (Tmp_File_Name);
182         Set_Object (Self, Tmp_Return);
183      end if;
184   end Initialize_From_File;
185
186   ------------------------------
187   -- Initialize_From_Key_File --
188   ------------------------------
189
190   procedure Initialize_From_Key_File
191      (Self       : not null access Gtk_Print_Settings_Record'Class;
192       Key_File   : Glib.Key_File.G_Key_File;
193       Group_Name : UTF8_String := "")
194   is
195      function Internal
196         (Key_File   : Glib.Key_File.G_Key_File;
197          Group_Name : Interfaces.C.Strings.chars_ptr) return System.Address;
198      pragma Import (C, Internal, "gtk_print_settings_new_from_key_file");
199      Tmp_Group_Name : Interfaces.C.Strings.chars_ptr;
200      Tmp_Return     : System.Address;
201   begin
202      if not Self.Is_Created then
203         if Group_Name = "" then
204            Tmp_Group_Name := Interfaces.C.Strings.Null_Ptr;
205         else
206            Tmp_Group_Name := New_String (Group_Name);
207         end if;
208         Tmp_Return := Internal (Key_File, Tmp_Group_Name);
209         Free (Tmp_Group_Name);
210         Set_Object (Self, Tmp_Return);
211      end if;
212   end Initialize_From_Key_File;
213
214   ----------
215   -- Copy --
216   ----------
217
218   function Copy
219      (Self : not null access Gtk_Print_Settings_Record)
220       return Gtk_Print_Settings
221   is
222      function Internal (Self : System.Address) return System.Address;
223      pragma Import (C, Internal, "gtk_print_settings_copy");
224      Stub_Gtk_Print_Settings : Gtk_Print_Settings_Record;
225   begin
226      return Gtk.Print_Settings.Gtk_Print_Settings (Get_User_Data (Internal (Get_Object (Self)), Stub_Gtk_Print_Settings));
227   end Copy;
228
229   -------------
230   -- Foreach --
231   -------------
232
233   procedure Foreach
234      (Self : not null access Gtk_Print_Settings_Record;
235       Func : Gtk_Print_Settings_Func)
236   is
237   begin
238      if Func = null then
239         C_Gtk_Print_Settings_Foreach (Get_Object (Self), System.Null_Address, System.Null_Address);
240      else
241         C_Gtk_Print_Settings_Foreach (Get_Object (Self), Internal_Gtk_Print_Settings_Func'Address, To_Address (Func));
242      end if;
243   end Foreach;
244
245   package body Foreach_User_Data is
246
247      package Users is new Glib.Object.User_Data_Closure
248        (User_Data_Type, Destroy);
249
250      function To_Gtk_Print_Settings_Func is new Ada.Unchecked_Conversion
251        (System.Address, Gtk_Print_Settings_Func);
252
253      function To_Address is new Ada.Unchecked_Conversion
254        (Gtk_Print_Settings_Func, System.Address);
255
256      procedure Internal_Cb
257         (Key       : Interfaces.C.Strings.chars_ptr;
258          Value     : Interfaces.C.Strings.chars_ptr;
259          User_Data : System.Address);
260      pragma Convention (C, Internal_Cb);
261
262      -------------
263      -- Foreach --
264      -------------
265
266      procedure Foreach
267         (Self      : not null access Gtk.Print_Settings.Gtk_Print_Settings_Record'Class;
268          Func      : Gtk_Print_Settings_Func;
269          User_Data : User_Data_Type)
270      is
271      begin
272         if Func = null then
273            C_Gtk_Print_Settings_Foreach (Get_Object (Self), System.Null_Address, System.Null_Address);
274         else
275            C_Gtk_Print_Settings_Foreach (Get_Object (Self), Internal_Cb'Address, Users.Build (To_Address (Func), User_Data));
276         end if;
277      end Foreach;
278
279      -----------------
280      -- Internal_Cb --
281      -----------------
282
283      procedure Internal_Cb
284         (Key       : Interfaces.C.Strings.chars_ptr;
285          Value     : Interfaces.C.Strings.chars_ptr;
286          User_Data : System.Address)
287      is
288         D : constant Users.Internal_Data_Access := Users.Convert (User_Data);
289      begin
290         To_Gtk_Print_Settings_Func (D.Func) (Gtkada.Bindings.Value_Allowing_Null (Key), Gtkada.Bindings.Value_Allowing_Null (Value), D.Data.all);
291      end Internal_Cb;
292
293   end Foreach_User_Data;
294
295   ---------
296   -- Get --
297   ---------
298
299   function Get
300      (Self : not null access Gtk_Print_Settings_Record;
301       Key  : UTF8_String) return UTF8_String
302   is
303      function Internal
304         (Self : System.Address;
305          Key  : Interfaces.C.Strings.chars_ptr)
306          return Interfaces.C.Strings.chars_ptr;
307      pragma Import (C, Internal, "gtk_print_settings_get");
308      Tmp_Key    : Interfaces.C.Strings.chars_ptr := New_String (Key);
309      Tmp_Return : Interfaces.C.Strings.chars_ptr;
310   begin
311      Tmp_Return := Internal (Get_Object (Self), Tmp_Key);
312      Free (Tmp_Key);
313      return Gtkada.Bindings.Value_Allowing_Null (Tmp_Return);
314   end Get;
315
316   --------------
317   -- Get_Bool --
318   --------------
319
320   function Get_Bool
321      (Self : not null access Gtk_Print_Settings_Record;
322       Key  : UTF8_String) return Boolean
323   is
324      function Internal
325         (Self : System.Address;
326          Key  : Interfaces.C.Strings.chars_ptr) return Glib.Gboolean;
327      pragma Import (C, Internal, "gtk_print_settings_get_bool");
328      Tmp_Key    : Interfaces.C.Strings.chars_ptr := New_String (Key);
329      Tmp_Return : Glib.Gboolean;
330   begin
331      Tmp_Return := Internal (Get_Object (Self), Tmp_Key);
332      Free (Tmp_Key);
333      return Tmp_Return /= 0;
334   end Get_Bool;
335
336   -----------------
337   -- Get_Collate --
338   -----------------
339
340   function Get_Collate
341      (Self : not null access Gtk_Print_Settings_Record) return Boolean
342   is
343      function Internal (Self : System.Address) return Glib.Gboolean;
344      pragma Import (C, Internal, "gtk_print_settings_get_collate");
345   begin
346      return Internal (Get_Object (Self)) /= 0;
347   end Get_Collate;
348
349   ------------------------
350   -- Get_Default_Source --
351   ------------------------
352
353   function Get_Default_Source
354      (Self : not null access Gtk_Print_Settings_Record) return UTF8_String
355   is
356      function Internal
357         (Self : System.Address) return Interfaces.C.Strings.chars_ptr;
358      pragma Import (C, Internal, "gtk_print_settings_get_default_source");
359   begin
360      return Gtkada.Bindings.Value_Allowing_Null (Internal (Get_Object (Self)));
361   end Get_Default_Source;
362
363   ----------------
364   -- Get_Dither --
365   ----------------
366
367   function Get_Dither
368      (Self : not null access Gtk_Print_Settings_Record) return UTF8_String
369   is
370      function Internal
371         (Self : System.Address) return Interfaces.C.Strings.chars_ptr;
372      pragma Import (C, Internal, "gtk_print_settings_get_dither");
373   begin
374      return Gtkada.Bindings.Value_Allowing_Null (Internal (Get_Object (Self)));
375   end Get_Dither;
376
377   ----------------
378   -- Get_Double --
379   ----------------
380
381   function Get_Double
382      (Self : not null access Gtk_Print_Settings_Record;
383       Key  : UTF8_String) return Gdouble
384   is
385      function Internal
386         (Self : System.Address;
387          Key  : Interfaces.C.Strings.chars_ptr) return Gdouble;
388      pragma Import (C, Internal, "gtk_print_settings_get_double");
389      Tmp_Key    : Interfaces.C.Strings.chars_ptr := New_String (Key);
390      Tmp_Return : Gdouble;
391   begin
392      Tmp_Return := Internal (Get_Object (Self), Tmp_Key);
393      Free (Tmp_Key);
394      return Tmp_Return;
395   end Get_Double;
396
397   -----------------------------
398   -- Get_Double_With_Default --
399   -----------------------------
400
401   function Get_Double_With_Default
402      (Self : not null access Gtk_Print_Settings_Record;
403       Key  : UTF8_String;
404       Def  : Gdouble) return Gdouble
405   is
406      function Internal
407         (Self : System.Address;
408          Key  : Interfaces.C.Strings.chars_ptr;
409          Def  : Gdouble) return Gdouble;
410      pragma Import (C, Internal, "gtk_print_settings_get_double_with_default");
411      Tmp_Key    : Interfaces.C.Strings.chars_ptr := New_String (Key);
412      Tmp_Return : Gdouble;
413   begin
414      Tmp_Return := Internal (Get_Object (Self), Tmp_Key, Def);
415      Free (Tmp_Key);
416      return Tmp_Return;
417   end Get_Double_With_Default;
418
419   ----------------
420   -- Get_Duplex --
421   ----------------
422
423   function Get_Duplex
424      (Self : not null access Gtk_Print_Settings_Record)
425       return Gtk.Enums.Gtk_Print_Duplex
426   is
427      function Internal
428         (Self : System.Address) return Gtk.Enums.Gtk_Print_Duplex;
429      pragma Import (C, Internal, "gtk_print_settings_get_duplex");
430   begin
431      return Internal (Get_Object (Self));
432   end Get_Duplex;
433
434   --------------------
435   -- Get_Finishings --
436   --------------------
437
438   function Get_Finishings
439      (Self : not null access Gtk_Print_Settings_Record) return UTF8_String
440   is
441      function Internal
442         (Self : System.Address) return Interfaces.C.Strings.chars_ptr;
443      pragma Import (C, Internal, "gtk_print_settings_get_finishings");
444   begin
445      return Gtkada.Bindings.Value_Allowing_Null (Internal (Get_Object (Self)));
446   end Get_Finishings;
447
448   -------------
449   -- Get_Int --
450   -------------
451
452   function Get_Int
453      (Self : not null access Gtk_Print_Settings_Record;
454       Key  : UTF8_String) return Gint
455   is
456      function Internal
457         (Self : System.Address;
458          Key  : Interfaces.C.Strings.chars_ptr) return Gint;
459      pragma Import (C, Internal, "gtk_print_settings_get_int");
460      Tmp_Key    : Interfaces.C.Strings.chars_ptr := New_String (Key);
461      Tmp_Return : Gint;
462   begin
463      Tmp_Return := Internal (Get_Object (Self), Tmp_Key);
464      Free (Tmp_Key);
465      return Tmp_Return;
466   end Get_Int;
467
468   --------------------------
469   -- Get_Int_With_Default --
470   --------------------------
471
472   function Get_Int_With_Default
473      (Self : not null access Gtk_Print_Settings_Record;
474       Key  : UTF8_String;
475       Def  : Gint) return Gint
476   is
477      function Internal
478         (Self : System.Address;
479          Key  : Interfaces.C.Strings.chars_ptr;
480          Def  : Gint) return Gint;
481      pragma Import (C, Internal, "gtk_print_settings_get_int_with_default");
482      Tmp_Key    : Interfaces.C.Strings.chars_ptr := New_String (Key);
483      Tmp_Return : Gint;
484   begin
485      Tmp_Return := Internal (Get_Object (Self), Tmp_Key, Def);
486      Free (Tmp_Key);
487      return Tmp_Return;
488   end Get_Int_With_Default;
489
490   ----------------
491   -- Get_Length --
492   ----------------
493
494   function Get_Length
495      (Self : not null access Gtk_Print_Settings_Record;
496       Key  : UTF8_String;
497       Unit : Gtk.Enums.Gtk_Unit) return Gdouble
498   is
499      function Internal
500         (Self : System.Address;
501          Key  : Interfaces.C.Strings.chars_ptr;
502          Unit : Gtk.Enums.Gtk_Unit) return Gdouble;
503      pragma Import (C, Internal, "gtk_print_settings_get_length");
504      Tmp_Key    : Interfaces.C.Strings.chars_ptr := New_String (Key);
505      Tmp_Return : Gdouble;
506   begin
507      Tmp_Return := Internal (Get_Object (Self), Tmp_Key, Unit);
508      Free (Tmp_Key);
509      return Tmp_Return;
510   end Get_Length;
511
512   --------------------
513   -- Get_Media_Type --
514   --------------------
515
516   function Get_Media_Type
517      (Self : not null access Gtk_Print_Settings_Record) return UTF8_String
518   is
519      function Internal
520         (Self : System.Address) return Interfaces.C.Strings.chars_ptr;
521      pragma Import (C, Internal, "gtk_print_settings_get_media_type");
522   begin
523      return Gtkada.Bindings.Value_Allowing_Null (Internal (Get_Object (Self)));
524   end Get_Media_Type;
525
526   ------------------
527   -- Get_N_Copies --
528   ------------------
529
530   function Get_N_Copies
531      (Self : not null access Gtk_Print_Settings_Record) return Gint
532   is
533      function Internal (Self : System.Address) return Gint;
534      pragma Import (C, Internal, "gtk_print_settings_get_n_copies");
535   begin
536      return Internal (Get_Object (Self));
537   end Get_N_Copies;
538
539   -------------------
540   -- Get_Number_Up --
541   -------------------
542
543   function Get_Number_Up
544      (Self : not null access Gtk_Print_Settings_Record) return Gint
545   is
546      function Internal (Self : System.Address) return Gint;
547      pragma Import (C, Internal, "gtk_print_settings_get_number_up");
548   begin
549      return Internal (Get_Object (Self));
550   end Get_Number_Up;
551
552   --------------------------
553   -- Get_Number_Up_Layout --
554   --------------------------
555
556   function Get_Number_Up_Layout
557      (Self : not null access Gtk_Print_Settings_Record)
558       return Gtk.Enums.Gtk_Number_Up_Layout
559   is
560      function Internal
561         (Self : System.Address) return Gtk.Enums.Gtk_Number_Up_Layout;
562      pragma Import (C, Internal, "gtk_print_settings_get_number_up_layout");
563   begin
564      return Internal (Get_Object (Self));
565   end Get_Number_Up_Layout;
566
567   ---------------------
568   -- Get_Orientation --
569   ---------------------
570
571   function Get_Orientation
572      (Self : not null access Gtk_Print_Settings_Record)
573       return Gtk.Enums.Gtk_Page_Orientation
574   is
575      function Internal
576         (Self : System.Address) return Gtk.Enums.Gtk_Page_Orientation;
577      pragma Import (C, Internal, "gtk_print_settings_get_orientation");
578   begin
579      return Internal (Get_Object (Self));
580   end Get_Orientation;
581
582   --------------------
583   -- Get_Output_Bin --
584   --------------------
585
586   function Get_Output_Bin
587      (Self : not null access Gtk_Print_Settings_Record) return UTF8_String
588   is
589      function Internal
590         (Self : System.Address) return Interfaces.C.Strings.chars_ptr;
591      pragma Import (C, Internal, "gtk_print_settings_get_output_bin");
592   begin
593      return Gtkada.Bindings.Value_Allowing_Null (Internal (Get_Object (Self)));
594   end Get_Output_Bin;
595
596   ---------------------
597   -- Get_Page_Ranges --
598   ---------------------
599
600   function Get_Page_Ranges
601      (Self : not null access Gtk_Print_Settings_Record)
602       return Gtk_Page_Range_Array
603   is
604      type Internal_Page_Range_Array is
605        array (Natural) of Gtk_Page_Range_Record;
606      pragma Convention (C, Internal_Page_Range_Array);
607
608      type Internal_Page_Range_Array_Access is
609        access Internal_Page_Range_Array;
610      pragma Convention (C, Internal_Page_Range_Array_Access);
611
612      procedure Free (Item : in out Internal_Page_Range_Array_Access);
613      pragma Import (C, Free, "g_free");
614
615      function Internal
616        (Settings   : System.Address;
617         Num_Ranges : access Gint)
618         return Internal_Page_Range_Array_Access;
619      pragma Import (C, Internal, "gtk_print_settings_get_page_ranges");
620
621      Len    : aliased Gint;
622      Result : Internal_Page_Range_Array_Access;
623   begin
624      Result := Internal (Get_Object (Self), Len'Access);
625      declare
626         Ranges : constant Gtk_Page_Range_Array :=
627           Gtk_Page_Range_Array (Result (0 .. Natural (Len)));
628      begin
629         Free (Result);
630         return Ranges;
631      end;
632   end Get_Page_Ranges;
633
634   ------------------
635   -- Get_Page_Set --
636   ------------------
637
638   function Get_Page_Set
639      (Self : not null access Gtk_Print_Settings_Record)
640       return Gtk.Enums.Gtk_Page_Set
641   is
642      function Internal
643         (Self : System.Address) return Gtk.Enums.Gtk_Page_Set;
644      pragma Import (C, Internal, "gtk_print_settings_get_page_set");
645   begin
646      return Internal (Get_Object (Self));
647   end Get_Page_Set;
648
649   ----------------------
650   -- Get_Paper_Height --
651   ----------------------
652
653   function Get_Paper_Height
654      (Self : not null access Gtk_Print_Settings_Record;
655       Unit : Gtk.Enums.Gtk_Unit) return Gdouble
656   is
657      function Internal
658         (Self : System.Address;
659          Unit : Gtk.Enums.Gtk_Unit) return Gdouble;
660      pragma Import (C, Internal, "gtk_print_settings_get_paper_height");
661   begin
662      return Internal (Get_Object (Self), Unit);
663   end Get_Paper_Height;
664
665   --------------------
666   -- Get_Paper_Size --
667   --------------------
668
669   function Get_Paper_Size
670      (Self : not null access Gtk_Print_Settings_Record)
671       return Gtk.Paper_Size.Gtk_Paper_Size
672   is
673      function Internal (Self : System.Address) return System.Address;
674      pragma Import (C, Internal, "gtk_print_settings_get_paper_size");
675   begin
676      return From_Object (Internal (Get_Object (Self)));
677   end Get_Paper_Size;
678
679   ---------------------
680   -- Get_Paper_Width --
681   ---------------------
682
683   function Get_Paper_Width
684      (Self : not null access Gtk_Print_Settings_Record;
685       Unit : Gtk.Enums.Gtk_Unit) return Gdouble
686   is
687      function Internal
688         (Self : System.Address;
689          Unit : Gtk.Enums.Gtk_Unit) return Gdouble;
690      pragma Import (C, Internal, "gtk_print_settings_get_paper_width");
691   begin
692      return Internal (Get_Object (Self), Unit);
693   end Get_Paper_Width;
694
695   ---------------------
696   -- Get_Print_Pages --
697   ---------------------
698
699   function Get_Print_Pages
700      (Self : not null access Gtk_Print_Settings_Record)
701       return Gtk.Enums.Gtk_Print_Pages
702   is
703      function Internal
704         (Self : System.Address) return Gtk.Enums.Gtk_Print_Pages;
705      pragma Import (C, Internal, "gtk_print_settings_get_print_pages");
706   begin
707      return Internal (Get_Object (Self));
708   end Get_Print_Pages;
709
710   -----------------
711   -- Get_Printer --
712   -----------------
713
714   function Get_Printer
715      (Self : not null access Gtk_Print_Settings_Record) return UTF8_String
716   is
717      function Internal
718         (Self : System.Address) return Interfaces.C.Strings.chars_ptr;
719      pragma Import (C, Internal, "gtk_print_settings_get_printer");
720   begin
721      return Gtkada.Bindings.Value_Allowing_Null (Internal (Get_Object (Self)));
722   end Get_Printer;
723
724   ---------------------
725   -- Get_Printer_Lpi --
726   ---------------------
727
728   function Get_Printer_Lpi
729      (Self : not null access Gtk_Print_Settings_Record) return Gdouble
730   is
731      function Internal (Self : System.Address) return Gdouble;
732      pragma Import (C, Internal, "gtk_print_settings_get_printer_lpi");
733   begin
734      return Internal (Get_Object (Self));
735   end Get_Printer_Lpi;
736
737   -----------------
738   -- Get_Quality --
739   -----------------
740
741   function Get_Quality
742      (Self : not null access Gtk_Print_Settings_Record)
743       return Gtk.Enums.Gtk_Print_Quality
744   is
745      function Internal
746         (Self : System.Address) return Gtk.Enums.Gtk_Print_Quality;
747      pragma Import (C, Internal, "gtk_print_settings_get_quality");
748   begin
749      return Internal (Get_Object (Self));
750   end Get_Quality;
751
752   --------------------
753   -- Get_Resolution --
754   --------------------
755
756   function Get_Resolution
757      (Self : not null access Gtk_Print_Settings_Record) return Gint
758   is
759      function Internal (Self : System.Address) return Gint;
760      pragma Import (C, Internal, "gtk_print_settings_get_resolution");
761   begin
762      return Internal (Get_Object (Self));
763   end Get_Resolution;
764
765   ----------------------
766   -- Get_Resolution_X --
767   ----------------------
768
769   function Get_Resolution_X
770      (Self : not null access Gtk_Print_Settings_Record) return Gint
771   is
772      function Internal (Self : System.Address) return Gint;
773      pragma Import (C, Internal, "gtk_print_settings_get_resolution_x");
774   begin
775      return Internal (Get_Object (Self));
776   end Get_Resolution_X;
777
778   ----------------------
779   -- Get_Resolution_Y --
780   ----------------------
781
782   function Get_Resolution_Y
783      (Self : not null access Gtk_Print_Settings_Record) return Gint
784   is
785      function Internal (Self : System.Address) return Gint;
786      pragma Import (C, Internal, "gtk_print_settings_get_resolution_y");
787   begin
788      return Internal (Get_Object (Self));
789   end Get_Resolution_Y;
790
791   -----------------
792   -- Get_Reverse --
793   -----------------
794
795   function Get_Reverse
796      (Self : not null access Gtk_Print_Settings_Record) return Boolean
797   is
798      function Internal (Self : System.Address) return Glib.Gboolean;
799      pragma Import (C, Internal, "gtk_print_settings_get_reverse");
800   begin
801      return Internal (Get_Object (Self)) /= 0;
802   end Get_Reverse;
803
804   ---------------
805   -- Get_Scale --
806   ---------------
807
808   function Get_Scale
809      (Self : not null access Gtk_Print_Settings_Record) return Gdouble
810   is
811      function Internal (Self : System.Address) return Gdouble;
812      pragma Import (C, Internal, "gtk_print_settings_get_scale");
813   begin
814      return Internal (Get_Object (Self));
815   end Get_Scale;
816
817   -------------------
818   -- Get_Use_Color --
819   -------------------
820
821   function Get_Use_Color
822      (Self : not null access Gtk_Print_Settings_Record) return Boolean
823   is
824      function Internal (Self : System.Address) return Glib.Gboolean;
825      pragma Import (C, Internal, "gtk_print_settings_get_use_color");
826   begin
827      return Internal (Get_Object (Self)) /= 0;
828   end Get_Use_Color;
829
830   -------------
831   -- Has_Key --
832   -------------
833
834   function Has_Key
835      (Self : not null access Gtk_Print_Settings_Record;
836       Key  : UTF8_String) return Boolean
837   is
838      function Internal
839         (Self : System.Address;
840          Key  : Interfaces.C.Strings.chars_ptr) return Glib.Gboolean;
841      pragma Import (C, Internal, "gtk_print_settings_has_key");
842      Tmp_Key    : Interfaces.C.Strings.chars_ptr := New_String (Key);
843      Tmp_Return : Glib.Gboolean;
844   begin
845      Tmp_Return := Internal (Get_Object (Self), Tmp_Key);
846      Free (Tmp_Key);
847      return Tmp_Return /= 0;
848   end Has_Key;
849
850   ---------------
851   -- Load_File --
852   ---------------
853
854   function Load_File
855      (Self      : not null access Gtk_Print_Settings_Record;
856       File_Name : UTF8_String) return Boolean
857   is
858      function Internal
859         (Self      : System.Address;
860          File_Name : Interfaces.C.Strings.chars_ptr) return Glib.Gboolean;
861      pragma Import (C, Internal, "gtk_print_settings_load_file");
862      Tmp_File_Name : Interfaces.C.Strings.chars_ptr := New_String (File_Name);
863      Tmp_Return    : Glib.Gboolean;
864   begin
865      Tmp_Return := Internal (Get_Object (Self), Tmp_File_Name);
866      Free (Tmp_File_Name);
867      return Tmp_Return /= 0;
868   end Load_File;
869
870   -------------------
871   -- Load_Key_File --
872   -------------------
873
874   function Load_Key_File
875      (Self       : not null access Gtk_Print_Settings_Record;
876       Key_File   : Glib.Key_File.G_Key_File;
877       Group_Name : UTF8_String := "") return Boolean
878   is
879      function Internal
880         (Self       : System.Address;
881          Key_File   : Glib.Key_File.G_Key_File;
882          Group_Name : Interfaces.C.Strings.chars_ptr) return Glib.Gboolean;
883      pragma Import (C, Internal, "gtk_print_settings_load_key_file");
884      Tmp_Group_Name : Interfaces.C.Strings.chars_ptr;
885      Tmp_Return     : Glib.Gboolean;
886   begin
887      if Group_Name = "" then
888         Tmp_Group_Name := Interfaces.C.Strings.Null_Ptr;
889      else
890         Tmp_Group_Name := New_String (Group_Name);
891      end if;
892      Tmp_Return := Internal (Get_Object (Self), Key_File, Tmp_Group_Name);
893      Free (Tmp_Group_Name);
894      return Tmp_Return /= 0;
895   end Load_Key_File;
896
897   ---------
898   -- Set --
899   ---------
900
901   procedure Set
902      (Self  : not null access Gtk_Print_Settings_Record;
903       Key   : UTF8_String;
904       Value : UTF8_String := "")
905   is
906      procedure Internal
907         (Self  : System.Address;
908          Key   : Interfaces.C.Strings.chars_ptr;
909          Value : Interfaces.C.Strings.chars_ptr);
910      pragma Import (C, Internal, "gtk_print_settings_set");
911      Tmp_Key   : Interfaces.C.Strings.chars_ptr := New_String (Key);
912      Tmp_Value : Interfaces.C.Strings.chars_ptr;
913   begin
914      if Value = "" then
915         Tmp_Value := Interfaces.C.Strings.Null_Ptr;
916      else
917         Tmp_Value := New_String (Value);
918      end if;
919      Internal (Get_Object (Self), Tmp_Key, Tmp_Value);
920      Free (Tmp_Value);
921      Free (Tmp_Key);
922   end Set;
923
924   --------------
925   -- Set_Bool --
926   --------------
927
928   procedure Set_Bool
929      (Self  : not null access Gtk_Print_Settings_Record;
930       Key   : UTF8_String;
931       Value : Boolean)
932   is
933      procedure Internal
934         (Self  : System.Address;
935          Key   : Interfaces.C.Strings.chars_ptr;
936          Value : Glib.Gboolean);
937      pragma Import (C, Internal, "gtk_print_settings_set_bool");
938      Tmp_Key : Interfaces.C.Strings.chars_ptr := New_String (Key);
939   begin
940      Internal (Get_Object (Self), Tmp_Key, Boolean'Pos (Value));
941      Free (Tmp_Key);
942   end Set_Bool;
943
944   -----------------
945   -- Set_Collate --
946   -----------------
947
948   procedure Set_Collate
949      (Self    : not null access Gtk_Print_Settings_Record;
950       Collate : Boolean)
951   is
952      procedure Internal (Self : System.Address; Collate : Glib.Gboolean);
953      pragma Import (C, Internal, "gtk_print_settings_set_collate");
954   begin
955      Internal (Get_Object (Self), Boolean'Pos (Collate));
956   end Set_Collate;
957
958   ------------------------
959   -- Set_Default_Source --
960   ------------------------
961
962   procedure Set_Default_Source
963      (Self           : not null access Gtk_Print_Settings_Record;
964       Default_Source : UTF8_String)
965   is
966      procedure Internal
967         (Self           : System.Address;
968          Default_Source : Interfaces.C.Strings.chars_ptr);
969      pragma Import (C, Internal, "gtk_print_settings_set_default_source");
970      Tmp_Default_Source : Interfaces.C.Strings.chars_ptr := New_String (Default_Source);
971   begin
972      Internal (Get_Object (Self), Tmp_Default_Source);
973      Free (Tmp_Default_Source);
974   end Set_Default_Source;
975
976   ----------------
977   -- Set_Dither --
978   ----------------
979
980   procedure Set_Dither
981      (Self   : not null access Gtk_Print_Settings_Record;
982       Dither : UTF8_String)
983   is
984      procedure Internal
985         (Self   : System.Address;
986          Dither : Interfaces.C.Strings.chars_ptr);
987      pragma Import (C, Internal, "gtk_print_settings_set_dither");
988      Tmp_Dither : Interfaces.C.Strings.chars_ptr := New_String (Dither);
989   begin
990      Internal (Get_Object (Self), Tmp_Dither);
991      Free (Tmp_Dither);
992   end Set_Dither;
993
994   ----------------
995   -- Set_Double --
996   ----------------
997
998   procedure Set_Double
999      (Self  : not null access Gtk_Print_Settings_Record;
1000       Key   : UTF8_String;
1001       Value : Gdouble)
1002   is
1003      procedure Internal
1004         (Self  : System.Address;
1005          Key   : Interfaces.C.Strings.chars_ptr;
1006          Value : Gdouble);
1007      pragma Import (C, Internal, "gtk_print_settings_set_double");
1008      Tmp_Key : Interfaces.C.Strings.chars_ptr := New_String (Key);
1009   begin
1010      Internal (Get_Object (Self), Tmp_Key, Value);
1011      Free (Tmp_Key);
1012   end Set_Double;
1013
1014   ----------------
1015   -- Set_Duplex --
1016   ----------------
1017
1018   procedure Set_Duplex
1019      (Self   : not null access Gtk_Print_Settings_Record;
1020       Duplex : Gtk.Enums.Gtk_Print_Duplex)
1021   is
1022      procedure Internal
1023         (Self   : System.Address;
1024          Duplex : Gtk.Enums.Gtk_Print_Duplex);
1025      pragma Import (C, Internal, "gtk_print_settings_set_duplex");
1026   begin
1027      Internal (Get_Object (Self), Duplex);
1028   end Set_Duplex;
1029
1030   --------------------
1031   -- Set_Finishings --
1032   --------------------
1033
1034   procedure Set_Finishings
1035      (Self       : not null access Gtk_Print_Settings_Record;
1036       Finishings : UTF8_String)
1037   is
1038      procedure Internal
1039         (Self       : System.Address;
1040          Finishings : Interfaces.C.Strings.chars_ptr);
1041      pragma Import (C, Internal, "gtk_print_settings_set_finishings");
1042      Tmp_Finishings : Interfaces.C.Strings.chars_ptr := New_String (Finishings);
1043   begin
1044      Internal (Get_Object (Self), Tmp_Finishings);
1045      Free (Tmp_Finishings);
1046   end Set_Finishings;
1047
1048   -------------
1049   -- Set_Int --
1050   -------------
1051
1052   procedure Set_Int
1053      (Self  : not null access Gtk_Print_Settings_Record;
1054       Key   : UTF8_String;
1055       Value : Gint)
1056   is
1057      procedure Internal
1058         (Self  : System.Address;
1059          Key   : Interfaces.C.Strings.chars_ptr;
1060          Value : Gint);
1061      pragma Import (C, Internal, "gtk_print_settings_set_int");
1062      Tmp_Key : Interfaces.C.Strings.chars_ptr := New_String (Key);
1063   begin
1064      Internal (Get_Object (Self), Tmp_Key, Value);
1065      Free (Tmp_Key);
1066   end Set_Int;
1067
1068   ----------------
1069   -- Set_Length --
1070   ----------------
1071
1072   procedure Set_Length
1073      (Self  : not null access Gtk_Print_Settings_Record;
1074       Key   : UTF8_String;
1075       Value : Gdouble;
1076       Unit  : Gtk.Enums.Gtk_Unit)
1077   is
1078      procedure Internal
1079         (Self  : System.Address;
1080          Key   : Interfaces.C.Strings.chars_ptr;
1081          Value : Gdouble;
1082          Unit  : Gtk.Enums.Gtk_Unit);
1083      pragma Import (C, Internal, "gtk_print_settings_set_length");
1084      Tmp_Key : Interfaces.C.Strings.chars_ptr := New_String (Key);
1085   begin
1086      Internal (Get_Object (Self), Tmp_Key, Value, Unit);
1087      Free (Tmp_Key);
1088   end Set_Length;
1089
1090   --------------------
1091   -- Set_Media_Type --
1092   --------------------
1093
1094   procedure Set_Media_Type
1095      (Self       : not null access Gtk_Print_Settings_Record;
1096       Media_Type : UTF8_String)
1097   is
1098      procedure Internal
1099         (Self       : System.Address;
1100          Media_Type : Interfaces.C.Strings.chars_ptr);
1101      pragma Import (C, Internal, "gtk_print_settings_set_media_type");
1102      Tmp_Media_Type : Interfaces.C.Strings.chars_ptr := New_String (Media_Type);
1103   begin
1104      Internal (Get_Object (Self), Tmp_Media_Type);
1105      Free (Tmp_Media_Type);
1106   end Set_Media_Type;
1107
1108   ------------------
1109   -- Set_N_Copies --
1110   ------------------
1111
1112   procedure Set_N_Copies
1113      (Self       : not null access Gtk_Print_Settings_Record;
1114       Num_Copies : Gint)
1115   is
1116      procedure Internal (Self : System.Address; Num_Copies : Gint);
1117      pragma Import (C, Internal, "gtk_print_settings_set_n_copies");
1118   begin
1119      Internal (Get_Object (Self), Num_Copies);
1120   end Set_N_Copies;
1121
1122   -------------------
1123   -- Set_Number_Up --
1124   -------------------
1125
1126   procedure Set_Number_Up
1127      (Self      : not null access Gtk_Print_Settings_Record;
1128       Number_Up : Gint)
1129   is
1130      procedure Internal (Self : System.Address; Number_Up : Gint);
1131      pragma Import (C, Internal, "gtk_print_settings_set_number_up");
1132   begin
1133      Internal (Get_Object (Self), Number_Up);
1134   end Set_Number_Up;
1135
1136   --------------------------
1137   -- Set_Number_Up_Layout --
1138   --------------------------
1139
1140   procedure Set_Number_Up_Layout
1141      (Self             : not null access Gtk_Print_Settings_Record;
1142       Number_Up_Layout : Gtk.Enums.Gtk_Number_Up_Layout)
1143   is
1144      procedure Internal
1145         (Self             : System.Address;
1146          Number_Up_Layout : Gtk.Enums.Gtk_Number_Up_Layout);
1147      pragma Import (C, Internal, "gtk_print_settings_set_number_up_layout");
1148   begin
1149      Internal (Get_Object (Self), Number_Up_Layout);
1150   end Set_Number_Up_Layout;
1151
1152   ---------------------
1153   -- Set_Orientation --
1154   ---------------------
1155
1156   procedure Set_Orientation
1157      (Self        : not null access Gtk_Print_Settings_Record;
1158       Orientation : Gtk.Enums.Gtk_Page_Orientation)
1159   is
1160      procedure Internal
1161         (Self        : System.Address;
1162          Orientation : Gtk.Enums.Gtk_Page_Orientation);
1163      pragma Import (C, Internal, "gtk_print_settings_set_orientation");
1164   begin
1165      Internal (Get_Object (Self), Orientation);
1166   end Set_Orientation;
1167
1168   --------------------
1169   -- Set_Output_Bin --
1170   --------------------
1171
1172   procedure Set_Output_Bin
1173      (Self       : not null access Gtk_Print_Settings_Record;
1174       Output_Bin : UTF8_String)
1175   is
1176      procedure Internal
1177         (Self       : System.Address;
1178          Output_Bin : Interfaces.C.Strings.chars_ptr);
1179      pragma Import (C, Internal, "gtk_print_settings_set_output_bin");
1180      Tmp_Output_Bin : Interfaces.C.Strings.chars_ptr := New_String (Output_Bin);
1181   begin
1182      Internal (Get_Object (Self), Tmp_Output_Bin);
1183      Free (Tmp_Output_Bin);
1184   end Set_Output_Bin;
1185
1186   ---------------------
1187   -- Set_Page_Ranges --
1188   ---------------------
1189
1190   procedure Set_Page_Ranges
1191      (Self        : not null access Gtk_Print_Settings_Record;
1192       Page_Ranges : Gtk_Page_Range_Array)
1193   is
1194      procedure Internal
1195        (Settings    : System.Address;
1196         Page_Ranges : System.Address;
1197         Num_Ranges  : Gint);
1198      pragma Import (C, Internal, "gtk_print_settings_set_page_ranges");
1199   begin
1200      Internal
1201        (Get_Object (Self),
1202         Page_Ranges (Page_Ranges'First)'Address,
1203         Page_Ranges'Length);
1204   end Set_Page_Ranges;
1205
1206   ------------------
1207   -- Set_Page_Set --
1208   ------------------
1209
1210   procedure Set_Page_Set
1211      (Self     : not null access Gtk_Print_Settings_Record;
1212       Page_Set : Gtk.Enums.Gtk_Page_Set)
1213   is
1214      procedure Internal
1215         (Self     : System.Address;
1216          Page_Set : Gtk.Enums.Gtk_Page_Set);
1217      pragma Import (C, Internal, "gtk_print_settings_set_page_set");
1218   begin
1219      Internal (Get_Object (Self), Page_Set);
1220   end Set_Page_Set;
1221
1222   ----------------------
1223   -- Set_Paper_Height --
1224   ----------------------
1225
1226   procedure Set_Paper_Height
1227      (Self   : not null access Gtk_Print_Settings_Record;
1228       Height : Gdouble;
1229       Unit   : Gtk.Enums.Gtk_Unit)
1230   is
1231      procedure Internal
1232         (Self   : System.Address;
1233          Height : Gdouble;
1234          Unit   : Gtk.Enums.Gtk_Unit);
1235      pragma Import (C, Internal, "gtk_print_settings_set_paper_height");
1236   begin
1237      Internal (Get_Object (Self), Height, Unit);
1238   end Set_Paper_Height;
1239
1240   --------------------
1241   -- Set_Paper_Size --
1242   --------------------
1243
1244   procedure Set_Paper_Size
1245      (Self       : not null access Gtk_Print_Settings_Record;
1246       Paper_Size : Gtk.Paper_Size.Gtk_Paper_Size)
1247   is
1248      procedure Internal
1249         (Self       : System.Address;
1250          Paper_Size : System.Address);
1251      pragma Import (C, Internal, "gtk_print_settings_set_paper_size");
1252   begin
1253      Internal (Get_Object (Self), Get_Object (Paper_Size));
1254   end Set_Paper_Size;
1255
1256   ---------------------
1257   -- Set_Paper_Width --
1258   ---------------------
1259
1260   procedure Set_Paper_Width
1261      (Self  : not null access Gtk_Print_Settings_Record;
1262       Width : Gdouble;
1263       Unit  : Gtk.Enums.Gtk_Unit)
1264   is
1265      procedure Internal
1266         (Self  : System.Address;
1267          Width : Gdouble;
1268          Unit  : Gtk.Enums.Gtk_Unit);
1269      pragma Import (C, Internal, "gtk_print_settings_set_paper_width");
1270   begin
1271      Internal (Get_Object (Self), Width, Unit);
1272   end Set_Paper_Width;
1273
1274   ---------------------
1275   -- Set_Print_Pages --
1276   ---------------------
1277
1278   procedure Set_Print_Pages
1279      (Self  : not null access Gtk_Print_Settings_Record;
1280       Pages : Gtk.Enums.Gtk_Print_Pages)
1281   is
1282      procedure Internal
1283         (Self  : System.Address;
1284          Pages : Gtk.Enums.Gtk_Print_Pages);
1285      pragma Import (C, Internal, "gtk_print_settings_set_print_pages");
1286   begin
1287      Internal (Get_Object (Self), Pages);
1288   end Set_Print_Pages;
1289
1290   -----------------
1291   -- Set_Printer --
1292   -----------------
1293
1294   procedure Set_Printer
1295      (Self    : not null access Gtk_Print_Settings_Record;
1296       Printer : UTF8_String)
1297   is
1298      procedure Internal
1299         (Self    : System.Address;
1300          Printer : Interfaces.C.Strings.chars_ptr);
1301      pragma Import (C, Internal, "gtk_print_settings_set_printer");
1302      Tmp_Printer : Interfaces.C.Strings.chars_ptr := New_String (Printer);
1303   begin
1304      Internal (Get_Object (Self), Tmp_Printer);
1305      Free (Tmp_Printer);
1306   end Set_Printer;
1307
1308   ---------------------
1309   -- Set_Printer_Lpi --
1310   ---------------------
1311
1312   procedure Set_Printer_Lpi
1313      (Self : not null access Gtk_Print_Settings_Record;
1314       Lpi  : Gdouble)
1315   is
1316      procedure Internal (Self : System.Address; Lpi : Gdouble);
1317      pragma Import (C, Internal, "gtk_print_settings_set_printer_lpi");
1318   begin
1319      Internal (Get_Object (Self), Lpi);
1320   end Set_Printer_Lpi;
1321
1322   -----------------
1323   -- Set_Quality --
1324   -----------------
1325
1326   procedure Set_Quality
1327      (Self    : not null access Gtk_Print_Settings_Record;
1328       Quality : Gtk.Enums.Gtk_Print_Quality)
1329   is
1330      procedure Internal
1331         (Self    : System.Address;
1332          Quality : Gtk.Enums.Gtk_Print_Quality);
1333      pragma Import (C, Internal, "gtk_print_settings_set_quality");
1334   begin
1335      Internal (Get_Object (Self), Quality);
1336   end Set_Quality;
1337
1338   --------------------
1339   -- Set_Resolution --
1340   --------------------
1341
1342   procedure Set_Resolution
1343      (Self       : not null access Gtk_Print_Settings_Record;
1344       Resolution : Gint)
1345   is
1346      procedure Internal (Self : System.Address; Resolution : Gint);
1347      pragma Import (C, Internal, "gtk_print_settings_set_resolution");
1348   begin
1349      Internal (Get_Object (Self), Resolution);
1350   end Set_Resolution;
1351
1352   -----------------------
1353   -- Set_Resolution_Xy --
1354   -----------------------
1355
1356   procedure Set_Resolution_Xy
1357      (Self         : not null access Gtk_Print_Settings_Record;
1358       Resolution_X : Gint;
1359       Resolution_Y : Gint)
1360   is
1361      procedure Internal
1362         (Self         : System.Address;
1363          Resolution_X : Gint;
1364          Resolution_Y : Gint);
1365      pragma Import (C, Internal, "gtk_print_settings_set_resolution_xy");
1366   begin
1367      Internal (Get_Object (Self), Resolution_X, Resolution_Y);
1368   end Set_Resolution_Xy;
1369
1370   -----------------
1371   -- Set_Reverse --
1372   -----------------
1373
1374   procedure Set_Reverse
1375      (Self        : not null access Gtk_Print_Settings_Record;
1376       Gtk_Reverse : Boolean)
1377   is
1378      procedure Internal
1379         (Self        : System.Address;
1380          Gtk_Reverse : Glib.Gboolean);
1381      pragma Import (C, Internal, "gtk_print_settings_set_reverse");
1382   begin
1383      Internal (Get_Object (Self), Boolean'Pos (Gtk_Reverse));
1384   end Set_Reverse;
1385
1386   ---------------
1387   -- Set_Scale --
1388   ---------------
1389
1390   procedure Set_Scale
1391      (Self  : not null access Gtk_Print_Settings_Record;
1392       Scale : Gdouble)
1393   is
1394      procedure Internal (Self : System.Address; Scale : Gdouble);
1395      pragma Import (C, Internal, "gtk_print_settings_set_scale");
1396   begin
1397      Internal (Get_Object (Self), Scale);
1398   end Set_Scale;
1399
1400   -------------------
1401   -- Set_Use_Color --
1402   -------------------
1403
1404   procedure Set_Use_Color
1405      (Self      : not null access Gtk_Print_Settings_Record;
1406       Use_Color : Boolean)
1407   is
1408      procedure Internal (Self : System.Address; Use_Color : Glib.Gboolean);
1409      pragma Import (C, Internal, "gtk_print_settings_set_use_color");
1410   begin
1411      Internal (Get_Object (Self), Boolean'Pos (Use_Color));
1412   end Set_Use_Color;
1413
1414   -------------
1415   -- To_File --
1416   -------------
1417
1418   function To_File
1419      (Self      : not null access Gtk_Print_Settings_Record;
1420       File_Name : UTF8_String) return Boolean
1421   is
1422      function Internal
1423         (Self      : System.Address;
1424          File_Name : Interfaces.C.Strings.chars_ptr) return Glib.Gboolean;
1425      pragma Import (C, Internal, "gtk_print_settings_to_file");
1426      Tmp_File_Name : Interfaces.C.Strings.chars_ptr := New_String (File_Name);
1427      Tmp_Return    : Glib.Gboolean;
1428   begin
1429      Tmp_Return := Internal (Get_Object (Self), Tmp_File_Name);
1430      Free (Tmp_File_Name);
1431      return Tmp_Return /= 0;
1432   end To_File;
1433
1434   -----------------
1435   -- To_Key_File --
1436   -----------------
1437
1438   procedure To_Key_File
1439      (Self       : not null access Gtk_Print_Settings_Record;
1440       Key_File   : Glib.Key_File.G_Key_File;
1441       Group_Name : UTF8_String)
1442   is
1443      procedure Internal
1444         (Self       : System.Address;
1445          Key_File   : Glib.Key_File.G_Key_File;
1446          Group_Name : Interfaces.C.Strings.chars_ptr);
1447      pragma Import (C, Internal, "gtk_print_settings_to_key_file");
1448      Tmp_Group_Name : Interfaces.C.Strings.chars_ptr := New_String (Group_Name);
1449   begin
1450      Internal (Get_Object (Self), Key_File, Tmp_Group_Name);
1451      Free (Tmp_Group_Name);
1452   end To_Key_File;
1453
1454   -----------
1455   -- Unset --
1456   -----------
1457
1458   procedure Unset
1459      (Self : not null access Gtk_Print_Settings_Record;
1460       Key  : UTF8_String)
1461   is
1462      procedure Internal
1463         (Self : System.Address;
1464          Key  : Interfaces.C.Strings.chars_ptr);
1465      pragma Import (C, Internal, "gtk_print_settings_unset");
1466      Tmp_Key : Interfaces.C.Strings.chars_ptr := New_String (Key);
1467   begin
1468      Internal (Get_Object (Self), Tmp_Key);
1469      Free (Tmp_Key);
1470   end Unset;
1471
1472end Gtk.Print_Settings;
1473