-----------------------------------------------------------------------
-- 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 widget provides a low level graphical representation of a range of
-- values. It is used by other widgets such as Gtk_Scale and Gtk_Scrollbar.
--
--
-- gtk-range
-- create_range.adb
pragma Warnings (Off, "*is already use-visible*");
with Gdk.Rectangle; use Gdk.Rectangle;
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.Enums; use Gtk.Enums;
with Gtk.Orientable; use Gtk.Orientable;
with Gtk.Widget; use Gtk.Widget;
package Gtk.GRange is
type Gtk_Range_Record is new Gtk_Widget_Record with null record;
type Gtk_Range is access all Gtk_Range_Record'Class;
------------------
-- Constructors --
------------------
function Get_Type return Glib.GType;
pragma Import (C, Get_Type, "gtk_range_get_type");
-------------
-- Methods --
-------------
function Get_Adjustment
(The_Range : access Gtk_Range_Record)
return Gtk.Adjustment.Gtk_Adjustment;
procedure Set_Adjustment
(The_Range : access Gtk_Range_Record;
Adjustment : access Gtk.Adjustment.Gtk_Adjustment_Record'Class);
-- Sets the adjustment to be used as the "model" object for this range
-- widget. The adjustment indicates the current range value, the minimum
-- and maximum range values, the step/page increments used for keybindings
-- and scrolling, and the page size. The page size is normally 0 for
-- Gtk.Scale.Gtk_Scale and nonzero for Gtk.Scrollbar.Gtk_Scrollbar, and
-- indicates the size of the visible area of the widget being scrolled. The
-- page size affects the size of the scrollbar slider.
-- "adjustment": a Gtk.Adjustment.Gtk_Adjustment
function Get_Fill_Level
(The_Range : access Gtk_Range_Record) return Gdouble;
procedure Set_Fill_Level
(The_Range : access Gtk_Range_Record;
Fill_Level : Gdouble);
-- Set the new position of the fill level indicator. The "fill level" is
-- probably best described by its most prominent use case, which is an
-- indicator for the amount of pre-buffering in a streaming media player.
-- In that use case, the value of the range would indicate the current play
-- position, and the fill level would be the position up to which the
-- file/stream has been downloaded. This amount of prebuffering can be
-- displayed on the range's trough and is themeable separately from the
-- trough. To enable fill level display, use
-- Gtk.GRange.Set_Show_Fill_Level. The range defaults to not showing the
-- fill level. Additionally, it's possible to restrict the range's slider
-- position to values which are smaller than the fill level. This is
-- controller by Gtk.GRange.Set_Restrict_To_Fill_Level and is by default
-- enabled.
-- Since: gtk+ 2.12
-- "fill_level": the new position of the fill level indicator
function Get_Flippable
(The_Range : access Gtk_Range_Record) return Boolean;
procedure Set_Flippable
(The_Range : access Gtk_Range_Record;
Flippable : Boolean);
-- If a range is flippable, it will switch its direction if it is
-- horizontal and its direction is %GTK_TEXT_DIR_RTL. See
-- Gtk.Widget.Get_Direction.
-- Since: gtk+ 2.18
-- "flippable": True to make the range flippable
function Get_Inverted
(The_Range : access Gtk_Range_Record) return Boolean;
procedure Set_Inverted
(The_Range : access Gtk_Range_Record;
Setting : Boolean);
-- Ranges normally move from lower to higher values as the slider moves
-- from top to bottom or left to right. Inverted ranges have higher values
-- at the top or on the right rather than on the bottom or left.
-- "setting": True to invert the range
function Get_Lower_Stepper_Sensitivity
(The_Range : access Gtk_Range_Record)
return Gtk.Enums.Gtk_Sensitivity_Type;
procedure Set_Lower_Stepper_Sensitivity
(The_Range : access Gtk_Range_Record;
Sensitivity : Gtk.Enums.Gtk_Sensitivity_Type);
-- Sets the sensitivity policy for the stepper that points to the 'lower'
-- end of the GtkRange's adjustment.
-- Since: gtk+ 2.10
-- "sensitivity": the lower stepper's sensitivity policy.
function Get_Min_Slider_Size
(The_Range : access Gtk_Range_Record) return Gint;
procedure Set_Min_Slider_Size
(The_Range : access Gtk_Range_Record;
Min_Size : Boolean);
-- Sets the minimum size of the range's slider. This function is useful
-- mainly for Gtk.GRange.Gtk_Range subclasses.
-- Since: gtk+ 2.20
-- "min_size": The slider's minimum size
procedure Get_Range_Rect
(The_Range : access Gtk_Range_Record;
Range_Rect : out Gdk.Rectangle.Gdk_Rectangle);
-- This function returns the area that contains the range's trough and its
-- steppers, in widget->window coordinates. This function is useful mainly
-- for Gtk.GRange.Gtk_Range subclasses.
-- Since: gtk+ 2.20
-- "range_rect": return location for the range rectangle
function Get_Restrict_To_Fill_Level
(The_Range : access Gtk_Range_Record) return Boolean;
procedure Set_Restrict_To_Fill_Level
(The_Range : access Gtk_Range_Record;
Restrict_To_Fill_Level : Boolean);
-- Sets whether the slider is restricted to the fill level. See
-- Gtk.GRange.Set_Fill_Level for a general description of the fill level
-- concept.
-- Since: gtk+ 2.12
-- "restrict_to_fill_level": Whether the fill level restricts slider
-- movement.
function Get_Round_Digits
(The_Range : access Gtk_Range_Record) return Gint;
procedure Set_Round_Digits
(The_Range : access Gtk_Range_Record;
Round_Digits : Gint);
-- Sets the number of digits to round the value to when it changes. See
-- Gtk.GRange.Gtk_Range::change-value.
-- Since: gtk+ 2.24
-- "round_digits": the precision in digits, or -1
function Get_Show_Fill_Level
(The_Range : access Gtk_Range_Record) return Boolean;
procedure Set_Show_Fill_Level
(The_Range : access Gtk_Range_Record;
Show_Fill_Level : Boolean);
-- Sets whether a graphical fill level is show on the trough. See
-- Gtk.GRange.Set_Fill_Level for a general description of the fill level
-- concept.
-- Since: gtk+ 2.12
-- "show_fill_level": Whether a fill level indicator graphics is shown.
procedure Get_Slider_Range
(The_Range : access Gtk_Range_Record;
Slider_Start : out Gint;
Slider_End : out Gint);
-- This function returns sliders range along the long dimension, in
-- widget->window coordinates. This function is useful mainly for
-- Gtk.GRange.Gtk_Range subclasses.
-- Since: gtk+ 2.20
-- "slider_start": return location for the slider's start, or null
-- "slider_end": return location for the slider's end, or null
function Get_Slider_Size_Fixed
(The_Range : access Gtk_Range_Record) return Boolean;
procedure Set_Slider_Size_Fixed
(The_Range : access Gtk_Range_Record;
Size_Fixed : Boolean);
-- Sets whether the range's slider has a fixed size, or a size that
-- depends on it's adjustment's page size. This function is useful mainly
-- for Gtk.GRange.Gtk_Range subclasses.
-- Since: gtk+ 2.20
-- "size_fixed": True to make the slider size constant
function Get_Update_Policy
(The_Range : access Gtk_Range_Record) return Gtk.Enums.Gtk_Update_Type;
pragma Obsolescent (Get_Update_Policy);
procedure Set_Update_Policy
(The_Range : access Gtk_Range_Record;
Policy : Gtk.Enums.Gtk_Update_Type);
pragma Obsolescent (Set_Update_Policy);
-- Sets the update policy for the range. GTK_UPDATE_CONTINUOUS means that
-- anytime the range slider is moved, the range value will change and the
-- value_changed signal will be emitted. GTK_UPDATE_DELAYED means that the
-- value will be updated after a brief timeout where no slider motion
-- occurs, so updates are spaced by a short time rather than continuous.
-- GTK_UPDATE_DISCONTINUOUS means that the value will only be updated when
-- the user releases the button and ends the slider drag operation.
-- updates, you need to code it yourself.
-- Deprecated since 2.24, There is no replacement. If you require delayed
-- "policy": update policy
function Get_Upper_Stepper_Sensitivity
(The_Range : access Gtk_Range_Record)
return Gtk.Enums.Gtk_Sensitivity_Type;
procedure Set_Upper_Stepper_Sensitivity
(The_Range : access Gtk_Range_Record;
Sensitivity : Gtk.Enums.Gtk_Sensitivity_Type);
-- Sets the sensitivity policy for the stepper that points to the 'upper'
-- end of the GtkRange's adjustment.
-- Since: gtk+ 2.10
-- "sensitivity": the upper stepper's sensitivity policy.
function Get_Value (The_Range : access Gtk_Range_Record) return Gdouble;
procedure Set_Value
(The_Range : access Gtk_Range_Record;
Value : Gdouble);
-- Sets the current value of the range; if the value is outside the
-- minimum or maximum range values, it will be clamped to fit inside them.
-- The range emits the Gtk.GRange.Gtk_Range::value-changed signal if the
-- value changes.
-- "value": new value of the range
procedure Set_Increments
(The_Range : access Gtk_Range_Record;
Step : Gdouble;
Page : Gdouble);
-- Sets the step and page sizes for the range. The step size is used when
-- the user clicks the Gtk.Scrollbar.Gtk_Scrollbar arrows or moves
-- Gtk.Scale.Gtk_Scale via arrow keys. The page size is used for example
-- when moving via Page Up or Page Down keys.
-- "step": step size
-- "page": page size
procedure Set_Range
(The_Range : access Gtk_Range_Record;
Min : Gdouble;
Max : Gdouble);
-- Sets the allowable values in the Gtk.GRange.Gtk_Range, and clamps the
-- range value to be between Min and Max. (If the range has a non-zero page
-- size, it is clamped between Min and Max - page-size.)
-- "min": minimum range value
-- "max": maximum range value
---------------------
-- Interfaces_Impl --
---------------------
function Get_Orientation
(Self : access Gtk_Range_Record) return Gtk.Enums.Gtk_Orientation;
procedure Set_Orientation
(Self : access Gtk_Range_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_Range_Record, Gtk_Range);
function "+"
(Widget : access Gtk_Range_Record'Class)
return Gtk.Buildable.Gtk_Buildable
renames Implements_Buildable.To_Interface;
function "-"
(Interf : Gtk.Buildable.Gtk_Buildable)
return Gtk_Range
renames Implements_Buildable.To_Object;
package Implements_Orientable is new Glib.Types.Implements
(Gtk.Orientable.Gtk_Orientable, Gtk_Range_Record, Gtk_Range);
function "+"
(Widget : access Gtk_Range_Record'Class)
return Gtk.Orientable.Gtk_Orientable
renames Implements_Orientable.To_Interface;
function "-"
(Interf : Gtk.Orientable.Gtk_Orientable)
return Gtk_Range
renames Implements_Orientable.To_Object;
----------------
-- Properties --
----------------
-- The following properties are defined for this widget. See
-- Glib.Properties for more information on properties)
--
-- Name: Adjustment_Property
-- Type: Gtk.Adjustment.Gtk_Adjustment
-- Flags: read-write
--
-- Name: Fill_Level_Property
-- Type: Gdouble
-- Flags: read-write
-- The fill level (e.g. prebuffering of a network stream). See
-- Gtk.GRange.Set_Fill_Level.
--
-- Name: Inverted_Property
-- Type: Boolean
-- Flags: read-write
--
-- Name: Lower_Stepper_Sensitivity_Property
-- Type: Gtk.Enums.Gtk_Sensitivity_Type
-- Flags: read-write
--
-- Name: Restrict_To_Fill_Level_Property
-- Type: Boolean
-- Flags: read-write
-- The restrict-to-fill-level property controls whether slider movement is
-- restricted to an upper boundary set by the fill level. See
-- Gtk.GRange.Set_Restrict_To_Fill_Level.
--
-- Name: Round_Digits_Property
-- Type: Gint
-- Flags: read-write
-- The number of digits to round the value to when it changes, or -1. See
-- Gtk.GRange.Gtk_Range::change-value.
--
-- Name: Show_Fill_Level_Property
-- Type: Boolean
-- Flags: read-write
-- The show-fill-level property controls whether fill level indicator
-- graphics are displayed on the trough. See
-- Gtk.GRange.Set_Show_Fill_Level.
--
-- Name: Update_Policy_Property
-- Type: Gtk.Enums.Gtk_Update_Type
-- Flags: read-write
--
-- Name: Upper_Stepper_Sensitivity_Property
-- Type: Gtk.Enums.Gtk_Sensitivity_Type
-- Flags: read-write
Adjustment_Property : constant Glib.Properties.Property_Object;
Fill_Level_Property : constant Glib.Properties.Property_Double;
Inverted_Property : constant Glib.Properties.Property_Boolean;
Lower_Stepper_Sensitivity_Property : constant Gtk.Enums.Property_Gtk_Sensitivity_Type;
Restrict_To_Fill_Level_Property : constant Glib.Properties.Property_Boolean;
Round_Digits_Property : constant Glib.Properties.Property_Int;
Show_Fill_Level_Property : constant Glib.Properties.Property_Boolean;
Update_Policy_Property : constant Gtk.Enums.Property_Gtk_Update_Type;
Upper_Stepper_Sensitivity_Property : constant Gtk.Enums.Property_Gtk_Sensitivity_Type;
-------------
-- Signals --
-------------
-- The following new signals are defined for this widget:
--
-- "adjust-bounds"
-- procedure Handler
-- (Self : access Gtk_Range_Record'Class;
-- Object : Gdouble);
--
-- "change-value"
-- function Handler
-- (Self : access Gtk_Range_Record'Class;
-- Scroll : Gtk.Enums.Gtk_Scroll_Type;
-- Value : Gdouble) return Boolean;
-- -- "scroll": the type of scroll action that was performed
-- -- "value": the new value resulting from the scroll action
-- The ::change-value signal is emitted when a scroll action is performed
-- on a range. It allows an application to determine the type of scroll
-- event that occurred and the resultant new value. The application can
-- handle the event itself and return True to prevent further processing.
-- Or, by returning False, it can pass the event to other handlers until
-- the default GTK+ handler is reached. The value parameter is unrounded.
-- An application that overrides the ::change-value signal is responsible
-- for clamping the value to the desired number of decimal digits; the
-- default GTK+ handler clamps the value based on
-- Gtk.GRange.Gtk_Range:round_digits. It is not possible to use delayed
-- update policies in an overridden ::change-value handler.
-- Returns True to prevent other handlers from being invoked for the
-- signal, False to propagate the signal further
--
-- "move-slider"
-- procedure Handler
-- (Self : access Gtk_Range_Record'Class;
-- Step : Gtk.Enums.Gtk_Scroll_Type);
-- -- "step": how to move the slider
-- Virtual function that moves the slider. Used for keybindings.
--
-- "value-changed"
-- procedure Handler (Self : access Gtk_Range_Record'Class);
-- Emitted when the range value changes.
Signal_Adjust_Bounds : constant Glib.Signal_Name := "adjust-bounds";
Signal_Change_Value : constant Glib.Signal_Name := "change-value";
Signal_Move_Slider : constant Glib.Signal_Name := "move-slider";
Signal_Value_Changed : constant Glib.Signal_Name := "value-changed";
private
Adjustment_Property : constant Glib.Properties.Property_Object :=
Glib.Properties.Build ("adjustment");
Fill_Level_Property : constant Glib.Properties.Property_Double :=
Glib.Properties.Build ("fill-level");
Inverted_Property : constant Glib.Properties.Property_Boolean :=
Glib.Properties.Build ("inverted");
Lower_Stepper_Sensitivity_Property : constant Gtk.Enums.Property_Gtk_Sensitivity_Type :=
Gtk.Enums.Build ("lower-stepper-sensitivity");
Restrict_To_Fill_Level_Property : constant Glib.Properties.Property_Boolean :=
Glib.Properties.Build ("restrict-to-fill-level");
Round_Digits_Property : constant Glib.Properties.Property_Int :=
Glib.Properties.Build ("round-digits");
Show_Fill_Level_Property : constant Glib.Properties.Property_Boolean :=
Glib.Properties.Build ("show-fill-level");
Update_Policy_Property : constant Gtk.Enums.Property_Gtk_Update_Type :=
Gtk.Enums.Build ("update-policy");
Upper_Stepper_Sensitivity_Property : constant Gtk.Enums.Property_Gtk_Sensitivity_Type :=
Gtk.Enums.Build ("upper-stepper-sensitivity");
end Gtk.GRange;