ThunarxFileInfo

## ThunarxFileInfo ThunarxFileInfo — Abstraction of a file handled within the file manager |

## Stability Level

Stable, unless otherwise indicated

## Synopsis

    #include <thunarx/thunarx.h>

                ThunarxFileInfoIface;
                ThunarxFileInfo;
    gchar*      thunarx_file_info_get_name      (ThunarxFileInfo *file_info);
    gchar*      thunarx_file_info_get_uri       (ThunarxFileInfo *file_info);
    gchar*      thunarx_file_info_get_parent_uri
                                                (ThunarxFileInfo *file_info);
    gchar*      thunarx_file_info_get_uri_scheme
                                                (ThunarxFileInfo *file_info);
    gchar*      thunarx_file_info_get_mime_type (ThunarxFileInfo *file_info);
    gboolean    thunarx_file_info_has_mime_type (ThunarxFileInfo *file_info,
                                                 const gchar *mime_type);
    gboolean    thunarx_file_info_is_directory  (ThunarxFileInfo *file_info);
    GList*      thunarx_file_info_list_copy     (GList *file_infos);
    void        thunarx_file_info_list_free     (GList *file_infos);

## Object Hierarchy

      GInterface
       +----ThunarxFileInfo

## Prerequisites

ThunarxFileInfo requires GObject.

## Description

The ThunarxFileInfo interface provides extensions with a way to access information about a file handled within the file manager.

## Details

### ThunarxFileInfoIface

    typedef struct {
      gchar     *(*get_name)        (ThunarxFileInfo *file_info);

      gchar     *(*get_uri)         (ThunarxFileInfo *file_info);
      gchar     *(*get_parent_uri)  (ThunarxFileInfo *file_info);
      gchar     *(*get_uri_scheme)  (ThunarxFileInfo *file_info);

      gchar     *(*get_mime_type)   (ThunarxFileInfo *file_info);
      gboolean   (*has_mime_type)   (ThunarxFileInfo *file_info,
                                     const gchar     *mime_type);

      gboolean   (*is_directory)    (ThunarxFileInfo *file_info);
    } ThunarxFileInfoIface;

Interface with virtual methods implemented by the file manager and accessible from the extensions.

`get_name` () | See `thunarx_file_info_get_name()`.
`get_uri` () | See `thunarx_file_info_get_uri()`.
`get_parent_uri` () | See `thunarx_file_info_get_parent_uri()`.
`get_uri_scheme` () | See `thunarx_file_info_get_uri_scheme()`.
`get_mime_type` () | See `thunarx_file_info_get_mime_type()`.
`has_mime_type` () | See `thunarx_file_info_has_mime_type()`.
`is_directory` () | See `thunarx_file_info_is_directory()`.

### ThunarxFileInfo

    typedef struct _ThunarxFileInfo ThunarxFileInfo;

File info type, which is mapped to the real file info implementation within the file manager.

### thunarx_file_info_get_name ()

    gchar*      thunarx_file_info_get_name      (ThunarxFileInfo *file_info);

Returns the real name of the file represented by `file_info` in the local file system encoding. You can use `g_filename_display_name()` or similar functions to generate an UTF-8 version of the name, which is suitable for use in the user interface.

The caller is responsible to free the returned string using `g_free()` when no longer needed.

`file_info` : | a ThunarxFileInfo.
Returns : | the real name of the file represented by `file_info`.

### thunarx_file_info_get_uri ()

    gchar*      thunarx_file_info_get_uri       (ThunarxFileInfo *file_info);

Returns the escaped, fully qualified URI of the file object represented by `file_info`. You may use `g_filename_from_uri()` and similar functions to work with the returned URI.

The caller is responsible to free the returned string using `g_free()` when no longer needed.

`file_info` : | a ThunarxFileInfo.
Returns : | the fully qualified URI of `file_info`.

### thunarx_file_info_get_parent_uri ()

    gchar*      thunarx_file_info_get_parent_uri
                                                (ThunarxFileInfo *file_info);

Returns the URI to the parent file of `file_info` or `NULL` if `file_info` has no parent. Note that the parent URI may be of a different type than the URI of `file_info`. For example, the parent of "file:///" is "computer:///".

The caller is responsible to free the returned string using `g_free()` when no longer needed.

`file_info` : | a ThunarxFileInfo.
Returns : | the parent URI for `file_info` or `NULL`.

### thunarx_file_info_get_uri_scheme ()

    gchar*      thunarx_file_info_get_uri_scheme
                                                (ThunarxFileInfo *file_info);

Returns the URI scheme of the file represented by `file_info`. E.g. if `file_info` refers to the file "file:///usr/home", the return value will be "file".

The caller is responsible to free the returned string using `g_free()` when no longer needed.

`file_info` : | a ThunarxFileInfo.
Returns : | the URI scheme for `file_info`.

### thunarx_file_info_get_mime_type ()

    gchar*      thunarx_file_info_get_mime_type (ThunarxFileInfo *file_info);

Returns the MIME-type of the file represented by `file_info` or `NULL` if no MIME-type is known for `file_info`.

The caller is responsible to free the returned string using `g_free()` when no longer needed.

`file_info` : | a ThunarxFileInfo.
Returns : | the MIME-type for `file_info` or `NULL`.

### thunarx_file_info_has_mime_type ()

    gboolean    thunarx_file_info_has_mime_type (ThunarxFileInfo *file_info,
                                                 const gchar *mime_type);

Checks whether `file_info` is of the given `mime_type` or whether the MIME-type of `file_info` is a subclass of `mime_type`.

This is the preferred way for most extensions to check whether they support a given file or not, and you should consider using this method rather than `thunarx_file_info_get_mime_type()`. A simple example would be a menu extension that performs a certain action on text files. In this case you want to check whether a given ThunarxFileInfo refers to any kind of text file, not only to "text/plain" (e.g. this also includes "text/xml" and "application/x-desktop").

But you should be aware that this method may take some time to test whether `mime_type` is valid for `file_info`, so don't call it too often.

`file_info` : | a ThunarxFileInfo.
`mime_type` : | a MIME-type (e.g. "text/plain").
Returns : | `TRUE` if `mime_type` is valid for `file_info`, else `FALSE`.

### thunarx_file_info_is_directory ()

    gboolean    thunarx_file_info_is_directory  (ThunarxFileInfo *file_info);

Checks whether `file_info` refers to a directory.

`file_info` : | a ThunarxFileInfo.
Returns : | `TRUE` if `file_info` is a directory.

### thunarx_file_info_list_copy ()

    GList*      thunarx_file_info_list_copy     (GList *file_infos);

Does a deep copy of `file_infos` and returns the new list.

`file_infos` : | a GList of ThunarxFileInfos.
Returns : | a copy of `file_infos`.

### thunarx_file_info_list_free ()

    void        thunarx_file_info_list_free     (GList *file_infos);

Frees the resources allocated for the `file_infos` list and decreases the reference count on the ThunarxFileInfos contained within.

`file_infos` : | a GList of ThunarxFileInfos.