-----------------------------------------------------------------------
-- GtkAda - Ada95 binding for Gtk+/Gnome --
-- --
-- Copyright (C) 1998-2000 E. Briot, J. Brobecker and A. Charlet --
-- Copyright (C) 2000-2002 ACT-Europe --
-- --
-- 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. --
-- --
-- As a special exception, if other files instantiate generics from --
-- this unit, or you link this unit with other files to produce an --
-- executable, this unit does not by itself cause the resulting --
-- executable to be covered by the GNU General Public License. This --
-- exception does not however invalidate any other reasons why the --
-- executable file might be covered by the GNU Public License. --
-----------------------------------------------------------------------
--
-- 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.
--
--
-- 1.3.11
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 := Adjustment.Null_Adjustment;
Vadjustment : Adjustment.Gtk_Adjustment := Adjustment.Null_Adjustment);
-- 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);
-- 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 Get_Size
(Layout : access Gtk_Layout_Record;
Width : out Guint;
Height : out Guint);
-- Get the current size in pixels of the layout, as set with Set_Size
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.
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.
procedure Set_Hadjustment
(Layout : access Gtk_Layout_Record;
Adjustment : Gtk.Adjustment.Gtk_Adjustment);
-- Specify a new adjustment to use for the horizontal visual area.
procedure Set_Vadjustment
(Layout : access Gtk_Layout_Record;
Adjustment : Gtk.Adjustment.Gtk_Adjustment);
-- Specify a new adjustment to use for the vertical visual area.
--
function Get_Width (Layout : access Gtk_Layout_Record) return Guint;
-- Deprecated, only provided for compatibility, see Get_Size
function Get_Height (Layout : access Gtk_Layout_Record) return Guint;
-- Deprecated, only provided for compatibility, see Get_Size
procedure Freeze (Layout : access Gtk_Layout_Record);
-- Deprecated, only provided for compatibility.
procedure Thaw (Layout : access Gtk_Layout_Record);
-- Deprecated, only provided for compatibility.
--
----------------
-- Properties --
----------------
--
-- The following properties are defined for this widget. See
-- Glib.Properties for more information on 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
--
--
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;
-------------
-- 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.
--
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");
pragma Import (C, Get_Type, "gtk_layout_get_type");
end Gtk.Layout;