----------------------------------------------------------------------- -- GtkAda - Ada95 binding for Gtk+/Gnome -- -- -- -- Copyright (C) 1998-2000 E. Briot, J. Brobecker and A. Charlet -- -- Copyright (C) 2000-2011, 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. -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- ----------------------------------------------------------------------- -- -- 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. -- -- -- gtk-layout -- Layout containers -- create_layout.adb pragma Warnings (Off, "*is already use-visible*"); with Gdk.Window; use Gdk.Window; with Glib; use Glib; with Glib.Properties; use Glib.Properties; with Glib.Types; use Glib.Types; with Gtk.Adjustment; use Gtk.Adjustment; with Gtk.Buildable; use Gtk.Buildable; with Gtk.Container; use Gtk.Container; with Gtk.Widget; use Gtk.Widget; package Gtk.Layout is type Gtk_Layout_Record is new Gtk_Container_Record with null record; type Gtk_Layout is access all Gtk_Layout_Record'Class; ------------------ -- Constructors -- ------------------ procedure Gtk_New (Layout : out Gtk_Layout; Hadjustment : Gtk.Adjustment.Gtk_Adjustment := null; Vadjustment : Gtk.Adjustment.Gtk_Adjustment := null); procedure Initialize (Layout : access Gtk_Layout_Record'Class; Hadjustment : Gtk.Adjustment.Gtk_Adjustment := null; Vadjustment : Gtk.Adjustment.Gtk_Adjustment := null); -- Creates a new Gtk.Layout.Gtk_Layout. Unless you have a specific -- adjustment you'd like the layout to use for scrolling, pass null for -- "hadjustment": horizontal scroll adjustment, or null -- "vadjustment": vertical scroll adjustment, or null function Get_Type return Glib.GType; pragma Import (C, Get_Type, "gtk_layout_get_type"); ------------- -- Methods -- ------------- procedure Freeze (Layout : access Gtk_Layout_Record); -- This is a deprecated function, it doesn't do anything useful. function Get_Bin_Window (Layout : access Gtk_Layout_Record) return Gdk.Window.Gdk_Window; -- Retrieve the bin window of the layout used for drawing operations. -- Since: gtk+ 2.14 -- Returns a Gdk.Window.Gdk_Window function Get_Hadjustment (Layout : access Gtk_Layout_Record) return Gtk.Adjustment.Gtk_Adjustment; procedure Set_Hadjustment (Layout : access Gtk_Layout_Record; Adjustment : access Gtk.Adjustment.Gtk_Adjustment_Record'Class); -- 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. -- "adjustment": new scroll adjustment procedure Get_Size (Layout : access Gtk_Layout_Record; Width : out Guint; Height : out Guint); procedure Set_Size (Layout : access Gtk_Layout_Record; Width : Guint; Height : Guint); -- Sets the size of the scrollable area of the layout. -- "width": width of entire scrollable area -- "height": height of entire scrollable area function Get_Vadjustment (Layout : access Gtk_Layout_Record) return Gtk.Adjustment.Gtk_Adjustment; procedure Set_Vadjustment (Layout : access Gtk_Layout_Record; Adjustment : access Gtk.Adjustment.Gtk_Adjustment_Record'Class); -- Sets the vertical scroll adjustment for the layout. See -- Gtk.Scrolledwindow.Gtk_Scrolledwindow, Gtk.Scrollbar.Gtk_Scrollbar, -- Gtk.Adjustment.Gtk_Adjustment for details. -- "adjustment": new scroll adjustment procedure Move (Layout : access Gtk_Layout_Record; Child_Widget : access Gtk.Widget.Gtk_Widget_Record'Class; X : Gint; Y : Gint); -- Moves a current child of Layout to a new position. -- "child_widget": a current child of Layout -- "x": X position to move to -- "y": Y position to move to procedure Put (Layout : access Gtk_Layout_Record; Child_Widget : access Gtk.Widget.Gtk_Widget_Record'Class; X : Gint; Y : Gint); -- 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. -- "child_widget": child widget -- "x": X position of child widget -- "y": Y position of child widget procedure Thaw (Layout : access Gtk_Layout_Record); -- This is a deprecated function, it doesn't do anything useful. ---------------- -- Interfaces -- ---------------- -- This class implements several interfaces. See Glib.Types -- -- - "Buildable" package Implements_Buildable is new Glib.Types.Implements (Gtk.Buildable.Gtk_Buildable, Gtk_Layout_Record, Gtk_Layout); function "+" (Widget : access Gtk_Layout_Record'Class) return Gtk.Buildable.Gtk_Buildable renames Implements_Buildable.To_Interface; function "-" (Interf : Gtk.Buildable.Gtk_Buildable) return Gtk_Layout renames Implements_Buildable.To_Object; ---------------- -- Properties -- ---------------- -- The following properties are defined for this widget. See -- Glib.Properties for more information on properties) -- -- Name: Hadjustment_Property -- Type: Gtk.Adjustment.Gtk_Adjustment -- Flags: read-write -- -- Name: Height_Property -- Type: Guint -- Flags: read-write -- -- Name: Vadjustment_Property -- Type: Gtk.Adjustment.Gtk_Adjustment -- Flags: read-write -- -- Name: Width_Property -- Type: Guint -- Flags: read-write Hadjustment_Property : constant Glib.Properties.Property_Object; Height_Property : constant Glib.Properties.Property_Uint; Vadjustment_Property : constant Glib.Properties.Property_Object; Width_Property : constant Glib.Properties.Property_Uint; ------------- -- Signals -- ------------- -- The following new signals are defined for this widget: -- -- "set-scroll-adjustments" -- procedure Handler -- (Self : access Gtk_Layout_Record'Class; -- Object : Gtk.Adjustment.Gtk_Adjustment; -- P0 : Gtk.Adjustment.Gtk_Adjustment); -- Set the scroll adjustments for the layout. Usually scrolled containers -- like Gtk.Scrolledwindow.Gtk_Scrolledwindow will emit this signal to -- connect two instances of Gtk.Scrollbar.Gtk_Scrollbar to the scroll -- directions of the Gtk.Layout.Gtk_Layout. Signal_Set_Scroll_Adjustments : constant Glib.Signal_Name := "set-scroll-adjustments"; private Hadjustment_Property : constant Glib.Properties.Property_Object := Glib.Properties.Build ("hadjustment"); Height_Property : constant Glib.Properties.Property_Uint := Glib.Properties.Build ("height"); Vadjustment_Property : constant Glib.Properties.Property_Object := Glib.Properties.Build ("vadjustment"); Width_Property : constant Glib.Properties.Property_Uint := Glib.Properties.Build ("width"); end Gtk.Layout;