GTK+ Reference Manual |
||||
---|---|---|---|---|
Top | Description | Object Hierarchy | Implemented Interfaces |
GtkTreeStoreGtkTreeStore Структура данных, похожая на дерево, используемая с 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.
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 соответственно.
|
Количество столбцов в дереве хранения |
|
все GType типы для столбцов, от первого до последнего |
Возвращает : |
новый GtkTreeStore |
GtkTreeStore* gtk_tree_store_newv (gint n_columns,
GType *types);
Функция создания без переменных аргументов. В основном используется привязками языков.
|
Количество столбцов в дереве хранения |
|
массив GType типов для столбцов, от первого до последнего |
Возвращает : |
новый GtkTreeStore |
void gtk_tree_store_set_column_types (GtkTreeStore *tree_store,
gint n_columns,
GType *types);
Эта функция предназначена прежде всего для GObjects которые наследуют из GtkTreeStore, и должна использоваться только при конструировании нового GtkTreeStore. Она не будет работать после добавления строки, или вызова интерфейса GtkTreeModel.
|
|
|
Количество столбцов в дереве хранения |
|
Массив GType типов, один для каждого столбца |
void gtk_tree_store_set_value (GtkTreeStore *tree_store,
GtkTreeIter *iter,
gint column,
GValue *value);
Устанавливает данные в ячейку определенную
iter
и column
. Тип
value
должен быть конвертируемым
в тип столбца.
|
|
|
Допустимый GtkTreeIter для изменяемой строки |
|
Номер столбца для изменений |
|
Новое значение для ячейки |
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)
.
|
|
|
Допустимый GtkTreeIter для изменяемой строки |
|
Пары номер столбца и значение, заканчивается -1 |
void gtk_tree_store_set_valist (GtkTreeStore *tree_store,
GtkTreeIter *iter,
va_list var_args);
Смотрите gtk_tree_store_set()
;
эта версия принимает va_list для использования
языковыми привязками.
|
|
|
Допустимый GtkTreeIter для изменяемой строки |
|
va_list пар столбец/значение (column/value) |
gboolean gtk_tree_store_remove (GtkTreeStore *tree_store,
GtkTreeIter *iter);
Удаляет iter
из tree_store
.
После удаления, iter
устанавливается в следующую доступную
строку этого уровня, или аннулируется
если ранее указывал на последнюю строку.
|
|
|
Допустимый GtkTreeIter |
Возвращает : |
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()
.
|
|
|
Устанавливаемый GtkTreeIter в значение новой строки |
|
Допустимый GtkTreeIter,
или |
|
Позиция для вставки новой строки |
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()
.
|
|
|
Устанавливаемый GtkTreeIter в значение новой строки |
|
Допустимый GtkTreeIter,
or |
|
Допустимый GtkTreeIter,
or |
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()
.
|
|
|
Устанавливаемый GtkTreeIter в значение новой строки |
|
Допустимый GtkTreeIter,
или |
|
Допустимый GtkTreeIter,
или |
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()
должна в основном применяться для
вставки строк в отсортированное дерево
хранения.
|
|
|
Устанавливаемый GtkTreeIter
в значение новой строки, или |
|
Допустимый GtkTreeIter,
или |
|
Позиция для вставки новой строки |
|
Пары, номер столбца и значение, заканчиваются -1 |
Начиная с версии 2.10
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()
которая принимает столбцы и значения
как два массива, вместо переменного
списка аргументов. Эта функция в основном
применяется для языковых привязок.
|
|
|
Устанавливаемый GtkTreeIter
в значение новой строки, или |
|
Допустимый GtkTreeIter,
или |
|
Позиция для вставки новой строки |
|
Массив номеров столбцов |
|
массив GValues |
|
Длина массивов |
Начиная с версии 2.10
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()
.
|
|
|
Устанавливаемый GtkTreeIter в значение новой строки |
|
Допустимый GtkTreeIter,
или |
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()
.
|
|
|
Устанавливаемый GtkTreeIter в значение новой строки |
|
Допустимый GtkTreeIter,
или |
gboolean gtk_tree_store_is_ancestor (GtkTreeStore *tree_store,
GtkTreeIter *iter,
GtkTreeIter *descendant);
Возвращает TRUE
если iter
это предок descendant
.
Таким образом, iter
это родитель
(или прародитель или пра-прародитель)
descendant
.
|
|
|
Допустимый GtkTreeIter |
|
Допустимый GtkTreeIter |
Возвращает : |
|
gint gtk_tree_store_iter_depth (GtkTreeStore *tree_store,
GtkTreeIter *iter);
Возвращает глубину iter
.
Значение будет 0 для корневого уровня,
1 для нижнего уровня, и т.д..
|
|
|
Допустимый GtkTreeIter |
Возвращает : |
Глубина |
void gtk_tree_store_clear (GtkTreeStore *tree_store);Удаляет все строки из
tree_store
|
gboolean gtk_tree_store_iter_is_valid (GtkTreeStore *tree_store,
GtkTreeIter *iter);
ВНИМАНИЕ: Эта функция очень медленная. Используйте её только для отладки и/или тестирования.
Проверяет допустим ли полученный итератор для этого GtkTreeStore.
|
|
|
|
Возвращает : |
Начиная с версии 2.2
void gtk_tree_store_reorder (GtkTreeStore *tree_store,
GtkTreeIter *parent,
gint *new_order);
Перестраивает дочерние элементы parent
в tree_store
в порядок указанный
new_order
. Помните, эта функция
работает только для не сортированных
хранений.
|
|
|
|
|
Массив целочисленных отображающих
новую позицию каждого элемента
относительно старой после перестроения,
например |
Начиная с версии 2.2
void gtk_tree_store_swap (GtkTreeStore *tree_store,
GtkTreeIter *a,
GtkTreeIter *b);
Обменивает a
и b
в том же уровне tree_store
.
Помните, функция работает только на не
сортированных хранилищах.
|
|
|
|
|
Другой GtkTreeIter. |
Начиная с версии 2.2
void gtk_tree_store_move_before (GtkTreeStore *tree_store,
GtkTreeIter *iter,
GtkTreeIter *position);
Перемещает iter
в tree_store
в позицию перед position
. iter
и position
должны быть в одном
уровне. Помните, функция работает только
на не сортированных хранилищах. Если
position
это NULL
,
iter
будет перемещён в конец
уровня.
|
|
|
|
|
GtkTreeIter или
|
Начиная с версии 2.2
void gtk_tree_store_move_after (GtkTreeStore *tree_store,
GtkTreeIter *iter,
GtkTreeIter *position);
Перемещает iter
в tree_store
в позицию после position
. iter
и position
должны быть в одном
уровне. Помните, функция работает только
на не сортированных хранилищах. Ели
position
равна NULL
,
iter
перемещается в начало
уровня.
|
|
|
|
|
Начиная с версии 2.2