----------------------------------------------------------------------- -- GtkAda - Ada95 binding for Gtk+/Gnome -- -- -- -- Copyright (C) 1998-2000 E. Briot, J. Brobecker and A. Charlet -- -- Copyright (C) 2000-2010 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> -- A Gtk_Layout is a widget that can have an almost infinite size, without -- occupying a lot of memory. Its children can be located anywhere within -- it, but will only appear on the screen if the visible area of the layout -- contains them. -- Just like a Gtk_Viewport, its visible area is indicated by two -- Gtk_Adjustment widgets, and thus a Gtk_Layout can be put as is in a -- Gtk_Scrolled_Window. -- As for Gtk_Fixed containers, the children can be located anywhere in the -- layout (no automatic organization is done). But, as opposed to Gtk_Fixed -- widgets, a Gtk_Layout does not try to resize itself to show all its -- children. -- -- Starting from GtkAda 2.0, you have to call Set_Size and specify the maximum -- size of the layout, otherwise children added with Put outside the size -- defined for the layout will never be visible. -- One way to do this is to systematically call Set_Size before calling Put, -- and make sure you specify a size big enough for the layout. -- -- </description> -- <c_version>2.8.17</c_version> -- <group>Layout containers</group> -- <testgtk>create_layout.adb</testgtk> -- <screenshot>gtk-layout</screenshot> with Glib.Properties;
with Gdk.Window;
with Gtk.Adjustment;
with Gtk.Container;
with Gtk.Widget;
package Gtk.Layout is
type Gtk_Layout_Record is new
Gtk.Container.Gtk_Container_Record with private;
type Gtk_Layout is access all Gtk_Layout_Record'Class;
procedure Gtk_New
(Layout : out Gtk_Layout;
Hadjustment : Adjustment.Gtk_Adjustment := null;
Vadjustment : Adjustment.Gtk_Adjustment := null);
-- Create new layout. -- You can either give an explicit couple of adjustments, that will -- indicate the current visible area. If you don't specify any, they will -- be created automatically by GtkAda, which is the usual way to do. -- The Layout does not occupy any area on the screen, and you have to -- explicitly specify one with Set_Size below. procedure Initialize
(Layout : access Gtk_Layout_Record'Class;
Hadjustment : Gtk.Adjustment.Gtk_Adjustment;
Vadjustment : Gtk.Adjustment.Gtk_Adjustment);
-- 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_Layout. procedure Put
(Layout : access Gtk_Layout_Record;
Widget : access Gtk.Widget.Gtk_Widget_Record'Class;
X : Gint;
Y : Gint);
-- Insert a new child in the layout. -- The child will be displayed on the screen only if at least part of -- it intersects the visible area of the layout. -- The layout does not resize itself to automatically show the widget. -- You also need to call Set_Size, if the size you initially defined is -- smaller than (X, Y), or the child will never be visible even if the -- layout is scrolled. procedure Move
(Layout : access Gtk_Layout_Record;
Widget : access Gtk.Widget.Gtk_Widget_Record'Class;
X : Gint;
Y : Gint);
-- Move a child of the layout. -- Nothing is done if Widget is not already a child of Layout. function Get_Bin_Window
(Widget : access Gtk_Layout_Record) return Gdk.Window.Gdk_Window;
-- Return the window associated with the layout. -- You should use this one rather than Gtk.Widget.Get_Window. procedure Set_Size
(Layout : access Gtk_Layout_Record;
Width : Guint;
Height : Guint);
procedure Get_Size
(Layout : access Gtk_Layout_Record;
Width : out Guint;
Height : out Guint);
-- Specify an absolute size for the layout. -- This is not the size on the screen, but the internal size of the widget. -- The screen's size can be set with Gtk.Widget.Set_Usize. procedure Set_Hadjustment
(Layout : access Gtk_Layout_Record;
Adjustment : Gtk.Adjustment.Gtk_Adjustment);
function Get_Hadjustment
(Layout : access Gtk_Layout_Record) return Gtk.Adjustment.Gtk_Adjustment;
-- Return the adjustment that indicate the horizontal visual area -- of the layout. -- You generally do not have to modify the value of this adjustment -- yourself, since this is done automatically when the layout has -- been put in a Gtk_Scrolled_Window. procedure Set_Vadjustment
(Layout : access Gtk_Layout_Record;
Adjustment : Gtk.Adjustment.Gtk_Adjustment);
function Get_Vadjustment
(Layout : access Gtk_Layout_Record) return Gtk.Adjustment.Gtk_Adjustment;
-- Return the adjustment that indicate the vertical visual area -- of the layout. -- You generally do not have to modify the value of this adjustment -- yourself, since this is done automatically when the layout has -- been put in a Gtk_Scrolled_Window. ----------------- -- Obsolescent -- ----------------- -- All subprograms below are now obsolescent in gtk+. They might be removed -- from future versions of gtk+ (and therefore GtkAda). -- To find out whether your code uses any of these, we recommend compiling -- with the -gnatwj switch -- <doc_ignore> function Get_Width (Layout : access Gtk_Layout_Record) return Guint;
pragma Obsolescent; -- Deprecated, only provided for compatibility, see Get_Size function Get_Height (Layout : access Gtk_Layout_Record) return Guint;
-- pragma Obsolescent; -- Deprecated, only provided for compatibility, see Get_Size procedure Freeze (Layout : access Gtk_Layout_Record);
pragma Obsolescent; -- Freeze
-- Deprecated, only provided for compatibility. procedure Thaw (Layout : access Gtk_Layout_Record);
pragma Obsolescent; -- Thaw
-- Deprecated, only provided for compatibility. -- </doc_ignore> ---------------- -- Properties -- ---------------- -- The following properties are defined for this widget. See -- Glib.Properties for more information on properties. -- <properties> -- - Name: Hadjustment_Property -- Type: Gtk_Adjustment_Record'Class -- Flags: read-write -- Descr: The GtkAdjustment for the horizontal position. -- See also: Set_Hadjustment and Get_Hadjustment -- -- - Name: Vadjustment_Property -- Type: Gtk_Adjustment_Record'Class -- Flags: read-write -- Descr: The GtkAdjustment for the vertical position. -- See also: Set_Vadjustment and Get_Vadjustment -- -- - Name: Width_Property -- Type: Guint -- Flags: read-write -- Descr: The width of the layout. -- See also: Set_Size and Get_Width -- -- - Name: Height_Property -- Type: Guint -- Flags: read-write -- Descr: The height of the layout. -- See also: Set_Size and Get_Height -- </properties> Hadjustment_Property : constant Glib.Properties.Property_Object;
Vadjustment_Property : constant Glib.Properties.Property_Object;
Width_Property : constant Glib.Properties.Property_Uint;
Height_Property : constant Glib.Properties.Property_Uint;
---------------------- -- Child Properties -- ---------------------- -- The following properties can be set on children of this widget. See -- in particular Gtk.Containers.Child_Set_Property. -- <child_properties> -- Name: X_Property -- Type: Int -- Descr: X position of child widget -- -- Name: Y_Property -- Type: Int -- Descr: Y position of child widget -- </child_properties> X_Property : constant Glib.Properties.Property_Int;
Y_Property : constant Glib.Properties.Property_Int;
------------- -- Signals -- ------------- -- <signals> -- The following new signals are defined for this widget: -- -- - "set_scroll_adjustments" -- procedure Handler (Layout : access Gtk_Layout_Record'Class; -- Hadj : in Gtk.Adjustment.Gtk_Adjustment; -- Vadj : in Gtk.Adjustment.Gtk_Adjustment); -- -- Emitted whenever at least one of the adjustment of the layout is -- changed. -- </signals> Signal_Set_Scroll_Adjustments : constant Glib.Signal_Name :=
"set_scroll_adjustments"; private type Gtk_Layout_Record is new Gtk.Container.Gtk_Container_Record
with null record;
Hadjustment_Property : constant Glib.Properties.Property_Object :=
Glib.Properties.Build ("hadjustment");
Vadjustment_Property : constant Glib.Properties.Property_Object :=
Glib.Properties.Build ("vadjustment");
Width_Property : constant Glib.Properties.Property_Uint :=
Glib.Properties.Build ("width");
Height_Property : constant Glib.Properties.Property_Uint :=
Glib.Properties.Build ("height");
X_Property : constant Glib.Properties.Property_Int :=
Glib.Properties.Build ("x");
Y_Property : constant Glib.Properties.Property_Int :=
Glib.Properties.Build ("y");
pragma Import (C, Get_Type, "gtk_layout_get_type");
end Gtk.Layout;
-- No binding: gtk_layout_get_bin_window