## ThunarVfsVolume ThunarVfsVolume |

## Synopsis

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

    enum                ThunarVfsVolumeKind;
    enum                ThunarVfsVolumeStatus;
                        ThunarVfsVolume;
    ThunarVfsVolumeKind thunar_vfs_volume_get_kind          (ThunarVfsVolume *volume);
    const gchar*        thunar_vfs_volume_get_name          (ThunarVfsVolume *volume);
    ThunarVfsVolumeStatus thunar_vfs_volume_get_status      (ThunarVfsVolume *volume);
    ThunarVfsPath*      thunar_vfs_volume_get_mount_point   (ThunarVfsVolume *volume);
    gboolean            thunar_vfs_volume_is_mounted        (ThunarVfsVolume *volume);
    gboolean            thunar_vfs_volume_is_present        (ThunarVfsVolume *volume);
    gboolean            thunar_vfs_volume_is_ejectable      (ThunarVfsVolume *volume);
    gboolean            thunar_vfs_volume_is_removable      (ThunarVfsVolume *volume);
    const gchar*        thunar_vfs_volume_lookup_icon_name  (ThunarVfsVolume *volume,
                                                             GtkIconTheme *icon_theme);
    gboolean            thunar_vfs_volume_eject             (ThunarVfsVolume *volume,
                                                             GtkWidget *window,
                                                             GError **error);
    gboolean            thunar_vfs_volume_mount             (ThunarVfsVolume *volume,
                                                             GtkWidget *window,
                                                             GError **error);
    gboolean            thunar_vfs_volume_unmount           (ThunarVfsVolume *volume,
                                                             GtkWidget *window,
                                                             GError **error);

## Object Hierarchy

      GObject
       +----ThunarVfsVolume

## Signals

      "changed"                                        : Run Last
      "mounted"                                        : Run Last
      "pre-unmount"                                    : Run Last
      "unmounted"                                      : Run Last

## Description

## Details

### enum ThunarVfsVolumeKind

    typedef enum
    {
      THUNAR_VFS_VOLUME_KIND_UNKNOWN,
      THUNAR_VFS_VOLUME_KIND_CDROM,
      THUNAR_VFS_VOLUME_KIND_CDR,
      THUNAR_VFS_VOLUME_KIND_CDRW,
      THUNAR_VFS_VOLUME_KIND_DVDROM,
      THUNAR_VFS_VOLUME_KIND_DVDRAM,
      THUNAR_VFS_VOLUME_KIND_DVDR,
      THUNAR_VFS_VOLUME_KIND_DVDRW,
      THUNAR_VFS_VOLUME_KIND_DVDPLUSR,
      THUNAR_VFS_VOLUME_KIND_DVDPLUSRW,
      THUNAR_VFS_VOLUME_KIND_FLOPPY,
      THUNAR_VFS_VOLUME_KIND_HARDDISK,
      THUNAR_VFS_VOLUME_KIND_USBSTICK,
      THUNAR_VFS_VOLUME_KIND_AUDIO_PLAYER,
      THUNAR_VFS_VOLUME_KIND_AUDIO_CD,
      THUNAR_VFS_VOLUME_KIND_MEMORY_CARD,
      THUNAR_VFS_VOLUME_KIND_REMOVABLE_DISK,
    } ThunarVfsVolumeKind;

Describes the type of a VFS volume.

`THUNAR_VFS_VOLUME_KIND_UNKNOWN` | Unknown volume.
`THUNAR_VFS_VOLUME_KIND_CDROM` | CD-ROMs.
`THUNAR_VFS_VOLUME_KIND_CDR` | CD-Rs.
`THUNAR_VFS_VOLUME_KIND_CDRW` | CD-RWs.
`THUNAR_VFS_VOLUME_KIND_DVDROM` | DVD-ROMs.
`THUNAR_VFS_VOLUME_KIND_DVDRAM` | DVD-RAMs.
`THUNAR_VFS_VOLUME_KIND_DVDR` | DVD-Rs.
`THUNAR_VFS_VOLUME_KIND_DVDRW` | DVD-RWs.
`THUNAR_VFS_VOLUME_KIND_DVDPLUSR` | DVD+Rs.
`THUNAR_VFS_VOLUME_KIND_DVDPLUSRW` | DVD+RWs.
`THUNAR_VFS_VOLUME_KIND_FLOPPY` | Floppy drives.
`THUNAR_VFS_VOLUME_KIND_HARDDISK` | Hard disk drives.
`THUNAR_VFS_VOLUME_KIND_USBSTICK` | USB sticks.
`THUNAR_VFS_VOLUME_KIND_AUDIO_PLAYER` | Portable audio players (i.e. iPod).
`THUNAR_VFS_VOLUME_KIND_AUDIO_CD` | Audio CDs.
`THUNAR_VFS_VOLUME_KIND_MEMORY_CARD` | Memory cards.
`THUNAR_VFS_VOLUME_KIND_REMOVABLE_DISK` | Other removable disks.

### enum ThunarVfsVolumeStatus

    typedef enum /*< flags >*/
    {
      THUNAR_VFS_VOLUME_STATUS_MOUNTED   = 1 << 0,
      THUNAR_VFS_VOLUME_STATUS_PRESENT   = 1 << 1,
      THUNAR_VFS_VOLUME_STATUS_MOUNTABLE = 1 << 2,
    } ThunarVfsVolumeStatus;

Describes the current status of a VFS volume.

### ThunarVfsVolume

    typedef struct _ThunarVfsVolume ThunarVfsVolume;

### thunar_vfs_volume_get_kind ()

    ThunarVfsVolumeKind thunar_vfs_volume_get_kind          (ThunarVfsVolume *volume);

Returns the kind of drive/device representd by `volume`.

`volume` : | a ThunarVfsVolume instance.
Returns : | the kind of `volume`.

### thunar_vfs_volume_get_name ()

    const gchar*        thunar_vfs_volume_get_name          (ThunarVfsVolume *volume);

Returns the name of the `volume`. This is usually the name of the device or the label of the medium, if a medium is present.

`volume` : | a ThunarVfsVolume instance.
Returns : | the name of `volume`.

### thunar_vfs_volume_get_status ()

    ThunarVfsVolumeStatus thunar_vfs_volume_get_status      (ThunarVfsVolume *volume);

Determines the current status of the `volume`, e.g. whether or not the `volume` is currently mounted, or whether a medium is present.

`volume` : | a ThunarVfsVolume instance.
Returns : | the status for `volume`.

### thunar_vfs_volume_get_mount_point ()

    ThunarVfsPath*      thunar_vfs_volume_get_mount_point   (ThunarVfsVolume *volume);

Determines the current mount point for `volume`. If `volume` is mounted this will be the location at which it is currently mounted. Else it will be the location where `volume` is most probably being mounted. Note that this location may change during a call to `thunar_vfs_volume_mount()`, so be sure to check the mount point after the call to `thunar_vfs_volume_mount()`.

`volume` : | a ThunarVfsVolume instance.
Returns : | the path which identifies the path where the volume will be mounted (or is already mounted).

### thunar_vfs_volume_is_mounted ()

    gboolean            thunar_vfs_volume_is_mounted        (ThunarVfsVolume *volume);

Determines whether `volume` is currently mounted into the filesystem hierarchy.

`volume` : | a ThunarVfsVolume instance.
Returns : | `TRUE` if `volume` is mounted, else `FALSE`.

### thunar_vfs_volume_is_present ()

    gboolean            thunar_vfs_volume_is_present        (ThunarVfsVolume *volume);

Determines whether a medium is currently inserted for `volume`, e.g. for a CD-ROM drive, this will be `TRUE` only if a disc is present in the slot.

`volume` : | a ThunarVfsVolume instance.
Returns : | `TRUE` if `volume` is present, else `FALSE`.

### thunar_vfs_volume_is_ejectable ()

    gboolean            thunar_vfs_volume_is_ejectable      (ThunarVfsVolume *volume);

Determines whether the current user is allowed to eject the medium for `volume`. This method should return `TRUE` only if a medium is present and the `volume` is removable. Still, there's no warranty that a call to `thunar_vfs_volume_eject()` will succeed.

`volume` : | a ThunarVfsVolume instance.
Returns : | whether the medium for `volume` can be ejected.

### thunar_vfs_volume_is_removable ()

    gboolean            thunar_vfs_volume_is_removable      (ThunarVfsVolume *volume);

Determines whether `volume` is a removable device, for example a CD-ROM, an USB stick or a floppy drive.

`volume` : | a ThunarVfsVolume instance.
Returns : | `TRUE` if `volume` is a removable device, else `FALSE`.

### thunar_vfs_volume_lookup_icon_name ()

    const gchar*        thunar_vfs_volume_lookup_icon_name  (ThunarVfsVolume *volume,
                                                             GtkIconTheme *icon_theme);

Tries to find a suitable icon for `volume` in the given `icon_theme` and returns its name. If no suitable icon is found in `icon_theme`, then a fallback icon name will be returned. This way you can always count on this method to return a valid string.

`volume` : | a ThunarVfsVolume instance.
`icon_theme` : | a GtkIconTheme instance.
Returns : | the icon name.

### thunar_vfs_volume_eject ()

    gboolean            thunar_vfs_volume_eject             (ThunarVfsVolume *volume,
                                                             GtkWidget *window,
                                                             GError **error);

Tries to eject the medium present for `volume` (or atleast to unmount the `volume`).

If ejecting `volume` requires some complex user interaction (basicly everything else than displaying an error dialog), it should popup a modal dialog on `window` (or on the default GdkScreen if `window` is `NULL`). But be aware, that if an implementation of ThunarVfsVolume performs user interaction during a call to this method, it must implement this method in a reentrant fashion!

`volume` : | a ThunarVfsVolume instance.
`window` : | a GtkWindow or `NULL`.
`error` : | return location for errors or `NULL`.
Returns : | `TRUE` if the medium for `volume` was successfully ejected (or atleast the `volume` was unmounted successfully), else `FALSE`.

### thunar_vfs_volume_mount ()

    gboolean            thunar_vfs_volume_mount             (ThunarVfsVolume *volume,
                                                             GtkWidget *window,
                                                             GError **error);

Tries to mount `volume`. Will return `TRUE` if either `volume` was already mounted previously to this method invokation or `volume` was successfully mounted now.

If mounting `volume` requires some complex user interaction (basicly everything else than displaying an error dialog), it should popup a modal dialog on `window` (or on the default GdkScreen if `window` is `NULL`). But be aware, that if an implementation of ThunarVfsVolume performs user interaction during a call to this method, it must implement this method in a reentrant fashion!

`volume` : | a ThunarVfsVolume instance.
`window` : | a GtkWindow or `NULL`.
`error` : | return location for errors or `NULL`.
Returns : | `TRUE` if the medium for `volume` was successfully mounted or was already mounted previously, else `FALSE`.

### thunar_vfs_volume_unmount ()

    gboolean            thunar_vfs_volume_unmount           (ThunarVfsVolume *volume,
                                                             GtkWidget *window,
                                                             GError **error);

Tries to unmount `volume`. Will return `TRUE` if either `volume` was already unmounted previously to this method invokation or `volume` was successfully unmounted now.

If unmounting `volume` requires some complex user interaction (basicly everything else than displaying an error dialog), it should popup a modal dialog on `window` (or on the default GdkScreen if `window` is `NULL`). But be aware, that if an implementation of ThunarVfsVolume performs user interaction during a call to this method, it must implement this method in a reentrant fashion!

`volume` : | a ThunarVfsVolume instance.
`window` : | a GtkWindow or `NULL`.
`error` : | return location for errors or `NULL`.
Returns : | `TRUE` if the medium for `volume` was successfully unmounted or wasn't mounted previously, else `FALSE`.

## Signal Details

### The `"changed"` signal

    void                user_function                      (ThunarVfsVolume *volume,
                                                            gpointer         user_data)      : Run Last

Emitted whenever the state of `volume` changed.

`volume` : | the ThunarVfsVolume instance.
`user_data` : | user data set when the signal handler was connected.

### The `"mounted"` signal

    void                user_function                      (ThunarVfsVolume *volume,
                                                            gpointer         user_data)      : Run Last

Emitted by `volume` after a successfull mount operation.

`volume` : | the ThunarVfsVolume instance.
`user_data` : | user data set when the signal handler was connected.

### The `"pre-unmount"` signal

    void                user_function                      (ThunarVfsVolume *volume,
                                                            gpointer         user_data)      : Run Last

Emitted by `volume` right before an attempt is made to unmount the `volume`.

`volume` : | the ThunarVfsVolume instance.
`user_data` : | user data set when the signal handler was connected.

### The `"unmounted"` signal

    void                user_function                      (ThunarVfsVolume *volume,
                                                            gpointer         user_data)      : Run Last

Emitted by `volume` right after the `volume` was successfully unmounted.

`volume` : | the ThunarVfsVolume instance.
`user_data` : | user data set when the signal handler was connected.