|  |  | GTK+ Reference Manual |
Top | Description | Object Hierarchy

## GtkRecentFilter

GtkRecentFilter — Фильтр для выделения подмножества недавно использованных файлов

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

    #include <gtk/gtk.h>

                GtkRecentFilter;
                GtkRecentFilterInfo;
    enum        GtkRecentFilterFlags;
    gboolean    (*GtkRecentFilterFunc)          (const GtkRecentFilterInfo *filter_info,
                                                 gpointer user_data);

    GtkRecentFilter* gtk_recent_filter_new      (void);
    const gchar* gtk_recent_filter_get_name     (GtkRecentFilter *filter);
    void        gtk_recent_filter_set_name      (GtkRecentFilter *filter,
                                                 const gchar *name);
    void        gtk_recent_filter_add_mime_type (GtkRecentFilter *filter,
                                                 const gchar *mime_type);
    void        gtk_recent_filter_add_pattern   (GtkRecentFilter *filter,
                                                 const gchar *pattern);
    void        gtk_recent_filter_add_pixbuf_formats

                                                (GtkRecentFilter *filter);
    void        gtk_recent_filter_add_application
                                                (GtkRecentFilter *filter,
                                                 const gchar *application);
    void        gtk_recent_filter_add_group     (GtkRecentFilter *filter,
                                                 const gchar *group);
    void        gtk_recent_filter_add_age       (GtkRecentFilter *filter,
                                                 gint days);
    void        gtk_recent_filter_add_custom    (GtkRecentFilter *filter,
                                                 GtkRecentFilterFlags needed,
                                                 GtkRecentFilterFunc func,
                                                 gpointer data,
                                                 GDestroyNotify data_destroy);

    GtkRecentFilterFlags gtk_recent_filter_get_needed
                                                (GtkRecentFilter *filter);
    gboolean    gtk_recent_filter_filter        (GtkRecentFilter *filter,
                                                 const GtkRecentFilterInfo *filter_info);

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

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

                   +----GtkRecentFilter

## Описание

GtkRecentFilter может использоваться для ограничения отображаемых в GtkRecentChooser фалов. Файлы могут фильтроваться по имени (с помощью `gtk_recent_filter_add_pattern()`), по mime типу (с помощью `gtk_file_filter_add_mime_type()`), по приложениям зарегистрированным вместе с ними (с помощью `gtk_recent_filter_add_application()`), или выборочно (с помощью `gtk_recent_filter_add_custom()`).

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

Обычно, фильтры используются добавляя их в GtkRecentChooser, смотрите `gtk_recent_chooser_add_filter()`, но они также позволяют фильтровать файлы вручную `gtk_recent_filter_filter()`.

Недавно использованные файлы поддерживаются с версии GTK+ 2.10.

## Детали

### GtkRecentFilter

    typedef struct _GtkRecentFilter GtkRecentFilter;

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

### GtkRecentFilterInfo

    typedef struct {
      GtkRecentFilterFlags contains;

      const gchar *uri;
      const gchar *display_name;
      const gchar *mime_type;
      const gchar **applications;
      const gchar **groups;

      gint age;
    } GtkRecentFilterInfo;

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

GtkRecentFilterFlags `contains`; | Флаги указывают какие следующие поля нужно заполнить
const gchar *`uri`; | URI проверяемого файла
const gchar *`display_name`; | Строка которая используется для отображения файла в селекторе недавно использованных файлов
const gchar *`mime_type`; | mime тип файла
const gchar **`applications`; | Список приложений зарегистрированных с файлом
const gchar **`groups`; | Группы к которым принадлежит файл
gint `age`; | Количество истекших дней с момента регистрации файла

### enum GtkRecentFilterFlags

    typedef enum {
      GTK_RECENT_FILTER_URI          = 1 << 0,
      GTK_RECENT_FILTER_DISPLAY_NAME = 1 << 1,
      GTK_RECENT_FILTER_MIME_TYPE    = 1 << 2,
      GTK_RECENT_FILTER_APPLICATION  = 1 << 3,
      GTK_RECENT_FILTER_GROUP        = 1 << 4,
      GTK_RECENT_FILTER_AGE          = 1 << 5
    } GtkRecentFilterFlags;

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

`GTK_RECENT_FILTER_URI` | URI проверяемого файла
`GTK_RECENT_FILTER_DISPLAY_NAME` | Строка которая используется для отображения файла в селекторе недавно использованных файлов
`GTK_RECENT_FILTER_MIME_TYPE` | mime тип файла
`GTK_RECENT_FILTER_APPLICATION` | Список приложений зарегистрированных с файлом
`GTK_RECENT_FILTER_GROUP` | Группы к которым принадлежит файл
`GTK_RECENT_FILTER_AGE` | Количество истекших дней с момента регистрации файла

### GtkRecentFilterFunc ()

    gboolean    (*GtkRecentFilterFunc)          (const GtkRecentFilterInfo *filter_info,
                                                 gpointer user_data);

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

`filter_info` : | GtkRecentFilterInfo которая заполняется согласно `needed` флажкам помещенным в `gtk_recent_filter_add_custom()`
`user_data` : | Пользовательские данные помещаемые в `gtk_recent_filter_add_custom()`
Возвращает : | `TRUE` если файл должен быть отображён

### gtk_recent_filter_new ()

    GtkRecentFilter* gtk_recent_filter_new      (void);

Создаёт новый GtkRecentFilter без добавления в него правил. Такой фильтр не принимает никаких недавно использованных файлов, поэтому бесполезен пока вы не добавите правила с помощью `gtk_recent_filter_add_pattern()`, `gtk_recent_filter_add_mime_type()`, `gtk_recent_filter_add_application()`, `gtk_recent_filter_add_age()`. Для создания фильтра показывающего все недавно использованные файлы используйте:

    GtkRecentFilter *filter = gtk_recent_filter_new ();
    gtk_recent_filter_add_pattern (filter, "*");

Возвращает : | Новый GtkRecentFilter

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

### gtk_recent_filter_get_name ()

    const gchar* gtk_recent_filter_get_name     (GtkRecentFilter *filter);

Выдаёт читабельное (human-readable) имя для фильтра. Смотрите `gtk_recent_filter_set_name()`.

`filter` : | GtkRecentFilter
Возвращает : | Имя фильтра, или `NULL`. Возвращаемой строкой владеет объект фильтра и она не должна освобождаться.

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

### gtk_recent_filter_set_name ()

    void        gtk_recent_filter_set_name      (GtkRecentFilter *filter,
                                                 const gchar *name);

Устанавливает читабельное (human-readable) имя фильтра; это строка которая отображается в селекторе недавно использованных файлов пользовательского интерфейса если есть список выбираемых фильтров.

`filter` : | GtkRecentFilter
`name` : | Читабельное имя `filter`

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

### gtk_recent_filter_add_mime_type ()

    void        gtk_recent_filter_add_mime_type (GtkRecentFilter *filter,
                                                 const gchar *mime_type);

Добавляет правило которое отбирает ресурсы основываясь на их зарегистрированном MIME типе.

`filter` : | GtkRecentFilter
`mime_type` : | MIME тип

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

### gtk_recent_filter_add_pattern ()

    void        gtk_recent_filter_add_pattern   (GtkRecentFilter *filter,
                                                 const gchar *pattern);

Добавляет правило отбора ресурсов основываясь на шаблоне их отображаемых имен.

`filter` : | GtkRecentFilter
`pattern` : | Шаблон файла

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

### gtk_recent_filter_add_pixbuf_formats ()

    void        gtk_recent_filter_add_pixbuf_formats
                                                (GtkRecentFilter *filter);

Добавляет правило отбора файлов изображений в формате поддерживаемом GdkPixbuf.

`filter` : | GtkRecentFilter

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

### gtk_recent_filter_add_application ()

    void        gtk_recent_filter_add_application
                                                (GtkRecentFilter *filter,
                                                 const gchar *application);

Добавляет правило отбора основываясь на имени зарегистрированного приложения для отображения файлов.

`filter` : | GtkRecentFilter
`application` : | Имя приложения

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

### gtk_recent_filter_add_group ()

    void        gtk_recent_filter_add_group     (GtkRecentFilter *filter,
                                                 const gchar *group);

Добавляет правило отбора ресурсов основываясь на имени группы к которой они прнадлежат.

`filter` : | GtkRecentFilter
`group` : | Имя группы

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

### gtk_recent_filter_add_age ()

    void        gtk_recent_filter_add_age       (GtkRecentFilter *filter,
                                                 gint days);

Добавляет правило отбора ресурсов основываясь на их возрасте – то есть количестве дней прошедших с момента последнего изменения.

`filter` : | GtkRecentFilter
`days` : | Количество дней

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

### gtk_recent_filter_add_custom ()

    void        gtk_recent_filter_add_custom    (GtkRecentFilter *filter,
                                                 GtkRecentFilterFlags needed,
                                                 GtkRecentFilterFunc func,
                                                 gpointer data,
                                                 GDestroyNotify data_destroy);

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

`filter` : | GtkRecentFilter
`needed` : | Битовое поле флагов указывающих информацию отбираемую для функции фильтрации.
`func` : | callback-функция; если функция возвращает `TRUE`, то файл будет отображён.
`data` : | Данные помещаемые в `func`
`data_destroy` : | Функция вызываемая для освобождения данных `data` когда они больше не нужны.

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

### gtk_recent_filter_get_needed ()

    GtkRecentFilterFlags gtk_recent_filter_get_needed
                                                (GtkRecentFilter *filter);

Выдаёт поля которые необходимо заполнить в структуре помещаемой в `gtk_recent_filter_filter()`

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

`filter` : | GtkRecentFilter
Возвращает : | Битовое поле флагов указывающих поля необходимые для заполнения при вызове `gtk_recent_filter_filter()`

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

### gtk_recent_filter_filter ()

    gboolean    gtk_recent_filter_filter        (GtkRecentFilter *filter,
                                                 const GtkRecentFilterInfo *filter_info);

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

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

`filter` : | GtkRecentFilter
`filter_info` : | GtkRecentFilterInfo структура содержащая информацию о недавно использованных ресурсах
Возвращает : | `TRUE` если файл должен быть отображён

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

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

GtkRecentChooser