## IBusComponent IBusComponent — Component (executable) specification. |

## Stability Level

Stable, unless otherwise indicated

## Synopsis

    struct              IBusComponent;
    struct              IBusComponentClass;
    IBusComponent *     ibus_component_new                  (const gchar *name,
                                                             const gchar *description,
                                                             const gchar *version,
                                                             const gchar *license,
                                                             const gchar *author,
                                                             const gchar *homepage,
                                                             const gchar *command_line,
                                                             const gchar *textdomain);
    IBusComponent *     ibus_component_new_varargs          (const gchar *first_property_name,
                                                             ...);
    IBusComponent *     ibus_component_new_from_xml_node    (XMLNode *node);
    IBusComponent *     ibus_component_new_from_file        (const gchar *filename);
    const gchar *       ibus_component_get_name             (IBusComponent *component);
    const gchar *       ibus_component_get_description      (IBusComponent *component);
    const gchar *       ibus_component_get_version          (IBusComponent *component);
    const gchar *       ibus_component_get_license          (IBusComponent *component);
    const gchar *       ibus_component_get_author           (IBusComponent *component);
    const gchar *       ibus_component_get_homepage         (IBusComponent *component);
    const gchar *       ibus_component_get_exec             (IBusComponent *component);
    const gchar *       ibus_component_get_textdomain       (IBusComponent *component);
    void                ibus_component_add_observed_path    (IBusComponent *component,
                                                             const gchar *path,
                                                             gboolean access_fs);
    void                ibus_component_add_engine           (IBusComponent *component,
                                                             IBusEngineDesc *engine);
    GList *             ibus_component_get_engines          (IBusComponent *component);
    void                ibus_component_output               (IBusComponent *component,
                                                             GString *output,
                                                             gint indent);
    void                ibus_component_output_engines       (IBusComponent *component,
                                                             GString *output,
                                                             gint indent);
    gboolean            ibus_component_check_modification   (IBusComponent *component);
    GList *             ibus_component_get_observed_paths   (IBusComponent *component);

## Object Hierarchy

      GObject
       +----GInitiallyUnowned
             +----IBusObject
                   +----IBusSerializable
                         +----IBusComponent

## Properties

      "author"                   gchar*                : Read / Write / Construct Only
      "command-line"             gchar*                : Read / Write / Construct Only
      "description"              gchar*                : Read / Write / Construct Only
      "homepage"                 gchar*                : Read / Write / Construct Only
      "license"                  gchar*                : Read / Write / Construct Only
      "name"                     gchar*                : Read / Write / Construct Only
      "textdomain"               gchar*                : Read / Write / Construct Only
      "version"                  gchar*                : Read / Write / Construct Only

## Description

An IBusComponent is an executable program. It provides services such as user interface, configuration, and input method engine (IME).

It is recommended that IME developers provide a component XML file and load the XML file by `ibus_component_new_from_file()`.

The format of a component XML file is described at http://code.google.com/p/ibus/wiki/DevXML

## Details

### struct IBusComponent

    struct IBusComponent {
        /* padding */
        gpointer pdummy[7];  // We can add 7 pointers without breaking the ABI.
    };

An IBusComponent stores component information. You can get extended values with g_object_get_properties. name: Name of the component. description: Detailed description of component. version: Component version. license: Distribution license of this component. author: Author(s) of the component. homepage: Homepage of the component. command_line: path to component executable. textdomain: Domain name for `dgettext()`

### struct IBusComponentClass

    struct IBusComponentClass {
      IBusSerializableClass parent;

      /* class members */
    };

### ibus_component_new ()

    IBusComponent *     ibus_component_new                  (const gchar *name,
                                                             const gchar *description,
                                                             const gchar *version,
                                                             const gchar *license,
                                                             const gchar *author,
                                                             const gchar *homepage,
                                                             const gchar *command_line,
                                                             const gchar *textdomain);

New an IBusComponent.

`name` : | Name of the component.
`description` : | Detailed description of component.
`version` : | Component version.
`license` : | Distribution license of this component.
`author` : | Author(s) of the component.
`homepage` : | Homepage of the component.
`command_line` : | path to component executable.
`textdomain` : | Domain name for `dgettext()`
Returns : | A newly allocated IBusComponent.

### ibus_component_new_varargs ()

    IBusComponent *     ibus_component_new_varargs          (const gchar *first_property_name,
                                                             ...);

New an IBusComponent. `ibus_component_new_varargs()` supports the va_list format. name property is required. e.g. IBusComponent *component = ibus_component_new_varargs ("name", "ibus-foo", "command_line", "/usr/libexec/ibus-engine-foo --ibus", NULL)

`first_property_name` : | Name of the first property.

### ibus_component_new_from_xml_node ()

    IBusComponent *     ibus_component_new_from_xml_node    (XMLNode *node);

New an IBusComponent from an XML tree.

`node` : | Root node of component XML tree.
Returns : | A newly allocated IBusComponent.

### ibus_component_new_from_file ()

    IBusComponent *     ibus_component_new_from_file        (const gchar *filename);

New an IBusComponent from an XML file. Note that a component file usually contains engine descriptions, if it does, `ibus_engine_desc_new_from_xml_node()` will be called to load the engine descriptions.

`filename` : | An XML file that contains component information.
Returns : | A newly allocated IBusComponent.

### ibus_component_get_name ()

    const gchar *       ibus_component_get_name             (IBusComponent *component);

Return the name property in IBusComponent. It should not be freed.

`component` : | An IBusComponent
Returns : | name property in IBusComponent

### ibus_component_get_description ()

    const gchar *       ibus_component_get_description      (IBusComponent *component);

Return the description property in IBusComponent. It should not be freed.

`component` : | An IBusComponent
Returns : | description property in IBusComponent

### ibus_component_get_version ()

    const gchar *       ibus_component_get_version          (IBusComponent *component);

Return the version property in IBusComponent. It should not be freed.

`component` : | An IBusComponent
Returns : | version property in IBusComponent

### ibus_component_get_license ()

    const gchar *       ibus_component_get_license          (IBusComponent *component);

Return the license property in IBusComponent. It should not be freed.

`component` : | An IBusComponent
Returns : | license property in IBusComponent

### ibus_component_get_author ()

    const gchar *       ibus_component_get_author           (IBusComponent *component);

Return the author property in IBusComponent. It should not be freed.

`component` : | An IBusComponent
Returns : | author property in IBusComponent

### ibus_component_get_homepage ()

    const gchar *       ibus_component_get_homepage         (IBusComponent *component);

Return the homepage property in IBusComponent. It should not be freed.

`component` : | An IBusComponent
Returns : | homepage property in IBusComponent

### ibus_component_get_exec ()

    const gchar *       ibus_component_get_exec             (IBusComponent *component);

Return the exec property in IBusComponent. It should not be freed.

`component` : | An IBusComponent
Returns : | exec property in IBusComponent

### ibus_component_get_textdomain ()

    const gchar *       ibus_component_get_textdomain       (IBusComponent *component);

Return the textdomain property in IBusComponent. It should not be freed.

`component` : | An IBusComponent
Returns : | textdomain property in IBusComponent

### ibus_component_add_observed_path ()

    void                ibus_component_add_observed_path    (IBusComponent *component,
                                                             const gchar *path,
                                                             gboolean access_fs);

Add an observed path to IBusComponent.

`component` : | An IBusComponent
`path` : | Observed path to be added.
`access_fs` : | TRUE for filling the file status; FALSE otherwise.

### ibus_component_add_engine ()

    void                ibus_component_add_engine           (IBusComponent *component,
                                                             IBusEngineDesc *engine);

Add an engine to IBusComponent according to the description in `engine`.

`component` : | An IBusComponent
`engine` : | A description of an engine.

### ibus_component_get_engines ()

    GList *             ibus_component_get_engines          (IBusComponent *component);

Get the engines of this component.

`component` : | An IBusComponent.
Returns : | A newly allocated GList that contains engines. [transfer container][element-type IBusEngineDesc]

### ibus_component_output ()

    void                ibus_component_output               (IBusComponent *component,
                                                             GString *output,
                                                             gint indent);

Output IBusComponent as an XML-formatted string. The output string can be then shown on the screen or written to file.

`component` : | An IBusComponent.
`output` : | GString that holds the result.
`indent` : | level of indent.

### ibus_component_output_engines ()

    void                ibus_component_output_engines       (IBusComponent *component,
                                                             GString *output,
                                                             gint indent);

Output engine description as an XML-formatted string. The output string can be then shown on the screen or written to file.

`component` : | An IBusComponent.
`output` : | GString that holds the result.
`indent` : | level of indent.

### ibus_component_check_modification ()

    gboolean            ibus_component_check_modification   (IBusComponent *component);

Check whether the observed paths of component is modified.

`component` : | An IBusComponent.
Returns : | TRUE if at least one of the observed paths is modified; FALSE otherwise.

### ibus_component_get_observed_paths ()

    GList *             ibus_component_get_observed_paths   (IBusComponent *component);

Get the observed paths of this component.

`component` : | An IBusComponent.
Returns : | A newly allocated GList that contains observed paths. [transfer container][element-type IBusObservedPath]

## Property Details

### The `"author"` property

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

The author of component

Default value: NULL

### The `"command-line"` property

      "command-line"             gchar*                : Read / Write / Construct Only

The exec path of component

Default value: NULL

### The `"description"` property

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

The description of component

Default value: NULL

### The `"homepage"` property

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

The homepage of component

Default value: NULL

### The `"license"` property

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

The license of component

Default value: NULL

### The `"name"` property

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

The name of component

Default value: NULL

### The `"textdomain"` property

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

The textdomain of component

Default value: NULL

### The `"version"` property

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

The version of component

Default value: NULL