## IBusObservedPath IBusObservedPath — Path object of IBus. |

## Stability Level

Stable, unless otherwise indicated

## Synopsis

    struct              IBusObservedPath;
    struct              IBusObservedPathClass;
    IBusObservedPath *  ibus_observed_path_new_from_xml_node
                                                            (XMLNode *node,
                                                             gboolean fill_stat);
    IBusObservedPath *  ibus_observed_path_new              (const gchar *path,
                                                             gboolean fill_stat);
    GList *             ibus_observed_path_traverse         (IBusObservedPath *path,
                                                             gboolean dir_only);
    gboolean            ibus_observed_path_check_modification
                                                            (IBusObservedPath *path);
    void                ibus_observed_path_output           (IBusObservedPath *path,
                                                             GString *output,
                                                             gint indent);

## Object Hierarchy

      GObject
       +----GInitiallyUnowned
             +----IBusObject
                   +----IBusSerializable
                         +----IBusObservedPath

## Description

IBusObservedPath provides methods for file path manipulation, such as monitor modification, directory tree traversal.

## Details

### struct IBusObservedPath

    struct IBusObservedPath {
        gchar *path;
        glong mtime;
        gboolean is_dir;
        gboolean is_exist;
    };

Data structure of IBusObservedPath.

gchar *`path`; | Path to be handled.
glong `mtime`; | Modified time.
gboolean `is_dir`; | Whether the file is the path directory.
gboolean `is_exist`; | Whether the file exists.

### struct IBusObservedPathClass

    struct IBusObservedPathClass {
        IBusSerializableClass parent;

        /* class members */
    };

### ibus_observed_path_new_from_xml_node ()

    IBusObservedPath *  ibus_observed_path_new_from_xml_node
                                                            (XMLNode *node,
                                                             gboolean fill_stat);

New an IBusObservedPath from an XML node.

`node` : | An XML node that contain path.
`fill_stat` : | Auto-fill the path status.
Returns : | A newly allocated IBusObservedPath.

### ibus_observed_path_new ()

    IBusObservedPath *  ibus_observed_path_new              (const gchar *path,
                                                             gboolean fill_stat);

New an IBusObservedPath from an XML node.

`path` : | The path string.
`fill_stat` : | Auto-fill the path status.
Returns : | A newly allocated IBusObservedPath.

### ibus_observed_path_traverse ()

    GList *             ibus_observed_path_traverse         (IBusObservedPath *path,
                                                             gboolean dir_only);

Recursively traverse the path and put the files and subdirectory in to a newly allocated GLists, if the `path` is a directory. Otherwise returns NULL.

`path` : | An IBusObservedPath.
`dir_only` : | Only looks for subdirs, not files
Returns : | A newly allocate GList which holds content in path; NULL if `path` is not directory. [element-type IBusObservedPath]

### ibus_observed_path_check_modification ()

    gboolean            ibus_observed_path_check_modification
                                                            (IBusObservedPath *path);

Checks whether the path is modified by comparing the mtime in object and mtime in file system. Returns TRUE if imtime is changed, otherwise FALSE.

`path` : | An IBusObservedPath.
Returns : | TRUE if mtime is changed; FALSE otherwise.

### ibus_observed_path_output ()

    void                ibus_observed_path_output           (IBusObservedPath *path,
                                                             GString *output,
                                                             gint indent);

Append the observed path to a string with following format: <path mtime="<i>modified time</i>" ><i>path</i></path>

`path` : | An IBusObservedPath.
`output` : | Path is appended to.
`indent` : | number of indent.