File: gtk-settings.adb

package info (click to toggle)
libgtkada2 2.8.1-6lenny3
  • links: PTS, VCS
  • area: main
  • in suites: lenny
  • size: 13,496 kB
  • ctags: 3,886
  • sloc: ada: 103,189; ansic: 45,411; perl: 5,500; sh: 2,812; makefile: 1,169; xml: 19
file content (146 lines) | stat: -rw-r--r-- 5,117 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
-----------------------------------------------------------------------
--               GtkAda - Ada95 binding for Gtk+/Gnome               --
--                                                                   --
--                Copyright (C) 2006 AdaCore                         --
--                                                                   --
-- This library is free software; you can redistribute it and/or     --
-- modify it under the terms of the GNU General Public               --
-- License as published by the Free Software Foundation; either      --
-- version 2 of the License, or (at your option) any later version.  --
--                                                                   --
-- This library is distributed in the hope that it will be useful,   --
-- but WITHOUT ANY WARRANTY; without even the implied warranty of    --
-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU --
-- General Public License for more details.                          --
--                                                                   --
-- You should have received a copy of the GNU General Public         --
-- License along with this library; if not, write to the             --
-- Free Software Foundation, Inc., 59 Temple Place - Suite 330,      --
-- Boston, MA 02111-1307, USA.                                       --
--                                                                   --
-----------------------------------------------------------------------

with Glib.Values;          use Glib.Values;
with Gtk.Style;            use Gtk.Style;
with Interfaces.C.Strings; use Interfaces.C.Strings;

package body Gtk.Settings is

   -----------------
   -- Get_Default --
   -----------------

   function Get_Default return Gtk_Settings is
      function Internal return System.Address;
      pragma Import (C, Internal, "gtk_settings_get_default");
      Stub : Gtk_Settings_Record;
   begin
      return Gtk_Settings (Get_User_Data (Internal, Stub));
   end Get_Default;

   --------------------
   -- Get_For_Screen --
   --------------------

   function Get_For_Screen (Screen : Gdk.Gdk_Screen) return Gtk_Settings is
      function Internal (Screen : Gdk.Gdk_Screen) return System.Address;
      pragma Import (C, Internal, "gtk_settings_get_for_screen");
      Stub : Gtk_Settings_Record;
   begin
      return Gtk_Settings (Get_User_Data (Internal (Screen), Stub));
   end Get_For_Screen;

   -------------------------
   -- Set_Double_Property --
   -------------------------

   procedure Set_Double_Property
     (Settings : access Gtk_Settings_Record;
      Name     : String;
      Value    : Gdouble;
      Origin   : String)
   is
      procedure Internal
        (Settings : System.Address;
         Name     : String;
         V_Double : Gdouble;
         Origin   : String);
      pragma Import (C, Internal, "gtk_settings_set_double_property");
   begin
      Internal
        (Get_Object (Settings), Name & ASCII.NUL, Value, Origin & ASCII.NUL);
   end Set_Double_Property;

   -----------------------
   -- Set_Long_Property --
   -----------------------

   procedure Set_Long_Property
     (Settings : access Gtk_Settings_Record;
      Name     : String;
      Value    : Glong;
      Origin   : String)
   is
      procedure Internal
        (Settings : System.Address;
         Name     : String;
         V_Long   : Glong;
         Origin   : String);
      pragma Import (C, Internal, "gtk_settings_set_long_property");
   begin
      Internal
        (Get_Object (Settings), Name & ASCII.NUL, Value, Origin & ASCII.NUL);
   end Set_Long_Property;

   ------------------------
   -- Set_Property_Value --
   ------------------------

   procedure Set_Property_Value
     (Settings : access Gtk_Settings_Record;
      Name     : String;
      Value    : GValue;
      Origin   : String)
   is
      type Property_Value is record
         Origin : Interfaces.C.Strings.chars_ptr;
         Value  : GValue;
      end record;
      pragma Convention (C, Property_Value);

      procedure Internal
        (Settings : System.Address;
         Name     : String;
         Svalue   : System.Address);
      pragma Import (C, Internal, "gtk_settings_set_property_value");

      Val : aliased Property_Value :=
        (Origin => New_String (Origin),
         Value  => Value);
   begin
      Internal (Get_Object (Settings), Name & ASCII.NUL, Val'Address);
      Free (Val.Origin);
   end Set_Property_Value;

   -------------------------
   -- Set_String_Property --
   -------------------------

   procedure Set_String_Property
     (Settings : access Gtk_Settings_Record;
      Name     : String;
      Value    : String;
      Origin   : String)
   is
      procedure Internal
        (Settings : System.Address;
         Name     : String;
         V_String : String;
         Origin   : String);
      pragma Import (C, Internal, "gtk_settings_set_string_property");
   begin
      Internal (Get_Object (Settings), Name & ASCII.NUL,
                Value & ASCII.NUL, Origin & ASCII.NUL);
   end Set_String_Property;

end Gtk.Settings;