## ThunarVfsJob

ThunarVfsJob

## Synopsis

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

    enum                ThunarVfsJobResponse;
                        ThunarVfsJob;
    ThunarVfsJob*       thunar_vfs_job_launch               (ThunarVfsJob *job);
    void                thunar_vfs_job_cancel               (ThunarVfsJob *job);
    gboolean            thunar_vfs_job_cancelled            (const ThunarVfsJob *job);

## Object Hierarchy

      GObject
       +----ThunarVfsJob

## Signals

      "ask"                                            : Run Last / No Hooks
      "ask-replace"                                    : Run Last / No Hooks
      "error"                                          : No Hooks
      "finished"                                       : No Hooks
      "info-message"                                   : No Hooks
      "infos-ready"                                    : No Hooks
      "new-files"                                      : No Hooks
      "percent"                                        : No Hooks

## Description

## Details

### enum ThunarVfsJobResponse

    typedef enum /*< flags >*/
    {
      THUNAR_VFS_JOB_RESPONSE_YES     = 1 << 0,
      THUNAR_VFS_JOB_RESPONSE_YES_ALL = 1 << 1,
      THUNAR_VFS_JOB_RESPONSE_NO      = 1 << 2,
      THUNAR_VFS_JOB_RESPONSE_CANCEL  = 1 << 3,
      THUNAR_VFS_JOB_RESPONSE_NO_ALL  = 1 << 4,
      THUNAR_VFS_JOB_RESPONSE_RETRY   = 1 << 5,
    } ThunarVfsJobResponse;

Possible responses for the ThunarVfsJob::ask signal.

### ThunarVfsJob

    typedef struct _ThunarVfsJob ThunarVfsJob;

### thunar_vfs_job_launch ()

    ThunarVfsJob*       thunar_vfs_job_launch               (ThunarVfsJob *job);

This functions schedules `job` to be run as soon as possible, in a separate thread.

`job` : | a ThunarVfsJob.
Returns : | a pointer to `job`.

### thunar_vfs_job_cancel ()

    void                thunar_vfs_job_cancel               (ThunarVfsJob *job);

Attempts to cancel the operation currently performed by `job`. Even after the cancellation of `job`, it may still emit signals, so you must take care of disconnecting all handlers appropriately if you cannot handle signals after cancellation.

`job` : | a ThunarVfsJob.

### thunar_vfs_job_cancelled ()

    gboolean            thunar_vfs_job_cancelled            (const ThunarVfsJob *job);

Checks whether `job` was previously cancelled by a call to `thunar_vfs_job_cancel()`.

`job` : | a ThunarVfsJob.
Returns : | `TRUE` if `job` is cancelled.

## Signal Details

### The `"ask"` signal

    ThunarVfsJobResponseuser_function                      (ThunarVfsJob        *job,
                                                            gchar               *message,
                                                            ThunarVfsJobResponse choices,
                                                            gpointer             user_data)      : Run Last / No Hooks

The `message` is garantied to contain valid UTF-8.

`job` : | a ThunarVfsJob.
`message` : | question to display to the user.
`choices` : | a combination of ThunarVfsInteractiveJobResponses.
`user_data` : | user data set when the signal handler was connected.
Returns : | the selected choice.

### The `"ask-replace"` signal

    ThunarVfsJobResponseuser_function                      (ThunarVfsJob  *job,
                                                            ThunarVfsInfo *src_info,
                                                            ThunarVfsInfo *dst_info,
                                                            gpointer       user_data)      : Run Last / No Hooks

Emitted to ask the user whether the destination file should be replaced by the source file.

`job` : | a ThunarVfsJob.
`src_info` : | the ThunarVfsInfo of the source file.
`dst_info` : | the ThunarVfsInfo of the destination file, that may be replaced with the source file.
`user_data` : | user data set when the signal handler was connected.
Returns : | the selected choice.

Since 0.8.1

### The `"error"` signal

    void                user_function                      (ThunarVfsJob *job,
                                                            gpointer      error,
                                                            gpointer      user_data)      : No Hooks

Emitted whenever an error occurs while executing the `job`.

`job` : | a ThunarVfsJob.
`error` : | a GError describing the cause.
`user_data` : | user data set when the signal handler was connected.

### The `"finished"` signal

    void                user_function                      (ThunarVfsJob *job,
                                                            gpointer      user_data)      : No Hooks

This signal will be automatically emitted once the `job` finishes its execution, no matter whether `job` completed successfully or was cancelled by the user.

`job` : | a ThunarVfsJob.
`user_data` : | user data set when the signal handler was connected.

### The `"info-message"` signal

    void                user_function                      (ThunarVfsJob *job,
                                                            gchar        *message,
                                                            gpointer      user_data)      : No Hooks

This signal is emitted to display information about the `job`. Examples of messages are "Preparing..." or "Cleaning up...".

The `message` is garantied to contain valid UTF-8, so it can be displayed by GtkWidgets out of the box.

`job` : | a ThunarVfsJob.
`message` : | information to be displayed about `job`.
`user_data` : | user data set when the signal handler was connected.

### The `"infos-ready"` signal

    gboolean            user_function                      (ThunarVfsJob *job,
                                                            gpointer      info_list,
                                                            gpointer      user_data)      : No Hooks

This signal is used by ThunarVfsJobs returned by the `thunar_vfs_listdir()` function whenever there's a bunch of ThunarVfsInfos ready. This signal is garantied to be never emitted with an `info_list` parameter of `NULL`.

To allow some further optimizations on the handler-side, the handler is allowed to take over ownership of the `info_list`, i.e. it can reuse the `infos` list and just replace the data elements with it's own objects based on the ThunarVfsInfos contained within the `info_list` (and of course properly unreffing the previously contained infos). If a handler takes over ownership of `info_list` it must return `TRUE` here, and no further handlers will be run. Else, if the handler doesn't want to take over ownership of `infos`, it must return `FALSE`, and other handlers will be run. Use this feature with care, and only if you can be sure that you are the only handler connected to this signal for a given job!

`job` : | a ThunarVfsJob.
`info_list` : | a list of ThunarVfsInfos.
`user_data` : | user data set when the signal handler was connected.
Returns : | `TRUE` if the handler took over ownership of `info_list`, else `FALSE`.

### The `"new-files"` signal

    void                user_function                      (ThunarVfsJob *job,
                                                            gpointer      path_list,
                                                            gpointer      user_data)      : No Hooks

This signal is emitted by the `job` right before the `job` is terminated and informs the application about the list of created files in `path_list`. `path_list` contains only the toplevel path items, that were specified by the application on creation of the `job`.

`job` : | a ThunarVfsJob.
`path_list` : | a list of ThunarVfsPaths that were created by `job`.
`user_data` : | user data set when the signal handler was connected.

### The `"percent"` signal

    void                user_function                      (ThunarVfsJob *job,
                                                            gdouble       percent,
                                                            gpointer      user_data)      : No Hooks

This signal is emitted to present the state of the overall progress.

The `percent` value is garantied to be in the range 0.0 to 100.0.

`job` : | a ThunarVfsJob.
`percent` : | the percentage of completeness.
`user_data` : | user data set when the signal handler was connected.