## IBusProperty IBusProperty — UI component for input method engine property. |

## Stability Level

Stable, unless otherwise indicated

## Synopsis

    enum                IBusPropType;
    enum                IBusPropState;
    struct              IBusProperty;
    struct              IBusPropertyClass;
    IBusProperty *      ibus_property_new                   (const gchar *key,
                                                             IBusPropType type,
                                                             IBusText *label,
                                                             const gchar *icon,
                                                             IBusText *tooltip,
                                                             gboolean sensitive,
                                                             gboolean visible,
                                                             IBusPropState state,
                                                             IBusPropList *prop_list);
    IBusProperty *      ibus_property_new_varargs           (const gchar *first_property_name,
                                                             ...);
    const gchar *       ibus_property_get_key               (IBusProperty *prop);
    IBusText *          ibus_property_get_label             (IBusProperty *prop);
    void                ibus_property_set_label             (IBusProperty *prop,
                                                             IBusText *label);
    IBusText *          ibus_property_get_symbol            (IBusProperty *prop);
    void                ibus_property_set_symbol            (IBusProperty *prop,
                                                             IBusText *symbol);
    const gchar *       ibus_property_get_icon              (IBusProperty *prop);
    void                ibus_property_set_icon              (IBusProperty *prop,
                                                             const gchar *icon);
    IBusText *          ibus_property_get_tooltip           (IBusProperty *prop);
    void                ibus_property_set_tooltip           (IBusProperty *prop,
                                                             IBusText *tooltip);
    gboolean            ibus_property_get_sensitive         (IBusProperty *prop);
    void                ibus_property_set_sensitive         (IBusProperty *prop,
                                                             gboolean sensitive);
    gboolean            ibus_property_get_visible           (IBusProperty *prop);
    void                ibus_property_set_visible           (IBusProperty *prop,
                                                             gboolean visible);
    IBusPropType        ibus_property_get_prop_type         (IBusProperty *prop);
    IBusPropState       ibus_property_get_state             (IBusProperty *prop);
    void                ibus_property_set_state             (IBusProperty *prop,
                                                             IBusPropState state);
    IBusPropList *      ibus_property_get_sub_props         (IBusProperty *prop);
    void                ibus_property_set_sub_props         (IBusProperty *prop,
                                                             IBusPropList *prop_list);
    gboolean            ibus_property_update                (IBusProperty *prop,
                                                             IBusProperty *prop_update);
                        IBusPropListClass;
                        IBusPropList;

## Object Hierarchy

      GEnum
       +----IBusPropType

      GEnum
       +----IBusPropState

      GObject
       +----GInitiallyUnowned
             +----IBusObject
                   +----IBusSerializable
                         +----IBusProperty

      GObject
       +----GInitiallyUnowned
             +----IBusObject
                   +----IBusSerializable
                         +----IBusPropList

## Properties

      "icon"                     gchar*                : Read / Write
      "key"                      gchar*                : Read / Write / Construct Only
      "label"                    IBusText*             : Read / Write / Construct
      "prop-type"                IBusPropType          : Read / Write / Construct Only
      "sensitive"                gboolean              : Read / Write
      "state"                    IBusPropState         : Read / Write
      "sub-props"                IBusPropList*         : Read / Write
      "symbol"                   IBusText*             : Read / Write / Construct
      "tooltip"                  IBusText*             : Read / Write
      "visible"                  gboolean              : Read / Write

## Description

An IBusProperty is an UI component like a button or a menu item which shows the status of corresponding input method engine property. End user can operate and see the current status of IME through these components. For example, ibus-chewing users change the English/Chinese input mode by pressing ctrl-space or click on the Eng/Chi switch button. And the IBusProperty shows the change correspondingly.

see_also: IBusPropList, IBusEngine

## Details

### enum IBusPropType

    typedef enum {
        PROP_TYPE_NORMAL = 0,
        PROP_TYPE_TOGGLE = 1,
        PROP_TYPE_RADIO = 2,
        PROP_TYPE_MENU = 3,
        PROP_TYPE_SEPARATOR = 4,
    } IBusPropType;

Type enumeration of IBusProperty.

`PROP_TYPE_NORMAL` | Property is shown as normal text.
`PROP_TYPE_TOGGLE` | Property is shown as a toggle button.
`PROP_TYPE_RADIO` | Property is shown as a radio selection option.
`PROP_TYPE_MENU` | Property is shown as a menu, usually imply it has sub menu items.
`PROP_TYPE_SEPARATOR` | A separator for menu.

### enum IBusPropState

    typedef enum {
        PROP_STATE_UNCHECKED = 0,
        PROP_STATE_CHECKED = 1,
        PROP_STATE_INCONSISTENT = 2,
    } IBusPropState;

State of IBusProperty. The actual effect depends on IBusPropType of the IBusProperty.

PROP_TYPE_TOGGLE | Emphasized if PROP_STATE_CHECKED, normal otherwise.
PROP_TYPE_RADIO | Option checked if PROP_STATE_CHECKED, unchecked otherwise.

No effect on other types.

`PROP_STATE_UNCHECKED` | Property option is unchecked.
`PROP_STATE_CHECKED` | Property option is checked.
`PROP_STATE_INCONSISTENT` | The state is inconsistent with the associated IME property.

### struct IBusProperty

    struct IBusProperty;

UI component for input method engine property.

### struct IBusPropertyClass

    struct IBusPropertyClass {
        IBusSerializableClass parent;
    };

### ibus_property_new ()

    IBusProperty *      ibus_property_new                   (const gchar *key,
                                                             IBusPropType type,
                                                             IBusText *label,
                                                             const gchar *icon,
                                                             IBusText *tooltip,
                                                             gboolean sensitive,
                                                             gboolean visible,
                                                             IBusPropState state,
                                                             IBusPropList *prop_list);

New a IBusProperty.

`key` : | Unique Identity for the IBusProperty.
`type` : | IBusPropType of IBusProperty.
`label` : | Text shown in UI.
`icon` : | Icon file for the IBusProperty. [allow-none]
`tooltip` : | Message shown if mouse hovered the IBusProperty.
`sensitive` : | Whether the IBusProperty is sensitive to keyboard and mouse event.
`visible` : | Whether the IBusProperty is visible.
`state` : | IBusPropState of IBusProperty.
`prop_list` : | IBusPropList that contains sub IBusProperties. [allow-none]
Returns : | A newly allocated IBusProperty.

### ibus_property_new_varargs ()

    IBusProperty *      ibus_property_new_varargs           (const gchar *first_property_name,
                                                             ...);

New a IBusProperty. `ibus_property_new_varargs()` supports the va_list format. name property is required. e.g. ibus_property_new_varargs("key", "TypingMode", "type", PROP_TYPE_MENU, NULL)

`first_property_name` : | Name of the first property.

### ibus_property_get_key ()

    const gchar *       ibus_property_get_key               (IBusProperty *prop);

Get the key of IBusProperty.

`prop` : | An IBusProperty.
Returns : | the key of IBusProperty. Should not be freed.

### ibus_property_get_label ()

    IBusText *          ibus_property_get_label             (IBusProperty *prop);

Get the label of IBusProperty.

`prop` : | An IBusProperty.
Returns : | the label of IBusProperty. Should not be freed. [transfer none]

### ibus_property_set_label ()

    void                ibus_property_set_label             (IBusProperty *prop,
                                                             IBusText *label);

Set the label of IBusProperty.

`prop` : | An IBusProperty.
`label` : | Text shown in UI.

### ibus_property_get_symbol ()

    IBusText *          ibus_property_get_symbol            (IBusProperty *prop);

Get the symbol of IBusProperty.

`prop` : | An IBusProperty.
Returns : | the symbol of IBusProperty. Should not be freed. [transfer none]

### ibus_property_set_symbol ()

    void                ibus_property_set_symbol            (IBusProperty *prop,
                                                             IBusText *symbol);

Set the symbol of IBusProperty.

`prop` : | An IBusProperty.
`symbol` : | Text shown in UI.

### ibus_property_get_icon ()

    const gchar *       ibus_property_get_icon              (IBusProperty *prop);

Get the icon of IBusProperty.

`prop` : | An IBusProperty.
Returns : | the icon of IBusProperty. Should not be freed.

### ibus_property_set_icon ()

    void                ibus_property_set_icon              (IBusProperty *prop,
                                                             const gchar *icon);

Set the icon of IBusProperty.

`prop` : | An IBusProperty.
`icon` : | Icon shown in UI. It could be a full path of an icon file or an icon name.

### ibus_property_get_tooltip ()

    IBusText *          ibus_property_get_tooltip           (IBusProperty *prop);

Get the tooltip of IBusProperty.

`prop` : | An IBusProperty.
Returns : | the tooltip of IBusProperty. Should not be freed. [transfer none]

### ibus_property_set_tooltip ()

    void                ibus_property_set_tooltip           (IBusProperty *prop,
                                                             IBusText *tooltip);

Set the tooltip of IBusProperty.

`prop` : | An IBusProperty.
`tooltip` : | Text of the tooltip.

### ibus_property_get_sensitive ()

    gboolean            ibus_property_get_sensitive         (IBusProperty *prop);

Get the sensitive of IBusProperty.

`prop` : | An IBusProperty.
Returns : | the sensitive of IBusProperty.

### ibus_property_set_sensitive ()

    void                ibus_property_set_sensitive         (IBusProperty *prop,
                                                             gboolean sensitive);

Set whether the IBusProperty is sensitive.

`prop` : | An IBusProperty.
`sensitive` : | Whether the IBusProperty is sensitive.

### ibus_property_get_visible ()

    gboolean            ibus_property_get_visible           (IBusProperty *prop);

Get the visible of IBusProperty.

`prop` : | An IBusProperty.
Returns : | the visible of IBusProperty.

### ibus_property_set_visible ()

    void                ibus_property_set_visible           (IBusProperty *prop,
                                                             gboolean visible);

Set whether the IBusProperty is visible.

`prop` : | An IBusProperty.
`visible` : | Whether the IBusProperty is visible.

### ibus_property_get_prop_type ()

    IBusPropType        ibus_property_get_prop_type         (IBusProperty *prop);

### ibus_property_get_state ()

    IBusPropState       ibus_property_get_state             (IBusProperty *prop);

Get the state of IBusProperty.

`prop` : | An IBusProperty.
Returns : | the state of IBusProperty.

### ibus_property_set_state ()

    void                ibus_property_set_state             (IBusProperty *prop,
                                                             IBusPropState state);

Set the state of the IBusProperty.

`prop` : | An IBusProperty.
`state` : | The state of the IBusProperty.

### ibus_property_get_sub_props ()

    IBusPropList *      ibus_property_get_sub_props         (IBusProperty *prop);

Get the IBusPropList of IBusProperty.

`prop` : | An IBusProperty.
Returns : | the IBusPropList of IBusProperty. Should not be freed. [transfer none]

### ibus_property_set_sub_props ()

    void                ibus_property_set_sub_props         (IBusProperty *prop,
                                                             IBusPropList *prop_list);

Set the sub IBusProperties.

`prop` : | An IBusProperty.
`prop_list` : | IBusPropList that contains sub IBusProperties.

### ibus_property_update ()

    gboolean            ibus_property_update                (IBusProperty *prop,
                                                             IBusProperty *prop_update);

Update the content of an IBusProperty. IBusProperty `prop_update` can either be sub-property of `prop`, or holds new values for `prop`.

`prop` : | An IBusProperty.
`prop_update` : | IBusPropList that contains sub IBusProperties.
Returns : | TRUE for update suceeded; FALSE otherwise.

### IBusPropListClass

    typedef struct {
        IBusSerializableClass parent;
    } IBusPropListClass;

### IBusPropList

    typedef struct {
        GArray *properties;
    } IBusPropList;

An array of IBusProperties.

GArray *`properties`; | GArray that holds IBusProperties.

## Property Details

### The `"icon"` property

      "icon"                     gchar*                : Read / Write

The icon of property.

Default value: ""

### The `"key"` property

      "key"                      gchar*                : Read / Write / Construct Only

The key of property.

Default value: ""

### The `"label"` property

      "label"                    IBusText*             : Read / Write / Construct

The label of property.

### The `"prop-type"` property

      "prop-type"                IBusPropType          : Read / Write / Construct Only

The type of property.

Default value: PROP_TYPE_NORMAL

### The `"sensitive"` property

      "sensitive"                gboolean              : Read / Write

The sensitive of property.

Default value: TRUE

### The `"state"` property

      "state"                    IBusPropState         : Read / Write

The state of property.

Default value: PROP_STATE_UNCHECKED

### The `"sub-props"` property

      "sub-props"                IBusPropList*         : Read / Write

The sub properties of property.

### The `"symbol"` property

      "symbol"                   IBusText*             : Read / Write / Construct

The symbol of property.

### The `"tooltip"` property

      "tooltip"                  IBusText*             : Read / Write

The tooltip of property.

### The `"visible"` property

      "visible"                  gboolean              : Read / Write

The visible of property.

Default value: TRUE