ThunarxPropertyPageProvider

ThunarxPropertyPageProvider — The interface to extensions that provide additional property pages

Stability Level

Stable, unless otherwise indicated

Synopsis

#include <thunarx/thunarx.h>

                    ThunarxPropertyPageProvider;
struct              ThunarxPropertyPageProviderIface;
GList *             thunarx_property_page_provider_get_pages
                                                        (ThunarxPropertyPageProvider *provider,
                                                         GList *files);

Object Hierarchy

  GInterface
   +----ThunarxPropertyPageProvider

Prerequisites

ThunarxPropertyPageProvider requires GObject.

Description

To add a property page to the file properties dialog, extensions must implement the ThunarxPropertyPageProvider interface. This interface has only one virtual method, get_pages, that is passed a list of ThunarxFileInfo objects and returns a list of ThunarxPropertyPage objects.

Details

ThunarxPropertyPageProvider

typedef struct _ThunarxPropertyPageProvider ThunarxPropertyPageProvider;

Property page provider type.


struct ThunarxPropertyPageProviderIface

struct ThunarxPropertyPageProviderIface {
  GList *(*get_pages) (ThunarxPropertyPageProvider *provider,
                       GList                       *files);
};

Interface with virtual methods implemented by extensions that provide additional pages for the file properties dialog.


thunarx_property_page_provider_get_pages ()

GList *             thunarx_property_page_provider_get_pages
                                                        (ThunarxPropertyPageProvider *provider,
                                                         GList *files);

Returns the list of ThunarxPropertyPages that provider has to offer for files.

Extensions that implement this interface, must first check whether they support all the ThunarxFileInfos in the list of files. Most extensions will probably only support ThunarxPropertyPages for exactly one file of a certain type. For example an MP3-Tag editor property page will most probably support only a single audio file, and so the method would be implemented like this

GList*
tag_provider_get_pages (ThunarxPropertyPageProvider *property_page_provider,
                        GList                       *files)
{
  if (g_list_length (files) != 1)
    return NULL;
  else if (!thunarx_file_info_has_mime_type (files->data, "audio/mp3"))
    return NULL;
  else
    return g_list_append (NULL, tag_page_new (files->data));
}

where tag_page_new() allocates a new TagPage instance for a ThunarxFileInfo object passed to it. See the description of the ThunarxPropertyPage class for additional information about the TagPage example class.

As a special note, this method automatically takes a reference on the provider for every ThunarxPropertyPage object returned from the real implementation of this method in provider. This is to make sure that the extension stays in memory for atleast the time that the pages are used. If the extension wants to stay in memory for a longer time, it'll need to take care of this itself (e.g. by taking an additional reference on the provider itself, that's released at a later time).

The caller is responsible to free the returned list of pages using something like this when no longer needed:

g_list_foreach (list, (GFunc) g_object_ref_sink, NULL);
g_list_foreach (list, (GFunc) g_object_unref, NULL);
g_list_free (list);

provider :

a ThunarxPropertyPageProvider.

files :

the list of ThunarxFileInfos for which a properties dialog will be displayed.

Returns :

the list of ThunarxPropertyPages that provider has to offer for files.

See Also

The description of the ThunarxPropertyPage class.