-----------------------------------------------------------------------
-- 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. --
-- --
-- --
-- --
-- --
-- --
-- --
-- --
-----------------------------------------------------------------------
--
-- This object represents an adjustable bounded value. It is used in many
-- other widgets that have such internal values, like Gtk_Scrollbar,
-- Gtk_Spin_Button, Gtk_Range, ... Modifying the value of these widgets is
-- done through their associated adjustments.
--
-- The modification of the value is left to the user, who should call
-- Value_Changed or Changed to emit the relevant signals.
--
-- The meaning of the most important fields can be explained on the following
-- figure (imagine this is a scrollbar):
--
-- [-------|=================|-------------------]
--
-- lower value value + page_size upper
--
--
-- Scrolling
pragma Warnings (Off, "*is already use-visible*");
with Glib; use Glib;
with Glib.Properties; use Glib.Properties;
with Gtk.Object; use Gtk.Object;
package Gtk.Adjustment is
type Gtk_Adjustment_Record is new Gtk_Object_Record with null record;
type Gtk_Adjustment is access all Gtk_Adjustment_Record'Class;
------------------
-- Constructors --
------------------
procedure Gtk_New
(Adjustment : out Gtk_Adjustment;
Value : Gdouble;
Lower : Gdouble;
Upper : Gdouble;
Step_Increment : Gdouble;
Page_Increment : Gdouble;
Page_Size : Gdouble := 0.0);
procedure Initialize
(Adjustment : access Gtk_Adjustment_Record'Class;
Value : Gdouble;
Lower : Gdouble;
Upper : Gdouble;
Step_Increment : Gdouble;
Page_Increment : Gdouble;
Page_Size : Gdouble := 0.0);
-- Create a new adjustment. Value is the initial value of the adjustment.
-- It must be in the range (Lower .. Upper) and the adjustment's value will
-- never be outside this range. Step_Increment is the value used to make
-- minor adjustments, such as when the user clicks on the arrows of a
-- scrollbar. Page_Increment is used to make major adjustments, such as
-- when the user clicks in the through on a scrollbar. Page_Size is
-- deprecated, use the default value.
function Get_Type return Glib.GType;
pragma Import (C, Get_Type, "gtk_adjustment_get_type");
-------------
-- Methods --
-------------
procedure Changed (Adjustment : access Gtk_Adjustment_Record);
procedure Clamp_Page
(Adjustment : access Gtk_Adjustment_Record;
Lower : Gdouble;
Upper : Gdouble);
-- Update the Adjustment value to ensure that the range between Lower and
-- Upper is in the current page (i.e. between value and value + page_size).
-- If the range is larger than the page size, then only the start of it
-- will be in the current page. A "value_changed" signal will be emitted if
-- the value is changed.
procedure Configure
(Adjustment : access Gtk_Adjustment_Record;
Value : Gdouble;
Lower : Gdouble;
Upper : Gdouble;
Step_Increment : Gdouble;
Page_Increment : Gdouble;
Page_Size : Gdouble);
-- Sets all properties of the adjustment at once. Use this function to
-- avoid multiple emissions of the "changed" signal. See
-- Gtk.Adjustment.Set_Lower for an alternative way of compressing multiple
-- emissions of "changed" into one.
-- Since: gtk+ 2.14
-- "value": the new value
-- "lower": the new minimum value
-- "upper": the new maximum value
-- "step_increment": the new step increment
-- "page_increment": the new page increment
-- "page_size": the new page size
function Get_Lower
(Adjustment : access Gtk_Adjustment_Record) return Gdouble;
procedure Set_Lower
(Adjustment : access Gtk_Adjustment_Record;
Lower : Gdouble);
-- Sets the minimum value of the adjustment. When setting multiple
-- adjustment properties via their individual setters, multiple "changed"
-- signals will be emitted. However, since the emission of the "changed"
-- signal is tied to the emission of the "GObject::notify" signals of the
-- changed properties, it's possible to compress the "changed" signals into
-- one by calling g_object_freeze_notify and g_object_thaw_notify around
-- the calls to the individual setters. Alternatively, using a single
-- g_object_set for all the properties to change, or using
-- Gtk.Adjustment.Configure has the same effect of compressing "changed"
-- emissions.
-- Since: gtk+ 2.14
-- "lower": the new minimum value
function Get_Page_Increment
(Adjustment : access Gtk_Adjustment_Record) return Gdouble;
procedure Set_Page_Increment
(Adjustment : access Gtk_Adjustment_Record;
Page_Increment : Gdouble);
-- Sets the page increment of the adjustment. See Gtk.Adjustment.Set_Lower
-- about how to compress multiple emissions of the "changed" signal when
-- setting multiple adjustment properties.
-- Since: gtk+ 2.14
-- "page_increment": the new page increment
function Get_Page_Size
(Adjustment : access Gtk_Adjustment_Record) return Gdouble;
procedure Set_Page_Size
(Adjustment : access Gtk_Adjustment_Record;
Page_Size : Gdouble);
-- Sets the page size of the adjustment. See Gtk.Adjustment.Set_Lower
-- about how to compress multiple emissions of the "changed" signal when
-- setting multiple adjustment properties.
-- Since: gtk+ 2.14
-- "page_size": the new page size
function Get_Step_Increment
(Adjustment : access Gtk_Adjustment_Record) return Gdouble;
procedure Set_Step_Increment
(Adjustment : access Gtk_Adjustment_Record;
Step_Increment : Gdouble);
-- Sets the step increment of the adjustment. See Gtk.Adjustment.Set_Lower
-- about how to compress multiple emissions of the "changed" signal when
-- setting multiple adjustment properties.
-- Since: gtk+ 2.14
-- "step_increment": the new step increment
function Get_Upper
(Adjustment : access Gtk_Adjustment_Record) return Gdouble;
procedure Set_Upper
(Adjustment : access Gtk_Adjustment_Record;
Upper : Gdouble);
-- Sets the maximum value of the adjustment. Note that values will be
-- restricted by upper - page-size if the page-size
-- property is nonzero. See Gtk.Adjustment.Set_Lower about how to compress
-- multiple emissions of the "changed" signal when setting multiple
-- adjustment properties.
-- Since: gtk+ 2.14
-- "upper": the new maximum value
function Get_Value
(Adjustment : access Gtk_Adjustment_Record) return Gdouble;
procedure Set_Value
(Adjustment : access Gtk_Adjustment_Record;
Value : Gdouble);
procedure Value_Changed (Adjustment : access Gtk_Adjustment_Record);
----------------
-- Properties --
----------------
-- The following properties are defined for this widget. See
-- Glib.Properties for more information on properties)
--
-- Name: Lower_Property
-- Type: Gdouble
-- Flags: read-write
-- The minimum value of the adjustment.
--
-- Name: Page_Increment_Property
-- Type: Gdouble
-- Flags: read-write
-- The page increment of the adjustment.
--
-- Name: Page_Size_Property
-- Type: Gdouble
-- Flags: read-write
-- The page size of the adjustment. Note that the page-size is irrelevant
-- and should be set to zero if the adjustment is used for a simple scalar
-- value, e.g. in a Gtk.Spinbutton.Gtk_Spinbutton.
--
-- Name: Step_Increment_Property
-- Type: Gdouble
-- Flags: read-write
-- The step increment of the adjustment.
--
-- Name: Upper_Property
-- Type: Gdouble
-- Flags: read-write
-- The maximum value of the adjustment. Note that values will be
-- restricted by upper - page-size if the page-size
-- property is nonzero.
--
-- Name: Value_Property
-- Type: Gdouble
-- Flags: read-write
-- The value of the adjustment.
Lower_Property : constant Glib.Properties.Property_Double;
Page_Increment_Property : constant Glib.Properties.Property_Double;
Page_Size_Property : constant Glib.Properties.Property_Double;
Step_Increment_Property : constant Glib.Properties.Property_Double;
Upper_Property : constant Glib.Properties.Property_Double;
Value_Property : constant Glib.Properties.Property_Double;
-------------
-- Signals --
-------------
-- The following new signals are defined for this widget:
--
-- "changed"
-- procedure Handler (Self : access Gtk_Adjustment_Record'Class);
--
-- "value-changed"
-- procedure Handler (Self : access Gtk_Adjustment_Record'Class);
Signal_Changed : constant Glib.Signal_Name := "changed";
Signal_Value_Changed : constant Glib.Signal_Name := "value-changed";
private
Lower_Property : constant Glib.Properties.Property_Double :=
Glib.Properties.Build ("lower");
Page_Increment_Property : constant Glib.Properties.Property_Double :=
Glib.Properties.Build ("page-increment");
Page_Size_Property : constant Glib.Properties.Property_Double :=
Glib.Properties.Build ("page-size");
Step_Increment_Property : constant Glib.Properties.Property_Double :=
Glib.Properties.Build ("step-increment");
Upper_Property : constant Glib.Properties.Property_Double :=
Glib.Properties.Build ("upper");
Value_Property : constant Glib.Properties.Property_Double :=
Glib.Properties.Build ("value");
end Gtk.Adjustment;