| Thunar Extensions Reference Manual | ||||
|---|---|---|---|---|
| Top | Description | Object Hierarchy | Prerequisites | ||||
ThunarxPropertyPageProviderThunarxPropertyPageProvider — The interface to extensions that provide additional property pages |
#include <thunarx/thunarx.h>
ThunarxPropertyPageProvider;
struct ThunarxPropertyPageProviderIface;
GList * thunarx_property_page_provider_get_pages
(ThunarxPropertyPageProvider *provider,
GList *files);
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.
typedef struct _ThunarxPropertyPageProvider ThunarxPropertyPageProvider;
Property page provider type.
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.
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);
|
a ThunarxPropertyPageProvider. |
|
the list of ThunarxFileInfos for which a properties dialog will be displayed. |
Returns : |
the list of ThunarxPropertyPages that provider has to offer
for files. |