----------------------------------------------------------------------- -- 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_Paned is a container that organizes its two children either -- horizontally or vertically. The initial size allocated to the children -- depends on the size they request. However, the user has the possibility to -- interactively move a separation bar between the two to enlarge one of the -- children, while at the same time shrinking the second one. The bar can be -- moved by clicking with the mouse on a small cursor displayed in the bar, -- and then dragging the mouse. -- -- No additional decoration is provided around the children. -- -- Each child has two parameters, Resize and Shrink. -- -- If Shrink is True, then the widget can be made smaller than its -- requisition size by the user. Set this to False if you want to set a -- minimum size. -- -- if Resize is True, this means that the child accepts to be resized, and -- will not require any size. Thus, the size allocated to it will be the total -- size allocated to the container minus the size requested by the other -- child. If Resize is False, the child should ask for a specific size, which -- it will get. The other child will be resized accordingly. If both Child -- have the same value for Resize (either True or False), then the size -- allocated to each is a ratio between the size requested by both. -- -- When you use Set_Position with a parameter other than -1, or the user -- moves the handle to resize the widgets, the behavior of Resize is canceled. -- -- -- gtk-paned -- Layout container -- create_paned.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.Buildable; use Gtk.Buildable; with Gtk.Container; use Gtk.Container; with Gtk.Enums; use Gtk.Enums; with Gtk.Orientable; use Gtk.Orientable; with Gtk.Widget; use Gtk.Widget; package Gtk.Paned is type Gtk_Paned_Record is new Gtk_Container_Record with null record; type Gtk_Paned is access all Gtk_Paned_Record'Class; subtype Gtk_Hpaned_Record is Gtk_Paned_Record; subtype Gtk_Hpaned is Gtk_Paned; subtype Gtk_Vpaned_Record is Gtk_Paned_Record; subtype Gtk_Vpaned is Gtk_Paned; ------------------ -- Constructors -- ------------------ function Get_Type return Glib.GType; pragma Import (C, Get_Type, "gtk_paned_get_type"); procedure Gtk_New_Hpaned (Paned : out Gtk_Hpaned); procedure Initialize_Hpaned (Paned : access Gtk_Hpaned_Record'Class); -- The children will be displayed next to each other function Get_Type_Hpaned return Glib.GType; pragma Import (C, Get_Type_Hpaned, "gtk_hpaned_get_type"); procedure Gtk_New_Vpaned (Paned : out Gtk_Vpaned); procedure Initialize_Vpaned (Paned : access Gtk_Vpaned_Record'Class); -- The children will be displayed one on top of the other function Get_Type_Vpaned return Glib.GType; pragma Import (C, Get_Type_Vpaned, "gtk_vpaned_get_type"); ------------- -- Methods -- ------------- procedure Add1 (Paned : access Gtk_Paned_Record; Child : access Gtk.Widget.Gtk_Widget_Record'Class); -- Add the first child of the container. The child will be displayed -- either in the top or in the left pane, depending on the orientation of -- the container. This is equivalent to using the Pack1 procedure with its -- default parameters. procedure Add2 (Paned : access Gtk_Paned_Record; Child : access Gtk.Widget.Gtk_Widget_Record'Class); -- Add the second child of the container. It will be displayed in the -- bottom or right pane, depending on the container's orientation. This is -- equivalent to using Pack2 with its default parameters. procedure Compute_Position (Paned : access Gtk_Paned_Record; Allocation : Gint; Child1_Req : Gint; Child2_Req : Gint); function Get_Child1 (Paned : access Gtk_Paned_Record) return Gtk.Widget.Gtk_Widget; -- Obtains the first child of the paned widget. -- Since: gtk+ 2.4 -- Returns first child, or null if it is not set. function Get_Child2 (Paned : access Gtk_Paned_Record) return Gtk.Widget.Gtk_Widget; -- Obtains the second child of the paned widget. -- Since: gtk+ 2.4 -- Returns second child, or null if it is not set. function Get_Handle_Window (Paned : access Gtk_Paned_Record) return Gdk.Window.Gdk_Window; -- Returns the Gdk.Window.Gdk_Window of the handle. This function is -- useful when handling button or motion events because it enables the -- callback to distinguish between the window of the paned, a child and the -- handle. -- Since: gtk+ 2.20 -- Returns the paned's handle window. function Get_Position (Paned : access Gtk_Paned_Record) return Gint; procedure Set_Position (Paned : access Gtk_Paned_Record; Position : Gint); -- Sets the position of the divider between the two panes. -- "position": pixel position of divider, a negative value means that the -- position is unset. procedure Pack1 (Paned : access Gtk_Paned_Record; Child : access Gtk.Widget.Gtk_Widget_Record'Class; Resize : Boolean := False; Shrink : Boolean := True); -- Add a child to the top or left pane. You can not change dynamically the -- attributes Resize and Shrink. Instead, you have to remove the child from -- the container, and put it back with the new value of the attributes. You -- should also first call Gtk.Object.Ref on the child so as to be sure it -- is not destroyed when you remove it, and Gtk.Object.Unref it at the end. -- See the example in testgtk/ in the GtkAda distribution. procedure Pack2 (Paned : access Gtk_Paned_Record; Child : access Gtk.Widget.Gtk_Widget_Record'Class; Resize : Boolean := False; Shrink : Boolean := False); --------------------- -- Interfaces_Impl -- --------------------- function Get_Orientation (Self : access Gtk_Paned_Record) return Gtk.Enums.Gtk_Orientation; procedure Set_Orientation (Self : access Gtk_Paned_Record; Orientation : Gtk.Enums.Gtk_Orientation); ---------------- -- Interfaces -- ---------------- -- This class implements several interfaces. See Glib.Types -- -- - "Buildable" -- -- - "Orientable" package Implements_Buildable is new Glib.Types.Implements (Gtk.Buildable.Gtk_Buildable, Gtk_Paned_Record, Gtk_Paned); function "+" (Widget : access Gtk_Paned_Record'Class) return Gtk.Buildable.Gtk_Buildable renames Implements_Buildable.To_Interface; function "-" (Interf : Gtk.Buildable.Gtk_Buildable) return Gtk_Paned renames Implements_Buildable.To_Object; package Implements_Orientable is new Glib.Types.Implements (Gtk.Orientable.Gtk_Orientable, Gtk_Paned_Record, Gtk_Paned); function "+" (Widget : access Gtk_Paned_Record'Class) return Gtk.Orientable.Gtk_Orientable renames Implements_Orientable.To_Interface; function "-" (Interf : Gtk.Orientable.Gtk_Orientable) return Gtk_Paned renames Implements_Orientable.To_Object; ---------------- -- Properties -- ---------------- -- The following properties are defined for this widget. See -- Glib.Properties for more information on properties) -- -- Name: Max_Position_Property -- Type: Gint -- Flags: read-write -- The largest possible value for the position property. This property is -- derived from the size and shrinkability of the widget's children. -- -- Name: Min_Position_Property -- Type: Gint -- Flags: read-write -- The smallest possible value for the position property. This property is -- derived from the size and shrinkability of the widget's children. -- -- Name: Position_Property -- Type: Gint -- Flags: read-write -- -- Name: Position_Set_Property -- Type: Boolean -- Flags: read-write -- The following properties are defined for this widget. See -- Glib.Properties for more information on properties) -- The following properties are defined for this widget. See -- Glib.Properties for more information on properties) Max_Position_Property : constant Glib.Properties.Property_Int; Min_Position_Property : constant Glib.Properties.Property_Int; Position_Property : constant Glib.Properties.Property_Int; Position_Set_Property : constant Glib.Properties.Property_Boolean; ------------- -- Signals -- ------------- -- The following new signals are defined for this widget: -- -- "accept-position" -- function Handler -- (Self : access Gtk_Paned_Record'Class) return Boolean; -- The ::accept-position signal is a keybinding signal which gets emitted -- to accept the current position of the handle when moving it using key -- bindings. The default binding for this signal is Return or Space. -- -- "cancel-position" -- function Handler -- (Self : access Gtk_Paned_Record'Class) return Boolean; -- The ::cancel-position signal is a keybinding signal which gets emitted -- to cancel moving the position of the handle using key bindings. The -- position of the handle will be reset to the value prior to moving it. -- The default binding for this signal is Escape. -- -- "cycle-child-focus" -- function Handler -- (Self : access Gtk_Paned_Record'Class; -- Reversed : Boolean) return Boolean; -- -- "reversed": whether cycling backward or forward -- The ::cycle-child-focus signal is a keybinding signal which gets emitted -- to cycle the focus between the children of the paned. The default -- binding is f6. -- -- "cycle-handle-focus" -- function Handler -- (Self : access Gtk_Paned_Record'Class; -- Reversed : Boolean) return Boolean; -- -- "reversed": whether cycling backward or forward -- The ::cycle-handle-focus signal is a keybinding signal which gets emitted -- to cycle whether the paned should grab focus to allow the user to change -- position of the handle by using key bindings. The default binding for -- this signal is f8. -- -- "move-handle" -- function Handler -- (Self : access Gtk_Paned_Record'Class; -- Scroll_Type : Gtk.Enums.Gtk_Scroll_Type) return Boolean; -- -- "scroll_type": a Gtk.Enums.Gtk_Scroll_Type -- The ::move-handle signal is a keybinding signal which gets emitted -- to move the handle when the user is using key bindings to move it. -- -- "toggle-handle-focus" -- function Handler -- (Self : access Gtk_Paned_Record'Class) return Boolean; -- The ::toggle-handle-focus is a keybinding signal which gets emitted -- to accept the current position of the handle and then move focus to the -- next widget in the focus chain. The default binding is Tab. Signal_Accept_Position : constant Glib.Signal_Name := "accept-position"; Signal_Cancel_Position : constant Glib.Signal_Name := "cancel-position"; Signal_Cycle_Child_Focus : constant Glib.Signal_Name := "cycle-child-focus"; Signal_Cycle_Handle_Focus : constant Glib.Signal_Name := "cycle-handle-focus"; Signal_Move_Handle : constant Glib.Signal_Name := "move-handle"; Signal_Toggle_Handle_Focus : constant Glib.Signal_Name := "toggle-handle-focus"; private Max_Position_Property : constant Glib.Properties.Property_Int := Glib.Properties.Build ("max-position"); Min_Position_Property : constant Glib.Properties.Property_Int := Glib.Properties.Build ("min-position"); Position_Property : constant Glib.Properties.Property_Int := Glib.Properties.Build ("position"); Position_Set_Property : constant Glib.Properties.Property_Boolean := Glib.Properties.Build ("position-set"); end Gtk.Paned;