## IBusRegistry IBusRegistry — Registry cache handling. |

## Stability Level

Stable, unless otherwise indicated

## Synopsis

    struct              IBusRegistry;
    struct              IBusRegistryClass;
    IBusRegistry *      ibus_registry_new                   (void);
    void                ibus_registry_load                  (IBusRegistry *registry);
    void                ibus_registry_load_in_dir           (IBusRegistry *registry,
                                                             const gchar *dirname);
    gboolean            ibus_registry_load_cache            (IBusRegistry *registry,
                                                             gboolean is_user);
    gboolean            ibus_registry_load_cache_file       (IBusRegistry *registry,
                                                             const gchar *filename);
    gboolean            ibus_registry_save_cache            (IBusRegistry *registry,
                                                             gboolean is_user);
    gboolean            ibus_registry_save_cache_file       (IBusRegistry *registry,
                                                             const gchar *filename);
    void                ibus_registry_output                (IBusRegistry *registry,
                                                             GString *output,
                                                             int indent);
    gboolean            ibus_registry_check_modification    (IBusRegistry *registry);
    GList *             ibus_registry_get_components        (IBusRegistry *registry);
    GList *             ibus_registry_get_observed_paths    (IBusRegistry *registry);
    void                ibus_registry_start_monitor_changes (IBusRegistry *registry);

## Object Hierarchy

      GObject
       +----GInitiallyUnowned
             +----IBusObject
                   +----IBusSerializable
                         +----IBusRegistry

## Signals

      "changed"                                        : Run Last

## Description

An IBusRegistry loads IBus component files and generates the cache files.

see_also: IBusComponent

## Details

### struct IBusRegistry

    struct IBusRegistry;

Registry cache handling. You can load the registry from compose files or a cache file.

### struct IBusRegistryClass

    struct IBusRegistryClass {
        /* class members */
    };

### ibus_registry_new ()

    IBusRegistry *      ibus_registry_new                   (void);

New a IBusRegistry

Returns : | A newly allocated IBusRegistry.

### ibus_registry_load ()

    void                ibus_registry_load                  (IBusRegistry *registry);

Read all XML files in a IBus component directory (typically /usr/share/ibus/component/ *.xml) and update the registry object. IBUS_COMPONENT_PATH environment valuable is also available for the custom component directories, whose delimiter is ':'.

`registry` : | An IBusRegistry.

### ibus_registry_load_in_dir ()

    void                ibus_registry_load_in_dir           (IBusRegistry *registry,
                                                             const gchar *dirname);

Read all XML files in `dirname`, create a IBusComponent object for each file, and add the component objects to the registry. If `dirname` is "/usr/share/ibus/component", this API and `ibus_registry_load()` are same.

`registry` : | An IBusRegistry.
`dirname` : | IBus component directory which includes XML files.

### ibus_registry_load_cache ()

    gboolean            ibus_registry_load_cache            (IBusRegistry *registry,
                                                             gboolean is_user);

Load the user or system registry cache.

`registry` : | An IBusRegistry.
`is_user` : | `TRUE` if the registry cache is loaded in the user directory.
Returns : | `TRUE` if the cache exists and is loaded successfully, `FALSE` otherwise.

### ibus_registry_load_cache_file ()

    gboolean            ibus_registry_load_cache_file       (IBusRegistry *registry,
                                                             const gchar *filename);

Load the registry cache `filename`.

`registry` : | An IBusRegistry.
`filename` : | The file path of the registry cache
Returns : | `TRUE` if the cache exists and is loaded successfully, `FALSE` otherwise.

### ibus_registry_save_cache ()

    gboolean            ibus_registry_save_cache            (IBusRegistry *registry,
                                                             gboolean is_user);

Save the registry in a user directory or system directory.

`registry` : | An IBusRegistry.
`is_user` : | `TRUE` if the registry cache is saved in the user directory.
Returns : | `TRUE` if the cache is saved successfully, `FALSE` otherwise.

### ibus_registry_save_cache_file ()

    gboolean            ibus_registry_save_cache_file       (IBusRegistry *registry,
                                                             const gchar *filename);

Save the registry cache `filename`.

`registry` : | An IBusRegistry.
`filename` : | The file path of the registry cache
Returns : | `TRUE` if the cache is saved successfully, `FALSE` otherwise.

### ibus_registry_output ()

    void                ibus_registry_output                (IBusRegistry *registry,
                                                             GString *output,
                                                             int indent);

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

`registry` : | An IBusRegistry.
`output` : | GString that holds the result.
`indent` : | level of indent.

### ibus_registry_check_modification ()

    gboolean            ibus_registry_check_modification    (IBusRegistry *registry);

Check if the registry is updated.

`registry` : | An IBusRegistry.
Returns : | `TRUE` if mtime is changed; `FALSE` otherwise.

### ibus_registry_get_components ()

    GList *             ibus_registry_get_components        (IBusRegistry *registry);

List components.

`registry` : | An IBusRegistry.
Returns : | a list of IBusComponent objects. The caller has to call `g_list_free()` for the returned list. [transfer container][element-type IBusComponent]

### ibus_registry_get_observed_paths ()

    GList *             ibus_registry_get_observed_paths    (IBusRegistry *registry);

List observed paths.

`registry` : | An IBusRegistry.
Returns : | a list of IBusObservedPath objects. The caller has to call `g_list_free()` for the returned list. [transfer container][element-type IBusObservedPath]

### ibus_registry_start_monitor_changes ()

    void                ibus_registry_start_monitor_changes (IBusRegistry *registry);

Start to monitor observed paths.

`registry` : | An IBusRegistry.

## Signal Details

### The `"changed"` signal

    void                user_function                      (IBusRegistry *registry,
                                                            gpointer      user_data)      : Run Last

Emitted when any observed paths are changed. A method is not associated in this class. the "changed" signal would be handled in other classes.

See also: `ibus_registry_start_monitor_changes()`.

`registry` : | An IBusRegistry.
`user_data` : | user data set when the signal handler was connected.