File: gtk-size_group.ads

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 (151 lines) | stat: -rw-r--r-- 6,477 bytes parent folder | download | duplicates (3)
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
147
148
149
150
151
-----------------------------------------------------------------------
--              GtkAda - Ada95 binding for Gtk+/Gnome                --
--                                                                   --
--                Copyright (C) 2001-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.                                       --
--                                                                   --
-----------------------------------------------------------------------

--  <description>
--
--  Gtk_Size_Group provides a mechanism for grouping a number of widgets
--  together so they all request the same amount of space. This is typically
--  useful when you want a column of widgets to have the same size, but you
--  can't use a Gtk_Table widget.

--  Note that size groups only affect the amount of space requested, not the
--  size that the widgets finally receive. If you want the widgets in a
--  Gtk_Size_Group to actually be the same size, you need to pack them in such
--  a way that they get the size they request and not more. For example, if you
--  are packing your widgets into a table, you would not include the Fill flag.
--  </description>
--  <c_version>2.8.17</c_version>
--  <testgtk>create_size_groups.adb</testgtk>

with Glib.Object;
with Glib.Properties;
with Glib.Generic_Properties;
pragma Elaborate_All (Glib.Generic_Properties);
with Gtk.Widget;

package Gtk.Size_Group is

   type Gtk_Size_Group_Record is new Glib.Object.GObject_Record with private;
   type Gtk_Size_Group is access all Gtk_Size_Group_Record'Class;

   type Size_Group_Mode is (None, Horizontal, Vertical, Both);
   pragma Convention (C, Size_Group_Mode);
   --  This type indicates how the size of all widgets in the group match:
   --  - None: The behavior is the same as if there was no size. Each widget
   --          requests its most appropriate size.
   --  - Horizontal: All the widgets in the group will have the same width.
   --  - Vertical: All the widgets in the group will have the same height
   --  - Both: All the widgets in the group will have exactly the same size.

   procedure Gtk_New
     (Size_Group : out Gtk_Size_Group; Mode : Size_Group_Mode := Both);
   --  Create a new group.
   --  Initially, it doesn't contain any widget, and you need to add them with
   --  the Add_Widget procedure.

   procedure Initialize
     (Size_Group : access Gtk_Size_Group_Record'Class; Mode : Size_Group_Mode);
   --  Internal initialization function.
   --  See the section "Creating your own widgets" in the documentation.

   function Get_Type return Gtk.Gtk_Type;
   --  Return the internal value associated with a Gtk_Size_Group

   procedure Set_Mode
     (Size_Group : access Gtk_Size_Group_Record;
      Mode       : Size_Group_Mode);
   function Get_Mode
     (Size_Group : access Gtk_Size_Group_Record) return Size_Group_Mode;
   --  Change the way the group effects the size of its component widgets.

   procedure Add_Widget
     (Size_Group : access Gtk_Size_Group_Record;
      Widget     : access Gtk.Widget.Gtk_Widget_Record'Class);
   --  Add a new widget in the group.
   --  Its size will be effected by all other widgets in the group: the size
   --  requisition of the widget will be the maximum of its requisition and the
   --  requisition of the other widgets in the group (depending on the group
   --  mode).
   --
   --  A given widget can belong to only one size group. It is removed from its
   --  previous group before being added to Size_Group.

   procedure Remove_Widget
     (Size_Group : access Gtk_Size_Group_Record;
      Widget     : access Gtk.Widget.Gtk_Widget_Record'Class);
   --  Remove a widget from the group.

   procedure Set_Ignore_Hidden
     (Size_Group    : access Gtk_Size_Group_Record; Ignore_Hidden : Boolean);
   function Get_Ignore_Hidden
     (Size_Group : access Gtk_Size_Group_Record) return Boolean;
   --  Whether invisible widgets are ignored when calcuating the size for all
   --  widgets in the group.

   ----------------
   -- Properties --
   ----------------

   --  <properties>
   --  The following properties are defined for this widget. See
   --  Glib.Properties for more information on properties.
   --
   --  Name:  Mode_Property
   --  Type:  Size_Group_Mode
   --  Flags: read-write
   --  Descr: the directions in which the size group effects the requested
   --         sizes of its component widgets
   --  See also: Set_Mode / Get_Mode
   --
   --  Name:  Ignore_Hidden_Property
   --  Type:  Boolean
   --  Descr: If TRUE, hidden widgets are ignored
   --
   --  </properties>

   package Size_Group_Mode_Properties is new
     Glib.Generic_Properties.Generic_Internal_Discrete_Property
     (Size_Group_Mode);
   type Property_Size_Group_Mode is new Size_Group_Mode_Properties.Property;

   Mode_Property : constant Property_Size_Group_Mode;
   Ignore_Hidden_Property : constant Glib.Properties.Property_Boolean;

   -------------
   -- Signals --
   -------------

   --  <signals>
   --  The following new signals are defined for this widget:
   --
   --  </signals>

private
   type Gtk_Size_Group_Record is new Glib.Object.GObject_Record
     with null record;

   Mode_Property : constant Property_Size_Group_Mode := Build ("mode");
   Ignore_Hidden_Property : constant Glib.Properties.Property_Boolean :=
     Glib.Properties.Build ("ignore-hidden");

   pragma Import (C, Get_Type, "gtk_size_group_get_type");
end Gtk.Size_Group;