## ThunarVfsMonitor

ThunarVfsMonitor — Portable file system monitoring class.

## Synopsis

    #include <thunar-vfs/thunar-vfs.h>

                        ThunarVfsMonitor;
    enum                ThunarVfsMonitorEvent;
                        ThunarVfsMonitorHandle;
    void                (*ThunarVfsMonitorCallback)         (ThunarVfsMonitor *monitor,
                                                             ThunarVfsMonitorHandle *handle,
                                                             ThunarVfsMonitorEvent event,
                                                             ThunarVfsPath *handle_path,
                                                             ThunarVfsPath *event_path,
                                                             gpointer user_data);
    ThunarVfsMonitor *  thunar_vfs_monitor_get_default      (void);
    ThunarVfsMonitorHandle * thunar_vfs_monitor_add_directory
                                                            (ThunarVfsMonitor *monitor,
                                                             ThunarVfsPath *path,
                                                             ThunarVfsMonitorCallback callback,
                                                             gpointer user_data);
    ThunarVfsMonitorHandle * thunar_vfs_monitor_add_file    (ThunarVfsMonitor *monitor,
                                                             ThunarVfsPath *path,
                                                             ThunarVfsMonitorCallback callback,
                                                             gpointer user_data);
    void                thunar_vfs_monitor_remove           (ThunarVfsMonitor *monitor,
                                                             ThunarVfsMonitorHandle *handle);
    void                thunar_vfs_monitor_feed             (ThunarVfsMonitor *monitor,
                                                             ThunarVfsMonitorEvent event,
                                                             ThunarVfsPath *path);
    void                thunar_vfs_monitor_wait             (ThunarVfsMonitor *monitor);

## Object Hierarchy

      GObject
       +----ThunarVfsMonitor

## Description

## Details

### ThunarVfsMonitor

    typedef struct _ThunarVfsMonitor ThunarVfsMonitor;

The ThunarVfsMonitor contains private data only, and should be accessed using the functions below.

### enum ThunarVfsMonitorEvent

    typedef enum
    {
      THUNAR_VFS_MONITOR_EVENT_CHANGED,
      THUNAR_VFS_MONITOR_EVENT_CREATED,
      THUNAR_VFS_MONITOR_EVENT_DELETED,
    } ThunarVfsMonitorEvent;

Describes an event that occurred on a ThunarVfsMonitorHandle.

`THUNAR_VFS_MONITOR_EVENT_CHANGED` | a file or directory was changed.
`THUNAR_VFS_MONITOR_EVENT_CREATED` | a file or directory was created.
`THUNAR_VFS_MONITOR_EVENT_DELETED` | a file or directory was deleted.

### ThunarVfsMonitorHandle

    typedef struct _ThunarVfsMonitorHandle ThunarVfsMonitorHandle;

A handle on a file system entity, which is currently watched by a ThunarVfsMonitor.

### ThunarVfsMonitorCallback ()

    void                (*ThunarVfsMonitorCallback)         (ThunarVfsMonitor *monitor,
                                                             ThunarVfsMonitorHandle *handle,
                                                             ThunarVfsMonitorEvent event,
                                                             ThunarVfsPath *handle_path,
                                                             ThunarVfsPath *event_path,
                                                             gpointer user_data);

The prototype for callback functions that will be called by a ThunarVfsMonitor whenever one of its associated ThunarVfsMonitorHandles notice a change.

`monitor` : | a ThunarVfsMonitor.
`handle` : | a ThunarVfsMonitorHandle.
`event` : | the event that occurred.
`handle_path` : | the ThunarVfsPath that was specified when registering the `handle`.
`event_path` : | the ThunarVfsPath on which the `event` occurred.
`user_data` : | the user data that was specified when registering the `handle` with the `monitor`.

### thunar_vfs_monitor_get_default ()

    ThunarVfsMonitor *  thunar_vfs_monitor_get_default      (void);

Returns the shared ThunarVfsMonitor instance. The caller is responsible to call `g_object_unref()` on the returned object when no longer needed.

Returns : | a reference to the shared ThunarVfsMonitor instance.

### thunar_vfs_monitor_add_directory ()

    ThunarVfsMonitorHandle * thunar_vfs_monitor_add_directory
                                                            (ThunarVfsMonitor *monitor,
                                                             ThunarVfsPath *path,
                                                             ThunarVfsMonitorCallback callback,
                                                             gpointer user_data);

Registers `path` as directory for `monitor`. `monitor` will invoke `callback` whenever it notices a change to the directory to which `path` refers or any of the files within the directory.

The returned ThunarVfsMonitorHandle can be used to remove the `path` from `monitor` using `thunar_vfs_monitor_remove()`.

`monitor` : | a ThunarVfsMonitor.
`path` : | the ThunarVfsPath of the directory that should be watched.
`callback` : | the callback function to invoke.
`user_data` : | additional data to pass to `callback`.
Returns : | the ThunarVfsMonitorHandle for the new watch.

### thunar_vfs_monitor_add_file ()

    ThunarVfsMonitorHandle * thunar_vfs_monitor_add_file    (ThunarVfsMonitor *monitor,
                                                             ThunarVfsPath *path,
                                                             ThunarVfsMonitorCallback callback,
                                                             gpointer user_data);

Registers `path` as file with `monitor`. `monitor` will then invoke `callback` whenever it notices a change to the file to which `path` refers.

The returned ThunarVfsMonitorHandle can be used to remove the `path` from `monitor` using `thunar_vfs_monitor_remove()`.

`monitor` : | a ThunarVfsMonitor.
`path` : | the ThunarVfsPath of the file that should be watched.
`callback` : | the callback function to invoke.
`user_data` : | additional data to pass to `callback`.
Returns : | the ThunarVfsMonitorHandle for the new watch.

### thunar_vfs_monitor_remove ()

    void                thunar_vfs_monitor_remove           (ThunarVfsMonitor *monitor,
                                                             ThunarVfsMonitorHandle *handle);

Removes `handle` from `monitor`.

`monitor` : | a ThunarVfsMonitor.
`handle` : | a valid ThunarVfsMonitorHandle for `monitor`.

### thunar_vfs_monitor_feed ()

    void                thunar_vfs_monitor_feed             (ThunarVfsMonitor *monitor,
                                                             ThunarVfsMonitorEvent event,
                                                             ThunarVfsPath *path);

Explicitly injects the given `event` into `monitor`s event processing logic.

`monitor` : | a ThunarVfsMonitor.
`event` : | the ThunarVfsMonitorEvent that should be emulated.
`path` : | the ThunarVfsPath on which `event` took place.

### thunar_vfs_monitor_wait ()

    void                thunar_vfs_monitor_wait             (ThunarVfsMonitor *monitor);

Suspends the execution of the current thread until the `monitor` has processed all currently pending events. The calling thread must own a reference on the `monitor`!

This method should never be called from the main thread or you'll lock up your application!!

`monitor` : | a ThunarVfsMonitor.