## ThunarxFileInfo

ThunarxFileInfo — Abstraction of a file handled within the file manager

## Functions

gchar * | thunarx_file_info_get_name ()
gchar * | thunarx_file_info_get_uri ()
gchar * | thunarx_file_info_get_parent_uri ()
gchar * | thunarx_file_info_get_uri_scheme ()
gchar * | thunarx_file_info_get_mime_type ()
gboolean | thunarx_file_info_has_mime_type ()
gboolean | thunarx_file_info_is_directory ()
GFileInfo * | thunarx_file_info_get_file_info ()
GFileInfo * | thunarx_file_info_get_filesystem_info ()
GFile * | thunarx_file_info_get_location ()
void | thunarx_file_info_changed ()
void | thunarx_file_info_renamed ()
GList * | thunarx_file_info_list_copy ()
void | thunarx_file_info_list_free ()

## Signals

void | changed | Run First
void | renamed | Run First

## Types and Values

struct | ThunarxFileInfoIface
| ThunarxFileInfo
#define | THUNARX_TYPE_FILE_INFO_LIST

## Object Hierarchy

        GInterface
        ╰── ThunarxFileInfo

## Prerequisites

ThunarxFileInfo requires GObject.

## Includes

    #include <thunarx/thunarx.h>

## Description

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

## Functions

### 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.

#### Parameters

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.

#### Parameters

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.

#### Parameters

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.

#### Parameters

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.

#### Parameters

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.

#### Parameters

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.

#### Parameters

file_info | a ThunarxFileInfo. |

#### Returns

`TRUE` if `file_info` is a directory.

### thunarx_file_info_get_file_info ()

    GFileInfo *
    thunarx_file_info_get_file_info (ThunarxFileInfo *file_info);

Returns the GFileInfo associated with `file_info` , which includes additional information about the `file_info` as queried from GIO earlier. The caller is responsible to free the returned GFileInfo object using `g_object_unref()` when no longer needed.

#### Parameters

file_info | a ThunarxFileInfo. |

#### Returns

the GFileInfo object associated with `file_info` , which MUST be freed using `g_object_unref()`.

[transfer full]

### thunarx_file_info_get_filesystem_info ()

    GFileInfo *
    thunarx_file_info_get_filesystem_info (ThunarxFileInfo *file_info);

Returns the GFileInfo which includes additional information about the filesystem `file_info` resides on. The caller is responsible to free the returned GFileInfo object using `g_object_unref()` when no longer needed.

#### Parameters

file_info | a ThunarxFileInfo. |

#### Returns

the GFileInfo containing information about the filesystem of `file_info` or `NULL` if no filesystem information is available. It MUST be released using `g_object_unref()`.

[transfer full]

### thunarx_file_info_get_location ()

    GFile *
    thunarx_file_info_get_location (ThunarxFileInfo *file_info);

Returns the GFile `file_info` points to. The GFile is a more powerful tool than just the URI or the path. The caller is responsible to release the returned GFile using `g_object_unref()` when no longer needed.

#### Parameters

file_info | a ThunarxFileInfo. |

#### Returns

the GFile to which `file_info` points. It MUST be released using `g_object_unref()`.

[transfer full]

### thunarx_file_info_changed ()

    void
    thunarx_file_info_changed (ThunarxFileInfo *file_info);

Emits the ::changed signal on `file_info` . This method should not be invoked by Thunar plugins, instead the file manager itself will use this method to emit ::changed whenever it notices a change on `file_info` .

#### Parameters

file_info | a ThunarxFileInfo. |

### thunarx_file_info_renamed ()

    void
    thunarx_file_info_renamed (ThunarxFileInfo *file_info);

Emits the ::renamed signal on `file_info` . This method should not be invoked by Thunar plugins, instead the file manager will emit this signal whenever the user renamed the `file_info` .

The plugins should instead connect to the ::renamed signal and update it's internal state and it's user interface after the file manager renamed a file.

#### Parameters

file_info | a ThunarxFileInfo. |

### 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.

#### Parameters

file_infos | a GList of ThunarxFileInfos. | [element-type ThunarxFileInfo]

#### Returns

a copy of `file_infos` .

[transfer full][element-type ThunarxFileInfo]

### 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.

#### Parameters

file_infos | a GList of ThunarxFileInfos. | [element-type ThunarxFileInfo]

## Types and Values

### struct ThunarxFileInfoIface

    struct ThunarxFileInfoIface {
      /* virtual methods */
      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);

      GFileInfo *(*get_file_info) (ThunarxFileInfo *file_info);
      GFileInfo *(*get_filesystem_info) (ThunarxFileInfo *file_info);
      GFile *(*get_location) (ThunarxFileInfo *file_info);

      /* signals */
      void (*changed) (ThunarxFileInfo *file_info);
      void (*renamed) (ThunarxFileInfo *file_info);
    };

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

#### Members

`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()`. |
`get_file_info` () | See `thunarx_file_info_get_file_info()`. |
`get_filesystem_info` () | See `thunarx_filesystem_info_get_filesystem_info()`. |
`get_location` () | See `thunarx_location_get_location()`. |
`changed` () | See `thunarx_file_info_changed()`. |
`renamed` () | See `thunarx_file_info_renamed()`. |

### ThunarxFileInfo

    typedef struct _ThunarxFileInfo ThunarxFileInfo;

### THUNARX_TYPE_FILE_INFO_LIST

    #define THUNARX_TYPE_FILE_INFO_LIST (thunarx_file_info_list_get_type ())

## Signal Details

### The `“changed”` signal

    void
    user_function (ThunarxFileInfo *file_info,
                   gpointer         user_data)

Emitted whenever the system notices a change to `file_info` .

Thunar plugins should use this signal to stay informed about changes to a `file_info` for which they currently display information (i.e. in a ThunarxPropertyPage), and update it's user interface whenever a change is noticed on `file_info` .

#### Parameters

file_info | a ThunarxFileInfo. |
user_data | user data set when the signal handler was connected. |

Flags: Run First

### The `“renamed”` signal

    void
    user_function (ThunarxFileInfo *file_info,
                   gpointer         user_data)

Emitted when the `file_info` is renamed to another name.

For example, within Thunar, ThunarFolder uses this signal to reregister it's VFS directory monitor, after the corresponding file was renamed.

#### Parameters

file_info | a ThunarxFileInfo |
user_data | user data set when the signal handler was connected. |

Flags: Run First