## Documentation

Table of Contents
Class Inheritance Tree
Widget Screenshots
Package groups

## Index

Package: Creation

- Goto spec source

# Description

    package Glib.Properties.Creation is

This package provides all the required subprograms to create and manipulate new properties associated with new widget types.

You do not have to be familiar with this package in order to use properties. See Glib.Object instead, that provides the minimal subprograms to get and set properties.

This package is only intended for writers of new widgets. You will need this function to create new properties.

Each object in gtk+ has a set of so-called properties. These are attributes that can be accessed, and possibly modified, by names.

They provide introspection, that is an object can specify which properties it knows about, which can be modified,..., and thus provide a huge support for special applications like GUI-Builders that need to act on any kind of widgets, even those it doesn't know about yet.

However, for efficiency reasons, the properties are only names, and are not the only way to modify attributes of objects. It is often more efficient to use the alternate method, as documented in the GtkAda documentation for each property.

Another interesting feature of properties is that every time a property is modified, a signal "property_changed" or "notify" is emitted, and it is thus easy to keep track of attributes in objects.

# Types

### Enum_Class

- Goto declaration in source

    type Enum_Class is new Glib.C_Proxy;

### Enum_Value

- Goto declaration in source

    type Enum_Value is new Glib.C_Proxy;

### Flags_Class

- Goto declaration in source

    type Flags_Class is new Glib.C_Proxy;

### Flags_Value

- Goto declaration in source

    type Flags_Value is new Glib.C_Proxy;

### Flags_Int_Value

- Goto declaration in source

    type Flags_Int_Value is mod Glib.Gint'Last;

### Param_Spec_Char

- Goto declaration in source

    type Param_Spec_Char is new Param_Spec;

Value_Type returns GType_Char

### Param_Spec_Uchar

- Goto declaration in source

    type Param_Spec_Uchar is new Param_Spec;

Value_Type returns GType_UChar

### Param_Spec_Boolean

- Goto declaration in source

    type Param_Spec_Boolean is new Param_Spec;

Value_Type returns GType_Bool

### Param_Spec_Int

- Goto declaration in source

    type Param_Spec_Int is new Param_Spec;

Value_Type returns GType_Int

### Param_Spec_Uint

- Goto declaration in source

    type Param_Spec_Uint is new Param_Spec;

Value_Type returns GType_Uint

### Param_Spec_Long

- Goto declaration in source

    type Param_Spec_Long is new Param_Spec;

Value_Type returns GType_Long

### Param_Spec_Ulong

- Goto declaration in source

    type Param_Spec_Ulong is new Param_Spec;

Value_Type returns GType_ULong

### Param_Spec_Unichar

- Goto declaration in source

    type Param_Spec_Unichar is new Param_Spec;

Value_Type returns ???

### Param_Spec_Enum

- Goto declaration in source

    type Param_Spec_Enum is new Param_Spec;

Value_Type returns GType_Enum See also the package Generic_Enumeration_Property on how to create properties based on an Ada enumeration type.

### Param_Spec_Flags

- Goto declaration in source

    type Param_Spec_Flags is new Param_Spec;

Value_Type returns GType_Flags

### Param_Spec_Float

- Goto declaration in source

    type Param_Spec_Float is new Param_Spec;

Value_Type returns GType_Float

### Param_Spec_Double

- Goto declaration in source

    type Param_Spec_Double is new Param_Spec;

Value_Type returns GType_Double

### Param_Spec_String

- Goto declaration in source

    type Param_Spec_String is new Param_Spec;

Value_Type returns GType_String

### Param_Spec_Param

- Goto declaration in source

    type Param_Spec_Param is new Param_Spec;

Value_Type returns GType_Param

### Param_Spec_Boxed

- Goto declaration in source

    type Param_Spec_Boxed is new Param_Spec;

Value_Type returns GType_Boxed

### Param_Spec_Pointer

- Goto declaration in source

    type Param_Spec_Pointer is new Param_Spec;

Value_Type returns GType_Pointer

### Param_Spec_Object

- Goto declaration in source

    type Param_Spec_Object is new Param_Spec;

Value_Type returns GType_Object

### Property_Id

- Goto declaration in source

    type Property_Id is new Guint;

### Set_Property_Handler

- Goto declaration in source

    type Set_Property_Handler is access procedure
         (Object        : access Glib.Object.GObject_Record'Class;
          Prop_Id       : Property_Id;
          Value         : Glib.Values.GValue;
          Property_Spec : Param_Spec);

This handler is called every time the user has asked for a new property to be changed. Prop_Id is the id you used when creating the property. Value is the new value that should be set. It is your responsability to extract the actual value from it. However, consistency has already been checked by gtk+, so we know the type is correct. Property_Spec is the definition of the property. Note: It is your responsability to emit the "notify" signal after a property has been modified. The recommended way is to emit this signal from the internal function that actually modified the property, not directly from the Set_Propert_Handler itself. This will ensure that even if the user doesn't modify the attribute through a property but directly by calling the lower-level subprogram, the signal will still be emitted.

### Get_Property_Handler

- Goto declaration in source

    type Get_Property_Handler is access procedure
         (Object        : access Glib.Object.GObject_Record'Class;
          Prop_Id       : Property_Id;
          Value         : out Glib.Values.GValue;
          Property_Spec : Param_Spec);

This handler is called when the application needs to retrive the value of a property. You should set the value in Value

# Subprograms & Entries

### Unref

- Goto spec in source
- Goto body in source

    procedure Unref (Param: Param_Spec);

Decrement the reference counter. If it reaches 0, the memory is freed.

### Get_Value

- Goto spec in source
- Goto body in source

    function Get_Value (Klass: Enum_Class;Value: Glib.Gint) return Enum_Value;

Return the value in Klass that is Value (equivalent of 'Val in Ada)

### Nth_Value

- Goto spec in source

    function Nth_Value (Klass: Enum_Class;Nth: Glib.Guint) return Enum_Value;

Return the Nth-th value in Klass, or null if there is no such value.

### Value

- Goto spec in source

    function Value (Val: Enum_Value) return Glib.Gint;

Return the numeric value for a specific enumeration. Use the matching Ada type and 'Val to convert it to a valid Ada enumeration

### Name

- Goto spec in source

    function Name (Val: Enum_Value) return String;

Return the name of Val. This is the equivalent of 'Image in Ada.

### Nick

- Goto spec in source

    function Nick (Val: Enum_Value) return String;

Return a displayable string for Val.

### Register_Static_Enum

- Goto spec in source

    function Register_Static_Enum (Name: String;Values: Interfaces.C.Strings.chars_ptr_array) return Glib.GType;

Create a new enumeration class from a list of valid values. Values must be freed by the caller.

### Enum_Class_From_Type

- Goto spec in source
- Goto body in source

    function Enum_Class_From_Type (Typ: Glib.GType) return Enum_Class;

Return the enumeration class corresponding to a type

### Nth_Value

- Goto spec in source

    function Nth_Value (Klass: Flags_Class;Nth: Glib.Guint) return Flags_Value;

Return the Nth-th value in Klass, or null if there is no such value.

### Value

- Goto spec in source

    function Value (Val: Flags_Value) return Flags_Int_Value;

Return the numeric value for a specific enumeration. Use the matching Ada type and 'Val to convert it to a valid Ada enumeration

### Name

- Goto spec in source

    function Name (Val: Flags_Value) return String;

Return the name of Val. This is the equivalent of 'Image in Ada.

### Nick

- Goto spec in source

    function Nick (Val: Flags_Value) return String;

Return a displayable string for Val.

### Pspec_Name

- Goto spec in source

    function Pspec_Name (Param: Param_Spec) return String;

Return the name of the property. This is the internal string representing the property. It Should probably not be displayed on

### Nick_Name

- Goto spec in source

    function Nick_Name (Param: Param_Spec) return String;

Return the nickname of the property. This is a string that can be displayed to represent the property, and is more user-friendly than the result of Name.

### Flags

- Goto spec in source
- Goto body in source

    function Flags (Param: Param_Spec) return Param_Flags;

Return the flags for the property

### Owner_Type

- Goto spec in source
- Goto body in source

    function Owner_Type (Param: Param_Spec) return Glib.GType;

The type that defined Param. If you look for instance at all properties provides by a type, they will also include properties provided by the parents of the type. This function can be used to find those declared with that type only

### Description

- Goto spec in source

    function Description (Param: Param_Spec) return String;

Return the description (ie the help string) for Param

### Value_Type

- Goto spec in source
- Goto body in source

    function Value_Type (Param: Param_Spec) return Glib.GType;

Return the type of param

### Set_Value_Type

- Goto spec in source
- Goto body in source

    procedure Set_Value_Type (Param: Param_Spec;Typ: Glib.GType);

Override the type of param. You should only use this function when creating new Param_Spec types based on existing types. You should not change the type if you haven't created param yourself.

### Get_Qdata

- Goto spec in source
- Goto body in source

    function Get_Qdata (Param: Param_Spec;Quark: GQuark) return Glib.C_Proxy;

Return the user data set for Param

### Set_Qdata

- Goto spec in source
- Goto body in source

    procedure Set_Qdata (Param: Param_Spec;Quark: GQuark;Data: Glib.C_Proxy;Destroy: G_Destroy_Notify := null);

Associate some named data with Param. Destroy is called when Param is destroyed.

### Minimum

- Goto spec in source

    function Minimum (Param: Param_Spec_Char) return Glib.Gint8;

### Maximum

- Goto spec in source

    function Maximum (Param: Param_Spec_Char) return Glib.Gint8;

### Default

- Goto spec in source

    function Default (Param: Param_Spec_Char) return Glib.Gint8;

### Gnew_Char

- Goto spec in source

    function Gnew_Char (Name, Nick, Blurb: String;Minimum, Maximum, Default: Glib.Gint8;Flags: Param_Flags := Param_Readable or Param_Writable) return Param_Spec;

### Minimum

- Goto spec in source

    function Minimum (Param: Param_Spec_Uchar) return Glib.Guint8;

### Maximum

- Goto spec in source

    function Maximum (Param: Param_Spec_Uchar) return Glib.Guint8;

### Default

- Goto spec in source

    function Default (Param: Param_Spec_Uchar) return Glib.Guint8;

### Gnew_Uchar

- Goto spec in source

    function Gnew_Uchar (Name, Nick, Blurb: String;Minimum, Maximum, Default: Glib.Guint8;Flags: Param_Flags := Param_Readable or Param_Writable) return Param_Spec;

### Default

- Goto spec in source

    function Default (Param: Param_Spec_Boolean) return Boolean;

### Gnew_Boolean

- Goto spec in source

    function Gnew_Boolean (Name, Nick, Blurb: String;Default: Boolean;Flags: Param_Flags := Param_Readable or Param_Writable) return Param_Spec;

### Minimum

- Goto spec in source

    function Minimum (Param: Param_Spec_Int) return Glib.Gint;

### Maximum

- Goto spec in source

    function Maximum (Param: Param_Spec_Int) return Glib.Gint;

### Default

- Goto spec in source

    function Default (Param: Param_Spec_Int) return Glib.Gint;

### Gnew_Int

- Goto spec in source

    function Gnew_Int (Name, Nick, Blurb: String;Minimum, Maximum, Default: Glib.Gint;Flags: Param_Flags := Param_Readable or Param_Writable) return Param_Spec;

### Minimum

- Goto spec in source

    function Minimum (Param: Param_Spec_Uint) return Glib.Guint;

### Maximum

- Goto spec in source

    function Maximum (Param: Param_Spec_Uint) return Glib.Guint;

### Default

- Goto spec in source

    function Default (Param: Param_Spec_Uint) return Glib.Guint;

### Gnew_Uint

- Goto spec in source

    function Gnew_Uint (Name, Nick, Blurb: String;Minimum, Maximum, Default: Glib.Guint;Flags: Param_Flags := Param_Readable or Param_Writable) return Param_Spec;

### Minimum

- Goto spec in source

    function Minimum (Param: Param_Spec_Long) return Glib.Glong;

### Maximum

- Goto spec in source

    function Maximum (Param: Param_Spec_Long) return Glib.Glong;

### Default

- Goto spec in source

    function Default (Param: Param_Spec_Long) return Glib.Glong;

### Gnew_Long

- Goto spec in source

    function Gnew_Long (Name, Nick, Blurb: String;Minimum, Maximum, Default: Glib.Glong;Flags: Param_Flags := Param_Readable or Param_Writable) return Param_Spec;

### Minimum

- Goto spec in source

    function Minimum (Param: Param_Spec_Ulong) return Glib.Gulong;

### Maximum

- Goto spec in source

    function Maximum (Param: Param_Spec_Ulong) return Glib.Gulong;

### Default

- Goto spec in source

    function Default (Param: Param_Spec_Ulong) return Glib.Gulong;

### Gnew_Ulong

- Goto spec in source

    function Gnew_Ulong (Name, Nick, Blurb: String;Minimum, Maximum, Default: Glib.Gulong;Flags: Param_Flags := Param_Readable or Param_Writable) return Param_Spec;

### Default

- Goto spec in source

    function Default (Param: Param_Spec_Unichar) return Gunichar;

### Gnew_Unichar

- Goto spec in source

    function Gnew_Unichar (Name, Nick, Blurb: String;Default: Gunichar;Flags: Param_Flags := Param_Readable or Param_Writable) return Param_Spec;

### Enumeration

- Goto spec in source
- Goto body in source

    function Enumeration (Param: Param_Spec_Enum) return Enum_Class;

### Default

- Goto spec in source

    function Default (Param: Param_Spec_Enum) return Glib.Gint;

### Gnew_Enum

- Goto spec in source

    function Gnew_Enum (Name, Nick, Blurb: String;Enum_Type: GType;Default: Gint := 0;Flags: Param_Flags := Param_Readable or Param_Writable) return Param_Spec;

See Glib.Properties.Creation.Register_Static_Enum on how to create Enum_Type

### Flags_Enumeration

- Goto spec in source
- Goto body in source

    function Flags_Enumeration (Param: Param_Spec_Flags) return Flags_Class;

### Default

- Goto spec in source

    function Default (Param: Param_Spec_Flags) return Glong;

### Gnew_Flags

- Goto spec in source

    function Gnew_Flags (Name, Nick, Blurb: String;Flags_Type: Glib.GType;Default: Guint;Flags: Param_Flags := Param_Readable or Param_Writable) return Param_Spec;

### Minimum

- Goto spec in source

    function Minimum (Param: Param_Spec_Float) return Gfloat;

### Maximum

- Goto spec in source

    function Maximum (Param: Param_Spec_Float) return Gfloat;

### Default

- Goto spec in source

    function Default (Param: Param_Spec_Float) return Gfloat;

### Epsilon

- Goto spec in source

    function Epsilon (Param: Param_Spec_Float) return Gfloat;

### Gnew_Float

- Goto spec in source

    function Gnew_Float (Name, Nick, Blurb: String;Minimum, Maximum, Default: Glib.Gfloat;Flags: Param_Flags := Param_Readable or Param_Writable) return Param_Spec;

### Minimum

- Goto spec in source

    function Minimum (Param: Param_Spec_Double) return Gdouble;

### Maximum

- Goto spec in source

    function Maximum (Param: Param_Spec_Double) return Gdouble;

### Default

- Goto spec in source

    function Default (Param: Param_Spec_Double) return Gdouble;

### Epsilon

- Goto spec in source

    function Epsilon (Param: Param_Spec_Double) return Gdouble;

### Gnew_Double

- Goto spec in source

    function Gnew_Double (Name, Nick, Blurb: String;Minimum, Maximum, Default: Glib.Gdouble;Flags: Param_Flags := Param_Readable or Param_Writable) return Param_Spec;

### Default

- Goto spec in source

    function Default (Param: Param_Spec_String) return String;

### Cset_First

- Goto spec in source

    function Cset_First (Param: Param_Spec_String) return String;

### Cset_Nth

- Goto spec in source

    function Cset_Nth (Param: Param_Spec_String) return String;

### Substitutor

- Goto spec in source

    function Substitutor (Param: Param_Spec_String) return Character;

### Ensure_Non_Null

- Goto spec in source

    function Ensure_Non_Null (Param: Param_Spec_String) return Boolean;

### Gnew_String

- Goto spec in source

    function Gnew_String (Name, Nick, Blurb: String;Default: String;Flags: Param_Flags := Param_Readable or Param_Writable) return Param_Spec;

### Gnew_Param

- Goto spec in source

    function Gnew_Param (Name, Nick, Blurb: String;Param_Type: Glib.GType;Flags: Param_Flags := Param_Readable or Param_Writable) return Param_Spec;

### Gnew_Boxed

- Goto spec in source

    function Gnew_Boxed (Name, Nick, Blurb: String;Boxed_Type: Glib.GType;Flags: Param_Flags := Param_Readable or Param_Writable) return Param_Spec;

### Gnew_Pointer

- Goto spec in source

    function Gnew_Pointer (Name, Nick, Blurb: String;Flags: Param_Flags := Param_Readable or Param_Writable) return Param_Spec;

### Gnew_Object

- Goto spec in source

    function Gnew_Object (Name, Nick, Blurb: String;Object_Type: Glib.GType;Flags: Param_Flags := Param_Readable or Param_Writable) return Param_Spec;

### Set_Properties_Handlers

- Goto spec in source

    procedure Set_Properties_Handlers (Class_Record: Glib.Object.GObject_Class;Set_Property: Set_Property_Handler;Get_Property: Get_Property_Handler);

Set the two functions used to set and retrieve properties. You should never call this function on the class record of the standard gtk+ widgets, since this will break their behavior. You should first create a new class record through Initialize_Class_Record, and then use the returned Class_Record as a parameter to this subprogram. You cannot pass null to either of the two parameters, or you won't be able to install new properties afterwards

### Install_Property

- Goto spec in source
- Goto body in source

    procedure Install_Property (Class_Record: Glib.Object.GObject_Class;Prop_Id: Property_Id;Property_Spec: Param_Spec);

Adds a new property to Class_Record. You should use this function only on class records you have created yourself, not on one of the standard widgets. Prop_Id is the internal representation for properties, that will be passed to the Set_Property and Get_Property_Handlers (see above) to set and retrieve the value of a property. Property_Spec should be the result of one of the GNew_* subprograms for Param_Spec, and this defines the type of the property.