------------------------------------------------------------------------------
-- --
-- Copyright (C) 1998-2000 E. Briot, J. Brobecker and A. Charlet --
-- Copyright (C) 2000-2014, AdaCore --
-- --
-- This library is free software; you can redistribute it and/or modify it --
-- under terms of the GNU General Public License as published by the Free --
-- Software Foundation; either version 3, 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 MERCHAN- --
-- TABILITY or FITNESS FOR A PARTICULAR PURPOSE. --
-- --
-- As a special exception under Section 7 of GPL version 3, you are granted --
-- additional permissions described in the GCC Runtime Library Exception, --
-- version 3.1, as published by the Free Software Foundation. --
-- --
-- You should have received a copy of the GNU General Public License and --
-- a copy of the GCC Runtime Library Exception along with this program; --
-- see the files COPYING3 and COPYING.RUNTIME respectively. If not, see --
-- <http://www.gnu.org/licenses/>. --
-- --
------------------------------------------------------------------------------
-- <description>
-- The Gtk.Adjustment.Gtk_Adjustment object represents a value which has an
-- associated lower and upper bound, together with step and page increments,
-- and a page size. It is used within several GTK+ widgets, including
-- Gtk.Spin_Button.Gtk_Spin_Button, Gtk.Viewport.Gtk_Viewport, and
-- Gtk.GRange.Gtk_Range (which is a base class for
-- Gtk.Scrollbar.Gtk_Hscrollbar, Gtk.Scrollbar.Gtk_Vscrollbar,
-- Gtk.Scale.Gtk_Hscale, and Gtk.Scale.Gtk_Vscale).
--
-- The Gtk.Adjustment.Gtk_Adjustment object does not update the value itself.
-- Instead it is left up to the owner of the Gtk.Adjustment.Gtk_Adjustment to
-- control the value.
--
-- The owner of the Gtk.Adjustment.Gtk_Adjustment typically calls the
-- Gtk.Adjustment.Value_Changed and Gtk.Adjustment.Changed functions after
-- changing the value and its bounds. This results in the emission of the
-- Gtk.Adjustment.Gtk_Adjustment::value_changed or
-- Gtk.Adjustment.Gtk_Adjustment::changed signal respectively.
--
-- </description>
-- <description>
-- 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
--
-- </description>
-- <group>Scrolling</group>
pragma Ada_2005;
pragma Warnings (Off, "*is already use-visible*");
with Glib; use Glib;
with Glib.Object; use Glib.Object;
with Glib.Properties; use Glib.Properties;
package Gtk.Adjustment is
type Gtk_Adjustment_Record is new GObject_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 : not null 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.
-- "value": the initial value.
-- "lower": the minimum value.
-- "upper": the maximum value.
-- "step_increment": the step increment.
-- "page_increment": the page increment.
-- "page_size": the page size.
function Gtk_Adjustment_New
(Value : Gdouble;
Lower : Gdouble;
Upper : Gdouble;
Step_Increment : Gdouble;
Page_Increment : Gdouble;
Page_Size : Gdouble := 0.0) return Gtk_Adjustment;
-- 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.
-- "value": the initial value.
-- "lower": the minimum value.
-- "upper": the maximum value.
-- "step_increment": the step increment.
-- "page_increment": the page increment.
-- "page_size": the page size.
function Get_Type return Glib.GType;
pragma Import (C, Get_Type, "gtk_adjustment_get_type");
-------------
-- Methods --
-------------
procedure Changed (Adjustment : not null access Gtk_Adjustment_Record);
-- Emits a Gtk.Adjustment.Gtk_Adjustment::changed signal from the
-- Gtk.Adjustment.Gtk_Adjustment. This is typically called by the owner of
-- the Gtk.Adjustment.Gtk_Adjustment after it has changed any of the
-- Gtk.Adjustment.Gtk_Adjustment properties other than the value.
procedure Clamp_Page
(Adjustment : not null 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.
-- "lower": the lower value.
-- "upper": the upper value.
procedure Configure
(Adjustment : not null 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
-- Gtk.Adjustment.Gtk_Adjustment::changed signal. See
-- Gtk.Adjustment.Set_Lower for an alternative way of compressing multiple
-- emissions of Gtk.Adjustment.Gtk_Adjustment::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 : not null access Gtk_Adjustment_Record) return Gdouble;
-- Retrieves the minimum value of the adjustment.
-- Since: gtk+ 2.14
procedure Set_Lower
(Adjustment : not null access Gtk_Adjustment_Record;
Lower : Gdouble);
-- Sets the minimum value of the adjustment.
-- When setting multiple adjustment properties via their individual
-- setters, multiple Gtk.Adjustment.Gtk_Adjustment::changed signals will be
-- emitted. However, since the emission of the
-- Gtk.Adjustment.Gtk_Adjustment::changed signal is tied to the emission of
-- the Glib.Object.GObject::notify signals of the changed properties, it's
-- possible to compress the Gtk.Adjustment.Gtk_Adjustment::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 Gtk.Adjustment.Gtk_Adjustment::changed emissions.
-- Since: gtk+ 2.14
-- "lower": the new minimum value
function Get_Minimum_Increment
(Adjustment : not null access Gtk_Adjustment_Record) return Gdouble;
-- Gets the smaller of step increment and page increment.
-- Since: gtk+ 3.2
function Get_Page_Increment
(Adjustment : not null access Gtk_Adjustment_Record) return Gdouble;
-- Retrieves the page increment of the adjustment.
-- Since: gtk+ 2.14
procedure Set_Page_Increment
(Adjustment : not null 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 Gtk.Adjustment.Gtk_Adjustment::changed signal when setting
-- multiple adjustment properties.
-- Since: gtk+ 2.14
-- "page_increment": the new page increment
function Get_Page_Size
(Adjustment : not null access Gtk_Adjustment_Record) return Gdouble;
-- Retrieves the page size of the adjustment.
-- Since: gtk+ 2.14
procedure Set_Page_Size
(Adjustment : not null 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 GtkAdjustment::changed signal when setting multiple adjustment
-- properties.
-- Since: gtk+ 2.14
-- "page_size": the new page size
function Get_Step_Increment
(Adjustment : not null access Gtk_Adjustment_Record) return Gdouble;
-- Retrieves the step increment of the adjustment.
-- Since: gtk+ 2.14
procedure Set_Step_Increment
(Adjustment : not null 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 Gtk.Adjustment.Gtk_Adjustment::changed signal when setting
-- multiple adjustment properties.
-- Since: gtk+ 2.14
-- "step_increment": the new step increment
function Get_Upper
(Adjustment : not null access Gtk_Adjustment_Record) return Gdouble;
-- Retrieves the maximum value of the adjustment.
-- Since: gtk+ 2.14
procedure Set_Upper
(Adjustment : not null 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 Gtk.Adjustment.Gtk_Adjustment::changed signal when setting
-- multiple adjustment properties.
-- Since: gtk+ 2.14
-- "upper": the new maximum value
function Get_Value
(Adjustment : not null access Gtk_Adjustment_Record) return Gdouble;
-- Gets the current value of the adjustment. See gtk_adjustment_set_value
-- ().
procedure Set_Value
(Adjustment : not null access Gtk_Adjustment_Record;
Value : Gdouble);
-- Sets the Gtk.Adjustment.Gtk_Adjustment value. The value is clamped to
-- lie between Gtk.Adjustment.Gtk_Adjustment:lower and
-- Gtk.Adjustment.Gtk_Adjustment:upper.
-- Note that for adjustments which are used in a
-- Gtk.Scrollbar.Gtk_Scrollbar, the effective range of allowed values goes
-- from Gtk.Adjustment.Gtk_Adjustment:lower to
-- Gtk.Adjustment.Gtk_Adjustment:upper -
-- Gtk.Adjustment.Gtk_Adjustment:page_size.
-- "value": the new value.
procedure Value_Changed
(Adjustment : not null access Gtk_Adjustment_Record);
-- Emits a Gtk.Adjustment.Gtk_Adjustment::value_changed signal from the
-- Gtk.Adjustment.Gtk_Adjustment. This is typically called by the owner of
-- the Gtk.Adjustment.Gtk_Adjustment after it has changed the
-- Gtk.Adjustment.Gtk_Adjustment:value property.
----------------
-- Properties --
----------------
-- The following properties are defined for this widget. See
-- Glib.Properties for more information on properties)
Lower_Property : constant Glib.Properties.Property_Double;
-- Type: Gdouble
-- The minimum value of the adjustment.
Page_Increment_Property : constant Glib.Properties.Property_Double;
-- Type: Gdouble
-- The page increment of the adjustment.
Page_Size_Property : constant Glib.Properties.Property_Double;
-- Type: Gdouble
-- 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.Spin_Button.Gtk_Spin_Button.
Step_Increment_Property : constant Glib.Properties.Property_Double;
-- Type: Gdouble
-- The step increment of the adjustment.
Upper_Property : constant Glib.Properties.Property_Double;
-- Type: Gdouble
-- The maximum value of the adjustment. Note that values will be
-- restricted by 'upper - page-size' if the page-size property is nonzero.
Value_Property : constant Glib.Properties.Property_Double;
-- Type: Gdouble
-- The value of the adjustment.
-------------
-- Signals --
-------------
type Cb_Gtk_Adjustment_Void is not null access procedure (Self : access Gtk_Adjustment_Record'Class);
type Cb_GObject_Void is not null access procedure
(Self : access Glib.Object.GObject_Record'Class);
Signal_Changed : constant Glib.Signal_Name := "changed";
procedure On_Changed
(Self : not null access Gtk_Adjustment_Record;
Call : Cb_Gtk_Adjustment_Void;
After : Boolean := False);
procedure On_Changed
(Self : not null access Gtk_Adjustment_Record;
Call : Cb_GObject_Void;
Slot : not null access Glib.Object.GObject_Record'Class;
After : Boolean := False);
-- Emitted when one or more of the Gtk.Adjustment.Gtk_Adjustment
-- properties have been changed, other than the
-- Gtk.Adjustment.Gtk_Adjustment:value property.
Signal_Value_Changed : constant Glib.Signal_Name := "value-changed";
procedure On_Value_Changed
(Self : not null access Gtk_Adjustment_Record;
Call : Cb_Gtk_Adjustment_Void;
After : Boolean := False);
procedure On_Value_Changed
(Self : not null access Gtk_Adjustment_Record;
Call : Cb_GObject_Void;
Slot : not null access Glib.Object.GObject_Record'Class;
After : Boolean := False);
-- Emitted when the Gtk.Adjustment.Gtk_Adjustment:value property has been
-- changed.
private
Value_Property : constant Glib.Properties.Property_Double :=
Glib.Properties.Build ("value");
Upper_Property : constant Glib.Properties.Property_Double :=
Glib.Properties.Build ("upper");
Step_Increment_Property : constant Glib.Properties.Property_Double :=
Glib.Properties.Build ("step-increment");
Page_Size_Property : constant Glib.Properties.Property_Double :=
Glib.Properties.Build ("page-size");
Page_Increment_Property : constant Glib.Properties.Property_Double :=
Glib.Properties.Build ("page-increment");
Lower_Property : constant Glib.Properties.Property_Double :=
Glib.Properties.Build ("lower");
end Gtk.Adjustment;