Prev

Up

Home

GTK+ Reference Manual

Next

Top  |  Description  |  Object Hierarchy  |  Implemented Interfaces

GtkTreeStore

GtkTreeStore Структура данных, похожая на дерево, используемая с GtkTreeView

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

#include <gtk/gtk.h> GtkTreeStore; GtkTreeStore* gtk_tree_store_new (gint n_columns, ...); GtkTreeStore* gtk_tree_store_newv (gint n_columns, GType *types); void gtk_tree_store_set_column_types (GtkTreeStore *tree_store, gint n_columns, GType *types); void gtk_tree_store_set_value (GtkTreeStore *tree_store, GtkTreeIter *iter, gint column, GValue *value); void gtk_tree_store_set (GtkTreeStore *tree_store, GtkTreeIter *iter, ...); void gtk_tree_store_set_valist (GtkTreeStore *tree_store, GtkTreeIter *iter, va_list var_args); gboolean gtk_tree_store_remove (GtkTreeStore *tree_store, GtkTreeIter *iter); void gtk_tree_store_insert (GtkTreeStore *tree_store, GtkTreeIter *iter, GtkTreeIter *parent, gint position); void gtk_tree_store_insert_before (GtkTreeStore *tree_store, GtkTreeIter *iter, GtkTreeIter *parent, GtkTreeIter *sibling); void gtk_tree_store_insert_after (GtkTreeStore *tree_store, GtkTreeIter *iter, GtkTreeIter *parent, GtkTreeIter *sibling); void gtk_tree_store_insert_with_values (GtkTreeStore *tree_store, GtkTreeIter *iter, GtkTreeIter *parent, gint position, ...); void gtk_tree_store_insert_with_valuesv (GtkTreeStore *tree_store, GtkTreeIter *iter, GtkTreeIter *parent, gint position, gint *columns, GValue *values, gint n_values); void gtk_tree_store_prepend (GtkTreeStore *tree_store, GtkTreeIter *iter, GtkTreeIter *parent); void gtk_tree_store_append (GtkTreeStore *tree_store, GtkTreeIter *iter, GtkTreeIter *parent); gboolean gtk_tree_store_is_ancestor (GtkTreeStore *tree_store, GtkTreeIter *iter, GtkTreeIter *descendant); gint gtk_tree_store_iter_depth (GtkTreeStore *tree_store, GtkTreeIter *iter); void gtk_tree_store_clear (GtkTreeStore *tree_store); gboolean gtk_tree_store_iter_is_valid (GtkTreeStore *tree_store, GtkTreeIter *iter); void gtk_tree_store_reorder (GtkTreeStore *tree_store, GtkTreeIter *parent, gint *new_order); void gtk_tree_store_swap (GtkTreeStore *tree_store, GtkTreeIter *a, GtkTreeIter *b); void gtk_tree_store_move_before (GtkTreeStore *tree_store, GtkTreeIter *iter, GtkTreeIter *position); void gtk_tree_store_move_after (GtkTreeStore *tree_store, GtkTreeIter *iter, GtkTreeIter *position);

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

GObject +----GtkTreeStore

Осуществляемые интерфейсы

GtkTreeStore осуществляет GtkTreeModel, GtkTreeDragSource, GtkTreeDragDest и GtkTreeSortable.

Описание

Объект GtkTreeStore это модель списка используемая с виджетом GtkTreeView. Он реализует интерфейс GtkTreeModel, и логически может использовать все методы доступные в нем. Он также реализует интерфейс GtkTreeSortable поэтому может быть отсортирован. Наконец, он реализует интерфейс drag and drop.

Детали

GtkTreeStore

typedef struct _GtkTreeStore GtkTreeStore;

gtk_tree_store_new ()

GtkTreeStore* gtk_tree_store_new (gint n_columns, ...);

Создаёт новое дерево хранения с n_columns столбцов для каждого из которых помещается тип. Помните, поддерживаются только стандартные фундаментальные типы GObject.

Например, gtk_tree_store_new (3, G_TYPE_INT, G_TYPE_STRING, GDK_TYPE_PIXBUF); создаст новый GtkTreeStore с деревом столбцов, типов int, string и GdkPixbuf соответственно.

n_columns :

Количество столбцов в дереве хранения

... :

все GType типы для столбцов, от первого до последнего

Возвращает :

новый GtkTreeStore


gtk_tree_store_newv ()

GtkTreeStore* gtk_tree_store_newv (gint n_columns, GType *types);

Функция создания без переменных аргументов. В основном используется привязками языков.

n_columns :

Количество столбцов в дереве хранения

types :

массив GType типов для столбцов, от первого до последнего

Возвращает :

новый GtkTreeStore


gtk_tree_store_set_column_types ()

void gtk_tree_store_set_column_types (GtkTreeStore *tree_store, gint n_columns, GType *types);

Эта функция предназначена прежде всего для GObjects которые наследуют из GtkTreeStore, и должна использоваться только при конструировании нового GtkTreeStore. Она не будет работать после добавления строки, или вызова интерфейса GtkTreeModel.

tree_store :

GtkTreeStore

n_columns :

Количество столбцов в дереве хранения

types :

Массив GType типов, один для каждого столбца


gtk_tree_store_set_value ()

void gtk_tree_store_set_value (GtkTreeStore *tree_store, GtkTreeIter *iter, gint column, GValue *value);

Устанавливает данные в ячейку определенную iter и column. Тип value должен быть конвертируемым в тип столбца.

tree_store :

GtkTreeStore

iter :

Допустимый GtkTreeIter для изменяемой строки

column :

Номер столбца для изменений

value :

Новое значение для ячейки


gtk_tree_store_set ()

void gtk_tree_store_set (GtkTreeStore *tree_store, GtkTreeIter *iter, ...);

Устанавливает значение одной или более ячеек в строку указанную iter. Переменный список аргументов должен содержать целочисленные значения номеров столбцов, каждый номер столбца сопровождается устанавливаемым значением. Список завершается -1. Например, для установки столбца 0 с типом G_TYPE_STRING в значение "Foo", вы должны написать gtk_tree_store_set (store, iter, 0, "Foo", -1).

tree_store :

GtkTreeStore

iter :

Допустимый GtkTreeIter для изменяемой строки

... :

Пары номер столбца и значение, заканчивается -1


gtk_tree_store_set_valist ()

void gtk_tree_store_set_valist (GtkTreeStore *tree_store, GtkTreeIter *iter, va_list var_args);

Смотрите gtk_tree_store_set(); эта версия принимает va_list для использования языковыми привязками.

tree_store :

GtkTreeStore

iter :

Допустимый GtkTreeIter для изменяемой строки

var_args :

va_list пар столбец/значение (column/value)


gtk_tree_store_remove ()

gboolean gtk_tree_store_remove (GtkTreeStore *tree_store, GtkTreeIter *iter);

Удаляет iter из tree_store. После удаления, iter устанавливается в следующую доступную строку этого уровня, или аннулируется если ранее указывал на последнюю строку.

tree_store :

GtkTreeStore

iter :

Допустимый GtkTreeIter

Возвращает :

TRUE если iter всё ещё доступен, FALSE если нет.


gtk_tree_store_insert ()

void gtk_tree_store_insert (GtkTreeStore *tree_store, GtkTreeIter *iter, GtkTreeIter *parent, gint position);

Создаёт новую строку в позиции position. Если родитель не-NULL, то строка создаётся дочерней для parent. Иначе, строка создаётся как верхний уровень. Если position больше чем количество строк в уровне, то новая строка вставляется в конец списка. iter изменяется указывая на новую строку. Строка будет пустой после вызова этой функции. Для заполнения значениями, вам нужно вызвать gtk_tree_store_set() или gtk_tree_store_set_value().

tree_store :

GtkTreeStore

iter :

Устанавливаемый GtkTreeIter в значение новой строки

parent :

Допустимый GtkTreeIter, или NULL

position :

Позиция для вставки новой строки


gtk_tree_store_insert_before ()

void gtk_tree_store_insert_before (GtkTreeStore *tree_store, GtkTreeIter *iter, GtkTreeIter *parent, GtkTreeIter *sibling);

Вставляет новую строку перед sibling. Если sibling это NULL, то строка будет добавлена к дочерним parent 's. Если parent и sibling являются NULL, то строка будет добавлена в верхний уровень. Если оба sibling и parent установлены, то parent должен быть родителем sibling. Когда sibling установлен, parent опционален.

iter изменяется для указания на новую строку. Строка будет пустой после вызова этой функции. Для заполнения значениями, вам нужно вызвать gtk_tree_store_set() или gtk_tree_store_set_value().

tree_store :

GtkTreeStore

iter :

Устанавливаемый GtkTreeIter в значение новой строки

parent :

Допустимый GtkTreeIter, or NULL

sibling :

Допустимый GtkTreeIter, or NULL


gtk_tree_store_insert_after ()

void gtk_tree_store_insert_after (GtkTreeStore *tree_store, GtkTreeIter *iter, GtkTreeIter *parent, GtkTreeIter *sibling);

Вставляет новую строку после sibling. Если sibling это NULL, то строка будет вставлена в начало дочерних parent 's. Если parent и sibling являются NULL, то строка будет вставлена в начало верхнего уровня. Если оба sibling и parent установлены, то parent должен быть родителем для sibling. Когда sibling установлен, parent опционален.

iter изменяется указывая на новую строку. Строка будет пустой после вызова этой функции. Для заполнения значениями, вам нужно вызвать gtk_tree_store_set() или gtk_tree_store_set_value().

tree_store :

GtkTreeStore

iter :

Устанавливаемый GtkTreeIter в значение новой строки

parent :

Допустимый GtkTreeIter, или NULL

sibling :

Допустимый GtkTreeIter, или NULL


gtk_tree_store_insert_with_values ()

void gtk_tree_store_insert_with_values (GtkTreeStore *tree_store, GtkTreeIter *iter, GtkTreeIter *parent, gint position, ...);

Создаёт новую строку в позиции position. iter изменяется указывая на новую строку. Если position больше чем количество строк в списке, то новая строка добавляется к списку. Строка будет заполнена значениями полученных из этой функции.

Вызов gtk_tree_store_insert_with_values (tree_store, iter, position, ...) имеет тот же эффект как вызов

gtk_tree_store_insert (tree_store, iter, position); gtk_tree_store_set (tree_store, iter, ...);

разница с предыдущим только в издании сигнала row_inserted, в то время как последний издаёт row_inserted, row_changed и если дерево хранения отсортировано, rows_reordered. Так как повторное издание rows_reordered сигнала может повлиять на выполнение программ, gtk_tree_store_insert_with_values() должна в основном применяться для вставки строк в отсортированное дерево хранения.

tree_store :

GtkTreeStore

iter :

Устанавливаемый GtkTreeIter в значение новой строки, или NULL.

parent :

Допустимый GtkTreeIter, или NULL

position :

Позиция для вставки новой строки

... :

Пары, номер столбца и значение, заканчиваются -1

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


gtk_tree_store_insert_with_valuesv ()

void gtk_tree_store_insert_with_valuesv (GtkTreeStore *tree_store, GtkTreeIter *iter, GtkTreeIter *parent, gint position, gint *columns, GValue *values, gint n_values);

Вариант gtk_tree_store_insert_with_values() которая принимает столбцы и значения как два массива, вместо переменного списка аргументов. Эта функция в основном применяется для языковых привязок.

tree_store :

GtkTreeStore

iter :

Устанавливаемый GtkTreeIter в значение новой строки, или NULL.

parent :

Допустимый GtkTreeIter, или NULL

position :

Позиция для вставки новой строки

columns :

Массив номеров столбцов

values :

массив GValues

n_values :

Длина массивов columns и values

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


gtk_tree_store_prepend ()

void gtk_tree_store_prepend (GtkTreeStore *tree_store, GtkTreeIter *iter, GtkTreeIter *parent);

Вставляет новую строку в начало tree_store. Если parent это не-NULL, то он будет родителем для новой строки вставляемой перед первым дочерним элементом parent, иначе она будет вставлена в начало верхнего уровня. iter изменяется указывая на новую строку. Строка будет пустой после вызова этой функции. Для заполнения значениями, вам нужно вызвать gtk_tree_store_set() или gtk_tree_store_set_value().

tree_store :

GtkTreeStore

iter :

Устанавливаемый GtkTreeIter в значение новой строки

parent :

Допустимый GtkTreeIter, или NULL


gtk_tree_store_append ()

void gtk_tree_store_append (GtkTreeStore *tree_store, GtkTreeIter *iter, GtkTreeIter *parent);

Добавляет новую строку в tree_store. Если parent это не-NULL, то строка вставляется после дочерних элементов parent, иначе она будет вставлена в верхний уровень. iter изменяется указывая на новую строку. Строка будет пустой после вызова этой функции. Для заполнения значениями, вам нужно вызвать gtk_tree_store_set() или gtk_tree_store_set_value().

tree_store :

GtkTreeStore

iter :

Устанавливаемый GtkTreeIter в значение новой строки

parent :

Допустимый GtkTreeIter, или NULL


gtk_tree_store_is_ancestor ()

gboolean gtk_tree_store_is_ancestor (GtkTreeStore *tree_store, GtkTreeIter *iter, GtkTreeIter *descendant);

Возвращает TRUE если iter это предок descendant. Таким образом, iter это родитель (или прародитель или пра-прародитель) descendant.

tree_store :

GtkTreeStore

iter :

Допустимый GtkTreeIter

descendant :

Допустимый GtkTreeIter

Возвращает :

TRUE, если iter предок descendant


gtk_tree_store_iter_depth ()

gint gtk_tree_store_iter_depth (GtkTreeStore *tree_store, GtkTreeIter *iter);

Возвращает глубину iter. Значение будет 0 для корневого уровня, 1 для нижнего уровня, и т.д..

tree_store :

GtkTreeStore

iter :

Допустимый GtkTreeIter

Возвращает :

Глубина iter


gtk_tree_store_clear ()

void        gtk_tree_store_clear            (GtkTreeStore *tree_store);

Удаляет все строки из tree_store

tree_store :

GtkTreeStore


gtk_tree_store_iter_is_valid ()

gboolean gtk_tree_store_iter_is_valid (GtkTreeStore *tree_store, GtkTreeIter *iter);

ВНИМАНИЕ: Эта функция очень медленная. Используйте её только для отладки и/или тестирования.

Проверяет допустим ли полученный итератор для этого GtkTreeStore.

tree_store :

GtkTreeStore.

iter :

GtkTreeIter.

Возвращает :

TRUE если итератор допустим, FALSE если нет.

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


gtk_tree_store_reorder ()

void gtk_tree_store_reorder (GtkTreeStore *tree_store, GtkTreeIter *parent, gint *new_order);

Перестраивает дочерние элементы parent в tree_store в порядок указанный new_order. Помните, эта функция работает только для не сортированных хранений.

tree_store :

GtkTreeStore.

parent :

GtkTreeIter.

new_order :

Массив целочисленных отображающих новую позицию каждого элемента относительно старой после перестроения, например new_order[newpos] = oldpos.

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


gtk_tree_store_swap ()

void gtk_tree_store_swap (GtkTreeStore *tree_store, GtkTreeIter *a, GtkTreeIter *b);

Обменивает a и b в том же уровне tree_store. Помните, функция работает только на не сортированных хранилищах.

tree_store :

GtkTreeStore.

a :

GtkTreeIter.

b :

Другой GtkTreeIter.

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


gtk_tree_store_move_before ()

void gtk_tree_store_move_before (GtkTreeStore *tree_store, GtkTreeIter *iter, GtkTreeIter *position);

Перемещает iter в tree_store в позицию перед position. iter и position должны быть в одном уровне. Помните, функция работает только на не сортированных хранилищах. Если position это NULL, iter будет перемещён в конец уровня.

tree_store :

GtkTreeStore.

iter :

GtkTreeIter.

position :

GtkTreeIter или NULL.

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


gtk_tree_store_move_after ()

void gtk_tree_store_move_after (GtkTreeStore *tree_store, GtkTreeIter *iter, GtkTreeIter *position);

Перемещает iter в tree_store в позицию после position. iter и position должны быть в одном уровне. Помните, функция работает только на не сортированных хранилищах. Ели position равна NULL, iter перемещается в начало уровня.

tree_store :

GtkTreeStore.

iter :

GtkTreeIter.

position :

GtkTreeIter.

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

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

GtkTreeModel, GtkTreeStore