Prev

Up

Home

GTK+ Reference Manual

Next

Top  |  Description  |  Object Hierarchy

GtkFileFilter

GtkFileFilter Фильтр для выбора подмножества файлов

Краткое описание

#include <gtk/gtk.h> GtkFileFilter; GtkFileFilterInfo; enum GtkFileFilterFlags; gboolean (*GtkFileFilterFunc) (const GtkFileFilterInfo *filter_info, gpointer data); GtkFileFilter* gtk_file_filter_new (void); void gtk_file_filter_set_name (GtkFileFilter *filter, const gchar *name); const gchar* gtk_file_filter_get_name (GtkFileFilter *filter); void gtk_file_filter_add_mime_type (GtkFileFilter *filter, const gchar *mime_type); void gtk_file_filter_add_pattern (GtkFileFilter *filter, const gchar *pattern); void gtk_file_filter_add_pixbuf_formats (GtkFileFilter *filter); void gtk_file_filter_add_custom (GtkFileFilter *filter, GtkFileFilterFlags needed, GtkFileFilterFunc func, gpointer data, GDestroyNotify notify); GtkFileFilterFlags gtk_file_filter_get_needed (GtkFileFilter *filter); gboolean gtk_file_filter_filter (GtkFileFilter *filter, const GtkFileFilterInfo *filter_info);

Иерархия объектов

GObject +----GInitiallyUnowned +----GtkObject +----GtkFileFilter

Описание

GtkFileFilter может использоваться для ограничения показываемых файлов в GtkFileChooser. Файлы могут фильтроваться по имени (с помощью gtk_file_filter_add_pattern()), по mime типу (с помощью gtk_file_filter_add_mime_type()), или выборочно (с помощью gtk_file_filter_add_custom()).

Фильтрация mime типов обрабатывает связи и подклассы mime типов; например фильтр для text/plain также означает файлы с mime типом application/rtf, так как application/rtf это подкласс text/plain. Помните что GtkFileFilter допускает шаблоны для подтипов mime типа, таким образом вы можете использовать например фильтр image/*.

Обычно, фильтры используются добавляя их к GtkFileChooser, смотрите gtk_file_chooser_add_filter(), но так же возможно самостоятельное использование фильтров с помощью gtk_file_filter_filter().

Детали

GtkFileFilter

typedef struct _GtkFileFilter GtkFileFilter;

Структура GtkFileFilter содержит только закрытые данные и не должна использоваться непосредственно.


GtkFileFilterInfo

typedef struct { GtkFileFilterFlags contains; const gchar *filename; const gchar *uri; const gchar *display_name; const gchar *mime_type; } GtkFileFilterInfo;

Структура GtkFileFilterInfo используется для размещения информации о проверяемом файле в gtk_file_filter_filter().

GtkFileFilterFlags contains;

Флаг указывающий какие из следующих полей являются заполненными

const gchar *filename;

Имя проверяемого файла

const gchar *uri;

URI проверяемого файла

const gchar *display_name;

Строка используемая для отображения файла в селекторе файлов

const gchar *mime_type;

mime тип файла


enum GtkFileFilterFlags

typedef enum { GTK_FILE_FILTER_FILENAME = 1 << 0, GTK_FILE_FILTER_URI = 1 << 1, GTK_FILE_FILTER_DISPLAY_NAME = 1 << 2, GTK_FILE_FILTER_MIME_TYPE = 1 << 3 } GtkFileFilterFlags;

Эти флажки указывают какая часть структуры GtkFileFilterInfo заполнена или нуждается в заполнении.

GTK_FILE_FILTER_FILENAME

Имя проверяемого файла

GTK_FILE_FILTER_URI

URI проверяемого файла

GTK_FILE_FILTER_DISPLAY_NAME

Строка используемая для отображения файла в селекторе файлов

GTK_FILE_FILTER_MIME_TYPE

mime тип файла


GtkFileFilterFunc ()

gboolean (*GtkFileFilterFunc) (const GtkFileFilterInfo *filter_info, gpointer data);

Тип функции которая используется для выборочной фильтрации, смотрите gtk_file_filter_add_custom().

filter_info :

GtkFileFilterInfo которая заполняется согласно needed флажкам помещённым в gtk_file_filter_add_custom()

data :

Пользовательские данные помещаемые в gtk_file_filter_add_custom()

Возвращает :

TRUE если файл должен отображаться


gtk_file_filter_new ()

GtkFileFilter* gtk_file_filter_new          (void);

Создаёт новый GtkFileFilter без добавленных в него правил. Такой фильтр отвергает все файлы, поэтому бесполезен без добавления правил с помощью gtk_file_filter_add_mime_type(), gtk_file_filter_add_pattern(), или gtk_file_filter_add_custom(). Для создания фильтра разрешающего отображение всех файлов используйте:

GtkFileFilter *filter = gtk_file_filter_new (); gtk_file_filter_add_pattern (filter, "*");

Возвращает :

новый GtkFileFilter

Начиная с версии 2.4


gtk_file_filter_set_name ()

void gtk_file_filter_set_name (GtkFileFilter *filter, const gchar *name);

Устанавливает, удобное для чтения пользователем, имя фильтра; это строка которая будет отображаться в интерфейсе селектора файлов, если есть список выбираемых фильтров.

filter :

GtkFileFilter

name :

Имя фильтра в удобочитаемом виде, или NULL для удаления любого существующего имени.

Начиная с версии 2.4


gtk_file_filter_get_name ()

const gchar* gtk_file_filter_get_name       (GtkFileFilter *filter);

Определяет читабельное имя фильтра. Смотрите gtk_file_filter_set_name().

filter :

GtkFileFilter

Возвращает :

Читабельное имя фильтра, или NULL. Этим значением владеет GTK+ и оно не должно изменяться или освобождаться.

Начиная с версии 2.4


gtk_file_filter_add_mime_type ()

void gtk_file_filter_add_mime_type (GtkFileFilter *filter, const gchar *mime_type);

Добавляет правило позволяющее полученный mime тип для filter.

filter :

GtkFileFilter

mime_type :

имя MIME типа

Начиная с версии 2.4


gtk_file_filter_add_pattern ()

void gtk_file_filter_add_pattern (GtkFileFilter *filter, const gchar *pattern);

Добавляет правило позволяющее общий стиль оболочки для фильтра.

filter :

GtkFileFilter

pattern :

Общий стиль оболочки

Начиная с версии 2.4


gtk_file_filter_add_pixbuf_formats ()

void gtk_file_filter_add_pixbuf_formats (GtkFileFilter *filter);

Добавляет правило допускающее файлы изображения в формате поддерживаемом GdkPixbuf.

filter :

GtkFileFilter

Начиная с версии 2.6


gtk_file_filter_add_custom ()

void gtk_file_filter_add_custom (GtkFileFilter *filter, GtkFileFilterFlags needed, GtkFileFilterFunc func, gpointer data, GDestroyNotify notify);

Добавляет правило к фильтру позволяющему файлы основываясь на выборочной функции. Логическое поле needed помещается для обеспечения информации в которой нуждается функция фильтрации; это позволяет GTK+ избегать ненужной для фильтра информации.

filter :

GtkFileFilter

needed :

Логическое поле флажков указывающих необходимую информацию для выборочной функции фильтрации.

func :

callback-функция; если функция возвращает TRUE, то файл должен отображаться.

data :

Данные помещаемые в func

notify :

Функция вызываемая для освобождения data когда они больше не нужны.

Начиная с версии 2.4


gtk_file_filter_get_needed ()

GtkFileFilterFlags gtk_file_filter_get_needed (GtkFileFilter *filter);

Определяет поля необходимые для заполнения в структуре помещаемой в gtk_file_filter_filter()

Эта функция обычно не будет использоваться в приложениях; она предназначена преимущественно для использования в реализации GtkFileChooser.

filter :

GtkFileFilter

Возвращает :

Логическое поле флажков указывающих необходимые поля для вызова gtk_file_filter_filter()

Начиная с версии 2.4


gtk_file_filter_filter ()

gboolean gtk_file_filter_filter (GtkFileFilter *filter, const GtkFileFilterInfo *filter_info);

Проверяет должен ли отображаться файл согласно filter. GtkFileFilterInfo структура filter_info должна включать поля возвращаемые из gtk_file_filter_get_needed().

Эта функция обычно не будет использоваться в приложениях; она предназначена преимущественно для использования в реализации GtkFileChooser.

filter :

GtkFileFilter

filter_info :

GtkFileFilterInfo структура содержащая информацию о файле.

Возвращает :

TRUE если файл должен отображаться

Начиная с версии 2.4

Смотрите также

GtkFileChooser