----------------------------------------------------------------------- -- GtkAda - Ada95 binding for Gtk+/Gnome -- -- -- -- Copyright (C) 1998-2000 E. Briot, J. Brobecker and A. Charlet -- -- Copyright (C) 2000-2007 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_Spin_Button is a single line text editing widget for text that -- represents a number. At the right hand side of the text line there are -- small up- and down arrow buttons for incrementing or decrementing -- (spinning) the number within a given range. -- It allows the value to have zero or a number of decimal places and -- to be incremented/decremented in configurable steps. -- The action of holding down one of the buttons optionally results in an -- acceleration of change in the value according to how long it is -- depressed. -- -- See Gtk.GEntry for a text editing widget without spin buttons. -- -- 2.8.17 -- Numeric/Text Data Entry -- gtk-spin_button -- create_spin.adb with Glib.Generic_Properties; with Glib.Properties; with Gtk.Adjustment; with Gtk.GEntry; package Gtk.Spin_Button is type Gtk_Spin_Button_Record is new Gtk.GEntry.Gtk_Entry_Record with private; type Gtk_Spin_Button is access all Gtk_Spin_Button_Record'Class; type Gtk_Spin_Button_Update_Policy is (Update_Always, -- Update always, errors are ignored while converting text into a -- numeric value. Update_If_Valid -- The spin button's value gets changed if the text input is a numeric -- value that is within the range specified by the adjustment. ); -- Determine the update policy of the spin button which affects the -- behaviour when parsing inserted text and syncing its value with the -- values of the adjustment. pragma Convention (C, Gtk_Spin_Button_Update_Policy); type Gtk_Spin_Type is (Spin_Step_Forward, Spin_Step_Backward, Spin_Page_Forward, Spin_Page_Backward, Spin_Home, Spin_End, Spin_User_Defined); -- Determine how manual spinning should be done. -- See also the Spin procedure. pragma Convention (C, Gtk_Spin_Type); procedure Gtk_New (Spin_Button : out Gtk_Spin_Button; Adjustment : Gtk.Adjustment.Gtk_Adjustment; Climb_Rate : Gdouble; The_Digits : Gint); -- Create a spin button with the given parameters. -- Adjustment contains the range, current value, step value and -- "page" value. The step value is the increment/decrement when pressing -- mouse button 1 on a button; the page value when mouse button 2 is -- pressed. Additionally, mouse button 3 can be used to jump directly to -- the or lower values when used to select one of the buttons. -- Climb_Rate takes a value between 0.0 and 1.0 and indicates the -- amount of acceleration that the Spin Button has. -- The_Digits is the number of digits behind the decimal point to be -- displayed for the value. procedure Gtk_New (Spin_Button : out Gtk_Spin_Button; Min : Gdouble; Max : Gdouble; Step : Gdouble); -- Same as above, but with explicit range instead of an adjustment. -- The adjustment associated with Spin_Button is created internally. procedure Initialize (Spin_Button : access Gtk_Spin_Button_Record'Class; Adjustment : Gtk.Adjustment.Gtk_Adjustment; Climb_Rate : Gdouble; The_Digits : Gint); -- Internal initialization function. -- See the section "Creating your own widgets" in the documentation. procedure Initialize (Spin_Button : access Gtk_Spin_Button_Record'Class; Min : Gdouble; Max : Gdouble; Step : Gdouble); -- Internal initialization function. function Get_Type return Gtk.Gtk_Type; -- Return the internal value associated with a Gtk_Spin_Button. procedure Set_Adjustment (Spin_Button : access Gtk_Spin_Button_Record; Adjustment : Gtk.Adjustment.Gtk_Adjustment); function Get_Adjustment (Spin_Button : access Gtk_Spin_Button_Record) return Gtk.Adjustment.Gtk_Adjustment; -- Set or Get the adjustment settings of the spin button. procedure Set_Digits (Spin_Button : access Gtk_Spin_Button_Record; The_Digits : Guint); function Get_Digits (Spin_Button : access Gtk_Spin_Button_Record) return Guint; -- Set or Get number of decimals of the spin button. procedure Set_Increments (Spin_Button : access Gtk_Spin_Button_Record; Step : Gdouble; Page : Gdouble); procedure Get_Increments (Spin_Button : access Gtk_Spin_Button_Record; Step : out Gdouble; Page : out Gdouble); -- Set or Get the increments for a single step and a page move. procedure Set_Range (Spin_Button : access Gtk_Spin_Button_Record; Min : Gdouble; Max : Gdouble); procedure Get_Range (Spin_Button : access Gtk_Spin_Button_Record; Min : out Gdouble; Max : out Gdouble); -- Set or Get range of the spin button. procedure Set_Value (Spin_Button : access Gtk_Spin_Button_Record; Value : Gdouble); function Get_Value (Spin_Button : access Gtk_Spin_Button_Record) return Gdouble; -- Set or Get the current value of the spin button in a double. function Get_Value_As_Int (Spin_Button : access Gtk_Spin_Button_Record) return Gint; -- Return the current value of the spin button in an integer. procedure Set_Update_Policy (Spin_Button : access Gtk_Spin_Button_Record; Policy : Gtk_Spin_Button_Update_Policy); function Get_Update_Policy (Spin_Button : access Gtk_Spin_Button_Record) return Gtk_Spin_Button_Update_Policy; -- Set the update policy of the spin button. -- See Gtk_Spin_Button_Update_Policy for the meaning of Policy. procedure Set_Numeric (Spin_Button : access Gtk_Spin_Button_Record; Numeric : Boolean); function Get_Numeric (Spin_Button : access Gtk_Spin_Button_Record) return Boolean; -- If Numeric is True, then only a numeric value can be typed in the -- text entry, otherwise also nonnumeric text. procedure Spin (Spin_Button : access Gtk_Spin_Button_Record; Direction : Gtk_Spin_Type; Step : Gdouble); -- Set the value of the spin button relative to its current value. -- Depending on Direction, it will be incremented or decremented with -- the step value. procedure Set_Wrap (Spin_Button : access Gtk_Spin_Button_Record; Wrap : Boolean); function Get_Wrap (Spin_Button : access Gtk_Spin_Button_Record) return Boolean; -- Set whether the spin button should "wrap around" when exceeding the -- upper and lower limits. procedure Set_Snap_To_Ticks (Spin_Button : access Gtk_Spin_Button_Record; Snap_To_Ticks : Boolean); function Get_Snap_To_Ticks (Spin_Button : access Gtk_Spin_Button_Record) return Boolean; -- Set the spin button to round the value to the nearest step value -- which is set within its adjustment settings. procedure Update (Spin_Button : access Gtk_Spin_Button_Record); -- Manually force an update of the spin button. ---------------- -- Properties -- ---------------- -- -- The following properties are defined for this widget. See -- Glib.Properties for more information on properties. -- -- Name: Adjustment_Property -- Type: Object -- Descr: The adjustment that holds the value of the spinbutton -- -- Name: Climb_Rate_Property -- Type: Double -- Descr: The acceleration rate when you hold down a button -- -- Name: Digits_Property -- Type: Uint -- Descr: The number of decimal places to display -- -- Name: Numeric_Property -- Type: Boolean -- Descr: Whether non-numeric characters should be ignored -- -- Name: Snap_To_Ticks_Property -- Type: Boolean -- Descr: Whether erroneous values are automatically changed to a spin -- button's nearest step increment -- -- Name: Update_Policy_Property -- Type: Enum -- Descr: Whether the spin button should update always, or only when the -- value is legal -- -- Name: Value_Property -- Type: Double -- Descr: Reads the current value, or sets a new value -- -- Name: Wrap_Property -- Type: Boolean -- Descr: Whether a spin button should wrap upon reaching its limits -- -- package Spin_Button_Update_Policy_Properties is new Glib.Generic_Properties.Generic_Internal_Discrete_Property (Gtk_Spin_Button_Update_Policy); type Property_Spin_Button_Update_Policy_Type is new Spin_Button_Update_Policy_Properties.Property; Adjustment_Property : constant Glib.Properties.Property_Object; Climb_Rate_Property : constant Glib.Properties.Property_Double; Digits_Property : constant Glib.Properties.Property_Uint; Numeric_Property : constant Glib.Properties.Property_Boolean; Snap_To_Ticks_Property : constant Glib.Properties.Property_Boolean; Update_Policy_Property : constant Property_Spin_Button_Update_Policy_Type; Value_Property : constant Glib.Properties.Property_Double; Wrap_Property : constant Glib.Properties.Property_Boolean; ------------- -- Signals -- ------------- -- -- The following new signals are defined for this widget: -- -- - "change_value" -- procedure Handler -- (Spin : access Gtk_Spin_Button_Record'Class; -- Typ : Gtk_Scroll_Type); -- You should emit this signal to request a change in the value of the -- spin button. This is mostly useful as a keybinding, and is bound, by -- default, to the arrow keys, PageUp, PageDown, Home and End keys. -- -- - "input" -- procedure Handler -- (Spin : access Gtk_Spin_Button_Record'Class; -- Value : out Gint); -- ??? -- -- - "output" -- procedure Handler (Spin : access Gtk_Spin_Button_Record'Class); -- ??? -- -- - "value_changed" -- procedure Handler (Spin : access Gtk_Spin_Button_Record'Class); -- Emitted when the value of the spin button has changed. -- -- Signal_Change_Value : constant Glib.Signal_Name := "change_value"; Signal_Input : constant Glib.Signal_Name := "input"; Signal_Output : constant Glib.Signal_Name := "output"; Signal_Value_Changed : constant Glib.Signal_Name := "value_changed"; private type Gtk_Spin_Button_Record is new Gtk.GEntry.Gtk_Entry_Record with null record; Adjustment_Property : constant Glib.Properties.Property_Object := Glib.Properties.Build ("adjustment"); Climb_Rate_Property : constant Glib.Properties.Property_Double := Glib.Properties.Build ("climb-rate"); Digits_Property : constant Glib.Properties.Property_Uint := Glib.Properties.Build ("digits"); Numeric_Property : constant Glib.Properties.Property_Boolean := Glib.Properties.Build ("numeric"); Snap_To_Ticks_Property : constant Glib.Properties.Property_Boolean := Glib.Properties.Build ("snap-to-ticks"); Update_Policy_Property : constant Property_Spin_Button_Update_Policy_Type := Build ("update-policy"); Value_Property : constant Glib.Properties.Property_Double := Glib.Properties.Build ("value"); Wrap_Property : constant Glib.Properties.Property_Boolean := Glib.Properties.Build ("wrap"); pragma Import (C, Get_Type, "gtk_spin_button_get_type"); end Gtk.Spin_Button; -- The following function is for the sake of the C++ binding only: -- No binding: gtk_spin_button_configure