The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Каталог документации / Раздел "Программирование, языки" / Оглавление документа

Prev

Up

Home

GTK+ Reference Manual

Next

Top  |  Description  |  Object Hierarchy  |   |  Known Implementations  |  Signals

GtkTreeSortable

GtkTreeSortable Интерфейс для сортируемых моделей используемых виджетом GtkTreeView

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

#include <gtk/gtk.h>


            GtkTreeSortable;
            GtkTreeSortableIface;
gint        (*GtkTreeIterCompareFunc)       (GtkTreeModel *model,
                                             GtkTreeIter *a,
                                             GtkTreeIter *b,
                                             gpointer user_data);
void        gtk_tree_sortable_sort_column_changed

                                            (GtkTreeSortable *sortable);
gboolean    gtk_tree_sortable_get_sort_column_id
                                            (GtkTreeSortable *sortable,
                                             gint *sort_column_id,
                                             GtkSortType *order);
void        gtk_tree_sortable_set_sort_column_id

                                            (GtkTreeSortable *sortable,
                                             gint sort_column_id,
                                             GtkSortType order);
void        gtk_tree_sortable_set_sort_func (GtkTreeSortable *sortable,
                                             gint sort_column_id,
                                             GtkTreeIterCompareFunc sort_func,
                                             gpointer user_data,
                                             GtkDestroyNotify destroy);
void        gtk_tree_sortable_set_default_sort_func

                                            (GtkTreeSortable *sortable,
                                             GtkTreeIterCompareFunc sort_func,
                                             gpointer user_data,
                                             GtkDestroyNotify destroy);
gboolean    gtk_tree_sortable_has_default_sort_func

                                            (GtkTreeSortable *sortable);

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

  GInterface
   +----GtkTreeSortable

Предварительные условия

GtkTreeSortable требует GtkTreeModel и GObject.

Известные реализации

GtkTreeSortable осуществляется GtkTreeModelSort, GtkTreeStore и GtkListStore.

Сигналы

"sort-column-changed"
            void        user_function      (GtkTreeSortable *treesortable,
                                            gpointer         user_data)         : Run last

Описание

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

Детали

GtkTreeSortable

typedef struct _GtkTreeSortable GtkTreeSortable;

GtkTreeSortableIface

typedef struct {
  GTypeInterface g_iface;

  /* сигналы */
  void     (* sort_column_changed)   (GtkTreeSortable        *sortable);

  /* виртуальная таблица */
  gboolean (* get_sort_column_id)    (GtkTreeSortable        *sortable,
                                      gint                   *sort_column_id,
                                      GtkSortType            *order);
  void     (* set_sort_column_id)    (GtkTreeSortable        *sortable,
                                      gint                    sort_column_id,
                                      GtkSortType             order);
  void     (* set_sort_func)         (GtkTreeSortable        *sortable,
                                      gint                    sort_column_id,
                                      GtkTreeIterCompareFunc  func,
                                      gpointer                data,
                                      GtkDestroyNotify        destroy);
  void     (* set_default_sort_func) (GtkTreeSortable        *sortable,
                                      GtkTreeIterCompareFunc  func,
                                      gpointer                data,
                                      GtkDestroyNotify        destroy);
  gboolean (* has_default_sort_func) (GtkTreeSortable        *sortable);
} GtkTreeSortableIface;

GtkTreeIterCompareFunc ()

gint        (*GtkTreeIterCompareFunc)       (GtkTreeModel *model,
                                             GtkTreeIter *a,
                                             GtkTreeIter *b,
                                             gpointer user_data);

GtkTreeIterCompareFunc должна возвращать отрицательное целое, ноль, или положительное целое если a находится перед b, a равна b, или a после b соответственно. Если два сравниваемых итератора эквивалентны, их порядок в сортируемой модели не определён. Чтобы гарантировать что GtkTreeSortable ведёт себя как ожидается, GtkTreeIterCompareFunc должен определить частичный порядок в модели, то есть он должен быть рефлексивный, антисимметричный и транзитивный.

Например, если model каталогизирует продукты, то когда функция сравнения для столбца "price" должна быть одним из возвращаемых price_of(a) - price_of(b).

model :

GtkTreeModel в пределах которой сравнение

a :

GtkTreeIter в model

b :

Другой GtkTreeIter в model

user_data :

Данные помещаемые при назначении функции сравнения, например gtk_tree_sortable_set_sort_func()

Возвращает :


gtk_tree_sortable_sort_column_changed ()

void        gtk_tree_sortable_sort_column_changed
                                            (GtkTreeSortable *sortable);

Издаёт сигнал GtkTreeSortable::sort_column_changed

sortable :

GtkTreeSortable


gtk_tree_sortable_get_sort_column_id ()

gboolean    gtk_tree_sortable_get_sort_column_id
                                            (GtkTreeSortable *sortable,
                                             gint *sort_column_id,
                                             GtkSortType *order);

Заполняет sort_column_id и order текущим сортируемым столбцом и порядком сортировки. Возвращает TRUE если sort_column_id это не GTK_TREE_SORTABLE_DEFAULT_SORT_COLUMN_ID или GTK_TREE_SORTABLE_UNSORTED_SORT_COLUMN_ID.

sortable :

GtkTreeSortable

sort_column_id :

id сортируемого столбца

order :

GtkSortType для заполнения

Возвращает :

TRUE если сортируемый столбец не один из специальных видов сортируемых столбцов.


gtk_tree_sortable_set_sort_column_id ()

void        gtk_tree_sortable_set_sort_column_id
                                            (GtkTreeSortable *sortable,
                                             gint sort_column_id,
                                             GtkSortType order);

Устанавливает текущий сортируемый столбец в sort_column_id. sortable будет пересортирован непосредственно для отражения этих изменений, после издания сигнала GtkTreeSortable::sort_column_changed. Если sort_column_id это GTK_TREE_SORTABLE_DEFAULT_SORT_COLUMN_ID, то когда будет использована функция сортировки по умолчанию, если она установлена.

sortable :

GtkTreeSortable

sort_column_id :

Сортируемый столбец

order :

Порядок сортировки столбца


gtk_tree_sortable_set_sort_func ()

void        gtk_tree_sortable_set_sort_func (GtkTreeSortable *sortable,
                                             gint sort_column_id,
                                             GtkTreeIterCompareFunc sort_func,
                                             gpointer user_data,
                                             GtkDestroyNotify destroy);

Устанавливает функцию сравнения, используемую при сортировки, в sort_func. Если текущий сортируемый столбец sortable это тоже самое что sort_column_id, то когда сортируемая модель будет использовать эту функцию.

sortable :

GtkTreeSortable

sort_column_id :

id сортируемого столбца для устанавливаемой функции

sort_func :

Функция сравнения

user_data :

Пользовательские данные помещаемые в sort_func, или NULL

destroy :

Разрушающее уведомление user_data, или NULL


gtk_tree_sortable_set_default_sort_func ()

void        gtk_tree_sortable_set_default_sort_func
                                            (GtkTreeSortable *sortable,
                                             GtkTreeIterCompareFunc sort_func,
                                             gpointer user_data,
                                             GtkDestroyNotify destroy);

Устанавливает функцию сравнения по умолчанию, используемую при сортировки, в sort_func. Если id текущемго сортируемого столбца sortable это GTK_TREE_SORTABLE_DEFAULT_SORT_COLUMN_ID, то когда модель сортируется используя эту функцию.

Если sort_func равен NULL, то функция сравнения по умолчанию отсутствует. Это значит что после сортировки модели, она не может вернуть в состояние по умолчанию. В этом случае, когда id текущемго сортируемого столбца sortable равен GTK_TREE_SORTABLE_DEFAULT_SORT_COLUMN_ID, модель будет не сортирована.

sortable :

GtkTreeSortable

sort_func :

Функция сравнения

user_data :

Пользовательские данные помещаемые в sort_func, или NULL

destroy :

Уведомление разрушения user_data, или NULL


gtk_tree_sortable_has_default_sort_func ()

gboolean    gtk_tree_sortable_has_default_sort_func
                                            (GtkTreeSortable *sortable);

Возвращает TRUE если модель имеет функцию сортировки по умолчанию. Это используется прежде всего GtkTreeViewColumns, для определения может ли модель возвращаться в состояние значения по умолчанию или нет.

sortable :

GtkTreeSortable

Возвращает :

TRUE, если модель имеет функцию сортировки по умолчанию

Детали сигнала

Сигнал "sort-column-changed"

void        user_function                  (GtkTreeSortable *treesortable,
                                            gpointer         user_data)         : Run last

treesortable :

Объект получающий сигнал.

user_data :

Пользовательские данные помещаемые при подключении обработчика сигнала.

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

GtkTreeModel, GtkTreeView




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру